From 9b1d31cee7c5378e6ebe40c3217410f69413d876 Mon Sep 17 00:00:00 2001 From: Ali Rizvi-Santiago Date: Tue, 5 Jan 2021 11:18:21 -0600 Subject: [PATCH 001/212] Added a fallback to the vmware builder when trying to determine the networkmapping configuration. Some instances of VMWare will not generate the networkmapping configuration (netmap.conf) at the time of installation. To deal with this issue, we check for the networkmapping file first, and then fallback to the networking file which also might exist and contain the interface information that we require. This fixes issue #10009. --- builder/vmware/common/driver_player5.go | 23 +++++++++++++++--- builder/vmware/common/driver_workstation9.go | 25 ++++++++++++++++---- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/builder/vmware/common/driver_player5.go b/builder/vmware/common/driver_player5.go index 4ce3b5c7a..0abfa9c53 100644 --- a/builder/vmware/common/driver_player5.go +++ b/builder/vmware/common/driver_player5.go @@ -205,11 +205,28 @@ func (d *Player5Driver) Verify() error { d.VmwareDriver.NetworkMapper = func() (NetworkNameMapper, error) { pathNetmap := playerNetmapConfPath() if _, err := os.Stat(pathNetmap); err != nil { - return nil, fmt.Errorf("Could not find netmap conf file: %s", pathNetmap) + log.Printf("Located networkmapper configuration file using Player: %s", pathNetmap) + return ReadNetmapConfig(pathNetmap) } - log.Printf("Located networkmapper configuration file using Player: %s", pathNetmap) - return ReadNetmapConfig(pathNetmap) + // If we weren't able to find the networkmapper configuration file, then fall back + // to the networking file which might also be in the configuration directory. + libpath, _ := playerVMwareRoot() + pathNetworking := filepath.Join(libpath, "networking") + if _, err := os.Stat(pathNetworking); err != nil { + return nil, fmt.Errorf("Could not determine network mappings from files in path: %s", libpath) + } + + // We were able to successfully stat the file.. So, now we can open a handle to it. + log.Printf("Located networking configuration file using Player: %s", pathNetworking) + fd, err := os.Open(pathNetworking) + if err != nil { + return nil, err + } + defer fd.Close() + + // Then we pass the handle to the networking configuration parser. + return ReadNetworkingConfig(fd) } return nil } diff --git a/builder/vmware/common/driver_workstation9.go b/builder/vmware/common/driver_workstation9.go index a64543b2e..5637b7fa5 100644 --- a/builder/vmware/common/driver_workstation9.go +++ b/builder/vmware/common/driver_workstation9.go @@ -165,12 +165,29 @@ func (d *Workstation9Driver) Verify() error { d.VmwareDriver.NetworkMapper = func() (NetworkNameMapper, error) { pathNetmap := workstationNetmapConfPath() - if _, err := os.Stat(pathNetmap); err != nil { - return nil, fmt.Errorf("Could not find netmap conf file: %s", pathNetmap) + if _, err := os.Stat(pathNetmap); err == nil { + log.Printf("Located networkmapper configuration file using Workstation: %s", pathNetmap) + return ReadNetmapConfig(pathNetmap) } - log.Printf("Located networkmapper configuration file using Workstation: %s", pathNetmap) - return ReadNetmapConfig(pathNetmap) + // If we weren't able to find the networkmapper configuration file, then fall back + // to the networking file which might also be in the configuration directory. + libpath, _ := workstationVMwareRoot() + pathNetworking := filepath.Join(libpath, "networking") + if _, err := os.Stat(pathNetworking); err != nil { + return nil, fmt.Errorf("Could not determine network mappings from files in path: %s", libpath) + } + + // We were able to successfully stat the file.. So, now we can open a handle to it. + log.Printf("Located networking configuration file using Workstation: %s", pathNetworking) + fd, err := os.Open(pathNetworking) + if err != nil { + return nil, err + } + defer fd.Close() + + // Then we pass the handle to the networking configuration parser. + return ReadNetworkingConfig(fd) } return nil } From ab4b3a8465db9e63042253a933dda462f8bea317 Mon Sep 17 00:00:00 2001 From: teddylear Date: Fri, 8 Jan 2021 21:22:26 -0500 Subject: [PATCH 002/212] Adding recursive flag to formatter to format subdirectories --- command/cli.go | 4 +- command/fmt.go | 16 +- command/fmt_test.go | 12 ++ hcl2template/formatter.go | 108 ++++++++----- hcl2template/formatter_test.go | 9 +- .../format/sub_directory/unformatted.pkr.hcl | 149 ++++++++++++++++++ .../sub_directory/unformatted.pkrvars.hcl | 3 + 7 files changed, 256 insertions(+), 45 deletions(-) create mode 100644 hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl create mode 100644 hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl diff --git a/command/cli.go b/command/cli.go index 56d598d7f..85a24dad6 100644 --- a/command/cli.go +++ b/command/cli.go @@ -147,12 +147,12 @@ func (va *FormatArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&va.Check, "check", false, "check if the input is formatted") flags.BoolVar(&va.Diff, "diff", false, "display the diff of formatting changes") flags.BoolVar(&va.Write, "write", true, "overwrite source files instead of writing to stdout") - + flags.BoolVar(&va.Recursive, "recursive", true, "Also process files in subdirectories") va.MetaArgs.AddFlagSets(flags) } // FormatArgs represents a parsed cli line for `packer fmt` type FormatArgs struct { MetaArgs - Check, Diff, Write bool + Check, Diff, Write, Recursive bool } diff --git a/command/fmt.go b/command/fmt.go index 5b15ed772..6cf896381 100644 --- a/command/fmt.go +++ b/command/fmt.go @@ -48,9 +48,10 @@ func (c *FormatCommand) RunContext(ctx context.Context, cla *FormatArgs) int { } formatter := hclutils.HCL2Formatter{ - ShowDiff: cla.Diff, - Write: cla.Write, - Output: os.Stdout, + ShowDiff: cla.Diff, + Write: cla.Write, + Output: os.Stdout, + Recursive: cla.Recursive, } bytesModified, diags := formatter.Format(cla.Path) @@ -90,6 +91,8 @@ Options: -write=false Don't write to source files (always disabled if using -check) + -recursive Also process files in subdirectories. By default, only the + given directory (or current directory) is processed. ` return strings.TrimSpace(helpText) @@ -105,8 +108,9 @@ func (*FormatCommand) AutocompleteArgs() complete.Predictor { func (*FormatCommand) AutocompleteFlags() complete.Flags { return complete.Flags{ - "-check": complete.PredictNothing, - "-diff": complete.PredictNothing, - "-write": complete.PredictNothing, + "-check": complete.PredictNothing, + "-diff": complete.PredictNothing, + "-write": complete.PredictNothing, + "-recursive": complete.PredictNothing, } } diff --git a/command/fmt_test.go b/command/fmt_test.go index 242845f38..ee7ef9832 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -50,3 +50,15 @@ func TestFmt_unfomattedTemlateDirectory(t *testing.T) { fatalCommand(t, c.Meta) } } + +func TestFmt_Recursive(t *testing.T) { + c := &FormatCommand{ + Meta: testMeta(t), + } + + args := []string{"-check=true", "-recursive=true", filepath.Join(testFixture("fmt"), "")} + + if code := c.Run(args); code != 3 { + fatalCommand(t, c.Meta) + } +} diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index d02d421a4..aa275a35e 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -7,6 +7,8 @@ import ( "io/ioutil" "os" "os/exec" + "path/filepath" + "strings" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hclparse" @@ -14,9 +16,9 @@ import ( ) type HCL2Formatter struct { - ShowDiff, Write bool - Output io.Writer - parser *hclparse.Parser + ShowDiff, Write, Recursive bool + Output io.Writer + parser *hclparse.Parser } // NewHCL2Formatter creates a new formatter, ready to format configuration files. @@ -26,55 +28,88 @@ func NewHCL2Formatter() *HCL2Formatter { } } +func isHcl2FileOrVarFile(path string) bool { + if strings.HasSuffix(path, hcl2FileExt) || strings.HasSuffix(path, hcl2VarFileExt) { + return true + } + return false +} + +func (f *HCL2Formatter) formatFile(path string, diags hcl.Diagnostics, bytesModified int) (int, hcl.Diagnostics) { + data, err := f.processFile(path) + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: fmt.Sprintf("encountered an error while formatting %s", path), + Detail: err.Error(), + }) + } + bytesModified += len(data) + return bytesModified, diags +} + // Format all HCL2 files in path and return the total bytes formatted. // If any error is encountered, zero bytes will be returned. // // Path can be a directory or a file. func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { + var diags hcl.Diagnostics + var bytesModified int - var allHclFiles []string - var diags []*hcl.Diagnostic - - if path == "-" { - allHclFiles = []string{"-"} - } else { - hclFiles, _, diags := GetHCL2Files(path, hcl2FileExt, hcl2JsonFileExt) - if diags.HasErrors() { - return 0, diags - } - - hclVarFiles, _, diags := GetHCL2Files(path, hcl2VarFileExt, hcl2VarJsonFileExt) - if diags.HasErrors() { - return 0, diags - } - - allHclFiles = append(hclFiles, hclVarFiles...) - - if len(allHclFiles) == 0 { - diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: fmt.Sprintf("Cannot tell whether %s contains HCL2 configuration data", path), - }) - - return 0, diags - } + if path == "" { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "path is empty, cannot format", + Detail: "path is empty, cannot format", + }) + return bytesModified, diags } if f.parser == nil { f.parser = hclparse.NewParser() } - var bytesModified int - for _, fn := range allHclFiles { - data, err := f.processFile(fn) + isDir, err := isDir(path) + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Cannot tell wether " + path + " is a directory", + Detail: err.Error(), + }) + return bytesModified, diags + } + + if !isDir { + bytesModified, diags = f.formatFile(path, diags, bytesModified) + } else { + fileInfos, err := ioutil.ReadDir(path) if err != nil { - diags = append(diags, &hcl.Diagnostic{ + diag := &hcl.Diagnostic{ Severity: hcl.DiagError, - Summary: fmt.Sprintf("encountered an error while formatting %s", fn), + Summary: "Cannot read hcl directory", Detail: err.Error(), - }) + } + diags = append(diags, diag) + return bytesModified, diags + } + + for _, fileInfo := range fileInfos { + filename := filepath.Join(path, fileInfo.Name()) + if fileInfo.IsDir() { + if f.Recursive { + var tempDiags hcl.Diagnostics + var tempBytesModified int + tempBytesModified, tempDiags = f.Format(filename) + bytesModified += tempBytesModified + diags = diags.Extend(tempDiags) + } else { + continue + } + } + if isHcl2FileOrVarFile(filename) { + bytesModified, diags = f.formatFile(filename, diags, bytesModified) + } } - bytesModified += len(data) } return bytesModified, diags @@ -84,6 +119,7 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { // overwriting the contents of the original when the f.Write is true; a diff of the changes // will be outputted if f.ShowDiff is true. func (f *HCL2Formatter) processFile(filename string) ([]byte, error) { + if f.Output == nil { f.Output = os.Stdout } diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 4d1474f71..bb31e002d 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -32,11 +32,18 @@ func TestHCL2Formatter_Format(t *testing.T) { if diags.HasErrors() { t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) } - if buf.String() != "" && tc.FormatExpected == false { t.Errorf("Format(%q) should contain the name of the formatted file(s), but got %q", tc.Path, buf.String()) } + } +} +func TestHCL2Formatter_Recursive(t *testing.T) { + f := NewHCL2Formatter() + f.Recursive = true + _, diags := f.Format("testdata/format") + if diags.HasErrors() { + t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) } } diff --git a/hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl b/hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl new file mode 100644 index 000000000..86aa3a154 --- /dev/null +++ b/hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl @@ -0,0 +1,149 @@ + +// starts resources to provision them. +build { + sources = [ + "source.amazon-ebs.ubuntu-1604", + "source.virtualbox-iso.ubuntu-1204", + ] + + provisioner "shell" { + string = coalesce(null, "", "string") + int = "${41 + 1}" + int64 = "${42 + 1}" + bool = "true" + trilean = true + duration = "${9 + 1}s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + } + + nested_slice { + } + } + + provisioner "file" { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + } + + nested_slice { + } + } + + post-processor "amazon-import" { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + } + + nested_slice { + } + } +} diff --git a/hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl b/hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl new file mode 100644 index 000000000..7ddc9df79 --- /dev/null +++ b/hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl @@ -0,0 +1,3 @@ +ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" +ami_filter_owners =[ "137112412989" ] + From 261abe0caefba9bd62235b52f60170759dd6a05d Mon Sep 17 00:00:00 2001 From: teddylear Date: Mon, 11 Jan 2021 21:53:27 -0500 Subject: [PATCH 003/212] Setting recursive fmt to false, updatting recursive fmt test to validate formatted files --- command/cli.go | 2 +- command/fmt_test.go | 75 ++++++++- .../test-fixtures/fmt/formatted.pkrvars.hcl | 3 + hcl2template/formatter_test.go | 63 +++++++- .../format/sub_directory/unformatted.pkr.hcl | 149 ------------------ .../sub_directory/unformatted.pkrvars.hcl | 3 - 6 files changed, 139 insertions(+), 156 deletions(-) create mode 100644 command/test-fixtures/fmt/formatted.pkrvars.hcl delete mode 100644 hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl delete mode 100644 hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl diff --git a/command/cli.go b/command/cli.go index 85a24dad6..39e329502 100644 --- a/command/cli.go +++ b/command/cli.go @@ -147,7 +147,7 @@ func (va *FormatArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&va.Check, "check", false, "check if the input is formatted") flags.BoolVar(&va.Diff, "diff", false, "display the diff of formatting changes") flags.BoolVar(&va.Write, "write", true, "overwrite source files instead of writing to stdout") - flags.BoolVar(&va.Recursive, "recursive", true, "Also process files in subdirectories") + flags.BoolVar(&va.Recursive, "recursive", false, "Also process files in subdirectories") va.MetaArgs.AddFlagSets(flags) } diff --git a/command/fmt_test.go b/command/fmt_test.go index ee7ef9832..a57383999 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -1,10 +1,14 @@ package command import ( + "io/ioutil" + "os" "path/filepath" + "runtime" "strings" "testing" + "github.com/google/go-cmp/cmp" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/stretchr/testify/assert" ) @@ -56,9 +60,76 @@ func TestFmt_Recursive(t *testing.T) { Meta: testMeta(t), } - args := []string{"-check=true", "-recursive=true", filepath.Join(testFixture("fmt"), "")} + unformattedData, err := ioutil.ReadFile("test-fixtures/fmt/unformatted.pkrvars.hcl") + if err != nil { + t.Fatalf("failed to open the unformatted fixture %s", err) + } - if code := c.Run(args); code != 3 { + var subDir string + subDir, err = ioutil.TempDir("test-fixtures/fmt", "sub_dir") + if err != nil { + t.Fatalf("failed to create sub level recurisve directory for test %s", err) + } + defer os.Remove(subDir) + + var superSubDir string + superSubDir, err = ioutil.TempDir(subDir, "super_sub_dir") + if err != nil { + t.Fatalf("failed to create sub level recurisve directory for test %s", err) + } + defer os.Remove(superSubDir) + + tf, err := ioutil.TempFile(subDir, "*.pkrvars.hcl") + if err != nil { + t.Fatalf("failed to create top level tempfile for test %s", err) + } + defer os.Remove(tf.Name()) + + _, _ = tf.Write(unformattedData) + tf.Close() + + subTf, err := ioutil.TempFile(superSubDir, "*.pkrvars.hcl") + if err != nil { + t.Fatalf("failed to create sub level tempfile for test %s", err) + } + defer os.Remove(subTf.Name()) + + _, _ = subTf.Write(unformattedData) + subTf.Close() + + var directoryDelimiter string + if runtime.GOOS == "windows" { + directoryDelimiter = "\\" + } else { + directoryDelimiter = "/" + } + + dirSplit := strings.Split(subDir, directoryDelimiter) + // Need just last bit to of top level temp directory to call command + subDirIsolated := dirSplit[len(dirSplit)-1] + args := []string{"-recursive=true", filepath.Join(testFixture("fmt"), subDirIsolated)} + + if code := c.Run(args); code != 0 { fatalCommand(t, c.Meta) } + + formattedData, err := ioutil.ReadFile("test-fixtures/fmt/formatted.pkrvars.hcl") + if err != nil { + t.Fatalf("failed to open the formatted fixture %s", err) + } + + validateFileIsFormatted(t, formattedData, tf) + validateFileIsFormatted(t, formattedData, subTf) +} + +func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) { + //lets re-read the tempfile which should now be formatted + data, err := ioutil.ReadFile(testFile.Name()) + if err != nil { + t.Fatalf("failed to open the newly formatted fixture %s", err) + } + + if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { + t.Errorf("Unexpected format tfData output %s", diff) + } } diff --git a/command/test-fixtures/fmt/formatted.pkrvars.hcl b/command/test-fixtures/fmt/formatted.pkrvars.hcl new file mode 100644 index 000000000..a85fa0aee --- /dev/null +++ b/command/test-fixtures/fmt/formatted.pkrvars.hcl @@ -0,0 +1,3 @@ +ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" +ami_filter_owners = ["137112412989"] + diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index bb31e002d..b084f634a 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -39,12 +39,73 @@ func TestHCL2Formatter_Format(t *testing.T) { } func TestHCL2Formatter_Recursive(t *testing.T) { + var buf bytes.Buffer f := NewHCL2Formatter() + f.Output = &buf + f.Write = true f.Recursive = true - _, diags := f.Format("testdata/format") + + unformattedData, err := ioutil.ReadFile("testdata/format/unformatted.pkr.hcl") + if err != nil { + t.Fatalf("failed to open the unformatted fixture %s", err) + } + + var subDir string + subDir, err = ioutil.TempDir("testdata/format", "sub_dir") + if err != nil { + t.Fatalf("failed to create sub level recurisve directory for test %s", err) + } + defer os.Remove(subDir) + + var superSubDir string + superSubDir, err = ioutil.TempDir(subDir, "super_sub_dir") + if err != nil { + t.Fatalf("failed to create sub level recurisve directory for test %s", err) + } + defer os.Remove(superSubDir) + + tf, err := ioutil.TempFile(subDir, "*.pkr.hcl") + if err != nil { + t.Fatalf("failed to create top level tempfile for test %s", err) + } + defer os.Remove(tf.Name()) + + _, _ = tf.Write(unformattedData) + tf.Close() + + subTf, err := ioutil.TempFile(superSubDir, "*.pkr.hcl") + if err != nil { + t.Fatalf("failed to create sub level tempfile for test %s", err) + } + defer os.Remove(subTf.Name()) + + _, _ = subTf.Write(unformattedData) + subTf.Close() + + _, diags := f.Format(subDir) if diags.HasErrors() { t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) } + + formattedData, err := ioutil.ReadFile("testdata/format/formatted.pkr.hcl") + if err != nil { + t.Fatalf("failed to open the formatted fixture %s", err) + } + + validateFileIsFormatted(t, formattedData, tf) + validateFileIsFormatted(t, formattedData, subTf) +} + +func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) { + //lets re-read the tempfile which should now be formatted + data, err := ioutil.ReadFile(testFile.Name()) + if err != nil { + t.Fatalf("failed to open the newly formatted fixture %s", err) + } + + if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { + t.Errorf("Unexpected format tfData output %s", diff) + } } func TestHCL2Formatter_Format_Write(t *testing.T) { diff --git a/hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl b/hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl deleted file mode 100644 index 86aa3a154..000000000 --- a/hcl2template/testdata/format/sub_directory/unformatted.pkr.hcl +++ /dev/null @@ -1,149 +0,0 @@ - -// starts resources to provision them. -build { - sources = [ - "source.amazon-ebs.ubuntu-1604", - "source.virtualbox-iso.ubuntu-1204", - ] - - provisioner "shell" { - string = coalesce(null, "", "string") - int = "${41 + 1}" - int64 = "${42 + 1}" - bool = "true" - trilean = true - duration = "${9 + 1}s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - } - - nested_slice { - } - } - - provisioner "file" { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - } - - nested_slice { - } - } - - post-processor "amazon-import" { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - } - - nested_slice { - } - } -} diff --git a/hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl b/hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl deleted file mode 100644 index 7ddc9df79..000000000 --- a/hcl2template/testdata/format/sub_directory/unformatted.pkrvars.hcl +++ /dev/null @@ -1,3 +0,0 @@ -ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" -ami_filter_owners =[ "137112412989" ] - From 6adf1f6659fbb4522be557eec0ca4313eea74cd7 Mon Sep 17 00:00:00 2001 From: teddylear Date: Mon, 18 Jan 2021 15:05:18 -0500 Subject: [PATCH 004/212] Fixing recursive fmt tests syntax and adding test case when recursive option is off --- command/fmt_test.go | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/command/fmt_test.go b/command/fmt_test.go index a57383999..cb20c5a9d 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -4,7 +4,6 @@ import ( "io/ioutil" "os" "path/filepath" - "runtime" "strings" "testing" @@ -97,17 +96,7 @@ func TestFmt_Recursive(t *testing.T) { _, _ = subTf.Write(unformattedData) subTf.Close() - var directoryDelimiter string - if runtime.GOOS == "windows" { - directoryDelimiter = "\\" - } else { - directoryDelimiter = "/" - } - - dirSplit := strings.Split(subDir, directoryDelimiter) - // Need just last bit to of top level temp directory to call command - subDirIsolated := dirSplit[len(dirSplit)-1] - args := []string{"-recursive=true", filepath.Join(testFixture("fmt"), subDirIsolated)} + args := []string{"-recursive=true", subDir} if code := c.Run(args); code != 0 { fatalCommand(t, c.Meta) @@ -120,6 +109,34 @@ func TestFmt_Recursive(t *testing.T) { validateFileIsFormatted(t, formattedData, tf) validateFileIsFormatted(t, formattedData, subTf) + + //Testing with recursive flag off that sub directories are not formatted + tf, err = ioutil.TempFile(subDir, "*.pkrvars.hcl") + if err != nil { + t.Fatalf("failed to create top level tempfile for test %s", err) + } + defer os.Remove(tf.Name()) + + _, _ = tf.Write(unformattedData) + tf.Close() + + subTf, err = ioutil.TempFile(superSubDir, "*.pkrvars.hcl") + if err != nil { + t.Fatalf("failed to create sub level tempfile for test %s", err) + } + defer os.Remove(subTf.Name()) + + _, _ = subTf.Write(unformattedData) + subTf.Close() + + args = []string{subDir} + + if code := c.Run(args); code != 0 { + fatalCommand(t, c.Meta) + } + + validateFileIsFormatted(t, formattedData, tf) + validateFileIsFormatted(t, unformattedData, subTf) } func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) { From 93df53a2753e69d47fed6274bf4e2e37384d7c44 Mon Sep 17 00:00:00 2001 From: teddylear Date: Thu, 28 Jan 2021 19:56:51 -0500 Subject: [PATCH 005/212] Refactor recursive formatting test cases to be table driven --- command/fmt_test.go | 112 ++++++----- hcl2template/formatter.go | 3 +- hcl2template/formatter_test.go | 356 +++++++++++++++++++++++++++++++-- 3 files changed, 406 insertions(+), 65 deletions(-) diff --git a/command/fmt_test.go b/command/fmt_test.go index cb20c5a9d..a7cf9b70c 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -1,6 +1,7 @@ package command import ( + "fmt" "io/ioutil" "os" "path/filepath" @@ -54,25 +55,63 @@ func TestFmt_unfomattedTemlateDirectory(t *testing.T) { } } +type RecursiveTestCase struct { + TestCaseName string + Recursion bool + TopLevelFilePreFormat []byte + LowerLevelFilePreFormat []byte + TopLevelFilePostFormat []byte + LowerLevelFilePostFormat []byte +} + func TestFmt_Recursive(t *testing.T) { + unformattedData := []byte(`ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" +ami_filter_owners =[ "137112412989" ] + +`) + + formattedData := []byte(`ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" +ami_filter_owners = ["137112412989"] + +`) + + recursiveTestCases := []RecursiveTestCase{ + { + TestCaseName: "With Recursive flag on", + Recursion: true, + TopLevelFilePreFormat: unformattedData, + LowerLevelFilePreFormat: unformattedData, + TopLevelFilePostFormat: formattedData, + LowerLevelFilePostFormat: formattedData, + }, + { + TestCaseName: "With Recursive flag off", + Recursion: false, + TopLevelFilePreFormat: unformattedData, + LowerLevelFilePreFormat: unformattedData, + TopLevelFilePostFormat: formattedData, + LowerLevelFilePostFormat: unformattedData, + }, + } + c := &FormatCommand{ Meta: testMeta(t), } - unformattedData, err := ioutil.ReadFile("test-fixtures/fmt/unformatted.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to open the unformatted fixture %s", err) + for _, tc := range recursiveTestCases { + executeRecursiveTestCase(t, tc, c) } +} - var subDir string - subDir, err = ioutil.TempDir("test-fixtures/fmt", "sub_dir") +func executeRecursiveTestCase(t *testing.T, tc RecursiveTestCase, c *FormatCommand) { + // Creating temp directories and files + subDir, err := ioutil.TempDir("test-fixtures/fmt", "sub_dir") if err != nil { t.Fatalf("failed to create sub level recurisve directory for test %s", err) } defer os.Remove(subDir) - var superSubDir string - superSubDir, err = ioutil.TempDir(subDir, "super_sub_dir") + superSubDir, err := ioutil.TempDir(subDir, "super_sub_dir") if err != nil { t.Fatalf("failed to create sub level recurisve directory for test %s", err) } @@ -84,69 +123,46 @@ func TestFmt_Recursive(t *testing.T) { } defer os.Remove(tf.Name()) - _, _ = tf.Write(unformattedData) + _, _ = tf.Write(tc.TopLevelFilePreFormat) tf.Close() + data, err := ioutil.ReadFile(tf.Name()) + if err != nil { + t.Fatalf("failed to open the newly formatted fixture %s", err) + } + fmt.Println(fmt.Sprintf("top level data: %v", data)) + subTf, err := ioutil.TempFile(superSubDir, "*.pkrvars.hcl") if err != nil { t.Fatalf("failed to create sub level tempfile for test %s", err) } defer os.Remove(subTf.Name()) - _, _ = subTf.Write(unformattedData) + _, _ = subTf.Write(tc.LowerLevelFilePreFormat) subTf.Close() - args := []string{"-recursive=true", subDir} + var args []string + if tc.Recursion { + args = []string{"-recursive=true", subDir} + } else { + args = []string{subDir} + } if code := c.Run(args); code != 0 { fatalCommand(t, c.Meta) } - formattedData, err := ioutil.ReadFile("test-fixtures/fmt/formatted.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to open the formatted fixture %s", err) - } - - validateFileIsFormatted(t, formattedData, tf) - validateFileIsFormatted(t, formattedData, subTf) - - //Testing with recursive flag off that sub directories are not formatted - tf, err = ioutil.TempFile(subDir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to create top level tempfile for test %s", err) - } - defer os.Remove(tf.Name()) - - _, _ = tf.Write(unformattedData) - tf.Close() - - subTf, err = ioutil.TempFile(superSubDir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to create sub level tempfile for test %s", err) - } - defer os.Remove(subTf.Name()) - - _, _ = subTf.Write(unformattedData) - subTf.Close() - - args = []string{subDir} - - if code := c.Run(args); code != 0 { - fatalCommand(t, c.Meta) - } - - validateFileIsFormatted(t, formattedData, tf) - validateFileIsFormatted(t, unformattedData, subTf) + validateFileIsFormatted(t, tc.TopLevelFilePostFormat, tf, tc) + validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTf, tc) } -func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) { - //lets re-read the tempfile which should now be formatted +func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File, tc RecursiveTestCase) { data, err := ioutil.ReadFile(testFile.Name()) if err != nil { t.Fatalf("failed to open the newly formatted fixture %s", err) } if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { - t.Errorf("Unexpected format tfData output %s", diff) + t.Errorf("Unexpected format tfData output on tc: %v, diff: %s", tc.TestCaseName, diff) } } diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index aa275a35e..42534805d 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -102,9 +102,8 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { tempBytesModified, tempDiags = f.Format(filename) bytesModified += tempBytesModified diags = diags.Extend(tempDiags) - } else { - continue } + continue } if isHcl2FileOrVarFile(filename) { bytesModified, diags = f.formatFile(filename, diags, bytesModified) diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index b084f634a..d30413069 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -38,20 +38,352 @@ func TestHCL2Formatter_Format(t *testing.T) { } } +type FormatterRecursiveTestCase struct { + TestCaseName string + Recursion bool + TopLevelFilePreFormat []byte + LowerLevelFilePreFormat []byte + TopLevelFilePostFormat []byte + LowerLevelFilePostFormat []byte +} + func TestHCL2Formatter_Recursive(t *testing.T) { + unformattedData := []byte(` +// starts resources to provision them. +build { + sources = [ + "source.amazon-ebs.ubuntu-1604", + "source.virtualbox-iso.ubuntu-1204", + ] + + provisioner "shell" { + string = coalesce(null, "", "string") + int = "${41 + 1}" + int64 = "${42 + 1}" + bool = "true" + trilean = true + duration = "${9 + 1}s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + } + + nested_slice { + } + } + + provisioner "file" { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + } + + nested_slice { + } + } + + post-processor "amazon-import" { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a","b"], + ["c","d"] + ] + } + + nested_slice { + } + } +} +`) + + formattedData := []byte(` +// starts resources to provision them. +build { + sources = [ + "source.amazon-ebs.ubuntu-1604", + "source.virtualbox-iso.ubuntu-1204", + ] + + provisioner "shell" { + string = coalesce(null, "", "string") + int = "${41 + 1}" + int64 = "${42 + 1}" + bool = "true" + trilean = true + duration = "${9 + 1}s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a", "b"], + ["c", "d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a", "b"], + ["c", "d"] + ] + } + + nested_slice { + } + } + + provisioner "file" { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a", "b"], + ["c", "d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a", "b"], + ["c", "d"] + ] + } + + nested_slice { + } + } + + post-processor "amazon-import" { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a", "b"], + ["c", "d"] + ] + + nested { + string = "string" + int = 42 + int64 = 43 + bool = true + trilean = true + duration = "10s" + map_string_string = { + a = "b" + c = "d" + } + slice_string = [ + "a", + "b", + "c", + ] + slice_slice_string = [ + ["a", "b"], + ["c", "d"] + ] + } + + nested_slice { + } + } +} +`) + var buf bytes.Buffer f := NewHCL2Formatter() f.Output = &buf f.Write = true - f.Recursive = true - unformattedData, err := ioutil.ReadFile("testdata/format/unformatted.pkr.hcl") - if err != nil { - t.Fatalf("failed to open the unformatted fixture %s", err) + recursiveTestCases := []FormatterRecursiveTestCase{ + { + TestCaseName: "With Recursive flag on", + Recursion: true, + TopLevelFilePreFormat: unformattedData, + LowerLevelFilePreFormat: unformattedData, + TopLevelFilePostFormat: formattedData, + LowerLevelFilePostFormat: formattedData, + }, + { + TestCaseName: "With Recursive flag off", + Recursion: false, + TopLevelFilePreFormat: unformattedData, + LowerLevelFilePreFormat: unformattedData, + TopLevelFilePostFormat: formattedData, + LowerLevelFilePostFormat: unformattedData, + }, } + for _, tc := range recursiveTestCases { + executeRecursiveTestCase(t, tc, f) + } +} + +func executeRecursiveTestCase(t *testing.T, tc FormatterRecursiveTestCase, f *HCL2Formatter) { + f.Recursive = tc.Recursion + var subDir string - subDir, err = ioutil.TempDir("testdata/format", "sub_dir") + subDir, err := ioutil.TempDir("testdata/format", "sub_dir") if err != nil { t.Fatalf("failed to create sub level recurisve directory for test %s", err) } @@ -70,7 +402,7 @@ func TestHCL2Formatter_Recursive(t *testing.T) { } defer os.Remove(tf.Name()) - _, _ = tf.Write(unformattedData) + _, _ = tf.Write(tc.TopLevelFilePreFormat) tf.Close() subTf, err := ioutil.TempFile(superSubDir, "*.pkr.hcl") @@ -79,7 +411,7 @@ func TestHCL2Formatter_Recursive(t *testing.T) { } defer os.Remove(subTf.Name()) - _, _ = subTf.Write(unformattedData) + _, _ = subTf.Write(tc.LowerLevelFilePreFormat) subTf.Close() _, diags := f.Format(subDir) @@ -87,17 +419,11 @@ func TestHCL2Formatter_Recursive(t *testing.T) { t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) } - formattedData, err := ioutil.ReadFile("testdata/format/formatted.pkr.hcl") - if err != nil { - t.Fatalf("failed to open the formatted fixture %s", err) - } - - validateFileIsFormatted(t, formattedData, tf) - validateFileIsFormatted(t, formattedData, subTf) + validateFileIsFormatted(t, tc.TopLevelFilePostFormat, tf) + validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTf) } func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) { - //lets re-read the tempfile which should now be formatted data, err := ioutil.ReadFile(testFile.Name()) if err != nil { t.Fatalf("failed to open the newly formatted fixture %s", err) From 40a97e29db3176b9b9897351777a875040afbe28 Mon Sep 17 00:00:00 2001 From: teddylear Date: Fri, 29 Jan 2021 22:11:41 -0500 Subject: [PATCH 006/212] Clean up recursive format tests to be more accurate --- command/fmt_test.go | 57 +++++++++++++++------------------- hcl2template/formatter_test.go | 56 ++++++++++++++++----------------- 2 files changed, 53 insertions(+), 60 deletions(-) diff --git a/command/fmt_test.go b/command/fmt_test.go index a7cf9b70c..c66777a9e 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -1,7 +1,6 @@ package command import ( - "fmt" "io/ioutil" "os" "path/filepath" @@ -105,64 +104,58 @@ ami_filter_owners = ["137112412989"] func executeRecursiveTestCase(t *testing.T, tc RecursiveTestCase, c *FormatCommand) { // Creating temp directories and files - subDir, err := ioutil.TempDir("test-fixtures/fmt", "sub_dir") + topDir, err := ioutil.TempDir("test-fixtures/fmt", "top-dir") if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test %s", err) + t.Fatalf("failed to create sub level recurisve directory for test case: %s, error: %s", tc.TestCaseName, err) + } + defer os.Remove(topDir) + + subDir, err := ioutil.TempDir(topDir, "sub-dir") + if err != nil { + t.Fatalf("failed to create sub level recurisve directory for test case: %s, error: %s", tc.TestCaseName, err) } defer os.Remove(subDir) - superSubDir, err := ioutil.TempDir(subDir, "super_sub_dir") + topTempFile, err := ioutil.TempFile(topDir, "*.pkrvars.hcl") if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test %s", err) + t.Fatalf("failed to create top level tempfile for test case: %s, error: %s", tc.TestCaseName, err) } - defer os.Remove(superSubDir) + defer os.Remove(topTempFile.Name()) - tf, err := ioutil.TempFile(subDir, "*.pkrvars.hcl") + _, _ = topTempFile.Write(tc.TopLevelFilePreFormat) + topTempFile.Close() + + subTempFile, err := ioutil.TempFile(subDir, "*.pkrvars.hcl") if err != nil { - t.Fatalf("failed to create top level tempfile for test %s", err) + t.Fatalf("failed to create sub level tempfile for test case: %s, error: %s", tc.TestCaseName, err) } - defer os.Remove(tf.Name()) + defer os.Remove(subTempFile.Name()) - _, _ = tf.Write(tc.TopLevelFilePreFormat) - tf.Close() - - data, err := ioutil.ReadFile(tf.Name()) - if err != nil { - t.Fatalf("failed to open the newly formatted fixture %s", err) - } - fmt.Println(fmt.Sprintf("top level data: %v", data)) - - subTf, err := ioutil.TempFile(superSubDir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to create sub level tempfile for test %s", err) - } - defer os.Remove(subTf.Name()) - - _, _ = subTf.Write(tc.LowerLevelFilePreFormat) - subTf.Close() + _, _ = subTempFile.Write(tc.LowerLevelFilePreFormat) + subTempFile.Close() var args []string if tc.Recursion { - args = []string{"-recursive=true", subDir} + args = []string{"-recursive=true", topDir} } else { - args = []string{subDir} + args = []string{topDir} } if code := c.Run(args); code != 0 { fatalCommand(t, c.Meta) } - validateFileIsFormatted(t, tc.TopLevelFilePostFormat, tf, tc) - validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTf, tc) + validateFileIsFormatted(t, tc.TopLevelFilePostFormat, topTempFile, tc) + validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTempFile, tc) } func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File, tc RecursiveTestCase) { data, err := ioutil.ReadFile(testFile.Name()) if err != nil { - t.Fatalf("failed to open the newly formatted fixture %s", err) + t.Fatalf("failed to open the newly formatted fixture for test case: %s, error: %s", tc.TestCaseName, err) } if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { - t.Errorf("Unexpected format tfData output on tc: %v, diff: %s", tc.TestCaseName, diff) + t.Errorf("Unexpected format tfData output for test case: %v, diff: %s", tc.TestCaseName, diff) } } diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index d30413069..469237887 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -382,55 +382,55 @@ build { func executeRecursiveTestCase(t *testing.T, tc FormatterRecursiveTestCase, f *HCL2Formatter) { f.Recursive = tc.Recursion - var subDir string - subDir, err := ioutil.TempDir("testdata/format", "sub_dir") + var topDir string + topDir, err := ioutil.TempDir("testdata/format", "top-dir") if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test %s", err) + t.Fatalf("failed to create sub level recurisve directory for test case: %s, errors: %s", tc.TestCaseName, err) + } + defer os.Remove(topDir) + + var subDir string + subDir, err = ioutil.TempDir(topDir, "sub-dir") + if err != nil { + t.Fatalf("failed to create sub level recurisve directory for test case: %s, errors: %s", tc.TestCaseName, err) } defer os.Remove(subDir) - var superSubDir string - superSubDir, err = ioutil.TempDir(subDir, "super_sub_dir") + topTempFile, err := ioutil.TempFile(topDir, "*.pkr.hcl") if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test %s", err) + t.Fatalf("failed to create top level tempfile for test case: %s, errors: %s", tc.TestCaseName, err) } - defer os.Remove(superSubDir) + defer os.Remove(topTempFile.Name()) - tf, err := ioutil.TempFile(subDir, "*.pkr.hcl") + _, _ = topTempFile.Write(tc.TopLevelFilePreFormat) + topTempFile.Close() + + subTempFile, err := ioutil.TempFile(subDir, "*.pkr.hcl") if err != nil { - t.Fatalf("failed to create top level tempfile for test %s", err) + t.Fatalf("failed to create sub level tempfile for test case: %s, errors: %s", tc.TestCaseName, err) } - defer os.Remove(tf.Name()) + defer os.Remove(subTempFile.Name()) - _, _ = tf.Write(tc.TopLevelFilePreFormat) - tf.Close() + _, _ = subTempFile.Write(tc.LowerLevelFilePreFormat) + subTempFile.Close() - subTf, err := ioutil.TempFile(superSubDir, "*.pkr.hcl") - if err != nil { - t.Fatalf("failed to create sub level tempfile for test %s", err) - } - defer os.Remove(subTf.Name()) - - _, _ = subTf.Write(tc.LowerLevelFilePreFormat) - subTf.Close() - - _, diags := f.Format(subDir) + _, diags := f.Format(topDir) if diags.HasErrors() { - t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) + t.Fatalf("the call to Format failed unexpectedly for test case: %s, errors: %s", tc.TestCaseName, diags.Error()) } - validateFileIsFormatted(t, tc.TopLevelFilePostFormat, tf) - validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTf) + validateFileIsFormatted(t, tc.TopLevelFilePostFormat, topTempFile, tc.TestCaseName) + validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTempFile, tc.TestCaseName) } -func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File) { +func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File, testCaseName string) { data, err := ioutil.ReadFile(testFile.Name()) if err != nil { - t.Fatalf("failed to open the newly formatted fixture %s", err) + t.Fatalf("failed to open the newly formatted fixture for test case: %s, errors: %s", testCaseName, err) } if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { - t.Errorf("Unexpected format tfData output %s", diff) + t.Errorf("Unexpected format tfData output for test case: %s, errors: %s", testCaseName, diff) } } From ab7e89781a73d7aceef0393f18d74e25e3f8b3df Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Fri, 5 Feb 2021 14:05:37 +0100 Subject: [PATCH 007/212] empty commit to check if I can push From d3754e302195651b08f11219e2fc78155990a830 Mon Sep 17 00:00:00 2001 From: teddylear Date: Mon, 1 Feb 2021 21:33:04 -0500 Subject: [PATCH 008/212] Updating recursive formatter tests to be cleaner and table driven --- command/fmt_test.go | 209 +++++++++++------- .../test-fixtures/fmt/formatted.pkrvars.hcl | 3 - hcl2template/formatter_test.go | 209 ++++++++++-------- 3 files changed, 244 insertions(+), 177 deletions(-) delete mode 100644 command/test-fixtures/fmt/formatted.pkrvars.hcl diff --git a/command/fmt_test.go b/command/fmt_test.go index c66777a9e..8539fafb6 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -1,6 +1,7 @@ package command import ( + "bytes" "io/ioutil" "os" "path/filepath" @@ -54,42 +55,50 @@ func TestFmt_unfomattedTemlateDirectory(t *testing.T) { } } -type RecursiveTestCase struct { - TestCaseName string - Recursion bool - TopLevelFilePreFormat []byte - LowerLevelFilePreFormat []byte - TopLevelFilePostFormat []byte - LowerLevelFilePostFormat []byte -} - func TestFmt_Recursive(t *testing.T) { - unformattedData := []byte(`ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" + unformattedData := `ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" ami_filter_owners =[ "137112412989" ] -`) +` - formattedData := []byte(`ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" + formattedData := `ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" ami_filter_owners = ["137112412989"] -`) +` - recursiveTestCases := []RecursiveTestCase{ + tests := []struct { + name string + formatArgs []string // arguments passed to format + alreadyPresentContent map[string]string + expectedContent map[string]string + }{ { - TestCaseName: "With Recursive flag on", - Recursion: true, - TopLevelFilePreFormat: unformattedData, - LowerLevelFilePreFormat: unformattedData, - TopLevelFilePostFormat: formattedData, - LowerLevelFilePostFormat: formattedData, + name: "nested formats recursively", + formatArgs: []string{"-recursive=true"}, + alreadyPresentContent: map[string]string{ + "foo/bar/baz": unformattedData, + "foo/bar/baz/woo": unformattedData, + "": unformattedData, + }, + expectedContent: map[string]string{ + "foo/bar/baz": formattedData, + "foo/bar/baz/woo": formattedData, + "": formattedData, + }, }, { - TestCaseName: "With Recursive flag off", - Recursion: false, - TopLevelFilePreFormat: unformattedData, - LowerLevelFilePreFormat: unformattedData, - TopLevelFilePostFormat: formattedData, - LowerLevelFilePostFormat: unformattedData, + name: "nested no recursive format", + formatArgs: []string{}, + alreadyPresentContent: map[string]string{ + "foo/bar/baz": unformattedData, + "foo/bar/baz/woo": unformattedData, + "": unformattedData, + }, + expectedContent: map[string]string{ + "foo/bar/baz": unformattedData, + "foo/bar/baz/woo": unformattedData, + "": formattedData, + }, }, } @@ -97,65 +106,93 @@ ami_filter_owners = ["137112412989"] Meta: testMeta(t), } - for _, tc := range recursiveTestCases { - executeRecursiveTestCase(t, tc, c) - } -} - -func executeRecursiveTestCase(t *testing.T, tc RecursiveTestCase, c *FormatCommand) { - // Creating temp directories and files - topDir, err := ioutil.TempDir("test-fixtures/fmt", "top-dir") - if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test case: %s, error: %s", tc.TestCaseName, err) - } - defer os.Remove(topDir) - - subDir, err := ioutil.TempDir(topDir, "sub-dir") - if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test case: %s, error: %s", tc.TestCaseName, err) - } - defer os.Remove(subDir) - - topTempFile, err := ioutil.TempFile(topDir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to create top level tempfile for test case: %s, error: %s", tc.TestCaseName, err) - } - defer os.Remove(topTempFile.Name()) - - _, _ = topTempFile.Write(tc.TopLevelFilePreFormat) - topTempFile.Close() - - subTempFile, err := ioutil.TempFile(subDir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("failed to create sub level tempfile for test case: %s, error: %s", tc.TestCaseName, err) - } - defer os.Remove(subTempFile.Name()) - - _, _ = subTempFile.Write(tc.LowerLevelFilePreFormat) - subTempFile.Close() - - var args []string - if tc.Recursion { - args = []string{"-recursive=true", topDir} - } else { - args = []string{topDir} - } - - if code := c.Run(args); code != 0 { - fatalCommand(t, c.Meta) - } - - validateFileIsFormatted(t, tc.TopLevelFilePostFormat, topTempFile, tc) - validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTempFile, tc) -} - -func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File, tc RecursiveTestCase) { - data, err := ioutil.ReadFile(testFile.Name()) - if err != nil { - t.Fatalf("failed to open the newly formatted fixture for test case: %s, error: %s", tc.TestCaseName, err) - } - - if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { - t.Errorf("Unexpected format tfData output for test case: %v, diff: %s", tc.TestCaseName, diff) + testFileName := "test.pkrvars.hcl" + + for _, tt := range tests { + topDir, err := ioutil.TempDir("test-fixtures/fmt", "temp-dir") + if err != nil { + t.Fatalf("Failed to create TopDir for test case: %s, error: %v", tt.name, err) + } + defer os.Remove(topDir) + + for testDir, content := range tt.alreadyPresentContent { + dir := filepath.Join(topDir, testDir) + err := os.MkdirAll(dir, 0777) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf( + "Failed to create subDir: %s\n\n, for test case: %s\n\n, error: %v", + testDir, + tt.name, + err) + } + + file, err := os.Create(filepath.Join(dir, testFileName)) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("failed to create testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", + testDir, + tt.name, + err) + } + + _, err = file.Write([]byte(content)) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("failed to write to testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", + testDir, + tt.name, + err) + } + + err = file.Close() + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("failed to close testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", + testDir, + tt.name, + err) + } + } + + testArgs := append(tt.formatArgs, topDir) + if code := c.Run(testArgs); code != 0 { + os.RemoveAll(topDir) + ui := c.Meta.Ui.(*packersdk.BasicUi) + out := ui.Writer.(*bytes.Buffer) + err := ui.ErrorWriter.(*bytes.Buffer) + t.Fatalf( + "Bad exit code for test case: %s.\n\nStdout:\n\n%s\n\nStderr:\n\n%s", + tt.name, + out.String(), + err.String()) + } + + for expectedPath, expectedContent := range tt.expectedContent { + b, err := ioutil.ReadFile(filepath.Join(topDir, expectedPath, testFileName)) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("ReadFile failed for test case: %s, error : %v", tt.name, err) + } + got := string(b) + if diff := cmp.Diff(got, expectedContent); diff != "" { + os.RemoveAll(topDir) + t.Errorf( + "format dir, unexpected result for test case: %s, path: %s, Expected: %s, Got: %s", + tt.name, + expectedPath, + expectedContent, + got) + } + } + + err = os.RemoveAll(topDir) + if err != nil { + t.Errorf( + "Failed to delete top level test directory for test case: %s, please clean before another test run. Error: %s", + tt.name, + err) + } } + } diff --git a/command/test-fixtures/fmt/formatted.pkrvars.hcl b/command/test-fixtures/fmt/formatted.pkrvars.hcl deleted file mode 100644 index a85fa0aee..000000000 --- a/command/test-fixtures/fmt/formatted.pkrvars.hcl +++ /dev/null @@ -1,3 +0,0 @@ -ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" -ami_filter_owners = ["137112412989"] - diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 469237887..f59db4c0e 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -5,6 +5,7 @@ import ( "io/ioutil" "os" "os/exec" + "path/filepath" "strings" "testing" @@ -38,17 +39,8 @@ func TestHCL2Formatter_Format(t *testing.T) { } } -type FormatterRecursiveTestCase struct { - TestCaseName string - Recursion bool - TopLevelFilePreFormat []byte - LowerLevelFilePreFormat []byte - TopLevelFilePostFormat []byte - LowerLevelFilePostFormat []byte -} - func TestHCL2Formatter_Recursive(t *testing.T) { - unformattedData := []byte(` + unformattedData := ` // starts resources to provision them. build { sources = [ @@ -197,9 +189,9 @@ build { } } } -`) +` - formattedData := []byte(` + formattedData := ` // starts resources to provision them. build { sources = [ @@ -348,90 +340,131 @@ build { } } } -`) +` + + tests := []struct { + name string + recursive bool + alreadyPresentContent map[string]string + expectedContent map[string]string + }{ + { + name: "nested formats recursively", + recursive: true, + alreadyPresentContent: map[string]string{ + "foo/bar/baz": unformattedData, + "foo/bar/baz/woo": unformattedData, + "": unformattedData, + }, + expectedContent: map[string]string{ + "foo/bar/baz": formattedData, + "foo/bar/baz/woo": formattedData, + "": formattedData, + }, + }, + { + name: "nested no recursive format", + recursive: false, + alreadyPresentContent: map[string]string{ + "foo/bar/baz": unformattedData, + "foo/bar/baz/woo": unformattedData, + "": unformattedData, + }, + expectedContent: map[string]string{ + "foo/bar/baz": unformattedData, + "foo/bar/baz/woo": unformattedData, + "": formattedData, + }, + }, + } var buf bytes.Buffer f := NewHCL2Formatter() f.Output = &buf f.Write = true - recursiveTestCases := []FormatterRecursiveTestCase{ - { - TestCaseName: "With Recursive flag on", - Recursion: true, - TopLevelFilePreFormat: unformattedData, - LowerLevelFilePreFormat: unformattedData, - TopLevelFilePostFormat: formattedData, - LowerLevelFilePostFormat: formattedData, - }, - { - TestCaseName: "With Recursive flag off", - Recursion: false, - TopLevelFilePreFormat: unformattedData, - LowerLevelFilePreFormat: unformattedData, - TopLevelFilePostFormat: formattedData, - LowerLevelFilePostFormat: unformattedData, - }, + testFileName := "test.pkrvars.hcl" + + for _, tt := range tests { + topDir, err := ioutil.TempDir("testdata/format", "temp-dir") + if err != nil { + t.Fatalf("Failed to create TopDir for test case: %s, error: %v", tt.name, err) + } + + for testDir, content := range tt.alreadyPresentContent { + dir := filepath.Join(topDir, testDir) + err := os.MkdirAll(dir, 0777) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf( + "Failed to create subDir: %s\n\n, for test case: %s\n\n, error: %v", + testDir, + tt.name, + err) + } + + file, err := os.Create(filepath.Join(dir, testFileName)) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("failed to create testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", + testDir, + tt.name, + err) + } + + _, err = file.Write([]byte(content)) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("failed to write to testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", + testDir, + tt.name, + err) + } + + err = file.Close() + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("failed to close testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", + testDir, + tt.name, + err) + } + } + + f.Recursive = tt.recursive + _, diags := f.Format(topDir) + if diags.HasErrors() { + os.RemoveAll(topDir) + t.Fatalf("the call to Format failed unexpectedly for test case: %s, errors: %s", tt.name, diags.Error()) + } + + for expectedPath, expectedContent := range tt.expectedContent { + b, err := ioutil.ReadFile(filepath.Join(topDir, expectedPath, testFileName)) + if err != nil { + os.RemoveAll(topDir) + t.Fatalf("ReadFile failed for test case: %s, error : %v", tt.name, err) + } + got := string(b) + if diff := cmp.Diff(got, expectedContent); diff != "" { + os.RemoveAll(topDir) + t.Errorf( + "format dir, unexpected result for test case: %s, path: %s, Expected: %s, Got: %s", + tt.name, + expectedPath, + expectedContent, + got) + } + } + + err = os.RemoveAll(topDir) + if err != nil { + t.Errorf( + "Failed to delete top level test directory for test case: %s, please clean before another test run. Error: %s", + tt.name, + err) + } } - for _, tc := range recursiveTestCases { - executeRecursiveTestCase(t, tc, f) - } -} - -func executeRecursiveTestCase(t *testing.T, tc FormatterRecursiveTestCase, f *HCL2Formatter) { - f.Recursive = tc.Recursion - - var topDir string - topDir, err := ioutil.TempDir("testdata/format", "top-dir") - if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test case: %s, errors: %s", tc.TestCaseName, err) - } - defer os.Remove(topDir) - - var subDir string - subDir, err = ioutil.TempDir(topDir, "sub-dir") - if err != nil { - t.Fatalf("failed to create sub level recurisve directory for test case: %s, errors: %s", tc.TestCaseName, err) - } - defer os.Remove(subDir) - - topTempFile, err := ioutil.TempFile(topDir, "*.pkr.hcl") - if err != nil { - t.Fatalf("failed to create top level tempfile for test case: %s, errors: %s", tc.TestCaseName, err) - } - defer os.Remove(topTempFile.Name()) - - _, _ = topTempFile.Write(tc.TopLevelFilePreFormat) - topTempFile.Close() - - subTempFile, err := ioutil.TempFile(subDir, "*.pkr.hcl") - if err != nil { - t.Fatalf("failed to create sub level tempfile for test case: %s, errors: %s", tc.TestCaseName, err) - } - defer os.Remove(subTempFile.Name()) - - _, _ = subTempFile.Write(tc.LowerLevelFilePreFormat) - subTempFile.Close() - - _, diags := f.Format(topDir) - if diags.HasErrors() { - t.Fatalf("the call to Format failed unexpectedly for test case: %s, errors: %s", tc.TestCaseName, diags.Error()) - } - - validateFileIsFormatted(t, tc.TopLevelFilePostFormat, topTempFile, tc.TestCaseName) - validateFileIsFormatted(t, tc.LowerLevelFilePostFormat, subTempFile, tc.TestCaseName) -} - -func validateFileIsFormatted(t *testing.T, formattedData []byte, testFile *os.File, testCaseName string) { - data, err := ioutil.ReadFile(testFile.Name()) - if err != nil { - t.Fatalf("failed to open the newly formatted fixture for test case: %s, errors: %s", testCaseName, err) - } - - if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { - t.Errorf("Unexpected format tfData output for test case: %s, errors: %s", testCaseName, diff) - } } func TestHCL2Formatter_Format_Write(t *testing.T) { From 0637601eda8a42a3a1297a75e73465c2f3568b94 Mon Sep 17 00:00:00 2001 From: teddylear Date: Wed, 10 Feb 2021 21:10:34 -0500 Subject: [PATCH 009/212] Fixing recursive formatting tests to work on all platforms --- command/fmt_test.go | 66 +++++++++-------------------- hcl2template/formatter_test.go | 76 ++++++++++------------------------ 2 files changed, 42 insertions(+), 100 deletions(-) diff --git a/command/fmt_test.go b/command/fmt_test.go index 8539fafb6..e190e7a15 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -106,58 +106,40 @@ ami_filter_owners = ["137112412989"] Meta: testMeta(t), } - testFileName := "test.pkrvars.hcl" + testDir := "test-fixtures/fmt" for _, tt := range tests { - topDir, err := ioutil.TempDir("test-fixtures/fmt", "temp-dir") + tempFileNames := make(map[string]string) + + tempDirectory, err := ioutil.TempDir(testDir, "test-dir-*") if err != nil { - t.Fatalf("Failed to create TopDir for test case: %s, error: %v", tt.name, err) + t.Fatalf("Failed to create temp dir for test case: %s, error: %v", tt.name, err) } - defer os.Remove(topDir) + defer os.RemoveAll(tempDirectory) - for testDir, content := range tt.alreadyPresentContent { - dir := filepath.Join(topDir, testDir) - err := os.MkdirAll(dir, 0777) + for subDir, content := range tt.alreadyPresentContent { + dir := filepath.Join(tempDirectory, subDir) + err = os.MkdirAll(dir, 0700) if err != nil { - os.RemoveAll(topDir) - t.Fatalf( - "Failed to create subDir: %s\n\n, for test case: %s\n\n, error: %v", - testDir, - tt.name, - err) + t.Fatalf("Failed to create directory for test case: %s, error: %v", tt.name, err) } - file, err := os.Create(filepath.Join(dir, testFileName)) + tempFile, err := ioutil.TempFile(dir, "*.pkrvars.hcl") if err != nil { - os.RemoveAll(topDir) - t.Fatalf("failed to create testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", - testDir, - tt.name, - err) + t.Fatalf("Failed to create temp file for test case: %s, error: %v", tt.name, err) } - _, err = file.Write([]byte(content)) + _, err = tempFile.Write([]byte(content)) if err != nil { - os.RemoveAll(topDir) - t.Fatalf("failed to write to testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", - testDir, - tt.name, - err) - } - - err = file.Close() - if err != nil { - os.RemoveAll(topDir) - t.Fatalf("failed to close testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", - testDir, - tt.name, - err) + t.Fatalf("Failed to write temp file for test case: %s, error: %v", tt.name, err) } + tempFileNames[subDir] = tempFile.Name() + tempFile.Close() } - testArgs := append(tt.formatArgs, topDir) + testArgs := append(tt.formatArgs, tempDirectory) if code := c.Run(testArgs); code != 0 { - os.RemoveAll(topDir) + os.RemoveAll(tempDirectory) ui := c.Meta.Ui.(*packersdk.BasicUi) out := ui.Writer.(*bytes.Buffer) err := ui.ErrorWriter.(*bytes.Buffer) @@ -169,14 +151,12 @@ ami_filter_owners = ["137112412989"] } for expectedPath, expectedContent := range tt.expectedContent { - b, err := ioutil.ReadFile(filepath.Join(topDir, expectedPath, testFileName)) + b, err := ioutil.ReadFile(tempFileNames[expectedPath]) if err != nil { - os.RemoveAll(topDir) t.Fatalf("ReadFile failed for test case: %s, error : %v", tt.name, err) } got := string(b) if diff := cmp.Diff(got, expectedContent); diff != "" { - os.RemoveAll(topDir) t.Errorf( "format dir, unexpected result for test case: %s, path: %s, Expected: %s, Got: %s", tt.name, @@ -185,14 +165,6 @@ ami_filter_owners = ["137112412989"] got) } } - - err = os.RemoveAll(topDir) - if err != nil { - t.Errorf( - "Failed to delete top level test directory for test case: %s, please clean before another test run. Error: %s", - tt.name, - err) - } } } diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index f59db4c0e..4fede302e 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -341,6 +341,10 @@ build { } } ` + var buf bytes.Buffer + f := NewHCL2Formatter() + f.Output = &buf + f.Write = true tests := []struct { name string @@ -378,75 +382,50 @@ build { }, } - var buf bytes.Buffer - f := NewHCL2Formatter() - f.Output = &buf - f.Write = true - - testFileName := "test.pkrvars.hcl" + testDir := "testdata/format" for _, tt := range tests { - topDir, err := ioutil.TempDir("testdata/format", "temp-dir") + tempFileNames := make(map[string]string) + + tempDirectory, err := ioutil.TempDir(testDir, "test-dir-*") if err != nil { - t.Fatalf("Failed to create TopDir for test case: %s, error: %v", tt.name, err) + t.Fatalf("Failed to create temp dir for test case: %s, error: %v", tt.name, err) } + defer os.RemoveAll(tempDirectory) - for testDir, content := range tt.alreadyPresentContent { - dir := filepath.Join(topDir, testDir) - err := os.MkdirAll(dir, 0777) + for subDir, content := range tt.alreadyPresentContent { + dir := filepath.Join(tempDirectory, subDir) + err = os.MkdirAll(dir, 0700) if err != nil { - os.RemoveAll(topDir) - t.Fatalf( - "Failed to create subDir: %s\n\n, for test case: %s\n\n, error: %v", - testDir, - tt.name, - err) + t.Fatalf("Failed to create directory for test case: %s, error: %v", tt.name, err) } - file, err := os.Create(filepath.Join(dir, testFileName)) + tempFile, err := ioutil.TempFile(dir, "*.pkrvars.hcl") if err != nil { - os.RemoveAll(topDir) - t.Fatalf("failed to create testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", - testDir, - tt.name, - err) + t.Fatalf("Failed to create temp file for test case: %s, error: %v", tt.name, err) } - _, err = file.Write([]byte(content)) + _, err = tempFile.Write([]byte(content)) if err != nil { - os.RemoveAll(topDir) - t.Fatalf("failed to write to testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", - testDir, - tt.name, - err) - } - - err = file.Close() - if err != nil { - os.RemoveAll(topDir) - t.Fatalf("failed to close testfile at directory: %s\n\n, for test case: %s\n\n, error: %s", - testDir, - tt.name, - err) + t.Fatalf("Failed to write temp file for test case: %s, error: %v", tt.name, err) } + tempFileNames[subDir] = tempFile.Name() + tempFile.Close() } f.Recursive = tt.recursive - _, diags := f.Format(topDir) + _, diags := f.Format(tempDirectory) if diags.HasErrors() { - os.RemoveAll(topDir) - t.Fatalf("the call to Format failed unexpectedly for test case: %s, errors: %s", tt.name, diags.Error()) + t.Fatalf("Call to Format failed unexpectedly for test case: %s, errors: %s", tt.name, diags.Error()) } for expectedPath, expectedContent := range tt.expectedContent { - b, err := ioutil.ReadFile(filepath.Join(topDir, expectedPath, testFileName)) + b, err := ioutil.ReadFile(tempFileNames[expectedPath]) if err != nil { - os.RemoveAll(topDir) t.Fatalf("ReadFile failed for test case: %s, error : %v", tt.name, err) } got := string(b) if diff := cmp.Diff(got, expectedContent); diff != "" { - os.RemoveAll(topDir) t.Errorf( "format dir, unexpected result for test case: %s, path: %s, Expected: %s, Got: %s", tt.name, @@ -455,16 +434,7 @@ build { got) } } - - err = os.RemoveAll(topDir) - if err != nil { - t.Errorf( - "Failed to delete top level test directory for test case: %s, please clean before another test run. Error: %s", - tt.name, - err) - } } - } func TestHCL2Formatter_Format_Write(t *testing.T) { From 482a2c8232e50892c386868c1ed7be408ca7b868 Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Wed, 15 Jul 2020 23:30:36 +1200 Subject: [PATCH 010/212] Adding ebs-volume snapshot creation --- builder/amazon/ebsvolume/block_device.go | 2 + builder/amazon/ebsvolume/builder.go | 4 + builder/amazon/ebsvolume/builder.hcl2spec.go | 2 + .../ebsvolume/step_snapshot_ebs_volumes.go | 83 +++++++++++++++++++ .../ebsvolume/BlockDevice-not-required.mdx | 2 + 5 files changed, 93 insertions(+) create mode 100644 builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go diff --git a/builder/amazon/ebsvolume/block_device.go b/builder/amazon/ebsvolume/block_device.go index 49d1067c8..3c8480aa1 100644 --- a/builder/amazon/ebsvolume/block_device.go +++ b/builder/amazon/ebsvolume/block_device.go @@ -11,6 +11,8 @@ import ( type BlockDevice struct { awscommon.BlockDevice `mapstructure:",squash"` + // Create a Snapshot of this Volume and copy all tags. + SnapshotVolume bool `mapstructure:"snapshot_volume" required:"false"` // Key/value pair tags to apply to the volume. These are retained after the builder // completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see // [Build template data](#build-template-data) for more information. diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index 0afe9eb71..2a04e3ff2 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -318,6 +318,10 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) EnableAMISriovNetSupport: b.config.AMISriovNetSupport, EnableAMIENASupport: b.config.AMIENASupport, }, + &stepSnapshotEBSVolumes{ + VolumeMapping: b.config.VolumeMappings, + Ctx: b.config.ctx, + }, } // Run! diff --git a/builder/amazon/ebsvolume/builder.hcl2spec.go b/builder/amazon/ebsvolume/builder.hcl2spec.go index 241b45fd9..c4207ee22 100644 --- a/builder/amazon/ebsvolume/builder.hcl2spec.go +++ b/builder/amazon/ebsvolume/builder.hcl2spec.go @@ -23,6 +23,7 @@ type FlatBlockDevice struct { VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` } @@ -50,6 +51,7 @@ func (*FlatBlockDevice) HCL2Spec() map[string]hcldec.Spec { "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "snapshot_volume": &hcldec.AttrSpec{Name: "snapshot_volume", Type: cty.Bool, Required: false}, "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, } diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go new file mode 100644 index 000000000..417ce1581 --- /dev/null +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -0,0 +1,83 @@ +package ebsvolume + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer/builder/amazon/common" + "github.com/hashicorp/packer/helper/multistep" + "github.com/hashicorp/packer/packer" + "github.com/hashicorp/packer/template/interpolate" +) + +type stepSnapshotEBSVolumes struct { + VolumeMapping []BlockDevice + Ctx interpolate.Context +} + +func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { + ec2conn := state.Get("ec2").(*ec2.EC2) + instance := state.Get("instance").(*ec2.Instance) + ui := state.Get("ui").(packer.Ui) + snapshotsIds := make([]string, 0) + + for _, instanceBlockDevices := range instance.BlockDeviceMappings { + for _, configVolumeMapping := range s.VolumeMapping { + //Find the config entry for the instance blockDevice + if configVolumeMapping.DeviceName == *instanceBlockDevices.DeviceName { + if configVolumeMapping.SnapshotVolume != true { + continue + } + + ui.Message(fmt.Sprintf("Compiling list of tags to apply to snapshot from Volume %s...", *instanceBlockDevices.DeviceName)) + tags, err := awscommon.TagMap(configVolumeMapping.Tags).EC2Tags(s.Ctx, *ec2conn.Config.Region, state) + if err != nil { + err := fmt.Errorf("Error generating tags for device %s: %s", *instanceBlockDevices.DeviceName, err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + + tagSpec := &ec2.TagSpecification{ + ResourceType: aws.String("snapshot"), + Tags: tags, + } + + input := &ec2.CreateSnapshotInput{ + VolumeId: instanceBlockDevices.Ebs.VolumeId, + TagSpecifications: []*ec2.TagSpecification{tagSpec}, + } + snapshot, err := ec2conn.CreateSnapshot(input) + if err != nil { + err := fmt.Errorf("Error generating snapsot for volume %s: %s", *instanceBlockDevices.Ebs.VolumeId, err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + snapshotsIds = append(snapshotsIds, *snapshot.SnapshotId) + } + } + } + + ui.Say("Waiting for Snapshots to become ready...") + for _, snapID := range snapshotsIds { + ui.Message(fmt.Sprintf("Waiting for %s to be ready.", snapID)) + err := awscommon.WaitUntilSnapshotDone(ctx, ec2conn, snapID) + if err != nil { + err = fmt.Errorf("Error waiting for snapsot to become ready %s", err) + state.Put("error", err) + ui.Error(err.Error()) + ui.Message("Failed to wait") + return multistep.ActionHalt + } + ui.Message(fmt.Sprintf("Snapshot Ready: %s", snapID)) + } + + return multistep.ActionContinue +} + +func (s *stepSnapshotEBSVolumes) Cleanup(state multistep.StateBag) { + // No cleanup... +} diff --git a/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx b/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx index 9bccc2818..c00a6e377 100644 --- a/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx +++ b/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx @@ -1,5 +1,7 @@ +- `snapshot_volume` (bool) - Create a Snapshot of this Volume and copy all tags. + - `tags` (map[string]string) - Key/value pair tags to apply to the volume. These are retained after the builder completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see [Build template data](#build-template-data) for more information. From 7f0b41bb0eca14ad74b326615b9e585148c2769a Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Thu, 16 Jul 2020 15:21:34 +1200 Subject: [PATCH 011/212] Refactored SnapshotConfig Added Group and user permission to each snapshot --- builder/amazon/common/ami_config.go | 22 +---- builder/amazon/common/snapshot_config.go | 29 +++++++ builder/amazon/ebsvolume/block_device.go | 8 +- builder/amazon/ebsvolume/builder.hcl2spec.go | 12 ++- .../ebsvolume/step_snapshot_ebs_volumes.go | 84 +++++++++++++++++-- .../vsphere/common/output_config.hcl2spec.go | 4 +- .../vsphere/common/step_export.hcl2spec.go | 4 +- .../content/docs/builders/amazon/chroot.mdx | 2 + website/content/docs/builders/amazon/ebs.mdx | 2 + .../docs/builders/amazon/ebssurrogate.mdx | 2 + .../docs/builders/amazon/ebsvolume.mdx | 2 + .../content/docs/builders/amazon/index.mdx | 2 +- .../amazon/common/AMIConfig-not-required.mdx | 20 ----- .../common/SnapshotConfig-not-required.mdx | 21 +++++ .../builder/amazon/common/SnapshotConfig.mdx | 3 + .../ebsvolume/BlockDevice-not-required.mdx | 4 +- 16 files changed, 162 insertions(+), 59 deletions(-) create mode 100644 builder/amazon/common/snapshot_config.go create mode 100644 website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx create mode 100644 website/content/partials/builder/amazon/common/SnapshotConfig.mdx diff --git a/builder/amazon/common/ami_config.go b/builder/amazon/common/ami_config.go index d9596eb22..36b9ab571 100644 --- a/builder/amazon/common/ami_config.go +++ b/builder/amazon/common/ami_config.go @@ -135,26 +135,8 @@ type AMIConfig struct { // the intermediary AMI into any regions provided in `ami_regions`, then // delete the intermediary AMI. Default `false`. AMISkipBuildRegion bool `mapstructure:"skip_save_build_region"` - // Key/value pair tags to apply to snapshot. They will override AMI tags if - // already applied to snapshot. This is a [template - // engine](/docs/templates/legacy_json_templates/engine), see [Build template - // data](#build-template-data) for more information. - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false"` - // Same as [`snapshot_tags`](#snapshot_tags) but defined as a singular - // repeatable block containing a `key` and a `value` field. In HCL2 mode the - // [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - // will allow you to create those programatically. - SnapshotTag config.KeyValues `mapstructure:"snapshot_tag" required:"false"` - // A list of account IDs that have - // access to create volumes from the snapshot(s). By default no additional - // users other than the user creating the AMI has permissions to create - // volumes from the backing snapshot(s). - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false"` - // A list of groups that have access to - // create volumes from the snapshot(s). By default no groups have permission - // to create volumes from the snapshot(s). all will make the snapshot - // publicly accessible. - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false"` + + SnapshotConfig `mapstructure:",squash"` } func stringInSlice(s []string, searchstr string) bool { diff --git a/builder/amazon/common/snapshot_config.go b/builder/amazon/common/snapshot_config.go new file mode 100644 index 000000000..9e8065e39 --- /dev/null +++ b/builder/amazon/common/snapshot_config.go @@ -0,0 +1,29 @@ +//go:generate struct-markdown + +package common + +import "github.com/hashicorp/packer-plugin-sdk/template/config" + +// SnapshotConfig is for common configuration related to creating AMIs. +type SnapshotConfig struct { + // Key/value pair tags to apply to snapshot. They will override AMI tags if + // already applied to snapshot. This is a [template + // engine](/docs/templates/legacy_json_templates/engine), see [Build template + // data](#build-template-data) for more information. + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false"` + // Same as [`snapshot_tags`](#snapshot_tags) but defined as a singular + // repeatable block containing a `key` and a `value` field. In HCL2 mode the + // [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) + // will allow you to create those programatically. + SnapshotTag config.KeyValues `mapstructure:"snapshot_tag" required:"false"` + // A list of account IDs that have + // access to create volumes from the snapshot(s). By default no additional + // users other than the user creating the AMI has permissions to create + // volumes from the backing snapshot(s). + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false"` + // A list of groups that have access to + // create volumes from the snapshot(s). By default no groups have permission + // to create volumes from the snapshot(s). all will make the snapshot + // publicly accessible. + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false"` +} diff --git a/builder/amazon/ebsvolume/block_device.go b/builder/amazon/ebsvolume/block_device.go index 3c8480aa1..04953ee7e 100644 --- a/builder/amazon/ebsvolume/block_device.go +++ b/builder/amazon/ebsvolume/block_device.go @@ -11,8 +11,6 @@ import ( type BlockDevice struct { awscommon.BlockDevice `mapstructure:",squash"` - // Create a Snapshot of this Volume and copy all tags. - SnapshotVolume bool `mapstructure:"snapshot_volume" required:"false"` // Key/value pair tags to apply to the volume. These are retained after the builder // completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see // [Build template data](#build-template-data) for more information. @@ -22,6 +20,11 @@ type BlockDevice struct { // [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) // will allow you to create those programatically. Tag config.KeyValues `mapstructure:"tag" required:"false"` + + // Create a Snapshot of this Volume. + SnapshotVolume bool `mapstructure:"snapshot_volume" required:"false"` + + awscommon.SnapshotConfig `mapstructure:",squash"` } type BlockDevices []BlockDevice @@ -40,6 +43,7 @@ func (bds BlockDevices) Prepare(ctx *interpolate.Context) (errs []error) { for _, block := range bds { errs = append(errs, block.Tag.CopyOn(&block.Tags)...) + errs = append(errs, block.SnapshotTag.CopyOn(&block.SnapshotTags)...) if err := block.Prepare(ctx); err != nil { errs = append(errs, err) diff --git a/builder/amazon/ebsvolume/builder.hcl2spec.go b/builder/amazon/ebsvolume/builder.hcl2spec.go index c4207ee22..7ff6a2a82 100644 --- a/builder/amazon/ebsvolume/builder.hcl2spec.go +++ b/builder/amazon/ebsvolume/builder.hcl2spec.go @@ -23,9 +23,13 @@ type FlatBlockDevice struct { VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` } // FlatMapstructure returns a new FlatBlockDevice. @@ -51,9 +55,13 @@ func (*FlatBlockDevice) HCL2Spec() map[string]hcldec.Spec { "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "snapshot_volume": &hcldec.AttrSpec{Name: "snapshot_volume", Type: cty.Bool, Required: false}, "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_volume": &hcldec.AttrSpec{Name: "snapshot_volume", Type: cty.Bool, Required: false}, + "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, + "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, + "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, } return s } diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index 417ce1581..ee5035e5d 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -14,31 +14,35 @@ import ( type stepSnapshotEBSVolumes struct { VolumeMapping []BlockDevice - Ctx interpolate.Context + //Map of SnapshotID: BlockDevice, Where *BlockDevice is in VolumeMapping + SnapshotMap map[string]*BlockDevice + Ctx interpolate.Context } func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { ec2conn := state.Get("ec2").(*ec2.EC2) instance := state.Get("instance").(*ec2.Instance) ui := state.Get("ui").(packer.Ui) - snapshotsIds := make([]string, 0) + s.SnapshotMap = make(map[string]*BlockDevice) for _, instanceBlockDevices := range instance.BlockDeviceMappings { for _, configVolumeMapping := range s.VolumeMapping { //Find the config entry for the instance blockDevice if configVolumeMapping.DeviceName == *instanceBlockDevices.DeviceName { + //Skip Volumes that are not set to create snapshot if configVolumeMapping.SnapshotVolume != true { continue } ui.Message(fmt.Sprintf("Compiling list of tags to apply to snapshot from Volume %s...", *instanceBlockDevices.DeviceName)) - tags, err := awscommon.TagMap(configVolumeMapping.Tags).EC2Tags(s.Ctx, *ec2conn.Config.Region, state) + tags, err := awscommon.TagMap(configVolumeMapping.SnapshotTags).EC2Tags(s.Ctx, *ec2conn.Config.Region, state) if err != nil { - err := fmt.Errorf("Error generating tags for device %s: %s", *instanceBlockDevices.DeviceName, err) + err := fmt.Errorf("Error generating tags for snapshot %s: %s", *instanceBlockDevices.DeviceName, err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } + tags.Report(ui) tagSpec := &ec2.TagSpecification{ ResourceType: aws.String("snapshot"), @@ -46,23 +50,31 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB } input := &ec2.CreateSnapshotInput{ - VolumeId: instanceBlockDevices.Ebs.VolumeId, + VolumeId: aws.String(*instanceBlockDevices.Ebs.VolumeId), TagSpecifications: []*ec2.TagSpecification{tagSpec}, } + + //Dont try to set an empty tag spec + if len(tags) == 0 { + input.TagSpecifications = nil + } + + ui.Message(fmt.Sprintf("Requesting snapshot of volume: %s...", *instanceBlockDevices.Ebs.VolumeId)) snapshot, err := ec2conn.CreateSnapshot(input) - if err != nil { + if err != nil || snapshot == nil { err := fmt.Errorf("Error generating snapsot for volume %s: %s", *instanceBlockDevices.Ebs.VolumeId, err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - snapshotsIds = append(snapshotsIds, *snapshot.SnapshotId) + ui.Message(fmt.Sprintf("Requested Snapshot of Volume %s: %s", *instanceBlockDevices.Ebs.VolumeId, *snapshot.SnapshotId)) + s.SnapshotMap[*snapshot.SnapshotId] = &configVolumeMapping } } } ui.Say("Waiting for Snapshots to become ready...") - for _, snapID := range snapshotsIds { + for snapID := range s.SnapshotMap { ui.Message(fmt.Sprintf("Waiting for %s to be ready.", snapID)) err := awscommon.WaitUntilSnapshotDone(ctx, ec2conn, snapID) if err != nil { @@ -75,6 +87,62 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB ui.Message(fmt.Sprintf("Snapshot Ready: %s", snapID)) } + //Attach User and Group permissions to snapshots + ui.Say("Setting User/Group Permissions for Snapshots...") + for snapID, bd := range s.SnapshotMap { + snapshotOptions := make(map[string]*ec2.ModifySnapshotAttributeInput) + + if len(bd.SnapshotGroups) > 0 { + groups := make([]*string, len(bd.SnapshotGroups)) + addsSnapshot := make([]*ec2.CreateVolumePermission, len(bd.SnapshotGroups)) + + addSnapshotGroups := &ec2.ModifySnapshotAttributeInput{ + CreateVolumePermission: &ec2.CreateVolumePermissionModifications{}, + } + + for i, g := range bd.SnapshotGroups { + groups[i] = aws.String(g) + addsSnapshot[i] = &ec2.CreateVolumePermission{ + Group: aws.String(g), + } + } + + addSnapshotGroups.GroupNames = groups + addSnapshotGroups.CreateVolumePermission.Add = addsSnapshot + snapshotOptions["groups"] = addSnapshotGroups + + } + + if len(bd.SnapshotUsers) > 0 { + users := make([]*string, len(bd.SnapshotUsers)) + addsSnapshot := make([]*ec2.CreateVolumePermission, len(bd.SnapshotUsers)) + for i, u := range bd.SnapshotUsers { + users[i] = aws.String(u) + addsSnapshot[i] = &ec2.CreateVolumePermission{UserId: aws.String(u)} + } + + snapshotOptions["users"] = &ec2.ModifySnapshotAttributeInput{ + UserIds: users, + CreateVolumePermission: &ec2.CreateVolumePermissionModifications{ + Add: addsSnapshot, + }, + } + } + + //Todo: Copy to other regions and repeat this block in all regions. + for name, input := range snapshotOptions { + ui.Message(fmt.Sprintf("Modifying: %s", name)) + input.SnapshotId = &snapID + _, err := ec2conn.ModifySnapshotAttribute(input) + if err != nil { + err := fmt.Errorf("Error modify snapshot attributes: %s", err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + } + } + return multistep.ActionContinue } diff --git a/builder/vsphere/common/output_config.hcl2spec.go b/builder/vsphere/common/output_config.hcl2spec.go index 13847fcbc..0cec88325 100644 --- a/builder/vsphere/common/output_config.hcl2spec.go +++ b/builder/vsphere/common/output_config.hcl2spec.go @@ -3,7 +3,7 @@ package common import ( - "os" + "io/fs" "github.com/hashicorp/hcl/v2/hcldec" "github.com/zclconf/go-cty/cty" @@ -13,7 +13,7 @@ import ( // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatOutputConfig struct { OutputDir *string `mapstructure:"output_directory" required:"false" cty:"output_directory" hcl:"output_directory"` - DirPerm *os.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` + DirPerm *fs.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` } // FlatMapstructure returns a new FlatOutputConfig. diff --git a/builder/vsphere/common/step_export.hcl2spec.go b/builder/vsphere/common/step_export.hcl2spec.go index f7d24dbbe..21824d5d5 100644 --- a/builder/vsphere/common/step_export.hcl2spec.go +++ b/builder/vsphere/common/step_export.hcl2spec.go @@ -3,7 +3,7 @@ package common import ( - "os" + "io/fs" "github.com/hashicorp/hcl/v2/hcldec" "github.com/zclconf/go-cty/cty" @@ -17,7 +17,7 @@ type FlatExportConfig struct { Images *bool `mapstructure:"images" cty:"images" hcl:"images"` Manifest *string `mapstructure:"manifest" cty:"manifest" hcl:"manifest"` OutputDir *string `mapstructure:"output_directory" required:"false" cty:"output_directory" hcl:"output_directory"` - DirPerm *os.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` + DirPerm *fs.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` Options []string `mapstructure:"options" cty:"options" hcl:"options"` } diff --git a/website/content/docs/builders/amazon/chroot.mdx b/website/content/docs/builders/amazon/chroot.mdx index f11f038ab..077e62474 100644 --- a/website/content/docs/builders/amazon/chroot.mdx +++ b/website/content/docs/builders/amazon/chroot.mdx @@ -85,6 +85,8 @@ builders. @include 'builder/amazon/common/AMIConfig-not-required.mdx' +@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' + ### Block Devices Configuration Block devices can be nested in the diff --git a/website/content/docs/builders/amazon/ebs.mdx b/website/content/docs/builders/amazon/ebs.mdx index 432bf8667..e7034621f 100644 --- a/website/content/docs/builders/amazon/ebs.mdx +++ b/website/content/docs/builders/amazon/ebs.mdx @@ -59,6 +59,8 @@ necessary for this build to succeed and can be found further down the page. @include 'builder/amazon/common/AMIConfig-not-required.mdx' +@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' + ### Access Configuration #### Required: diff --git a/website/content/docs/builders/amazon/ebssurrogate.mdx b/website/content/docs/builders/amazon/ebssurrogate.mdx index 9e19279cb..a253fb507 100644 --- a/website/content/docs/builders/amazon/ebssurrogate.mdx +++ b/website/content/docs/builders/amazon/ebssurrogate.mdx @@ -55,6 +55,8 @@ necessary for this build to succeed and can be found further down the page. @include 'builder/amazon/common/AMIConfig-not-required.mdx' +@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' + ### Access Configuration #### Required: diff --git a/website/content/docs/builders/amazon/ebsvolume.mdx b/website/content/docs/builders/amazon/ebsvolume.mdx index 52bba564e..b388abccf 100644 --- a/website/content/docs/builders/amazon/ebsvolume.mdx +++ b/website/content/docs/builders/amazon/ebsvolume.mdx @@ -96,6 +96,8 @@ Block devices can be nested in the @include 'builder/amazon/ebsvolume/BlockDevice-not-required.mdx' +@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' + ### Run Configuration #### Required: diff --git a/website/content/docs/builders/amazon/index.mdx b/website/content/docs/builders/amazon/index.mdx index d5e34da1a..f439d4439 100644 --- a/website/content/docs/builders/amazon/index.mdx +++ b/website/content/docs/builders/amazon/index.mdx @@ -44,7 +44,7 @@ filesystem and data. - [amazon-ebsvolume](/docs/builders/amazon/ebsvolume) - Create EBS volumes by launching a source AMI with block devices mapped. Provision the - instance, then destroy it, retaining the EBS volumes. + instance, then destroy it, retaining the EBS volumes and or Snapshot. diff --git a/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx b/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx index 72d84bf6c..c07f415c9 100644 --- a/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx +++ b/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx @@ -116,23 +116,3 @@ which it will not convert to an AMI in the build region. It will copy the intermediary AMI into any regions provided in `ami_regions`, then delete the intermediary AMI. Default `false`. - -- `snapshot_tags` (map[string]string) - Key/value pair tags to apply to snapshot. They will override AMI tags if - already applied to snapshot. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `snapshot_tag` ([]{key string, value string}) - Same as [`snapshot_tags`](#snapshot_tags) but defined as a singular - repeatable block containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `snapshot_users` ([]string) - A list of account IDs that have - access to create volumes from the snapshot(s). By default no additional - users other than the user creating the AMI has permissions to create - volumes from the backing snapshot(s). - -- `snapshot_groups` ([]string) - A list of groups that have access to - create volumes from the snapshot(s). By default no groups have permission - to create volumes from the snapshot(s). all will make the snapshot - publicly accessible. diff --git a/website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx b/website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx new file mode 100644 index 000000000..ebfd16e78 --- /dev/null +++ b/website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx @@ -0,0 +1,21 @@ + + +- `snapshot_tags` (map[string]string) - Key/value pair tags to apply to snapshot. They will override AMI tags if + already applied to snapshot. This is a [template + engine](/docs/templates/legacy_json_templates/engine), see [Build template + data](#build-template-data) for more information. + +- `snapshot_tag` ([]{key string, value string}) - Same as [`snapshot_tags`](#snapshot_tags) but defined as a singular + repeatable block containing a `key` and a `value` field. In HCL2 mode the + [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) + will allow you to create those programatically. + +- `snapshot_users` ([]string) - A list of account IDs that have + access to create volumes from the snapshot(s). By default no additional + users other than the user creating the AMI has permissions to create + volumes from the backing snapshot(s). + +- `snapshot_groups` ([]string) - A list of groups that have access to + create volumes from the snapshot(s). By default no groups have permission + to create volumes from the snapshot(s). all will make the snapshot + publicly accessible. diff --git a/website/content/partials/builder/amazon/common/SnapshotConfig.mdx b/website/content/partials/builder/amazon/common/SnapshotConfig.mdx new file mode 100644 index 000000000..9ed3d99da --- /dev/null +++ b/website/content/partials/builder/amazon/common/SnapshotConfig.mdx @@ -0,0 +1,3 @@ + + +SnapshotConfig is for common configuration related to creating AMIs. diff --git a/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx b/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx index c00a6e377..fbeffd139 100644 --- a/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx +++ b/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx @@ -1,7 +1,5 @@ -- `snapshot_volume` (bool) - Create a Snapshot of this Volume and copy all tags. - - `tags` (map[string]string) - Key/value pair tags to apply to the volume. These are retained after the builder completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see [Build template data](#build-template-data) for more information. @@ -10,3 +8,5 @@ containing a `key` and a `value` field. In HCL2 mode the [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) will allow you to create those programatically. + +- `snapshot_volume` (bool) - Create a Snapshot of this Volume. From 3e754c9f3fc9665416024c29e9f93c92b4997a0d Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Thu, 1 Oct 2020 15:28:57 +1300 Subject: [PATCH 012/212] Using new Polling config for snapshot step --- builder/amazon/ebsvolume/builder.go | 1 + builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index 2a04e3ff2..1984f4cb0 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -319,6 +319,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) EnableAMIENASupport: b.config.AMIENASupport, }, &stepSnapshotEBSVolumes{ + PollingConfig: b.config.PollingConfig, VolumeMapping: b.config.VolumeMappings, Ctx: b.config.ctx, }, diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index ee5035e5d..ad3a00331 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -13,6 +13,7 @@ import ( ) type stepSnapshotEBSVolumes struct { + PollingConfig *awscommon.AWSPollingConfig VolumeMapping []BlockDevice //Map of SnapshotID: BlockDevice, Where *BlockDevice is in VolumeMapping SnapshotMap map[string]*BlockDevice @@ -76,7 +77,7 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB ui.Say("Waiting for Snapshots to become ready...") for snapID := range s.SnapshotMap { ui.Message(fmt.Sprintf("Waiting for %s to be ready.", snapID)) - err := awscommon.WaitUntilSnapshotDone(ctx, ec2conn, snapID) + err := s.PollingConfig.WaitUntilSnapshotDone(ctx, ec2conn, snapID) if err != nil { err = fmt.Errorf("Error waiting for snapsot to become ready %s", err) state.Put("error", err) From 0f83ba6ee63887c26b0b19ce9f6a20fe64380bfc Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Thu, 1 Oct 2020 16:24:34 +1300 Subject: [PATCH 013/212] Removed Rouge refrence to AMI creation in volume builder --- website/content/docs/builders/amazon/ebsvolume.mdx | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/website/content/docs/builders/amazon/ebsvolume.mdx b/website/content/docs/builders/amazon/ebsvolume.mdx index b388abccf..814449764 100644 --- a/website/content/docs/builders/amazon/ebsvolume.mdx +++ b/website/content/docs/builders/amazon/ebsvolume.mdx @@ -69,20 +69,6 @@ necessary for this build to succeed and can be found further down the page. @include 'builder/amazon/common/AWSPollingConfig-not-required.mdx' -### AMI Configuration - -#### Optional: - -- `snapshot_groups` (array of strings) - A list of groups that have access to - create volumes from the snapshot(s). By default no groups have permission - to create volumes from the snapshot(s). `all` will make the snapshot - publicly accessible. - -- `snapshot_users` (array of strings) - A list of account IDs that have - access to create volumes from the snapshot(s). By default no additional - users other than the user creating the AMI has permissions to create - volumes from the backing snapshot(s). - ### Block Devices Configuration Block devices can be nested in the From b199ce9a222bf40a1b6bb4e28478efc12b9db0dd Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Thu, 1 Oct 2020 17:23:09 +1300 Subject: [PATCH 014/212] Added snapshots to artifacts Increased Snapshot wait timeout --- builder/amazon/common/state.go | 9 ++++++++- builder/amazon/ebsvolume/artifact.go | 16 ++++++++++++++-- builder/amazon/ebsvolume/builder.go | 1 + .../ebsvolume/step_snapshot_ebs_volumes.go | 10 ++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/builder/amazon/common/state.go b/builder/amazon/common/state.go index 1ceacef84..a00443e64 100644 --- a/builder/amazon/common/state.go +++ b/builder/amazon/common/state.go @@ -154,10 +154,17 @@ func (w *AWSPollingConfig) WaitUntilSnapshotDone(ctx aws.Context, conn *ec2.EC2, SnapshotIds: []*string{&snapshotID}, } + waitOpts := w.getWaiterOptions() + if len(waitOpts) == 0 { + // Bump this default to 30 minutes. + // Large snapshots can take a long time for the copy to s3 + waitOpts = append(waitOpts, request.WithWaiterMaxAttempts(120)) + } + err := conn.WaitUntilSnapshotCompletedWithContext( ctx, &snapInput, - w.getWaiterOptions()...) + waitOpts...) return err } diff --git a/builder/amazon/ebsvolume/artifact.go b/builder/amazon/ebsvolume/artifact.go index 683bcbbd3..a6e56060c 100644 --- a/builder/amazon/ebsvolume/artifact.go +++ b/builder/amazon/ebsvolume/artifact.go @@ -13,11 +13,15 @@ import ( // map of region to list of volume IDs type EbsVolumes map[string][]string +// map of region to list of snapshot IDs +type EbsSnapshots map[string][]string + // Artifact is an artifact implementation that contains built AMIs. type Artifact struct { // A map of regions to EBS Volume IDs. Volumes EbsVolumes - + // A map of regions to EBS Snapshot IDs. + Snapshots EbsSnapshots // BuilderId is the unique ID for the builder that created this AMI BuilderIdValue string @@ -40,13 +44,21 @@ func (*Artifact) Files() []string { // returns a sorted list of region:ID pairs func (a *Artifact) idList() []string { - parts := make([]string, 0, len(a.Volumes)) + + parts := make([]string, 0, len(a.Volumes)+len(a.Snapshots)) + for region, volumeIDs := range a.Volumes { for _, volumeID := range volumeIDs { parts = append(parts, fmt.Sprintf("%s:%s", region, volumeID)) } } + for region, snapshotIDs := range a.Snapshots { + for _, snapshotID := range snapshotIDs { + parts = append(parts, fmt.Sprintf("%s:%s", region, snapshotID)) + } + } + sort.Strings(parts) return parts } diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index 1984f4cb0..6e43ad67d 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -337,6 +337,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) // Build the artifact and return it artifact := &Artifact{ Volumes: state.Get("ebsvolumes").(EbsVolumes), + Snapshots: state.Get("ebssnapshots").(EbsSnapshots), BuilderIdValue: BuilderId, Conn: ec2conn, StateData: map[string]interface{}{"generated_data": state.Get("generated_data")}, diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index ad3a00331..e234013c0 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -144,6 +144,16 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB } } + //Record all snapshots in current Region. + snapshots := make(EbsSnapshots) + for snapID := range s.SnapshotMap { + snapshots[*ec2conn.Config.Region] = append( + snapshots[*ec2conn.Config.Region], + snapID) + } + //Records artifacts + state.Put("ebssnapshots", snapshots) + return multistep.ActionContinue } From ca0b11028eec8c241a19e32cd94e4b7462694167 Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Fri, 23 Oct 2020 18:33:34 +1300 Subject: [PATCH 015/212] Started instramenting some functions and building out unit tests for snapshot step. Added some basic config tests. --- builder/amazon/chroot/builder.hcl2spec.go | 281 ++++---- builder/amazon/common/state.go | 2 +- builder/amazon/common/state.hcl2spec.go | 33 - builder/amazon/ebs/builder.hcl2spec.go | 557 ++++++++------- .../amazon/ebssurrogate/builder.hcl2spec.go | 645 +++++++++--------- builder/amazon/ebsvolume/builder.go | 9 +- builder/amazon/ebsvolume/builder.hcl2spec.go | 545 ++++++++------- builder/amazon/ebsvolume/builder_test.go | 44 +- .../ebsvolume/step_snapshot_ebs_volumes.go | 19 +- .../step_snapshot_ebs_volumes_test.go | 92 +++ builder/amazon/instance/builder.hcl2spec.go | 577 ++++++++-------- 11 files changed, 1449 insertions(+), 1355 deletions(-) delete mode 100644 builder/amazon/common/state.hcl2spec.go create mode 100644 builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go diff --git a/builder/amazon/chroot/builder.hcl2spec.go b/builder/amazon/chroot/builder.hcl2spec.go index f00c35e65..81434dfe9 100644 --- a/builder/amazon/chroot/builder.hcl2spec.go +++ b/builder/amazon/chroot/builder.hcl2spec.go @@ -1,7 +1,6 @@ // Code generated by "mapstructure-to-hcl2 -type Config,BlockDevices,BlockDevice"; DO NOT EDIT. package chroot - import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -12,156 +11,156 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" hcl2-schema-generator:"ami_block_device_mappings,direct" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - ChrootMounts [][]string `mapstructure:"chroot_mounts" required:"false" cty:"chroot_mounts" hcl:"chroot_mounts"` - CommandWrapper *string `mapstructure:"command_wrapper" required:"false" cty:"command_wrapper" hcl:"command_wrapper"` - CopyFiles []string `mapstructure:"copy_files" required:"false" cty:"copy_files" hcl:"copy_files"` - DevicePath *string `mapstructure:"device_path" required:"false" cty:"device_path" hcl:"device_path"` - NVMEDevicePath *string `mapstructure:"nvme_device_path" required:"false" cty:"nvme_device_path" hcl:"nvme_device_path"` - FromScratch *bool `mapstructure:"from_scratch" required:"false" cty:"from_scratch" hcl:"from_scratch"` - MountOptions []string `mapstructure:"mount_options" required:"false" cty:"mount_options" hcl:"mount_options"` - MountPartition *string `mapstructure:"mount_partition" required:"false" cty:"mount_partition" hcl:"mount_partition"` - MountPath *string `mapstructure:"mount_path" required:"false" cty:"mount_path" hcl:"mount_path"` - PostMountCommands []string `mapstructure:"post_mount_commands" required:"false" cty:"post_mount_commands" hcl:"post_mount_commands"` - PreMountCommands []string `mapstructure:"pre_mount_commands" required:"false" cty:"pre_mount_commands" hcl:"pre_mount_commands"` - RootDeviceName *string `mapstructure:"root_device_name" required:"false" cty:"root_device_name" hcl:"root_device_name"` - RootVolumeSize *int64 `mapstructure:"root_volume_size" required:"false" cty:"root_volume_size" hcl:"root_volume_size"` - RootVolumeType *string `mapstructure:"root_volume_type" required:"false" cty:"root_volume_type" hcl:"root_volume_type"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - RootVolumeTags map[string]string `mapstructure:"root_volume_tags" required:"false" cty:"root_volume_tags" hcl:"root_volume_tags"` - RootVolumeTag []config.FlatKeyValue `mapstructure:"root_volume_tag" required:"false" cty:"root_volume_tag" hcl:"root_volume_tag"` - RootVolumeEncryptBoot *bool `mapstructure:"root_volume_encrypt_boot" required:"false" cty:"root_volume_encrypt_boot" hcl:"root_volume_encrypt_boot"` - RootVolumeKmsKeyId *string `mapstructure:"root_volume_kms_key_id" required:"false" cty:"root_volume_kms_key_id" hcl:"root_volume_kms_key_id"` - Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" hcl2-schema-generator:"ami_block_device_mappings,direct" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + ChrootMounts [][]string `mapstructure:"chroot_mounts" required:"false" cty:"chroot_mounts" hcl:"chroot_mounts"` + CommandWrapper *string `mapstructure:"command_wrapper" required:"false" cty:"command_wrapper" hcl:"command_wrapper"` + CopyFiles []string `mapstructure:"copy_files" required:"false" cty:"copy_files" hcl:"copy_files"` + DevicePath *string `mapstructure:"device_path" required:"false" cty:"device_path" hcl:"device_path"` + NVMEDevicePath *string `mapstructure:"nvme_device_path" required:"false" cty:"nvme_device_path" hcl:"nvme_device_path"` + FromScratch *bool `mapstructure:"from_scratch" required:"false" cty:"from_scratch" hcl:"from_scratch"` + MountOptions []string `mapstructure:"mount_options" required:"false" cty:"mount_options" hcl:"mount_options"` + MountPartition *string `mapstructure:"mount_partition" required:"false" cty:"mount_partition" hcl:"mount_partition"` + MountPath *string `mapstructure:"mount_path" required:"false" cty:"mount_path" hcl:"mount_path"` + PostMountCommands []string `mapstructure:"post_mount_commands" required:"false" cty:"post_mount_commands" hcl:"post_mount_commands"` + PreMountCommands []string `mapstructure:"pre_mount_commands" required:"false" cty:"pre_mount_commands" hcl:"pre_mount_commands"` + RootDeviceName *string `mapstructure:"root_device_name" required:"false" cty:"root_device_name" hcl:"root_device_name"` + RootVolumeSize *int64 `mapstructure:"root_volume_size" required:"false" cty:"root_volume_size" hcl:"root_volume_size"` + RootVolumeType *string `mapstructure:"root_volume_type" required:"false" cty:"root_volume_type" hcl:"root_volume_type"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + RootVolumeTags map[string]string `mapstructure:"root_volume_tags" required:"false" cty:"root_volume_tags" hcl:"root_volume_tags"` + RootVolumeTag []config.FlatKeyValue `mapstructure:"root_volume_tag" required:"false" cty:"root_volume_tag" hcl:"root_volume_tag"` + RootVolumeEncryptBoot *bool `mapstructure:"root_volume_encrypt_boot" required:"false" cty:"root_volume_encrypt_boot" hcl:"root_volume_encrypt_boot"` + RootVolumeKmsKeyId *string `mapstructure:"root_volume_kms_key_id" required:"false" cty:"root_volume_kms_key_id" hcl:"root_volume_kms_key_id"` + Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) +return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, - "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, - "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, - "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, - "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, - "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, - "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, - "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, - "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, - "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, - "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, - "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, - "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, - "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, - "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, - "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, - "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, - "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, - "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, - "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, - "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, - "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, - "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, - "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, - "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "chroot_mounts": &hcldec.AttrSpec{Name: "chroot_mounts", Type: cty.List(cty.List(cty.String)), Required: false}, - "command_wrapper": &hcldec.AttrSpec{Name: "command_wrapper", Type: cty.String, Required: false}, - "copy_files": &hcldec.AttrSpec{Name: "copy_files", Type: cty.List(cty.String), Required: false}, - "device_path": &hcldec.AttrSpec{Name: "device_path", Type: cty.String, Required: false}, - "nvme_device_path": &hcldec.AttrSpec{Name: "nvme_device_path", Type: cty.String, Required: false}, - "from_scratch": &hcldec.AttrSpec{Name: "from_scratch", Type: cty.Bool, Required: false}, - "mount_options": &hcldec.AttrSpec{Name: "mount_options", Type: cty.List(cty.String), Required: false}, - "mount_partition": &hcldec.AttrSpec{Name: "mount_partition", Type: cty.String, Required: false}, - "mount_path": &hcldec.AttrSpec{Name: "mount_path", Type: cty.String, Required: false}, - "post_mount_commands": &hcldec.AttrSpec{Name: "post_mount_commands", Type: cty.List(cty.String), Required: false}, - "pre_mount_commands": &hcldec.AttrSpec{Name: "pre_mount_commands", Type: cty.List(cty.String), Required: false}, - "root_device_name": &hcldec.AttrSpec{Name: "root_device_name", Type: cty.String, Required: false}, - "root_volume_size": &hcldec.AttrSpec{Name: "root_volume_size", Type: cty.Number, Required: false}, - "root_volume_type": &hcldec.AttrSpec{Name: "root_volume_type", Type: cty.String, Required: false}, - "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "root_volume_tags": &hcldec.AttrSpec{Name: "root_volume_tags", Type: cty.Map(cty.String), Required: false}, - "root_volume_tag": &hcldec.BlockListSpec{TypeName: "root_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "root_volume_encrypt_boot": &hcldec.AttrSpec{Name: "root_volume_encrypt_boot", Type: cty.Bool, Required: false}, - "root_volume_kms_key_id": &hcldec.AttrSpec{Name: "root_volume_kms_key_id", Type: cty.String, Required: false}, - "ami_architecture": &hcldec.AttrSpec{Name: "ami_architecture", Type: cty.String, Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, + "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, + "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, + "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, + "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, + "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, + "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, + "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, + "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, + "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, + "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, + "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, + "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, + "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, + "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, + "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, + "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, + "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, + "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, + "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, + "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, + "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, + "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, + "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, + "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, + "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, + "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, + "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, + "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, + "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, + "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, + "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, + "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "chroot_mounts": &hcldec.AttrSpec{Name:"chroot_mounts", Type:cty.List(cty.List(cty.String)), Required:false}, + "command_wrapper": &hcldec.AttrSpec{Name:"command_wrapper", Type:cty.String, Required:false}, + "copy_files": &hcldec.AttrSpec{Name:"copy_files", Type:cty.List(cty.String), Required:false}, + "device_path": &hcldec.AttrSpec{Name:"device_path", Type:cty.String, Required:false}, + "nvme_device_path": &hcldec.AttrSpec{Name:"nvme_device_path", Type:cty.String, Required:false}, + "from_scratch": &hcldec.AttrSpec{Name:"from_scratch", Type:cty.Bool, Required:false}, + "mount_options": &hcldec.AttrSpec{Name:"mount_options", Type:cty.List(cty.String), Required:false}, + "mount_partition": &hcldec.AttrSpec{Name:"mount_partition", Type:cty.String, Required:false}, + "mount_path": &hcldec.AttrSpec{Name:"mount_path", Type:cty.String, Required:false}, + "post_mount_commands": &hcldec.AttrSpec{Name:"post_mount_commands", Type:cty.List(cty.String), Required:false}, + "pre_mount_commands": &hcldec.AttrSpec{Name:"pre_mount_commands", Type:cty.List(cty.String), Required:false}, + "root_device_name": &hcldec.AttrSpec{Name:"root_device_name", Type:cty.String, Required:false}, + "root_volume_size": &hcldec.AttrSpec{Name:"root_volume_size", Type:cty.Number, Required:false}, + "root_volume_type": &hcldec.AttrSpec{Name:"root_volume_type", Type:cty.String, Required:false}, + "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "root_volume_tags": &hcldec.AttrSpec{Name:"root_volume_tags", Type:cty.Map(cty.String), Required:false}, + "root_volume_tag": &hcldec.BlockListSpec{TypeName: "root_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "root_volume_encrypt_boot": &hcldec.AttrSpec{Name:"root_volume_encrypt_boot", Type:cty.Bool, Required:false}, + "root_volume_kms_key_id": &hcldec.AttrSpec{Name:"root_volume_kms_key_id", Type:cty.String, Required:false}, + "ami_architecture": &hcldec.AttrSpec{Name:"ami_architecture", Type:cty.String, Required:false}, +} +return s } diff --git a/builder/amazon/common/state.go b/builder/amazon/common/state.go index a00443e64..74010658e 100644 --- a/builder/amazon/common/state.go +++ b/builder/amazon/common/state.go @@ -149,7 +149,7 @@ func (w *AWSPollingConfig) WaitUntilVolumeAvailable(ctx aws.Context, conn *ec2.E return err } -func (w *AWSPollingConfig) WaitUntilSnapshotDone(ctx aws.Context, conn *ec2.EC2, snapshotID string) error { +func (w *AWSPollingConfig) WaitUntilSnapshotDone(ctx aws.Context, conn ec2iface.EC2API, snapshotID string) error { snapInput := ec2.DescribeSnapshotsInput{ SnapshotIds: []*string{&snapshotID}, } diff --git a/builder/amazon/common/state.hcl2spec.go b/builder/amazon/common/state.hcl2spec.go deleted file mode 100644 index a3ec85817..000000000 --- a/builder/amazon/common/state.hcl2spec.go +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by "mapstructure-to-hcl2 -type AWSPollingConfig"; DO NOT EDIT. - -package common - -import ( - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/zclconf/go-cty/cty" -) - -// FlatAWSPollingConfig is an auto-generated flat version of AWSPollingConfig. -// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. -type FlatAWSPollingConfig struct { - MaxAttempts *int `mapstructure:"max_attempts" required:"false" cty:"max_attempts" hcl:"max_attempts"` - DelaySeconds *int `mapstructure:"delay_seconds" required:"false" cty:"delay_seconds" hcl:"delay_seconds"` -} - -// FlatMapstructure returns a new FlatAWSPollingConfig. -// FlatAWSPollingConfig is an auto-generated flat version of AWSPollingConfig. -// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. -func (*AWSPollingConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatAWSPollingConfig) -} - -// HCL2Spec returns the hcl spec of a AWSPollingConfig. -// This spec is used by HCL to read the fields of AWSPollingConfig. -// The decoded values from this spec will then be applied to a FlatAWSPollingConfig. -func (*FlatAWSPollingConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "max_attempts": &hcldec.AttrSpec{Name: "max_attempts", Type: cty.Number, Required: false}, - "delay_seconds": &hcldec.AttrSpec{Name: "delay_seconds", Type: cty.Number, Required: false}, - } - return s -} diff --git a/builder/amazon/ebs/builder.hcl2spec.go b/builder/amazon/ebs/builder.hcl2spec.go index 18a8a1ba2..0979e3a34 100644 --- a/builder/amazon/ebs/builder.hcl2spec.go +++ b/builder/amazon/ebs/builder.hcl2spec.go @@ -1,7 +1,6 @@ // Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. package ebs - import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -12,294 +11,294 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMISkipCreateImage *bool `mapstructure:"skip_create_ami" required:"false" cty:"skip_create_ami" hcl:"skip_create_ami"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` - VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` - VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` - NoEphemeral *bool `mapstructure:"no_ephemeral" required:"false" cty:"no_ephemeral" hcl:"no_ephemeral"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMISkipCreateImage *bool `mapstructure:"skip_create_ami" required:"false" cty:"skip_create_ami" hcl:"skip_create_ami"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` + VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` + VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` + NoEphemeral *bool `mapstructure:"no_ephemeral" required:"false" cty:"no_ephemeral" hcl:"no_ephemeral"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) +return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, - "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, - "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, - "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, - "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, - "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, - "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, - "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, - "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, - "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, - "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, - "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, - "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, - "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, - "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, - "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, - "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, - "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, - "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, - "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, - "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, - "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, - "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, - "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, - "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, - "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, - "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, - "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, - "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, - "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, - "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, - "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, - "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, - "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, - "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, - "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, - "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, - "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, - "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, - "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, - "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, - "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, - "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, - "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, - "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, - "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, - "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, - "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, - "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, - "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, - "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, - "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, - "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, - "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, - "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, - "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, - "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, - "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, - "skip_create_ami": &hcldec.AttrSpec{Name: "skip_create_ami", Type: cty.Bool, Required: false}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "run_volume_tags": &hcldec.AttrSpec{Name: "run_volume_tags", Type: cty.Map(cty.String), Required: false}, - "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, - "no_ephemeral": &hcldec.AttrSpec{Name: "no_ephemeral", Type: cty.Bool, Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, + "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, + "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, + "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, + "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, + "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, + "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, + "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, + "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, + "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, + "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, + "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, + "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, + "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, + "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, + "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, + "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, + "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, + "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, + "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, + "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, + "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, + "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, + "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, + "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, + "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, + "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, + "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, + "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, + "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, + "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, + "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, + "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, + "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, + "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, + "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, + "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, + "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, + "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, + "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, + "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, + "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, + "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, + "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, + "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, + "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, + "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, + "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, + "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, + "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, + "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, + "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, + "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, + "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, + "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, + "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, + "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, + "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, + "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, + "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, + "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, + "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, + "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, + "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, + "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, + "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, + "skip_create_ami": &hcldec.AttrSpec{Name:"skip_create_ami", Type:cty.Bool, Required:false}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "run_volume_tags": &hcldec.AttrSpec{Name:"run_volume_tags", Type:cty.Map(cty.String), Required:false}, + "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, + "no_ephemeral": &hcldec.AttrSpec{Name:"no_ephemeral", Type:cty.Bool, Required:false}, +} +return s } diff --git a/builder/amazon/ebssurrogate/builder.hcl2spec.go b/builder/amazon/ebssurrogate/builder.hcl2spec.go index e837458c5..8790b2c17 100644 --- a/builder/amazon/ebssurrogate/builder.hcl2spec.go +++ b/builder/amazon/ebssurrogate/builder.hcl2spec.go @@ -1,7 +1,6 @@ // Code generated by "mapstructure-to-hcl2 -type Config,RootBlockDevice,BlockDevice"; DO NOT EDIT. package ebssurrogate - import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -12,372 +11,372 @@ import ( // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatBlockDevice struct { - DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` - DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` - Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` - IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` - NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` - SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` - Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` - VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` - VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` - VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` - KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - OmitFromArtifact *bool `mapstructure:"omit_from_artifact" cty:"omit_from_artifact" hcl:"omit_from_artifact"` + DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` + DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` + Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` + IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` + NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` + SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` + Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` + VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` + VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` + VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` + KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + OmitFromArtifact *bool `mapstructure:"omit_from_artifact" cty:"omit_from_artifact" hcl:"omit_from_artifact"` } // FlatMapstructure returns a new FlatBlockDevice. // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*BlockDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatBlockDevice) +return new(FlatBlockDevice) } // HCL2Spec returns the hcl spec of a BlockDevice. // This spec is used by HCL to read the fields of BlockDevice. // The decoded values from this spec will then be applied to a FlatBlockDevice. func (*FlatBlockDevice) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "delete_on_termination": &hcldec.AttrSpec{Name: "delete_on_termination", Type: cty.Bool, Required: false}, - "device_name": &hcldec.AttrSpec{Name: "device_name", Type: cty.String, Required: false}, - "encrypted": &hcldec.AttrSpec{Name: "encrypted", Type: cty.Bool, Required: false}, - "iops": &hcldec.AttrSpec{Name: "iops", Type: cty.Number, Required: false}, - "no_device": &hcldec.AttrSpec{Name: "no_device", Type: cty.Bool, Required: false}, - "snapshot_id": &hcldec.AttrSpec{Name: "snapshot_id", Type: cty.String, Required: false}, - "throughput": &hcldec.AttrSpec{Name: "throughput", Type: cty.Number, Required: false}, - "virtual_name": &hcldec.AttrSpec{Name: "virtual_name", Type: cty.String, Required: false}, - "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, - "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, - "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "omit_from_artifact": &hcldec.AttrSpec{Name: "omit_from_artifact", Type: cty.Bool, Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "delete_on_termination": &hcldec.AttrSpec{Name:"delete_on_termination", Type:cty.Bool, Required:false}, + "device_name": &hcldec.AttrSpec{Name:"device_name", Type:cty.String, Required:false}, + "encrypted": &hcldec.AttrSpec{Name:"encrypted", Type:cty.Bool, Required:false}, + "iops": &hcldec.AttrSpec{Name:"iops", Type:cty.Number, Required:false}, + "no_device": &hcldec.AttrSpec{Name:"no_device", Type:cty.Bool, Required:false}, + "snapshot_id": &hcldec.AttrSpec{Name:"snapshot_id", Type:cty.String, Required:false}, + "throughput": &hcldec.AttrSpec{Name:"throughput", Type:cty.Number, Required:false}, + "virtual_name": &hcldec.AttrSpec{Name:"virtual_name", Type:cty.String, Required:false}, + "volume_type": &hcldec.AttrSpec{Name:"volume_type", Type:cty.String, Required:false}, + "volume_size": &hcldec.AttrSpec{Name:"volume_size", Type:cty.Number, Required:false}, + "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, + "omit_from_artifact": &hcldec.AttrSpec{Name:"omit_from_artifact", Type:cty.Bool, Required:false}, +} +return s } // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - LaunchMappings []FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` - RootDevice *FlatRootBlockDevice `mapstructure:"ami_root_device" required:"true" cty:"ami_root_device" hcl:"ami_root_device"` - VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` - VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` - Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + LaunchMappings []FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` + RootDevice *FlatRootBlockDevice `mapstructure:"ami_root_device" required:"true" cty:"ami_root_device" hcl:"ami_root_device"` + VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` + VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` + Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) +return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, - "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, - "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, - "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, - "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, - "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, - "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, - "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, - "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, - "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, - "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, - "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, - "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, - "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, - "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, - "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, - "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, - "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, - "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, - "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, - "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, - "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, - "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, - "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, - "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, - "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, - "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, - "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, - "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, - "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, - "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, - "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, - "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, - "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, - "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, - "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, - "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, - "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, - "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, - "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, - "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, - "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, - "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, - "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, - "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, - "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, - "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, - "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, - "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, - "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, - "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, - "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, - "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, - "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, - "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, - "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, - "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, - "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, - "ami_root_device": &hcldec.BlockSpec{TypeName: "ami_root_device", Nested: hcldec.ObjectSpec((*FlatRootBlockDevice)(nil).HCL2Spec())}, - "run_volume_tags": &hcldec.AttrSpec{Name: "run_volume_tags", Type: cty.Map(cty.String), Required: false}, - "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, - "ami_architecture": &hcldec.AttrSpec{Name: "ami_architecture", Type: cty.String, Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, + "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, + "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, + "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, + "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, + "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, + "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, + "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, + "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, + "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, + "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, + "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, + "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, + "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, + "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, + "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, + "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, + "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, + "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, + "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, + "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, + "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, + "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, + "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, + "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, + "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, + "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, + "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, + "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, + "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, + "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, + "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, + "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, + "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, + "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, + "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, + "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, + "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, + "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, + "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, + "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, + "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, + "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, + "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, + "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, + "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, + "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, + "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, + "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, + "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, + "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, + "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, + "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, + "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, + "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, + "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, + "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, + "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, + "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, + "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, + "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, + "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, + "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, + "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, + "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, + "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, + "ami_root_device": &hcldec.BlockSpec{TypeName: "ami_root_device", Nested: hcldec.ObjectSpec((*FlatRootBlockDevice)(nil).HCL2Spec())}, + "run_volume_tags": &hcldec.AttrSpec{Name:"run_volume_tags", Type:cty.Map(cty.String), Required:false}, + "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, + "ami_architecture": &hcldec.AttrSpec{Name:"ami_architecture", Type:cty.String, Required:false}, +} +return s } // FlatRootBlockDevice is an auto-generated flat version of RootBlockDevice. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatRootBlockDevice struct { - SourceDeviceName *string `mapstructure:"source_device_name" cty:"source_device_name" hcl:"source_device_name"` - DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` - DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` - IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` - VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` - VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` + SourceDeviceName *string `mapstructure:"source_device_name" cty:"source_device_name" hcl:"source_device_name"` + DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` + DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` + IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` + VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` + VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` } // FlatMapstructure returns a new FlatRootBlockDevice. // FlatRootBlockDevice is an auto-generated flat version of RootBlockDevice. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*RootBlockDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatRootBlockDevice) +return new(FlatRootBlockDevice) } // HCL2Spec returns the hcl spec of a RootBlockDevice. // This spec is used by HCL to read the fields of RootBlockDevice. // The decoded values from this spec will then be applied to a FlatRootBlockDevice. func (*FlatRootBlockDevice) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "source_device_name": &hcldec.AttrSpec{Name: "source_device_name", Type: cty.String, Required: false}, - "device_name": &hcldec.AttrSpec{Name: "device_name", Type: cty.String, Required: false}, - "delete_on_termination": &hcldec.AttrSpec{Name: "delete_on_termination", Type: cty.Bool, Required: false}, - "iops": &hcldec.AttrSpec{Name: "iops", Type: cty.Number, Required: false}, - "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, - "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "source_device_name": &hcldec.AttrSpec{Name:"source_device_name", Type:cty.String, Required:false}, + "device_name": &hcldec.AttrSpec{Name:"device_name", Type:cty.String, Required:false}, + "delete_on_termination": &hcldec.AttrSpec{Name:"delete_on_termination", Type:cty.Bool, Required:false}, + "iops": &hcldec.AttrSpec{Name:"iops", Type:cty.Number, Required:false}, + "volume_type": &hcldec.AttrSpec{Name:"volume_type", Type:cty.String, Required:false}, + "volume_size": &hcldec.AttrSpec{Name:"volume_size", Type:cty.Number, Required:false}, +} +return s } diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index 6e43ad67d..b311cd1b8 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -123,16 +123,12 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { // Accumulate any errors var errs *packersdk.MultiError var warns []string + errs = packersdk.MultiErrorAppend(errs, b.config.VolumeRunTag.CopyOn(&b.config.VolumeRunTags)...) errs = packersdk.MultiErrorAppend(errs, b.config.AccessConfig.Prepare()...) errs = packersdk.MultiErrorAppend(errs, b.config.RunConfig.Prepare(&b.config.ctx)...) errs = packersdk.MultiErrorAppend(errs, b.config.launchBlockDevices.Prepare(&b.config.ctx)...) - - for _, d := range b.config.VolumeMappings { - if err := d.Prepare(&b.config.ctx); err != nil { - errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("AMIMapping: %s", err.Error())) - } - } + errs = packersdk.MultiErrorAppend(errs, b.config.VolumeMappings.Prepare(&b.config.ctx)...) b.config.launchBlockDevices = b.config.VolumeMappings if err != nil { @@ -321,6 +317,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) &stepSnapshotEBSVolumes{ PollingConfig: b.config.PollingConfig, VolumeMapping: b.config.VolumeMappings, + AccessConfig: b.config.AccessConfig, Ctx: b.config.ctx, }, } diff --git a/builder/amazon/ebsvolume/builder.hcl2spec.go b/builder/amazon/ebsvolume/builder.hcl2spec.go index 7ff6a2a82..caaec6ffd 100644 --- a/builder/amazon/ebsvolume/builder.hcl2spec.go +++ b/builder/amazon/ebsvolume/builder.hcl2spec.go @@ -1,7 +1,6 @@ // Code generated by "mapstructure-to-hcl2 -type Config,BlockDevice"; DO NOT EDIT. package ebsvolume - import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -12,305 +11,305 @@ import ( // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatBlockDevice struct { - DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` - DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` - Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` - IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` - NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` - SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` - Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` - VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` - VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` - VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` - KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` + DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` + Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` + IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` + NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` + SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` + Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` + VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` + VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` + VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` + KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` } // FlatMapstructure returns a new FlatBlockDevice. // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*BlockDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatBlockDevice) +return new(FlatBlockDevice) } // HCL2Spec returns the hcl spec of a BlockDevice. // This spec is used by HCL to read the fields of BlockDevice. // The decoded values from this spec will then be applied to a FlatBlockDevice. func (*FlatBlockDevice) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "delete_on_termination": &hcldec.AttrSpec{Name: "delete_on_termination", Type: cty.Bool, Required: false}, - "device_name": &hcldec.AttrSpec{Name: "device_name", Type: cty.String, Required: false}, - "encrypted": &hcldec.AttrSpec{Name: "encrypted", Type: cty.Bool, Required: false}, - "iops": &hcldec.AttrSpec{Name: "iops", Type: cty.Number, Required: false}, - "no_device": &hcldec.AttrSpec{Name: "no_device", Type: cty.Bool, Required: false}, - "snapshot_id": &hcldec.AttrSpec{Name: "snapshot_id", Type: cty.String, Required: false}, - "throughput": &hcldec.AttrSpec{Name: "throughput", Type: cty.Number, Required: false}, - "virtual_name": &hcldec.AttrSpec{Name: "virtual_name", Type: cty.String, Required: false}, - "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, - "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, - "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_volume": &hcldec.AttrSpec{Name: "snapshot_volume", Type: cty.Bool, Required: false}, - "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, - "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, - "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "delete_on_termination": &hcldec.AttrSpec{Name:"delete_on_termination", Type:cty.Bool, Required:false}, + "device_name": &hcldec.AttrSpec{Name:"device_name", Type:cty.String, Required:false}, + "encrypted": &hcldec.AttrSpec{Name:"encrypted", Type:cty.Bool, Required:false}, + "iops": &hcldec.AttrSpec{Name:"iops", Type:cty.Number, Required:false}, + "no_device": &hcldec.AttrSpec{Name:"no_device", Type:cty.Bool, Required:false}, + "snapshot_id": &hcldec.AttrSpec{Name:"snapshot_id", Type:cty.String, Required:false}, + "throughput": &hcldec.AttrSpec{Name:"throughput", Type:cty.Number, Required:false}, + "virtual_name": &hcldec.AttrSpec{Name:"virtual_name", Type:cty.String, Required:false}, + "volume_type": &hcldec.AttrSpec{Name:"volume_type", Type:cty.String, Required:false}, + "volume_size": &hcldec.AttrSpec{Name:"volume_size", Type:cty.Number, Required:false}, + "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, + "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_volume": &hcldec.AttrSpec{Name:"snapshot_volume", Type:cty.Bool, Required:false}, + "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, + "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, + "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, + "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, +} +return s } // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - VolumeMappings []FlatBlockDevice `mapstructure:"ebs_volumes" required:"false" cty:"ebs_volumes" hcl:"ebs_volumes"` - VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` - VolumeRunTag []config.FlatKeyValue `mapstructure:"run_volume_tag" cty:"run_volume_tag" hcl:"run_volume_tag"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + VolumeMappings []FlatBlockDevice `mapstructure:"ebs_volumes" required:"false" cty:"ebs_volumes" hcl:"ebs_volumes"` + VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` + VolumeRunTag []config.FlatKeyValue `mapstructure:"run_volume_tag" cty:"run_volume_tag" hcl:"run_volume_tag"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) +return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, - "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, - "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, - "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, - "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, - "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, - "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, - "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, - "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, - "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, - "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, - "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, - "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, - "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, - "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, - "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, - "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, - "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, - "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, - "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, - "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, - "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, - "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, - "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, - "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, - "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, - "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, - "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, - "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, - "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, - "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, - "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, - "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, - "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, - "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, - "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, - "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, - "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, - "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, - "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, - "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, - "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, - "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, - "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, - "ebs_volumes": &hcldec.BlockListSpec{TypeName: "ebs_volumes", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, - "run_volume_tags": &hcldec.AttrSpec{Name: "run_volume_tags", Type: cty.Map(cty.String), Required: false}, - "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - } - return s +s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, + "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, + "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, + "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, + "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, + "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, + "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, + "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, + "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, + "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, + "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, + "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, + "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, + "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, + "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, + "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, + "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, + "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, + "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, + "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, + "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, + "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, + "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, + "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, + "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, + "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, + "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, + "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, + "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, + "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, + "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, + "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, + "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, + "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, + "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, + "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, + "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, + "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, + "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, + "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, + "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, + "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, + "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, + "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, + "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, + "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, + "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, + "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, + "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, + "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, + "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, + "ebs_volumes": &hcldec.BlockListSpec{TypeName: "ebs_volumes", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, + "run_volume_tags": &hcldec.AttrSpec{Name:"run_volume_tags", Type:cty.Map(cty.String), Required:false}, + "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, +} +return s } diff --git a/builder/amazon/ebsvolume/builder_test.go b/builder/amazon/ebsvolume/builder_test.go index f7110f30e..9db0a189b 100644 --- a/builder/amazon/ebsvolume/builder_test.go +++ b/builder/amazon/ebsvolume/builder_test.go @@ -104,9 +104,6 @@ func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { if len(generatedData) == 0 { t.Fatalf("Generated data should not be empty") } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } if generatedData[0] != "SourceAMIName" { t.Fatalf("Generated data should contain SourceAMIName") } @@ -126,3 +123,44 @@ func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { t.Fatalf("Generated data should contain SourceAMIOwnerName") } } + +func TestBuidler_ConfigBlockdevicemapping(t *testing.T) { + var b Builder + config := testConfig() + + //Set some snapshot settings + config["ebs_volumes"] = []map[string]interface{}{ + { + "device_name": "/dev/xvdb", + "volume_size": "32", + "delete_on_termination": true, + }, + { + "device_name": "/dev/xvdc", + "volume_size": "32", + "delete_on_termination": true, + "snapshot_tags": map[string]string{ + "Test_Tag": "tag_value", + "another tag": "another value", + }, + "snapshot_users": []string{ + "123", "456", + }, + }, + } + + generatedData, warnings, err := b.Prepare(config) + + if len(warnings) > 0 { + t.Fatalf("bad: %#v", warnings) + } + if err != nil { + t.Fatalf("should not have error: %s", err) + } + if len(generatedData) == 0 { + t.Fatalf("Generated data should not be empty") + } + + t.Logf("Test gen %+v", b.config.VolumeMappings) + +} diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index e234013c0..fbd93796b 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -6,14 +6,16 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/ec2/ec2iface" awscommon "github.com/hashicorp/packer/builder/amazon/common" - "github.com/hashicorp/packer/helper/multistep" - "github.com/hashicorp/packer/packer" - "github.com/hashicorp/packer/template/interpolate" + "github.com/hashicorp/packer/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer/packer-plugin-sdk/template/interpolate" + "github.com/hashicorp/packer/packer-plugin-sdk/packer" ) type stepSnapshotEBSVolumes struct { PollingConfig *awscommon.AWSPollingConfig + AccessConfig awscommon.AccessConfig VolumeMapping []BlockDevice //Map of SnapshotID: BlockDevice, Where *BlockDevice is in VolumeMapping SnapshotMap map[string]*BlockDevice @@ -21,9 +23,10 @@ type stepSnapshotEBSVolumes struct { } func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { - ec2conn := state.Get("ec2").(*ec2.EC2) + ec2conn := state.Get("ec2").(ec2iface.EC2API) instance := state.Get("instance").(*ec2.Instance) ui := state.Get("ui").(packer.Ui) + s.SnapshotMap = make(map[string]*BlockDevice) for _, instanceBlockDevices := range instance.BlockDeviceMappings { @@ -36,7 +39,7 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB } ui.Message(fmt.Sprintf("Compiling list of tags to apply to snapshot from Volume %s...", *instanceBlockDevices.DeviceName)) - tags, err := awscommon.TagMap(configVolumeMapping.SnapshotTags).EC2Tags(s.Ctx, *ec2conn.Config.Region, state) + tags, err := awscommon.TagMap(configVolumeMapping.SnapshotTags).EC2Tags(s.Ctx, s.AccessConfig.SessionRegion(), state) if err != nil { err := fmt.Errorf("Error generating tags for snapshot %s: %s", *instanceBlockDevices.DeviceName, err) state.Put("error", err) @@ -146,9 +149,11 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB //Record all snapshots in current Region. snapshots := make(EbsSnapshots) + currentregion := s.AccessConfig.SessionRegion() + for snapID := range s.SnapshotMap { - snapshots[*ec2conn.Config.Region] = append( - snapshots[*ec2conn.Config.Region], + snapshots[currentregion] = append( + snapshots[currentregion], snapID) } //Records artifacts diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go new file mode 100644 index 000000000..fb993cea8 --- /dev/null +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go @@ -0,0 +1,92 @@ +package ebsvolume + +import ( + "bytes" + "context" + "sync" + "testing" + + "github.com/aws/aws-sdk-go/aws" + //"github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/ec2/ec2iface" + "github.com/hashicorp/packer/builder/amazon/common" + "github.com/hashicorp/packer/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer/packer-plugin-sdk/packer" +) + +// Define a mock struct to be used in unit tests for common aws steps. +type mockEC2Conn struct { + ec2iface.EC2API + Config *aws.Config + + // Counters to figure out what code path was taken + copyImageCount int + describeImagesCount int + deregisterImageCount int + deleteSnapshotCount int + waitCount int + + lock sync.Mutex +} + +func getMockConn(config *common.AccessConfig, target string) (ec2iface.EC2API, error) { + mockConn := &mockEC2Conn{ + Config: aws.NewConfig(), + } + return mockConn, nil +} + +// Create statebag for running test +func tState(t *testing.T) multistep.StateBag { + state := new(multistep.BasicStateBag) + state.Put("ui", &packer.BasicUi{ + Reader: new(bytes.Buffer), + Writer: new(bytes.Buffer), + }) + // state.Put("amis", map[string]string{"us-east-1": "ami-12345"}) + // state.Put("snapshots", map[string][]string{"us-east-1": {"snap-0012345"}}) + conn, _ := getMockConn(&common.AccessConfig{}, "us-east-2") + + state.Put("ec2", conn) + return state +} + +func TestStepSnapshot_run_simple(t *testing.T) { + var b Builder + config := testConfig() //from builder_test + + //Set some snapshot settings + config["ebs_volumes"] = []map[string]interface{}{ + { + "device_name": "/dev/xvdb", + "volume_size": "32", + "delete_on_termination": true, + }, + } + + generatedData, warnings, err := b.Prepare(config) + if len(warnings) > 0 { + t.Fatalf("bad: %#v", warnings) + } + if err != nil { + t.Fatalf("should not have error: %s", err) + } + if len(generatedData) == 0 { + t.Fatalf("Generated data should not be empty") + } + + state := tState(t) + //Todo add fake volumes, for the snap shot step to Snapshot + + step := stepSnapshotEBSVolumes{ + PollingConfig: new(common.AWSPollingConfig), //Dosnt look like builder sets this up + VolumeMapping: b.config.VolumeMappings, + Ctx: b.config.ctx, + } + + step.Run(context.Background(), state) + + if len(step.SnapshotMap) != 1 { + t.Fatalf("Missing Snapshot from step") + } +} diff --git a/builder/amazon/instance/builder.hcl2spec.go b/builder/amazon/instance/builder.hcl2spec.go index cc23f639d..2bb4c9dab 100644 --- a/builder/amazon/instance/builder.hcl2spec.go +++ b/builder/amazon/instance/builder.hcl2spec.go @@ -1,7 +1,6 @@ // Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. package instance - import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -12,304 +11,304 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` - AccountId *string `mapstructure:"account_id" required:"true" cty:"account_id" hcl:"account_id"` - BundleDestination *string `mapstructure:"bundle_destination" required:"false" cty:"bundle_destination" hcl:"bundle_destination"` - BundlePrefix *string `mapstructure:"bundle_prefix" required:"false" cty:"bundle_prefix" hcl:"bundle_prefix"` - BundleUploadCommand *string `mapstructure:"bundle_upload_command" required:"false" cty:"bundle_upload_command" hcl:"bundle_upload_command"` - BundleVolCommand *string `mapstructure:"bundle_vol_command" required:"false" cty:"bundle_vol_command" hcl:"bundle_vol_command"` - S3Bucket *string `mapstructure:"s3_bucket" required:"true" cty:"s3_bucket" hcl:"s3_bucket"` - X509CertPath *string `mapstructure:"x509_cert_path" required:"true" cty:"x509_cert_path" hcl:"x509_cert_path"` - X509KeyPath *string `mapstructure:"x509_key_path" required:"true" cty:"x509_key_path" hcl:"x509_key_path"` - X509UploadPath *string `mapstructure:"x509_upload_path" required:"false" cty:"x509_upload_path" hcl:"x509_upload_path"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` + AccountId *string `mapstructure:"account_id" required:"true" cty:"account_id" hcl:"account_id"` + BundleDestination *string `mapstructure:"bundle_destination" required:"false" cty:"bundle_destination" hcl:"bundle_destination"` + BundlePrefix *string `mapstructure:"bundle_prefix" required:"false" cty:"bundle_prefix" hcl:"bundle_prefix"` + BundleUploadCommand *string `mapstructure:"bundle_upload_command" required:"false" cty:"bundle_upload_command" hcl:"bundle_upload_command"` + BundleVolCommand *string `mapstructure:"bundle_vol_command" required:"false" cty:"bundle_vol_command" hcl:"bundle_vol_command"` + S3Bucket *string `mapstructure:"s3_bucket" required:"true" cty:"s3_bucket" hcl:"s3_bucket"` + X509CertPath *string `mapstructure:"x509_cert_path" required:"true" cty:"x509_cert_path" hcl:"x509_cert_path"` + X509KeyPath *string `mapstructure:"x509_key_path" required:"true" cty:"x509_key_path" hcl:"x509_key_path"` + X509UploadPath *string `mapstructure:"x509_upload_path" required:"false" cty:"x509_upload_path" hcl:"x509_upload_path"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) +return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, - "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, - "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, - "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, - "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, - "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, - "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, - "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, - "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, - "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, - "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, - "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, - "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, - "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, - "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, - "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, - "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, - "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, - "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, - "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, - "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, - "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, - "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, - "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, - "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, - "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, - "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, - "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, - "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, - "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, - "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, - "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, - "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, - "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, - "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, - "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, - "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, - "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, - "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, - "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, - "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, - "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, - "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, - "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, - "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, - "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, - "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, - "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, - "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, - "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, - "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, - "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, - "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, - "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, - "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, - "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, - "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, - "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, - "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "account_id": &hcldec.AttrSpec{Name: "account_id", Type: cty.String, Required: false}, - "bundle_destination": &hcldec.AttrSpec{Name: "bundle_destination", Type: cty.String, Required: false}, - "bundle_prefix": &hcldec.AttrSpec{Name: "bundle_prefix", Type: cty.String, Required: false}, - "bundle_upload_command": &hcldec.AttrSpec{Name: "bundle_upload_command", Type: cty.String, Required: false}, - "bundle_vol_command": &hcldec.AttrSpec{Name: "bundle_vol_command", Type: cty.String, Required: false}, - "s3_bucket": &hcldec.AttrSpec{Name: "s3_bucket", Type: cty.String, Required: false}, - "x509_cert_path": &hcldec.AttrSpec{Name: "x509_cert_path", Type: cty.String, Required: false}, - "x509_key_path": &hcldec.AttrSpec{Name: "x509_key_path", Type: cty.String, Required: false}, - "x509_upload_path": &hcldec.AttrSpec{Name: "x509_upload_path", Type: cty.String, Required: false}, - } - return s +s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, + "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, + "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, + "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, + "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, + "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, + "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, + "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, + "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, + "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, + "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, + "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, + "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, + "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, + "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, + "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, + "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, + "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, + "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, + "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, + "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, + "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, + "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, + "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, + "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, + "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, + "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, + "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, + "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, + "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, + "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, + "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, + "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, + "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, + "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, + "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, + "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, + "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, + "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, + "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, + "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, + "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, + "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, + "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, + "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, + "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, + "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, + "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, + "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, + "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, + "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, + "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, + "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, + "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, + "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, + "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, + "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, + "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, + "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, + "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, + "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, + "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, + "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, + "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, + "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, + "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, + "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "account_id": &hcldec.AttrSpec{Name:"account_id", Type:cty.String, Required:false}, + "bundle_destination": &hcldec.AttrSpec{Name:"bundle_destination", Type:cty.String, Required:false}, + "bundle_prefix": &hcldec.AttrSpec{Name:"bundle_prefix", Type:cty.String, Required:false}, + "bundle_upload_command": &hcldec.AttrSpec{Name:"bundle_upload_command", Type:cty.String, Required:false}, + "bundle_vol_command": &hcldec.AttrSpec{Name:"bundle_vol_command", Type:cty.String, Required:false}, + "s3_bucket": &hcldec.AttrSpec{Name:"s3_bucket", Type:cty.String, Required:false}, + "x509_cert_path": &hcldec.AttrSpec{Name:"x509_cert_path", Type:cty.String, Required:false}, + "x509_key_path": &hcldec.AttrSpec{Name:"x509_key_path", Type:cty.String, Required:false}, + "x509_upload_path": &hcldec.AttrSpec{Name:"x509_upload_path", Type:cty.String, Required:false}, +} +return s } From ac2ce0097cabb3a7a6ffa9cb21ea3ac99b88fa8b Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Fri, 18 Dec 2020 17:11:44 +1300 Subject: [PATCH 016/212] Fixed formatting --- builder/amazon/ebsvolume/block_device.go | 2 +- builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/amazon/ebsvolume/block_device.go b/builder/amazon/ebsvolume/block_device.go index 04953ee7e..042af8cf7 100644 --- a/builder/amazon/ebsvolume/block_device.go +++ b/builder/amazon/ebsvolume/block_device.go @@ -23,7 +23,7 @@ type BlockDevice struct { // Create a Snapshot of this Volume. SnapshotVolume bool `mapstructure:"snapshot_volume" required:"false"` - + awscommon.SnapshotConfig `mapstructure:",squash"` } diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index fbd93796b..ec0e52595 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -9,8 +9,8 @@ import ( "github.com/aws/aws-sdk-go/service/ec2/ec2iface" awscommon "github.com/hashicorp/packer/builder/amazon/common" "github.com/hashicorp/packer/packer-plugin-sdk/multistep" - "github.com/hashicorp/packer/packer-plugin-sdk/template/interpolate" "github.com/hashicorp/packer/packer-plugin-sdk/packer" + "github.com/hashicorp/packer/packer-plugin-sdk/template/interpolate" ) type stepSnapshotEBSVolumes struct { From aef74cd0595cb627e79a1af0497935de30a1a8ec Mon Sep 17 00:00:00 2001 From: Tim Dawson Date: Fri, 19 Feb 2021 14:05:02 +1300 Subject: [PATCH 017/212] Fixed up after rebaseing --- builder/amazon/chroot/builder.hcl2spec.go | 281 ++++---- builder/amazon/common/state.hcl2spec.go | 33 + builder/amazon/ebs/builder.hcl2spec.go | 557 +++++++-------- .../amazon/ebssurrogate/builder.hcl2spec.go | 645 +++++++++--------- builder/amazon/ebsvolume/builder.hcl2spec.go | 545 +++++++-------- .../ebsvolume/step_snapshot_ebs_volumes.go | 6 +- .../step_snapshot_ebs_volumes_test.go | 4 +- builder/amazon/instance/builder.hcl2spec.go | 577 ++++++++-------- .../vsphere/common/output_config.hcl2spec.go | 4 +- .../vsphere/common/step_export.hcl2spec.go | 4 +- 10 files changed, 1347 insertions(+), 1309 deletions(-) create mode 100644 builder/amazon/common/state.hcl2spec.go diff --git a/builder/amazon/chroot/builder.hcl2spec.go b/builder/amazon/chroot/builder.hcl2spec.go index 81434dfe9..f00c35e65 100644 --- a/builder/amazon/chroot/builder.hcl2spec.go +++ b/builder/amazon/chroot/builder.hcl2spec.go @@ -1,6 +1,7 @@ // Code generated by "mapstructure-to-hcl2 -type Config,BlockDevices,BlockDevice"; DO NOT EDIT. package chroot + import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -11,156 +12,156 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" hcl2-schema-generator:"ami_block_device_mappings,direct" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - ChrootMounts [][]string `mapstructure:"chroot_mounts" required:"false" cty:"chroot_mounts" hcl:"chroot_mounts"` - CommandWrapper *string `mapstructure:"command_wrapper" required:"false" cty:"command_wrapper" hcl:"command_wrapper"` - CopyFiles []string `mapstructure:"copy_files" required:"false" cty:"copy_files" hcl:"copy_files"` - DevicePath *string `mapstructure:"device_path" required:"false" cty:"device_path" hcl:"device_path"` - NVMEDevicePath *string `mapstructure:"nvme_device_path" required:"false" cty:"nvme_device_path" hcl:"nvme_device_path"` - FromScratch *bool `mapstructure:"from_scratch" required:"false" cty:"from_scratch" hcl:"from_scratch"` - MountOptions []string `mapstructure:"mount_options" required:"false" cty:"mount_options" hcl:"mount_options"` - MountPartition *string `mapstructure:"mount_partition" required:"false" cty:"mount_partition" hcl:"mount_partition"` - MountPath *string `mapstructure:"mount_path" required:"false" cty:"mount_path" hcl:"mount_path"` - PostMountCommands []string `mapstructure:"post_mount_commands" required:"false" cty:"post_mount_commands" hcl:"post_mount_commands"` - PreMountCommands []string `mapstructure:"pre_mount_commands" required:"false" cty:"pre_mount_commands" hcl:"pre_mount_commands"` - RootDeviceName *string `mapstructure:"root_device_name" required:"false" cty:"root_device_name" hcl:"root_device_name"` - RootVolumeSize *int64 `mapstructure:"root_volume_size" required:"false" cty:"root_volume_size" hcl:"root_volume_size"` - RootVolumeType *string `mapstructure:"root_volume_type" required:"false" cty:"root_volume_type" hcl:"root_volume_type"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - RootVolumeTags map[string]string `mapstructure:"root_volume_tags" required:"false" cty:"root_volume_tags" hcl:"root_volume_tags"` - RootVolumeTag []config.FlatKeyValue `mapstructure:"root_volume_tag" required:"false" cty:"root_volume_tag" hcl:"root_volume_tag"` - RootVolumeEncryptBoot *bool `mapstructure:"root_volume_encrypt_boot" required:"false" cty:"root_volume_encrypt_boot" hcl:"root_volume_encrypt_boot"` - RootVolumeKmsKeyId *string `mapstructure:"root_volume_kms_key_id" required:"false" cty:"root_volume_kms_key_id" hcl:"root_volume_kms_key_id"` - Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" hcl2-schema-generator:"ami_block_device_mappings,direct" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + ChrootMounts [][]string `mapstructure:"chroot_mounts" required:"false" cty:"chroot_mounts" hcl:"chroot_mounts"` + CommandWrapper *string `mapstructure:"command_wrapper" required:"false" cty:"command_wrapper" hcl:"command_wrapper"` + CopyFiles []string `mapstructure:"copy_files" required:"false" cty:"copy_files" hcl:"copy_files"` + DevicePath *string `mapstructure:"device_path" required:"false" cty:"device_path" hcl:"device_path"` + NVMEDevicePath *string `mapstructure:"nvme_device_path" required:"false" cty:"nvme_device_path" hcl:"nvme_device_path"` + FromScratch *bool `mapstructure:"from_scratch" required:"false" cty:"from_scratch" hcl:"from_scratch"` + MountOptions []string `mapstructure:"mount_options" required:"false" cty:"mount_options" hcl:"mount_options"` + MountPartition *string `mapstructure:"mount_partition" required:"false" cty:"mount_partition" hcl:"mount_partition"` + MountPath *string `mapstructure:"mount_path" required:"false" cty:"mount_path" hcl:"mount_path"` + PostMountCommands []string `mapstructure:"post_mount_commands" required:"false" cty:"post_mount_commands" hcl:"post_mount_commands"` + PreMountCommands []string `mapstructure:"pre_mount_commands" required:"false" cty:"pre_mount_commands" hcl:"pre_mount_commands"` + RootDeviceName *string `mapstructure:"root_device_name" required:"false" cty:"root_device_name" hcl:"root_device_name"` + RootVolumeSize *int64 `mapstructure:"root_volume_size" required:"false" cty:"root_volume_size" hcl:"root_volume_size"` + RootVolumeType *string `mapstructure:"root_volume_type" required:"false" cty:"root_volume_type" hcl:"root_volume_type"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + RootVolumeTags map[string]string `mapstructure:"root_volume_tags" required:"false" cty:"root_volume_tags" hcl:"root_volume_tags"` + RootVolumeTag []config.FlatKeyValue `mapstructure:"root_volume_tag" required:"false" cty:"root_volume_tag" hcl:"root_volume_tag"` + RootVolumeEncryptBoot *bool `mapstructure:"root_volume_encrypt_boot" required:"false" cty:"root_volume_encrypt_boot" hcl:"root_volume_encrypt_boot"` + RootVolumeKmsKeyId *string `mapstructure:"root_volume_kms_key_id" required:"false" cty:"root_volume_kms_key_id" hcl:"root_volume_kms_key_id"` + Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatConfig) + return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, - "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, - "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, - "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, - "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, - "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, - "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, - "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, - "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, - "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, - "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, - "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, - "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, - "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, - "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, - "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, - "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, - "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, - "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, - "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, - "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, - "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, - "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, - "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, - "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, - "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, - "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, - "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, - "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, - "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, - "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, - "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, - "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "chroot_mounts": &hcldec.AttrSpec{Name:"chroot_mounts", Type:cty.List(cty.List(cty.String)), Required:false}, - "command_wrapper": &hcldec.AttrSpec{Name:"command_wrapper", Type:cty.String, Required:false}, - "copy_files": &hcldec.AttrSpec{Name:"copy_files", Type:cty.List(cty.String), Required:false}, - "device_path": &hcldec.AttrSpec{Name:"device_path", Type:cty.String, Required:false}, - "nvme_device_path": &hcldec.AttrSpec{Name:"nvme_device_path", Type:cty.String, Required:false}, - "from_scratch": &hcldec.AttrSpec{Name:"from_scratch", Type:cty.Bool, Required:false}, - "mount_options": &hcldec.AttrSpec{Name:"mount_options", Type:cty.List(cty.String), Required:false}, - "mount_partition": &hcldec.AttrSpec{Name:"mount_partition", Type:cty.String, Required:false}, - "mount_path": &hcldec.AttrSpec{Name:"mount_path", Type:cty.String, Required:false}, - "post_mount_commands": &hcldec.AttrSpec{Name:"post_mount_commands", Type:cty.List(cty.String), Required:false}, - "pre_mount_commands": &hcldec.AttrSpec{Name:"pre_mount_commands", Type:cty.List(cty.String), Required:false}, - "root_device_name": &hcldec.AttrSpec{Name:"root_device_name", Type:cty.String, Required:false}, - "root_volume_size": &hcldec.AttrSpec{Name:"root_volume_size", Type:cty.Number, Required:false}, - "root_volume_type": &hcldec.AttrSpec{Name:"root_volume_type", Type:cty.String, Required:false}, - "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "root_volume_tags": &hcldec.AttrSpec{Name:"root_volume_tags", Type:cty.Map(cty.String), Required:false}, - "root_volume_tag": &hcldec.BlockListSpec{TypeName: "root_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "root_volume_encrypt_boot": &hcldec.AttrSpec{Name:"root_volume_encrypt_boot", Type:cty.Bool, Required:false}, - "root_volume_kms_key_id": &hcldec.AttrSpec{Name:"root_volume_kms_key_id", Type:cty.String, Required:false}, - "ami_architecture": &hcldec.AttrSpec{Name:"ami_architecture", Type:cty.String, Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, + "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, + "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, + "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, + "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, + "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, + "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, + "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, + "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, + "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, + "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, + "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, + "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, + "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, + "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, + "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, + "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, + "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, + "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, + "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, + "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, + "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "chroot_mounts": &hcldec.AttrSpec{Name: "chroot_mounts", Type: cty.List(cty.List(cty.String)), Required: false}, + "command_wrapper": &hcldec.AttrSpec{Name: "command_wrapper", Type: cty.String, Required: false}, + "copy_files": &hcldec.AttrSpec{Name: "copy_files", Type: cty.List(cty.String), Required: false}, + "device_path": &hcldec.AttrSpec{Name: "device_path", Type: cty.String, Required: false}, + "nvme_device_path": &hcldec.AttrSpec{Name: "nvme_device_path", Type: cty.String, Required: false}, + "from_scratch": &hcldec.AttrSpec{Name: "from_scratch", Type: cty.Bool, Required: false}, + "mount_options": &hcldec.AttrSpec{Name: "mount_options", Type: cty.List(cty.String), Required: false}, + "mount_partition": &hcldec.AttrSpec{Name: "mount_partition", Type: cty.String, Required: false}, + "mount_path": &hcldec.AttrSpec{Name: "mount_path", Type: cty.String, Required: false}, + "post_mount_commands": &hcldec.AttrSpec{Name: "post_mount_commands", Type: cty.List(cty.String), Required: false}, + "pre_mount_commands": &hcldec.AttrSpec{Name: "pre_mount_commands", Type: cty.List(cty.String), Required: false}, + "root_device_name": &hcldec.AttrSpec{Name: "root_device_name", Type: cty.String, Required: false}, + "root_volume_size": &hcldec.AttrSpec{Name: "root_volume_size", Type: cty.Number, Required: false}, + "root_volume_type": &hcldec.AttrSpec{Name: "root_volume_type", Type: cty.String, Required: false}, + "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "root_volume_tags": &hcldec.AttrSpec{Name: "root_volume_tags", Type: cty.Map(cty.String), Required: false}, + "root_volume_tag": &hcldec.BlockListSpec{TypeName: "root_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "root_volume_encrypt_boot": &hcldec.AttrSpec{Name: "root_volume_encrypt_boot", Type: cty.Bool, Required: false}, + "root_volume_kms_key_id": &hcldec.AttrSpec{Name: "root_volume_kms_key_id", Type: cty.String, Required: false}, + "ami_architecture": &hcldec.AttrSpec{Name: "ami_architecture", Type: cty.String, Required: false}, + } + return s } diff --git a/builder/amazon/common/state.hcl2spec.go b/builder/amazon/common/state.hcl2spec.go new file mode 100644 index 000000000..a3ec85817 --- /dev/null +++ b/builder/amazon/common/state.hcl2spec.go @@ -0,0 +1,33 @@ +// Code generated by "mapstructure-to-hcl2 -type AWSPollingConfig"; DO NOT EDIT. + +package common + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatAWSPollingConfig is an auto-generated flat version of AWSPollingConfig. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatAWSPollingConfig struct { + MaxAttempts *int `mapstructure:"max_attempts" required:"false" cty:"max_attempts" hcl:"max_attempts"` + DelaySeconds *int `mapstructure:"delay_seconds" required:"false" cty:"delay_seconds" hcl:"delay_seconds"` +} + +// FlatMapstructure returns a new FlatAWSPollingConfig. +// FlatAWSPollingConfig is an auto-generated flat version of AWSPollingConfig. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*AWSPollingConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatAWSPollingConfig) +} + +// HCL2Spec returns the hcl spec of a AWSPollingConfig. +// This spec is used by HCL to read the fields of AWSPollingConfig. +// The decoded values from this spec will then be applied to a FlatAWSPollingConfig. +func (*FlatAWSPollingConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "max_attempts": &hcldec.AttrSpec{Name: "max_attempts", Type: cty.Number, Required: false}, + "delay_seconds": &hcldec.AttrSpec{Name: "delay_seconds", Type: cty.Number, Required: false}, + } + return s +} diff --git a/builder/amazon/ebs/builder.hcl2spec.go b/builder/amazon/ebs/builder.hcl2spec.go index 0979e3a34..18a8a1ba2 100644 --- a/builder/amazon/ebs/builder.hcl2spec.go +++ b/builder/amazon/ebs/builder.hcl2spec.go @@ -1,6 +1,7 @@ // Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. package ebs + import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -11,294 +12,294 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMISkipCreateImage *bool `mapstructure:"skip_create_ami" required:"false" cty:"skip_create_ami" hcl:"skip_create_ami"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` - VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` - VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` - NoEphemeral *bool `mapstructure:"no_ephemeral" required:"false" cty:"no_ephemeral" hcl:"no_ephemeral"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMISkipCreateImage *bool `mapstructure:"skip_create_ami" required:"false" cty:"skip_create_ami" hcl:"skip_create_ami"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` + VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` + VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` + NoEphemeral *bool `mapstructure:"no_ephemeral" required:"false" cty:"no_ephemeral" hcl:"no_ephemeral"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatConfig) + return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, - "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, - "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, - "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, - "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, - "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, - "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, - "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, - "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, - "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, - "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, - "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, - "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, - "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, - "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, - "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, - "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, - "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, - "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, - "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, - "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, - "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, - "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, - "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, - "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, - "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, - "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, - "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, - "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, - "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, - "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, - "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, - "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, - "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, - "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, - "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, - "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, - "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, - "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, - "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, - "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, - "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, - "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, - "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, - "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, - "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, - "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, - "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, - "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, - "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, - "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, - "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, - "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, - "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, - "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, - "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, - "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, - "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, - "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, - "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, - "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, - "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, - "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, - "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, - "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, - "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, - "skip_create_ami": &hcldec.AttrSpec{Name:"skip_create_ami", Type:cty.Bool, Required:false}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "run_volume_tags": &hcldec.AttrSpec{Name:"run_volume_tags", Type:cty.Map(cty.String), Required:false}, - "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, - "no_ephemeral": &hcldec.AttrSpec{Name:"no_ephemeral", Type:cty.Bool, Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, + "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, + "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, + "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, + "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, + "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, + "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, + "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, + "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, + "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, + "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, + "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, + "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, + "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, + "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, + "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, + "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, + "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, + "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, + "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, + "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, + "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, + "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, + "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, + "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, + "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, + "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, + "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, + "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, + "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, + "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, + "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, + "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, + "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, + "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, + "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, + "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, + "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, + "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, + "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, + "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, + "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, + "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, + "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, + "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, + "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, + "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, + "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, + "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, + "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, + "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, + "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, + "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, + "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, + "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, + "skip_create_ami": &hcldec.AttrSpec{Name: "skip_create_ami", Type: cty.Bool, Required: false}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "run_volume_tags": &hcldec.AttrSpec{Name: "run_volume_tags", Type: cty.Map(cty.String), Required: false}, + "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, + "no_ephemeral": &hcldec.AttrSpec{Name: "no_ephemeral", Type: cty.Bool, Required: false}, + } + return s } diff --git a/builder/amazon/ebssurrogate/builder.hcl2spec.go b/builder/amazon/ebssurrogate/builder.hcl2spec.go index 8790b2c17..e837458c5 100644 --- a/builder/amazon/ebssurrogate/builder.hcl2spec.go +++ b/builder/amazon/ebssurrogate/builder.hcl2spec.go @@ -1,6 +1,7 @@ // Code generated by "mapstructure-to-hcl2 -type Config,RootBlockDevice,BlockDevice"; DO NOT EDIT. package ebssurrogate + import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -11,372 +12,372 @@ import ( // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatBlockDevice struct { - DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` - DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` - Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` - IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` - NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` - SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` - Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` - VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` - VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` - VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` - KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - OmitFromArtifact *bool `mapstructure:"omit_from_artifact" cty:"omit_from_artifact" hcl:"omit_from_artifact"` + DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` + DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` + Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` + IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` + NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` + SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` + Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` + VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` + VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` + VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` + KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + OmitFromArtifact *bool `mapstructure:"omit_from_artifact" cty:"omit_from_artifact" hcl:"omit_from_artifact"` } // FlatMapstructure returns a new FlatBlockDevice. // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*BlockDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatBlockDevice) + return new(FlatBlockDevice) } // HCL2Spec returns the hcl spec of a BlockDevice. // This spec is used by HCL to read the fields of BlockDevice. // The decoded values from this spec will then be applied to a FlatBlockDevice. func (*FlatBlockDevice) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "delete_on_termination": &hcldec.AttrSpec{Name:"delete_on_termination", Type:cty.Bool, Required:false}, - "device_name": &hcldec.AttrSpec{Name:"device_name", Type:cty.String, Required:false}, - "encrypted": &hcldec.AttrSpec{Name:"encrypted", Type:cty.Bool, Required:false}, - "iops": &hcldec.AttrSpec{Name:"iops", Type:cty.Number, Required:false}, - "no_device": &hcldec.AttrSpec{Name:"no_device", Type:cty.Bool, Required:false}, - "snapshot_id": &hcldec.AttrSpec{Name:"snapshot_id", Type:cty.String, Required:false}, - "throughput": &hcldec.AttrSpec{Name:"throughput", Type:cty.Number, Required:false}, - "virtual_name": &hcldec.AttrSpec{Name:"virtual_name", Type:cty.String, Required:false}, - "volume_type": &hcldec.AttrSpec{Name:"volume_type", Type:cty.String, Required:false}, - "volume_size": &hcldec.AttrSpec{Name:"volume_size", Type:cty.Number, Required:false}, - "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, - "omit_from_artifact": &hcldec.AttrSpec{Name:"omit_from_artifact", Type:cty.Bool, Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "delete_on_termination": &hcldec.AttrSpec{Name: "delete_on_termination", Type: cty.Bool, Required: false}, + "device_name": &hcldec.AttrSpec{Name: "device_name", Type: cty.String, Required: false}, + "encrypted": &hcldec.AttrSpec{Name: "encrypted", Type: cty.Bool, Required: false}, + "iops": &hcldec.AttrSpec{Name: "iops", Type: cty.Number, Required: false}, + "no_device": &hcldec.AttrSpec{Name: "no_device", Type: cty.Bool, Required: false}, + "snapshot_id": &hcldec.AttrSpec{Name: "snapshot_id", Type: cty.String, Required: false}, + "throughput": &hcldec.AttrSpec{Name: "throughput", Type: cty.Number, Required: false}, + "virtual_name": &hcldec.AttrSpec{Name: "virtual_name", Type: cty.String, Required: false}, + "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, + "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, + "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "omit_from_artifact": &hcldec.AttrSpec{Name: "omit_from_artifact", Type: cty.Bool, Required: false}, + } + return s } // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - LaunchMappings []FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` - RootDevice *FlatRootBlockDevice `mapstructure:"ami_root_device" required:"true" cty:"ami_root_device" hcl:"ami_root_device"` - VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` - VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` - Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + LaunchMappings []FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` + RootDevice *FlatRootBlockDevice `mapstructure:"ami_root_device" required:"true" cty:"ami_root_device" hcl:"ami_root_device"` + VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` + VolumeRunTag []config.FlatNameValue `mapstructure:"run_volume_tag" required:"false" cty:"run_volume_tag" hcl:"run_volume_tag"` + Architecture *string `mapstructure:"ami_architecture" required:"false" cty:"ami_architecture" hcl:"ami_architecture"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatConfig) + return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, - "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, - "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, - "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, - "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, - "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, - "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, - "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, - "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, - "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, - "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, - "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, - "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, - "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, - "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, - "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, - "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, - "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, - "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, - "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, - "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, - "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, - "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, - "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, - "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, - "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, - "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, - "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, - "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, - "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, - "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, - "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, - "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, - "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, - "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, - "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, - "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, - "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, - "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, - "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, - "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, - "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, - "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, - "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, - "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, - "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, - "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, - "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, - "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, - "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, - "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, - "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, - "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, - "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, - "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, - "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, - "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, - "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, - "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, - "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, - "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, - "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, - "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, - "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, - "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, - "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, - "ami_root_device": &hcldec.BlockSpec{TypeName: "ami_root_device", Nested: hcldec.ObjectSpec((*FlatRootBlockDevice)(nil).HCL2Spec())}, - "run_volume_tags": &hcldec.AttrSpec{Name:"run_volume_tags", Type:cty.Map(cty.String), Required:false}, - "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, - "ami_architecture": &hcldec.AttrSpec{Name:"ami_architecture", Type:cty.String, Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, + "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, + "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, + "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, + "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, + "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, + "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, + "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, + "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, + "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, + "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, + "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, + "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, + "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, + "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, + "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, + "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, + "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, + "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, + "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, + "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, + "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, + "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, + "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, + "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, + "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, + "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, + "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, + "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, + "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, + "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, + "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, + "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, + "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, + "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, + "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, + "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, + "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, + "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, + "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, + "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, + "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, + "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, + "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, + "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, + "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, + "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, + "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, + "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, + "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, + "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, + "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, + "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, + "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, + "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, + "ami_root_device": &hcldec.BlockSpec{TypeName: "ami_root_device", Nested: hcldec.ObjectSpec((*FlatRootBlockDevice)(nil).HCL2Spec())}, + "run_volume_tags": &hcldec.AttrSpec{Name: "run_volume_tags", Type: cty.Map(cty.String), Required: false}, + "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatNameValue)(nil).HCL2Spec())}, + "ami_architecture": &hcldec.AttrSpec{Name: "ami_architecture", Type: cty.String, Required: false}, + } + return s } // FlatRootBlockDevice is an auto-generated flat version of RootBlockDevice. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatRootBlockDevice struct { - SourceDeviceName *string `mapstructure:"source_device_name" cty:"source_device_name" hcl:"source_device_name"` - DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` - DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` - IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` - VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` - VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` + SourceDeviceName *string `mapstructure:"source_device_name" cty:"source_device_name" hcl:"source_device_name"` + DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` + DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` + IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` + VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` + VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` } // FlatMapstructure returns a new FlatRootBlockDevice. // FlatRootBlockDevice is an auto-generated flat version of RootBlockDevice. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*RootBlockDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatRootBlockDevice) + return new(FlatRootBlockDevice) } // HCL2Spec returns the hcl spec of a RootBlockDevice. // This spec is used by HCL to read the fields of RootBlockDevice. // The decoded values from this spec will then be applied to a FlatRootBlockDevice. func (*FlatRootBlockDevice) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "source_device_name": &hcldec.AttrSpec{Name:"source_device_name", Type:cty.String, Required:false}, - "device_name": &hcldec.AttrSpec{Name:"device_name", Type:cty.String, Required:false}, - "delete_on_termination": &hcldec.AttrSpec{Name:"delete_on_termination", Type:cty.Bool, Required:false}, - "iops": &hcldec.AttrSpec{Name:"iops", Type:cty.Number, Required:false}, - "volume_type": &hcldec.AttrSpec{Name:"volume_type", Type:cty.String, Required:false}, - "volume_size": &hcldec.AttrSpec{Name:"volume_size", Type:cty.Number, Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "source_device_name": &hcldec.AttrSpec{Name: "source_device_name", Type: cty.String, Required: false}, + "device_name": &hcldec.AttrSpec{Name: "device_name", Type: cty.String, Required: false}, + "delete_on_termination": &hcldec.AttrSpec{Name: "delete_on_termination", Type: cty.Bool, Required: false}, + "iops": &hcldec.AttrSpec{Name: "iops", Type: cty.Number, Required: false}, + "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, + "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, + } + return s } diff --git a/builder/amazon/ebsvolume/builder.hcl2spec.go b/builder/amazon/ebsvolume/builder.hcl2spec.go index caaec6ffd..7ff6a2a82 100644 --- a/builder/amazon/ebsvolume/builder.hcl2spec.go +++ b/builder/amazon/ebsvolume/builder.hcl2spec.go @@ -1,6 +1,7 @@ // Code generated by "mapstructure-to-hcl2 -type Config,BlockDevice"; DO NOT EDIT. package ebsvolume + import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -11,305 +12,305 @@ import ( // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatBlockDevice struct { - DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` - DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` - Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` - IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` - NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` - SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` - Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` - VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` - VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` - VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` - KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + DeleteOnTermination *bool `mapstructure:"delete_on_termination" required:"false" cty:"delete_on_termination" hcl:"delete_on_termination"` + DeviceName *string `mapstructure:"device_name" required:"false" cty:"device_name" hcl:"device_name"` + Encrypted *bool `mapstructure:"encrypted" required:"false" cty:"encrypted" hcl:"encrypted"` + IOPS *int64 `mapstructure:"iops" required:"false" cty:"iops" hcl:"iops"` + NoDevice *bool `mapstructure:"no_device" required:"false" cty:"no_device" hcl:"no_device"` + SnapshotId *string `mapstructure:"snapshot_id" required:"false" cty:"snapshot_id" hcl:"snapshot_id"` + Throughput *int64 `mapstructure:"throughput" required:"false" cty:"throughput" hcl:"throughput"` + VirtualName *string `mapstructure:"virtual_name" required:"false" cty:"virtual_name" hcl:"virtual_name"` + VolumeType *string `mapstructure:"volume_type" required:"false" cty:"volume_type" hcl:"volume_type"` + VolumeSize *int64 `mapstructure:"volume_size" required:"false" cty:"volume_size" hcl:"volume_size"` + KmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + Tags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + Tag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + SnapshotVolume *bool `mapstructure:"snapshot_volume" required:"false" cty:"snapshot_volume" hcl:"snapshot_volume"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` } // FlatMapstructure returns a new FlatBlockDevice. // FlatBlockDevice is an auto-generated flat version of BlockDevice. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*BlockDevice) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatBlockDevice) + return new(FlatBlockDevice) } // HCL2Spec returns the hcl spec of a BlockDevice. // This spec is used by HCL to read the fields of BlockDevice. // The decoded values from this spec will then be applied to a FlatBlockDevice. func (*FlatBlockDevice) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "delete_on_termination": &hcldec.AttrSpec{Name:"delete_on_termination", Type:cty.Bool, Required:false}, - "device_name": &hcldec.AttrSpec{Name:"device_name", Type:cty.String, Required:false}, - "encrypted": &hcldec.AttrSpec{Name:"encrypted", Type:cty.Bool, Required:false}, - "iops": &hcldec.AttrSpec{Name:"iops", Type:cty.Number, Required:false}, - "no_device": &hcldec.AttrSpec{Name:"no_device", Type:cty.Bool, Required:false}, - "snapshot_id": &hcldec.AttrSpec{Name:"snapshot_id", Type:cty.String, Required:false}, - "throughput": &hcldec.AttrSpec{Name:"throughput", Type:cty.Number, Required:false}, - "virtual_name": &hcldec.AttrSpec{Name:"virtual_name", Type:cty.String, Required:false}, - "volume_type": &hcldec.AttrSpec{Name:"volume_type", Type:cty.String, Required:false}, - "volume_size": &hcldec.AttrSpec{Name:"volume_size", Type:cty.Number, Required:false}, - "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, - "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "snapshot_volume": &hcldec.AttrSpec{Name:"snapshot_volume", Type:cty.Bool, Required:false}, - "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, - "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, - "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, - "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "delete_on_termination": &hcldec.AttrSpec{Name: "delete_on_termination", Type: cty.Bool, Required: false}, + "device_name": &hcldec.AttrSpec{Name: "device_name", Type: cty.String, Required: false}, + "encrypted": &hcldec.AttrSpec{Name: "encrypted", Type: cty.Bool, Required: false}, + "iops": &hcldec.AttrSpec{Name: "iops", Type: cty.Number, Required: false}, + "no_device": &hcldec.AttrSpec{Name: "no_device", Type: cty.Bool, Required: false}, + "snapshot_id": &hcldec.AttrSpec{Name: "snapshot_id", Type: cty.String, Required: false}, + "throughput": &hcldec.AttrSpec{Name: "throughput", Type: cty.Number, Required: false}, + "virtual_name": &hcldec.AttrSpec{Name: "virtual_name", Type: cty.String, Required: false}, + "volume_type": &hcldec.AttrSpec{Name: "volume_type", Type: cty.String, Required: false}, + "volume_size": &hcldec.AttrSpec{Name: "volume_size", Type: cty.Number, Required: false}, + "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_volume": &hcldec.AttrSpec{Name: "snapshot_volume", Type: cty.Bool, Required: false}, + "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, + "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, + "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, + } + return s } // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - VolumeMappings []FlatBlockDevice `mapstructure:"ebs_volumes" required:"false" cty:"ebs_volumes" hcl:"ebs_volumes"` - VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` - VolumeRunTag []config.FlatKeyValue `mapstructure:"run_volume_tag" cty:"run_volume_tag" hcl:"run_volume_tag"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + VolumeMappings []FlatBlockDevice `mapstructure:"ebs_volumes" required:"false" cty:"ebs_volumes" hcl:"ebs_volumes"` + VolumeRunTags map[string]string `mapstructure:"run_volume_tags" cty:"run_volume_tags" hcl:"run_volume_tags"` + VolumeRunTag []config.FlatKeyValue `mapstructure:"run_volume_tag" cty:"run_volume_tag" hcl:"run_volume_tag"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatConfig) + return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, - "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, - "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, - "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, - "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, - "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, - "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, - "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, - "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, - "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, - "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, - "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, - "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, - "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, - "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, - "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, - "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, - "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, - "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, - "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, - "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, - "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, - "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, - "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, - "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, - "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, - "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, - "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, - "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, - "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, - "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, - "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, - "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, - "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, - "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, - "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, - "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, - "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, - "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, - "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, - "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, - "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, - "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, - "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, - "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, - "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, - "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, - "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, - "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, - "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, - "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, - "ebs_volumes": &hcldec.BlockListSpec{TypeName: "ebs_volumes", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, - "run_volume_tags": &hcldec.AttrSpec{Name:"run_volume_tags", Type:cty.Map(cty.String), Required:false}, - "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, -} -return s + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, + "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, + "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, + "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, + "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, + "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, + "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, + "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, + "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, + "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, + "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, + "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, + "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, + "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, + "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, + "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, + "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, + "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, + "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, + "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, + "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, + "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, + "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, + "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, + "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, + "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, + "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, + "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, + "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, + "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, + "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, + "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, + "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, + "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, + "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, + "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, + "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, + "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, + "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, + "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, + "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, + "ebs_volumes": &hcldec.BlockListSpec{TypeName: "ebs_volumes", Nested: hcldec.ObjectSpec((*FlatBlockDevice)(nil).HCL2Spec())}, + "run_volume_tags": &hcldec.AttrSpec{Name: "run_volume_tags", Type: cty.Map(cty.String), Required: false}, + "run_volume_tag": &hcldec.BlockListSpec{TypeName: "run_volume_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + } + return s } diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index ec0e52595..b86300dc2 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -8,9 +8,9 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" awscommon "github.com/hashicorp/packer/builder/amazon/common" - "github.com/hashicorp/packer/packer-plugin-sdk/multistep" - "github.com/hashicorp/packer/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/packer-plugin-sdk/template/interpolate" + "github.com/hashicorp/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/interpolate" ) type stepSnapshotEBSVolumes struct { diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go index fb993cea8..d43b143ab 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go @@ -10,8 +10,8 @@ import ( //"github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" "github.com/hashicorp/packer/builder/amazon/common" - "github.com/hashicorp/packer/packer-plugin-sdk/multistep" - "github.com/hashicorp/packer/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer-plugin-sdk/packer" ) // Define a mock struct to be used in unit tests for common aws steps. diff --git a/builder/amazon/instance/builder.hcl2spec.go b/builder/amazon/instance/builder.hcl2spec.go index 2bb4c9dab..cc23f639d 100644 --- a/builder/amazon/instance/builder.hcl2spec.go +++ b/builder/amazon/instance/builder.hcl2spec.go @@ -1,6 +1,7 @@ // Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. package instance + import ( "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/template/config" @@ -11,304 +12,304 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` - AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` - CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` - CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` - DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` - InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` - MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` - MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` - ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` - RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` - SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` - SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` - SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` - Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` - VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` - PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` - AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` - AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` - AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` - AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` - AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` - AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` - AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` - AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` - AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` - AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` - AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` - AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` - AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` - AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` - AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` - AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` - AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` - AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` - SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` - SnapshotTag *invalid type `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` - SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` - SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` - AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` - AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` - BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` - DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` - EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` - EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` - IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` - SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` - TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` - InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` - InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` - SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` - RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` - RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` - SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` - SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` - SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` - SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` - SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` - SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` - SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` - SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` - SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` - SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` - SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` - Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` - TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` - UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` - UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` - VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` - VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` - WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` - Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` - Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` - PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` - SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` - SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` - SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` - SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` - SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` - SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` - SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` - SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` - SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` - SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` - SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` - SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` - SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` - SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` - SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` - SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` - SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` - SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` - SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` - SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` - SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` - SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` - SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` - SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` - SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` - SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` - SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` - SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` - SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` - SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` - SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` - SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` - SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` - SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` - SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` - SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` - SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` - SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` - WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` - WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` - WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` - WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` - WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` - WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` - WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` - WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` - WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` - SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` - PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` - SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` - AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` - LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` - AccountId *string `mapstructure:"account_id" required:"true" cty:"account_id" hcl:"account_id"` - BundleDestination *string `mapstructure:"bundle_destination" required:"false" cty:"bundle_destination" hcl:"bundle_destination"` - BundlePrefix *string `mapstructure:"bundle_prefix" required:"false" cty:"bundle_prefix" hcl:"bundle_prefix"` - BundleUploadCommand *string `mapstructure:"bundle_upload_command" required:"false" cty:"bundle_upload_command" hcl:"bundle_upload_command"` - BundleVolCommand *string `mapstructure:"bundle_vol_command" required:"false" cty:"bundle_vol_command" hcl:"bundle_vol_command"` - S3Bucket *string `mapstructure:"s3_bucket" required:"true" cty:"s3_bucket" hcl:"s3_bucket"` - X509CertPath *string `mapstructure:"x509_cert_path" required:"true" cty:"x509_cert_path" hcl:"x509_cert_path"` - X509KeyPath *string `mapstructure:"x509_key_path" required:"true" cty:"x509_key_path" hcl:"x509_key_path"` - X509UploadPath *string `mapstructure:"x509_upload_path" required:"false" cty:"x509_upload_path" hcl:"x509_upload_path"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + AccessKey *string `mapstructure:"access_key" required:"true" cty:"access_key" hcl:"access_key"` + AssumeRole *common.FlatAssumeRoleConfig `mapstructure:"assume_role" required:"false" cty:"assume_role" hcl:"assume_role"` + CustomEndpointEc2 *string `mapstructure:"custom_endpoint_ec2" required:"false" cty:"custom_endpoint_ec2" hcl:"custom_endpoint_ec2"` + CredsFilename *string `mapstructure:"shared_credentials_file" required:"false" cty:"shared_credentials_file" hcl:"shared_credentials_file"` + DecodeAuthZMessages *bool `mapstructure:"decode_authorization_messages" required:"false" cty:"decode_authorization_messages" hcl:"decode_authorization_messages"` + InsecureSkipTLSVerify *bool `mapstructure:"insecure_skip_tls_verify" required:"false" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` + MaxRetries *int `mapstructure:"max_retries" required:"false" cty:"max_retries" hcl:"max_retries"` + MFACode *string `mapstructure:"mfa_code" required:"false" cty:"mfa_code" hcl:"mfa_code"` + ProfileName *string `mapstructure:"profile" required:"false" cty:"profile" hcl:"profile"` + RawRegion *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + SecretKey *string `mapstructure:"secret_key" required:"true" cty:"secret_key" hcl:"secret_key"` + SkipMetadataApiCheck *bool `mapstructure:"skip_metadata_api_check" cty:"skip_metadata_api_check" hcl:"skip_metadata_api_check"` + SkipCredsValidation *bool `mapstructure:"skip_credential_validation" cty:"skip_credential_validation" hcl:"skip_credential_validation"` + Token *string `mapstructure:"token" required:"false" cty:"token" hcl:"token"` + VaultAWSEngine *common.FlatVaultAWSEngineOptions `mapstructure:"vault_aws_engine" required:"false" cty:"vault_aws_engine" hcl:"vault_aws_engine"` + PollingConfig *common.FlatAWSPollingConfig `mapstructure:"aws_polling" required:"false" cty:"aws_polling" hcl:"aws_polling"` + AMIName *string `mapstructure:"ami_name" required:"true" cty:"ami_name" hcl:"ami_name"` + AMIDescription *string `mapstructure:"ami_description" required:"false" cty:"ami_description" hcl:"ami_description"` + AMIVirtType *string `mapstructure:"ami_virtualization_type" required:"false" cty:"ami_virtualization_type" hcl:"ami_virtualization_type"` + AMIUsers []string `mapstructure:"ami_users" required:"false" cty:"ami_users" hcl:"ami_users"` + AMIGroups []string `mapstructure:"ami_groups" required:"false" cty:"ami_groups" hcl:"ami_groups"` + AMIProductCodes []string `mapstructure:"ami_product_codes" required:"false" cty:"ami_product_codes" hcl:"ami_product_codes"` + AMIRegions []string `mapstructure:"ami_regions" required:"false" cty:"ami_regions" hcl:"ami_regions"` + AMISkipRegionValidation *bool `mapstructure:"skip_region_validation" required:"false" cty:"skip_region_validation" hcl:"skip_region_validation"` + AMITags map[string]string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` + AMITag []config.FlatKeyValue `mapstructure:"tag" required:"false" cty:"tag" hcl:"tag"` + AMIENASupport *bool `mapstructure:"ena_support" required:"false" cty:"ena_support" hcl:"ena_support"` + AMISriovNetSupport *bool `mapstructure:"sriov_support" required:"false" cty:"sriov_support" hcl:"sriov_support"` + AMIForceDeregister *bool `mapstructure:"force_deregister" required:"false" cty:"force_deregister" hcl:"force_deregister"` + AMIForceDeleteSnapshot *bool `mapstructure:"force_delete_snapshot" required:"false" cty:"force_delete_snapshot" hcl:"force_delete_snapshot"` + AMIEncryptBootVolume *bool `mapstructure:"encrypt_boot" required:"false" cty:"encrypt_boot" hcl:"encrypt_boot"` + AMIKmsKeyId *string `mapstructure:"kms_key_id" required:"false" cty:"kms_key_id" hcl:"kms_key_id"` + AMIRegionKMSKeyIDs map[string]string `mapstructure:"region_kms_key_ids" required:"false" cty:"region_kms_key_ids" hcl:"region_kms_key_ids"` + AMISkipBuildRegion *bool `mapstructure:"skip_save_build_region" cty:"skip_save_build_region" hcl:"skip_save_build_region"` + SnapshotTags map[string]string `mapstructure:"snapshot_tags" required:"false" cty:"snapshot_tags" hcl:"snapshot_tags"` + SnapshotTag []config.FlatKeyValue `mapstructure:"snapshot_tag" required:"false" cty:"snapshot_tag" hcl:"snapshot_tag"` + SnapshotUsers []string `mapstructure:"snapshot_users" required:"false" cty:"snapshot_users" hcl:"snapshot_users"` + SnapshotGroups []string `mapstructure:"snapshot_groups" required:"false" cty:"snapshot_groups" hcl:"snapshot_groups"` + AssociatePublicIpAddress *bool `mapstructure:"associate_public_ip_address" required:"false" cty:"associate_public_ip_address" hcl:"associate_public_ip_address"` + AvailabilityZone *string `mapstructure:"availability_zone" required:"false" cty:"availability_zone" hcl:"availability_zone"` + BlockDurationMinutes *int64 `mapstructure:"block_duration_minutes" required:"false" cty:"block_duration_minutes" hcl:"block_duration_minutes"` + DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + EbsOptimized *bool `mapstructure:"ebs_optimized" required:"false" cty:"ebs_optimized" hcl:"ebs_optimized"` + EnableT2Unlimited *bool `mapstructure:"enable_t2_unlimited" required:"false" cty:"enable_t2_unlimited" hcl:"enable_t2_unlimited"` + IamInstanceProfile *string `mapstructure:"iam_instance_profile" required:"false" cty:"iam_instance_profile" hcl:"iam_instance_profile"` + SkipProfileValidation *bool `mapstructure:"skip_profile_validation" required:"false" cty:"skip_profile_validation" hcl:"skip_profile_validation"` + TemporaryIamInstanceProfilePolicyDocument *common.FlatPolicyDocument `mapstructure:"temporary_iam_instance_profile_policy_document" required:"false" cty:"temporary_iam_instance_profile_policy_document" hcl:"temporary_iam_instance_profile_policy_document"` + InstanceInitiatedShutdownBehavior *string `mapstructure:"shutdown_behavior" required:"false" cty:"shutdown_behavior" hcl:"shutdown_behavior"` + InstanceType *string `mapstructure:"instance_type" required:"true" cty:"instance_type" hcl:"instance_type"` + SecurityGroupFilter *common.FlatSecurityGroupFilterOptions `mapstructure:"security_group_filter" required:"false" cty:"security_group_filter" hcl:"security_group_filter"` + RunTags map[string]string `mapstructure:"run_tags" required:"false" cty:"run_tags" hcl:"run_tags"` + RunTag []config.FlatKeyValue `mapstructure:"run_tag" required:"false" cty:"run_tag" hcl:"run_tag"` + SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` + SecurityGroupIds []string `mapstructure:"security_group_ids" required:"false" cty:"security_group_ids" hcl:"security_group_ids"` + SourceAmi *string `mapstructure:"source_ami" required:"true" cty:"source_ami" hcl:"source_ami"` + SourceAmiFilter *common.FlatAmiFilterOptions `mapstructure:"source_ami_filter" required:"false" cty:"source_ami_filter" hcl:"source_ami_filter"` + SpotInstanceTypes []string `mapstructure:"spot_instance_types" required:"false" cty:"spot_instance_types" hcl:"spot_instance_types"` + SpotPrice *string `mapstructure:"spot_price" required:"false" cty:"spot_price" hcl:"spot_price"` + SpotPriceAutoProduct *string `mapstructure:"spot_price_auto_product" required:"false" undocumented:"true" cty:"spot_price_auto_product" hcl:"spot_price_auto_product"` + SpotTags map[string]string `mapstructure:"spot_tags" required:"false" cty:"spot_tags" hcl:"spot_tags"` + SpotTag []config.FlatKeyValue `mapstructure:"spot_tag" required:"false" cty:"spot_tag" hcl:"spot_tag"` + SubnetFilter *common.FlatSubnetFilterOptions `mapstructure:"subnet_filter" required:"false" cty:"subnet_filter" hcl:"subnet_filter"` + SubnetId *string `mapstructure:"subnet_id" required:"false" cty:"subnet_id" hcl:"subnet_id"` + Tenancy *string `mapstructure:"tenancy" required:"false" cty:"tenancy" hcl:"tenancy"` + TemporarySGSourceCidrs []string `mapstructure:"temporary_security_group_source_cidrs" required:"false" cty:"temporary_security_group_source_cidrs" hcl:"temporary_security_group_source_cidrs"` + UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` + UserDataFile *string `mapstructure:"user_data_file" required:"false" cty:"user_data_file" hcl:"user_data_file"` + VpcFilter *common.FlatVpcFilterOptions `mapstructure:"vpc_filter" required:"false" cty:"vpc_filter" hcl:"vpc_filter"` + VpcId *string `mapstructure:"vpc_id" required:"false" cty:"vpc_id" hcl:"vpc_id"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` + Metadata *common.FlatMetadataOptions `mapstructure:"metadata_options" required:"false" cty:"metadata_options" hcl:"metadata_options"` + Type *string `mapstructure:"communicator" cty:"communicator" hcl:"communicator"` + PauseBeforeConnect *string `mapstructure:"pause_before_connecting" cty:"pause_before_connecting" hcl:"pause_before_connecting"` + SSHHost *string `mapstructure:"ssh_host" cty:"ssh_host" hcl:"ssh_host"` + SSHPort *int `mapstructure:"ssh_port" cty:"ssh_port" hcl:"ssh_port"` + SSHUsername *string `mapstructure:"ssh_username" cty:"ssh_username" hcl:"ssh_username"` + SSHPassword *string `mapstructure:"ssh_password" cty:"ssh_password" hcl:"ssh_password"` + SSHKeyPairName *string `mapstructure:"ssh_keypair_name" undocumented:"true" cty:"ssh_keypair_name" hcl:"ssh_keypair_name"` + SSHTemporaryKeyPairName *string `mapstructure:"temporary_key_pair_name" undocumented:"true" cty:"temporary_key_pair_name" hcl:"temporary_key_pair_name"` + SSHTemporaryKeyPairType *string `mapstructure:"temporary_key_pair_type" cty:"temporary_key_pair_type" hcl:"temporary_key_pair_type"` + SSHTemporaryKeyPairBits *int `mapstructure:"temporary_key_pair_bits" cty:"temporary_key_pair_bits" hcl:"temporary_key_pair_bits"` + SSHCiphers []string `mapstructure:"ssh_ciphers" cty:"ssh_ciphers" hcl:"ssh_ciphers"` + SSHClearAuthorizedKeys *bool `mapstructure:"ssh_clear_authorized_keys" cty:"ssh_clear_authorized_keys" hcl:"ssh_clear_authorized_keys"` + SSHKEXAlgos []string `mapstructure:"ssh_key_exchange_algorithms" cty:"ssh_key_exchange_algorithms" hcl:"ssh_key_exchange_algorithms"` + SSHPrivateKeyFile *string `mapstructure:"ssh_private_key_file" undocumented:"true" cty:"ssh_private_key_file" hcl:"ssh_private_key_file"` + SSHCertificateFile *string `mapstructure:"ssh_certificate_file" cty:"ssh_certificate_file" hcl:"ssh_certificate_file"` + SSHPty *bool `mapstructure:"ssh_pty" cty:"ssh_pty" hcl:"ssh_pty"` + SSHTimeout *string `mapstructure:"ssh_timeout" cty:"ssh_timeout" hcl:"ssh_timeout"` + SSHWaitTimeout *string `mapstructure:"ssh_wait_timeout" undocumented:"true" cty:"ssh_wait_timeout" hcl:"ssh_wait_timeout"` + SSHAgentAuth *bool `mapstructure:"ssh_agent_auth" undocumented:"true" cty:"ssh_agent_auth" hcl:"ssh_agent_auth"` + SSHDisableAgentForwarding *bool `mapstructure:"ssh_disable_agent_forwarding" cty:"ssh_disable_agent_forwarding" hcl:"ssh_disable_agent_forwarding"` + SSHHandshakeAttempts *int `mapstructure:"ssh_handshake_attempts" cty:"ssh_handshake_attempts" hcl:"ssh_handshake_attempts"` + SSHBastionHost *string `mapstructure:"ssh_bastion_host" cty:"ssh_bastion_host" hcl:"ssh_bastion_host"` + SSHBastionPort *int `mapstructure:"ssh_bastion_port" cty:"ssh_bastion_port" hcl:"ssh_bastion_port"` + SSHBastionAgentAuth *bool `mapstructure:"ssh_bastion_agent_auth" cty:"ssh_bastion_agent_auth" hcl:"ssh_bastion_agent_auth"` + SSHBastionUsername *string `mapstructure:"ssh_bastion_username" cty:"ssh_bastion_username" hcl:"ssh_bastion_username"` + SSHBastionPassword *string `mapstructure:"ssh_bastion_password" cty:"ssh_bastion_password" hcl:"ssh_bastion_password"` + SSHBastionInteractive *bool `mapstructure:"ssh_bastion_interactive" cty:"ssh_bastion_interactive" hcl:"ssh_bastion_interactive"` + SSHBastionPrivateKeyFile *string `mapstructure:"ssh_bastion_private_key_file" cty:"ssh_bastion_private_key_file" hcl:"ssh_bastion_private_key_file"` + SSHBastionCertificateFile *string `mapstructure:"ssh_bastion_certificate_file" cty:"ssh_bastion_certificate_file" hcl:"ssh_bastion_certificate_file"` + SSHFileTransferMethod *string `mapstructure:"ssh_file_transfer_method" cty:"ssh_file_transfer_method" hcl:"ssh_file_transfer_method"` + SSHProxyHost *string `mapstructure:"ssh_proxy_host" cty:"ssh_proxy_host" hcl:"ssh_proxy_host"` + SSHProxyPort *int `mapstructure:"ssh_proxy_port" cty:"ssh_proxy_port" hcl:"ssh_proxy_port"` + SSHProxyUsername *string `mapstructure:"ssh_proxy_username" cty:"ssh_proxy_username" hcl:"ssh_proxy_username"` + SSHProxyPassword *string `mapstructure:"ssh_proxy_password" cty:"ssh_proxy_password" hcl:"ssh_proxy_password"` + SSHKeepAliveInterval *string `mapstructure:"ssh_keep_alive_interval" cty:"ssh_keep_alive_interval" hcl:"ssh_keep_alive_interval"` + SSHReadWriteTimeout *string `mapstructure:"ssh_read_write_timeout" cty:"ssh_read_write_timeout" hcl:"ssh_read_write_timeout"` + SSHRemoteTunnels []string `mapstructure:"ssh_remote_tunnels" cty:"ssh_remote_tunnels" hcl:"ssh_remote_tunnels"` + SSHLocalTunnels []string `mapstructure:"ssh_local_tunnels" cty:"ssh_local_tunnels" hcl:"ssh_local_tunnels"` + SSHPublicKey []byte `mapstructure:"ssh_public_key" undocumented:"true" cty:"ssh_public_key" hcl:"ssh_public_key"` + SSHPrivateKey []byte `mapstructure:"ssh_private_key" undocumented:"true" cty:"ssh_private_key" hcl:"ssh_private_key"` + WinRMUser *string `mapstructure:"winrm_username" cty:"winrm_username" hcl:"winrm_username"` + WinRMPassword *string `mapstructure:"winrm_password" cty:"winrm_password" hcl:"winrm_password"` + WinRMHost *string `mapstructure:"winrm_host" cty:"winrm_host" hcl:"winrm_host"` + WinRMNoProxy *bool `mapstructure:"winrm_no_proxy" cty:"winrm_no_proxy" hcl:"winrm_no_proxy"` + WinRMPort *int `mapstructure:"winrm_port" cty:"winrm_port" hcl:"winrm_port"` + WinRMTimeout *string `mapstructure:"winrm_timeout" cty:"winrm_timeout" hcl:"winrm_timeout"` + WinRMUseSSL *bool `mapstructure:"winrm_use_ssl" cty:"winrm_use_ssl" hcl:"winrm_use_ssl"` + WinRMInsecure *bool `mapstructure:"winrm_insecure" cty:"winrm_insecure" hcl:"winrm_insecure"` + WinRMUseNTLM *bool `mapstructure:"winrm_use_ntlm" cty:"winrm_use_ntlm" hcl:"winrm_use_ntlm"` + SSHInterface *string `mapstructure:"ssh_interface" cty:"ssh_interface" hcl:"ssh_interface"` + PauseBeforeSSM *string `mapstructure:"pause_before_ssm" cty:"pause_before_ssm" hcl:"pause_before_ssm"` + SessionManagerPort *int `mapstructure:"session_manager_port" cty:"session_manager_port" hcl:"session_manager_port"` + AMIMappings []common.FlatBlockDevice `mapstructure:"ami_block_device_mappings" required:"false" cty:"ami_block_device_mappings" hcl:"ami_block_device_mappings"` + LaunchMappings []common.FlatBlockDevice `mapstructure:"launch_block_device_mappings" required:"false" cty:"launch_block_device_mappings" hcl:"launch_block_device_mappings"` + AccountId *string `mapstructure:"account_id" required:"true" cty:"account_id" hcl:"account_id"` + BundleDestination *string `mapstructure:"bundle_destination" required:"false" cty:"bundle_destination" hcl:"bundle_destination"` + BundlePrefix *string `mapstructure:"bundle_prefix" required:"false" cty:"bundle_prefix" hcl:"bundle_prefix"` + BundleUploadCommand *string `mapstructure:"bundle_upload_command" required:"false" cty:"bundle_upload_command" hcl:"bundle_upload_command"` + BundleVolCommand *string `mapstructure:"bundle_vol_command" required:"false" cty:"bundle_vol_command" hcl:"bundle_vol_command"` + S3Bucket *string `mapstructure:"s3_bucket" required:"true" cty:"s3_bucket" hcl:"s3_bucket"` + X509CertPath *string `mapstructure:"x509_cert_path" required:"true" cty:"x509_cert_path" hcl:"x509_cert_path"` + X509KeyPath *string `mapstructure:"x509_key_path" required:"true" cty:"x509_key_path" hcl:"x509_key_path"` + X509UploadPath *string `mapstructure:"x509_upload_path" required:"false" cty:"x509_upload_path" hcl:"x509_upload_path"` } // FlatMapstructure returns a new FlatConfig. // FlatConfig is an auto-generated flat version of Config. // Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { -return new(FlatConfig) + return new(FlatConfig) } // HCL2Spec returns the hcl spec of a Config. // This spec is used by HCL to read the fields of Config. // The decoded values from this spec will then be applied to a FlatConfig. func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { -s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name:"packer_build_name", Type:cty.String, Required:false}, - "packer_builder_type": &hcldec.AttrSpec{Name:"packer_builder_type", Type:cty.String, Required:false}, - "packer_core_version": &hcldec.AttrSpec{Name:"packer_core_version", Type:cty.String, Required:false}, - "packer_debug": &hcldec.AttrSpec{Name:"packer_debug", Type:cty.Bool, Required:false}, - "packer_force": &hcldec.AttrSpec{Name:"packer_force", Type:cty.Bool, Required:false}, - "packer_on_error": &hcldec.AttrSpec{Name:"packer_on_error", Type:cty.String, Required:false}, - "packer_user_variables": &hcldec.AttrSpec{Name:"packer_user_variables", Type:cty.Map(cty.String), Required:false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name:"packer_sensitive_variables", Type:cty.List(cty.String), Required:false}, - "access_key": &hcldec.AttrSpec{Name:"access_key", Type:cty.String, Required:false}, - "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, - "custom_endpoint_ec2": &hcldec.AttrSpec{Name:"custom_endpoint_ec2", Type:cty.String, Required:false}, - "shared_credentials_file": &hcldec.AttrSpec{Name:"shared_credentials_file", Type:cty.String, Required:false}, - "decode_authorization_messages": &hcldec.AttrSpec{Name:"decode_authorization_messages", Type:cty.Bool, Required:false}, - "insecure_skip_tls_verify": &hcldec.AttrSpec{Name:"insecure_skip_tls_verify", Type:cty.Bool, Required:false}, - "max_retries": &hcldec.AttrSpec{Name:"max_retries", Type:cty.Number, Required:false}, - "mfa_code": &hcldec.AttrSpec{Name:"mfa_code", Type:cty.String, Required:false}, - "profile": &hcldec.AttrSpec{Name:"profile", Type:cty.String, Required:false}, - "region": &hcldec.AttrSpec{Name:"region", Type:cty.String, Required:false}, - "secret_key": &hcldec.AttrSpec{Name:"secret_key", Type:cty.String, Required:false}, - "skip_metadata_api_check": &hcldec.AttrSpec{Name:"skip_metadata_api_check", Type:cty.Bool, Required:false}, - "skip_credential_validation": &hcldec.AttrSpec{Name:"skip_credential_validation", Type:cty.Bool, Required:false}, - "token": &hcldec.AttrSpec{Name:"token", Type:cty.String, Required:false}, - "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, - "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, - "ami_name": &hcldec.AttrSpec{Name:"ami_name", Type:cty.String, Required:false}, - "ami_description": &hcldec.AttrSpec{Name:"ami_description", Type:cty.String, Required:false}, - "ami_virtualization_type": &hcldec.AttrSpec{Name:"ami_virtualization_type", Type:cty.String, Required:false}, - "ami_users": &hcldec.AttrSpec{Name:"ami_users", Type:cty.List(cty.String), Required:false}, - "ami_groups": &hcldec.AttrSpec{Name:"ami_groups", Type:cty.List(cty.String), Required:false}, - "ami_product_codes": &hcldec.AttrSpec{Name:"ami_product_codes", Type:cty.List(cty.String), Required:false}, - "ami_regions": &hcldec.AttrSpec{Name:"ami_regions", Type:cty.List(cty.String), Required:false}, - "skip_region_validation": &hcldec.AttrSpec{Name:"skip_region_validation", Type:cty.Bool, Required:false}, - "tags": &hcldec.AttrSpec{Name:"tags", Type:cty.Map(cty.String), Required:false}, - "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "ena_support": &hcldec.AttrSpec{Name:"ena_support", Type:cty.Bool, Required:false}, - "sriov_support": &hcldec.AttrSpec{Name:"sriov_support", Type:cty.Bool, Required:false}, - "force_deregister": &hcldec.AttrSpec{Name:"force_deregister", Type:cty.Bool, Required:false}, - "force_delete_snapshot": &hcldec.AttrSpec{Name:"force_delete_snapshot", Type:cty.Bool, Required:false}, - "encrypt_boot": &hcldec.AttrSpec{Name:"encrypt_boot", Type:cty.Bool, Required:false}, - "kms_key_id": &hcldec.AttrSpec{Name:"kms_key_id", Type:cty.String, Required:false}, - "region_kms_key_ids": &hcldec.AttrSpec{Name:"region_kms_key_ids", Type:cty.Map(cty.String), Required:false}, - "skip_save_build_region": &hcldec.AttrSpec{Name:"skip_save_build_region", Type:cty.Bool, Required:false}, - "snapshot_tags": &hcldec.AttrSpec{Name:"snapshot_tags", Type:cty.Map(cty.String), Required:false}, - "snapshot_tag": &hcldec.AttrSpec{Name:"snapshot_tag", Type:cty.String, Required:false}, - "snapshot_users": &hcldec.AttrSpec{Name:"snapshot_users", Type:cty.List(cty.String), Required:false}, - "snapshot_groups": &hcldec.AttrSpec{Name:"snapshot_groups", Type:cty.List(cty.String), Required:false}, - "associate_public_ip_address": &hcldec.AttrSpec{Name:"associate_public_ip_address", Type:cty.Bool, Required:false}, - "availability_zone": &hcldec.AttrSpec{Name:"availability_zone", Type:cty.String, Required:false}, - "block_duration_minutes": &hcldec.AttrSpec{Name:"block_duration_minutes", Type:cty.Number, Required:false}, - "disable_stop_instance": &hcldec.AttrSpec{Name:"disable_stop_instance", Type:cty.Bool, Required:false}, - "ebs_optimized": &hcldec.AttrSpec{Name:"ebs_optimized", Type:cty.Bool, Required:false}, - "enable_t2_unlimited": &hcldec.AttrSpec{Name:"enable_t2_unlimited", Type:cty.Bool, Required:false}, - "iam_instance_profile": &hcldec.AttrSpec{Name:"iam_instance_profile", Type:cty.String, Required:false}, - "skip_profile_validation": &hcldec.AttrSpec{Name:"skip_profile_validation", Type:cty.Bool, Required:false}, - "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, - "shutdown_behavior": &hcldec.AttrSpec{Name:"shutdown_behavior", Type:cty.String, Required:false}, - "instance_type": &hcldec.AttrSpec{Name:"instance_type", Type:cty.String, Required:false}, - "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, - "run_tags": &hcldec.AttrSpec{Name:"run_tags", Type:cty.Map(cty.String), Required:false}, - "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "security_group_id": &hcldec.AttrSpec{Name:"security_group_id", Type:cty.String, Required:false}, - "security_group_ids": &hcldec.AttrSpec{Name:"security_group_ids", Type:cty.List(cty.String), Required:false}, - "source_ami": &hcldec.AttrSpec{Name:"source_ami", Type:cty.String, Required:false}, - "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, - "spot_instance_types": &hcldec.AttrSpec{Name:"spot_instance_types", Type:cty.List(cty.String), Required:false}, - "spot_price": &hcldec.AttrSpec{Name:"spot_price", Type:cty.String, Required:false}, - "spot_price_auto_product": &hcldec.AttrSpec{Name:"spot_price_auto_product", Type:cty.String, Required:false}, - "spot_tags": &hcldec.AttrSpec{Name:"spot_tags", Type:cty.Map(cty.String), Required:false}, - "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, - "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, - "subnet_id": &hcldec.AttrSpec{Name:"subnet_id", Type:cty.String, Required:false}, - "tenancy": &hcldec.AttrSpec{Name:"tenancy", Type:cty.String, Required:false}, - "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name:"temporary_security_group_source_cidrs", Type:cty.List(cty.String), Required:false}, - "user_data": &hcldec.AttrSpec{Name:"user_data", Type:cty.String, Required:false}, - "user_data_file": &hcldec.AttrSpec{Name:"user_data_file", Type:cty.String, Required:false}, - "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, - "vpc_id": &hcldec.AttrSpec{Name:"vpc_id", Type:cty.String, Required:false}, - "windows_password_timeout": &hcldec.AttrSpec{Name:"windows_password_timeout", Type:cty.String, Required:false}, - "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, - "communicator": &hcldec.AttrSpec{Name:"communicator", Type:cty.String, Required:false}, - "pause_before_connecting": &hcldec.AttrSpec{Name:"pause_before_connecting", Type:cty.String, Required:false}, - "ssh_host": &hcldec.AttrSpec{Name:"ssh_host", Type:cty.String, Required:false}, - "ssh_port": &hcldec.AttrSpec{Name:"ssh_port", Type:cty.Number, Required:false}, - "ssh_username": &hcldec.AttrSpec{Name:"ssh_username", Type:cty.String, Required:false}, - "ssh_password": &hcldec.AttrSpec{Name:"ssh_password", Type:cty.String, Required:false}, - "ssh_keypair_name": &hcldec.AttrSpec{Name:"ssh_keypair_name", Type:cty.String, Required:false}, - "temporary_key_pair_name": &hcldec.AttrSpec{Name:"temporary_key_pair_name", Type:cty.String, Required:false}, - "temporary_key_pair_type": &hcldec.AttrSpec{Name:"temporary_key_pair_type", Type:cty.String, Required:false}, - "temporary_key_pair_bits": &hcldec.AttrSpec{Name:"temporary_key_pair_bits", Type:cty.Number, Required:false}, - "ssh_ciphers": &hcldec.AttrSpec{Name:"ssh_ciphers", Type:cty.List(cty.String), Required:false}, - "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name:"ssh_clear_authorized_keys", Type:cty.Bool, Required:false}, - "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name:"ssh_key_exchange_algorithms", Type:cty.List(cty.String), Required:false}, - "ssh_private_key_file": &hcldec.AttrSpec{Name:"ssh_private_key_file", Type:cty.String, Required:false}, - "ssh_certificate_file": &hcldec.AttrSpec{Name:"ssh_certificate_file", Type:cty.String, Required:false}, - "ssh_pty": &hcldec.AttrSpec{Name:"ssh_pty", Type:cty.Bool, Required:false}, - "ssh_timeout": &hcldec.AttrSpec{Name:"ssh_timeout", Type:cty.String, Required:false}, - "ssh_wait_timeout": &hcldec.AttrSpec{Name:"ssh_wait_timeout", Type:cty.String, Required:false}, - "ssh_agent_auth": &hcldec.AttrSpec{Name:"ssh_agent_auth", Type:cty.Bool, Required:false}, - "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name:"ssh_disable_agent_forwarding", Type:cty.Bool, Required:false}, - "ssh_handshake_attempts": &hcldec.AttrSpec{Name:"ssh_handshake_attempts", Type:cty.Number, Required:false}, - "ssh_bastion_host": &hcldec.AttrSpec{Name:"ssh_bastion_host", Type:cty.String, Required:false}, - "ssh_bastion_port": &hcldec.AttrSpec{Name:"ssh_bastion_port", Type:cty.Number, Required:false}, - "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name:"ssh_bastion_agent_auth", Type:cty.Bool, Required:false}, - "ssh_bastion_username": &hcldec.AttrSpec{Name:"ssh_bastion_username", Type:cty.String, Required:false}, - "ssh_bastion_password": &hcldec.AttrSpec{Name:"ssh_bastion_password", Type:cty.String, Required:false}, - "ssh_bastion_interactive": &hcldec.AttrSpec{Name:"ssh_bastion_interactive", Type:cty.Bool, Required:false}, - "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name:"ssh_bastion_private_key_file", Type:cty.String, Required:false}, - "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name:"ssh_bastion_certificate_file", Type:cty.String, Required:false}, - "ssh_file_transfer_method": &hcldec.AttrSpec{Name:"ssh_file_transfer_method", Type:cty.String, Required:false}, - "ssh_proxy_host": &hcldec.AttrSpec{Name:"ssh_proxy_host", Type:cty.String, Required:false}, - "ssh_proxy_port": &hcldec.AttrSpec{Name:"ssh_proxy_port", Type:cty.Number, Required:false}, - "ssh_proxy_username": &hcldec.AttrSpec{Name:"ssh_proxy_username", Type:cty.String, Required:false}, - "ssh_proxy_password": &hcldec.AttrSpec{Name:"ssh_proxy_password", Type:cty.String, Required:false}, - "ssh_keep_alive_interval": &hcldec.AttrSpec{Name:"ssh_keep_alive_interval", Type:cty.String, Required:false}, - "ssh_read_write_timeout": &hcldec.AttrSpec{Name:"ssh_read_write_timeout", Type:cty.String, Required:false}, - "ssh_remote_tunnels": &hcldec.AttrSpec{Name:"ssh_remote_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_local_tunnels": &hcldec.AttrSpec{Name:"ssh_local_tunnels", Type:cty.List(cty.String), Required:false}, - "ssh_public_key": &hcldec.AttrSpec{Name:"ssh_public_key", Type:cty.List(cty.Number), Required:false}, - "ssh_private_key": &hcldec.AttrSpec{Name:"ssh_private_key", Type:cty.List(cty.Number), Required:false}, - "winrm_username": &hcldec.AttrSpec{Name:"winrm_username", Type:cty.String, Required:false}, - "winrm_password": &hcldec.AttrSpec{Name:"winrm_password", Type:cty.String, Required:false}, - "winrm_host": &hcldec.AttrSpec{Name:"winrm_host", Type:cty.String, Required:false}, - "winrm_no_proxy": &hcldec.AttrSpec{Name:"winrm_no_proxy", Type:cty.Bool, Required:false}, - "winrm_port": &hcldec.AttrSpec{Name:"winrm_port", Type:cty.Number, Required:false}, - "winrm_timeout": &hcldec.AttrSpec{Name:"winrm_timeout", Type:cty.String, Required:false}, - "winrm_use_ssl": &hcldec.AttrSpec{Name:"winrm_use_ssl", Type:cty.Bool, Required:false}, - "winrm_insecure": &hcldec.AttrSpec{Name:"winrm_insecure", Type:cty.Bool, Required:false}, - "winrm_use_ntlm": &hcldec.AttrSpec{Name:"winrm_use_ntlm", Type:cty.Bool, Required:false}, - "ssh_interface": &hcldec.AttrSpec{Name:"ssh_interface", Type:cty.String, Required:false}, - "pause_before_ssm": &hcldec.AttrSpec{Name:"pause_before_ssm", Type:cty.String, Required:false}, - "session_manager_port": &hcldec.AttrSpec{Name:"session_manager_port", Type:cty.Number, Required:false}, - "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, - "account_id": &hcldec.AttrSpec{Name:"account_id", Type:cty.String, Required:false}, - "bundle_destination": &hcldec.AttrSpec{Name:"bundle_destination", Type:cty.String, Required:false}, - "bundle_prefix": &hcldec.AttrSpec{Name:"bundle_prefix", Type:cty.String, Required:false}, - "bundle_upload_command": &hcldec.AttrSpec{Name:"bundle_upload_command", Type:cty.String, Required:false}, - "bundle_vol_command": &hcldec.AttrSpec{Name:"bundle_vol_command", Type:cty.String, Required:false}, - "s3_bucket": &hcldec.AttrSpec{Name:"s3_bucket", Type:cty.String, Required:false}, - "x509_cert_path": &hcldec.AttrSpec{Name:"x509_cert_path", Type:cty.String, Required:false}, - "x509_key_path": &hcldec.AttrSpec{Name:"x509_key_path", Type:cty.String, Required:false}, - "x509_upload_path": &hcldec.AttrSpec{Name:"x509_upload_path", Type:cty.String, Required:false}, -} -return s + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "access_key": &hcldec.AttrSpec{Name: "access_key", Type: cty.String, Required: false}, + "assume_role": &hcldec.BlockSpec{TypeName: "assume_role", Nested: hcldec.ObjectSpec((*common.FlatAssumeRoleConfig)(nil).HCL2Spec())}, + "custom_endpoint_ec2": &hcldec.AttrSpec{Name: "custom_endpoint_ec2", Type: cty.String, Required: false}, + "shared_credentials_file": &hcldec.AttrSpec{Name: "shared_credentials_file", Type: cty.String, Required: false}, + "decode_authorization_messages": &hcldec.AttrSpec{Name: "decode_authorization_messages", Type: cty.Bool, Required: false}, + "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, + "max_retries": &hcldec.AttrSpec{Name: "max_retries", Type: cty.Number, Required: false}, + "mfa_code": &hcldec.AttrSpec{Name: "mfa_code", Type: cty.String, Required: false}, + "profile": &hcldec.AttrSpec{Name: "profile", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "secret_key": &hcldec.AttrSpec{Name: "secret_key", Type: cty.String, Required: false}, + "skip_metadata_api_check": &hcldec.AttrSpec{Name: "skip_metadata_api_check", Type: cty.Bool, Required: false}, + "skip_credential_validation": &hcldec.AttrSpec{Name: "skip_credential_validation", Type: cty.Bool, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, + "vault_aws_engine": &hcldec.BlockSpec{TypeName: "vault_aws_engine", Nested: hcldec.ObjectSpec((*common.FlatVaultAWSEngineOptions)(nil).HCL2Spec())}, + "aws_polling": &hcldec.BlockSpec{TypeName: "aws_polling", Nested: hcldec.ObjectSpec((*common.FlatAWSPollingConfig)(nil).HCL2Spec())}, + "ami_name": &hcldec.AttrSpec{Name: "ami_name", Type: cty.String, Required: false}, + "ami_description": &hcldec.AttrSpec{Name: "ami_description", Type: cty.String, Required: false}, + "ami_virtualization_type": &hcldec.AttrSpec{Name: "ami_virtualization_type", Type: cty.String, Required: false}, + "ami_users": &hcldec.AttrSpec{Name: "ami_users", Type: cty.List(cty.String), Required: false}, + "ami_groups": &hcldec.AttrSpec{Name: "ami_groups", Type: cty.List(cty.String), Required: false}, + "ami_product_codes": &hcldec.AttrSpec{Name: "ami_product_codes", Type: cty.List(cty.String), Required: false}, + "ami_regions": &hcldec.AttrSpec{Name: "ami_regions", Type: cty.List(cty.String), Required: false}, + "skip_region_validation": &hcldec.AttrSpec{Name: "skip_region_validation", Type: cty.Bool, Required: false}, + "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.Map(cty.String), Required: false}, + "tag": &hcldec.BlockListSpec{TypeName: "tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "ena_support": &hcldec.AttrSpec{Name: "ena_support", Type: cty.Bool, Required: false}, + "sriov_support": &hcldec.AttrSpec{Name: "sriov_support", Type: cty.Bool, Required: false}, + "force_deregister": &hcldec.AttrSpec{Name: "force_deregister", Type: cty.Bool, Required: false}, + "force_delete_snapshot": &hcldec.AttrSpec{Name: "force_delete_snapshot", Type: cty.Bool, Required: false}, + "encrypt_boot": &hcldec.AttrSpec{Name: "encrypt_boot", Type: cty.Bool, Required: false}, + "kms_key_id": &hcldec.AttrSpec{Name: "kms_key_id", Type: cty.String, Required: false}, + "region_kms_key_ids": &hcldec.AttrSpec{Name: "region_kms_key_ids", Type: cty.Map(cty.String), Required: false}, + "skip_save_build_region": &hcldec.AttrSpec{Name: "skip_save_build_region", Type: cty.Bool, Required: false}, + "snapshot_tags": &hcldec.AttrSpec{Name: "snapshot_tags", Type: cty.Map(cty.String), Required: false}, + "snapshot_tag": &hcldec.BlockListSpec{TypeName: "snapshot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "snapshot_users": &hcldec.AttrSpec{Name: "snapshot_users", Type: cty.List(cty.String), Required: false}, + "snapshot_groups": &hcldec.AttrSpec{Name: "snapshot_groups", Type: cty.List(cty.String), Required: false}, + "associate_public_ip_address": &hcldec.AttrSpec{Name: "associate_public_ip_address", Type: cty.Bool, Required: false}, + "availability_zone": &hcldec.AttrSpec{Name: "availability_zone", Type: cty.String, Required: false}, + "block_duration_minutes": &hcldec.AttrSpec{Name: "block_duration_minutes", Type: cty.Number, Required: false}, + "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, + "ebs_optimized": &hcldec.AttrSpec{Name: "ebs_optimized", Type: cty.Bool, Required: false}, + "enable_t2_unlimited": &hcldec.AttrSpec{Name: "enable_t2_unlimited", Type: cty.Bool, Required: false}, + "iam_instance_profile": &hcldec.AttrSpec{Name: "iam_instance_profile", Type: cty.String, Required: false}, + "skip_profile_validation": &hcldec.AttrSpec{Name: "skip_profile_validation", Type: cty.Bool, Required: false}, + "temporary_iam_instance_profile_policy_document": &hcldec.BlockSpec{TypeName: "temporary_iam_instance_profile_policy_document", Nested: hcldec.ObjectSpec((*common.FlatPolicyDocument)(nil).HCL2Spec())}, + "shutdown_behavior": &hcldec.AttrSpec{Name: "shutdown_behavior", Type: cty.String, Required: false}, + "instance_type": &hcldec.AttrSpec{Name: "instance_type", Type: cty.String, Required: false}, + "security_group_filter": &hcldec.BlockSpec{TypeName: "security_group_filter", Nested: hcldec.ObjectSpec((*common.FlatSecurityGroupFilterOptions)(nil).HCL2Spec())}, + "run_tags": &hcldec.AttrSpec{Name: "run_tags", Type: cty.Map(cty.String), Required: false}, + "run_tag": &hcldec.BlockListSpec{TypeName: "run_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, + "security_group_ids": &hcldec.AttrSpec{Name: "security_group_ids", Type: cty.List(cty.String), Required: false}, + "source_ami": &hcldec.AttrSpec{Name: "source_ami", Type: cty.String, Required: false}, + "source_ami_filter": &hcldec.BlockSpec{TypeName: "source_ami_filter", Nested: hcldec.ObjectSpec((*common.FlatAmiFilterOptions)(nil).HCL2Spec())}, + "spot_instance_types": &hcldec.AttrSpec{Name: "spot_instance_types", Type: cty.List(cty.String), Required: false}, + "spot_price": &hcldec.AttrSpec{Name: "spot_price", Type: cty.String, Required: false}, + "spot_price_auto_product": &hcldec.AttrSpec{Name: "spot_price_auto_product", Type: cty.String, Required: false}, + "spot_tags": &hcldec.AttrSpec{Name: "spot_tags", Type: cty.Map(cty.String), Required: false}, + "spot_tag": &hcldec.BlockListSpec{TypeName: "spot_tag", Nested: hcldec.ObjectSpec((*config.FlatKeyValue)(nil).HCL2Spec())}, + "subnet_filter": &hcldec.BlockSpec{TypeName: "subnet_filter", Nested: hcldec.ObjectSpec((*common.FlatSubnetFilterOptions)(nil).HCL2Spec())}, + "subnet_id": &hcldec.AttrSpec{Name: "subnet_id", Type: cty.String, Required: false}, + "tenancy": &hcldec.AttrSpec{Name: "tenancy", Type: cty.String, Required: false}, + "temporary_security_group_source_cidrs": &hcldec.AttrSpec{Name: "temporary_security_group_source_cidrs", Type: cty.List(cty.String), Required: false}, + "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, + "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, + "vpc_filter": &hcldec.BlockSpec{TypeName: "vpc_filter", Nested: hcldec.ObjectSpec((*common.FlatVpcFilterOptions)(nil).HCL2Spec())}, + "vpc_id": &hcldec.AttrSpec{Name: "vpc_id", Type: cty.String, Required: false}, + "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, + "metadata_options": &hcldec.BlockSpec{TypeName: "metadata_options", Nested: hcldec.ObjectSpec((*common.FlatMetadataOptions)(nil).HCL2Spec())}, + "communicator": &hcldec.AttrSpec{Name: "communicator", Type: cty.String, Required: false}, + "pause_before_connecting": &hcldec.AttrSpec{Name: "pause_before_connecting", Type: cty.String, Required: false}, + "ssh_host": &hcldec.AttrSpec{Name: "ssh_host", Type: cty.String, Required: false}, + "ssh_port": &hcldec.AttrSpec{Name: "ssh_port", Type: cty.Number, Required: false}, + "ssh_username": &hcldec.AttrSpec{Name: "ssh_username", Type: cty.String, Required: false}, + "ssh_password": &hcldec.AttrSpec{Name: "ssh_password", Type: cty.String, Required: false}, + "ssh_keypair_name": &hcldec.AttrSpec{Name: "ssh_keypair_name", Type: cty.String, Required: false}, + "temporary_key_pair_name": &hcldec.AttrSpec{Name: "temporary_key_pair_name", Type: cty.String, Required: false}, + "temporary_key_pair_type": &hcldec.AttrSpec{Name: "temporary_key_pair_type", Type: cty.String, Required: false}, + "temporary_key_pair_bits": &hcldec.AttrSpec{Name: "temporary_key_pair_bits", Type: cty.Number, Required: false}, + "ssh_ciphers": &hcldec.AttrSpec{Name: "ssh_ciphers", Type: cty.List(cty.String), Required: false}, + "ssh_clear_authorized_keys": &hcldec.AttrSpec{Name: "ssh_clear_authorized_keys", Type: cty.Bool, Required: false}, + "ssh_key_exchange_algorithms": &hcldec.AttrSpec{Name: "ssh_key_exchange_algorithms", Type: cty.List(cty.String), Required: false}, + "ssh_private_key_file": &hcldec.AttrSpec{Name: "ssh_private_key_file", Type: cty.String, Required: false}, + "ssh_certificate_file": &hcldec.AttrSpec{Name: "ssh_certificate_file", Type: cty.String, Required: false}, + "ssh_pty": &hcldec.AttrSpec{Name: "ssh_pty", Type: cty.Bool, Required: false}, + "ssh_timeout": &hcldec.AttrSpec{Name: "ssh_timeout", Type: cty.String, Required: false}, + "ssh_wait_timeout": &hcldec.AttrSpec{Name: "ssh_wait_timeout", Type: cty.String, Required: false}, + "ssh_agent_auth": &hcldec.AttrSpec{Name: "ssh_agent_auth", Type: cty.Bool, Required: false}, + "ssh_disable_agent_forwarding": &hcldec.AttrSpec{Name: "ssh_disable_agent_forwarding", Type: cty.Bool, Required: false}, + "ssh_handshake_attempts": &hcldec.AttrSpec{Name: "ssh_handshake_attempts", Type: cty.Number, Required: false}, + "ssh_bastion_host": &hcldec.AttrSpec{Name: "ssh_bastion_host", Type: cty.String, Required: false}, + "ssh_bastion_port": &hcldec.AttrSpec{Name: "ssh_bastion_port", Type: cty.Number, Required: false}, + "ssh_bastion_agent_auth": &hcldec.AttrSpec{Name: "ssh_bastion_agent_auth", Type: cty.Bool, Required: false}, + "ssh_bastion_username": &hcldec.AttrSpec{Name: "ssh_bastion_username", Type: cty.String, Required: false}, + "ssh_bastion_password": &hcldec.AttrSpec{Name: "ssh_bastion_password", Type: cty.String, Required: false}, + "ssh_bastion_interactive": &hcldec.AttrSpec{Name: "ssh_bastion_interactive", Type: cty.Bool, Required: false}, + "ssh_bastion_private_key_file": &hcldec.AttrSpec{Name: "ssh_bastion_private_key_file", Type: cty.String, Required: false}, + "ssh_bastion_certificate_file": &hcldec.AttrSpec{Name: "ssh_bastion_certificate_file", Type: cty.String, Required: false}, + "ssh_file_transfer_method": &hcldec.AttrSpec{Name: "ssh_file_transfer_method", Type: cty.String, Required: false}, + "ssh_proxy_host": &hcldec.AttrSpec{Name: "ssh_proxy_host", Type: cty.String, Required: false}, + "ssh_proxy_port": &hcldec.AttrSpec{Name: "ssh_proxy_port", Type: cty.Number, Required: false}, + "ssh_proxy_username": &hcldec.AttrSpec{Name: "ssh_proxy_username", Type: cty.String, Required: false}, + "ssh_proxy_password": &hcldec.AttrSpec{Name: "ssh_proxy_password", Type: cty.String, Required: false}, + "ssh_keep_alive_interval": &hcldec.AttrSpec{Name: "ssh_keep_alive_interval", Type: cty.String, Required: false}, + "ssh_read_write_timeout": &hcldec.AttrSpec{Name: "ssh_read_write_timeout", Type: cty.String, Required: false}, + "ssh_remote_tunnels": &hcldec.AttrSpec{Name: "ssh_remote_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_local_tunnels": &hcldec.AttrSpec{Name: "ssh_local_tunnels", Type: cty.List(cty.String), Required: false}, + "ssh_public_key": &hcldec.AttrSpec{Name: "ssh_public_key", Type: cty.List(cty.Number), Required: false}, + "ssh_private_key": &hcldec.AttrSpec{Name: "ssh_private_key", Type: cty.List(cty.Number), Required: false}, + "winrm_username": &hcldec.AttrSpec{Name: "winrm_username", Type: cty.String, Required: false}, + "winrm_password": &hcldec.AttrSpec{Name: "winrm_password", Type: cty.String, Required: false}, + "winrm_host": &hcldec.AttrSpec{Name: "winrm_host", Type: cty.String, Required: false}, + "winrm_no_proxy": &hcldec.AttrSpec{Name: "winrm_no_proxy", Type: cty.Bool, Required: false}, + "winrm_port": &hcldec.AttrSpec{Name: "winrm_port", Type: cty.Number, Required: false}, + "winrm_timeout": &hcldec.AttrSpec{Name: "winrm_timeout", Type: cty.String, Required: false}, + "winrm_use_ssl": &hcldec.AttrSpec{Name: "winrm_use_ssl", Type: cty.Bool, Required: false}, + "winrm_insecure": &hcldec.AttrSpec{Name: "winrm_insecure", Type: cty.Bool, Required: false}, + "winrm_use_ntlm": &hcldec.AttrSpec{Name: "winrm_use_ntlm", Type: cty.Bool, Required: false}, + "ssh_interface": &hcldec.AttrSpec{Name: "ssh_interface", Type: cty.String, Required: false}, + "pause_before_ssm": &hcldec.AttrSpec{Name: "pause_before_ssm", Type: cty.String, Required: false}, + "session_manager_port": &hcldec.AttrSpec{Name: "session_manager_port", Type: cty.Number, Required: false}, + "ami_block_device_mappings": &hcldec.BlockListSpec{TypeName: "ami_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "launch_block_device_mappings": &hcldec.BlockListSpec{TypeName: "launch_block_device_mappings", Nested: hcldec.ObjectSpec((*common.FlatBlockDevice)(nil).HCL2Spec())}, + "account_id": &hcldec.AttrSpec{Name: "account_id", Type: cty.String, Required: false}, + "bundle_destination": &hcldec.AttrSpec{Name: "bundle_destination", Type: cty.String, Required: false}, + "bundle_prefix": &hcldec.AttrSpec{Name: "bundle_prefix", Type: cty.String, Required: false}, + "bundle_upload_command": &hcldec.AttrSpec{Name: "bundle_upload_command", Type: cty.String, Required: false}, + "bundle_vol_command": &hcldec.AttrSpec{Name: "bundle_vol_command", Type: cty.String, Required: false}, + "s3_bucket": &hcldec.AttrSpec{Name: "s3_bucket", Type: cty.String, Required: false}, + "x509_cert_path": &hcldec.AttrSpec{Name: "x509_cert_path", Type: cty.String, Required: false}, + "x509_key_path": &hcldec.AttrSpec{Name: "x509_key_path", Type: cty.String, Required: false}, + "x509_upload_path": &hcldec.AttrSpec{Name: "x509_upload_path", Type: cty.String, Required: false}, + } + return s } diff --git a/builder/vsphere/common/output_config.hcl2spec.go b/builder/vsphere/common/output_config.hcl2spec.go index 0cec88325..13847fcbc 100644 --- a/builder/vsphere/common/output_config.hcl2spec.go +++ b/builder/vsphere/common/output_config.hcl2spec.go @@ -3,7 +3,7 @@ package common import ( - "io/fs" + "os" "github.com/hashicorp/hcl/v2/hcldec" "github.com/zclconf/go-cty/cty" @@ -13,7 +13,7 @@ import ( // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatOutputConfig struct { OutputDir *string `mapstructure:"output_directory" required:"false" cty:"output_directory" hcl:"output_directory"` - DirPerm *fs.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` + DirPerm *os.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` } // FlatMapstructure returns a new FlatOutputConfig. diff --git a/builder/vsphere/common/step_export.hcl2spec.go b/builder/vsphere/common/step_export.hcl2spec.go index 21824d5d5..f7d24dbbe 100644 --- a/builder/vsphere/common/step_export.hcl2spec.go +++ b/builder/vsphere/common/step_export.hcl2spec.go @@ -3,7 +3,7 @@ package common import ( - "io/fs" + "os" "github.com/hashicorp/hcl/v2/hcldec" "github.com/zclconf/go-cty/cty" @@ -17,7 +17,7 @@ type FlatExportConfig struct { Images *bool `mapstructure:"images" cty:"images" hcl:"images"` Manifest *string `mapstructure:"manifest" cty:"manifest" hcl:"manifest"` OutputDir *string `mapstructure:"output_directory" required:"false" cty:"output_directory" hcl:"output_directory"` - DirPerm *fs.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` + DirPerm *os.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` Options []string `mapstructure:"options" cty:"options" hcl:"options"` } From e8ccd5304b34571b0d8ee49438ee5d40af0d1f19 Mon Sep 17 00:00:00 2001 From: mr-evilbit Date: Sat, 20 Feb 2021 12:07:19 -0500 Subject: [PATCH 018/212] Update vagrant.mdx Add newbie friendly reminder that just running a 'vagrant up' in the Packer Vagrant builder output directory does not run the newly built and provisioned .box file. --- website/content/docs/builders/vagrant.mdx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/website/content/docs/builders/vagrant.mdx b/website/content/docs/builders/vagrant.mdx index 8b09d1a42..f2d387706 100644 --- a/website/content/docs/builders/vagrant.mdx +++ b/website/content/docs/builders/vagrant.mdx @@ -183,6 +183,25 @@ build { +## Regarding output directory and new box + +After Packer completes building and provisioning a new Vagrant Box file, it is worth +noting that the new box file will need to be added to Vagrant. For a beginner to Packer +and Vagrant, it may seem as if a simple 'vagrant up' in the output directory will run the +the newly created Box. This is not the case. + +Rather, create a new directory (to avoid Vagarant init collisions), add the new +package.box to Vagrant and init. Then run vagrant up to bring up the new box created +by Packer. You will now be able to connect to the new box with provisioned changes. + +``` +'mkdir output2' +'cp package.box ./output2' +'vagrant box add new-box name-of-the-packer-box.box' +'vagrant init new-box' +'vagrant up' +``` + ## A note on SSH connections Currently this builder only works for SSH connections, and automatically fills From fa844543ec012613574c77a8ba5fa41a874bddf6 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Sat, 20 Feb 2021 19:31:46 +0100 Subject: [PATCH 019/212] Added options for chipset and firmware. --- builder/virtualbox/iso/builder.go | 30 ++++++++++++++++++++++ builder/virtualbox/iso/builder.hcl2spec.go | 4 +++ builder/virtualbox/iso/step_create_vm.go | 5 +++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 14cbafb22..bd008548b 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -44,6 +44,14 @@ type Config struct { vboxcommon.VBoxVersionConfig `mapstructure:",squash"` vboxcommon.VBoxBundleConfig `mapstructure:",squash"` vboxcommon.GuestAdditionsConfig `mapstructure:",squash"` + // The chipset to be used: PIIX3 or ICH9. + // When set to piix3, the firmare is PIIX3. This is the default. + // When set to ich9, the firmare is ICH9. + Chipset string `mapstructure:"chipset" required:"false"` + // The firmware to be used: BIOS or EFI. + // When set to bios, the firmare is BIOS. This is the default. + // When set to efi, the firmare is EFI. + Firmware string `mapstructure:"firmware" required:"false"` // The size, in megabytes, of the hard disk to create for the VM. By // default, this is 40000 (about 40 GB). DiskSize uint `mapstructure:"disk_size" required:"false"` @@ -162,6 +170,28 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { errs = packersdk.MultiErrorAppend(errs, b.config.BootConfig.Prepare(&b.config.ctx)...) errs = packersdk.MultiErrorAppend(errs, b.config.GuestAdditionsConfig.Prepare(b.config.CommConfig.Comm.Type)...) + if b.config.Chipset == "" { + b.config.Chipset = "piix3" + } + switch b.config.Chipset { + case "piix3", "ich9": + // do nothing + default: + errs = packersdk.MultiErrorAppend( + errs, errors.New("chipset can only be piix3 or ich9")) + } + + if b.config.Firmware == "" { + b.config.Firmware = "bios" + } + switch b.config.Firmware { + case "bios", "efi": + // do nothing + default: + errs = packersdk.MultiErrorAppend( + errs, errors.New("firmware can only be bios or efi")) + } + if b.config.DiskSize == 0 { b.config.DiskSize = 40000 } diff --git a/builder/virtualbox/iso/builder.hcl2spec.go b/builder/virtualbox/iso/builder.hcl2spec.go index a931724c1..04faf34f6 100644 --- a/builder/virtualbox/iso/builder.hcl2spec.go +++ b/builder/virtualbox/iso/builder.hcl2spec.go @@ -117,6 +117,8 @@ type FlatConfig struct { GuestAdditionsPath *string `mapstructure:"guest_additions_path" cty:"guest_additions_path" hcl:"guest_additions_path"` GuestAdditionsSHA256 *string `mapstructure:"guest_additions_sha256" cty:"guest_additions_sha256" hcl:"guest_additions_sha256"` GuestAdditionsURL *string `mapstructure:"guest_additions_url" required:"false" cty:"guest_additions_url" hcl:"guest_additions_url"` + Chipset *string `mapstructure:"chipset" required:"false" cty:"chipset" hcl:"chipset"` + Firmware *string `mapstructure:"firmware" required:"false" cty:"firmware" hcl:"firmware"` DiskSize *uint `mapstructure:"disk_size" required:"false" cty:"disk_size" hcl:"disk_size"` GuestOSType *string `mapstructure:"guest_os_type" required:"false" cty:"guest_os_type" hcl:"guest_os_type"` HardDriveDiscard *bool `mapstructure:"hard_drive_discard" required:"false" cty:"hard_drive_discard" hcl:"hard_drive_discard"` @@ -249,6 +251,8 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "guest_additions_path": &hcldec.AttrSpec{Name: "guest_additions_path", Type: cty.String, Required: false}, "guest_additions_sha256": &hcldec.AttrSpec{Name: "guest_additions_sha256", Type: cty.String, Required: false}, "guest_additions_url": &hcldec.AttrSpec{Name: "guest_additions_url", Type: cty.String, Required: false}, + "chipset": &hcldec.AttrSpec{Name: "chipset", Type: cty.String, Required: false}, + "firmware": &hcldec.AttrSpec{Name: "firmware", Type: cty.String, Required: false}, "disk_size": &hcldec.AttrSpec{Name: "disk_size", Type: cty.Number, Required: false}, "guest_os_type": &hcldec.AttrSpec{Name: "guest_os_type", Type: cty.String, Required: false}, "hard_drive_discard": &hcldec.AttrSpec{Name: "hard_drive_discard", Type: cty.Bool, Required: false}, diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index 15a049a12..5cce54db9 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -26,7 +26,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis name := config.VMName - commands := make([][]string, 6) + commands := make([][]string, 8) commands[0] = []string{ "createvm", "--name", name, "--ostype", config.GuestOSType, "--register", @@ -45,6 +45,9 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound, "--audioin", "on", "--audioout", "on"} } + commands[6] = []string{"modifyvm", name, "--chipset", config.Chipset} + commands[7] = []string{"modifyvm", name, "--firmware", config.Firmware} + ui.Say("Creating virtual machine...") for _, command := range commands { err := driver.VBoxManage(command...) From eb4a6f30a0f9b9083913aba486f27500079417f0 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Sat, 20 Feb 2021 19:59:39 +0100 Subject: [PATCH 020/212] Added option for NIC type. --- builder/virtualbox/iso/builder.go | 20 ++++++++++++++++++++ builder/virtualbox/iso/step_create_vm.go | 12 +++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index bd008548b..618d88a33 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -55,6 +55,15 @@ type Config struct { // The size, in megabytes, of the hard disk to create for the VM. By // default, this is 40000 (about 40 GB). DiskSize uint `mapstructure:"disk_size" required:"false"` + // The NIC type to be used for the network interfaces. + // When set to 82540EM, the NICs are Intel PRO/1000 MT Desktop (82540EM). This is the default. + // When set to 82543GC, the NICs are Intel PRO/1000 T Server (82543GC). + // When set to 82545EM, the NICs are Intel PRO/1000 MT Server (82545EM). + // When set to Am79C970A, the NICs are AMD PCNet-PCI II network card (Am79C970A). + // When set to Am79C973, the NICs are AMD PCNet-FAST III network card (Am79C973). + // When set to Am79C960, the NICs are AMD PCnet-ISA/NE2100 (Am79C960). + // When set to virtio, the NICs are VirtIO. + NICType string `mapstructure:"nic_type" required:"false"` // The guest OS type being installed. By default this is other, but you can // get dramatic performance improvements by setting this to the proper // value. To view all available values for this run VBoxManage list @@ -200,6 +209,17 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { b.config.HardDriveInterface = "ide" } + if b.config.NICType == "" { + b.config.NICType = "82540EM" + } + switch b.config.NICType { + case "82540EM", "82543GC", "82545EM", "Am79C970A", "Am79C973", "Am79C960", "virtio": + // do nothing + default: + errs = packersdk.MultiErrorAppend( + errs, errors.New("NIC type can only be 82540EM, 82543GC, 82545EM, Am79C970A, Am79C973, Am79C960 or virtio")) + } + if b.config.GuestOSType == "" { b.config.GuestOSType = "Other" } diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index 5cce54db9..1810789f3 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -26,7 +26,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis name := config.VMName - commands := make([][]string, 8) + commands := make([][]string, 9) commands[0] = []string{ "createvm", "--name", name, "--ostype", config.GuestOSType, "--register", @@ -47,6 +47,16 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis commands[6] = []string{"modifyvm", name, "--chipset", config.Chipset} commands[7] = []string{"modifyvm", name, "--firmware", config.Firmware} + // Set the configured NIC type for all 8 possible NICs + commands[8] = []string{"modifyvm", name, + "--nictype1", config.NICType, + "--nictype2", config.NICType, + "--nictype3", config.NICType, + "--nictype4", config.NICType, + "--nictype5", config.NICType, + "--nictype6", config.NICType, + "--nictype7", config.NICType, + "--nictype8", config.NICType} ui.Say("Creating virtual machine...") for _, command := range commands { From e9936cf0da9ff19f0e6693c3019c022961b829de Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Sat, 20 Feb 2021 20:09:16 +0100 Subject: [PATCH 021/212] Added option for audio controller. --- builder/virtualbox/iso/builder.go | 13 +++++++++++++ builder/virtualbox/iso/step_create_vm.go | 6 ++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 618d88a33..5307ea955 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -64,6 +64,11 @@ type Config struct { // When set to Am79C960, the NICs are AMD PCnet-ISA/NE2100 (Am79C960). // When set to virtio, the NICs are VirtIO. NICType string `mapstructure:"nic_type" required:"false"` + // The audio controller type to be used. + // When set to ac97, the audio controller is ICH AC97 (default). + // When set to hda, the audio controller is Intel HD Audio. + // When set to sb16, the audio controller is SoundBlaster 16. + AudioController string `mapstructure:"audio_controller" required:"false"` // The guest OS type being installed. By default this is other, but you can // get dramatic performance improvements by setting this to the proper // value. To view all available values for this run VBoxManage list @@ -220,6 +225,14 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { errs, errors.New("NIC type can only be 82540EM, 82543GC, 82545EM, Am79C970A, Am79C973, Am79C960 or virtio")) } + switch b.config.AudioController { + case "ac97", "hda", "sb16": + // do nothing + default: + errs = packersdk.MultiErrorAppend( + errs, errors.New("Audio controller type can only be ac97, hda or sb16")) + } + if b.config.GuestOSType == "" { b.config.GuestOSType = "Other" } diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index 1810789f3..e258551c0 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -40,9 +40,11 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis commands[4] = []string{"modifyvm", name, "--usb", map[bool]string{true: "on", false: "off"}[config.HWConfig.USB]} if strings.ToLower(config.HWConfig.Sound) == "none" { - commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound} + commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound, + "--audiocontroller", config.AudioController} } else { - commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound, "--audioin", "on", "--audioout", "on"} + commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound, "--audioin", "on", "--audioout", "on", + "--audiocontroller", config.AudioController} } commands[6] = []string{"modifyvm", name, "--chipset", config.Chipset} From ffa8b7de8a20057d30003f95501a18318294b560 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Sat, 20 Feb 2021 20:21:57 +0100 Subject: [PATCH 022/212] Added option for the graphics controller. --- builder/virtualbox/iso/builder.go | 22 +++++++++++++++++++++- builder/virtualbox/iso/step_create_vm.go | 3 ++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 5307ea955..53d1532c7 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -65,10 +65,16 @@ type Config struct { // When set to virtio, the NICs are VirtIO. NICType string `mapstructure:"nic_type" required:"false"` // The audio controller type to be used. - // When set to ac97, the audio controller is ICH AC97 (default). + // When set to ac97, the audio controller is ICH AC97. This is the default. // When set to hda, the audio controller is Intel HD Audio. // When set to sb16, the audio controller is SoundBlaster 16. AudioController string `mapstructure:"audio_controller" required:"false"` + // The graphics controller type to be used. + // When set to vboxvga, the graphics controller is VirtualBox VGA. This is the default. + // When set to vboxsvga, the graphics controller is VirtualBox SVGA. + // When set to vmsvga, the graphics controller is VMware SVGA. + // When set to none, the graphics controller is disabled. + GfxController string `mapstructure:"gfx_controller" required:"false"` // The guest OS type being installed. By default this is other, but you can // get dramatic performance improvements by setting this to the proper // value. To view all available values for this run VBoxManage list @@ -225,6 +231,20 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { errs, errors.New("NIC type can only be 82540EM, 82543GC, 82545EM, Am79C970A, Am79C973, Am79C960 or virtio")) } + if b.config.GfxController == "" { + b.config.GfxController = "vboxvga" + } + switch b.config.GfxController { + case "vboxvga", "vboxsvga", "vmsvga", "none": + // do nothing + default: + errs = packersdk.MultiErrorAppend( + errs, errors.New("Graphics controller type can only be vboxvga, vboxsvga, vmsvga, none")) + } + + if b.config.AudioController == "" { + b.config.AudioController = "ac97" + } switch b.config.AudioController { case "ac97", "hda", "sb16": // do nothing diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index e258551c0..32895e713 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -26,7 +26,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis name := config.VMName - commands := make([][]string, 9) + commands := make([][]string, 10) commands[0] = []string{ "createvm", "--name", name, "--ostype", config.GuestOSType, "--register", @@ -59,6 +59,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis "--nictype6", config.NICType, "--nictype7", config.NICType, "--nictype8", config.NICType} + commands[9] = []string{"modifyvm", name, "--graphicscontroller", config.GfxController} ui.Say("Creating virtual machine...") for _, command := range commands { From 8226bc9d9f18f08cfbdb0e60e49a6f0970d37315 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Sat, 20 Feb 2021 20:23:47 +0100 Subject: [PATCH 023/212] Ran "make generate". --- builder/virtualbox/iso/builder.hcl2spec.go | 6 ++++ .../virtualbox/iso/Config-not-required.mdx | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/builder/virtualbox/iso/builder.hcl2spec.go b/builder/virtualbox/iso/builder.hcl2spec.go index 04faf34f6..88a880458 100644 --- a/builder/virtualbox/iso/builder.hcl2spec.go +++ b/builder/virtualbox/iso/builder.hcl2spec.go @@ -120,6 +120,9 @@ type FlatConfig struct { Chipset *string `mapstructure:"chipset" required:"false" cty:"chipset" hcl:"chipset"` Firmware *string `mapstructure:"firmware" required:"false" cty:"firmware" hcl:"firmware"` DiskSize *uint `mapstructure:"disk_size" required:"false" cty:"disk_size" hcl:"disk_size"` + NICType *string `mapstructure:"nic_type" required:"false" cty:"nic_type" hcl:"nic_type"` + AudioController *string `mapstructure:"audio_controller" required:"false" cty:"audio_controller" hcl:"audio_controller"` + GfxController *string `mapstructure:"gfx_controller" required:"false" cty:"gfx_controller" hcl:"gfx_controller"` GuestOSType *string `mapstructure:"guest_os_type" required:"false" cty:"guest_os_type" hcl:"guest_os_type"` HardDriveDiscard *bool `mapstructure:"hard_drive_discard" required:"false" cty:"hard_drive_discard" hcl:"hard_drive_discard"` HardDriveInterface *string `mapstructure:"hard_drive_interface" required:"false" cty:"hard_drive_interface" hcl:"hard_drive_interface"` @@ -254,6 +257,9 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "chipset": &hcldec.AttrSpec{Name: "chipset", Type: cty.String, Required: false}, "firmware": &hcldec.AttrSpec{Name: "firmware", Type: cty.String, Required: false}, "disk_size": &hcldec.AttrSpec{Name: "disk_size", Type: cty.Number, Required: false}, + "nic_type": &hcldec.AttrSpec{Name: "nic_type", Type: cty.String, Required: false}, + "audio_controller": &hcldec.AttrSpec{Name: "audio_controller", Type: cty.String, Required: false}, + "gfx_controller": &hcldec.AttrSpec{Name: "gfx_controller", Type: cty.String, Required: false}, "guest_os_type": &hcldec.AttrSpec{Name: "guest_os_type", Type: cty.String, Required: false}, "hard_drive_discard": &hcldec.AttrSpec{Name: "hard_drive_discard", Type: cty.Bool, Required: false}, "hard_drive_interface": &hcldec.AttrSpec{Name: "hard_drive_interface", Type: cty.String, Required: false}, diff --git a/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx b/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx index 8afdf7544..d77c4048c 100644 --- a/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx +++ b/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx @@ -1,8 +1,36 @@ +- `chipset` (string) - The chipset to be used: PIIX3 or ICH9. + When set to piix3, the firmare is PIIX3. This is the default. + When set to ich9, the firmare is ICH9. + +- `firmware` (string) - The firmware to be used: BIOS or EFI. + When set to bios, the firmare is BIOS. This is the default. + When set to efi, the firmare is EFI. + - `disk_size` (uint) - The size, in megabytes, of the hard disk to create for the VM. By default, this is 40000 (about 40 GB). +- `nic_type` (string) - The NIC type to be used for the network interfaces. + When set to 82540EM, the NICs are Intel PRO/1000 MT Desktop (82540EM). This is the default. + When set to 82543GC, the NICs are Intel PRO/1000 T Server (82543GC). + When set to 82545EM, the NICs are Intel PRO/1000 MT Server (82545EM). + When set to Am79C970A, the NICs are AMD PCNet-PCI II network card (Am79C970A). + When set to Am79C973, the NICs are AMD PCNet-FAST III network card (Am79C973). + When set to Am79C960, the NICs are AMD PCnet-ISA/NE2100 (Am79C960). + When set to virtio, the NICs are VirtIO. + +- `audio_controller` (string) - The audio controller type to be used. + When set to ac97, the audio controller is ICH AC97. This is the default. + When set to hda, the audio controller is Intel HD Audio. + When set to sb16, the audio controller is SoundBlaster 16. + +- `gfx_controller` (string) - The graphics controller type to be used. + When set to vboxvga, the graphics controller is VirtualBox VGA. This is the default. + When set to vboxsvga, the graphics controller is VirtualBox SVGA. + When set to vmsvga, the graphics controller is VMware SVGA. + When set to none, the graphics controller is disabled. + - `guest_os_type` (string) - The guest OS type being installed. By default this is other, but you can get dramatic performance improvements by setting this to the proper value. To view all available values for this run VBoxManage list From 2b35873dd9c83ef5fe327ccabc35a1107ff5d74d Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Sat, 20 Feb 2021 20:31:09 +0100 Subject: [PATCH 024/212] Formatting fix. --- builder/virtualbox/iso/builder.go | 2 +- builder/virtualbox/iso/step_create_vm.go | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 53d1532c7..c82c435e0 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -224,7 +224,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { b.config.NICType = "82540EM" } switch b.config.NICType { - case "82540EM", "82543GC", "82545EM", "Am79C970A", "Am79C973", "Am79C960", "virtio": + case "82540EM", "82543GC", "82545EM", "Am79C970A", "Am79C973", "Am79C960", "virtio": // do nothing default: errs = packersdk.MultiErrorAppend( diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index 32895e713..bcef33a64 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -41,24 +41,24 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis if strings.ToLower(config.HWConfig.Sound) == "none" { commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound, - "--audiocontroller", config.AudioController} + "--audiocontroller", config.AudioController} } else { commands[5] = []string{"modifyvm", name, "--audio", config.HWConfig.Sound, "--audioin", "on", "--audioout", "on", - "--audiocontroller", config.AudioController} + "--audiocontroller", config.AudioController} } commands[6] = []string{"modifyvm", name, "--chipset", config.Chipset} commands[7] = []string{"modifyvm", name, "--firmware", config.Firmware} // Set the configured NIC type for all 8 possible NICs commands[8] = []string{"modifyvm", name, - "--nictype1", config.NICType, - "--nictype2", config.NICType, - "--nictype3", config.NICType, - "--nictype4", config.NICType, - "--nictype5", config.NICType, - "--nictype6", config.NICType, - "--nictype7", config.NICType, - "--nictype8", config.NICType} + "--nictype1", config.NICType, + "--nictype2", config.NICType, + "--nictype3", config.NICType, + "--nictype4", config.NICType, + "--nictype5", config.NICType, + "--nictype6", config.NICType, + "--nictype7", config.NICType, + "--nictype8", config.NICType} commands[9] = []string{"modifyvm", name, "--graphicscontroller", config.GfxController} ui.Say("Creating virtual machine...") From c7545c37dd504b2baac35616fcf936c71e7f9a64 Mon Sep 17 00:00:00 2001 From: Ali Rizvi-Santiago Date: Sun, 21 Feb 2021 05:32:30 -0600 Subject: [PATCH 025/212] Fixed an issue identified by @SwampDragons when checking if the networkmapper configuration file exists. --- builder/vmware/common/driver_player5.go | 5 ++++- builder/vmware/common/driver_workstation9.go | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/builder/vmware/common/driver_player5.go b/builder/vmware/common/driver_player5.go index 0abfa9c53..7081b7a8a 100644 --- a/builder/vmware/common/driver_player5.go +++ b/builder/vmware/common/driver_player5.go @@ -204,7 +204,10 @@ func (d *Player5Driver) Verify() error { d.VmwareDriver.NetworkMapper = func() (NetworkNameMapper, error) { pathNetmap := playerNetmapConfPath() - if _, err := os.Stat(pathNetmap); err != nil { + + // If we were able to find the file (no error), then we can proceed with reading + // the networkmapper configuration. + if _, err := os.Stat(pathNetmap); err == nil { log.Printf("Located networkmapper configuration file using Player: %s", pathNetmap) return ReadNetmapConfig(pathNetmap) } diff --git a/builder/vmware/common/driver_workstation9.go b/builder/vmware/common/driver_workstation9.go index 5637b7fa5..cf272ac2f 100644 --- a/builder/vmware/common/driver_workstation9.go +++ b/builder/vmware/common/driver_workstation9.go @@ -165,6 +165,9 @@ func (d *Workstation9Driver) Verify() error { d.VmwareDriver.NetworkMapper = func() (NetworkNameMapper, error) { pathNetmap := workstationNetmapConfPath() + + // Check that the file for the networkmapper configuration exists. If there's no + // error, then the file exists and we can proceed to read the configuration out of it. if _, err := os.Stat(pathNetmap); err == nil { log.Printf("Located networkmapper configuration file using Workstation: %s", pathNetmap) return ReadNetmapConfig(pathNetmap) From 9a11fd4136023d85ffde1115677042a1b04a6193 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 22 Feb 2021 02:18:48 -0800 Subject: [PATCH 026/212] Update amazon sdk (#10668) --- .../amazon/common/step_run_spot_instance.go | 25 +- go.mod | 2 +- go.sum | 2 + .../aws/aws-sdk-go/aws/client/client.go | 4 - .../aws/aws-sdk-go/aws/client/logger.go | 8 + .../github.com/aws/aws-sdk-go/aws/config.go | 32 +- .../aws/credentials/ssocreds/doc.go | 60 + .../aws-sdk-go/aws/credentials/ssocreds/os.go | 9 + .../aws/credentials/ssocreds/os_windows.go | 7 + .../aws/credentials/ssocreds/provider.go | 180 + .../stscreds/assume_role_provider.go | 14 +- .../aws/aws-sdk-go/aws/endpoints/defaults.go | 351 +- .../aws/aws-sdk-go/aws/session/credentials.go | 23 + .../aws/aws-sdk-go/aws/session/session.go | 2 +- .../aws-sdk-go/aws/session/shared_config.go | 80 +- .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../aws/aws-sdk-go/private/protocol/host.go | 44 +- .../private/protocol/restjson/restjson.go | 59 + .../protocol/restjson/unmarshal_error.go | 134 + .../aws/aws-sdk-go/service/ec2/api.go | 6122 ++++++++++++++++- .../aws/aws-sdk-go/service/ec2/doc.go | 10 +- .../service/ec2/ec2iface/interface.go | 83 + .../aws/aws-sdk-go/service/iam/api.go | 5251 ++++++++++++-- .../aws/aws-sdk-go/service/iam/errors.go | 5 +- .../aws/aws-sdk-go/service/s3/api.go | 2 +- .../aws/aws-sdk-go/service/s3/endpoint.go | 13 +- .../aws-sdk-go/service/s3/endpoint_builder.go | 42 +- .../aws-sdk-go/service/s3/s3manager/upload.go | 5 + .../aws/aws-sdk-go/service/s3/service.go | 3 + .../aws/aws-sdk-go/service/ssm/api.go | 2603 ++++++- .../aws/aws-sdk-go/service/ssm/errors.go | 14 +- .../service/ssm/ssmiface/interface.go | 22 + .../aws/aws-sdk-go/service/sso/api.go | 1210 ++++ .../aws/aws-sdk-go/service/sso/doc.go | 44 + .../aws/aws-sdk-go/service/sso/errors.go | 44 + .../aws/aws-sdk-go/service/sso/service.go | 104 + .../service/sso/ssoiface/interface.go | 86 + vendor/modules.txt | 6 +- 38 files changed, 15628 insertions(+), 1079 deletions(-) create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go create mode 100644 vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go create mode 100644 vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go create mode 100644 vendor/github.com/aws/aws-sdk-go/service/sso/api.go create mode 100644 vendor/github.com/aws/aws-sdk-go/service/sso/doc.go create mode 100644 vendor/github.com/aws/aws-sdk-go/service/sso/errors.go create mode 100644 vendor/github.com/aws/aws-sdk-go/service/sso/service.go create mode 100644 vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go diff --git a/builder/amazon/common/step_run_spot_instance.go b/builder/amazon/common/step_run_spot_instance.go index ded801bfc..3d93f854a 100644 --- a/builder/amazon/common/step_run_spot_instance.go +++ b/builder/amazon/common/step_run_spot_instance.go @@ -54,6 +54,24 @@ type StepRunSpotInstance struct { instanceId string } +// The EbsBlockDevice and LaunchTemplateEbsBlockDeviceRequest structs are +// nearly identical except for the struct's name and one extra field in +// EbsBlockDeviceResuest, which unfortunately means you can't just cast one +// into the other. THANKS AMAZON. +func castBlockDeviceToRequest(bd *ec2.EbsBlockDevice) *ec2.LaunchTemplateEbsBlockDeviceRequest { + out := &ec2.LaunchTemplateEbsBlockDeviceRequest{ + DeleteOnTermination: bd.DeleteOnTermination, + Encrypted: bd.Encrypted, + Iops: bd.Iops, + KmsKeyId: bd.KmsKeyId, + SnapshotId: bd.SnapshotId, + Throughput: bd.Throughput, + VolumeSize: bd.VolumeSize, + VolumeType: bd.VolumeType, + } + return out +} + func (s *StepRunSpotInstance) CreateTemplateData(userData *string, az string, state multistep.StateBag, marketOptions *ec2.LaunchTemplateInstanceMarketOptionsRequest) *ec2.RequestLaunchTemplateData { blockDeviceMappings := s.LaunchMappings.BuildEC2BlockDeviceMappings() @@ -61,15 +79,12 @@ func (s *StepRunSpotInstance) CreateTemplateData(userData *string, az string, // LaunchTemplateBlockDeviceMappingRequest. These structs are identical, // except for the EBS field -- on one, that field contains a // LaunchTemplateEbsBlockDeviceRequest, and on the other, it contains an - // EbsBlockDevice. The EbsBlockDevice and - // LaunchTemplateEbsBlockDeviceRequest structs are themselves - // identical except for the struct's name, so you can cast one directly - // into the other. + // EbsBlockDevice. var launchMappingRequests []*ec2.LaunchTemplateBlockDeviceMappingRequest for _, mapping := range blockDeviceMappings { launchRequest := &ec2.LaunchTemplateBlockDeviceMappingRequest{ DeviceName: mapping.DeviceName, - Ebs: (*ec2.LaunchTemplateEbsBlockDeviceRequest)(mapping.Ebs), + Ebs: castBlockDeviceToRequest(mapping.Ebs), VirtualName: mapping.VirtualName, } launchMappingRequests = append(launchMappingRequests, launchRequest) diff --git a/go.mod b/go.mod index 8e63daf14..d553f702a 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f github.com/antihax/optional v1.0.0 github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43 - github.com/aws/aws-sdk-go v1.36.5 + github.com/aws/aws-sdk-go v1.37.15 github.com/biogo/hts v0.0.0-20160420073057-50da7d4131a3 github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee github.com/cheggaaa/pb v1.0.27 diff --git a/go.sum b/go.sum index 3f51c4032..a847cc20a 100644 --- a/go.sum +++ b/go.sum @@ -129,6 +129,8 @@ github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU github.com/aws/aws-sdk-go v1.36.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.36.5 h1:SouM2ar1A8f+3DYWW622sDdqkkZAO3ha4j8GQjiPLFg= github.com/aws/aws-sdk-go v1.36.5/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.37.15 h1:W7l7gLLMcYRlg6a+uvf3Zz4jYwdqYzhe5ymqwWoOhp4= +github.com/aws/aws-sdk-go v1.37.15/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go index 03334d692..74f35ccf0 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go @@ -88,10 +88,6 @@ func (c *Client) NewRequest(operation *request.Operation, params interface{}, da // AddDebugHandlers injects debug logging handlers into the service to log request // debug information. func (c *Client) AddDebugHandlers() { - if !c.Config.LogLevel.AtLeast(aws.LogDebug) { - return - } - c.Handlers.Send.PushFrontNamed(LogHTTPRequestHandler) c.Handlers.Send.PushBackNamed(LogHTTPResponseHandler) } diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go b/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go index 8958c32d4..1d774cfa2 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/logger.go @@ -53,6 +53,10 @@ var LogHTTPRequestHandler = request.NamedHandler{ } func logRequest(r *request.Request) { + if !r.Config.LogLevel.AtLeast(aws.LogDebug) { + return + } + logBody := r.Config.LogLevel.Matches(aws.LogDebugWithHTTPBody) bodySeekable := aws.IsReaderSeekable(r.Body) @@ -120,6 +124,10 @@ var LogHTTPResponseHandler = request.NamedHandler{ } func logResponse(r *request.Request) { + if !r.Config.LogLevel.AtLeast(aws.LogDebug) { + return + } + lw := &logWriter{r.Config.Logger, bytes.NewBuffer(nil)} if r.HTTPResponse == nil { diff --git a/vendor/github.com/aws/aws-sdk-go/aws/config.go b/vendor/github.com/aws/aws-sdk-go/aws/config.go index 3b809e847..39fa6d5fe 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/config.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/config.go @@ -438,13 +438,6 @@ func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config { return c } -// MergeIn merges the passed in configs into the existing config object. -func (c *Config) MergeIn(cfgs ...*Config) { - for _, other := range cfgs { - mergeInConfig(c, other) - } -} - // WithSTSRegionalEndpoint will set whether or not to use regional endpoint flag // when resolving the endpoint for a service func (c *Config) WithSTSRegionalEndpoint(sre endpoints.STSRegionalEndpoint) *Config { @@ -459,6 +452,27 @@ func (c *Config) WithS3UsEast1RegionalEndpoint(sre endpoints.S3UsEast1RegionalEn return c } +// WithLowerCaseHeaderMaps sets a config LowerCaseHeaderMaps value +// returning a Config pointer for chaining. +func (c *Config) WithLowerCaseHeaderMaps(t bool) *Config { + c.LowerCaseHeaderMaps = &t + return c +} + +// WithDisableRestProtocolURICleaning sets a config DisableRestProtocolURICleaning value +// returning a Config pointer for chaining. +func (c *Config) WithDisableRestProtocolURICleaning(t bool) *Config { + c.DisableRestProtocolURICleaning = &t + return c +} + +// MergeIn merges the passed in configs into the existing config object. +func (c *Config) MergeIn(cfgs ...*Config) { + for _, other := range cfgs { + mergeInConfig(c, other) + } +} + func mergeInConfig(dst *Config, other *Config) { if other == nil { return @@ -571,6 +585,10 @@ func mergeInConfig(dst *Config, other *Config) { if other.S3UsEast1RegionalEndpoint != endpoints.UnsetS3UsEast1Endpoint { dst.S3UsEast1RegionalEndpoint = other.S3UsEast1RegionalEndpoint } + + if other.LowerCaseHeaderMaps != nil { + dst.LowerCaseHeaderMaps = other.LowerCaseHeaderMaps + } } // Copy will return a shallow copy of the Config object. If any additional diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go new file mode 100644 index 000000000..18c940ab3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go @@ -0,0 +1,60 @@ +// Package ssocreds provides a credential provider for retrieving temporary AWS credentials using an SSO access token. +// +// IMPORTANT: The provider in this package does not initiate or perform the AWS SSO login flow. The SDK provider +// expects that you have already performed the SSO login flow using AWS CLI using the "aws sso login" command, or by +// some other mechanism. The provider must find a valid non-expired access token for the AWS SSO user portal URL in +// ~/.aws/sso/cache. If a cached token is not found, it is expired, or the file is malformed an error will be returned. +// +// Loading AWS SSO credentials with the AWS shared configuration file +// +// You can use configure AWS SSO credentials from the AWS shared configuration file by +// providing the specifying the required keys in the profile: +// +// sso_account_id +// sso_region +// sso_role_name +// sso_start_url +// +// For example, the following defines a profile "devsso" and specifies the AWS SSO parameters that defines the target +// account, role, sign-on portal, and the region where the user portal is located. Note: all SSO arguments must be +// provided, or an error will be returned. +// +// [profile devsso] +// sso_start_url = https://my-sso-portal.awsapps.com/start +// sso_role_name = SSOReadOnlyRole +// sso_region = us-east-1 +// sso_account_id = 123456789012 +// +// Using the config module, you can load the AWS SDK shared configuration, and specify that this profile be used to +// retrieve credentials. For example: +// +// sess, err := session.NewSessionWithOptions(session.Options{ +// SharedConfigState: session.SharedConfigEnable, +// Profile: "devsso", +// }) +// if err != nil { +// return err +// } +// +// Programmatically loading AWS SSO credentials directly +// +// You can programmatically construct the AWS SSO Provider in your application, and provide the necessary information +// to load and retrieve temporary credentials using an access token from ~/.aws/sso/cache. +// +// svc := sso.New(sess, &aws.Config{ +// Region: aws.String("us-west-2"), // Client Region must correspond to the AWS SSO user portal region +// }) +// +// provider := ssocreds.NewCredentialsWithClient(svc, "123456789012", "SSOReadOnlyRole", "https://my-sso-portal.awsapps.com/start") +// +// credentials, err := provider.Get() +// if err != nil { +// return err +// } +// +// Additional Resources +// +// Configuring the AWS CLI to use AWS Single Sign-On: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html +// +// AWS Single Sign-On User Guide: https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html +package ssocreds diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go new file mode 100644 index 000000000..ceca7dcee --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go @@ -0,0 +1,9 @@ +// +build !windows + +package ssocreds + +import "os" + +func getHomeDirectory() string { + return os.Getenv("HOME") +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go new file mode 100644 index 000000000..eb48f61e5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go @@ -0,0 +1,7 @@ +package ssocreds + +import "os" + +func getHomeDirectory() string { + return os.Getenv("USERPROFILE") +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go new file mode 100644 index 000000000..6eda2a555 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go @@ -0,0 +1,180 @@ +package ssocreds + +import ( + "crypto/sha1" + "encoding/hex" + "encoding/json" + "fmt" + "io/ioutil" + "path/filepath" + "strings" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/service/sso" + "github.com/aws/aws-sdk-go/service/sso/ssoiface" +) + +// ErrCodeSSOProviderInvalidToken is the code type that is returned if loaded token has expired or is otherwise invalid. +// To refresh the SSO session run aws sso login with the corresponding profile. +const ErrCodeSSOProviderInvalidToken = "SSOProviderInvalidToken" + +const invalidTokenMessage = "the SSO session has expired or is invalid" + +func init() { + nowTime = time.Now + defaultCacheLocation = defaultCacheLocationImpl +} + +var nowTime func() time.Time + +// ProviderName is the name of the provider used to specify the source of credentials. +const ProviderName = "SSOProvider" + +var defaultCacheLocation func() string + +func defaultCacheLocationImpl() string { + return filepath.Join(getHomeDirectory(), ".aws", "sso", "cache") +} + +// Provider is an AWS credential provider that retrieves temporary AWS credentials by exchanging an SSO login token. +type Provider struct { + credentials.Expiry + + // The Client which is configured for the AWS Region where the AWS SSO user portal is located. + Client ssoiface.SSOAPI + + // The AWS account that is assigned to the user. + AccountID string + + // The role name that is assigned to the user. + RoleName string + + // The URL that points to the organization's AWS Single Sign-On (AWS SSO) user portal. + StartURL string +} + +// NewCredentials returns a new AWS Single Sign-On (AWS SSO) credential provider. The ConfigProvider is expected to be configured +// for the AWS Region where the AWS SSO user portal is located. +func NewCredentials(configProvider client.ConfigProvider, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials { + return NewCredentialsWithClient(sso.New(configProvider), accountID, roleName, startURL, optFns...) +} + +// NewCredentialsWithClient returns a new AWS Single Sign-On (AWS SSO) credential provider. The provided client is expected to be configured +// for the AWS Region where the AWS SSO user portal is located. +func NewCredentialsWithClient(client ssoiface.SSOAPI, accountID, roleName, startURL string, optFns ...func(provider *Provider)) *credentials.Credentials { + p := &Provider{ + Client: client, + AccountID: accountID, + RoleName: roleName, + StartURL: startURL, + } + + for _, fn := range optFns { + fn(p) + } + + return credentials.NewCredentials(p) +} + +// Retrieve retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal +// by exchanging the accessToken present in ~/.aws/sso/cache. +func (p *Provider) Retrieve() (credentials.Value, error) { + return p.RetrieveWithContext(aws.BackgroundContext()) +} + +// RetrieveWithContext retrieves temporary AWS credentials from the configured Amazon Single Sign-On (AWS SSO) user portal +// by exchanging the accessToken present in ~/.aws/sso/cache. +func (p *Provider) RetrieveWithContext(ctx credentials.Context) (credentials.Value, error) { + tokenFile, err := loadTokenFile(p.StartURL) + if err != nil { + return credentials.Value{}, err + } + + output, err := p.Client.GetRoleCredentialsWithContext(ctx, &sso.GetRoleCredentialsInput{ + AccessToken: &tokenFile.AccessToken, + AccountId: &p.AccountID, + RoleName: &p.RoleName, + }) + if err != nil { + return credentials.Value{}, err + } + + expireTime := time.Unix(0, aws.Int64Value(output.RoleCredentials.Expiration)*int64(time.Millisecond)).UTC() + p.SetExpiration(expireTime, 0) + + return credentials.Value{ + AccessKeyID: aws.StringValue(output.RoleCredentials.AccessKeyId), + SecretAccessKey: aws.StringValue(output.RoleCredentials.SecretAccessKey), + SessionToken: aws.StringValue(output.RoleCredentials.SessionToken), + ProviderName: ProviderName, + }, nil +} + +func getCacheFileName(url string) (string, error) { + hash := sha1.New() + _, err := hash.Write([]byte(url)) + if err != nil { + return "", err + } + return strings.ToLower(hex.EncodeToString(hash.Sum(nil))) + ".json", nil +} + +type rfc3339 time.Time + +func (r *rfc3339) UnmarshalJSON(bytes []byte) error { + var value string + + if err := json.Unmarshal(bytes, &value); err != nil { + return err + } + + parse, err := time.Parse(time.RFC3339, value) + if err != nil { + return fmt.Errorf("expected RFC3339 timestamp: %v", err) + } + + *r = rfc3339(parse) + + return nil +} + +type token struct { + AccessToken string `json:"accessToken"` + ExpiresAt rfc3339 `json:"expiresAt"` + Region string `json:"region,omitempty"` + StartURL string `json:"startUrl,omitempty"` +} + +func (t token) Expired() bool { + return nowTime().Round(0).After(time.Time(t.ExpiresAt)) +} + +func loadTokenFile(startURL string) (t token, err error) { + key, err := getCacheFileName(startURL) + if err != nil { + return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err) + } + + fileBytes, err := ioutil.ReadFile(filepath.Join(defaultCacheLocation(), key)) + if err != nil { + return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err) + } + + if err := json.Unmarshal(fileBytes, &t); err != nil { + return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, err) + } + + if len(t.AccessToken) == 0 { + return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil) + } + + if t.Expired() { + return token{}, awserr.New(ErrCodeSSOProviderInvalidToken, invalidTokenMessage, nil) + } + + return t, nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go index 6846ef6f8..260a37cbb 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go @@ -95,7 +95,7 @@ import ( // StdinTokenProvider will prompt on stderr and read from stdin for a string value. // An error is returned if reading from stdin fails. // -// Use this function go read MFA tokens from stdin. The function makes no attempt +// Use this function to read MFA tokens from stdin. The function makes no attempt // to make atomic prompts from stdin across multiple gorouties. // // Using StdinTokenProvider with multiple AssumeRoleProviders, or Credentials will @@ -244,9 +244,11 @@ type AssumeRoleProvider struct { MaxJitterFrac float64 } -// NewCredentials returns a pointer to a new Credentials object wrapping the +// NewCredentials returns a pointer to a new Credentials value wrapping the // AssumeRoleProvider. The credentials will expire every 15 minutes and the -// role will be named after a nanosecond timestamp of this operation. +// role will be named after a nanosecond timestamp of this operation. The +// Credentials value will attempt to refresh the credentials using the provider +// when Credentials.Get is called, if the cached credentials are expiring. // // Takes a Config provider to create the STS client. The ConfigProvider is // satisfied by the session.Session type. @@ -268,9 +270,11 @@ func NewCredentials(c client.ConfigProvider, roleARN string, options ...func(*As return credentials.NewCredentials(p) } -// NewCredentialsWithClient returns a pointer to a new Credentials object wrapping the +// NewCredentialsWithClient returns a pointer to a new Credentials value wrapping the // AssumeRoleProvider. The credentials will expire every 15 minutes and the -// role will be named after a nanosecond timestamp of this operation. +// role will be named after a nanosecond timestamp of this operation. The +// Credentials value will attempt to refresh the credentials using the provider +// when Credentials.Get is called, if the cached credentials are expiring. // // Takes an AssumeRoler which can be satisfied by the STS client. // diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 78f222607..50a3c1c92 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -358,6 +358,22 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "amplifybackend": service{ + + Endpoints: endpoints{ + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-south-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "api.detective": service{ Defaults: endpoint{ Protocols: []string{"https"}, @@ -380,9 +396,33 @@ var awsPartition = partition{ "me-south-1": endpoint{}, "sa-east-1": endpoint{}, "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "api.detective-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-east-2": endpoint{}, + "us-east-2-fips": endpoint{ + Hostname: "api.detective-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "us-west-1": endpoint{}, + "us-west-1-fips": endpoint{ + Hostname: "api.detective-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "api.detective-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, }, }, "api.ecr": service{ @@ -581,6 +621,12 @@ var awsPartition = partition{ }, }, }, + "api.fleethub.iot": service{ + + Endpoints: endpoints{ + "us-east-1": endpoint{}, + }, + }, "api.mediatailor": service{ Endpoints: endpoints{ @@ -740,6 +786,7 @@ var awsPartition = partition{ "appmesh": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -827,12 +874,36 @@ var awsPartition = partition{ "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, - "me-south-1": endpoint{}, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "fips-us-east-1": endpoint{ + Hostname: "athena-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "athena-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "athena-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "athena-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "autoscaling": service{ @@ -1231,6 +1302,7 @@ var awsPartition = partition{ "codebuild": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -1355,9 +1427,25 @@ var awsPartition = partition{ }, }, }, + "codeguru-reviewer": service{ + + Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-north-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-2": endpoint{}, + }, + }, "codepipeline": service{ Endpoints: endpoints{ + "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, @@ -1366,6 +1454,7 @@ var awsPartition = partition{ "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-north-1": endpoint{}, + "eu-south-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, @@ -1510,6 +1599,12 @@ var awsPartition = partition{ Region: "us-east-2", }, }, + "fips-us-west-1": endpoint{ + Hostname: "cognito-idp-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, "fips-us-west-2": endpoint{ Hostname: "cognito-idp-fips.us-west-2.amazonaws.com", CredentialScope: credentialScope{ @@ -3006,6 +3101,7 @@ var awsPartition = partition{ "fsx": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -3015,14 +3111,46 @@ var awsPartition = partition{ "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-north-1": endpoint{}, + "eu-south-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "fips-prod-ca-central-1": endpoint{ + Hostname: "fsx-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "fips-prod-us-east-1": endpoint{ + Hostname: "fsx-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-prod-us-east-2": endpoint{ + Hostname: "fsx-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-prod-us-west-1": endpoint{ + Hostname: "fsx-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-prod-us-west-2": endpoint{ + Hostname: "fsx-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "gamelift": service{ @@ -3520,6 +3648,23 @@ var awsPartition = partition{ "us-west-2": endpoint{}, }, }, + "iotwireless": service{ + + Endpoints: endpoints{ + "eu-west-1": endpoint{ + Hostname: "api.iotwireless.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + "us-east-1": endpoint{ + Hostname: "api.iotwireless.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, "kafka": service{ Endpoints: endpoints{ @@ -3665,6 +3810,7 @@ var awsPartition = partition{ "lakeformation": service{ Endpoints: endpoints{ + "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, @@ -3914,6 +4060,7 @@ var awsPartition = partition{ "macie2": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -3923,6 +4070,7 @@ var awsPartition = partition{ "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-north-1": endpoint{}, + "eu-south-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, @@ -3950,11 +4098,12 @@ var awsPartition = partition{ Region: "us-west-2", }, }, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "managedblockchain": service{ @@ -4177,7 +4326,19 @@ var awsPartition = partition{ "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "us-east-1": endpoint{}, - "us-west-2": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "models-fips.lex.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "models-fips.lex.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, }, }, "monitoring": service{ @@ -5091,7 +5252,19 @@ var awsPartition = partition{ "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "us-east-1": endpoint{}, - "us-west-2": endpoint{}, + "us-east-1-fips": endpoint{ + Hostname: "runtime-fips.lex.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "us-west-2": endpoint{}, + "us-west-2-fips": endpoint{ + Hostname: "runtime-fips.lex.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, }, }, "runtime.sagemaker": service{ @@ -5636,6 +5809,7 @@ var awsPartition = partition{ "servicediscovery": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -5645,6 +5819,7 @@ var awsPartition = partition{ "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, "eu-north-1": endpoint{}, + "eu-south-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, @@ -6407,6 +6582,7 @@ var awsPartition = partition{ "transfer": service{ Endpoints: endpoints{ + "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, @@ -6448,11 +6624,12 @@ var awsPartition = partition{ Region: "us-west-2", }, }, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "translate": service{ @@ -7296,6 +7473,16 @@ var awscnPartition = partition{ "cn-north-1": endpoint{}, }, }, + "guardduty": service{ + IsRegionalized: boxedTrue, + Defaults: endpoint{ + Protocols: []string{"https"}, + }, + Endpoints: endpoints{ + "cn-north-1": endpoint{}, + "cn-northwest-1": endpoint{}, + }, + }, "health": service{ Endpoints: endpoints{ @@ -8170,6 +8357,12 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "connect": service{ + + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + }, + }, "datasync": service{ Endpoints: endpoints{ @@ -8495,6 +8688,25 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "fsx": service{ + + Endpoints: endpoints{ + "fips-prod-us-gov-east-1": endpoint{ + Hostname: "fsx-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "fips-prod-us-gov-west-1": endpoint{ + Hostname: "fsx-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + "us-gov-east-1": endpoint{}, + "us-gov-west-1": endpoint{}, + }, + }, "glacier": service{ Endpoints: endpoints{ @@ -8556,7 +8768,12 @@ var awsusgovPartition = partition{ Region: "us-gov-east-1", }, }, - "us-gov-east-1": endpoint{}, + "us-gov-east-1": endpoint{ + Hostname: "greengrass.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, "us-gov-west-1": endpoint{ Hostname: "greengrass.us-gov-west-1.amazonaws.com", CredentialScope: credentialScope{ @@ -8787,6 +9004,22 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "models.lex": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "lex", + }, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "models-fips.lex.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, "monitoring": service{ Endpoints: endpoints{ @@ -8992,10 +9225,32 @@ var awsusgovPartition = partition{ "us-gov-west-1": endpoint{}, }, }, + "runtime.lex": service{ + Defaults: endpoint{ + CredentialScope: credentialScope{ + Service: "lex", + }, + }, + Endpoints: endpoints{ + "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "runtime-fips.lex.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + }, + }, "runtime.sagemaker": service{ Endpoints: endpoints{ "us-gov-west-1": endpoint{}, + "us-gov-west-1-fips": endpoint{ + Hostname: "runtime.sagemaker.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, }, }, "s3": service{ @@ -9406,12 +9661,24 @@ var awsusgovPartition = partition{ "waf-regional": service{ Endpoints: endpoints{ + "fips-us-gov-east-1": endpoint{ + Hostname: "waf-regional-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, "fips-us-gov-west-1": endpoint{ Hostname: "waf-regional-fips.us-gov-west-1.amazonaws.com", CredentialScope: credentialScope{ Region: "us-gov-west-1", }, }, + "us-gov-east-1": endpoint{ + Hostname: "waf-regional.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, "us-gov-west-1": endpoint{ Hostname: "waf-regional.us-gov-west-1.amazonaws.com", CredentialScope: credentialScope{ @@ -9703,12 +9970,30 @@ var awsisoPartition = partition{ "us-iso-east-1": endpoint{}, }, }, + "medialive": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, + "mediapackage": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, "monitoring": service{ Endpoints: endpoints{ "us-iso-east-1": endpoint{}, }, }, + "outposts": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, "rds": service{ Endpoints: endpoints{ @@ -9751,6 +10036,12 @@ var awsisoPartition = partition{ }, }, }, + "secretsmanager": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, "snowball": service{ Endpoints: endpoints{ @@ -9773,6 +10064,12 @@ var awsisoPartition = partition{ }, }, }, + "ssm": service{ + + Endpoints: endpoints{ + "us-iso-east-1": endpoint{}, + }, + }, "states": service{ Endpoints: endpoints{ diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go b/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go index fe6dac1f4..3ddd4e512 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go @@ -9,6 +9,7 @@ import ( "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/credentials/processcreds" + "github.com/aws/aws-sdk-go/aws/credentials/ssocreds" "github.com/aws/aws-sdk-go/aws/credentials/stscreds" "github.com/aws/aws-sdk-go/aws/defaults" "github.com/aws/aws-sdk-go/aws/request" @@ -100,6 +101,9 @@ func resolveCredsFromProfile(cfg *aws.Config, sharedCfg.Creds, ) + case sharedCfg.hasSSOConfiguration(): + creds, err = resolveSSOCredentials(cfg, sharedCfg, handlers) + case len(sharedCfg.CredentialProcess) != 0: // Get credentials from CredentialProcess creds = processcreds.NewCredentials(sharedCfg.CredentialProcess) @@ -151,6 +155,25 @@ func resolveCredsFromProfile(cfg *aws.Config, return creds, nil } +func resolveSSOCredentials(cfg *aws.Config, sharedCfg sharedConfig, handlers request.Handlers) (*credentials.Credentials, error) { + if err := sharedCfg.validateSSOConfiguration(); err != nil { + return nil, err + } + + cfgCopy := cfg.Copy() + cfgCopy.Region = &sharedCfg.SSORegion + + return ssocreds.NewCredentials( + &Session{ + Config: cfgCopy, + Handlers: handlers.Copy(), + }, + sharedCfg.SSOAccountID, + sharedCfg.SSORoleName, + sharedCfg.SSOStartURL, + ), nil +} + // valid credential source values const ( credSourceEc2Metadata = "Ec2InstanceMetadata" diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go index 08713cc34..038ae222f 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/session.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/session.go @@ -36,7 +36,7 @@ const ( // ErrSharedConfigSourceCollision will be returned if a section contains both // source_profile and credential_source -var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only source profile or credential source can be specified, not both", nil) +var ErrSharedConfigSourceCollision = awserr.New(ErrCodeSharedConfig, "only one credential type may be specified per profile: source profile, credential source, credential process, web identity token, or sso", nil) // ErrSharedConfigECSContainerEnvVarEmpty will be returned if the environment // variables are empty and Environment was set as the credential source diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go b/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go index be7daacf3..c3f38b6ec 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go @@ -2,6 +2,7 @@ package session import ( "fmt" + "strings" "time" "github.com/aws/aws-sdk-go/aws/awserr" @@ -25,6 +26,12 @@ const ( roleSessionNameKey = `role_session_name` // optional roleDurationSecondsKey = "duration_seconds" // optional + // AWS Single Sign-On (AWS SSO) group + ssoAccountIDKey = "sso_account_id" + ssoRegionKey = "sso_region" + ssoRoleNameKey = "sso_role_name" + ssoStartURL = "sso_start_url" + // CSM options csmEnabledKey = `csm_enabled` csmHostKey = `csm_host` @@ -63,6 +70,8 @@ const ( // sharedConfig represents the configuration fields of the SDK config files. type sharedConfig struct { + Profile string + // Credentials values from the config file. Both aws_access_key_id and // aws_secret_access_key must be provided together in the same file to be // considered valid. The values will be ignored if not a complete group. @@ -78,6 +87,11 @@ type sharedConfig struct { CredentialProcess string WebIdentityTokenFile string + SSOAccountID string + SSORegion string + SSORoleName string + SSOStartURL string + RoleARN string RoleSessionName string ExternalID string @@ -189,6 +203,8 @@ func loadSharedConfigIniFiles(filenames []string) ([]sharedConfigFile, error) { } func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile string, files []sharedConfigFile, exOpts bool) error { + cfg.Profile = profile + // Trim files from the list that don't exist. var skippedFiles int var profileNotFoundErr error @@ -217,9 +233,9 @@ func (cfg *sharedConfig) setFromIniFiles(profiles map[string]struct{}, profile s cfg.clearAssumeRoleOptions() } else { // First time a profile has been seen, It must either be a assume role - // or credentials. Assert if the credential type requires a role ARN, - // the ARN is also set. - if err := cfg.validateCredentialsRequireARN(profile); err != nil { + // credentials, or SSO. Assert if the credential type requires a role ARN, + // the ARN is also set, or validate that the SSO configuration is complete. + if err := cfg.validateCredentialsConfig(profile); err != nil { return err } } @@ -312,6 +328,12 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, e } cfg.S3UsEast1RegionalEndpoint = sre } + + // AWS Single Sign-On (AWS SSO) + updateString(&cfg.SSOAccountID, section, ssoAccountIDKey) + updateString(&cfg.SSORegion, section, ssoRegionKey) + updateString(&cfg.SSORoleName, section, ssoRoleNameKey) + updateString(&cfg.SSOStartURL, section, ssoStartURL) } updateString(&cfg.CredentialProcess, section, credentialProcessKey) @@ -342,6 +364,14 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile, e return nil } +func (cfg *sharedConfig) validateCredentialsConfig(profile string) error { + if err := cfg.validateCredentialsRequireARN(profile); err != nil { + return err + } + + return nil +} + func (cfg *sharedConfig) validateCredentialsRequireARN(profile string) error { var credSource string @@ -371,6 +401,7 @@ func (cfg *sharedConfig) validateCredentialType() error { len(cfg.CredentialSource) != 0, len(cfg.CredentialProcess) != 0, len(cfg.WebIdentityTokenFile) != 0, + cfg.hasSSOConfiguration(), ) { return ErrSharedConfigSourceCollision } @@ -378,12 +409,43 @@ func (cfg *sharedConfig) validateCredentialType() error { return nil } +func (cfg *sharedConfig) validateSSOConfiguration() error { + if !cfg.hasSSOConfiguration() { + return nil + } + + var missing []string + if len(cfg.SSOAccountID) == 0 { + missing = append(missing, ssoAccountIDKey) + } + + if len(cfg.SSORegion) == 0 { + missing = append(missing, ssoRegionKey) + } + + if len(cfg.SSORoleName) == 0 { + missing = append(missing, ssoRoleNameKey) + } + + if len(cfg.SSOStartURL) == 0 { + missing = append(missing, ssoStartURL) + } + + if len(missing) > 0 { + return fmt.Errorf("profile %q is configured to use SSO but is missing required configuration: %s", + cfg.Profile, strings.Join(missing, ", ")) + } + + return nil +} + func (cfg *sharedConfig) hasCredentials() bool { switch { case len(cfg.SourceProfileName) != 0: case len(cfg.CredentialSource) != 0: case len(cfg.CredentialProcess) != 0: case len(cfg.WebIdentityTokenFile) != 0: + case cfg.hasSSOConfiguration(): case cfg.Creds.HasKeys(): default: return false @@ -407,6 +469,18 @@ func (cfg *sharedConfig) clearAssumeRoleOptions() { cfg.SourceProfileName = "" } +func (cfg *sharedConfig) hasSSOConfiguration() bool { + switch { + case len(cfg.SSOAccountID) != 0: + case len(cfg.SSORegion) != 0: + case len(cfg.SSORoleName) != 0: + case len(cfg.SSOStartURL) != 0: + default: + return false + } + return true +} + func oneOrNone(bs ...bool) bool { var count int diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index b18b40cab..fe73428eb 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.36.5" +const SDKVersion = "1.37.15" diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go index d7d42db0a..1f1d27aea 100644 --- a/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/host.go @@ -1,9 +1,10 @@ package protocol import ( - "strings" - "github.com/aws/aws-sdk-go/aws/request" + "net" + "strconv" + "strings" ) // ValidateEndpointHostHandler is a request handler that will validate the @@ -22,8 +23,26 @@ var ValidateEndpointHostHandler = request.NamedHandler{ // 3986 host. Returns error if the host is not valid. func ValidateEndpointHost(opName, host string) error { paramErrs := request.ErrInvalidParams{Context: opName} - labels := strings.Split(host, ".") + var hostname string + var port string + var err error + + if strings.Contains(host, ":") { + hostname, port, err = net.SplitHostPort(host) + + if err != nil { + paramErrs.Add(request.NewErrParamFormat("endpoint", err.Error(), host)) + } + + if !ValidPortNumber(port) { + paramErrs.Add(request.NewErrParamFormat("endpoint port number", "[0-65535]", port)) + } + } else { + hostname = host + } + + labels := strings.Split(hostname, ".") for i, label := range labels { if i == len(labels)-1 && len(label) == 0 { // Allow trailing dot for FQDN hosts. @@ -36,7 +55,11 @@ func ValidateEndpointHost(opName, host string) error { } } - if len(host) > 255 { + if len(hostname) == 0 { + paramErrs.Add(request.NewErrParamMinLen("endpoint host", 1)) + } + + if len(hostname) > 255 { paramErrs.Add(request.NewErrParamMaxLen( "endpoint host", 255, host, )) @@ -66,3 +89,16 @@ func ValidHostLabel(label string) bool { return true } + +// ValidPortNumber return if the port is valid RFC 3986 port +func ValidPortNumber(port string) bool { + i, err := strconv.Atoi(port) + if err != nil { + return false + } + + if i < 0 || i > 65535 { + return false + } + return true +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go new file mode 100644 index 000000000..2e0e205af --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go @@ -0,0 +1,59 @@ +// Package restjson provides RESTful JSON serialization of AWS +// requests and responses. +package restjson + +//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/rest-json.json build_test.go +//go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/rest-json.json unmarshal_test.go + +import ( + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol/jsonrpc" + "github.com/aws/aws-sdk-go/private/protocol/rest" +) + +// BuildHandler is a named request handler for building restjson protocol +// requests +var BuildHandler = request.NamedHandler{ + Name: "awssdk.restjson.Build", + Fn: Build, +} + +// UnmarshalHandler is a named request handler for unmarshaling restjson +// protocol requests +var UnmarshalHandler = request.NamedHandler{ + Name: "awssdk.restjson.Unmarshal", + Fn: Unmarshal, +} + +// UnmarshalMetaHandler is a named request handler for unmarshaling restjson +// protocol request metadata +var UnmarshalMetaHandler = request.NamedHandler{ + Name: "awssdk.restjson.UnmarshalMeta", + Fn: UnmarshalMeta, +} + +// Build builds a request for the REST JSON protocol. +func Build(r *request.Request) { + rest.Build(r) + + if t := rest.PayloadType(r.Params); t == "structure" || t == "" { + if v := r.HTTPRequest.Header.Get("Content-Type"); len(v) == 0 { + r.HTTPRequest.Header.Set("Content-Type", "application/json") + } + jsonrpc.Build(r) + } +} + +// Unmarshal unmarshals a response body for the REST JSON protocol. +func Unmarshal(r *request.Request) { + if t := rest.PayloadType(r.Data); t == "structure" || t == "" { + jsonrpc.Unmarshal(r) + } else { + rest.Unmarshal(r) + } +} + +// UnmarshalMeta unmarshals response headers for the REST JSON protocol. +func UnmarshalMeta(r *request.Request) { + rest.UnmarshalMeta(r) +} diff --git a/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go b/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go new file mode 100644 index 000000000..d756d8cc5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go @@ -0,0 +1,134 @@ +package restjson + +import ( + "bytes" + "io" + "io/ioutil" + "net/http" + "strings" + + "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil" + "github.com/aws/aws-sdk-go/private/protocol/rest" +) + +const ( + errorTypeHeader = "X-Amzn-Errortype" + errorMessageHeader = "X-Amzn-Errormessage" +) + +// UnmarshalTypedError provides unmarshaling errors API response errors +// for both typed and untyped errors. +type UnmarshalTypedError struct { + exceptions map[string]func(protocol.ResponseMetadata) error +} + +// NewUnmarshalTypedError returns an UnmarshalTypedError initialized for the +// set of exception names to the error unmarshalers +func NewUnmarshalTypedError(exceptions map[string]func(protocol.ResponseMetadata) error) *UnmarshalTypedError { + return &UnmarshalTypedError{ + exceptions: exceptions, + } +} + +// UnmarshalError attempts to unmarshal the HTTP response error as a known +// error type. If unable to unmarshal the error type, the generic SDK error +// type will be used. +func (u *UnmarshalTypedError) UnmarshalError( + resp *http.Response, + respMeta protocol.ResponseMetadata, +) (error, error) { + + code := resp.Header.Get(errorTypeHeader) + msg := resp.Header.Get(errorMessageHeader) + + body := resp.Body + if len(code) == 0 { + // If unable to get code from HTTP headers have to parse JSON message + // to determine what kind of exception this will be. + var buf bytes.Buffer + var jsonErr jsonErrorResponse + teeReader := io.TeeReader(resp.Body, &buf) + err := jsonutil.UnmarshalJSONError(&jsonErr, teeReader) + if err != nil { + return nil, err + } + + body = ioutil.NopCloser(&buf) + code = jsonErr.Code + msg = jsonErr.Message + } + + // If code has colon separators remove them so can compare against modeled + // exception names. + code = strings.SplitN(code, ":", 2)[0] + + if fn, ok := u.exceptions[code]; ok { + // If exception code is know, use associated constructor to get a value + // for the exception that the JSON body can be unmarshaled into. + v := fn(respMeta) + if err := jsonutil.UnmarshalJSONCaseInsensitive(v, body); err != nil { + return nil, err + } + + if err := rest.UnmarshalResponse(resp, v, true); err != nil { + return nil, err + } + + return v, nil + } + + // fallback to unmodeled generic exceptions + return awserr.NewRequestFailure( + awserr.New(code, msg, nil), + respMeta.StatusCode, + respMeta.RequestID, + ), nil +} + +// UnmarshalErrorHandler is a named request handler for unmarshaling restjson +// protocol request errors +var UnmarshalErrorHandler = request.NamedHandler{ + Name: "awssdk.restjson.UnmarshalError", + Fn: UnmarshalError, +} + +// UnmarshalError unmarshals a response error for the REST JSON protocol. +func UnmarshalError(r *request.Request) { + defer r.HTTPResponse.Body.Close() + + var jsonErr jsonErrorResponse + err := jsonutil.UnmarshalJSONError(&jsonErr, r.HTTPResponse.Body) + if err != nil { + r.Error = awserr.NewRequestFailure( + awserr.New(request.ErrCodeSerialization, + "failed to unmarshal response error", err), + r.HTTPResponse.StatusCode, + r.RequestID, + ) + return + } + + code := r.HTTPResponse.Header.Get(errorTypeHeader) + if code == "" { + code = jsonErr.Code + } + msg := r.HTTPResponse.Header.Get(errorMessageHeader) + if msg == "" { + msg = jsonErr.Message + } + + code = strings.SplitN(code, ":", 2)[0] + r.Error = awserr.NewRequestFailure( + awserr.New(code, jsonErr.Message, nil), + r.HTTPResponse.StatusCode, + r.RequestID, + ) +} + +type jsonErrorResponse struct { + Code string `json:"code"` + Message string `json:"message"` +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go index f49d31d75..e380fb0e9 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go @@ -88,6 +88,80 @@ func (c *EC2) AcceptReservedInstancesExchangeQuoteWithContext(ctx aws.Context, i return out, req.Send() } +const opAcceptTransitGatewayMulticastDomainAssociations = "AcceptTransitGatewayMulticastDomainAssociations" + +// AcceptTransitGatewayMulticastDomainAssociationsRequest generates a "aws/request.Request" representing the +// client's request for the AcceptTransitGatewayMulticastDomainAssociations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See AcceptTransitGatewayMulticastDomainAssociations for more information on using the AcceptTransitGatewayMulticastDomainAssociations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the AcceptTransitGatewayMulticastDomainAssociationsRequest method. +// req, resp := client.AcceptTransitGatewayMulticastDomainAssociationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptTransitGatewayMulticastDomainAssociations +func (c *EC2) AcceptTransitGatewayMulticastDomainAssociationsRequest(input *AcceptTransitGatewayMulticastDomainAssociationsInput) (req *request.Request, output *AcceptTransitGatewayMulticastDomainAssociationsOutput) { + op := &request.Operation{ + Name: opAcceptTransitGatewayMulticastDomainAssociations, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &AcceptTransitGatewayMulticastDomainAssociationsInput{} + } + + output = &AcceptTransitGatewayMulticastDomainAssociationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// AcceptTransitGatewayMulticastDomainAssociations API operation for Amazon Elastic Compute Cloud. +// +// Accepts a request to associate subnets with a transit gateway multicast domain. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation AcceptTransitGatewayMulticastDomainAssociations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/AcceptTransitGatewayMulticastDomainAssociations +func (c *EC2) AcceptTransitGatewayMulticastDomainAssociations(input *AcceptTransitGatewayMulticastDomainAssociationsInput) (*AcceptTransitGatewayMulticastDomainAssociationsOutput, error) { + req, out := c.AcceptTransitGatewayMulticastDomainAssociationsRequest(input) + return out, req.Send() +} + +// AcceptTransitGatewayMulticastDomainAssociationsWithContext is the same as AcceptTransitGatewayMulticastDomainAssociations with the addition of +// the ability to pass a context and additional request options. +// +// See AcceptTransitGatewayMulticastDomainAssociations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) AcceptTransitGatewayMulticastDomainAssociationsWithContext(ctx aws.Context, input *AcceptTransitGatewayMulticastDomainAssociationsInput, opts ...request.Option) (*AcceptTransitGatewayMulticastDomainAssociationsOutput, error) { + req, out := c.AcceptTransitGatewayMulticastDomainAssociationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opAcceptTransitGatewayPeeringAttachment = "AcceptTransitGatewayPeeringAttachment" // AcceptTransitGatewayPeeringAttachmentRequest generates a "aws/request.Request" representing the @@ -2941,7 +3015,7 @@ func (c *EC2) CancelReservedInstancesListingRequest(input *CancelReservedInstanc // Marketplace. // // For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -3323,14 +3397,25 @@ func (c *EC2) CopyImageRequest(input *CopyImageInput) (req *request.Request, out // CopyImage API operation for Amazon Elastic Compute Cloud. // -// Initiates the copy of an AMI from the specified source Region to the current -// Region. You specify the destination Region by using its endpoint when making -// the request. +// Initiates the copy of an AMI. You can copy an AMI from one Region to another, +// or from a Region to an AWS Outpost. You can't copy an AMI from an Outpost +// to a Region, from one Outpost to another, or within the same Outpost. // -// Copies of encrypted backing snapshots for the AMI are encrypted. Copies of -// unencrypted backing snapshots remain unencrypted, unless you set Encrypted -// during the copy operation. You cannot create an unencrypted copy of an encrypted -// backing snapshot. +// To copy an AMI from one Region to another, specify the source Region using +// the SourceRegion parameter, and specify the destination Region using its +// endpoint. Copies of encrypted backing snapshots for the AMI are encrypted. +// Copies of unencrypted backing snapshots remain unencrypted, unless you set +// Encrypted during the copy operation. You cannot create an unencrypted copy +// of an encrypted backing snapshot. +// +// To copy an AMI from a Region to an Outpost, specify the source Region using +// the SourceRegion parameter, and specify the ARN of the destination Outpost +// using DestinationOutpostArn. Backing snapshots copied to an Outpost are encrypted +// by default using the default encryption key for the Region, or a different +// key that you specify in the request using KmsKeyId. Outposts do not support +// unencrypted snapshots. For more information, Amazon EBS local snapshots on +// Outposts (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#ami) +// in the Amazon Elastic Compute Cloud User Guide. // // For more information about the prerequisites and limits when copying an AMI, // see Copying an AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html) @@ -3409,18 +3494,25 @@ func (c *EC2) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Reques // CopySnapshot API operation for Amazon Elastic Compute Cloud. // // Copies a point-in-time snapshot of an EBS volume and stores it in Amazon -// S3. You can copy the snapshot within the same Region or from one Region to -// another. You can use the snapshot to create EBS volumes or Amazon Machine -// Images (AMIs). +// S3. You can copy a snapshot within the same Region, from one Region to another, +// or from a Region to an Outpost. You can't copy a snapshot from an Outpost +// to a Region, from one Outpost to another, or within the same Outpost. // -// Copies of encrypted EBS snapshots remain encrypted. Copies of unencrypted -// snapshots remain unencrypted, unless you enable encryption for the snapshot -// copy operation. By default, encrypted snapshot copies use the default AWS -// Key Management Service (AWS KMS) customer master key (CMK); however, you -// can specify a different CMK. +// You can use the snapshot to create EBS volumes or Amazon Machine Images (AMIs). // -// To copy an encrypted snapshot that has been shared from another account, -// you must have permissions for the CMK used to encrypt the snapshot. +// When copying snapshots to a Region, copies of encrypted EBS snapshots remain +// encrypted. Copies of unencrypted snapshots remain unencrypted, unless you +// enable encryption for the snapshot copy operation. By default, encrypted +// snapshot copies use the default AWS Key Management Service (AWS KMS) customer +// master key (CMK); however, you can specify a different CMK. To copy an encrypted +// snapshot that has been shared from another account, you must have permissions +// for the CMK used to encrypt the snapshot. +// +// Snapshots copied to an Outpost are encrypted by default using the default +// encryption key for the Region, or a different key that you specify in the +// request using KmsKeyId. Outposts do not support unencrypted snapshots. For +// more information, Amazon EBS local snapshots on Outposts (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#ami) +// in the Amazon Elastic Compute Cloud User Guide. // // Snapshots created by copying another snapshot have an arbitrary volume ID // that should not be used for any purpose. @@ -3509,7 +3601,7 @@ func (c *EC2) CreateCapacityReservationRequest(input *CreateCapacityReservationI // you ensure that you always have access to Amazon EC2 capacity when you need // it, for as long as you need it. For more information, see Capacity Reservations // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Your request to create a Capacity Reservation could fail if Amazon EC2 does // not have sufficient capacity to fulfill the request. If your request fails @@ -3522,8 +3614,8 @@ func (c *EC2) CreateCapacityReservationRequest(input *CreateCapacityReservationI // Instance limit for the selected instance type. If your request fails due // to limit constraints, increase your On-Demand Instance limit for the required // instance type and try again. For more information about increasing your instance -// limits, see Amazon EC2 Service Limits (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) -// in the Amazon Elastic Compute Cloud User Guide. +// limits, see Amazon EC2 Service Quotas (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -4288,7 +4380,7 @@ func (c *EC2) CreateFleetRequest(input *CreateFleetInput) (req *request.Request, // that vary by instance type, AMI, Availability Zone, or subnet. // // For more information, see Launching an EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -5448,6 +5540,84 @@ func (c *EC2) CreateNetworkAclEntryWithContext(ctx aws.Context, input *CreateNet return out, req.Send() } +const opCreateNetworkInsightsPath = "CreateNetworkInsightsPath" + +// CreateNetworkInsightsPathRequest generates a "aws/request.Request" representing the +// client's request for the CreateNetworkInsightsPath operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateNetworkInsightsPath for more information on using the CreateNetworkInsightsPath +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateNetworkInsightsPathRequest method. +// req, resp := client.CreateNetworkInsightsPathRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInsightsPath +func (c *EC2) CreateNetworkInsightsPathRequest(input *CreateNetworkInsightsPathInput) (req *request.Request, output *CreateNetworkInsightsPathOutput) { + op := &request.Operation{ + Name: opCreateNetworkInsightsPath, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateNetworkInsightsPathInput{} + } + + output = &CreateNetworkInsightsPathOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateNetworkInsightsPath API operation for Amazon Elastic Compute Cloud. +// +// Creates a path to analyze for reachability. +// +// Reachability Analyzer enables you to analyze and debug network reachability +// between two resources in your virtual private cloud (VPC). For more information, +// see What is Reachability Analyzer (https://docs.aws.amazon.com/vpc/latest/reachability/). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateNetworkInsightsPath for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateNetworkInsightsPath +func (c *EC2) CreateNetworkInsightsPath(input *CreateNetworkInsightsPathInput) (*CreateNetworkInsightsPathOutput, error) { + req, out := c.CreateNetworkInsightsPathRequest(input) + return out, req.Send() +} + +// CreateNetworkInsightsPathWithContext is the same as CreateNetworkInsightsPath with the addition of +// the ability to pass a context and additional request options. +// +// See CreateNetworkInsightsPath for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateNetworkInsightsPathWithContext(ctx aws.Context, input *CreateNetworkInsightsPathInput, opts ...request.Option) (*CreateNetworkInsightsPathOutput, error) { + req, out := c.CreateNetworkInsightsPathRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateNetworkInterface = "CreateNetworkInterface" // CreateNetworkInterfaceRequest generates a "aws/request.Request" representing the @@ -5659,7 +5829,7 @@ func (c *EC2) CreatePlacementGroupRequest(input *CreatePlacementGroupInput) (req // in another partition. // // For more information, see Placement groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -5755,7 +5925,7 @@ func (c *EC2) CreateReservedInstancesListingRequest(input *CreateReservedInstanc // you can use the DescribeReservedInstancesListings operation. // // For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -6103,6 +6273,12 @@ func (c *EC2) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Re // snapshots for backups, to make copies of EBS volumes, and to save data before // shutting down an instance. // +// You can create snapshots of volumes in a Region and volumes on an Outpost. +// If you create a snapshot of a volume in a Region, the snapshot must be stored +// in the same Region as the volume. If you create a snapshot of a volume on +// an Outpost, the snapshot can be stored on the same Outpost as the volume, +// or in the Region for that Outpost. +// // When a snapshot is created, any AWS Marketplace product codes that are associated // with the source volume are propagated to the snapshot. // @@ -6209,6 +6385,12 @@ func (c *EC2) CreateSnapshotsRequest(input *CreateSnapshotsInput) (req *request. // will produce one snapshot each that is crash-consistent across the instance. // Boot volumes can be excluded by changing the parameters. // +// You can create multi-volume snapshots of instances in a Region and instances +// on an Outpost. If you create snapshots from an instance in a Region, the +// snapshots must be stored in the same Region as the instance. If you create +// snapshots from an instance on an Outpost, the snapshots can be stored on +// the same Outpost as the instance, or in the Region for that Outpost. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -6916,6 +7098,166 @@ func (c *EC2) CreateTransitGatewayWithContext(ctx aws.Context, input *CreateTran return out, req.Send() } +const opCreateTransitGatewayConnect = "CreateTransitGatewayConnect" + +// CreateTransitGatewayConnectRequest generates a "aws/request.Request" representing the +// client's request for the CreateTransitGatewayConnect operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTransitGatewayConnect for more information on using the CreateTransitGatewayConnect +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTransitGatewayConnectRequest method. +// req, resp := client.CreateTransitGatewayConnectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayConnect +func (c *EC2) CreateTransitGatewayConnectRequest(input *CreateTransitGatewayConnectInput) (req *request.Request, output *CreateTransitGatewayConnectOutput) { + op := &request.Operation{ + Name: opCreateTransitGatewayConnect, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTransitGatewayConnectInput{} + } + + output = &CreateTransitGatewayConnectOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTransitGatewayConnect API operation for Amazon Elastic Compute Cloud. +// +// Creates a Connect attachment from a specified transit gateway attachment. +// A Connect attachment is a GRE-based tunnel attachment that you can use to +// establish a connection between a transit gateway and an appliance. +// +// A Connect attachment uses an existing VPC or AWS Direct Connect attachment +// as the underlying transport mechanism. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTransitGatewayConnect for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayConnect +func (c *EC2) CreateTransitGatewayConnect(input *CreateTransitGatewayConnectInput) (*CreateTransitGatewayConnectOutput, error) { + req, out := c.CreateTransitGatewayConnectRequest(input) + return out, req.Send() +} + +// CreateTransitGatewayConnectWithContext is the same as CreateTransitGatewayConnect with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTransitGatewayConnect for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTransitGatewayConnectWithContext(ctx aws.Context, input *CreateTransitGatewayConnectInput, opts ...request.Option) (*CreateTransitGatewayConnectOutput, error) { + req, out := c.CreateTransitGatewayConnectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opCreateTransitGatewayConnectPeer = "CreateTransitGatewayConnectPeer" + +// CreateTransitGatewayConnectPeerRequest generates a "aws/request.Request" representing the +// client's request for the CreateTransitGatewayConnectPeer operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See CreateTransitGatewayConnectPeer for more information on using the CreateTransitGatewayConnectPeer +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the CreateTransitGatewayConnectPeerRequest method. +// req, resp := client.CreateTransitGatewayConnectPeerRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayConnectPeer +func (c *EC2) CreateTransitGatewayConnectPeerRequest(input *CreateTransitGatewayConnectPeerInput) (req *request.Request, output *CreateTransitGatewayConnectPeerOutput) { + op := &request.Operation{ + Name: opCreateTransitGatewayConnectPeer, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &CreateTransitGatewayConnectPeerInput{} + } + + output = &CreateTransitGatewayConnectPeerOutput{} + req = c.newRequest(op, input, output) + return +} + +// CreateTransitGatewayConnectPeer API operation for Amazon Elastic Compute Cloud. +// +// Creates a Connect peer for a specified transit gateway Connect attachment +// between a transit gateway and an appliance. +// +// The peer address and transit gateway address must be the same IP address +// family (IPv4 or IPv6). +// +// For more information, see Connect peers (https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html#tgw-connect-peer) +// in the Transit Gateways Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation CreateTransitGatewayConnectPeer for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CreateTransitGatewayConnectPeer +func (c *EC2) CreateTransitGatewayConnectPeer(input *CreateTransitGatewayConnectPeerInput) (*CreateTransitGatewayConnectPeerOutput, error) { + req, out := c.CreateTransitGatewayConnectPeerRequest(input) + return out, req.Send() +} + +// CreateTransitGatewayConnectPeerWithContext is the same as CreateTransitGatewayConnectPeer with the addition of +// the ability to pass a context and additional request options. +// +// See CreateTransitGatewayConnectPeer for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) CreateTransitGatewayConnectPeerWithContext(ctx aws.Context, input *CreateTransitGatewayConnectPeerInput, opts ...request.Option) (*CreateTransitGatewayConnectPeerOutput, error) { + req, out := c.CreateTransitGatewayConnectPeerRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opCreateTransitGatewayMulticastDomain = "CreateTransitGatewayMulticastDomain" // CreateTransitGatewayMulticastDomainRequest generates a "aws/request.Request" representing the @@ -8698,7 +9040,7 @@ func (c *EC2) DeleteFleetsRequest(input *DeleteFleetsInput) (req *request.Reques // instant fleets. // // For more information, see Deleting an EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/manage-ec2-fleet.html#delete-fleet) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -9630,6 +9972,154 @@ func (c *EC2) DeleteNetworkAclEntryWithContext(ctx aws.Context, input *DeleteNet return out, req.Send() } +const opDeleteNetworkInsightsAnalysis = "DeleteNetworkInsightsAnalysis" + +// DeleteNetworkInsightsAnalysisRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNetworkInsightsAnalysis operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNetworkInsightsAnalysis for more information on using the DeleteNetworkInsightsAnalysis +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNetworkInsightsAnalysisRequest method. +// req, resp := client.DeleteNetworkInsightsAnalysisRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInsightsAnalysis +func (c *EC2) DeleteNetworkInsightsAnalysisRequest(input *DeleteNetworkInsightsAnalysisInput) (req *request.Request, output *DeleteNetworkInsightsAnalysisOutput) { + op := &request.Operation{ + Name: opDeleteNetworkInsightsAnalysis, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNetworkInsightsAnalysisInput{} + } + + output = &DeleteNetworkInsightsAnalysisOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteNetworkInsightsAnalysis API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified network insights analysis. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNetworkInsightsAnalysis for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInsightsAnalysis +func (c *EC2) DeleteNetworkInsightsAnalysis(input *DeleteNetworkInsightsAnalysisInput) (*DeleteNetworkInsightsAnalysisOutput, error) { + req, out := c.DeleteNetworkInsightsAnalysisRequest(input) + return out, req.Send() +} + +// DeleteNetworkInsightsAnalysisWithContext is the same as DeleteNetworkInsightsAnalysis with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNetworkInsightsAnalysis for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNetworkInsightsAnalysisWithContext(ctx aws.Context, input *DeleteNetworkInsightsAnalysisInput, opts ...request.Option) (*DeleteNetworkInsightsAnalysisOutput, error) { + req, out := c.DeleteNetworkInsightsAnalysisRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteNetworkInsightsPath = "DeleteNetworkInsightsPath" + +// DeleteNetworkInsightsPathRequest generates a "aws/request.Request" representing the +// client's request for the DeleteNetworkInsightsPath operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteNetworkInsightsPath for more information on using the DeleteNetworkInsightsPath +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteNetworkInsightsPathRequest method. +// req, resp := client.DeleteNetworkInsightsPathRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInsightsPath +func (c *EC2) DeleteNetworkInsightsPathRequest(input *DeleteNetworkInsightsPathInput) (req *request.Request, output *DeleteNetworkInsightsPathOutput) { + op := &request.Operation{ + Name: opDeleteNetworkInsightsPath, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteNetworkInsightsPathInput{} + } + + output = &DeleteNetworkInsightsPathOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteNetworkInsightsPath API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified path. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteNetworkInsightsPath for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteNetworkInsightsPath +func (c *EC2) DeleteNetworkInsightsPath(input *DeleteNetworkInsightsPathInput) (*DeleteNetworkInsightsPathOutput, error) { + req, out := c.DeleteNetworkInsightsPathRequest(input) + return out, req.Send() +} + +// DeleteNetworkInsightsPathWithContext is the same as DeleteNetworkInsightsPath with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteNetworkInsightsPath for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteNetworkInsightsPathWithContext(ctx aws.Context, input *DeleteNetworkInsightsPathInput, opts ...request.Option) (*DeleteNetworkInsightsPathOutput, error) { + req, out := c.DeleteNetworkInsightsPathRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteNetworkInterface = "DeleteNetworkInterface" // DeleteNetworkInterfaceRequest generates a "aws/request.Request" representing the @@ -9831,7 +10321,7 @@ func (c *EC2) DeletePlacementGroupRequest(input *DeletePlacementGroupInput) (req // Deletes the specified placement group. You must terminate all instances in // the placement group before you can delete the placement group. For more information, // see Placement groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -10861,6 +11351,155 @@ func (c *EC2) DeleteTransitGatewayWithContext(ctx aws.Context, input *DeleteTran return out, req.Send() } +const opDeleteTransitGatewayConnect = "DeleteTransitGatewayConnect" + +// DeleteTransitGatewayConnectRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTransitGatewayConnect operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTransitGatewayConnect for more information on using the DeleteTransitGatewayConnect +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTransitGatewayConnectRequest method. +// req, resp := client.DeleteTransitGatewayConnectRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayConnect +func (c *EC2) DeleteTransitGatewayConnectRequest(input *DeleteTransitGatewayConnectInput) (req *request.Request, output *DeleteTransitGatewayConnectOutput) { + op := &request.Operation{ + Name: opDeleteTransitGatewayConnect, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTransitGatewayConnectInput{} + } + + output = &DeleteTransitGatewayConnectOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTransitGatewayConnect API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Connect attachment. You must first delete any Connect +// peers for the attachment. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTransitGatewayConnect for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayConnect +func (c *EC2) DeleteTransitGatewayConnect(input *DeleteTransitGatewayConnectInput) (*DeleteTransitGatewayConnectOutput, error) { + req, out := c.DeleteTransitGatewayConnectRequest(input) + return out, req.Send() +} + +// DeleteTransitGatewayConnectWithContext is the same as DeleteTransitGatewayConnect with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTransitGatewayConnect for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTransitGatewayConnectWithContext(ctx aws.Context, input *DeleteTransitGatewayConnectInput, opts ...request.Option) (*DeleteTransitGatewayConnectOutput, error) { + req, out := c.DeleteTransitGatewayConnectRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opDeleteTransitGatewayConnectPeer = "DeleteTransitGatewayConnectPeer" + +// DeleteTransitGatewayConnectPeerRequest generates a "aws/request.Request" representing the +// client's request for the DeleteTransitGatewayConnectPeer operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DeleteTransitGatewayConnectPeer for more information on using the DeleteTransitGatewayConnectPeer +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DeleteTransitGatewayConnectPeerRequest method. +// req, resp := client.DeleteTransitGatewayConnectPeerRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayConnectPeer +func (c *EC2) DeleteTransitGatewayConnectPeerRequest(input *DeleteTransitGatewayConnectPeerInput) (req *request.Request, output *DeleteTransitGatewayConnectPeerOutput) { + op := &request.Operation{ + Name: opDeleteTransitGatewayConnectPeer, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &DeleteTransitGatewayConnectPeerInput{} + } + + output = &DeleteTransitGatewayConnectPeerOutput{} + req = c.newRequest(op, input, output) + return +} + +// DeleteTransitGatewayConnectPeer API operation for Amazon Elastic Compute Cloud. +// +// Deletes the specified Connect peer. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DeleteTransitGatewayConnectPeer for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DeleteTransitGatewayConnectPeer +func (c *EC2) DeleteTransitGatewayConnectPeer(input *DeleteTransitGatewayConnectPeerInput) (*DeleteTransitGatewayConnectPeerOutput, error) { + req, out := c.DeleteTransitGatewayConnectPeerRequest(input) + return out, req.Send() +} + +// DeleteTransitGatewayConnectPeerWithContext is the same as DeleteTransitGatewayConnectPeer with the addition of +// the ability to pass a context and additional request options. +// +// See DeleteTransitGatewayConnectPeer for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DeleteTransitGatewayConnectPeerWithContext(ctx aws.Context, input *DeleteTransitGatewayConnectPeerInput, opts ...request.Option) (*DeleteTransitGatewayConnectPeerOutput, error) { + req, out := c.DeleteTransitGatewayConnectPeerRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opDeleteTransitGatewayMulticastDomain = "DeleteTransitGatewayMulticastDomain" // DeleteTransitGatewayMulticastDomainRequest generates a "aws/request.Request" representing the @@ -11663,12 +12302,26 @@ func (c *EC2) DeleteVpcEndpointsRequest(input *DeleteVpcEndpointsInput) (req *re // DeleteVpcEndpoints API operation for Amazon Elastic Compute Cloud. // -// Deletes one or more specified VPC endpoints. Deleting a gateway endpoint -// also deletes the endpoint routes in the route tables that were associated -// with the endpoint. Deleting an interface endpoint or a Gateway Load Balancer -// endpoint deletes the endpoint network interfaces. Gateway Load Balancer endpoints -// can only be deleted if the routes that are associated with the endpoint are -// deleted. +// Deletes one or more specified VPC endpoints. You can delete any of the following +// types of VPC endpoints. +// +// * Gateway endpoint, +// +// * Gateway Load Balancer endpoint, +// +// * Interface endpoint +// +// The following rules apply when you delete a VPC endpoint: +// +// * When you delete a gateway endpoint, we delete the endpoint routes in +// the route tables that are associated with the endpoint. +// +// * When you delete a Gateway Load Balancer endpoint, we delete the endpoint +// network interfaces. You can only delete Gateway Load Balancer endpoints +// when the routes that are associated with the endpoint are deleted. +// +// * When you delete an interface endpoint, we delete the endpoint network +// interfaces. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -12580,6 +13233,139 @@ func (c *EC2) DescribeAddressesWithContext(ctx aws.Context, input *DescribeAddre return out, req.Send() } +const opDescribeAddressesAttribute = "DescribeAddressesAttribute" + +// DescribeAddressesAttributeRequest generates a "aws/request.Request" representing the +// client's request for the DescribeAddressesAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeAddressesAttribute for more information on using the DescribeAddressesAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeAddressesAttributeRequest method. +// req, resp := client.DescribeAddressesAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddressesAttribute +func (c *EC2) DescribeAddressesAttributeRequest(input *DescribeAddressesAttributeInput) (req *request.Request, output *DescribeAddressesAttributeOutput) { + op := &request.Operation{ + Name: opDescribeAddressesAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeAddressesAttributeInput{} + } + + output = &DescribeAddressesAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeAddressesAttribute API operation for Amazon Elastic Compute Cloud. +// +// Describes the attributes of the specified Elastic IP addresses. For requirements, +// see Using reverse DNS for email applications (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#Using_Elastic_Addressing_Reverse_DNS). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeAddressesAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeAddressesAttribute +func (c *EC2) DescribeAddressesAttribute(input *DescribeAddressesAttributeInput) (*DescribeAddressesAttributeOutput, error) { + req, out := c.DescribeAddressesAttributeRequest(input) + return out, req.Send() +} + +// DescribeAddressesAttributeWithContext is the same as DescribeAddressesAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeAddressesAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAddressesAttributeWithContext(ctx aws.Context, input *DescribeAddressesAttributeInput, opts ...request.Option) (*DescribeAddressesAttributeOutput, error) { + req, out := c.DescribeAddressesAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeAddressesAttributePages iterates over the pages of a DescribeAddressesAttribute operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeAddressesAttribute method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeAddressesAttribute operation. +// pageNum := 0 +// err := client.DescribeAddressesAttributePages(params, +// func(page *ec2.DescribeAddressesAttributeOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeAddressesAttributePages(input *DescribeAddressesAttributeInput, fn func(*DescribeAddressesAttributeOutput, bool) bool) error { + return c.DescribeAddressesAttributePagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeAddressesAttributePagesWithContext same as DescribeAddressesAttributePages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeAddressesAttributePagesWithContext(ctx aws.Context, input *DescribeAddressesAttributeInput, fn func(*DescribeAddressesAttributeOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeAddressesAttributeInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeAddressesAttributeRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeAddressesAttributeOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opDescribeAggregateIdFormat = "DescribeAggregateIdFormat" // DescribeAggregateIdFormatRequest generates a "aws/request.Request" representing the @@ -15043,6 +15829,9 @@ func (c *EC2) DescribeFleetHistoryRequest(input *DescribeFleetHistoryInput) (req // This ensures that you can query by the last evaluated time and not miss a // recorded event. EC2 Fleet events are available for 48 hours. // +// For more information, see Monitoring your EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html#monitor-ec2-fleet) +// in the Amazon EC2 User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -15117,6 +15906,9 @@ func (c *EC2) DescribeFleetInstancesRequest(input *DescribeFleetInstancesInput) // // Describes the running instances for the specified EC2 Fleet. // +// For more information, see Monitoring your EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html#monitor-ec2-fleet) +// in the Amazon EC2 User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -15197,6 +15989,9 @@ func (c *EC2) DescribeFleetsRequest(input *DescribeFleetsInput) (req *request.Re // // Describes the specified EC2 Fleets or all of your EC2 Fleets. // +// For more information, see Monitoring your EC2 Fleet (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet.html#monitor-ec2-fleet) +// in the Amazon EC2 User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -15676,8 +16471,8 @@ func (c *EC2) DescribeHostReservationOfferingsRequest(input *DescribeHostReserva // Hosts. When purchasing an offering, ensure that the instance family and Region // of the offering matches that of the Dedicated Hosts with which it is to be // associated. For more information about supported instance types, see Dedicated -// Hosts Overview (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html) -// in the Amazon Elastic Compute Cloud User Guide. +// Hosts (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-overview.html) +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -16916,7 +17711,7 @@ func (c *EC2) DescribeInstanceCreditSpecificationsRequest(input *DescribeInstanc // the call works normally. // // For more information, see Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -17133,18 +17928,18 @@ func (c *EC2) DescribeInstanceStatusRequest(input *DescribeInstanceStatusInput) // to identify hardware and software issues. For more information, see Status // checks for your instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html) // and Troubleshooting instances with failed status checks (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // * Scheduled events - Amazon EC2 can schedule events (such as reboot, stop, // or terminate) for your instances related to hardware issues, software // updates, or system maintenance. For more information, see Scheduled events // for your instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-instances-status-check_sched.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // * Instance state - You can manage your instances from the moment you launch // them through their termination. For more information, see Instance lifecycle // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -19583,6 +20378,270 @@ func (c *EC2) DescribeNetworkAclsPagesWithContext(ctx aws.Context, input *Descri return p.Err() } +const opDescribeNetworkInsightsAnalyses = "DescribeNetworkInsightsAnalyses" + +// DescribeNetworkInsightsAnalysesRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNetworkInsightsAnalyses operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNetworkInsightsAnalyses for more information on using the DescribeNetworkInsightsAnalyses +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNetworkInsightsAnalysesRequest method. +// req, resp := client.DescribeNetworkInsightsAnalysesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInsightsAnalyses +func (c *EC2) DescribeNetworkInsightsAnalysesRequest(input *DescribeNetworkInsightsAnalysesInput) (req *request.Request, output *DescribeNetworkInsightsAnalysesOutput) { + op := &request.Operation{ + Name: opDescribeNetworkInsightsAnalyses, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeNetworkInsightsAnalysesInput{} + } + + output = &DescribeNetworkInsightsAnalysesOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNetworkInsightsAnalyses API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your network insights analyses. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNetworkInsightsAnalyses for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInsightsAnalyses +func (c *EC2) DescribeNetworkInsightsAnalyses(input *DescribeNetworkInsightsAnalysesInput) (*DescribeNetworkInsightsAnalysesOutput, error) { + req, out := c.DescribeNetworkInsightsAnalysesRequest(input) + return out, req.Send() +} + +// DescribeNetworkInsightsAnalysesWithContext is the same as DescribeNetworkInsightsAnalyses with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNetworkInsightsAnalyses for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInsightsAnalysesWithContext(ctx aws.Context, input *DescribeNetworkInsightsAnalysesInput, opts ...request.Option) (*DescribeNetworkInsightsAnalysesOutput, error) { + req, out := c.DescribeNetworkInsightsAnalysesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeNetworkInsightsAnalysesPages iterates over the pages of a DescribeNetworkInsightsAnalyses operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeNetworkInsightsAnalyses method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeNetworkInsightsAnalyses operation. +// pageNum := 0 +// err := client.DescribeNetworkInsightsAnalysesPages(params, +// func(page *ec2.DescribeNetworkInsightsAnalysesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeNetworkInsightsAnalysesPages(input *DescribeNetworkInsightsAnalysesInput, fn func(*DescribeNetworkInsightsAnalysesOutput, bool) bool) error { + return c.DescribeNetworkInsightsAnalysesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeNetworkInsightsAnalysesPagesWithContext same as DescribeNetworkInsightsAnalysesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInsightsAnalysesPagesWithContext(ctx aws.Context, input *DescribeNetworkInsightsAnalysesInput, fn func(*DescribeNetworkInsightsAnalysesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeNetworkInsightsAnalysesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNetworkInsightsAnalysesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeNetworkInsightsAnalysesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeNetworkInsightsPaths = "DescribeNetworkInsightsPaths" + +// DescribeNetworkInsightsPathsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeNetworkInsightsPaths operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeNetworkInsightsPaths for more information on using the DescribeNetworkInsightsPaths +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeNetworkInsightsPathsRequest method. +// req, resp := client.DescribeNetworkInsightsPathsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInsightsPaths +func (c *EC2) DescribeNetworkInsightsPathsRequest(input *DescribeNetworkInsightsPathsInput) (req *request.Request, output *DescribeNetworkInsightsPathsOutput) { + op := &request.Operation{ + Name: opDescribeNetworkInsightsPaths, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeNetworkInsightsPathsInput{} + } + + output = &DescribeNetworkInsightsPathsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeNetworkInsightsPaths API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more of your paths. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeNetworkInsightsPaths for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeNetworkInsightsPaths +func (c *EC2) DescribeNetworkInsightsPaths(input *DescribeNetworkInsightsPathsInput) (*DescribeNetworkInsightsPathsOutput, error) { + req, out := c.DescribeNetworkInsightsPathsRequest(input) + return out, req.Send() +} + +// DescribeNetworkInsightsPathsWithContext is the same as DescribeNetworkInsightsPaths with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeNetworkInsightsPaths for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInsightsPathsWithContext(ctx aws.Context, input *DescribeNetworkInsightsPathsInput, opts ...request.Option) (*DescribeNetworkInsightsPathsOutput, error) { + req, out := c.DescribeNetworkInsightsPathsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeNetworkInsightsPathsPages iterates over the pages of a DescribeNetworkInsightsPaths operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeNetworkInsightsPaths method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeNetworkInsightsPaths operation. +// pageNum := 0 +// err := client.DescribeNetworkInsightsPathsPages(params, +// func(page *ec2.DescribeNetworkInsightsPathsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeNetworkInsightsPathsPages(input *DescribeNetworkInsightsPathsInput, fn func(*DescribeNetworkInsightsPathsOutput, bool) bool) error { + return c.DescribeNetworkInsightsPathsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeNetworkInsightsPathsPagesWithContext same as DescribeNetworkInsightsPathsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeNetworkInsightsPathsPagesWithContext(ctx aws.Context, input *DescribeNetworkInsightsPathsInput, fn func(*DescribeNetworkInsightsPathsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeNetworkInsightsPathsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeNetworkInsightsPathsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeNetworkInsightsPathsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opDescribeNetworkInterfaceAttribute = "DescribeNetworkInterfaceAttribute" // DescribeNetworkInterfaceAttributeRequest generates a "aws/request.Request" representing the @@ -19968,7 +21027,7 @@ func (c *EC2) DescribePlacementGroupsRequest(input *DescribePlacementGroupsInput // // Describes the specified placement groups or all of your placement groups. // For more information, see Placement groups (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -20540,7 +21599,7 @@ func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesI // Describes one or more of the Reserved Instances that you purchased. // // For more information about Reserved Instances, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -20635,7 +21694,7 @@ func (c *EC2) DescribeReservedInstancesListingsRequest(input *DescribeReservedIn // that you purchase. // // For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -20721,7 +21780,7 @@ func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReser // about the specific modification is returned. // // For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -20864,7 +21923,7 @@ func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedI // that you do not purchase your own Reserved Instances. // // For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -23419,6 +24478,270 @@ func (c *EC2) DescribeTransitGatewayAttachmentsPagesWithContext(ctx aws.Context, return p.Err() } +const opDescribeTransitGatewayConnectPeers = "DescribeTransitGatewayConnectPeers" + +// DescribeTransitGatewayConnectPeersRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTransitGatewayConnectPeers operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTransitGatewayConnectPeers for more information on using the DescribeTransitGatewayConnectPeers +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTransitGatewayConnectPeersRequest method. +// req, resp := client.DescribeTransitGatewayConnectPeersRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayConnectPeers +func (c *EC2) DescribeTransitGatewayConnectPeersRequest(input *DescribeTransitGatewayConnectPeersInput) (req *request.Request, output *DescribeTransitGatewayConnectPeersOutput) { + op := &request.Operation{ + Name: opDescribeTransitGatewayConnectPeers, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTransitGatewayConnectPeersInput{} + } + + output = &DescribeTransitGatewayConnectPeersOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTransitGatewayConnectPeers API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more Connect peers. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTransitGatewayConnectPeers for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayConnectPeers +func (c *EC2) DescribeTransitGatewayConnectPeers(input *DescribeTransitGatewayConnectPeersInput) (*DescribeTransitGatewayConnectPeersOutput, error) { + req, out := c.DescribeTransitGatewayConnectPeersRequest(input) + return out, req.Send() +} + +// DescribeTransitGatewayConnectPeersWithContext is the same as DescribeTransitGatewayConnectPeers with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTransitGatewayConnectPeers for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayConnectPeersWithContext(ctx aws.Context, input *DescribeTransitGatewayConnectPeersInput, opts ...request.Option) (*DescribeTransitGatewayConnectPeersOutput, error) { + req, out := c.DescribeTransitGatewayConnectPeersRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTransitGatewayConnectPeersPages iterates over the pages of a DescribeTransitGatewayConnectPeers operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTransitGatewayConnectPeers method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTransitGatewayConnectPeers operation. +// pageNum := 0 +// err := client.DescribeTransitGatewayConnectPeersPages(params, +// func(page *ec2.DescribeTransitGatewayConnectPeersOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTransitGatewayConnectPeersPages(input *DescribeTransitGatewayConnectPeersInput, fn func(*DescribeTransitGatewayConnectPeersOutput, bool) bool) error { + return c.DescribeTransitGatewayConnectPeersPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTransitGatewayConnectPeersPagesWithContext same as DescribeTransitGatewayConnectPeersPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayConnectPeersPagesWithContext(ctx aws.Context, input *DescribeTransitGatewayConnectPeersInput, fn func(*DescribeTransitGatewayConnectPeersOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTransitGatewayConnectPeersInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTransitGatewayConnectPeersRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTransitGatewayConnectPeersOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opDescribeTransitGatewayConnects = "DescribeTransitGatewayConnects" + +// DescribeTransitGatewayConnectsRequest generates a "aws/request.Request" representing the +// client's request for the DescribeTransitGatewayConnects operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See DescribeTransitGatewayConnects for more information on using the DescribeTransitGatewayConnects +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the DescribeTransitGatewayConnectsRequest method. +// req, resp := client.DescribeTransitGatewayConnectsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayConnects +func (c *EC2) DescribeTransitGatewayConnectsRequest(input *DescribeTransitGatewayConnectsInput) (req *request.Request, output *DescribeTransitGatewayConnectsOutput) { + op := &request.Operation{ + Name: opDescribeTransitGatewayConnects, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &DescribeTransitGatewayConnectsInput{} + } + + output = &DescribeTransitGatewayConnectsOutput{} + req = c.newRequest(op, input, output) + return +} + +// DescribeTransitGatewayConnects API operation for Amazon Elastic Compute Cloud. +// +// Describes one or more Connect attachments. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation DescribeTransitGatewayConnects for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/DescribeTransitGatewayConnects +func (c *EC2) DescribeTransitGatewayConnects(input *DescribeTransitGatewayConnectsInput) (*DescribeTransitGatewayConnectsOutput, error) { + req, out := c.DescribeTransitGatewayConnectsRequest(input) + return out, req.Send() +} + +// DescribeTransitGatewayConnectsWithContext is the same as DescribeTransitGatewayConnects with the addition of +// the ability to pass a context and additional request options. +// +// See DescribeTransitGatewayConnects for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayConnectsWithContext(ctx aws.Context, input *DescribeTransitGatewayConnectsInput, opts ...request.Option) (*DescribeTransitGatewayConnectsOutput, error) { + req, out := c.DescribeTransitGatewayConnectsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// DescribeTransitGatewayConnectsPages iterates over the pages of a DescribeTransitGatewayConnects operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See DescribeTransitGatewayConnects method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a DescribeTransitGatewayConnects operation. +// pageNum := 0 +// err := client.DescribeTransitGatewayConnectsPages(params, +// func(page *ec2.DescribeTransitGatewayConnectsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *EC2) DescribeTransitGatewayConnectsPages(input *DescribeTransitGatewayConnectsInput, fn func(*DescribeTransitGatewayConnectsOutput, bool) bool) error { + return c.DescribeTransitGatewayConnectsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// DescribeTransitGatewayConnectsPagesWithContext same as DescribeTransitGatewayConnectsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) DescribeTransitGatewayConnectsPagesWithContext(ctx aws.Context, input *DescribeTransitGatewayConnectsInput, fn func(*DescribeTransitGatewayConnectsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *DescribeTransitGatewayConnectsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.DescribeTransitGatewayConnectsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*DescribeTransitGatewayConnectsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opDescribeTransitGatewayMulticastDomains = "DescribeTransitGatewayMulticastDomains" // DescribeTransitGatewayMulticastDomainsRequest generates a "aws/request.Request" representing the @@ -25476,12 +26799,12 @@ func (c *EC2) DescribeVpcEndpointServicesRequest(input *DescribeVpcEndpointServi // // Describes available services to which you can create a VPC endpoint. // -// When the service provider and the consumer have different accounts multiple +// When the service provider and the consumer have different accounts in multiple // Availability Zones, and the consumer views the VPC endpoint service information, // the response only includes the common Availability Zones. For example, when // the service provider account uses us-east-1a and us-east-1c and the consumer -// uses us-east-1a and us-east-1a and us-east-1b, the response includes the -// VPC endpoint services in the common Availability Zone, us-east-1a. +// uses us-east-1a and us-east-1b, the response includes the VPC endpoint services +// in the common Availability Zone, us-east-1a. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -28921,8 +30244,8 @@ func (c *EC2) GetConsoleOutputRequest(input *GetConsoleOutputInput) (req *reques // during the instance lifecycle. This option is supported on instance types // that use the Nitro hypervisor. // -// For more information, see Instance Console Output (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output) -// in the Amazon Elastic Compute Cloud User Guide. +// For more information, see Instance console output (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output) +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -29076,7 +30399,7 @@ func (c *EC2) GetDefaultCreditSpecificationRequest(input *GetDefaultCreditSpecif // instance family. // // For more information, see Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -29870,7 +31193,7 @@ func (c *EC2) GetPasswordDataRequest(input *GetPasswordDataInput) (req *request. // scripts (Windows Server 2016 and later). This usually only happens the first // time an instance is launched. For more information, see EC2Config (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html) // and EC2Launch (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // For the EC2Config service, the password is not generated for rebundled AMIs // unless Ec2SetPassword is enabled before bundling. @@ -31121,6 +32444,81 @@ func (c *EC2) ImportVolumeWithContext(ctx aws.Context, input *ImportVolumeInput, return out, req.Send() } +const opModifyAddressAttribute = "ModifyAddressAttribute" + +// ModifyAddressAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ModifyAddressAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ModifyAddressAttribute for more information on using the ModifyAddressAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ModifyAddressAttributeRequest method. +// req, resp := client.ModifyAddressAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyAddressAttribute +func (c *EC2) ModifyAddressAttributeRequest(input *ModifyAddressAttributeInput) (req *request.Request, output *ModifyAddressAttributeOutput) { + op := &request.Operation{ + Name: opModifyAddressAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ModifyAddressAttributeInput{} + } + + output = &ModifyAddressAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ModifyAddressAttribute API operation for Amazon Elastic Compute Cloud. +// +// Modifies an attribute of the specified Elastic IP address. For requirements, +// see Using reverse DNS for email applications (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#Using_Elastic_Addressing_Reverse_DNS). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ModifyAddressAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ModifyAddressAttribute +func (c *EC2) ModifyAddressAttribute(input *ModifyAddressAttributeInput) (*ModifyAddressAttributeOutput, error) { + req, out := c.ModifyAddressAttributeRequest(input) + return out, req.Send() +} + +// ModifyAddressAttributeWithContext is the same as ModifyAddressAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ModifyAddressAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ModifyAddressAttributeWithContext(ctx aws.Context, input *ModifyAddressAttributeInput, opts ...request.Option) (*ModifyAddressAttributeOutput, error) { + req, out := c.ModifyAddressAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opModifyAvailabilityZoneGroup = "ModifyAvailabilityZoneGroup" // ModifyAvailabilityZoneGroupRequest generates a "aws/request.Request" representing the @@ -31411,7 +32809,7 @@ func (c *EC2) ModifyDefaultCreditSpecificationRequest(input *ModifyDefaultCredit // for updates. // // For more information, see Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -32123,7 +33521,7 @@ func (c *EC2) ModifyInstanceAttributeRequest(input *ModifyInstanceAttributeInput // // To modify some attributes, the instance must be stopped. For more information, // see Modifying attributes of a stopped instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_ChangingAttributesWhileInstanceStopped.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -32278,7 +33676,7 @@ func (c *EC2) ModifyInstanceCreditSpecificationRequest(input *ModifyInstanceCred // performance instance. The credit options are standard and unlimited. // // For more information, see Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -32432,7 +33830,8 @@ func (c *EC2) ModifyInstanceMetadataOptionsRequest(input *ModifyInstanceMetadata // the API responds with a state of “pending”. After the parameter modifications // are successfully applied to the instance, the state of the modifications // changes from “pending” to “applied” in subsequent describe-instances -// API calls. For more information, see Instance metadata and user data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html). +// API calls. For more information, see Instance metadata and user data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -32840,7 +34239,7 @@ func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput // network platform, and instance type. // // For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -34747,7 +36146,7 @@ func (c *EC2) MonitorInstancesRequest(input *MonitorInstancesInput) (req *reques // Enables detailed monitoring for a running instance. Otherwise, basic monitoring // is enabled. For more information, see Monitoring your instances and volumes // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // To disable detailed monitoring, see . // @@ -35083,7 +36482,7 @@ func (c *EC2) PurchaseReservedInstancesOfferingRequest(input *PurchaseReservedIn // // For more information, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) // and Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -35251,7 +36650,7 @@ func (c *EC2) RebootInstancesRequest(input *RebootInstancesInput) (req *request. // // For more information about troubleshooting, see Getting console output and // rebooting instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -35333,12 +36732,25 @@ func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Requ // For Amazon EBS-backed instances, CreateImage creates and registers the AMI // in a single request, so you don't have to register the AMI yourself. // -// You can also use RegisterImage to create an Amazon EBS-backed Linux AMI from -// a snapshot of a root device volume. You specify the snapshot using the block -// device mapping. For more information, see Launching a Linux instance from -// a backup (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html) +// If needed, you can deregister an AMI at any time. Any modifications you make +// to an AMI backed by an instance store volume invalidates its registration. +// If you make changes to an image, deregister the previous image and register +// the new image. +// +// Register a snapshot of a root device volume +// +// You can use RegisterImage to create an Amazon EBS-backed Linux AMI from a +// snapshot of a root device volume. You specify the snapshot using a block +// device mapping. You can't set the encryption state of the volume using the +// block device mapping. If the snapshot is encrypted, or encryption by default +// is enabled, the root volume of an instance launched from the AMI is encrypted. +// +// For more information, see Create a Linux AMI from a snapshot (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html#creating-launching-ami-from-snapshot) +// and Use encryption with EBS-backed AMIs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIEncryption.html) // in the Amazon Elastic Compute Cloud User Guide. // +// AWS Marketplace product codes +// // If any snapshots have AWS Marketplace product codes, they are copied to the // new AMI. // @@ -35364,11 +36776,6 @@ func (c *EC2) RegisterImageRequest(input *RegisterImageInput) (req *request.Requ // Obtaining billing information (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-billing-info.html) // in the Amazon Elastic Compute Cloud User Guide. // -// If needed, you can deregister an AMI at any time. Any modifications you make -// to an AMI backed by an instance store volume invalidates its registration. -// If you make changes to an image, deregister the previous image and register -// the new image. -// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -35638,6 +37045,81 @@ func (c *EC2) RegisterTransitGatewayMulticastGroupSourcesWithContext(ctx aws.Con return out, req.Send() } +const opRejectTransitGatewayMulticastDomainAssociations = "RejectTransitGatewayMulticastDomainAssociations" + +// RejectTransitGatewayMulticastDomainAssociationsRequest generates a "aws/request.Request" representing the +// client's request for the RejectTransitGatewayMulticastDomainAssociations operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RejectTransitGatewayMulticastDomainAssociations for more information on using the RejectTransitGatewayMulticastDomainAssociations +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RejectTransitGatewayMulticastDomainAssociationsRequest method. +// req, resp := client.RejectTransitGatewayMulticastDomainAssociationsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectTransitGatewayMulticastDomainAssociations +func (c *EC2) RejectTransitGatewayMulticastDomainAssociationsRequest(input *RejectTransitGatewayMulticastDomainAssociationsInput) (req *request.Request, output *RejectTransitGatewayMulticastDomainAssociationsOutput) { + op := &request.Operation{ + Name: opRejectTransitGatewayMulticastDomainAssociations, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RejectTransitGatewayMulticastDomainAssociationsInput{} + } + + output = &RejectTransitGatewayMulticastDomainAssociationsOutput{} + req = c.newRequest(op, input, output) + return +} + +// RejectTransitGatewayMulticastDomainAssociations API operation for Amazon Elastic Compute Cloud. +// +// Rejects a request to associate cross-account subnets with a transit gateway +// multicast domain. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation RejectTransitGatewayMulticastDomainAssociations for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/RejectTransitGatewayMulticastDomainAssociations +func (c *EC2) RejectTransitGatewayMulticastDomainAssociations(input *RejectTransitGatewayMulticastDomainAssociationsInput) (*RejectTransitGatewayMulticastDomainAssociationsOutput, error) { + req, out := c.RejectTransitGatewayMulticastDomainAssociationsRequest(input) + return out, req.Send() +} + +// RejectTransitGatewayMulticastDomainAssociationsWithContext is the same as RejectTransitGatewayMulticastDomainAssociations with the addition of +// the ability to pass a context and additional request options. +// +// See RejectTransitGatewayMulticastDomainAssociations for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) RejectTransitGatewayMulticastDomainAssociationsWithContext(ctx aws.Context, input *RejectTransitGatewayMulticastDomainAssociationsInput, opts ...request.Option) (*RejectTransitGatewayMulticastDomainAssociationsOutput, error) { + req, out := c.RejectTransitGatewayMulticastDomainAssociationsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opRejectTransitGatewayPeeringAttachment = "RejectTransitGatewayPeeringAttachment" // RejectTransitGatewayPeeringAttachmentRequest generates a "aws/request.Request" representing the @@ -36847,6 +38329,81 @@ func (c *EC2) RequestSpotInstancesWithContext(ctx aws.Context, input *RequestSpo return out, req.Send() } +const opResetAddressAttribute = "ResetAddressAttribute" + +// ResetAddressAttributeRequest generates a "aws/request.Request" representing the +// client's request for the ResetAddressAttribute operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ResetAddressAttribute for more information on using the ResetAddressAttribute +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ResetAddressAttributeRequest method. +// req, resp := client.ResetAddressAttributeRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetAddressAttribute +func (c *EC2) ResetAddressAttributeRequest(input *ResetAddressAttributeInput) (req *request.Request, output *ResetAddressAttributeOutput) { + op := &request.Operation{ + Name: opResetAddressAttribute, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ResetAddressAttributeInput{} + } + + output = &ResetAddressAttributeOutput{} + req = c.newRequest(op, input, output) + return +} + +// ResetAddressAttribute API operation for Amazon Elastic Compute Cloud. +// +// Resets the attribute of the specified IP address. For requirements, see Using +// reverse DNS for email applications (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#Using_Elastic_Addressing_Reverse_DNS). +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation ResetAddressAttribute for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/ResetAddressAttribute +func (c *EC2) ResetAddressAttribute(input *ResetAddressAttributeInput) (*ResetAddressAttributeOutput, error) { + req, out := c.ResetAddressAttributeRequest(input) + return out, req.Send() +} + +// ResetAddressAttributeWithContext is the same as ResetAddressAttribute with the addition of +// the ability to pass a context and additional request options. +// +// See ResetAddressAttribute for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) ResetAddressAttributeWithContext(ctx aws.Context, input *ResetAddressAttributeInput, opts ...request.Option) (*ResetAddressAttributeOutput, error) { + req, out := c.ResetAddressAttributeRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opResetEbsDefaultKmsKeyId = "ResetEbsDefaultKmsKeyId" // ResetEbsDefaultKmsKeyIdRequest generates a "aws/request.Request" representing the @@ -37132,7 +38689,7 @@ func (c *EC2) ResetInstanceAttributeRequest(input *ResetInstanceAttributeInput) // is enabled. The default value is true, which means checking is enabled. This // value must be false for a NAT instance to perform NAT. For more information, // see NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) -// in the Amazon Virtual Private Cloud User Guide. +// in the Amazon VPC User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -37819,13 +39376,11 @@ func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Reques // Linux instances have access to the public key of the key pair at boot. You // can use this key to provide secure access to the instance. Amazon EC2 public // images use this feature to provide secure access without passwords. For more -// information, see Key pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) -// in the Amazon Elastic Compute Cloud User Guide. +// information, see Key pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). // // For troubleshooting, see What to do if an instance immediately terminates // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html), -// and Troubleshooting connecting to your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) -// in the Amazon Elastic Compute Cloud User Guide. +// and Troubleshooting connecting to your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -37909,7 +39464,7 @@ func (c *EC2) RunScheduledInstancesRequest(input *RunScheduledInstancesInput) (r // If you terminate a Scheduled Instance before the current scheduled time period // ends, you can launch it again after a few minutes. For more information, // see Scheduled Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-scheduled-instances.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -38436,7 +39991,7 @@ func (c *EC2) StartInstancesRequest(input *StartInstancesInput) (req *request.Re // root device returns an error. // // For more information, see Stopping instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -38466,6 +40021,81 @@ func (c *EC2) StartInstancesWithContext(ctx aws.Context, input *StartInstancesIn return out, req.Send() } +const opStartNetworkInsightsAnalysis = "StartNetworkInsightsAnalysis" + +// StartNetworkInsightsAnalysisRequest generates a "aws/request.Request" representing the +// client's request for the StartNetworkInsightsAnalysis operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See StartNetworkInsightsAnalysis for more information on using the StartNetworkInsightsAnalysis +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the StartNetworkInsightsAnalysisRequest method. +// req, resp := client.StartNetworkInsightsAnalysisRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartNetworkInsightsAnalysis +func (c *EC2) StartNetworkInsightsAnalysisRequest(input *StartNetworkInsightsAnalysisInput) (req *request.Request, output *StartNetworkInsightsAnalysisOutput) { + op := &request.Operation{ + Name: opStartNetworkInsightsAnalysis, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &StartNetworkInsightsAnalysisInput{} + } + + output = &StartNetworkInsightsAnalysisOutput{} + req = c.newRequest(op, input, output) + return +} + +// StartNetworkInsightsAnalysis API operation for Amazon Elastic Compute Cloud. +// +// Starts analyzing the specified path. If the path is reachable, the operation +// returns the shortest feasible path. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Elastic Compute Cloud's +// API operation StartNetworkInsightsAnalysis for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/StartNetworkInsightsAnalysis +func (c *EC2) StartNetworkInsightsAnalysis(input *StartNetworkInsightsAnalysisInput) (*StartNetworkInsightsAnalysisOutput, error) { + req, out := c.StartNetworkInsightsAnalysisRequest(input) + return out, req.Send() +} + +// StartNetworkInsightsAnalysisWithContext is the same as StartNetworkInsightsAnalysis with the addition of +// the ability to pass a context and additional request options. +// +// See StartNetworkInsightsAnalysis for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *EC2) StartNetworkInsightsAnalysisWithContext(ctx aws.Context, input *StartNetworkInsightsAnalysisInput, opts ...request.Option) (*StartNetworkInsightsAnalysisOutput, error) { + req, out := c.StartNetworkInsightsAnalysisRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opStartVpcEndpointServicePrivateDnsVerification = "StartVpcEndpointServicePrivateDnsVerification" // StartVpcEndpointServicePrivateDnsVerificationRequest generates a "aws/request.Request" representing the @@ -38599,7 +40229,7 @@ func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Requ // for hibernation (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation) // and it meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). // For more information, see Hibernate your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // We don't charge usage for a stopped instance, or data transfer fees; however, // your root partition Amazon EBS volume remains and continues to persist your @@ -38615,7 +40245,7 @@ func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Requ // the Stop action to hibernate Spot Instances, but you can specify that Amazon // EC2 should hibernate Spot Instances when they are interrupted. For more information, // see Hibernating interrupted Spot Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // When you stop or hibernate an instance, we shut it down. You can restart // your instance at any time. Before stopping or hibernating an instance, make @@ -38631,13 +40261,13 @@ func (c *EC2) StopInstancesRequest(input *StopInstancesInput) (req *request.Requ // launch are automatically deleted. For more information about the differences // between rebooting, stopping, hibernating, and terminating instances, see // Instance lifecycle (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // When you stop an instance, we attempt to shut it down forcibly after a short // while. If your instance appears stuck in the stopping state after a period // of time, there may be an issue with the underlying host computer. For more // information, see Troubleshooting stopping your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -38807,11 +40437,11 @@ func (c *EC2) TerminateInstancesRequest(input *TerminateInstancesInput) (req *re // device mapping parameter set to true are automatically deleted. For more // information about the differences between stopping and terminating instances, // see Instance lifecycle (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // For more information about troubleshooting, see Troubleshooting terminating // your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesShuttingDown.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -39036,7 +40666,7 @@ func (c *EC2) UnmonitorInstancesRequest(input *UnmonitorInstancesInput) (req *re // // Disables detailed monitoring for a running instance. For more information, // see Monitoring your instances and volumes (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cloudwatch.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -39402,6 +41032,82 @@ func (s *AcceptReservedInstancesExchangeQuoteOutput) SetExchangeId(v string) *Ac return s } +type AcceptTransitGatewayMulticastDomainAssociationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the subnets to associate with the transit gateway multicast domain. + SubnetIds []*string `locationNameList:"item" type:"list"` + + // The ID of the transit gateway attachment. + TransitGatewayAttachmentId *string `type:"string"` + + // The ID of the transit gateway multicast domain. + TransitGatewayMulticastDomainId *string `type:"string"` +} + +// String returns the string representation +func (s AcceptTransitGatewayMulticastDomainAssociationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptTransitGatewayMulticastDomainAssociationsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *AcceptTransitGatewayMulticastDomainAssociationsInput) SetDryRun(v bool) *AcceptTransitGatewayMulticastDomainAssociationsInput { + s.DryRun = &v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *AcceptTransitGatewayMulticastDomainAssociationsInput) SetSubnetIds(v []*string) *AcceptTransitGatewayMulticastDomainAssociationsInput { + s.SubnetIds = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *AcceptTransitGatewayMulticastDomainAssociationsInput) SetTransitGatewayAttachmentId(v string) *AcceptTransitGatewayMulticastDomainAssociationsInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayMulticastDomainId sets the TransitGatewayMulticastDomainId field's value. +func (s *AcceptTransitGatewayMulticastDomainAssociationsInput) SetTransitGatewayMulticastDomainId(v string) *AcceptTransitGatewayMulticastDomainAssociationsInput { + s.TransitGatewayMulticastDomainId = &v + return s +} + +type AcceptTransitGatewayMulticastDomainAssociationsOutput struct { + _ struct{} `type:"structure"` + + // Describes the multicast domain associations. + Associations *TransitGatewayMulticastDomainAssociations `locationName:"associations" type:"structure"` +} + +// String returns the string representation +func (s AcceptTransitGatewayMulticastDomainAssociationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AcceptTransitGatewayMulticastDomainAssociationsOutput) GoString() string { + return s.String() +} + +// SetAssociations sets the Associations field's value. +func (s *AcceptTransitGatewayMulticastDomainAssociationsOutput) SetAssociations(v *TransitGatewayMulticastDomainAssociations) *AcceptTransitGatewayMulticastDomainAssociationsOutput { + s.Associations = v + return s +} + type AcceptTransitGatewayPeeringAttachmentInput struct { _ struct{} `type:"structure"` @@ -40000,6 +41706,57 @@ func (s *Address) SetTags(v []*Tag) *Address { return s } +// The attributes associated with an Elastic IP address. +type AddressAttribute struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The allocation ID. + AllocationId *string `locationName:"allocationId" type:"string"` + + // The pointer (PTR) record for the IP address. + PtrRecord *string `locationName:"ptrRecord" type:"string"` + + // The updated PTR record for the IP address. + PtrRecordUpdate *PtrUpdateStatus `locationName:"ptrRecordUpdate" type:"structure"` + + // The public IP address. + PublicIp *string `locationName:"publicIp" type:"string"` +} + +// String returns the string representation +func (s AddressAttribute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AddressAttribute) GoString() string { + return s.String() +} + +// SetAllocationId sets the AllocationId field's value. +func (s *AddressAttribute) SetAllocationId(v string) *AddressAttribute { + s.AllocationId = &v + return s +} + +// SetPtrRecord sets the PtrRecord field's value. +func (s *AddressAttribute) SetPtrRecord(v string) *AddressAttribute { + s.PtrRecord = &v + return s +} + +// SetPtrRecordUpdate sets the PtrRecordUpdate field's value. +func (s *AddressAttribute) SetPtrRecordUpdate(v *PtrUpdateStatus) *AddressAttribute { + s.PtrRecordUpdate = v + return s +} + +// SetPublicIp sets the PublicIp field's value. +func (s *AddressAttribute) SetPublicIp(v string) *AddressAttribute { + s.PublicIp = &v + return s +} + type AdvertiseByoipCidrInput struct { _ struct{} `type:"structure"` @@ -40115,6 +41872,9 @@ type AllocateAddressInput struct { // EC2 select an address from the address pool. To specify a specific address // from the address pool, use the Address parameter instead. PublicIpv4Pool *string `type:"string"` + + // The tags to assign to the Elastic IP address. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` } // String returns the string representation @@ -40163,6 +41923,12 @@ func (s *AllocateAddressInput) SetPublicIpv4Pool(v string) *AllocateAddressInput return s } +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *AllocateAddressInput) SetTagSpecifications(v []*TagSpecification) *AllocateAddressInput { + s.TagSpecifications = v + return s +} + type AllocateAddressOutput struct { _ struct{} `type:"structure"` @@ -40259,8 +42025,8 @@ type AllocateHostsInput struct { // Indicates whether the host accepts any untargeted instance launches that // match its instance type configuration, or if it only accepts Host tenancy // instance launches that specify its unique host ID. For more information, - // see Understanding Instance Placement and Host Affinity (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-dedicated-hosts-work.html#dedicated-hosts-understanding) - // in the Amazon EC2 User Guide for Linux Instances. + // see Understanding auto-placement and affinity (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-dedicated-hosts-work.html#dedicated-hosts-understanding) + // in the Amazon EC2 User Guide. // // Default: on AutoPlacement *string `locationName:"autoPlacement" type:"string" enum:"AutoPlacement"` @@ -40271,13 +42037,13 @@ type AllocateHostsInput struct { AvailabilityZone *string `locationName:"availabilityZone" type:"string" required:"true"` // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). ClientToken *string `locationName:"clientToken" type:"string"` // Indicates whether to enable or disable host recovery for the Dedicated Host. - // Host recovery is disabled by default. For more information, see Host Recovery + // Host recovery is disabled by default. For more information, see Host recovery // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. // // Default: off HostRecovery *string `type:"string" enum:"HostRecovery"` @@ -40441,6 +42207,472 @@ func (s *AllowedPrincipal) SetPrincipalType(v string) *AllowedPrincipal { return s } +// Describes an potential intermediate component of a feasible path. +type AlternatePathHint struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the component. + ComponentArn *string `locationName:"componentArn" type:"string"` + + // The ID of the component. + ComponentId *string `locationName:"componentId" type:"string"` +} + +// String returns the string representation +func (s AlternatePathHint) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AlternatePathHint) GoString() string { + return s.String() +} + +// SetComponentArn sets the ComponentArn field's value. +func (s *AlternatePathHint) SetComponentArn(v string) *AlternatePathHint { + s.ComponentArn = &v + return s +} + +// SetComponentId sets the ComponentId field's value. +func (s *AlternatePathHint) SetComponentId(v string) *AlternatePathHint { + s.ComponentId = &v + return s +} + +// Describes a network access control (ACL) rule. +type AnalysisAclRule struct { + _ struct{} `type:"structure"` + + // The IPv4 address range, in CIDR notation. + Cidr *string `locationName:"cidr" type:"string"` + + // Indicates whether the rule is an outbound rule. + Egress *bool `locationName:"egress" type:"boolean"` + + // The range of ports. + PortRange *PortRange `locationName:"portRange" type:"structure"` + + // The protocol. + Protocol *string `locationName:"protocol" type:"string"` + + // Indicates whether to allow or deny traffic that matches the rule. + RuleAction *string `locationName:"ruleAction" type:"string"` + + // The rule number. + RuleNumber *int64 `locationName:"ruleNumber" type:"integer"` +} + +// String returns the string representation +func (s AnalysisAclRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisAclRule) GoString() string { + return s.String() +} + +// SetCidr sets the Cidr field's value. +func (s *AnalysisAclRule) SetCidr(v string) *AnalysisAclRule { + s.Cidr = &v + return s +} + +// SetEgress sets the Egress field's value. +func (s *AnalysisAclRule) SetEgress(v bool) *AnalysisAclRule { + s.Egress = &v + return s +} + +// SetPortRange sets the PortRange field's value. +func (s *AnalysisAclRule) SetPortRange(v *PortRange) *AnalysisAclRule { + s.PortRange = v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *AnalysisAclRule) SetProtocol(v string) *AnalysisAclRule { + s.Protocol = &v + return s +} + +// SetRuleAction sets the RuleAction field's value. +func (s *AnalysisAclRule) SetRuleAction(v string) *AnalysisAclRule { + s.RuleAction = &v + return s +} + +// SetRuleNumber sets the RuleNumber field's value. +func (s *AnalysisAclRule) SetRuleNumber(v int64) *AnalysisAclRule { + s.RuleNumber = &v + return s +} + +// Describes a path component. +type AnalysisComponent struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the component. + Arn *string `locationName:"arn" type:"string"` + + // The ID of the component. + Id *string `locationName:"id" type:"string"` +} + +// String returns the string representation +func (s AnalysisComponent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisComponent) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *AnalysisComponent) SetArn(v string) *AnalysisComponent { + s.Arn = &v + return s +} + +// SetId sets the Id field's value. +func (s *AnalysisComponent) SetId(v string) *AnalysisComponent { + s.Id = &v + return s +} + +// Describes a load balancer listener. +type AnalysisLoadBalancerListener struct { + _ struct{} `type:"structure"` + + // [Classic Load Balancers] The back-end port for the listener. + InstancePort *int64 `locationName:"instancePort" min:"1" type:"integer"` + + // The port on which the load balancer is listening. + LoadBalancerPort *int64 `locationName:"loadBalancerPort" min:"1" type:"integer"` +} + +// String returns the string representation +func (s AnalysisLoadBalancerListener) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisLoadBalancerListener) GoString() string { + return s.String() +} + +// SetInstancePort sets the InstancePort field's value. +func (s *AnalysisLoadBalancerListener) SetInstancePort(v int64) *AnalysisLoadBalancerListener { + s.InstancePort = &v + return s +} + +// SetLoadBalancerPort sets the LoadBalancerPort field's value. +func (s *AnalysisLoadBalancerListener) SetLoadBalancerPort(v int64) *AnalysisLoadBalancerListener { + s.LoadBalancerPort = &v + return s +} + +// Describes a load balancer target. +type AnalysisLoadBalancerTarget struct { + _ struct{} `type:"structure"` + + // The IP address. + Address *string `locationName:"address" type:"string"` + + // The Availability Zone. + AvailabilityZone *string `locationName:"availabilityZone" type:"string"` + + // Information about the instance. + Instance *AnalysisComponent `locationName:"instance" type:"structure"` + + // The port on which the target is listening. + Port *int64 `locationName:"port" min:"1" type:"integer"` +} + +// String returns the string representation +func (s AnalysisLoadBalancerTarget) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisLoadBalancerTarget) GoString() string { + return s.String() +} + +// SetAddress sets the Address field's value. +func (s *AnalysisLoadBalancerTarget) SetAddress(v string) *AnalysisLoadBalancerTarget { + s.Address = &v + return s +} + +// SetAvailabilityZone sets the AvailabilityZone field's value. +func (s *AnalysisLoadBalancerTarget) SetAvailabilityZone(v string) *AnalysisLoadBalancerTarget { + s.AvailabilityZone = &v + return s +} + +// SetInstance sets the Instance field's value. +func (s *AnalysisLoadBalancerTarget) SetInstance(v *AnalysisComponent) *AnalysisLoadBalancerTarget { + s.Instance = v + return s +} + +// SetPort sets the Port field's value. +func (s *AnalysisLoadBalancerTarget) SetPort(v int64) *AnalysisLoadBalancerTarget { + s.Port = &v + return s +} + +// Describes a header. Reflects any changes made by a component as traffic passes +// through. The fields of an inbound header are null except for the first component +// of a path. +type AnalysisPacketHeader struct { + _ struct{} `type:"structure"` + + // The destination addresses. + DestinationAddresses []*string `locationName:"destinationAddressSet" locationNameList:"item" type:"list"` + + // The destination port ranges. + DestinationPortRanges []*PortRange `locationName:"destinationPortRangeSet" locationNameList:"item" type:"list"` + + // The protocol. + Protocol *string `locationName:"protocol" type:"string"` + + // The source addresses. + SourceAddresses []*string `locationName:"sourceAddressSet" locationNameList:"item" type:"list"` + + // The source port ranges. + SourcePortRanges []*PortRange `locationName:"sourcePortRangeSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s AnalysisPacketHeader) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisPacketHeader) GoString() string { + return s.String() +} + +// SetDestinationAddresses sets the DestinationAddresses field's value. +func (s *AnalysisPacketHeader) SetDestinationAddresses(v []*string) *AnalysisPacketHeader { + s.DestinationAddresses = v + return s +} + +// SetDestinationPortRanges sets the DestinationPortRanges field's value. +func (s *AnalysisPacketHeader) SetDestinationPortRanges(v []*PortRange) *AnalysisPacketHeader { + s.DestinationPortRanges = v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *AnalysisPacketHeader) SetProtocol(v string) *AnalysisPacketHeader { + s.Protocol = &v + return s +} + +// SetSourceAddresses sets the SourceAddresses field's value. +func (s *AnalysisPacketHeader) SetSourceAddresses(v []*string) *AnalysisPacketHeader { + s.SourceAddresses = v + return s +} + +// SetSourcePortRanges sets the SourcePortRanges field's value. +func (s *AnalysisPacketHeader) SetSourcePortRanges(v []*PortRange) *AnalysisPacketHeader { + s.SourcePortRanges = v + return s +} + +// Describes a route table route. +type AnalysisRouteTableRoute struct { + _ struct{} `type:"structure"` + + // The destination IPv4 address, in CIDR notation. + DestinationCidr *string `locationName:"destinationCidr" type:"string"` + + // The prefix of the AWS service. + DestinationPrefixListId *string `locationName:"destinationPrefixListId" type:"string"` + + // The ID of an egress-only internet gateway. + EgressOnlyInternetGatewayId *string `locationName:"egressOnlyInternetGatewayId" type:"string"` + + // The ID of the gateway, such as an internet gateway or virtual private gateway. + GatewayId *string `locationName:"gatewayId" type:"string"` + + // The ID of the instance, such as a NAT instance. + InstanceId *string `locationName:"instanceId" type:"string"` + + // The ID of a NAT gateway. + NatGatewayId *string `locationName:"natGatewayId" type:"string"` + + // The ID of a network interface. + NetworkInterfaceId *string `locationName:"networkInterfaceId" type:"string"` + + // Describes how the route was created. The following are possible values: + // + // * CreateRouteTable - The route was automatically created when the route + // table was created. + // + // * CreateRoute - The route was manually added to the route table. + // + // * EnableVgwRoutePropagation - The route was propagated by route propagation. + Origin *string `locationName:"origin" type:"string"` + + // The ID of a transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The ID of a VPC peering connection. + VpcPeeringConnectionId *string `locationName:"vpcPeeringConnectionId" type:"string"` +} + +// String returns the string representation +func (s AnalysisRouteTableRoute) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisRouteTableRoute) GoString() string { + return s.String() +} + +// SetDestinationCidr sets the DestinationCidr field's value. +func (s *AnalysisRouteTableRoute) SetDestinationCidr(v string) *AnalysisRouteTableRoute { + s.DestinationCidr = &v + return s +} + +// SetDestinationPrefixListId sets the DestinationPrefixListId field's value. +func (s *AnalysisRouteTableRoute) SetDestinationPrefixListId(v string) *AnalysisRouteTableRoute { + s.DestinationPrefixListId = &v + return s +} + +// SetEgressOnlyInternetGatewayId sets the EgressOnlyInternetGatewayId field's value. +func (s *AnalysisRouteTableRoute) SetEgressOnlyInternetGatewayId(v string) *AnalysisRouteTableRoute { + s.EgressOnlyInternetGatewayId = &v + return s +} + +// SetGatewayId sets the GatewayId field's value. +func (s *AnalysisRouteTableRoute) SetGatewayId(v string) *AnalysisRouteTableRoute { + s.GatewayId = &v + return s +} + +// SetInstanceId sets the InstanceId field's value. +func (s *AnalysisRouteTableRoute) SetInstanceId(v string) *AnalysisRouteTableRoute { + s.InstanceId = &v + return s +} + +// SetNatGatewayId sets the NatGatewayId field's value. +func (s *AnalysisRouteTableRoute) SetNatGatewayId(v string) *AnalysisRouteTableRoute { + s.NatGatewayId = &v + return s +} + +// SetNetworkInterfaceId sets the NetworkInterfaceId field's value. +func (s *AnalysisRouteTableRoute) SetNetworkInterfaceId(v string) *AnalysisRouteTableRoute { + s.NetworkInterfaceId = &v + return s +} + +// SetOrigin sets the Origin field's value. +func (s *AnalysisRouteTableRoute) SetOrigin(v string) *AnalysisRouteTableRoute { + s.Origin = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *AnalysisRouteTableRoute) SetTransitGatewayId(v string) *AnalysisRouteTableRoute { + s.TransitGatewayId = &v + return s +} + +// SetVpcPeeringConnectionId sets the VpcPeeringConnectionId field's value. +func (s *AnalysisRouteTableRoute) SetVpcPeeringConnectionId(v string) *AnalysisRouteTableRoute { + s.VpcPeeringConnectionId = &v + return s +} + +// Describes a security group rule. +type AnalysisSecurityGroupRule struct { + _ struct{} `type:"structure"` + + // The IPv4 address range, in CIDR notation. + Cidr *string `locationName:"cidr" type:"string"` + + // The direction. The following are possible values: + // + // * egress + // + // * ingress + Direction *string `locationName:"direction" type:"string"` + + // The port range. + PortRange *PortRange `locationName:"portRange" type:"structure"` + + // The prefix list ID. + PrefixListId *string `locationName:"prefixListId" type:"string"` + + // The protocol name. + Protocol *string `locationName:"protocol" type:"string"` + + // The security group ID. + SecurityGroupId *string `locationName:"securityGroupId" type:"string"` +} + +// String returns the string representation +func (s AnalysisSecurityGroupRule) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AnalysisSecurityGroupRule) GoString() string { + return s.String() +} + +// SetCidr sets the Cidr field's value. +func (s *AnalysisSecurityGroupRule) SetCidr(v string) *AnalysisSecurityGroupRule { + s.Cidr = &v + return s +} + +// SetDirection sets the Direction field's value. +func (s *AnalysisSecurityGroupRule) SetDirection(v string) *AnalysisSecurityGroupRule { + s.Direction = &v + return s +} + +// SetPortRange sets the PortRange field's value. +func (s *AnalysisSecurityGroupRule) SetPortRange(v *PortRange) *AnalysisSecurityGroupRule { + s.PortRange = v + return s +} + +// SetPrefixListId sets the PrefixListId field's value. +func (s *AnalysisSecurityGroupRule) SetPrefixListId(v string) *AnalysisSecurityGroupRule { + s.PrefixListId = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *AnalysisSecurityGroupRule) SetProtocol(v string) *AnalysisSecurityGroupRule { + s.Protocol = &v + return s +} + +// SetSecurityGroupId sets the SecurityGroupId field's value. +func (s *AnalysisSecurityGroupRule) SetSecurityGroupId(v string) *AnalysisSecurityGroupRule { + s.SecurityGroupId = &v + return s +} + type ApplySecurityGroupsToClientVpnTargetNetworkInput struct { _ struct{} `type:"structure"` @@ -40546,8 +42778,10 @@ func (s *ApplySecurityGroupsToClientVpnTargetNetworkOutput) SetSecurityGroupIds( type AssignIpv6AddressesInput struct { _ struct{} `type:"structure"` - // The number of IPv6 addresses to assign to the network interface. Amazon EC2 - // automatically selects the IPv6 addresses from the subnet range. You can't + // The number of additional IPv6 addresses to assign to the network interface. + // The specified number of IPv6 addresses are assigned in addition to the existing + // IPv6 addresses that are already assigned to the network interface. Amazon + // EC2 automatically selects the IPv6 addresses from the subnet range. You can't // use this option if specifying specific IPv6 addresses. Ipv6AddressCount *int64 `locationName:"ipv6AddressCount" type:"integer"` @@ -40605,7 +42839,8 @@ func (s *AssignIpv6AddressesInput) SetNetworkInterfaceId(v string) *AssignIpv6Ad type AssignIpv6AddressesOutput struct { _ struct{} `type:"structure"` - // The IPv6 addresses assigned to the network interface. + // The new IPv6 addresses assigned to the network interface. Existing IPv6 addresses + // that were assigned to the network interface before the request are not included. AssignedIpv6Addresses []*string `locationName:"assignedIpv6Addresses" locationNameList:"item" type:"list"` // The ID of the network interface. @@ -40783,10 +43018,10 @@ type AssociateAddressInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` - // The ID of the instance. This is required for EC2-Classic. For EC2-VPC, you - // can specify either the instance ID or the network interface ID, but not both. - // The operation fails if you specify an instance ID unless exactly one network - // interface is attached. + // The ID of the instance. The instance must have exactly one attached network + // interface. For EC2-VPC, you can specify either the instance ID or the network + // interface ID, but not both. For EC2-Classic, you must specify an instance + // ID and the instance must be in the running state. InstanceId *string `type:"string"` // [EC2-VPC] The ID of the network interface. If the instance has more than @@ -40801,8 +43036,8 @@ type AssociateAddressInput struct { // address is associated with the primary private IP address. PrivateIpAddress *string `locationName:"privateIpAddress" type:"string"` - // The Elastic IP address to associate with the instance. This is required for - // EC2-Classic. + // [EC2-Classic] The Elastic IP address to associate with the instance. This + // is required for EC2-Classic. PublicIp *string `type:"string"` } @@ -41135,7 +43370,7 @@ type AssociateEnclaveCertificateIamRoleOutput struct { CertificateS3BucketName *string `locationName:"certificateS3BucketName" type:"string"` // The Amazon S3 object key where the certificate, certificate chain, and encrypted - // private key bundle are stored. The object key is formatted as follows: certificate_arn/role_arn. + // private key bundle are stored. The object key is formatted as follows: role_arn/certificate_arn. CertificateS3ObjectKey *string `locationName:"certificateS3ObjectKey" type:"string"` // The ID of the AWS KMS CMK used to encrypt the private key of the certificate. @@ -41740,7 +43975,7 @@ type AssociatedRole struct { // The key of the Amazon S3 object ey where the certificate, certificate chain, // and encrypted private key bundle is stored. The object key is formated as - // follows: certificate_arn/role_arn. + // follows: role_arn/certificate_arn. CertificateS3ObjectKey *string `locationName:"certificateS3ObjectKey" type:"string"` // The ID of the KMS customer master key (CMK) used to encrypt the private key. @@ -43077,8 +45312,7 @@ type BlockDeviceMapping struct { // launched. Ebs *EbsBlockDevice `locationName:"ebs" type:"structure"` - // Suppresses the specified device included in the block device mapping of the - // AMI. + // To omit the device from the block device mapping, specify an empty string. NoDevice *string `locationName:"noDevice" type:"string"` // The virtual device name (ephemeralN). Instance store volumes are numbered @@ -44211,6 +46445,9 @@ type CapacityReservation struct { // The ID of the AWS account that owns the Capacity Reservation. OwnerId *string `locationName:"ownerId" type:"string"` + // The date and time at which the Capacity Reservation was started. + StartDate *time.Time `locationName:"startDate" type:"timestamp"` + // The current state of the Capacity Reservation. A Capacity Reservation can // be in one of the following states: // @@ -44221,8 +46458,8 @@ type CapacityReservation struct { // and time specified in your request. The reserved capacity is no longer // available for your use. // - // * cancelled - The Capacity Reservation was manually cancelled. The reserved - // capacity is no longer available for your use. + // * cancelled - The Capacity Reservation was cancelled. The reserved capacity + // is no longer available for your use. // // * pending - The Capacity Reservation request was successful but the capacity // provisioning is still pending. @@ -44344,6 +46581,12 @@ func (s *CapacityReservation) SetOwnerId(v string) *CapacityReservation { return s } +// SetStartDate sets the StartDate field's value. +func (s *CapacityReservation) SetStartDate(v time.Time) *CapacityReservation { + s.StartDate = &v + return s +} + // SetState sets the State field's value. func (s *CapacityReservation) SetState(v string) *CapacityReservation { s.State = &v @@ -44408,9 +46651,9 @@ func (s *CapacityReservationGroup) SetOwnerId(v string) *CapacityReservationGrou // // For more information about Capacity Reservations, see On-Demand Capacity // Reservations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) -// in the Amazon Elastic Compute Cloud User Guide. For examples of using Capacity -// Reservations in an EC2 Fleet, see EC2 Fleet example configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. For examples of using Capacity Reservations +// in an EC2 Fleet, see EC2 Fleet example configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html) +// in the Amazon EC2 User Guide. type CapacityReservationOptions struct { _ struct{} `type:"structure"` @@ -44453,9 +46696,9 @@ func (s *CapacityReservationOptions) SetUsageStrategy(v string) *CapacityReserva // // For more information about Capacity Reservations, see On-Demand Capacity // Reservations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html) -// in the Amazon Elastic Compute Cloud User Guide. For examples of using Capacity -// Reservations in an EC2 Fleet, see EC2 Fleet example configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. For examples of using Capacity Reservations +// in an EC2 Fleet, see EC2 Fleet example configurations (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-examples.html) +// in the Amazon EC2 User Guide. type CapacityReservationOptionsRequest struct { _ struct{} `type:"structure"` @@ -46456,13 +48699,23 @@ type CopyImageInput struct { _ struct{} `type:"structure"` // Unique, case-sensitive identifier you provide to ensure idempotency of the - // request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Run_Instance_Idempotency.html) - // in the Amazon Elastic Compute Cloud User Guide. + // request. For more information, see Ensuring idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) + // in the Amazon EC2 API Reference. ClientToken *string `type:"string"` // A description for the new AMI in the destination Region. Description *string `type:"string"` + // The Amazon Resource Name (ARN) of the Outpost to which to copy the AMI. Only + // specify this parameter when copying an AMI from an AWS Region to an Outpost. + // The AMI must be in the Region of the destination Outpost. You cannot copy + // an AMI from an Outpost to a Region, from one Outpost to another, or within + // the same Outpost. + // + // For more information, see Copying AMIs from an AWS Region to an Outpost (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#copy-amis) + // in the Amazon Elastic Compute Cloud User Guide. + DestinationOutpostArn *string `type:"string"` + // Checks whether you have the required permissions for the action, without // actually making the request, and provides an error response. If you have // the required permissions, the error response is DryRunOperation. Otherwise, @@ -46558,6 +48811,12 @@ func (s *CopyImageInput) SetDescription(v string) *CopyImageInput { return s } +// SetDestinationOutpostArn sets the DestinationOutpostArn field's value. +func (s *CopyImageInput) SetDestinationOutpostArn(v string) *CopyImageInput { + s.DestinationOutpostArn = &v + return s +} + // SetDryRun sets the DryRun field's value. func (s *CopyImageInput) SetDryRun(v bool) *CopyImageInput { s.DryRun = &v @@ -46624,6 +48883,17 @@ type CopySnapshotInput struct { // A description for the EBS snapshot. Description *string `type:"string"` + // The Amazon Resource Name (ARN) of the Outpost to which to copy the snapshot. + // Only specify this parameter when copying a snapshot from an AWS Region to + // an Outpost. The snapshot must be in the Region for the destination Outpost. + // You cannot copy a snapshot from an Outpost to a Region, from one Outpost + // to another, or within the same Outpost. + // + // For more information, see Copying snapshots from an AWS Region to an Outpost + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#copy-snapshots) + // in the Amazon Elastic Compute Cloud User Guide. + DestinationOutpostArn *string `type:"string"` + // The destination Region to use in the PresignedUrl parameter of a snapshot // copy operation. This parameter is only valid for specifying the destination // Region in a PresignedUrl parameter, where it is required. @@ -46729,6 +48999,12 @@ func (s *CopySnapshotInput) SetDescription(v string) *CopySnapshotInput { return s } +// SetDestinationOutpostArn sets the DestinationOutpostArn field's value. +func (s *CopySnapshotInput) SetDestinationOutpostArn(v string) *CopySnapshotInput { + s.DestinationOutpostArn = &v + return s +} + // SetDestinationRegion sets the DestinationRegion field's value. func (s *CopySnapshotInput) SetDestinationRegion(v string) *CopySnapshotInput { s.DestinationRegion = &v @@ -46887,7 +49163,7 @@ type CreateCapacityReservationInput struct { AvailabilityZoneId *string `type:"string"` // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // of the request. For more information, see Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). ClientToken *string `type:"string"` // Checks whether you have the required permissions for the action, without @@ -46959,8 +49235,8 @@ type CreateCapacityReservationInput struct { InstancePlatform *string `type:"string" required:"true" enum:"CapacityReservationInstancePlatform"` // The instance type for which to reserve capacity. For more information, see - // Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. // // InstanceType is a required field InstanceType *string `type:"string" required:"true"` @@ -48125,7 +50401,10 @@ type CreateFleetInput struct { // Describes the configuration of On-Demand Instances in an EC2 Fleet. OnDemandOptions *OnDemandOptionsRequest `type:"structure"` - // Indicates whether EC2 Fleet should replace unhealthy instances. + // Indicates whether EC2 Fleet should replace unhealthy Spot Instances. Supported + // only for fleets of type maintain. For more information, see EC2 Fleet health + // checks (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/manage-ec2-fleet.html#ec2-fleet-health-checks) + // in the Amazon EC2 User Guide. ReplaceUnhealthyInstances *bool `type:"boolean"` // Describes the configuration of Spot Instances in an EC2 Fleet. @@ -48148,7 +50427,7 @@ type CreateFleetInput struct { // The type of request. The default value is maintain. // - // * maintain - The EC2 Fleet plaees an asynchronous request for your desired + // * maintain - The EC2 Fleet places an asynchronous request for your desired // capacity, and continues to maintain your desired Spot capacity by replenishing // interrupted Spot Instances. // @@ -48162,7 +50441,7 @@ type CreateFleetInput struct { // be launched. // // For more information, see EC2 Fleet request types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-request-type) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. Type *string `type:"string" enum:"FleetType"` // The start date and time of the request, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). @@ -48923,7 +51202,7 @@ type CreateInstanceExportTaskInput struct { // maximum length is 255 characters. Description *string `locationName:"description" type:"string"` - // The format and location for an instance export task. + // The format and location for an export instance task. // // ExportToS3Task is a required field ExportToS3Task *ExportToS3TaskSpecification `locationName:"exportToS3" type:"structure" required:"true"` @@ -48933,7 +51212,7 @@ type CreateInstanceExportTaskInput struct { // InstanceId is a required field InstanceId *string `locationName:"instanceId" type:"string" required:"true"` - // The tags to apply to the instance export task during creation. + // The tags to apply to the export instance task during creation. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` // The target virtualization environment. @@ -49004,7 +51283,7 @@ func (s *CreateInstanceExportTaskInput) SetTargetEnvironment(v string) *CreateIn type CreateInstanceExportTaskOutput struct { _ struct{} `type:"structure"` - // Information about the instance export task. + // Information about the export instance task. ExportTask *ExportTask `locationName:"exportTask" type:"structure"` } @@ -50201,6 +52480,156 @@ func (s *CreateNetworkAclOutput) SetNetworkAcl(v *NetworkAcl) *CreateNetworkAclO return s } +type CreateNetworkInsightsPathInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // The AWS resource that is the destination of the path. + // + // Destination is a required field + Destination *string `type:"string" required:"true"` + + // The IP address of the AWS resource that is the destination of the path. + DestinationIp *string `type:"string"` + + // The destination port. + DestinationPort *int64 `min:"1" type:"integer"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The protocol. + // + // Protocol is a required field + Protocol *string `type:"string" required:"true" enum:"Protocol"` + + // The AWS resource that is the source of the path. + // + // Source is a required field + Source *string `type:"string" required:"true"` + + // The IP address of the AWS resource that is the source of the path. + SourceIp *string `type:"string"` + + // The tags to add to the path. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s CreateNetworkInsightsPathInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkInsightsPathInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateNetworkInsightsPathInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateNetworkInsightsPathInput"} + if s.Destination == nil { + invalidParams.Add(request.NewErrParamRequired("Destination")) + } + if s.DestinationPort != nil && *s.DestinationPort < 1 { + invalidParams.Add(request.NewErrParamMinValue("DestinationPort", 1)) + } + if s.Protocol == nil { + invalidParams.Add(request.NewErrParamRequired("Protocol")) + } + if s.Source == nil { + invalidParams.Add(request.NewErrParamRequired("Source")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *CreateNetworkInsightsPathInput) SetClientToken(v string) *CreateNetworkInsightsPathInput { + s.ClientToken = &v + return s +} + +// SetDestination sets the Destination field's value. +func (s *CreateNetworkInsightsPathInput) SetDestination(v string) *CreateNetworkInsightsPathInput { + s.Destination = &v + return s +} + +// SetDestinationIp sets the DestinationIp field's value. +func (s *CreateNetworkInsightsPathInput) SetDestinationIp(v string) *CreateNetworkInsightsPathInput { + s.DestinationIp = &v + return s +} + +// SetDestinationPort sets the DestinationPort field's value. +func (s *CreateNetworkInsightsPathInput) SetDestinationPort(v int64) *CreateNetworkInsightsPathInput { + s.DestinationPort = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateNetworkInsightsPathInput) SetDryRun(v bool) *CreateNetworkInsightsPathInput { + s.DryRun = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *CreateNetworkInsightsPathInput) SetProtocol(v string) *CreateNetworkInsightsPathInput { + s.Protocol = &v + return s +} + +// SetSource sets the Source field's value. +func (s *CreateNetworkInsightsPathInput) SetSource(v string) *CreateNetworkInsightsPathInput { + s.Source = &v + return s +} + +// SetSourceIp sets the SourceIp field's value. +func (s *CreateNetworkInsightsPathInput) SetSourceIp(v string) *CreateNetworkInsightsPathInput { + s.SourceIp = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateNetworkInsightsPathInput) SetTagSpecifications(v []*TagSpecification) *CreateNetworkInsightsPathInput { + s.TagSpecifications = v + return s +} + +type CreateNetworkInsightsPathOutput struct { + _ struct{} `type:"structure"` + + // Information about the path. + NetworkInsightsPath *NetworkInsightsPath `locationName:"networkInsightsPath" type:"structure"` +} + +// String returns the string representation +func (s CreateNetworkInsightsPathOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateNetworkInsightsPathOutput) GoString() string { + return s.String() +} + +// SetNetworkInsightsPath sets the NetworkInsightsPath field's value. +func (s *CreateNetworkInsightsPathOutput) SetNetworkInsightsPath(v *NetworkInsightsPath) *CreateNetworkInsightsPathOutput { + s.NetworkInsightsPath = v + return s +} + // Contains the parameters for CreateNetworkInterface. type CreateNetworkInterfaceInput struct { _ struct{} `type:"structure"` @@ -51101,6 +53530,25 @@ type CreateSnapshotInput struct { // it is UnauthorizedOperation. DryRun *bool `locationName:"dryRun" type:"boolean"` + // The Amazon Resource Name (ARN) of the AWS Outpost on which to create a local + // snapshot. + // + // * To create a snapshot of a volume in a Region, omit this parameter. The + // snapshot is created in the same Region as the volume. + // + // * To create a snapshot of a volume on an Outpost and store the snapshot + // in the Region, omit this parameter. The snapshot is created in the Region + // for the Outpost. + // + // * To create a snapshot of a volume on an Outpost and store the snapshot + // on an Outpost, specify the ARN of the destination Outpost. The snapshot + // must be created on the same Outpost as the volume. + // + // For more information, see Creating local snapshots from volumes on an Outpost + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#create-snapshot) + // in the Amazon Elastic Compute Cloud User Guide. + OutpostArn *string `type:"string"` + // The tags to apply to the snapshot during creation. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` @@ -51145,6 +53593,12 @@ func (s *CreateSnapshotInput) SetDryRun(v bool) *CreateSnapshotInput { return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *CreateSnapshotInput) SetOutpostArn(v string) *CreateSnapshotInput { + s.OutpostArn = &v + return s +} + // SetTagSpecifications sets the TagSpecifications field's value. func (s *CreateSnapshotInput) SetTagSpecifications(v []*TagSpecification) *CreateSnapshotInput { s.TagSpecifications = v @@ -51177,6 +53631,25 @@ type CreateSnapshotsInput struct { // InstanceSpecification is a required field InstanceSpecification *InstanceSpecification `type:"structure" required:"true"` + // The Amazon Resource Name (ARN) of the AWS Outpost on which to create the + // local snapshots. + // + // * To create snapshots from an instance in a Region, omit this parameter. + // The snapshots are created in the same Region as the instance. + // + // * To create snapshots from an instance on an Outpost and store the snapshots + // in the Region, omit this parameter. The snapshots are created in the Region + // for the Outpost. + // + // * To create snapshots from an instance on an Outpost and store the snapshots + // on an Outpost, specify the ARN of the destination Outpost. The snapshots + // must be created on the same Outpost as the instance. + // + // For more information, see Creating multi-volume local snapshots from instances + // on an Outpost (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#create-multivol-snapshot) + // in the Amazon Elastic Compute Cloud User Guide. + OutpostArn *string `type:"string"` + // Tags to apply to every snapshot specified by the instance. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` } @@ -51228,6 +53701,12 @@ func (s *CreateSnapshotsInput) SetInstanceSpecification(v *InstanceSpecification return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *CreateSnapshotsInput) SetOutpostArn(v string) *CreateSnapshotsInput { + s.OutpostArn = &v + return s +} + // SetTagSpecifications sets the TagSpecifications field's value. func (s *CreateSnapshotsInput) SetTagSpecifications(v []*TagSpecification) *CreateSnapshotsInput { s.TagSpecifications = v @@ -52156,6 +54635,283 @@ func (s *CreateTrafficMirrorTargetOutput) SetTrafficMirrorTarget(v *TrafficMirro return s } +type CreateTransitGatewayConnectInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Connect attachment options. + // + // Options is a required field + Options *CreateTransitGatewayConnectRequestOptions `type:"structure" required:"true"` + + // The tags to apply to the Connect attachment. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The ID of the transit gateway attachment. You can specify a VPC attachment + // or a AWS Direct Connect attachment. + // + // TransportTransitGatewayAttachmentId is a required field + TransportTransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateTransitGatewayConnectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayConnectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTransitGatewayConnectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayConnectInput"} + if s.Options == nil { + invalidParams.Add(request.NewErrParamRequired("Options")) + } + if s.TransportTransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransportTransitGatewayAttachmentId")) + } + if s.Options != nil { + if err := s.Options.Validate(); err != nil { + invalidParams.AddNested("Options", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTransitGatewayConnectInput) SetDryRun(v bool) *CreateTransitGatewayConnectInput { + s.DryRun = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *CreateTransitGatewayConnectInput) SetOptions(v *CreateTransitGatewayConnectRequestOptions) *CreateTransitGatewayConnectInput { + s.Options = v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTransitGatewayConnectInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayConnectInput { + s.TagSpecifications = v + return s +} + +// SetTransportTransitGatewayAttachmentId sets the TransportTransitGatewayAttachmentId field's value. +func (s *CreateTransitGatewayConnectInput) SetTransportTransitGatewayAttachmentId(v string) *CreateTransitGatewayConnectInput { + s.TransportTransitGatewayAttachmentId = &v + return s +} + +type CreateTransitGatewayConnectOutput struct { + _ struct{} `type:"structure"` + + // Information about the Connect attachment. + TransitGatewayConnect *TransitGatewayConnect `locationName:"transitGatewayConnect" type:"structure"` +} + +// String returns the string representation +func (s CreateTransitGatewayConnectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayConnectOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayConnect sets the TransitGatewayConnect field's value. +func (s *CreateTransitGatewayConnectOutput) SetTransitGatewayConnect(v *TransitGatewayConnect) *CreateTransitGatewayConnectOutput { + s.TransitGatewayConnect = v + return s +} + +type CreateTransitGatewayConnectPeerInput struct { + _ struct{} `type:"structure"` + + // The BGP options for the Connect peer. + BgpOptions *TransitGatewayConnectRequestBgpOptions `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The range of inside IP addresses that are used for BGP peering. You must + // specify a size /29 IPv4 CIDR block from the 169.254.0.0/16 range. The first + // address from the range must be configured on the appliance as the BGP IP + // address. You can also optionally specify a size /125 IPv6 CIDR block from + // the fd00::/8 range. + // + // InsideCidrBlocks is a required field + InsideCidrBlocks []*string `locationNameList:"item" type:"list" required:"true"` + + // The peer IP address (GRE outer IP address) on the appliance side of the Connect + // peer. + // + // PeerAddress is a required field + PeerAddress *string `type:"string" required:"true"` + + // The tags to apply to the Connect peer. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` + + // The peer IP address (GRE outer IP address) on the transit gateway side of + // the Connect peer, which must be specified from a transit gateway CIDR block. + // If not specified, Amazon automatically assigns the first available IP address + // from the transit gateway CIDR block. + TransitGatewayAddress *string `type:"string"` + + // The ID of the Connect attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s CreateTransitGatewayConnectPeerInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayConnectPeerInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTransitGatewayConnectPeerInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayConnectPeerInput"} + if s.InsideCidrBlocks == nil { + invalidParams.Add(request.NewErrParamRequired("InsideCidrBlocks")) + } + if s.PeerAddress == nil { + invalidParams.Add(request.NewErrParamRequired("PeerAddress")) + } + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetBgpOptions sets the BgpOptions field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetBgpOptions(v *TransitGatewayConnectRequestBgpOptions) *CreateTransitGatewayConnectPeerInput { + s.BgpOptions = v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetDryRun(v bool) *CreateTransitGatewayConnectPeerInput { + s.DryRun = &v + return s +} + +// SetInsideCidrBlocks sets the InsideCidrBlocks field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetInsideCidrBlocks(v []*string) *CreateTransitGatewayConnectPeerInput { + s.InsideCidrBlocks = v + return s +} + +// SetPeerAddress sets the PeerAddress field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetPeerAddress(v string) *CreateTransitGatewayConnectPeerInput { + s.PeerAddress = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayConnectPeerInput { + s.TagSpecifications = v + return s +} + +// SetTransitGatewayAddress sets the TransitGatewayAddress field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetTransitGatewayAddress(v string) *CreateTransitGatewayConnectPeerInput { + s.TransitGatewayAddress = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *CreateTransitGatewayConnectPeerInput) SetTransitGatewayAttachmentId(v string) *CreateTransitGatewayConnectPeerInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type CreateTransitGatewayConnectPeerOutput struct { + _ struct{} `type:"structure"` + + // Information about the Connect peer. + TransitGatewayConnectPeer *TransitGatewayConnectPeer `locationName:"transitGatewayConnectPeer" type:"structure"` +} + +// String returns the string representation +func (s CreateTransitGatewayConnectPeerOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayConnectPeerOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayConnectPeer sets the TransitGatewayConnectPeer field's value. +func (s *CreateTransitGatewayConnectPeerOutput) SetTransitGatewayConnectPeer(v *TransitGatewayConnectPeer) *CreateTransitGatewayConnectPeerOutput { + s.TransitGatewayConnectPeer = v + return s +} + +// The options for a Connect attachment. +type CreateTransitGatewayConnectRequestOptions struct { + _ struct{} `type:"structure"` + + // The tunnel protocol. + // + // Protocol is a required field + Protocol *string `type:"string" required:"true" enum:"ProtocolValue"` +} + +// String returns the string representation +func (s CreateTransitGatewayConnectRequestOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayConnectRequestOptions) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *CreateTransitGatewayConnectRequestOptions) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "CreateTransitGatewayConnectRequestOptions"} + if s.Protocol == nil { + invalidParams.Add(request.NewErrParamRequired("Protocol")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetProtocol sets the Protocol field's value. +func (s *CreateTransitGatewayConnectRequestOptions) SetProtocol(v string) *CreateTransitGatewayConnectRequestOptions { + s.Protocol = &v + return s +} + type CreateTransitGatewayInput struct { _ struct{} `type:"structure"` @@ -52218,6 +54974,9 @@ type CreateTransitGatewayMulticastDomainInput struct { // it is UnauthorizedOperation. DryRun *bool `type:"boolean"` + // The options for the transit gateway multicast domain. + Options *CreateTransitGatewayMulticastDomainRequestOptions `type:"structure"` + // The tags for the transit gateway multicast domain. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` @@ -52256,6 +55015,12 @@ func (s *CreateTransitGatewayMulticastDomainInput) SetDryRun(v bool) *CreateTran return s } +// SetOptions sets the Options field's value. +func (s *CreateTransitGatewayMulticastDomainInput) SetOptions(v *CreateTransitGatewayMulticastDomainRequestOptions) *CreateTransitGatewayMulticastDomainInput { + s.Options = v + return s +} + // SetTagSpecifications sets the TagSpecifications field's value. func (s *CreateTransitGatewayMulticastDomainInput) SetTagSpecifications(v []*TagSpecification) *CreateTransitGatewayMulticastDomainInput { s.TagSpecifications = v @@ -52291,6 +55056,51 @@ func (s *CreateTransitGatewayMulticastDomainOutput) SetTransitGatewayMulticastDo return s } +// The options for the transit gateway multicast domain. +type CreateTransitGatewayMulticastDomainRequestOptions struct { + _ struct{} `type:"structure"` + + // Indicates whether to automatically accept cross-account subnet associations + // that are associated with the transit gateway multicast domain. + AutoAcceptSharedAssociations *string `type:"string" enum:"AutoAcceptSharedAssociationsValue"` + + // Specify whether to enable Internet Group Management Protocol (IGMP) version + // 2 for the transit gateway multicast domain. + Igmpv2Support *string `type:"string" enum:"Igmpv2SupportValue"` + + // Specify whether to enable support for statically configuring multicast group + // sources for a domain. + StaticSourcesSupport *string `type:"string" enum:"StaticSourcesSupportValue"` +} + +// String returns the string representation +func (s CreateTransitGatewayMulticastDomainRequestOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s CreateTransitGatewayMulticastDomainRequestOptions) GoString() string { + return s.String() +} + +// SetAutoAcceptSharedAssociations sets the AutoAcceptSharedAssociations field's value. +func (s *CreateTransitGatewayMulticastDomainRequestOptions) SetAutoAcceptSharedAssociations(v string) *CreateTransitGatewayMulticastDomainRequestOptions { + s.AutoAcceptSharedAssociations = &v + return s +} + +// SetIgmpv2Support sets the Igmpv2Support field's value. +func (s *CreateTransitGatewayMulticastDomainRequestOptions) SetIgmpv2Support(v string) *CreateTransitGatewayMulticastDomainRequestOptions { + s.Igmpv2Support = &v + return s +} + +// SetStaticSourcesSupport sets the StaticSourcesSupport field's value. +func (s *CreateTransitGatewayMulticastDomainRequestOptions) SetStaticSourcesSupport(v string) *CreateTransitGatewayMulticastDomainRequestOptions { + s.StaticSourcesSupport = &v + return s +} + type CreateTransitGatewayOutput struct { _ struct{} `type:"structure"` @@ -52865,7 +55675,7 @@ type CreateTransitGatewayVpcAttachmentRequestOptions struct { // Enable or disable DNS support. The default is enable. DnsSupport *string `type:"string" enum:"DnsSupportValue"` - // Enable or disable IPv6 support. + // Enable or disable IPv6 support. The default is disable. Ipv6Support *string `type:"string" enum:"Ipv6SupportValue"` } @@ -52966,8 +55776,8 @@ type CreateVolumeInput struct { // Indicates whether to enable Amazon EBS Multi-Attach. If you enable Multi-Attach, // you can attach the volume to up to 16 Instances built on the Nitro System // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) - // in the same Availability Zone. This parameter is supported with io1 volumes - // only. For more information, see Amazon EBS Multi-Attach (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html) + // in the same Availability Zone. This parameter is supported with io1 and io2 + // volumes only. For more information, see Amazon EBS Multi-Attach (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html) // in the Amazon Elastic Compute Cloud User Guide. MultiAttachEnabled *bool `type:"boolean"` @@ -55988,6 +58798,152 @@ func (s DeleteNetworkAclOutput) GoString() string { return s.String() } +type DeleteNetworkInsightsAnalysisInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the network insights analysis. + // + // NetworkInsightsAnalysisId is a required field + NetworkInsightsAnalysisId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNetworkInsightsAnalysisInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInsightsAnalysisInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNetworkInsightsAnalysisInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNetworkInsightsAnalysisInput"} + if s.NetworkInsightsAnalysisId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInsightsAnalysisId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteNetworkInsightsAnalysisInput) SetDryRun(v bool) *DeleteNetworkInsightsAnalysisInput { + s.DryRun = &v + return s +} + +// SetNetworkInsightsAnalysisId sets the NetworkInsightsAnalysisId field's value. +func (s *DeleteNetworkInsightsAnalysisInput) SetNetworkInsightsAnalysisId(v string) *DeleteNetworkInsightsAnalysisInput { + s.NetworkInsightsAnalysisId = &v + return s +} + +type DeleteNetworkInsightsAnalysisOutput struct { + _ struct{} `type:"structure"` + + // The ID of the network insights analysis. + NetworkInsightsAnalysisId *string `locationName:"networkInsightsAnalysisId" type:"string"` +} + +// String returns the string representation +func (s DeleteNetworkInsightsAnalysisOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInsightsAnalysisOutput) GoString() string { + return s.String() +} + +// SetNetworkInsightsAnalysisId sets the NetworkInsightsAnalysisId field's value. +func (s *DeleteNetworkInsightsAnalysisOutput) SetNetworkInsightsAnalysisId(v string) *DeleteNetworkInsightsAnalysisOutput { + s.NetworkInsightsAnalysisId = &v + return s +} + +type DeleteNetworkInsightsPathInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the path. + // + // NetworkInsightsPathId is a required field + NetworkInsightsPathId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteNetworkInsightsPathInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInsightsPathInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteNetworkInsightsPathInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteNetworkInsightsPathInput"} + if s.NetworkInsightsPathId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInsightsPathId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteNetworkInsightsPathInput) SetDryRun(v bool) *DeleteNetworkInsightsPathInput { + s.DryRun = &v + return s +} + +// SetNetworkInsightsPathId sets the NetworkInsightsPathId field's value. +func (s *DeleteNetworkInsightsPathInput) SetNetworkInsightsPathId(v string) *DeleteNetworkInsightsPathInput { + s.NetworkInsightsPathId = &v + return s +} + +type DeleteNetworkInsightsPathOutput struct { + _ struct{} `type:"structure"` + + // The ID of the path. + NetworkInsightsPathId *string `locationName:"networkInsightsPathId" type:"string"` +} + +// String returns the string representation +func (s DeleteNetworkInsightsPathOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteNetworkInsightsPathOutput) GoString() string { + return s.String() +} + +// SetNetworkInsightsPathId sets the NetworkInsightsPathId field's value. +func (s *DeleteNetworkInsightsPathOutput) SetNetworkInsightsPathId(v string) *DeleteNetworkInsightsPathOutput { + s.NetworkInsightsPathId = &v + return s +} + // Contains the parameters for DeleteNetworkInterface. type DeleteNetworkInterfaceInput struct { _ struct{} `type:"structure"` @@ -57081,6 +60037,152 @@ func (s *DeleteTrafficMirrorTargetOutput) SetTrafficMirrorTargetId(v string) *De return s } +type DeleteTransitGatewayConnectInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the Connect attachment. + // + // TransitGatewayAttachmentId is a required field + TransitGatewayAttachmentId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTransitGatewayConnectInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayConnectInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTransitGatewayConnectInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayConnectInput"} + if s.TransitGatewayAttachmentId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayAttachmentId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTransitGatewayConnectInput) SetDryRun(v bool) *DeleteTransitGatewayConnectInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *DeleteTransitGatewayConnectInput) SetTransitGatewayAttachmentId(v string) *DeleteTransitGatewayConnectInput { + s.TransitGatewayAttachmentId = &v + return s +} + +type DeleteTransitGatewayConnectOutput struct { + _ struct{} `type:"structure"` + + // Information about the deleted Connect attachment. + TransitGatewayConnect *TransitGatewayConnect `locationName:"transitGatewayConnect" type:"structure"` +} + +// String returns the string representation +func (s DeleteTransitGatewayConnectOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayConnectOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayConnect sets the TransitGatewayConnect field's value. +func (s *DeleteTransitGatewayConnectOutput) SetTransitGatewayConnect(v *TransitGatewayConnect) *DeleteTransitGatewayConnectOutput { + s.TransitGatewayConnect = v + return s +} + +type DeleteTransitGatewayConnectPeerInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The ID of the Connect peer. + // + // TransitGatewayConnectPeerId is a required field + TransitGatewayConnectPeerId *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s DeleteTransitGatewayConnectPeerInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayConnectPeerInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DeleteTransitGatewayConnectPeerInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DeleteTransitGatewayConnectPeerInput"} + if s.TransitGatewayConnectPeerId == nil { + invalidParams.Add(request.NewErrParamRequired("TransitGatewayConnectPeerId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DeleteTransitGatewayConnectPeerInput) SetDryRun(v bool) *DeleteTransitGatewayConnectPeerInput { + s.DryRun = &v + return s +} + +// SetTransitGatewayConnectPeerId sets the TransitGatewayConnectPeerId field's value. +func (s *DeleteTransitGatewayConnectPeerInput) SetTransitGatewayConnectPeerId(v string) *DeleteTransitGatewayConnectPeerInput { + s.TransitGatewayConnectPeerId = &v + return s +} + +type DeleteTransitGatewayConnectPeerOutput struct { + _ struct{} `type:"structure"` + + // Information about the deleted Connect peer. + TransitGatewayConnectPeer *TransitGatewayConnectPeer `locationName:"transitGatewayConnectPeer" type:"structure"` +} + +// String returns the string representation +func (s DeleteTransitGatewayConnectPeerOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DeleteTransitGatewayConnectPeerOutput) GoString() string { + return s.String() +} + +// SetTransitGatewayConnectPeer sets the TransitGatewayConnectPeer field's value. +func (s *DeleteTransitGatewayConnectPeerOutput) SetTransitGatewayConnectPeer(v *TransitGatewayConnectPeer) *DeleteTransitGatewayConnectPeerOutput { + s.TransitGatewayConnectPeer = v + return s +} + type DeleteTransitGatewayInput struct { _ struct{} `type:"structure"` @@ -58683,6 +61785,115 @@ func (s *DescribeAccountAttributesOutput) SetAccountAttributes(v []*AccountAttri return s } +type DescribeAddressesAttributeInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The allocation IDs. + AllocationIds []*string `locationName:"AllocationId" locationNameList:"item" type:"list"` + + // The attribute of the IP address. + Attribute *string `type:"string" enum:"AddressAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"1" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeAddressesAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddressesAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeAddressesAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeAddressesAttributeInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllocationIds sets the AllocationIds field's value. +func (s *DescribeAddressesAttributeInput) SetAllocationIds(v []*string) *DescribeAddressesAttributeInput { + s.AllocationIds = v + return s +} + +// SetAttribute sets the Attribute field's value. +func (s *DescribeAddressesAttributeInput) SetAttribute(v string) *DescribeAddressesAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeAddressesAttributeInput) SetDryRun(v bool) *DescribeAddressesAttributeInput { + s.DryRun = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeAddressesAttributeInput) SetMaxResults(v int64) *DescribeAddressesAttributeInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeAddressesAttributeInput) SetNextToken(v string) *DescribeAddressesAttributeInput { + s.NextToken = &v + return s +} + +type DescribeAddressesAttributeOutput struct { + _ struct{} `type:"structure"` + + // Information about the IP addresses. + Addresses []*AddressAttribute `locationName:"addressSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeAddressesAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeAddressesAttributeOutput) GoString() string { + return s.String() +} + +// SetAddresses sets the Addresses field's value. +func (s *DescribeAddressesAttributeOutput) SetAddresses(v []*AddressAttribute) *DescribeAddressesAttributeOutput { + s.Addresses = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeAddressesAttributeOutput) SetNextToken(v string) *DescribeAddressesAttributeOutput { + s.NextToken = &v + return s +} + type DescribeAddressesInput struct { _ struct{} `type:"structure"` @@ -59199,12 +62410,12 @@ type DescribeCapacityReservationsInput struct { // is active and the capacity is available for your use. expired - The Capacity // Reservation expired automatically at the date and time specified in your // request. The reserved capacity is no longer available for your use. cancelled - // - The Capacity Reservation was manually cancelled. The reserved capacity - // is no longer available for your use. pending - The Capacity Reservation - // request was successful but the capacity provisioning is still pending. - // failed - The Capacity Reservation request has failed. A request might - // fail due to invalid request parameters, capacity constraints, or instance - // limit constraints. Failed requests are retained for 60 minutes. + // - The Capacity Reservation was cancelled. The reserved capacity is no + // longer available for your use. pending - The Capacity Reservation request + // was successful but the capacity provisioning is still pending. failed + // - The Capacity Reservation request has failed. A request might fail due + // to invalid request parameters, capacity constraints, or instance limit + // constraints. Failed requests are retained for 60 minutes. // // * end-date - The date and time at which the Capacity Reservation expires. // When a Capacity Reservation expires, the reserved capacity is released @@ -62868,13 +66079,13 @@ type DescribeImagesInput struct { // // * name - The name of the AMI (provided during image creation). // - // * owner-alias - The owner alias, from an Amazon-maintained list (amazon - // | aws-marketplace). This is not the user-configured AWS account alias - // set using the IAM console. We recommend that you use the related parameter - // instead of this filter. + // * owner-alias - The owner alias (amazon | aws-marketplace). The valid + // aliases are defined in an Amazon-maintained list. This is not the AWS + // account alias that can be set using the IAM console. We recommend that + // you use the Owner request parameter instead of this filter. // // * owner-id - The AWS account ID of the owner. We recommend that you use - // the related parameter instead of this filter. + // the Owner request parameter instead of this filter. // // * platform - The platform. To only list Windows-based AMIs, use windows. // @@ -63976,8 +67187,8 @@ type DescribeInstanceTypesInput struct { // can be configured for the instance type. For example, "1" or "1,2". Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` - // The instance types. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // The instance types. For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. InstanceTypes []*string `locationName:"InstanceType" type:"list"` // The maximum number of results to return for the request in a single page. @@ -64045,8 +67256,8 @@ func (s *DescribeInstanceTypesInput) SetNextToken(v string) *DescribeInstanceTyp type DescribeInstanceTypesOutput struct { _ struct{} `type:"structure"` - // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // The instance type. For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. InstanceTypes []*InstanceTypeInfo `locationName:"instanceTypeSet" locationNameList:"item" type:"list"` // The token to use to retrieve the next page of results. This value is null @@ -66301,6 +69512,267 @@ func (s *DescribeNetworkAclsOutput) SetNextToken(v string) *DescribeNetworkAclsO return s } +type DescribeNetworkInsightsAnalysesInput struct { + _ struct{} `type:"structure"` + + // The time when the network insights analyses ended. + AnalysisEndTime *time.Time `type:"timestamp"` + + // The time when the network insights analyses started. + AnalysisStartTime *time.Time `type:"timestamp"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. The following are possible values: + // + // * PathFound - A Boolean value that indicates whether a feasible path is + // found. + // + // * Status - The status of the analysis (running | succeeded | failed). + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"1" type:"integer"` + + // The ID of the network insights analyses. You must specify either analysis + // IDs or a path ID. + NetworkInsightsAnalysisIds []*string `locationName:"NetworkInsightsAnalysisId" locationNameList:"item" type:"list"` + + // The ID of the path. You must specify either a path ID or analysis IDs. + NetworkInsightsPathId *string `type:"string"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInsightsAnalysesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInsightsAnalysesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNetworkInsightsAnalysesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNetworkInsightsAnalysesInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAnalysisEndTime sets the AnalysisEndTime field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetAnalysisEndTime(v time.Time) *DescribeNetworkInsightsAnalysesInput { + s.AnalysisEndTime = &v + return s +} + +// SetAnalysisStartTime sets the AnalysisStartTime field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetAnalysisStartTime(v time.Time) *DescribeNetworkInsightsAnalysesInput { + s.AnalysisStartTime = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetDryRun(v bool) *DescribeNetworkInsightsAnalysesInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetFilters(v []*Filter) *DescribeNetworkInsightsAnalysesInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetMaxResults(v int64) *DescribeNetworkInsightsAnalysesInput { + s.MaxResults = &v + return s +} + +// SetNetworkInsightsAnalysisIds sets the NetworkInsightsAnalysisIds field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetNetworkInsightsAnalysisIds(v []*string) *DescribeNetworkInsightsAnalysesInput { + s.NetworkInsightsAnalysisIds = v + return s +} + +// SetNetworkInsightsPathId sets the NetworkInsightsPathId field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetNetworkInsightsPathId(v string) *DescribeNetworkInsightsAnalysesInput { + s.NetworkInsightsPathId = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInsightsAnalysesInput) SetNextToken(v string) *DescribeNetworkInsightsAnalysesInput { + s.NextToken = &v + return s +} + +type DescribeNetworkInsightsAnalysesOutput struct { + _ struct{} `type:"structure"` + + // Information about the network insights analyses. + NetworkInsightsAnalyses []*NetworkInsightsAnalysis `locationName:"networkInsightsAnalysisSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInsightsAnalysesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInsightsAnalysesOutput) GoString() string { + return s.String() +} + +// SetNetworkInsightsAnalyses sets the NetworkInsightsAnalyses field's value. +func (s *DescribeNetworkInsightsAnalysesOutput) SetNetworkInsightsAnalyses(v []*NetworkInsightsAnalysis) *DescribeNetworkInsightsAnalysesOutput { + s.NetworkInsightsAnalyses = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInsightsAnalysesOutput) SetNextToken(v string) *DescribeNetworkInsightsAnalysesOutput { + s.NextToken = &v + return s +} + +type DescribeNetworkInsightsPathsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The filters. The following are possible values: + // + // * Destination - The ID of the resource. + // + // * DestinationPort - The destination port. + // + // * Name - The path name. + // + // * Protocol - The protocol. + // + // * Source - The ID of the resource. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"1" type:"integer"` + + // The IDs of the paths. + NetworkInsightsPathIds []*string `locationName:"NetworkInsightsPathId" locationNameList:"item" type:"list"` + + // The token for the next page of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInsightsPathsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInsightsPathsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeNetworkInsightsPathsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeNetworkInsightsPathsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeNetworkInsightsPathsInput) SetDryRun(v bool) *DescribeNetworkInsightsPathsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeNetworkInsightsPathsInput) SetFilters(v []*Filter) *DescribeNetworkInsightsPathsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeNetworkInsightsPathsInput) SetMaxResults(v int64) *DescribeNetworkInsightsPathsInput { + s.MaxResults = &v + return s +} + +// SetNetworkInsightsPathIds sets the NetworkInsightsPathIds field's value. +func (s *DescribeNetworkInsightsPathsInput) SetNetworkInsightsPathIds(v []*string) *DescribeNetworkInsightsPathsInput { + s.NetworkInsightsPathIds = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInsightsPathsInput) SetNextToken(v string) *DescribeNetworkInsightsPathsInput { + s.NextToken = &v + return s +} + +type DescribeNetworkInsightsPathsOutput struct { + _ struct{} `type:"structure"` + + // Information about the paths. + NetworkInsightsPaths []*NetworkInsightsPath `locationName:"networkInsightsPathSet" locationNameList:"item" type:"list"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s DescribeNetworkInsightsPathsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeNetworkInsightsPathsOutput) GoString() string { + return s.String() +} + +// SetNetworkInsightsPaths sets the NetworkInsightsPaths field's value. +func (s *DescribeNetworkInsightsPathsOutput) SetNetworkInsightsPaths(v []*NetworkInsightsPath) *DescribeNetworkInsightsPathsOutput { + s.NetworkInsightsPaths = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeNetworkInsightsPathsOutput) SetNextToken(v string) *DescribeNetworkInsightsPathsOutput { + s.NextToken = &v + return s +} + // Contains the parameters for DescribeNetworkInterfaceAttribute. type DescribeNetworkInterfaceAttributeInput struct { _ struct{} `type:"structure"` @@ -66615,8 +70087,8 @@ type DescribeNetworkInterfacesInput struct { // // * private-dns-name - The private DNS name of the network interface (IPv4). // - // * requester-id - The ID of the entity that launched the instance on your - // behalf (for example, AWS Management Console, Auto Scaling, and so on). + // * requester-id - The alias or AWS account ID of the principal or service + // that created the network interface. // // * requester-managed - Indicates whether the network interface is being // managed by an AWS service (for example, AWS Management Console, Auto Scaling, @@ -67603,8 +71075,8 @@ type DescribeReservedInstancesOfferingsInput struct { InstanceTenancy *string `locationName:"instanceTenancy" type:"string" enum:"Tenancy"` // The instance type that the reservation will cover (for example, m1.small). - // For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. InstanceType *string `type:"string" enum:"InstanceType"` // The maximum duration (in seconds) to filter when searching for offerings. @@ -68361,7 +71833,7 @@ type DescribeSecurityGroupsInput struct { // been referenced in an outbound security group rule. // // * egress.ip-permission.group-name - The name of a security group that - // has been referenced in an outbound security group rule. + // is referenced in an outbound security group rule. // // * egress.ip-permission.ipv6-cidr - An IPv6 CIDR block for an outbound // security group rule. @@ -68370,7 +71842,7 @@ type DescribeSecurityGroupsInput struct { // a security group rule allows outbound access. // // * egress.ip-permission.protocol - The IP protocol for an outbound security - // group rule (tcp | udp | icmp or a protocol number). + // group rule (tcp | udp | icmp, a protocol number, or -1 for all protocols). // // * egress.ip-permission.to-port - For an outbound rule, the end of port // range for the TCP and UDP protocols, or an ICMP code. @@ -68391,8 +71863,8 @@ type DescribeSecurityGroupsInput struct { // * ip-permission.group-id - The ID of a security group that has been referenced // in an inbound security group rule. // - // * ip-permission.group-name - The name of a security group that has been - // referenced in an inbound security group rule. + // * ip-permission.group-name - The name of a security group that is referenced + // in an inbound security group rule. // // * ip-permission.ipv6-cidr - An IPv6 CIDR block for an inbound security // group rule. @@ -68401,7 +71873,7 @@ type DescribeSecurityGroupsInput struct { // security group rule allows inbound access. // // * ip-permission.protocol - The IP protocol for an inbound security group - // rule (tcp | udp | icmp or a protocol number). + // rule (tcp | udp | icmp, a protocol number, or -1 for all protocols). // // * ip-permission.to-port - For an inbound rule, the end of port range for // the TCP and UDP protocols, or an ICMP code. @@ -70344,7 +73816,7 @@ type DescribeTransitGatewayAttachmentsInput struct { // * resource-owner-id - The ID of the AWS account that owns the resource. // // * resource-type - The resource type. Valid values are vpc | vpn | direct-connect-gateway - // | peering. + // | peering | connect. // // * state - The state of the attachment. Valid values are available | deleted // | deleting | failed | failing | initiatingRequest | modifying | pendingAcceptance @@ -70455,6 +73927,244 @@ func (s *DescribeTransitGatewayAttachmentsOutput) SetTransitGatewayAttachments(v return s } +type DescribeTransitGatewayConnectPeersInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * state - The state of the Connect peer (pending | available | deleting + // | deleted). + // + // * transit-gateway-attachment-id - The ID of the attachment. + // + // * transit-gateway-connect-peer-id - The ID of the Connect peer. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the Connect peers. + TransitGatewayConnectPeerIds []*string `locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayConnectPeersInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayConnectPeersInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTransitGatewayConnectPeersInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayConnectPeersInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTransitGatewayConnectPeersInput) SetDryRun(v bool) *DescribeTransitGatewayConnectPeersInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTransitGatewayConnectPeersInput) SetFilters(v []*Filter) *DescribeTransitGatewayConnectPeersInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTransitGatewayConnectPeersInput) SetMaxResults(v int64) *DescribeTransitGatewayConnectPeersInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayConnectPeersInput) SetNextToken(v string) *DescribeTransitGatewayConnectPeersInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayConnectPeerIds sets the TransitGatewayConnectPeerIds field's value. +func (s *DescribeTransitGatewayConnectPeersInput) SetTransitGatewayConnectPeerIds(v []*string) *DescribeTransitGatewayConnectPeersInput { + s.TransitGatewayConnectPeerIds = v + return s +} + +type DescribeTransitGatewayConnectPeersOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the Connect peers. + TransitGatewayConnectPeers []*TransitGatewayConnectPeer `locationName:"transitGatewayConnectPeerSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayConnectPeersOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayConnectPeersOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayConnectPeersOutput) SetNextToken(v string) *DescribeTransitGatewayConnectPeersOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayConnectPeers sets the TransitGatewayConnectPeers field's value. +func (s *DescribeTransitGatewayConnectPeersOutput) SetTransitGatewayConnectPeers(v []*TransitGatewayConnectPeer) *DescribeTransitGatewayConnectPeersOutput { + s.TransitGatewayConnectPeers = v + return s +} + +type DescribeTransitGatewayConnectsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // One or more filters. The possible values are: + // + // * options.protocol - The tunnel protocol (gre). + // + // * state - The state of the attachment (initiating | initiatingRequest + // | pendingAcceptance | rollingBack | pending | available | modifying | + // deleting | deleted | failed | rejected | rejecting | failing). + // + // * transit-gateway-attachment-id - The ID of the Connect attachment. + // + // * transit-gateway-id - The ID of the transit gateway. + // + // * transport-transit-gateway-attachment-id - The ID of the transit gateway + // attachment from which the Connect attachment was created. + Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` + + // The maximum number of results to return with a single call. To retrieve the + // remaining results, make another call with the returned nextToken value. + MaxResults *int64 `min:"5" type:"integer"` + + // The token for the next page of results. + NextToken *string `type:"string"` + + // The IDs of the attachments. + TransitGatewayAttachmentIds []*string `type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayConnectsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayConnectsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DescribeTransitGatewayConnectsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DescribeTransitGatewayConnectsInput"} + if s.MaxResults != nil && *s.MaxResults < 5 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 5)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDryRun sets the DryRun field's value. +func (s *DescribeTransitGatewayConnectsInput) SetDryRun(v bool) *DescribeTransitGatewayConnectsInput { + s.DryRun = &v + return s +} + +// SetFilters sets the Filters field's value. +func (s *DescribeTransitGatewayConnectsInput) SetFilters(v []*Filter) *DescribeTransitGatewayConnectsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeTransitGatewayConnectsInput) SetMaxResults(v int64) *DescribeTransitGatewayConnectsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayConnectsInput) SetNextToken(v string) *DescribeTransitGatewayConnectsInput { + s.NextToken = &v + return s +} + +// SetTransitGatewayAttachmentIds sets the TransitGatewayAttachmentIds field's value. +func (s *DescribeTransitGatewayConnectsInput) SetTransitGatewayAttachmentIds(v []*string) *DescribeTransitGatewayConnectsInput { + s.TransitGatewayAttachmentIds = v + return s +} + +type DescribeTransitGatewayConnectsOutput struct { + _ struct{} `type:"structure"` + + // The token to use to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string `locationName:"nextToken" type:"string"` + + // Information about the Connect attachments. + TransitGatewayConnects []*TransitGatewayConnect `locationName:"transitGatewayConnectSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s DescribeTransitGatewayConnectsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DescribeTransitGatewayConnectsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *DescribeTransitGatewayConnectsOutput) SetNextToken(v string) *DescribeTransitGatewayConnectsOutput { + s.NextToken = &v + return s +} + +// SetTransitGatewayConnects sets the TransitGatewayConnects field's value. +func (s *DescribeTransitGatewayConnectsOutput) SetTransitGatewayConnects(v []*TransitGatewayConnect) *DescribeTransitGatewayConnectsOutput { + s.TransitGatewayConnects = v + return s +} + type DescribeTransitGatewayMulticastDomainsInput struct { _ struct{} `type:"structure"` @@ -72344,6 +76054,8 @@ type DescribeVpcEndpointServicesInput struct { // // * service-name - The name of the service. // + // * service-type - The type of service (Interface | Gateway). + // // * tag: - The key/value combination of a tag assigned to the resource. // Use the tag key in the filter name and the tag value as the filter value. // For example, to find all resources that have a tag with the key Owner @@ -75312,15 +79024,15 @@ type EbsBlockDevice struct { // Indicates whether the EBS volume is deleted on instance termination. For // more information, see Preserving Amazon EBS volumes on instance termination // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#preserving-volumes-on-termination) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. DeleteOnTermination *bool `locationName:"deleteOnTermination" type:"boolean"` // Indicates whether the encryption state of an EBS volume is changed while // being restored from a backing snapshot. The effect of setting the encryption // state to true depends on the volume origin (new or from a snapshot), starting // encryption state, ownership, and whether encryption by default is enabled. - // For more information, see Amazon EBS Encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-parameters) - // in the Amazon Elastic Compute Cloud User Guide. + // For more information, see Amazon EBS encryption (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-parameters) + // in the Amazon EC2 User Guide. // // In no case can you remove encryption from an encrypted volume. // @@ -75361,6 +79073,9 @@ type EbsBlockDevice struct { // and RequestSpotInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html). KmsKeyId *string `type:"string"` + // The ARN of the Outpost on which the snapshot is stored. + OutpostArn *string `locationName:"outpostArn" type:"string"` + // The ID of the snapshot. SnapshotId *string `locationName:"snapshotId" type:"string"` @@ -75382,16 +79097,14 @@ type EbsBlockDevice struct { // // * io1 and io2: 4-16,384 // - // * st1: 500-16,384 - // - // * sc1: 500-16,384 + // * st1 and sc1: 125-16,384 // // * standard: 1-1,024 VolumeSize *int64 `locationName:"volumeSize" type:"integer"` // The volume type. For more information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) - // in the Amazon Elastic Compute Cloud User Guide. If the volume type is io1 - // or io2, you must specify the IOPS that the volume supports. + // in the Amazon EC2 User Guide. If the volume type is io1 or io2, you must + // specify the IOPS that the volume supports. VolumeType *string `locationName:"volumeType" type:"string" enum:"VolumeType"` } @@ -75429,6 +79142,12 @@ func (s *EbsBlockDevice) SetKmsKeyId(v string) *EbsBlockDevice { return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *EbsBlockDevice) SetOutpostArn(v string) *EbsBlockDevice { + s.OutpostArn = &v + return s +} + // SetSnapshotId sets the SnapshotId field's value. func (s *EbsBlockDevice) SetSnapshotId(v string) *EbsBlockDevice { s.SnapshotId = &v @@ -75461,8 +79180,8 @@ type EbsInfo struct { EbsOptimizedInfo *EbsOptimizedInfo `locationName:"ebsOptimizedInfo" type:"structure"` // Indicates whether the instance type is Amazon EBS-optimized. For more information, - // see Amazon EBS-Optimized Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) - // in Amazon EC2 User Guide for Linux Instances. + // see Amazon EBS-optimized instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html) + // in Amazon EC2 User Guide. EbsOptimizedSupport *string `locationName:"ebsOptimizedSupport" type:"string" enum:"EbsOptimizedSupport"` // Indicates whether Amazon EBS encryption is supported. @@ -76912,6 +80631,431 @@ func (s *EventInformation) SetInstanceId(v string) *EventInformation { return s } +// Describes an explanation code for an unreachable path. For more information, +// see Reachability Analyzer explanation codes (https://docs.aws.amazon.com/vpc/latest/reachability/explanation-codes.html). +type Explanation struct { + _ struct{} `type:"structure"` + + // The network ACL. + Acl *AnalysisComponent `locationName:"acl" type:"structure"` + + // The network ACL rule. + AclRule *AnalysisAclRule `locationName:"aclRule" type:"structure"` + + // The IPv4 address, in CIDR notation. + Address *string `locationName:"address" type:"string"` + + // The IPv4 addresses, in CIDR notation. + Addresses []*string `locationName:"addressSet" locationNameList:"item" type:"list"` + + // The resource to which the component is attached. + AttachedTo *AnalysisComponent `locationName:"attachedTo" type:"structure"` + + // The Availability Zones. + AvailabilityZones []*string `locationName:"availabilityZoneSet" locationNameList:"item" type:"list"` + + // The CIDR ranges. + Cidrs []*string `locationName:"cidrSet" locationNameList:"item" type:"list"` + + // The listener for a Classic Load Balancer. + ClassicLoadBalancerListener *AnalysisLoadBalancerListener `locationName:"classicLoadBalancerListener" type:"structure"` + + // The component. + Component *AnalysisComponent `locationName:"component" type:"structure"` + + // The customer gateway. + CustomerGateway *AnalysisComponent `locationName:"customerGateway" type:"structure"` + + // The destination. + Destination *AnalysisComponent `locationName:"destination" type:"structure"` + + // The destination VPC. + DestinationVpc *AnalysisComponent `locationName:"destinationVpc" type:"structure"` + + // The direction. The following are possible values: + // + // * egress + // + // * ingress + Direction *string `locationName:"direction" type:"string"` + + // The load balancer listener. + ElasticLoadBalancerListener *AnalysisComponent `locationName:"elasticLoadBalancerListener" type:"structure"` + + // The explanation code. + ExplanationCode *string `locationName:"explanationCode" type:"string"` + + // The route table. + IngressRouteTable *AnalysisComponent `locationName:"ingressRouteTable" type:"structure"` + + // The internet gateway. + InternetGateway *AnalysisComponent `locationName:"internetGateway" type:"structure"` + + // The Amazon Resource Name (ARN) of the load balancer. + LoadBalancerArn *string `locationName:"loadBalancerArn" min:"1" type:"string"` + + // The listener port of the load balancer. + LoadBalancerListenerPort *int64 `locationName:"loadBalancerListenerPort" min:"1" type:"integer"` + + // The target. + LoadBalancerTarget *AnalysisLoadBalancerTarget `locationName:"loadBalancerTarget" type:"structure"` + + // The target group. + LoadBalancerTargetGroup *AnalysisComponent `locationName:"loadBalancerTargetGroup" type:"structure"` + + // The target groups. + LoadBalancerTargetGroups []*AnalysisComponent `locationName:"loadBalancerTargetGroupSet" locationNameList:"item" type:"list"` + + // The target port. + LoadBalancerTargetPort *int64 `locationName:"loadBalancerTargetPort" min:"1" type:"integer"` + + // The missing component. + MissingComponent *string `locationName:"missingComponent" type:"string"` + + // The NAT gateway. + NatGateway *AnalysisComponent `locationName:"natGateway" type:"structure"` + + // The network interface. + NetworkInterface *AnalysisComponent `locationName:"networkInterface" type:"structure"` + + // The packet field. + PacketField *string `locationName:"packetField" type:"string"` + + // The port. + Port *int64 `locationName:"port" min:"1" type:"integer"` + + // The port ranges. + PortRanges []*PortRange `locationName:"portRangeSet" locationNameList:"item" type:"list"` + + // The prefix list. + PrefixList *AnalysisComponent `locationName:"prefixList" type:"structure"` + + // The protocols. + Protocols []*string `locationName:"protocolSet" locationNameList:"item" type:"list"` + + // The route table. + RouteTable *AnalysisComponent `locationName:"routeTable" type:"structure"` + + // The route table route. + RouteTableRoute *AnalysisRouteTableRoute `locationName:"routeTableRoute" type:"structure"` + + // The security group. + SecurityGroup *AnalysisComponent `locationName:"securityGroup" type:"structure"` + + // The security group rule. + SecurityGroupRule *AnalysisSecurityGroupRule `locationName:"securityGroupRule" type:"structure"` + + // The security groups. + SecurityGroups []*AnalysisComponent `locationName:"securityGroupSet" locationNameList:"item" type:"list"` + + // The source VPC. + SourceVpc *AnalysisComponent `locationName:"sourceVpc" type:"structure"` + + // The state. + State *string `locationName:"state" type:"string"` + + // The subnet. + Subnet *AnalysisComponent `locationName:"subnet" type:"structure"` + + // The route table for the subnet. + SubnetRouteTable *AnalysisComponent `locationName:"subnetRouteTable" type:"structure"` + + // The component VPC. + Vpc *AnalysisComponent `locationName:"vpc" type:"structure"` + + // The VPC endpoint. + VpcEndpoint *AnalysisComponent `locationName:"vpcEndpoint" type:"structure"` + + // The VPC peering connection. + VpcPeeringConnection *AnalysisComponent `locationName:"vpcPeeringConnection" type:"structure"` + + // The VPN connection. + VpnConnection *AnalysisComponent `locationName:"vpnConnection" type:"structure"` + + // The VPN gateway. + VpnGateway *AnalysisComponent `locationName:"vpnGateway" type:"structure"` +} + +// String returns the string representation +func (s Explanation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Explanation) GoString() string { + return s.String() +} + +// SetAcl sets the Acl field's value. +func (s *Explanation) SetAcl(v *AnalysisComponent) *Explanation { + s.Acl = v + return s +} + +// SetAclRule sets the AclRule field's value. +func (s *Explanation) SetAclRule(v *AnalysisAclRule) *Explanation { + s.AclRule = v + return s +} + +// SetAddress sets the Address field's value. +func (s *Explanation) SetAddress(v string) *Explanation { + s.Address = &v + return s +} + +// SetAddresses sets the Addresses field's value. +func (s *Explanation) SetAddresses(v []*string) *Explanation { + s.Addresses = v + return s +} + +// SetAttachedTo sets the AttachedTo field's value. +func (s *Explanation) SetAttachedTo(v *AnalysisComponent) *Explanation { + s.AttachedTo = v + return s +} + +// SetAvailabilityZones sets the AvailabilityZones field's value. +func (s *Explanation) SetAvailabilityZones(v []*string) *Explanation { + s.AvailabilityZones = v + return s +} + +// SetCidrs sets the Cidrs field's value. +func (s *Explanation) SetCidrs(v []*string) *Explanation { + s.Cidrs = v + return s +} + +// SetClassicLoadBalancerListener sets the ClassicLoadBalancerListener field's value. +func (s *Explanation) SetClassicLoadBalancerListener(v *AnalysisLoadBalancerListener) *Explanation { + s.ClassicLoadBalancerListener = v + return s +} + +// SetComponent sets the Component field's value. +func (s *Explanation) SetComponent(v *AnalysisComponent) *Explanation { + s.Component = v + return s +} + +// SetCustomerGateway sets the CustomerGateway field's value. +func (s *Explanation) SetCustomerGateway(v *AnalysisComponent) *Explanation { + s.CustomerGateway = v + return s +} + +// SetDestination sets the Destination field's value. +func (s *Explanation) SetDestination(v *AnalysisComponent) *Explanation { + s.Destination = v + return s +} + +// SetDestinationVpc sets the DestinationVpc field's value. +func (s *Explanation) SetDestinationVpc(v *AnalysisComponent) *Explanation { + s.DestinationVpc = v + return s +} + +// SetDirection sets the Direction field's value. +func (s *Explanation) SetDirection(v string) *Explanation { + s.Direction = &v + return s +} + +// SetElasticLoadBalancerListener sets the ElasticLoadBalancerListener field's value. +func (s *Explanation) SetElasticLoadBalancerListener(v *AnalysisComponent) *Explanation { + s.ElasticLoadBalancerListener = v + return s +} + +// SetExplanationCode sets the ExplanationCode field's value. +func (s *Explanation) SetExplanationCode(v string) *Explanation { + s.ExplanationCode = &v + return s +} + +// SetIngressRouteTable sets the IngressRouteTable field's value. +func (s *Explanation) SetIngressRouteTable(v *AnalysisComponent) *Explanation { + s.IngressRouteTable = v + return s +} + +// SetInternetGateway sets the InternetGateway field's value. +func (s *Explanation) SetInternetGateway(v *AnalysisComponent) *Explanation { + s.InternetGateway = v + return s +} + +// SetLoadBalancerArn sets the LoadBalancerArn field's value. +func (s *Explanation) SetLoadBalancerArn(v string) *Explanation { + s.LoadBalancerArn = &v + return s +} + +// SetLoadBalancerListenerPort sets the LoadBalancerListenerPort field's value. +func (s *Explanation) SetLoadBalancerListenerPort(v int64) *Explanation { + s.LoadBalancerListenerPort = &v + return s +} + +// SetLoadBalancerTarget sets the LoadBalancerTarget field's value. +func (s *Explanation) SetLoadBalancerTarget(v *AnalysisLoadBalancerTarget) *Explanation { + s.LoadBalancerTarget = v + return s +} + +// SetLoadBalancerTargetGroup sets the LoadBalancerTargetGroup field's value. +func (s *Explanation) SetLoadBalancerTargetGroup(v *AnalysisComponent) *Explanation { + s.LoadBalancerTargetGroup = v + return s +} + +// SetLoadBalancerTargetGroups sets the LoadBalancerTargetGroups field's value. +func (s *Explanation) SetLoadBalancerTargetGroups(v []*AnalysisComponent) *Explanation { + s.LoadBalancerTargetGroups = v + return s +} + +// SetLoadBalancerTargetPort sets the LoadBalancerTargetPort field's value. +func (s *Explanation) SetLoadBalancerTargetPort(v int64) *Explanation { + s.LoadBalancerTargetPort = &v + return s +} + +// SetMissingComponent sets the MissingComponent field's value. +func (s *Explanation) SetMissingComponent(v string) *Explanation { + s.MissingComponent = &v + return s +} + +// SetNatGateway sets the NatGateway field's value. +func (s *Explanation) SetNatGateway(v *AnalysisComponent) *Explanation { + s.NatGateway = v + return s +} + +// SetNetworkInterface sets the NetworkInterface field's value. +func (s *Explanation) SetNetworkInterface(v *AnalysisComponent) *Explanation { + s.NetworkInterface = v + return s +} + +// SetPacketField sets the PacketField field's value. +func (s *Explanation) SetPacketField(v string) *Explanation { + s.PacketField = &v + return s +} + +// SetPort sets the Port field's value. +func (s *Explanation) SetPort(v int64) *Explanation { + s.Port = &v + return s +} + +// SetPortRanges sets the PortRanges field's value. +func (s *Explanation) SetPortRanges(v []*PortRange) *Explanation { + s.PortRanges = v + return s +} + +// SetPrefixList sets the PrefixList field's value. +func (s *Explanation) SetPrefixList(v *AnalysisComponent) *Explanation { + s.PrefixList = v + return s +} + +// SetProtocols sets the Protocols field's value. +func (s *Explanation) SetProtocols(v []*string) *Explanation { + s.Protocols = v + return s +} + +// SetRouteTable sets the RouteTable field's value. +func (s *Explanation) SetRouteTable(v *AnalysisComponent) *Explanation { + s.RouteTable = v + return s +} + +// SetRouteTableRoute sets the RouteTableRoute field's value. +func (s *Explanation) SetRouteTableRoute(v *AnalysisRouteTableRoute) *Explanation { + s.RouteTableRoute = v + return s +} + +// SetSecurityGroup sets the SecurityGroup field's value. +func (s *Explanation) SetSecurityGroup(v *AnalysisComponent) *Explanation { + s.SecurityGroup = v + return s +} + +// SetSecurityGroupRule sets the SecurityGroupRule field's value. +func (s *Explanation) SetSecurityGroupRule(v *AnalysisSecurityGroupRule) *Explanation { + s.SecurityGroupRule = v + return s +} + +// SetSecurityGroups sets the SecurityGroups field's value. +func (s *Explanation) SetSecurityGroups(v []*AnalysisComponent) *Explanation { + s.SecurityGroups = v + return s +} + +// SetSourceVpc sets the SourceVpc field's value. +func (s *Explanation) SetSourceVpc(v *AnalysisComponent) *Explanation { + s.SourceVpc = v + return s +} + +// SetState sets the State field's value. +func (s *Explanation) SetState(v string) *Explanation { + s.State = &v + return s +} + +// SetSubnet sets the Subnet field's value. +func (s *Explanation) SetSubnet(v *AnalysisComponent) *Explanation { + s.Subnet = v + return s +} + +// SetSubnetRouteTable sets the SubnetRouteTable field's value. +func (s *Explanation) SetSubnetRouteTable(v *AnalysisComponent) *Explanation { + s.SubnetRouteTable = v + return s +} + +// SetVpc sets the Vpc field's value. +func (s *Explanation) SetVpc(v *AnalysisComponent) *Explanation { + s.Vpc = v + return s +} + +// SetVpcEndpoint sets the VpcEndpoint field's value. +func (s *Explanation) SetVpcEndpoint(v *AnalysisComponent) *Explanation { + s.VpcEndpoint = v + return s +} + +// SetVpcPeeringConnection sets the VpcPeeringConnection field's value. +func (s *Explanation) SetVpcPeeringConnection(v *AnalysisComponent) *Explanation { + s.VpcPeeringConnection = v + return s +} + +// SetVpnConnection sets the VpnConnection field's value. +func (s *Explanation) SetVpnConnection(v *AnalysisComponent) *Explanation { + s.VpnConnection = v + return s +} + +// SetVpnGateway sets the VpnGateway field's value. +func (s *Explanation) SetVpnGateway(v *AnalysisComponent) *Explanation { + s.VpnGateway = v + return s +} + type ExportClientVpnClientCertificateRevocationListInput struct { _ struct{} `type:"structure"` @@ -77103,7 +81247,7 @@ type ExportImageInput struct { // S3ExportLocation is a required field S3ExportLocation *ExportTaskS3LocationRequest `type:"structure" required:"true"` - // The tags to apply to the image being exported. + // The tags to apply to the export image task during creation. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` } @@ -77221,7 +81365,7 @@ type ExportImageOutput struct { // The status message for the export image task. StatusMessage *string `locationName:"statusMessage" type:"string"` - // Any tags assigned to the image being exported. + // Any tags assigned to the export image task. Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` } @@ -77321,7 +81465,7 @@ type ExportImageTask struct { // The status message for the export image task. StatusMessage *string `locationName:"statusMessage" type:"string"` - // Any tags assigned to the image being exported. + // Any tags assigned to the export image task. Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` } @@ -77383,7 +81527,7 @@ func (s *ExportImageTask) SetTags(v []*Tag) *ExportImageTask { return s } -// Describes an instance export task. +// Describes an export instance task. type ExportTask struct { _ struct{} `type:"structure"` @@ -77542,7 +81686,7 @@ func (s *ExportTaskS3LocationRequest) SetS3Prefix(v string) *ExportTaskS3Locatio return s } -// Describes the format and location for an instance export task. +// Describes the format and location for the export task. type ExportToS3Task struct { _ struct{} `type:"structure"` @@ -77595,7 +81739,7 @@ func (s *ExportToS3Task) SetS3Key(v string) *ExportToS3Task { return s } -// Describes an instance export task. +// Describes an export instance task. type ExportToS3TaskSpecification struct { _ struct{} `type:"structure"` @@ -77872,29 +82016,7 @@ func (s *FederatedAuthenticationRequest) SetSelfServiceSAMLProviderArn(v string) // A filter name and value pair that is used to return a more specific list // of results from a describe operation. Filters can be used to match a set -// of resources by specific criteria, such as tags, attributes, or IDs. The -// filters supported by a describe operation are documented with the describe -// operation. For example: -// -// * DescribeAvailabilityZones -// -// * DescribeImages -// -// * DescribeInstances -// -// * DescribeKeyPairs -// -// * DescribeSecurityGroups -// -// * DescribeSnapshots -// -// * DescribeSubnets -// -// * DescribeTags -// -// * DescribeVolumes -// -// * DescribeVpcs +// of resources by specific criteria, such as tags, attributes, or IDs. type Filter struct { _ struct{} `type:"structure"` @@ -77979,7 +82101,10 @@ type FleetData struct { // The allocation strategy of On-Demand Instances in an EC2 Fleet. OnDemandOptions *OnDemandOptions `locationName:"onDemandOptions" type:"structure"` - // Indicates whether EC2 Fleet should replace unhealthy instances. + // Indicates whether EC2 Fleet should replace unhealthy Spot Instances. Supported + // only for fleets of type maintain. For more information, see EC2 Fleet health + // checks (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/manage-ec2-fleet.html#ec2-fleet-health-checks) + // in the Amazon EC2 User Guide. ReplaceUnhealthyInstances *bool `locationName:"replaceUnhealthyInstances" type:"boolean"` // The configuration of Spot Instances in an EC2 Fleet. @@ -78473,7 +82598,7 @@ func (s *FleetLaunchTemplateSpecification) SetVersion(v string) *FleetLaunchTemp // that can be used by an EC2 Fleet to configure Amazon EC2 instances. For information // about launch templates, see Launching an instance from a launch template // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. type FleetLaunchTemplateSpecificationRequest struct { _ struct{} `type:"structure"` @@ -78571,7 +82696,7 @@ func (s *FleetSpotCapacityRebalance) SetReplacementStrategy(v string) *FleetSpot // The Spot Instance replacement strategy to use when Amazon EC2 emits a signal // that your Spot Instance is at an elevated risk of being interrupted. For // more information, see Capacity rebalancing (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-configuration-strategies.html#ec2-fleet-capacity-rebalance) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. type FleetSpotCapacityRebalanceRequest struct { _ struct{} `type:"structure"` @@ -79457,8 +83582,8 @@ type GetCapacityReservationUsageOutput struct { // and time specified in your request. The reserved capacity is no longer // available for your use. // - // * cancelled - The Capacity Reservation was manually cancelled. The reserved - // capacity is no longer available for your use. + // * cancelled - The Capacity Reservation was cancelled. The reserved capacity + // is no longer available for your use. // // * pending - The Capacity Reservation request was successful but the capacity // provisioning is still pending. @@ -81166,7 +85291,7 @@ type GetTransitGatewayRouteTableAssociationsInput struct { // * resource-id - The ID of the resource. // // * resource-type - The resource type. Valid values are vpc | vpn | direct-connect-gateway - // | peering. + // | peering | connect. // // * transit-gateway-attachment-id - The ID of the attachment. Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` @@ -81287,7 +85412,7 @@ type GetTransitGatewayRouteTablePropagationsInput struct { // * resource-id - The ID of the resource. // // * resource-type - The resource type. Valid values are vpc | vpn | direct-connect-gateway - // | peering. + // | peering | connect. // // * transit-gateway-attachment-id - The ID of the attachment. Filters []*Filter `locationName:"Filter" locationNameList:"Filter" type:"list"` @@ -81539,7 +85664,7 @@ func (s *GroupIdentifier) SetGroupName(v string) *GroupIdentifier { // Indicates whether your instance is configured for hibernation. This parameter // is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). // For more information, see Hibernate your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. type HibernationOptions struct { _ struct{} `type:"structure"` @@ -81567,7 +85692,7 @@ func (s *HibernationOptions) SetConfigured(v bool) *HibernationOptions { // Indicates whether your instance is configured for hibernation. This parameter // is valid only if the instance meets the hibernation prerequisites (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites). // For more information, see Hibernate your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) -// in the Amazon Elastic Compute Cloud User Guide. +// in the Amazon EC2 User Guide. type HibernationOptionsRequest struct { _ struct{} `type:"structure"` @@ -81694,10 +85819,9 @@ type Host struct { AllocationTime *time.Time `locationName:"allocationTime" type:"timestamp"` // Indicates whether the Dedicated Host supports multiple instance types of - // the same instance family, or a specific instance type only. one indicates - // that the Dedicated Host supports multiple instance types in the instance - // family. off indicates that the Dedicated Host supports a single instance - // type only. + // the same instance family. If the value is on, the Dedicated Host supports + // multiple instance types in the instance family. If the value is off, the + // Dedicated Host supports a single instance type only. AllowsMultipleInstanceTypes *string `locationName:"allowsMultipleInstanceTypes" type:"string" enum:"AllowsMultipleInstanceTypes"` // Whether auto-placement is on or off. @@ -81713,7 +85837,7 @@ type Host struct { AvailableCapacity *AvailableCapacity `locationName:"availableCapacity" type:"structure"` // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). ClientToken *string `locationName:"clientToken" type:"string"` // The ID of the Dedicated Host. @@ -82716,7 +86840,7 @@ type ImageDiskContainer struct { // The format of the disk image being imported. // - // Valid values: OVA | VHD | VHDX |VMDK + // Valid values: OVA | VHD | VHDX | VMDK | RAW Format *string `type:"string"` // The ID of the EBS snapshot to be used for importing the snapshot. @@ -82959,7 +87083,7 @@ type ImportImageInput struct { // The name of the role to use when not using the default role, 'vmimport'. RoleName *string `type:"string"` - // The tags to apply to the image being imported. + // The tags to apply to the import image task during creation. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` } @@ -83151,7 +87275,7 @@ type ImportImageOutput struct { // A detailed status message of the import task. StatusMessage *string `locationName:"statusMessage" type:"string"` - // Any tags assigned to the image being imported. + // Any tags assigned to the import image task. Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` } @@ -83956,7 +88080,7 @@ type ImportSnapshotInput struct { // The name of the role to use when not using the default role, 'vmimport'. RoleName *string `type:"string"` - // The tags to apply to the snapshot being imported. + // The tags to apply to the import snapshot task during creation. TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` } @@ -84036,7 +88160,7 @@ type ImportSnapshotOutput struct { // Information about the import snapshot task. SnapshotTaskDetail *SnapshotTaskDetail `locationName:"snapshotTaskDetail" type:"structure"` - // Any tags assigned to the snapshot being imported. + // Any tags assigned to the import snapshot task. Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` } @@ -84514,8 +88638,8 @@ type Instance struct { // This controls whether source/destination checking is enabled on the instance. // A value of true means that checking is enabled, and false means that checking // is disabled. The value must be false for the instance to perform NAT. For - // more information, see NAT Instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) - // in the Amazon Virtual Private Cloud User Guide. + // more information, see NAT instances (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html) + // in the Amazon VPC User Guide. SourceDestCheck *bool `locationName:"sourceDestCheck" type:"boolean"` // If the request is a Spot Instance request, the ID of the request. @@ -86419,8 +90543,8 @@ type InstanceTypeInfo struct { // Indicates whether instance storage is supported. InstanceStorageSupported *bool `locationName:"instanceStorageSupported" type:"boolean"` - // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // The instance type. For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` // Describes the memory for the instance type. @@ -86600,8 +90724,8 @@ func (s *InstanceTypeInfo) SetVCpuInfo(v *VCpuInfo) *InstanceTypeInfo { type InstanceTypeOffering struct { _ struct{} `type:"structure"` - // The instance type. For more information, see Instance Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // The instance type. For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` // The identifier for the location. This depends on the location type. For example, @@ -87129,6 +91253,8 @@ type LaunchPermission struct { Group *string `locationName:"group" type:"string" enum:"PermissionGroup"` // The AWS account ID. + // + // Constraints: Up to 10 000 account IDs can be specified in a single request. UserId *string `locationName:"userId" type:"string"` } @@ -87469,8 +91595,7 @@ type LaunchTemplateBlockDeviceMapping struct { // Information about the block device for an EBS volume. Ebs *LaunchTemplateEbsBlockDevice `locationName:"ebs" type:"structure"` - // Suppresses the specified device included in the block device mapping of the - // AMI. + // To omit the device from the block device mapping, specify an empty string. NoDevice *string `locationName:"noDevice" type:"string"` // The virtual device name (ephemeralN). @@ -87522,8 +91647,7 @@ type LaunchTemplateBlockDeviceMappingRequest struct { // launched. Ebs *LaunchTemplateEbsBlockDeviceRequest `type:"structure"` - // Suppresses the specified device included in the block device mapping of the - // AMI. + // To omit the device from the block device mapping, specify an empty string. NoDevice *string `type:"string"` // The virtual device name (ephemeralN). Instance store volumes are numbered @@ -87888,9 +92012,8 @@ type LaunchTemplateEbsBlockDeviceRequest struct { // on the Nitro System (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). // Other instance families guarantee performance up to 32,000 IOPS. // - // This parameter is required for io1 and io2 volumes. The default for gp3 volumes - // is 3,000 IOPS. This parameter is not supported for gp2, st1, sc1, or standard - // volumes. + // This parameter is supported for io1, io2, and gp3 volumes only. This parameter + // is not supported for gp2, st1, sc1, or standard volumes. Iops *int64 `type:"integer"` // The ARN of the symmetric AWS Key Management Service (AWS KMS) CMK used for @@ -87906,11 +92029,8 @@ type LaunchTemplateEbsBlockDeviceRequest struct { Throughput *int64 `type:"integer"` // The size of the volume, in GiBs. You must specify either a snapshot ID or - // a volume size. If you specify a snapshot, the default is the snapshot size. - // You can specify a volume size that is equal to or larger than the snapshot - // size. - // - // The following are the supported volumes sizes for each volume type: + // a volume size. The following are the supported volumes sizes for each volume + // type: // // * gp2 and gp3: 1-16,384 // @@ -87921,8 +92041,7 @@ type LaunchTemplateEbsBlockDeviceRequest struct { // * standard: 1-1,024 VolumeSize *int64 `type:"integer"` - // The volume type. The default is gp2. For more information, see Amazon EBS - // volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // The volume type. For more information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) // in the Amazon Elastic Compute Cloud User Guide. VolumeType *string `type:"string" enum:"VolumeType"` } @@ -90339,6 +94458,88 @@ func (s *MemoryInfo) SetSizeInMiB(v int64) *MemoryInfo { return s } +type ModifyAddressAttributeInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The allocation ID. + // + // AllocationId is a required field + AllocationId *string `type:"string" required:"true"` + + // The domain name to modify for the IP address. + DomainName *string `type:"string"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ModifyAddressAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyAddressAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ModifyAddressAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ModifyAddressAttributeInput"} + if s.AllocationId == nil { + invalidParams.Add(request.NewErrParamRequired("AllocationId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllocationId sets the AllocationId field's value. +func (s *ModifyAddressAttributeInput) SetAllocationId(v string) *ModifyAddressAttributeInput { + s.AllocationId = &v + return s +} + +// SetDomainName sets the DomainName field's value. +func (s *ModifyAddressAttributeInput) SetDomainName(v string) *ModifyAddressAttributeInput { + s.DomainName = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ModifyAddressAttributeInput) SetDryRun(v bool) *ModifyAddressAttributeInput { + s.DryRun = &v + return s +} + +type ModifyAddressAttributeOutput struct { + _ struct{} `type:"structure"` + + // Information about the Elastic IP address. + Address *AddressAttribute `locationName:"address" type:"structure"` +} + +// String returns the string representation +func (s ModifyAddressAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ModifyAddressAttributeOutput) GoString() string { + return s.String() +} + +// SetAddress sets the Address field's value. +func (s *ModifyAddressAttributeOutput) SetAddress(v *AddressAttribute) *ModifyAddressAttributeOutput { + s.Address = v + return s +} + type ModifyAvailabilityZoneGroupInput struct { _ struct{} `type:"structure"` @@ -90433,6 +94634,9 @@ func (s *ModifyAvailabilityZoneGroupOutput) SetReturn(v bool) *ModifyAvailabilit type ModifyCapacityReservationInput struct { _ struct{} `type:"structure"` + // Reserved. Capacity Reservations you have created are accepted by default. + Accept *bool `type:"boolean"` + // The ID of the Capacity Reservation. // // CapacityReservationId is a required field @@ -90494,6 +94698,12 @@ func (s *ModifyCapacityReservationInput) Validate() error { return nil } +// SetAccept sets the Accept field's value. +func (s *ModifyCapacityReservationInput) SetAccept(v bool) *ModifyCapacityReservationInput { + s.Accept = &v + return s +} + // SetCapacityReservationId sets the CapacityReservationId field's value. func (s *ModifyCapacityReservationInput) SetCapacityReservationId(v string) *ModifyCapacityReservationInput { s.CapacityReservationId = &v @@ -91189,8 +95399,8 @@ type ModifyHostsInput struct { HostIds []*string `locationName:"hostId" locationNameList:"item" type:"list" required:"true"` // Indicates whether to enable or disable host recovery for the Dedicated Host. - // For more information, see Host Recovery (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html) - // in the Amazon Elastic Compute Cloud User Guide. + // For more information, see Host recovery (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html) + // in the Amazon EC2 User Guide. HostRecovery *string `type:"string" enum:"HostRecovery"` // Specifies the instance family to be supported by the Dedicated Host. Specify @@ -91621,7 +95831,7 @@ type ModifyInstanceAttributeInput struct { // To add instance store volumes to an Amazon EBS-backed instance, you must // add them when you launch the instance. For more information, see Updating // the block device mapping when launching an instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#Using_OverridingAMIBDM) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. BlockDeviceMappings []*InstanceBlockDeviceMappingSpecification `locationName:"blockDeviceMapping" locationNameList:"item" type:"list"` // If the value is true, you can't terminate the instance using the Amazon EC2 @@ -91663,8 +95873,9 @@ type ModifyInstanceAttributeInput struct { InstanceInitiatedShutdownBehavior *AttributeValue `locationName:"instanceInitiatedShutdownBehavior" type:"structure"` // Changes the instance type to the specified value. For more information, see - // Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html). - // If the instance type is not valid, the error returned is InvalidInstanceAttributeValue. + // Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) + // in the Amazon EC2 User Guide. If the instance type is not valid, the error + // returned is InvalidInstanceAttributeValue. InstanceType *AttributeValue `locationName:"instanceType" type:"structure"` // Changes the instance's kernel to the specified value. We recommend that you @@ -93601,6 +97812,10 @@ func (s *ModifyTransitGatewayInput) SetTransitGatewayId(v string) *ModifyTransit type ModifyTransitGatewayOptions struct { _ struct{} `type:"structure"` + // Adds IPv4 or IPv6 CIDR blocks for the transit gateway. Must be a size /24 + // CIDR block or larger for IPv4, or a size /64 CIDR block or larger for IPv6. + AddTransitGatewayCidrBlocks []*string `locationNameList:"item" type:"list"` + // The ID of the default association route table. AssociationDefaultRouteTableId *string `type:"string"` @@ -93621,6 +97836,9 @@ type ModifyTransitGatewayOptions struct { // The ID of the default propagation route table. PropagationDefaultRouteTableId *string `type:"string"` + // Removes CIDR blocks for the transit gateway. + RemoveTransitGatewayCidrBlocks []*string `locationNameList:"item" type:"list"` + // Enable or disable Equal Cost Multipath Protocol support. VpnEcmpSupport *string `type:"string" enum:"VpnEcmpSupportValue"` } @@ -93635,6 +97853,12 @@ func (s ModifyTransitGatewayOptions) GoString() string { return s.String() } +// SetAddTransitGatewayCidrBlocks sets the AddTransitGatewayCidrBlocks field's value. +func (s *ModifyTransitGatewayOptions) SetAddTransitGatewayCidrBlocks(v []*string) *ModifyTransitGatewayOptions { + s.AddTransitGatewayCidrBlocks = v + return s +} + // SetAssociationDefaultRouteTableId sets the AssociationDefaultRouteTableId field's value. func (s *ModifyTransitGatewayOptions) SetAssociationDefaultRouteTableId(v string) *ModifyTransitGatewayOptions { s.AssociationDefaultRouteTableId = &v @@ -93671,6 +97895,12 @@ func (s *ModifyTransitGatewayOptions) SetPropagationDefaultRouteTableId(v string return s } +// SetRemoveTransitGatewayCidrBlocks sets the RemoveTransitGatewayCidrBlocks field's value. +func (s *ModifyTransitGatewayOptions) SetRemoveTransitGatewayCidrBlocks(v []*string) *ModifyTransitGatewayOptions { + s.RemoveTransitGatewayCidrBlocks = v + return s +} + // SetVpnEcmpSupport sets the VpnEcmpSupport field's value. func (s *ModifyTransitGatewayOptions) SetVpnEcmpSupport(v string) *ModifyTransitGatewayOptions { s.VpnEcmpSupport = &v @@ -94048,6 +98278,13 @@ type ModifyVolumeInput struct { // Default: If no IOPS value is specified, the existing value is retained. Iops *int64 `type:"integer"` + // Specifies whether to enable Amazon EBS Multi-Attach. If you enable Multi-Attach, + // you can attach the volume to up to 16 Nitro-based instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) + // in the same Availability Zone. This parameter is supported with io1 and io2 + // volumes only. For more information, see Amazon EBS Multi-Attach (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html) + // in the Amazon Elastic Compute Cloud User Guide. + MultiAttachEnabled *bool `type:"boolean"` + // The target size of the volume, in GiB. The target volume size must be greater // than or equal to the existing size of the volume. // @@ -94120,6 +98357,12 @@ func (s *ModifyVolumeInput) SetIops(v int64) *ModifyVolumeInput { return s } +// SetMultiAttachEnabled sets the MultiAttachEnabled field's value. +func (s *ModifyVolumeInput) SetMultiAttachEnabled(v bool) *ModifyVolumeInput { + s.MultiAttachEnabled = &v + return s +} + // SetSize sets the Size field's value. func (s *ModifyVolumeInput) SetSize(v int64) *ModifyVolumeInput { s.Size = &v @@ -96372,6 +100615,244 @@ func (s *NetworkInfo) SetNetworkPerformance(v string) *NetworkInfo { return s } +// Describes a network insights analysis. +type NetworkInsightsAnalysis struct { + _ struct{} `type:"structure"` + + // Potential intermediate components. + AlternatePathHints []*AlternatePathHint `locationName:"alternatePathHintSet" locationNameList:"item" type:"list"` + + // The explanations. For more information, see Reachability Analyzer explanation + // codes (https://docs.aws.amazon.com/vpc/latest/reachability/explanation-codes.html). + Explanations []*Explanation `locationName:"explanationSet" locationNameList:"item" type:"list"` + + // The Amazon Resource Names (ARN) of the AWS resources that the path must traverse. + FilterInArns []*string `locationName:"filterInArnSet" locationNameList:"item" type:"list"` + + // The components in the path from source to destination. + ForwardPathComponents []*PathComponent `locationName:"forwardPathComponentSet" locationNameList:"item" type:"list"` + + // The Amazon Resource Name (ARN) of the network insights analysis. + NetworkInsightsAnalysisArn *string `locationName:"networkInsightsAnalysisArn" min:"1" type:"string"` + + // The ID of the network insights analysis. + NetworkInsightsAnalysisId *string `locationName:"networkInsightsAnalysisId" type:"string"` + + // The ID of the path. + NetworkInsightsPathId *string `locationName:"networkInsightsPathId" type:"string"` + + // Indicates whether the destination is reachable from the source. + NetworkPathFound *bool `locationName:"networkPathFound" type:"boolean"` + + // The components in the path from destination to source. + ReturnPathComponents []*PathComponent `locationName:"returnPathComponentSet" locationNameList:"item" type:"list"` + + // The time the analysis started. + StartDate *time.Time `locationName:"startDate" type:"timestamp"` + + // The status of the network insights analysis. + Status *string `locationName:"status" type:"string" enum:"AnalysisStatus"` + + // The status message, if the status is failed. + StatusMessage *string `locationName:"statusMessage" type:"string"` + + // The tags. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s NetworkInsightsAnalysis) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInsightsAnalysis) GoString() string { + return s.String() +} + +// SetAlternatePathHints sets the AlternatePathHints field's value. +func (s *NetworkInsightsAnalysis) SetAlternatePathHints(v []*AlternatePathHint) *NetworkInsightsAnalysis { + s.AlternatePathHints = v + return s +} + +// SetExplanations sets the Explanations field's value. +func (s *NetworkInsightsAnalysis) SetExplanations(v []*Explanation) *NetworkInsightsAnalysis { + s.Explanations = v + return s +} + +// SetFilterInArns sets the FilterInArns field's value. +func (s *NetworkInsightsAnalysis) SetFilterInArns(v []*string) *NetworkInsightsAnalysis { + s.FilterInArns = v + return s +} + +// SetForwardPathComponents sets the ForwardPathComponents field's value. +func (s *NetworkInsightsAnalysis) SetForwardPathComponents(v []*PathComponent) *NetworkInsightsAnalysis { + s.ForwardPathComponents = v + return s +} + +// SetNetworkInsightsAnalysisArn sets the NetworkInsightsAnalysisArn field's value. +func (s *NetworkInsightsAnalysis) SetNetworkInsightsAnalysisArn(v string) *NetworkInsightsAnalysis { + s.NetworkInsightsAnalysisArn = &v + return s +} + +// SetNetworkInsightsAnalysisId sets the NetworkInsightsAnalysisId field's value. +func (s *NetworkInsightsAnalysis) SetNetworkInsightsAnalysisId(v string) *NetworkInsightsAnalysis { + s.NetworkInsightsAnalysisId = &v + return s +} + +// SetNetworkInsightsPathId sets the NetworkInsightsPathId field's value. +func (s *NetworkInsightsAnalysis) SetNetworkInsightsPathId(v string) *NetworkInsightsAnalysis { + s.NetworkInsightsPathId = &v + return s +} + +// SetNetworkPathFound sets the NetworkPathFound field's value. +func (s *NetworkInsightsAnalysis) SetNetworkPathFound(v bool) *NetworkInsightsAnalysis { + s.NetworkPathFound = &v + return s +} + +// SetReturnPathComponents sets the ReturnPathComponents field's value. +func (s *NetworkInsightsAnalysis) SetReturnPathComponents(v []*PathComponent) *NetworkInsightsAnalysis { + s.ReturnPathComponents = v + return s +} + +// SetStartDate sets the StartDate field's value. +func (s *NetworkInsightsAnalysis) SetStartDate(v time.Time) *NetworkInsightsAnalysis { + s.StartDate = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *NetworkInsightsAnalysis) SetStatus(v string) *NetworkInsightsAnalysis { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *NetworkInsightsAnalysis) SetStatusMessage(v string) *NetworkInsightsAnalysis { + s.StatusMessage = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *NetworkInsightsAnalysis) SetTags(v []*Tag) *NetworkInsightsAnalysis { + s.Tags = v + return s +} + +// Describes a path. +type NetworkInsightsPath struct { + _ struct{} `type:"structure"` + + // The time stamp when the path was created. + CreatedDate *time.Time `locationName:"createdDate" type:"timestamp"` + + // The AWS resource that is the destination of the path. + Destination *string `locationName:"destination" type:"string"` + + // The IP address of the AWS resource that is the destination of the path. + DestinationIp *string `locationName:"destinationIp" type:"string"` + + // The destination port. + DestinationPort *int64 `locationName:"destinationPort" type:"integer"` + + // The Amazon Resource Name (ARN) of the path. + NetworkInsightsPathArn *string `locationName:"networkInsightsPathArn" min:"1" type:"string"` + + // The ID of the path. + NetworkInsightsPathId *string `locationName:"networkInsightsPathId" type:"string"` + + // The protocol. + Protocol *string `locationName:"protocol" type:"string" enum:"Protocol"` + + // The AWS resource that is the source of the path. + Source *string `locationName:"source" type:"string"` + + // The IP address of the AWS resource that is the source of the path. + SourceIp *string `locationName:"sourceIp" type:"string"` + + // The tags associated with the path. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s NetworkInsightsPath) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s NetworkInsightsPath) GoString() string { + return s.String() +} + +// SetCreatedDate sets the CreatedDate field's value. +func (s *NetworkInsightsPath) SetCreatedDate(v time.Time) *NetworkInsightsPath { + s.CreatedDate = &v + return s +} + +// SetDestination sets the Destination field's value. +func (s *NetworkInsightsPath) SetDestination(v string) *NetworkInsightsPath { + s.Destination = &v + return s +} + +// SetDestinationIp sets the DestinationIp field's value. +func (s *NetworkInsightsPath) SetDestinationIp(v string) *NetworkInsightsPath { + s.DestinationIp = &v + return s +} + +// SetDestinationPort sets the DestinationPort field's value. +func (s *NetworkInsightsPath) SetDestinationPort(v int64) *NetworkInsightsPath { + s.DestinationPort = &v + return s +} + +// SetNetworkInsightsPathArn sets the NetworkInsightsPathArn field's value. +func (s *NetworkInsightsPath) SetNetworkInsightsPathArn(v string) *NetworkInsightsPath { + s.NetworkInsightsPathArn = &v + return s +} + +// SetNetworkInsightsPathId sets the NetworkInsightsPathId field's value. +func (s *NetworkInsightsPath) SetNetworkInsightsPathId(v string) *NetworkInsightsPath { + s.NetworkInsightsPathId = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *NetworkInsightsPath) SetProtocol(v string) *NetworkInsightsPath { + s.Protocol = &v + return s +} + +// SetSource sets the Source field's value. +func (s *NetworkInsightsPath) SetSource(v string) *NetworkInsightsPath { + s.Source = &v + return s +} + +// SetSourceIp sets the SourceIp field's value. +func (s *NetworkInsightsPath) SetSourceIp(v string) *NetworkInsightsPath { + s.SourceIp = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *NetworkInsightsPath) SetTags(v []*Tag) *NetworkInsightsPath { + s.Tags = v + return s +} + // Describes a network interface. type NetworkInterface struct { _ struct{} `type:"structure"` @@ -96419,8 +100900,8 @@ type NetworkInterface struct { // The private IPv4 addresses associated with the network interface. PrivateIpAddresses []*NetworkInterfacePrivateIpAddress `locationName:"privateIpAddressesSet" locationNameList:"item" type:"list"` - // The ID of the entity that launched the instance on your behalf (for example, - // AWS Management Console or Auto Scaling). + // The alias or AWS account ID of the principal or service that created the + // network interface. RequesterId *string `locationName:"requesterId" type:"string"` // Indicates whether the network interface is being managed by AWS. @@ -97148,6 +101629,120 @@ func (s *OnDemandOptionsRequest) SetSingleInstanceType(v bool) *OnDemandOptionsR return s } +// Describes a path component. +type PathComponent struct { + _ struct{} `type:"structure"` + + // The network ACL rule. + AclRule *AnalysisAclRule `locationName:"aclRule" type:"structure"` + + // The component. + Component *AnalysisComponent `locationName:"component" type:"structure"` + + // The destination VPC. + DestinationVpc *AnalysisComponent `locationName:"destinationVpc" type:"structure"` + + // The inbound header. + InboundHeader *AnalysisPacketHeader `locationName:"inboundHeader" type:"structure"` + + // The outbound header. + OutboundHeader *AnalysisPacketHeader `locationName:"outboundHeader" type:"structure"` + + // The route table route. + RouteTableRoute *AnalysisRouteTableRoute `locationName:"routeTableRoute" type:"structure"` + + // The security group rule. + SecurityGroupRule *AnalysisSecurityGroupRule `locationName:"securityGroupRule" type:"structure"` + + // The sequence number. + SequenceNumber *int64 `locationName:"sequenceNumber" type:"integer"` + + // The source VPC. + SourceVpc *AnalysisComponent `locationName:"sourceVpc" type:"structure"` + + // The subnet. + Subnet *AnalysisComponent `locationName:"subnet" type:"structure"` + + // The component VPC. + Vpc *AnalysisComponent `locationName:"vpc" type:"structure"` +} + +// String returns the string representation +func (s PathComponent) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PathComponent) GoString() string { + return s.String() +} + +// SetAclRule sets the AclRule field's value. +func (s *PathComponent) SetAclRule(v *AnalysisAclRule) *PathComponent { + s.AclRule = v + return s +} + +// SetComponent sets the Component field's value. +func (s *PathComponent) SetComponent(v *AnalysisComponent) *PathComponent { + s.Component = v + return s +} + +// SetDestinationVpc sets the DestinationVpc field's value. +func (s *PathComponent) SetDestinationVpc(v *AnalysisComponent) *PathComponent { + s.DestinationVpc = v + return s +} + +// SetInboundHeader sets the InboundHeader field's value. +func (s *PathComponent) SetInboundHeader(v *AnalysisPacketHeader) *PathComponent { + s.InboundHeader = v + return s +} + +// SetOutboundHeader sets the OutboundHeader field's value. +func (s *PathComponent) SetOutboundHeader(v *AnalysisPacketHeader) *PathComponent { + s.OutboundHeader = v + return s +} + +// SetRouteTableRoute sets the RouteTableRoute field's value. +func (s *PathComponent) SetRouteTableRoute(v *AnalysisRouteTableRoute) *PathComponent { + s.RouteTableRoute = v + return s +} + +// SetSecurityGroupRule sets the SecurityGroupRule field's value. +func (s *PathComponent) SetSecurityGroupRule(v *AnalysisSecurityGroupRule) *PathComponent { + s.SecurityGroupRule = v + return s +} + +// SetSequenceNumber sets the SequenceNumber field's value. +func (s *PathComponent) SetSequenceNumber(v int64) *PathComponent { + s.SequenceNumber = &v + return s +} + +// SetSourceVpc sets the SourceVpc field's value. +func (s *PathComponent) SetSourceVpc(v *AnalysisComponent) *PathComponent { + s.SourceVpc = v + return s +} + +// SetSubnet sets the Subnet field's value. +func (s *PathComponent) SetSubnet(v *AnalysisComponent) *PathComponent { + s.Subnet = v + return s +} + +// SetVpc sets the Vpc field's value. +func (s *PathComponent) SetVpc(v *AnalysisComponent) *PathComponent { + s.Vpc = v + return s +} + // Describes the data that identifies an Amazon FPGA image (AFI) on the PCI // bus. type PciId struct { @@ -98660,6 +103255,48 @@ func (s *ProvisionedBandwidth) SetStatus(v string) *ProvisionedBandwidth { return s } +// The status of an updated pointer (PTR) record for an Elastic IP address. +type PtrUpdateStatus struct { + _ struct{} `type:"structure"` + + // The reason for the PTR record update. + Reason *string `locationName:"reason" type:"string"` + + // The status of the PTR record update. + Status *string `locationName:"status" type:"string"` + + // The value for the PTR record update. + Value *string `locationName:"value" type:"string"` +} + +// String returns the string representation +func (s PtrUpdateStatus) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s PtrUpdateStatus) GoString() string { + return s.String() +} + +// SetReason sets the Reason field's value. +func (s *PtrUpdateStatus) SetReason(v string) *PtrUpdateStatus { + s.Reason = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *PtrUpdateStatus) SetStatus(v string) *PtrUpdateStatus { + s.Status = &v + return s +} + +// SetValue sets the Value field's value. +func (s *PtrUpdateStatus) SetValue(v string) *PtrUpdateStatus { + s.Value = &v + return s +} + // Describes an IPv4 address pool. type PublicIpv4Pool struct { _ struct{} `type:"structure"` @@ -98884,7 +103521,7 @@ type PurchaseHostReservationInput struct { _ struct{} `type:"structure"` // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). ClientToken *string `type:"string"` // The currency in which the totalUpfrontPrice, LimitPrice, and totalHourlyPrice @@ -98979,7 +103616,7 @@ type PurchaseHostReservationOutput struct { _ struct{} `type:"structure"` // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + // of the request. For more information, see Ensuring Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). ClientToken *string `locationName:"clientToken" type:"string"` // The currency in which the totalUpfrontPrice and totalHourlyPrice amounts @@ -99453,6 +104090,15 @@ type RegisterImageInput struct { BillingProducts []*string `locationName:"BillingProduct" locationNameList:"item" type:"list"` // The block device mapping entries. + // + // If you specify an EBS volume using the ID of an EBS snapshot, you can't specify + // the encryption state of the volume. + // + // If you create an AMI on an Outpost, then all backing snapshots must be on + // the same Outpost or in the Region of that Outpost. AMIs on an Outpost that + // include local snapshots can be used to launch instances on the same Outpost + // only. For more information, Amazon EBS local snapshots on Outposts (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html#ami) + // in the Amazon Elastic Compute Cloud User Guide. BlockDeviceMappings []*BlockDeviceMapping `locationName:"BlockDeviceMapping" locationNameList:"BlockDeviceMapping" type:"list"` // A description for your AMI. @@ -99885,6 +104531,82 @@ func (s *RegisterTransitGatewayMulticastGroupSourcesOutput) SetRegisteredMultica return s } +type RejectTransitGatewayMulticastDomainAssociationsInput struct { + _ struct{} `type:"structure"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The IDs of the subnets to associate with the transit gateway multicast domain. + SubnetIds []*string `locationNameList:"item" type:"list"` + + // The ID of the transit gateway attachment. + TransitGatewayAttachmentId *string `type:"string"` + + // The ID of the transit gateway multicast domain. + TransitGatewayMulticastDomainId *string `type:"string"` +} + +// String returns the string representation +func (s RejectTransitGatewayMulticastDomainAssociationsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectTransitGatewayMulticastDomainAssociationsInput) GoString() string { + return s.String() +} + +// SetDryRun sets the DryRun field's value. +func (s *RejectTransitGatewayMulticastDomainAssociationsInput) SetDryRun(v bool) *RejectTransitGatewayMulticastDomainAssociationsInput { + s.DryRun = &v + return s +} + +// SetSubnetIds sets the SubnetIds field's value. +func (s *RejectTransitGatewayMulticastDomainAssociationsInput) SetSubnetIds(v []*string) *RejectTransitGatewayMulticastDomainAssociationsInput { + s.SubnetIds = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *RejectTransitGatewayMulticastDomainAssociationsInput) SetTransitGatewayAttachmentId(v string) *RejectTransitGatewayMulticastDomainAssociationsInput { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayMulticastDomainId sets the TransitGatewayMulticastDomainId field's value. +func (s *RejectTransitGatewayMulticastDomainAssociationsInput) SetTransitGatewayMulticastDomainId(v string) *RejectTransitGatewayMulticastDomainAssociationsInput { + s.TransitGatewayMulticastDomainId = &v + return s +} + +type RejectTransitGatewayMulticastDomainAssociationsOutput struct { + _ struct{} `type:"structure"` + + // Describes the multicast domain associations. + Associations *TransitGatewayMulticastDomainAssociations `locationName:"associations" type:"structure"` +} + +// String returns the string representation +func (s RejectTransitGatewayMulticastDomainAssociationsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RejectTransitGatewayMulticastDomainAssociationsOutput) GoString() string { + return s.String() +} + +// SetAssociations sets the Associations field's value. +func (s *RejectTransitGatewayMulticastDomainAssociationsOutput) SetAssociations(v *TransitGatewayMulticastDomainAssociations) *RejectTransitGatewayMulticastDomainAssociationsOutput { + s.Associations = v + return s +} + type RejectTransitGatewayPeeringAttachmentInput struct { _ struct{} `type:"structure"` @@ -101294,7 +106016,7 @@ type RequestLaunchTemplateData struct { // in the Amazon Elastic Compute Cloud User Guide. HibernationOptions *LaunchTemplateHibernationOptionsRequest `type:"structure"` - // The IAM instance profile. + // The name or Amazon Resource Name (ARN) of an IAM instance profile. IamInstanceProfile *LaunchTemplateIamInstanceProfileSpecificationRequest `type:"structure"` // The ID of the AMI. @@ -102927,6 +107649,93 @@ func (s *ReservedInstancesOffering) SetUsagePrice(v float64) *ReservedInstancesO return s } +type ResetAddressAttributeInput struct { + _ struct{} `type:"structure"` + + // [EC2-VPC] The allocation ID. + // + // AllocationId is a required field + AllocationId *string `type:"string" required:"true"` + + // The attribute of the IP address. + // + // Attribute is a required field + Attribute *string `type:"string" required:"true" enum:"AddressAttributeName"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` +} + +// String returns the string representation +func (s ResetAddressAttributeInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetAddressAttributeInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ResetAddressAttributeInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ResetAddressAttributeInput"} + if s.AllocationId == nil { + invalidParams.Add(request.NewErrParamRequired("AllocationId")) + } + if s.Attribute == nil { + invalidParams.Add(request.NewErrParamRequired("Attribute")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAllocationId sets the AllocationId field's value. +func (s *ResetAddressAttributeInput) SetAllocationId(v string) *ResetAddressAttributeInput { + s.AllocationId = &v + return s +} + +// SetAttribute sets the Attribute field's value. +func (s *ResetAddressAttributeInput) SetAttribute(v string) *ResetAddressAttributeInput { + s.Attribute = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *ResetAddressAttributeInput) SetDryRun(v bool) *ResetAddressAttributeInput { + s.DryRun = &v + return s +} + +type ResetAddressAttributeOutput struct { + _ struct{} `type:"structure"` + + // Information about the IP address. + Address *AddressAttribute `locationName:"address" type:"structure"` +} + +// String returns the string representation +func (s ResetAddressAttributeOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResetAddressAttributeOutput) GoString() string { + return s.String() +} + +// SetAddress sets the Address field's value. +func (s *ResetAddressAttributeOutput) SetAddress(v *AddressAttribute) *ResetAddressAttributeOutput { + s.Address = v + return s +} + type ResetEbsDefaultKmsKeyIdInput struct { _ struct{} `type:"structure"` @@ -104635,14 +109444,14 @@ type RunInstancesInput struct { // The CPU options for the instance. For more information, see Optimizing CPU // options (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. CpuOptions *CpuOptionsRequest `type:"structure"` // The credit option for CPU usage of the burstable performance instance. Valid // values are standard and unlimited. To change this attribute after launch, // use ModifyInstanceCreditSpecification (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceCreditSpecification.html). // For more information, see Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. // // Default: standard (T2 instances) or unlimited (T3/T3a instances) CreditSpecification *CreditSpecificationRequest `type:"structure"` @@ -104674,7 +109483,7 @@ type RunInstancesInput struct { // An elastic GPU to associate with the instance. An Elastic GPU is a GPU resource // that you can attach to your Windows instance to accelerate the graphics performance // of your applications. For more information, see Amazon EC2 Elastic GPUs (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-graphics.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. ElasticGpuSpecification []*ElasticGpuSpecification `locationNameList:"item" type:"list"` // An elastic inference accelerator to associate with the instance. Elastic @@ -104693,12 +109502,12 @@ type RunInstancesInput struct { // Indicates whether an instance is enabled for hibernation. For more information, // see Hibernate your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. // // You can't enable hibernation and AWS Nitro Enclaves on the same instance. HibernationOptions *HibernationOptionsRequest `type:"structure"` - // The IAM instance profile. + // The name or Amazon Resource Name (ARN) of an IAM instance profile. IamInstanceProfile *IamInstanceProfileSpecification `locationName:"iamInstanceProfile" type:"structure"` // The ID of the AMI. An AMI ID is required to launch an instance and must be @@ -104718,7 +109527,7 @@ type RunInstancesInput struct { InstanceMarketOptions *InstanceMarketOptionsRequest `type:"structure"` // The instance type. For more information, see Instance types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. // // Default: m1.small InstanceType *string `type:"string" enum:"InstanceType"` @@ -104746,7 +109555,7 @@ type RunInstancesInput struct { // // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more // information, see PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. KernelId *string `type:"string"` // The name of the key pair. You can create a key pair using CreateKeyPair (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html) @@ -104822,7 +109631,7 @@ type RunInstancesInput struct { // // We recommend that you use PV-GRUB instead of kernels and RAM disks. For more // information, see PV-GRUB (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. RamdiskId *string `type:"string"` // The IDs of the security groups. You can create a security group using CreateSecurityGroup @@ -105789,8 +110598,7 @@ type ScheduledInstancesBlockDeviceMapping struct { // launched. Ebs *ScheduledInstancesEbs `type:"structure"` - // Suppresses the specified device included in the block device mapping of the - // AMI. + // To omit the device from the block device mapping, specify an empty string. NoDevice *string `type:"string"` // The virtual device name (ephemeralN). Instance store volumes are numbered @@ -105854,10 +110662,11 @@ type ScheduledInstancesEbs struct { // The number of I/O operations per second (IOPS) to provision for an io1 or // io2 volume, with a maximum ratio of 50 IOPS/GiB for io1, and 500 IOPS/GiB // for io2. Range is 100 to 64,000 IOPS for volumes in most Regions. Maximum - // IOPS of 64,000 is guaranteed only on Nitro-based instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). + // IOPS of 64,000 is guaranteed only on instances built on the Nitro System + // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). // Other instance families guarantee performance up to 32,000 IOPS. For more - // information, see Amazon EBS Volume Types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) - // in the Amazon Elastic Compute Cloud User Guide. + // information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) + // in the Amazon EC2 User Guide. // // This parameter is valid only for Provisioned IOPS SSD (io1 and io2) volumes. Iops *int64 `type:"integer"` @@ -106633,7 +111442,7 @@ type SearchTransitGatewayRoutesInput struct { // * attachment.resource-id - The resource id of the transit gateway attachment. // // * attachment.resource-type - The attachment resource type. Valid values - // are vpc | vpn | direct-connect-gateway | peering. + // are vpc | vpn | direct-connect-gateway | peering | connect. // // * prefix-list-id - The ID of the prefix list. // @@ -107384,6 +112193,11 @@ type Snapshot struct { // key for the parent volume. KmsKeyId *string `locationName:"kmsKeyId" type:"string"` + // The ARN of the AWS Outpost on which the snapshot is stored. For more information, + // see EBS Local Snapshot on Outposts (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html) + // in the Amazon Elastic Compute Cloud User Guide. + OutpostArn *string `locationName:"outpostArn" type:"string"` + // The AWS owner alias, from an Amazon-maintained list (amazon). This is not // the user-configured AWS account alias set using the IAM console. OwnerAlias *string `locationName:"ownerAlias" type:"string"` @@ -107457,6 +112271,12 @@ func (s *Snapshot) SetKmsKeyId(v string) *Snapshot { return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *Snapshot) SetOutpostArn(v string) *Snapshot { + s.OutpostArn = &v + return s +} + // SetOwnerAlias sets the OwnerAlias field's value. func (s *Snapshot) SetOwnerAlias(v string) *Snapshot { s.OwnerAlias = &v @@ -107631,7 +112451,7 @@ type SnapshotDiskContainer struct { // The format of the disk image being imported. // - // Valid values: VHD | VMDK + // Valid values: VHD | VMDK | RAW Format *string `type:"string"` // The URL to the Amazon S3-based disk image being imported. It can either be @@ -107687,6 +112507,11 @@ type SnapshotInfo struct { // Indicates whether the snapshot is encrypted. Encrypted *bool `locationName:"encrypted" type:"boolean"` + // The ARN of the AWS Outpost on which the snapshot is stored. For more information, + // see EBS Local Snapshot on Outposts (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html) + // in the Amazon Elastic Compute Cloud User Guide. + OutpostArn *string `locationName:"outpostArn" type:"string"` + // Account id used when creating this snapshot. OwnerId *string `locationName:"ownerId" type:"string"` @@ -107735,6 +112560,12 @@ func (s *SnapshotInfo) SetEncrypted(v bool) *SnapshotInfo { return s } +// SetOutpostArn sets the OutpostArn field's value. +func (s *SnapshotInfo) SetOutpostArn(v string) *SnapshotInfo { + s.OutpostArn = &v + return s +} + // SetOwnerId sets the OwnerId field's value. func (s *SnapshotInfo) SetOwnerId(v string) *SnapshotInfo { s.OwnerId = &v @@ -109025,8 +113856,8 @@ type SpotMarketOptions struct { MaxPrice *string `type:"string"` // The Spot Instance request type. For RunInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances), - // persistent Spot Instance requests are only supported when InstanceInterruptionBehavior - // is set to either hibernate or stop. + // persistent Spot Instance requests are only supported when the instance interruption + // behavior is either hibernate or stop. SpotInstanceType *string `type:"string" enum:"SpotInstanceType"` // The end date of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ). Supported @@ -109625,6 +114456,107 @@ func (s *StartInstancesOutput) SetStartingInstances(v []*InstanceStateChange) *S return s } +type StartNetworkInsightsAnalysisInput struct { + _ struct{} `type:"structure"` + + // Unique, case-sensitive identifier that you provide to ensure the idempotency + // of the request. For more information, see How to Ensure Idempotency (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html). + ClientToken *string `type:"string" idempotencyToken:"true"` + + // Checks whether you have the required permissions for the action, without + // actually making the request, and provides an error response. If you have + // the required permissions, the error response is DryRunOperation. Otherwise, + // it is UnauthorizedOperation. + DryRun *bool `type:"boolean"` + + // The Amazon Resource Names (ARN) of the resources that the path must traverse. + FilterInArns []*string `locationName:"FilterInArn" locationNameList:"item" type:"list"` + + // The ID of the path. + // + // NetworkInsightsPathId is a required field + NetworkInsightsPathId *string `type:"string" required:"true"` + + // The tags to apply. + TagSpecifications []*TagSpecification `locationName:"TagSpecification" locationNameList:"item" type:"list"` +} + +// String returns the string representation +func (s StartNetworkInsightsAnalysisInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartNetworkInsightsAnalysisInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StartNetworkInsightsAnalysisInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StartNetworkInsightsAnalysisInput"} + if s.NetworkInsightsPathId == nil { + invalidParams.Add(request.NewErrParamRequired("NetworkInsightsPathId")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetClientToken sets the ClientToken field's value. +func (s *StartNetworkInsightsAnalysisInput) SetClientToken(v string) *StartNetworkInsightsAnalysisInput { + s.ClientToken = &v + return s +} + +// SetDryRun sets the DryRun field's value. +func (s *StartNetworkInsightsAnalysisInput) SetDryRun(v bool) *StartNetworkInsightsAnalysisInput { + s.DryRun = &v + return s +} + +// SetFilterInArns sets the FilterInArns field's value. +func (s *StartNetworkInsightsAnalysisInput) SetFilterInArns(v []*string) *StartNetworkInsightsAnalysisInput { + s.FilterInArns = v + return s +} + +// SetNetworkInsightsPathId sets the NetworkInsightsPathId field's value. +func (s *StartNetworkInsightsAnalysisInput) SetNetworkInsightsPathId(v string) *StartNetworkInsightsAnalysisInput { + s.NetworkInsightsPathId = &v + return s +} + +// SetTagSpecifications sets the TagSpecifications field's value. +func (s *StartNetworkInsightsAnalysisInput) SetTagSpecifications(v []*TagSpecification) *StartNetworkInsightsAnalysisInput { + s.TagSpecifications = v + return s +} + +type StartNetworkInsightsAnalysisOutput struct { + _ struct{} `type:"structure"` + + // Information about the network insights analysis. + NetworkInsightsAnalysis *NetworkInsightsAnalysis `locationName:"networkInsightsAnalysis" type:"structure"` +} + +// String returns the string representation +func (s StartNetworkInsightsAnalysisOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartNetworkInsightsAnalysisOutput) GoString() string { + return s.String() +} + +// SetNetworkInsightsAnalysis sets the NetworkInsightsAnalysis field's value. +func (s *StartNetworkInsightsAnalysisOutput) SetNetworkInsightsAnalysis(v *NetworkInsightsAnalysis) *StartNetworkInsightsAnalysisOutput { + s.NetworkInsightsAnalysis = v + return s +} + type StartVpcEndpointServicePrivateDnsVerificationInput struct { _ struct{} `type:"structure"` @@ -109789,7 +114721,7 @@ type StopInstancesInput struct { // Hibernates the instance if the instance was enabled for hibernation at launch. // If the instance cannot hibernate successfully, a normal shutdown occurs. // For more information, see Hibernate your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) - // in the Amazon Elastic Compute Cloud User Guide. + // in the Amazon EC2 User Guide. // // Default: false Hibernate *bool `type:"boolean"` @@ -110353,14 +115285,16 @@ type TagSpecification struct { // The type of resource to tag. Currently, the resource types that support tagging // on creation are: capacity-reservation | carrier-gateway | client-vpn-endpoint - // | customer-gateway | dedicated-host | dhcp-options | export-image-task | - // export-instance-task | fleet | fpga-image | host-reservation | image| import-image-task - // | import-snapshot-task | instance | internet-gateway | ipv4pool-ec2 | ipv6pool-ec2 - // | key-pair | launch-template | placement-group | prefix-list | natgateway - // | network-acl | route-table | security-group| snapshot | spot-fleet-request - // | spot-instances-request | snapshot | subnet | traffic-mirror-filter | traffic-mirror-session - // | traffic-mirror-target | transit-gateway | transit-gateway-attachment | - // transit-gateway-route-table | volume |vpc | vpc-peering-connection | vpc-endpoint + // | customer-gateway | dedicated-host | dhcp-options | egress-only-internet-gateway + // | elastic-ip | elastic-gpu | export-image-task | export-instance-task | fleet + // | fpga-image | host-reservation | image| import-image-task | import-snapshot-task + // | instance | internet-gateway | ipv4pool-ec2 | ipv6pool-ec2 | key-pair | + // launch-template | local-gateway-route-table-vpc-association | placement-group + // | prefix-list | natgateway | network-acl | network-interface | reserved-instances + // |route-table | security-group| snapshot | spot-fleet-request | spot-instances-request + // | snapshot | subnet | traffic-mirror-filter | traffic-mirror-session | traffic-mirror-target + // | transit-gateway | transit-gateway-attachment | transit-gateway-multicast-domain + // | transit-gateway-route-table | volume |vpc | vpc-peering-connection | vpc-endpoint // (for interface and gateway endpoints) | vpc-endpoint-service (for AWS PrivateLink) // | vpc-flow-log | vpn-connection | vpn-gateway. // @@ -110407,7 +115341,7 @@ func (s *TagSpecification) SetTags(v []*Tag) *TagSpecification { // you're willing to pay is reached, the fleet stops launching instances even // if it hasn’t met the target capacity. The MaxTotalPrice parameters are // located in OnDemandOptions (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_OnDemandOptions.html) -// and SpotOptions (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotOptions) +// and SpotOptions (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotOptions). type TargetCapacitySpecification struct { _ struct{} `type:"structure"` @@ -111751,6 +116685,66 @@ func (s *TransitGatewayAttachmentAssociation) SetTransitGatewayRouteTableId(v st return s } +// The BGP configuration information. +type TransitGatewayAttachmentBgpConfiguration struct { + _ struct{} `type:"structure"` + + // The BGP status. + BgpStatus *string `locationName:"bgpStatus" type:"string" enum:"BgpStatus"` + + // The interior BGP peer IP address for the appliance. + PeerAddress *string `locationName:"peerAddress" type:"string"` + + // The peer Autonomous System Number (ASN). + PeerAsn *int64 `locationName:"peerAsn" type:"long"` + + // The interior BGP peer IP address for the transit gateway. + TransitGatewayAddress *string `locationName:"transitGatewayAddress" type:"string"` + + // The transit gateway Autonomous System Number (ASN). + TransitGatewayAsn *int64 `locationName:"transitGatewayAsn" type:"long"` +} + +// String returns the string representation +func (s TransitGatewayAttachmentBgpConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayAttachmentBgpConfiguration) GoString() string { + return s.String() +} + +// SetBgpStatus sets the BgpStatus field's value. +func (s *TransitGatewayAttachmentBgpConfiguration) SetBgpStatus(v string) *TransitGatewayAttachmentBgpConfiguration { + s.BgpStatus = &v + return s +} + +// SetPeerAddress sets the PeerAddress field's value. +func (s *TransitGatewayAttachmentBgpConfiguration) SetPeerAddress(v string) *TransitGatewayAttachmentBgpConfiguration { + s.PeerAddress = &v + return s +} + +// SetPeerAsn sets the PeerAsn field's value. +func (s *TransitGatewayAttachmentBgpConfiguration) SetPeerAsn(v int64) *TransitGatewayAttachmentBgpConfiguration { + s.PeerAsn = &v + return s +} + +// SetTransitGatewayAddress sets the TransitGatewayAddress field's value. +func (s *TransitGatewayAttachmentBgpConfiguration) SetTransitGatewayAddress(v string) *TransitGatewayAttachmentBgpConfiguration { + s.TransitGatewayAddress = &v + return s +} + +// SetTransitGatewayAsn sets the TransitGatewayAsn field's value. +func (s *TransitGatewayAttachmentBgpConfiguration) SetTransitGatewayAsn(v int64) *TransitGatewayAttachmentBgpConfiguration { + s.TransitGatewayAsn = &v + return s +} + // Describes a propagation route table. type TransitGatewayAttachmentPropagation struct { _ struct{} `type:"structure"` @@ -111784,6 +116778,261 @@ func (s *TransitGatewayAttachmentPropagation) SetTransitGatewayRouteTableId(v st return s } +// Describes a transit gateway Connect attachment. +type TransitGatewayConnect struct { + _ struct{} `type:"structure"` + + // The creation time. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // The Connect attachment options. + Options *TransitGatewayConnectOptions `locationName:"options" type:"structure"` + + // The state of the attachment. + State *string `locationName:"state" type:"string" enum:"TransitGatewayAttachmentState"` + + // The tags for the attachment. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the Connect attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` + + // The ID of the transit gateway. + TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + + // The ID of the attachment from which the Connect attachment was created. + TransportTransitGatewayAttachmentId *string `locationName:"transportTransitGatewayAttachmentId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayConnect) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayConnect) GoString() string { + return s.String() +} + +// SetCreationTime sets the CreationTime field's value. +func (s *TransitGatewayConnect) SetCreationTime(v time.Time) *TransitGatewayConnect { + s.CreationTime = &v + return s +} + +// SetOptions sets the Options field's value. +func (s *TransitGatewayConnect) SetOptions(v *TransitGatewayConnectOptions) *TransitGatewayConnect { + s.Options = v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayConnect) SetState(v string) *TransitGatewayConnect { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TransitGatewayConnect) SetTags(v []*Tag) *TransitGatewayConnect { + s.Tags = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayConnect) SetTransitGatewayAttachmentId(v string) *TransitGatewayConnect { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayId sets the TransitGatewayId field's value. +func (s *TransitGatewayConnect) SetTransitGatewayId(v string) *TransitGatewayConnect { + s.TransitGatewayId = &v + return s +} + +// SetTransportTransitGatewayAttachmentId sets the TransportTransitGatewayAttachmentId field's value. +func (s *TransitGatewayConnect) SetTransportTransitGatewayAttachmentId(v string) *TransitGatewayConnect { + s.TransportTransitGatewayAttachmentId = &v + return s +} + +// Describes the Connect attachment options. +type TransitGatewayConnectOptions struct { + _ struct{} `type:"structure"` + + // The tunnel protocol. + Protocol *string `locationName:"protocol" type:"string" enum:"ProtocolValue"` +} + +// String returns the string representation +func (s TransitGatewayConnectOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayConnectOptions) GoString() string { + return s.String() +} + +// SetProtocol sets the Protocol field's value. +func (s *TransitGatewayConnectOptions) SetProtocol(v string) *TransitGatewayConnectOptions { + s.Protocol = &v + return s +} + +// Describes a transit gateway Connect peer. +type TransitGatewayConnectPeer struct { + _ struct{} `type:"structure"` + + // The Connect peer details. + ConnectPeerConfiguration *TransitGatewayConnectPeerConfiguration `locationName:"connectPeerConfiguration" type:"structure"` + + // The creation time. + CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + + // The state of the Connect peer. + State *string `locationName:"state" type:"string" enum:"TransitGatewayConnectPeerState"` + + // The tags for the Connect peer. + Tags []*Tag `locationName:"tagSet" locationNameList:"item" type:"list"` + + // The ID of the Connect attachment. + TransitGatewayAttachmentId *string `locationName:"transitGatewayAttachmentId" type:"string"` + + // The ID of the Connect peer. + TransitGatewayConnectPeerId *string `locationName:"transitGatewayConnectPeerId" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayConnectPeer) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayConnectPeer) GoString() string { + return s.String() +} + +// SetConnectPeerConfiguration sets the ConnectPeerConfiguration field's value. +func (s *TransitGatewayConnectPeer) SetConnectPeerConfiguration(v *TransitGatewayConnectPeerConfiguration) *TransitGatewayConnectPeer { + s.ConnectPeerConfiguration = v + return s +} + +// SetCreationTime sets the CreationTime field's value. +func (s *TransitGatewayConnectPeer) SetCreationTime(v time.Time) *TransitGatewayConnectPeer { + s.CreationTime = &v + return s +} + +// SetState sets the State field's value. +func (s *TransitGatewayConnectPeer) SetState(v string) *TransitGatewayConnectPeer { + s.State = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TransitGatewayConnectPeer) SetTags(v []*Tag) *TransitGatewayConnectPeer { + s.Tags = v + return s +} + +// SetTransitGatewayAttachmentId sets the TransitGatewayAttachmentId field's value. +func (s *TransitGatewayConnectPeer) SetTransitGatewayAttachmentId(v string) *TransitGatewayConnectPeer { + s.TransitGatewayAttachmentId = &v + return s +} + +// SetTransitGatewayConnectPeerId sets the TransitGatewayConnectPeerId field's value. +func (s *TransitGatewayConnectPeer) SetTransitGatewayConnectPeerId(v string) *TransitGatewayConnectPeer { + s.TransitGatewayConnectPeerId = &v + return s +} + +// Describes the Connect peer details. +type TransitGatewayConnectPeerConfiguration struct { + _ struct{} `type:"structure"` + + // The BGP configuration details. + BgpConfigurations []*TransitGatewayAttachmentBgpConfiguration `locationName:"bgpConfigurations" locationNameList:"item" type:"list"` + + // The range of interior BGP peer IP addresses. + InsideCidrBlocks []*string `locationName:"insideCidrBlocks" locationNameList:"item" type:"list"` + + // The Connect peer IP address on the appliance side of the tunnel. + PeerAddress *string `locationName:"peerAddress" type:"string"` + + // The tunnel protocol. + Protocol *string `locationName:"protocol" type:"string" enum:"ProtocolValue"` + + // The Connect peer IP address on the transit gateway side of the tunnel. + TransitGatewayAddress *string `locationName:"transitGatewayAddress" type:"string"` +} + +// String returns the string representation +func (s TransitGatewayConnectPeerConfiguration) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayConnectPeerConfiguration) GoString() string { + return s.String() +} + +// SetBgpConfigurations sets the BgpConfigurations field's value. +func (s *TransitGatewayConnectPeerConfiguration) SetBgpConfigurations(v []*TransitGatewayAttachmentBgpConfiguration) *TransitGatewayConnectPeerConfiguration { + s.BgpConfigurations = v + return s +} + +// SetInsideCidrBlocks sets the InsideCidrBlocks field's value. +func (s *TransitGatewayConnectPeerConfiguration) SetInsideCidrBlocks(v []*string) *TransitGatewayConnectPeerConfiguration { + s.InsideCidrBlocks = v + return s +} + +// SetPeerAddress sets the PeerAddress field's value. +func (s *TransitGatewayConnectPeerConfiguration) SetPeerAddress(v string) *TransitGatewayConnectPeerConfiguration { + s.PeerAddress = &v + return s +} + +// SetProtocol sets the Protocol field's value. +func (s *TransitGatewayConnectPeerConfiguration) SetProtocol(v string) *TransitGatewayConnectPeerConfiguration { + s.Protocol = &v + return s +} + +// SetTransitGatewayAddress sets the TransitGatewayAddress field's value. +func (s *TransitGatewayConnectPeerConfiguration) SetTransitGatewayAddress(v string) *TransitGatewayConnectPeerConfiguration { + s.TransitGatewayAddress = &v + return s +} + +// The BGP options for the Connect attachment. +type TransitGatewayConnectRequestBgpOptions struct { + _ struct{} `type:"structure"` + + // The peer Autonomous System Number (ASN). + PeerAsn *int64 `type:"long"` +} + +// String returns the string representation +func (s TransitGatewayConnectRequestBgpOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayConnectRequestBgpOptions) GoString() string { + return s.String() +} + +// SetPeerAsn sets the PeerAsn field's value. +func (s *TransitGatewayConnectRequestBgpOptions) SetPeerAsn(v int64) *TransitGatewayConnectRequestBgpOptions { + s.PeerAsn = &v + return s +} + // Describes the deregistered transit gateway multicast group members. type TransitGatewayMulticastDeregisteredGroupMembers struct { _ struct{} `type:"structure"` @@ -111875,6 +117124,12 @@ type TransitGatewayMulticastDomain struct { // The time the transit gateway multicast domain was created. CreationTime *time.Time `locationName:"creationTime" type:"timestamp"` + // The options for the transit gateway multicast domain. + Options *TransitGatewayMulticastDomainOptions `locationName:"options" type:"structure"` + + // The ID of the AWS account that owns the transit gateway multiicast domain. + OwnerId *string `locationName:"ownerId" type:"string"` + // The state of the transit gateway multicast domain. State *string `locationName:"state" type:"string" enum:"TransitGatewayMulticastDomainState"` @@ -111884,6 +117139,9 @@ type TransitGatewayMulticastDomain struct { // The ID of the transit gateway. TransitGatewayId *string `locationName:"transitGatewayId" type:"string"` + // The Amazon Resource Name (ARN) of the transit gateway multicast domain. + TransitGatewayMulticastDomainArn *string `locationName:"transitGatewayMulticastDomainArn" type:"string"` + // The ID of the transit gateway multicast domain. TransitGatewayMulticastDomainId *string `locationName:"transitGatewayMulticastDomainId" type:"string"` } @@ -111904,6 +117162,18 @@ func (s *TransitGatewayMulticastDomain) SetCreationTime(v time.Time) *TransitGat return s } +// SetOptions sets the Options field's value. +func (s *TransitGatewayMulticastDomain) SetOptions(v *TransitGatewayMulticastDomainOptions) *TransitGatewayMulticastDomain { + s.Options = v + return s +} + +// SetOwnerId sets the OwnerId field's value. +func (s *TransitGatewayMulticastDomain) SetOwnerId(v string) *TransitGatewayMulticastDomain { + s.OwnerId = &v + return s +} + // SetState sets the State field's value. func (s *TransitGatewayMulticastDomain) SetState(v string) *TransitGatewayMulticastDomain { s.State = &v @@ -111922,6 +117192,12 @@ func (s *TransitGatewayMulticastDomain) SetTransitGatewayId(v string) *TransitGa return s } +// SetTransitGatewayMulticastDomainArn sets the TransitGatewayMulticastDomainArn field's value. +func (s *TransitGatewayMulticastDomain) SetTransitGatewayMulticastDomainArn(v string) *TransitGatewayMulticastDomain { + s.TransitGatewayMulticastDomainArn = &v + return s +} + // SetTransitGatewayMulticastDomainId sets the TransitGatewayMulticastDomainId field's value. func (s *TransitGatewayMulticastDomain) SetTransitGatewayMulticastDomainId(v string) *TransitGatewayMulticastDomain { s.TransitGatewayMulticastDomainId = &v @@ -111935,6 +117211,10 @@ type TransitGatewayMulticastDomainAssociation struct { // The ID of the resource. ResourceId *string `locationName:"resourceId" type:"string"` + // The ID of the AWS account that owns the transit gateway multicast domain + // association resource. + ResourceOwnerId *string `locationName:"resourceOwnerId" type:"string"` + // The type of resource, for example a VPC attachment. ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` @@ -111961,6 +117241,12 @@ func (s *TransitGatewayMulticastDomainAssociation) SetResourceId(v string) *Tran return s } +// SetResourceOwnerId sets the ResourceOwnerId field's value. +func (s *TransitGatewayMulticastDomainAssociation) SetResourceOwnerId(v string) *TransitGatewayMulticastDomainAssociation { + s.ResourceOwnerId = &v + return s +} + // SetResourceType sets the ResourceType field's value. func (s *TransitGatewayMulticastDomainAssociation) SetResourceType(v string) *TransitGatewayMulticastDomainAssociation { s.ResourceType = &v @@ -111986,6 +117272,9 @@ type TransitGatewayMulticastDomainAssociations struct { // The ID of the resource. ResourceId *string `locationName:"resourceId" type:"string"` + // The ID of the AWS account that owns the resource. + ResourceOwnerId *string `locationName:"resourceOwnerId" type:"string"` + // The type of resource, for example a VPC attachment. ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` @@ -112015,6 +117304,12 @@ func (s *TransitGatewayMulticastDomainAssociations) SetResourceId(v string) *Tra return s } +// SetResourceOwnerId sets the ResourceOwnerId field's value. +func (s *TransitGatewayMulticastDomainAssociations) SetResourceOwnerId(v string) *TransitGatewayMulticastDomainAssociations { + s.ResourceOwnerId = &v + return s +} + // SetResourceType sets the ResourceType field's value. func (s *TransitGatewayMulticastDomainAssociations) SetResourceType(v string) *TransitGatewayMulticastDomainAssociations { s.ResourceType = &v @@ -112039,6 +117334,51 @@ func (s *TransitGatewayMulticastDomainAssociations) SetTransitGatewayMulticastDo return s } +// Describes the options for a transit gateway multicast domain. +type TransitGatewayMulticastDomainOptions struct { + _ struct{} `type:"structure"` + + // Indicates whether to automatically cross-account subnet associations that + // are associated with the transit gateway multicast domain. + AutoAcceptSharedAssociations *string `locationName:"autoAcceptSharedAssociations" type:"string" enum:"AutoAcceptSharedAssociationsValue"` + + // Indicates whether Internet Group Management Protocol (IGMP) version 2 is + // turned on for the transit gateway multicast domain. + Igmpv2Support *string `locationName:"igmpv2Support" type:"string" enum:"Igmpv2SupportValue"` + + // Indicates whether support for statically configuring transit gateway multicast + // group sources is turned on. + StaticSourcesSupport *string `locationName:"staticSourcesSupport" type:"string" enum:"StaticSourcesSupportValue"` +} + +// String returns the string representation +func (s TransitGatewayMulticastDomainOptions) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TransitGatewayMulticastDomainOptions) GoString() string { + return s.String() +} + +// SetAutoAcceptSharedAssociations sets the AutoAcceptSharedAssociations field's value. +func (s *TransitGatewayMulticastDomainOptions) SetAutoAcceptSharedAssociations(v string) *TransitGatewayMulticastDomainOptions { + s.AutoAcceptSharedAssociations = &v + return s +} + +// SetIgmpv2Support sets the Igmpv2Support field's value. +func (s *TransitGatewayMulticastDomainOptions) SetIgmpv2Support(v string) *TransitGatewayMulticastDomainOptions { + s.Igmpv2Support = &v + return s +} + +// SetStaticSourcesSupport sets the StaticSourcesSupport field's value. +func (s *TransitGatewayMulticastDomainOptions) SetStaticSourcesSupport(v string) *TransitGatewayMulticastDomainOptions { + s.StaticSourcesSupport = &v + return s +} + // Describes the transit gateway multicast group resources. type TransitGatewayMulticastGroup struct { _ struct{} `type:"structure"` @@ -112061,6 +117401,10 @@ type TransitGatewayMulticastGroup struct { // The ID of the resource. ResourceId *string `locationName:"resourceId" type:"string"` + // The ID of the AWS account that owns the transit gateway multicast domain + // group resource. + ResourceOwnerId *string `locationName:"resourceOwnerId" type:"string"` + // The type of resource, for example a VPC attachment. ResourceType *string `locationName:"resourceType" type:"string" enum:"TransitGatewayAttachmentResourceType"` @@ -112120,6 +117464,12 @@ func (s *TransitGatewayMulticastGroup) SetResourceId(v string) *TransitGatewayMu return s } +// SetResourceOwnerId sets the ResourceOwnerId field's value. +func (s *TransitGatewayMulticastGroup) SetResourceOwnerId(v string) *TransitGatewayMulticastGroup { + s.ResourceOwnerId = &v + return s +} + // SetResourceType sets the ResourceType field's value. func (s *TransitGatewayMulticastGroup) SetResourceType(v string) *TransitGatewayMulticastGroup { s.ResourceType = &v @@ -112261,6 +117611,9 @@ type TransitGatewayOptions struct { // The ID of the default propagation route table. PropagationDefaultRouteTableId *string `locationName:"propagationDefaultRouteTableId" type:"string"` + // The transit gateway CIDR blocks. + TransitGatewayCidrBlocks []*string `locationName:"transitGatewayCidrBlocks" locationNameList:"item" type:"list"` + // Indicates whether Equal Cost Multipath Protocol support is enabled. VpnEcmpSupport *string `locationName:"vpnEcmpSupport" type:"string" enum:"VpnEcmpSupportValue"` } @@ -112323,6 +117676,12 @@ func (s *TransitGatewayOptions) SetPropagationDefaultRouteTableId(v string) *Tra return s } +// SetTransitGatewayCidrBlocks sets the TransitGatewayCidrBlocks field's value. +func (s *TransitGatewayOptions) SetTransitGatewayCidrBlocks(v []*string) *TransitGatewayOptions { + s.TransitGatewayCidrBlocks = v + return s +} + // SetVpnEcmpSupport sets the VpnEcmpSupport field's value. func (s *TransitGatewayOptions) SetVpnEcmpSupport(v string) *TransitGatewayOptions { s.VpnEcmpSupport = &v @@ -112606,6 +117965,11 @@ type TransitGatewayRequestOptions struct { // Indicates whether multicast is enabled on the transit gateway MulticastSupport *string `type:"string" enum:"MulticastSupportValue"` + // One or more IPv4 or IPv6 CIDR blocks for the transit gateway. Must be a size + // /24 CIDR block or larger for IPv4, or a size /64 CIDR block or larger for + // IPv6. + TransitGatewayCidrBlocks []*string `locationNameList:"item" type:"list"` + // Enable or disable Equal Cost Multipath Protocol support. Enabled by default. VpnEcmpSupport *string `type:"string" enum:"VpnEcmpSupportValue"` } @@ -112656,6 +118020,12 @@ func (s *TransitGatewayRequestOptions) SetMulticastSupport(v string) *TransitGat return s } +// SetTransitGatewayCidrBlocks sets the TransitGatewayCidrBlocks field's value. +func (s *TransitGatewayRequestOptions) SetTransitGatewayCidrBlocks(v []*string) *TransitGatewayRequestOptions { + s.TransitGatewayCidrBlocks = v + return s +} + // SetVpnEcmpSupport sets the VpnEcmpSupport field's value. func (s *TransitGatewayRequestOptions) SetVpnEcmpSupport(v string) *TransitGatewayRequestOptions { s.VpnEcmpSupport = &v @@ -114494,6 +119864,9 @@ type VolumeModification struct { // The original IOPS rate of the volume. OriginalIops *int64 `locationName:"originalIops" type:"integer"` + // The original setting for Amazon EBS Multi-Attach. + OriginalMultiAttachEnabled *bool `locationName:"originalMultiAttachEnabled" type:"boolean"` + // The original size of the volume, in GiB. OriginalSize *int64 `locationName:"originalSize" type:"integer"` @@ -114515,6 +119888,9 @@ type VolumeModification struct { // The target IOPS rate of the volume. TargetIops *int64 `locationName:"targetIops" type:"integer"` + // The target setting for Amazon EBS Multi-Attach. + TargetMultiAttachEnabled *bool `locationName:"targetMultiAttachEnabled" type:"boolean"` + // The target size of the volume, in GiB. TargetSize *int64 `locationName:"targetSize" type:"integer"` @@ -114556,6 +119932,12 @@ func (s *VolumeModification) SetOriginalIops(v int64) *VolumeModification { return s } +// SetOriginalMultiAttachEnabled sets the OriginalMultiAttachEnabled field's value. +func (s *VolumeModification) SetOriginalMultiAttachEnabled(v bool) *VolumeModification { + s.OriginalMultiAttachEnabled = &v + return s +} + // SetOriginalSize sets the OriginalSize field's value. func (s *VolumeModification) SetOriginalSize(v int64) *VolumeModification { s.OriginalSize = &v @@ -114598,6 +119980,12 @@ func (s *VolumeModification) SetTargetIops(v int64) *VolumeModification { return s } +// SetTargetMultiAttachEnabled sets the TargetMultiAttachEnabled field's value. +func (s *VolumeModification) SetTargetMultiAttachEnabled(v bool) *VolumeModification { + s.TargetMultiAttachEnabled = &v + return s +} + // SetTargetSize sets the TargetSize field's value. func (s *VolumeModification) SetTargetSize(v int64) *VolumeModification { s.TargetSize = &v @@ -116535,6 +121923,18 @@ func ActivityStatus_Values() []string { } } +const ( + // AddressAttributeNameDomainName is a AddressAttributeName enum value + AddressAttributeNameDomainName = "domain-name" +) + +// AddressAttributeName_Values returns all elements of the AddressAttributeName enum +func AddressAttributeName_Values() []string { + return []string{ + AddressAttributeNameDomainName, + } +} + const ( // AffinityDefault is a Affinity enum value AffinityDefault = "default" @@ -116619,6 +122019,26 @@ func AllowsMultipleInstanceTypes_Values() []string { } } +const ( + // AnalysisStatusRunning is a AnalysisStatus enum value + AnalysisStatusRunning = "running" + + // AnalysisStatusSucceeded is a AnalysisStatus enum value + AnalysisStatusSucceeded = "succeeded" + + // AnalysisStatusFailed is a AnalysisStatus enum value + AnalysisStatusFailed = "failed" +) + +// AnalysisStatus_Values returns all elements of the AnalysisStatus enum +func AnalysisStatus_Values() []string { + return []string{ + AnalysisStatusRunning, + AnalysisStatusSucceeded, + AnalysisStatusFailed, + } +} + const ( // ApplianceModeSupportValueEnable is a ApplianceModeSupportValue enum value ApplianceModeSupportValueEnable = "enable" @@ -116739,6 +122159,22 @@ func AttachmentStatus_Values() []string { } } +const ( + // AutoAcceptSharedAssociationsValueEnable is a AutoAcceptSharedAssociationsValue enum value + AutoAcceptSharedAssociationsValueEnable = "enable" + + // AutoAcceptSharedAssociationsValueDisable is a AutoAcceptSharedAssociationsValue enum value + AutoAcceptSharedAssociationsValueDisable = "disable" +) + +// AutoAcceptSharedAssociationsValue_Values returns all elements of the AutoAcceptSharedAssociationsValue enum +func AutoAcceptSharedAssociationsValue_Values() []string { + return []string{ + AutoAcceptSharedAssociationsValueEnable, + AutoAcceptSharedAssociationsValueDisable, + } +} + const ( // AutoAcceptSharedAttachmentsValueEnable is a AutoAcceptSharedAttachmentsValue enum value AutoAcceptSharedAttachmentsValueEnable = "enable" @@ -116851,6 +122287,22 @@ func BatchState_Values() []string { } } +const ( + // BgpStatusUp is a BgpStatus enum value + BgpStatusUp = "up" + + // BgpStatusDown is a BgpStatus enum value + BgpStatusDown = "down" +) + +// BgpStatus_Values returns all elements of the BgpStatus enum +func BgpStatus_Values() []string { + return []string{ + BgpStatusUp, + BgpStatusDown, + } +} + const ( // BundleTaskStatePending is a BundleTaskState enum value BundleTaskStatePending = "pending" @@ -118167,6 +123619,22 @@ func IamInstanceProfileAssociationState_Values() []string { } } +const ( + // Igmpv2SupportValueEnable is a Igmpv2SupportValue enum value + Igmpv2SupportValueEnable = "enable" + + // Igmpv2SupportValueDisable is a Igmpv2SupportValue enum value + Igmpv2SupportValueDisable = "disable" +) + +// Igmpv2SupportValue_Values returns all elements of the Igmpv2SupportValue enum +func Igmpv2SupportValue_Values() []string { + return []string{ + Igmpv2SupportValueEnable, + Igmpv2SupportValueDisable, + } +} + const ( // ImageAttributeNameDescription is a ImageAttributeName enum value ImageAttributeNameDescription = "description" @@ -119076,6 +124544,9 @@ const ( // InstanceTypeC5n18xlarge is a InstanceType enum value InstanceTypeC5n18xlarge = "c5n.18xlarge" + // InstanceTypeC5nMetal is a InstanceType enum value + InstanceTypeC5nMetal = "c5n.metal" + // InstanceTypeC6gMetal is a InstanceType enum value InstanceTypeC6gMetal = "c6g.metal" @@ -119130,6 +124601,30 @@ const ( // InstanceTypeC6gd16xlarge is a InstanceType enum value InstanceTypeC6gd16xlarge = "c6gd.16xlarge" + // InstanceTypeC6gnMedium is a InstanceType enum value + InstanceTypeC6gnMedium = "c6gn.medium" + + // InstanceTypeC6gnLarge is a InstanceType enum value + InstanceTypeC6gnLarge = "c6gn.large" + + // InstanceTypeC6gnXlarge is a InstanceType enum value + InstanceTypeC6gnXlarge = "c6gn.xlarge" + + // InstanceTypeC6gn2xlarge is a InstanceType enum value + InstanceTypeC6gn2xlarge = "c6gn.2xlarge" + + // InstanceTypeC6gn4xlarge is a InstanceType enum value + InstanceTypeC6gn4xlarge = "c6gn.4xlarge" + + // InstanceTypeC6gn8xlarge is a InstanceType enum value + InstanceTypeC6gn8xlarge = "c6gn.8xlarge" + + // InstanceTypeC6gn12xlarge is a InstanceType enum value + InstanceTypeC6gn12xlarge = "c6gn.12xlarge" + + // InstanceTypeC6gn16xlarge is a InstanceType enum value + InstanceTypeC6gn16xlarge = "c6gn.16xlarge" + // InstanceTypeCc14xlarge is a InstanceType enum value InstanceTypeCc14xlarge = "cc1.4xlarge" @@ -119820,6 +125315,7 @@ func InstanceType_Values() []string { InstanceTypeC5n4xlarge, InstanceTypeC5n9xlarge, InstanceTypeC5n18xlarge, + InstanceTypeC5nMetal, InstanceTypeC6gMetal, InstanceTypeC6gMedium, InstanceTypeC6gLarge, @@ -119838,6 +125334,14 @@ func InstanceType_Values() []string { InstanceTypeC6gd8xlarge, InstanceTypeC6gd12xlarge, InstanceTypeC6gd16xlarge, + InstanceTypeC6gnMedium, + InstanceTypeC6gnLarge, + InstanceTypeC6gnXlarge, + InstanceTypeC6gn2xlarge, + InstanceTypeC6gn4xlarge, + InstanceTypeC6gn8xlarge, + InstanceTypeC6gn12xlarge, + InstanceTypeC6gn16xlarge, InstanceTypeCc14xlarge, InstanceTypeCc28xlarge, InstanceTypeG22xlarge, @@ -120787,6 +126291,34 @@ func ProductCodeValues_Values() []string { } } +const ( + // ProtocolTcp is a Protocol enum value + ProtocolTcp = "tcp" + + // ProtocolUdp is a Protocol enum value + ProtocolUdp = "udp" +) + +// Protocol_Values returns all elements of the Protocol enum +func Protocol_Values() []string { + return []string{ + ProtocolTcp, + ProtocolUdp, + } +} + +const ( + // ProtocolValueGre is a ProtocolValue enum value + ProtocolValueGre = "gre" +) + +// ProtocolValue_Values returns all elements of the ProtocolValue enum +func ProtocolValue_Values() []string { + return []string{ + ProtocolValueGre, + } +} + const ( // RIProductDescriptionLinuxUnix is a RIProductDescription enum value RIProductDescriptionLinuxUnix = "Linux/UNIX" @@ -121045,6 +126577,12 @@ const ( // ResourceTypeNetworkInterface is a ResourceType enum value ResourceTypeNetworkInterface = "network-interface" + // ResourceTypeNetworkInsightsAnalysis is a ResourceType enum value + ResourceTypeNetworkInsightsAnalysis = "network-insights-analysis" + + // ResourceTypeNetworkInsightsPath is a ResourceType enum value + ResourceTypeNetworkInsightsPath = "network-insights-path" + // ResourceTypePlacementGroup is a ResourceType enum value ResourceTypePlacementGroup = "placement-group" @@ -121084,6 +126622,9 @@ const ( // ResourceTypeTransitGatewayAttachment is a ResourceType enum value ResourceTypeTransitGatewayAttachment = "transit-gateway-attachment" + // ResourceTypeTransitGatewayConnectPeer is a ResourceType enum value + ResourceTypeTransitGatewayConnectPeer = "transit-gateway-connect-peer" + // ResourceTypeTransitGatewayMulticastDomain is a ResourceType enum value ResourceTypeTransitGatewayMulticastDomain = "transit-gateway-multicast-domain" @@ -121135,6 +126676,8 @@ func ResourceType_Values() []string { ResourceTypeNatgateway, ResourceTypeNetworkAcl, ResourceTypeNetworkInterface, + ResourceTypeNetworkInsightsAnalysis, + ResourceTypeNetworkInsightsPath, ResourceTypePlacementGroup, ResourceTypeReservedInstances, ResourceTypeRouteTable, @@ -121148,6 +126691,7 @@ func ResourceType_Values() []string { ResourceTypeTrafficMirrorTarget, ResourceTypeTransitGateway, ResourceTypeTransitGatewayAttachment, + ResourceTypeTransitGatewayConnectPeer, ResourceTypeTransitGatewayMulticastDomain, ResourceTypeTransitGatewayRouteTable, ResourceTypeVolume, @@ -121511,6 +127055,22 @@ func State_Values() []string { } } +const ( + // StaticSourcesSupportValueEnable is a StaticSourcesSupportValue enum value + StaticSourcesSupportValueEnable = "enable" + + // StaticSourcesSupportValueDisable is a StaticSourcesSupportValue enum value + StaticSourcesSupportValueDisable = "disable" +) + +// StaticSourcesSupportValue_Values returns all elements of the StaticSourcesSupportValue enum +func StaticSourcesSupportValue_Values() []string { + return []string{ + StaticSourcesSupportValueEnable, + StaticSourcesSupportValueDisable, + } +} + const ( // StatusMoveInProgress is a Status enum value StatusMoveInProgress = "MoveInProgress" @@ -121837,6 +127397,9 @@ const ( // TransitGatewayAttachmentResourceTypeDirectConnectGateway is a TransitGatewayAttachmentResourceType enum value TransitGatewayAttachmentResourceTypeDirectConnectGateway = "direct-connect-gateway" + // TransitGatewayAttachmentResourceTypeConnect is a TransitGatewayAttachmentResourceType enum value + TransitGatewayAttachmentResourceTypeConnect = "connect" + // TransitGatewayAttachmentResourceTypePeering is a TransitGatewayAttachmentResourceType enum value TransitGatewayAttachmentResourceTypePeering = "peering" @@ -121850,6 +127413,7 @@ func TransitGatewayAttachmentResourceType_Values() []string { TransitGatewayAttachmentResourceTypeVpc, TransitGatewayAttachmentResourceTypeVpn, TransitGatewayAttachmentResourceTypeDirectConnectGateway, + TransitGatewayAttachmentResourceTypeConnect, TransitGatewayAttachmentResourceTypePeering, TransitGatewayAttachmentResourceTypeTgwPeering, } @@ -121916,6 +127480,33 @@ func TransitGatewayAttachmentState_Values() []string { } const ( + // TransitGatewayConnectPeerStatePending is a TransitGatewayConnectPeerState enum value + TransitGatewayConnectPeerStatePending = "pending" + + // TransitGatewayConnectPeerStateAvailable is a TransitGatewayConnectPeerState enum value + TransitGatewayConnectPeerStateAvailable = "available" + + // TransitGatewayConnectPeerStateDeleting is a TransitGatewayConnectPeerState enum value + TransitGatewayConnectPeerStateDeleting = "deleting" + + // TransitGatewayConnectPeerStateDeleted is a TransitGatewayConnectPeerState enum value + TransitGatewayConnectPeerStateDeleted = "deleted" +) + +// TransitGatewayConnectPeerState_Values returns all elements of the TransitGatewayConnectPeerState enum +func TransitGatewayConnectPeerState_Values() []string { + return []string{ + TransitGatewayConnectPeerStatePending, + TransitGatewayConnectPeerStateAvailable, + TransitGatewayConnectPeerStateDeleting, + TransitGatewayConnectPeerStateDeleted, + } +} + +const ( + // TransitGatewayMulitcastDomainAssociationStatePendingAcceptance is a TransitGatewayMulitcastDomainAssociationState enum value + TransitGatewayMulitcastDomainAssociationStatePendingAcceptance = "pendingAcceptance" + // TransitGatewayMulitcastDomainAssociationStateAssociating is a TransitGatewayMulitcastDomainAssociationState enum value TransitGatewayMulitcastDomainAssociationStateAssociating = "associating" @@ -121927,15 +127518,24 @@ const ( // TransitGatewayMulitcastDomainAssociationStateDisassociated is a TransitGatewayMulitcastDomainAssociationState enum value TransitGatewayMulitcastDomainAssociationStateDisassociated = "disassociated" + + // TransitGatewayMulitcastDomainAssociationStateRejected is a TransitGatewayMulitcastDomainAssociationState enum value + TransitGatewayMulitcastDomainAssociationStateRejected = "rejected" + + // TransitGatewayMulitcastDomainAssociationStateFailed is a TransitGatewayMulitcastDomainAssociationState enum value + TransitGatewayMulitcastDomainAssociationStateFailed = "failed" ) // TransitGatewayMulitcastDomainAssociationState_Values returns all elements of the TransitGatewayMulitcastDomainAssociationState enum func TransitGatewayMulitcastDomainAssociationState_Values() []string { return []string{ + TransitGatewayMulitcastDomainAssociationStatePendingAcceptance, TransitGatewayMulitcastDomainAssociationStateAssociating, TransitGatewayMulitcastDomainAssociationStateAssociated, TransitGatewayMulitcastDomainAssociationStateDisassociating, TransitGatewayMulitcastDomainAssociationStateDisassociated, + TransitGatewayMulitcastDomainAssociationStateRejected, + TransitGatewayMulitcastDomainAssociationStateFailed, } } diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go index 31c314e0e..47c44cc9d 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go @@ -4,8 +4,14 @@ // requests to Amazon Elastic Compute Cloud. // // Amazon Elastic Compute Cloud (Amazon EC2) provides secure and resizable computing -// capacity in the AWS cloud. Using Amazon EC2 eliminates the need to invest +// capacity in the AWS Cloud. Using Amazon EC2 eliminates the need to invest // in hardware up front, so you can develop and deploy applications faster. +// Amazon Virtual Private Cloud (Amazon VPC) enables you to provision a logically +// isolated section of the AWS Cloud where you can launch AWS resources in a +// virtual network that you've defined. Amazon Elastic Block Store (Amazon EBS) +// provides block level storage volumes for use with EC2 instances. EBS volumes +// are highly available and reliable storage volumes that can be attached to +// any running instance and used like a hard drive. // // To learn more, see the following resources: // @@ -13,7 +19,7 @@ // EC2 documentation (http://aws.amazon.com/documentation/ec2) // // * Amazon EBS: Amazon EBS product page (http://aws.amazon.com/ebs), Amazon -// EBS documentation (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) +// EBS documentation (http://aws.amazon.com/documentation/ebs) // // * Amazon VPC: Amazon VPC product page (http://aws.amazon.com/vpc), Amazon // VPC documentation (http://aws.amazon.com/documentation/vpc) diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface.go index dd70a8f07..f39664930 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface.go @@ -64,6 +64,10 @@ type EC2API interface { AcceptReservedInstancesExchangeQuoteWithContext(aws.Context, *ec2.AcceptReservedInstancesExchangeQuoteInput, ...request.Option) (*ec2.AcceptReservedInstancesExchangeQuoteOutput, error) AcceptReservedInstancesExchangeQuoteRequest(*ec2.AcceptReservedInstancesExchangeQuoteInput) (*request.Request, *ec2.AcceptReservedInstancesExchangeQuoteOutput) + AcceptTransitGatewayMulticastDomainAssociations(*ec2.AcceptTransitGatewayMulticastDomainAssociationsInput) (*ec2.AcceptTransitGatewayMulticastDomainAssociationsOutput, error) + AcceptTransitGatewayMulticastDomainAssociationsWithContext(aws.Context, *ec2.AcceptTransitGatewayMulticastDomainAssociationsInput, ...request.Option) (*ec2.AcceptTransitGatewayMulticastDomainAssociationsOutput, error) + AcceptTransitGatewayMulticastDomainAssociationsRequest(*ec2.AcceptTransitGatewayMulticastDomainAssociationsInput) (*request.Request, *ec2.AcceptTransitGatewayMulticastDomainAssociationsOutput) + AcceptTransitGatewayPeeringAttachment(*ec2.AcceptTransitGatewayPeeringAttachmentInput) (*ec2.AcceptTransitGatewayPeeringAttachmentOutput, error) AcceptTransitGatewayPeeringAttachmentWithContext(aws.Context, *ec2.AcceptTransitGatewayPeeringAttachmentInput, ...request.Option) (*ec2.AcceptTransitGatewayPeeringAttachmentOutput, error) AcceptTransitGatewayPeeringAttachmentRequest(*ec2.AcceptTransitGatewayPeeringAttachmentInput) (*request.Request, *ec2.AcceptTransitGatewayPeeringAttachmentOutput) @@ -324,6 +328,10 @@ type EC2API interface { CreateNetworkAclEntryWithContext(aws.Context, *ec2.CreateNetworkAclEntryInput, ...request.Option) (*ec2.CreateNetworkAclEntryOutput, error) CreateNetworkAclEntryRequest(*ec2.CreateNetworkAclEntryInput) (*request.Request, *ec2.CreateNetworkAclEntryOutput) + CreateNetworkInsightsPath(*ec2.CreateNetworkInsightsPathInput) (*ec2.CreateNetworkInsightsPathOutput, error) + CreateNetworkInsightsPathWithContext(aws.Context, *ec2.CreateNetworkInsightsPathInput, ...request.Option) (*ec2.CreateNetworkInsightsPathOutput, error) + CreateNetworkInsightsPathRequest(*ec2.CreateNetworkInsightsPathInput) (*request.Request, *ec2.CreateNetworkInsightsPathOutput) + CreateNetworkInterface(*ec2.CreateNetworkInterfaceInput) (*ec2.CreateNetworkInterfaceOutput, error) CreateNetworkInterfaceWithContext(aws.Context, *ec2.CreateNetworkInterfaceInput, ...request.Option) (*ec2.CreateNetworkInterfaceOutput, error) CreateNetworkInterfaceRequest(*ec2.CreateNetworkInterfaceInput) (*request.Request, *ec2.CreateNetworkInterfaceOutput) @@ -392,6 +400,14 @@ type EC2API interface { CreateTransitGatewayWithContext(aws.Context, *ec2.CreateTransitGatewayInput, ...request.Option) (*ec2.CreateTransitGatewayOutput, error) CreateTransitGatewayRequest(*ec2.CreateTransitGatewayInput) (*request.Request, *ec2.CreateTransitGatewayOutput) + CreateTransitGatewayConnect(*ec2.CreateTransitGatewayConnectInput) (*ec2.CreateTransitGatewayConnectOutput, error) + CreateTransitGatewayConnectWithContext(aws.Context, *ec2.CreateTransitGatewayConnectInput, ...request.Option) (*ec2.CreateTransitGatewayConnectOutput, error) + CreateTransitGatewayConnectRequest(*ec2.CreateTransitGatewayConnectInput) (*request.Request, *ec2.CreateTransitGatewayConnectOutput) + + CreateTransitGatewayConnectPeer(*ec2.CreateTransitGatewayConnectPeerInput) (*ec2.CreateTransitGatewayConnectPeerOutput, error) + CreateTransitGatewayConnectPeerWithContext(aws.Context, *ec2.CreateTransitGatewayConnectPeerInput, ...request.Option) (*ec2.CreateTransitGatewayConnectPeerOutput, error) + CreateTransitGatewayConnectPeerRequest(*ec2.CreateTransitGatewayConnectPeerInput) (*request.Request, *ec2.CreateTransitGatewayConnectPeerOutput) + CreateTransitGatewayMulticastDomain(*ec2.CreateTransitGatewayMulticastDomainInput) (*ec2.CreateTransitGatewayMulticastDomainOutput, error) CreateTransitGatewayMulticastDomainWithContext(aws.Context, *ec2.CreateTransitGatewayMulticastDomainInput, ...request.Option) (*ec2.CreateTransitGatewayMulticastDomainOutput, error) CreateTransitGatewayMulticastDomainRequest(*ec2.CreateTransitGatewayMulticastDomainInput) (*request.Request, *ec2.CreateTransitGatewayMulticastDomainOutput) @@ -528,6 +544,14 @@ type EC2API interface { DeleteNetworkAclEntryWithContext(aws.Context, *ec2.DeleteNetworkAclEntryInput, ...request.Option) (*ec2.DeleteNetworkAclEntryOutput, error) DeleteNetworkAclEntryRequest(*ec2.DeleteNetworkAclEntryInput) (*request.Request, *ec2.DeleteNetworkAclEntryOutput) + DeleteNetworkInsightsAnalysis(*ec2.DeleteNetworkInsightsAnalysisInput) (*ec2.DeleteNetworkInsightsAnalysisOutput, error) + DeleteNetworkInsightsAnalysisWithContext(aws.Context, *ec2.DeleteNetworkInsightsAnalysisInput, ...request.Option) (*ec2.DeleteNetworkInsightsAnalysisOutput, error) + DeleteNetworkInsightsAnalysisRequest(*ec2.DeleteNetworkInsightsAnalysisInput) (*request.Request, *ec2.DeleteNetworkInsightsAnalysisOutput) + + DeleteNetworkInsightsPath(*ec2.DeleteNetworkInsightsPathInput) (*ec2.DeleteNetworkInsightsPathOutput, error) + DeleteNetworkInsightsPathWithContext(aws.Context, *ec2.DeleteNetworkInsightsPathInput, ...request.Option) (*ec2.DeleteNetworkInsightsPathOutput, error) + DeleteNetworkInsightsPathRequest(*ec2.DeleteNetworkInsightsPathInput) (*request.Request, *ec2.DeleteNetworkInsightsPathOutput) + DeleteNetworkInterface(*ec2.DeleteNetworkInterfaceInput) (*ec2.DeleteNetworkInterfaceOutput, error) DeleteNetworkInterfaceWithContext(aws.Context, *ec2.DeleteNetworkInterfaceInput, ...request.Option) (*ec2.DeleteNetworkInterfaceOutput, error) DeleteNetworkInterfaceRequest(*ec2.DeleteNetworkInterfaceInput) (*request.Request, *ec2.DeleteNetworkInterfaceOutput) @@ -592,6 +616,14 @@ type EC2API interface { DeleteTransitGatewayWithContext(aws.Context, *ec2.DeleteTransitGatewayInput, ...request.Option) (*ec2.DeleteTransitGatewayOutput, error) DeleteTransitGatewayRequest(*ec2.DeleteTransitGatewayInput) (*request.Request, *ec2.DeleteTransitGatewayOutput) + DeleteTransitGatewayConnect(*ec2.DeleteTransitGatewayConnectInput) (*ec2.DeleteTransitGatewayConnectOutput, error) + DeleteTransitGatewayConnectWithContext(aws.Context, *ec2.DeleteTransitGatewayConnectInput, ...request.Option) (*ec2.DeleteTransitGatewayConnectOutput, error) + DeleteTransitGatewayConnectRequest(*ec2.DeleteTransitGatewayConnectInput) (*request.Request, *ec2.DeleteTransitGatewayConnectOutput) + + DeleteTransitGatewayConnectPeer(*ec2.DeleteTransitGatewayConnectPeerInput) (*ec2.DeleteTransitGatewayConnectPeerOutput, error) + DeleteTransitGatewayConnectPeerWithContext(aws.Context, *ec2.DeleteTransitGatewayConnectPeerInput, ...request.Option) (*ec2.DeleteTransitGatewayConnectPeerOutput, error) + DeleteTransitGatewayConnectPeerRequest(*ec2.DeleteTransitGatewayConnectPeerInput) (*request.Request, *ec2.DeleteTransitGatewayConnectPeerOutput) + DeleteTransitGatewayMulticastDomain(*ec2.DeleteTransitGatewayMulticastDomainInput) (*ec2.DeleteTransitGatewayMulticastDomainOutput, error) DeleteTransitGatewayMulticastDomainWithContext(aws.Context, *ec2.DeleteTransitGatewayMulticastDomainInput, ...request.Option) (*ec2.DeleteTransitGatewayMulticastDomainOutput, error) DeleteTransitGatewayMulticastDomainRequest(*ec2.DeleteTransitGatewayMulticastDomainInput) (*request.Request, *ec2.DeleteTransitGatewayMulticastDomainOutput) @@ -680,6 +712,13 @@ type EC2API interface { DescribeAddressesWithContext(aws.Context, *ec2.DescribeAddressesInput, ...request.Option) (*ec2.DescribeAddressesOutput, error) DescribeAddressesRequest(*ec2.DescribeAddressesInput) (*request.Request, *ec2.DescribeAddressesOutput) + DescribeAddressesAttribute(*ec2.DescribeAddressesAttributeInput) (*ec2.DescribeAddressesAttributeOutput, error) + DescribeAddressesAttributeWithContext(aws.Context, *ec2.DescribeAddressesAttributeInput, ...request.Option) (*ec2.DescribeAddressesAttributeOutput, error) + DescribeAddressesAttributeRequest(*ec2.DescribeAddressesAttributeInput) (*request.Request, *ec2.DescribeAddressesAttributeOutput) + + DescribeAddressesAttributePages(*ec2.DescribeAddressesAttributeInput, func(*ec2.DescribeAddressesAttributeOutput, bool) bool) error + DescribeAddressesAttributePagesWithContext(aws.Context, *ec2.DescribeAddressesAttributeInput, func(*ec2.DescribeAddressesAttributeOutput, bool) bool, ...request.Option) error + DescribeAggregateIdFormat(*ec2.DescribeAggregateIdFormatInput) (*ec2.DescribeAggregateIdFormatOutput, error) DescribeAggregateIdFormatWithContext(aws.Context, *ec2.DescribeAggregateIdFormatInput, ...request.Option) (*ec2.DescribeAggregateIdFormatOutput, error) DescribeAggregateIdFormatRequest(*ec2.DescribeAggregateIdFormatInput) (*request.Request, *ec2.DescribeAggregateIdFormatOutput) @@ -1042,6 +1081,20 @@ type EC2API interface { DescribeNetworkAclsPages(*ec2.DescribeNetworkAclsInput, func(*ec2.DescribeNetworkAclsOutput, bool) bool) error DescribeNetworkAclsPagesWithContext(aws.Context, *ec2.DescribeNetworkAclsInput, func(*ec2.DescribeNetworkAclsOutput, bool) bool, ...request.Option) error + DescribeNetworkInsightsAnalyses(*ec2.DescribeNetworkInsightsAnalysesInput) (*ec2.DescribeNetworkInsightsAnalysesOutput, error) + DescribeNetworkInsightsAnalysesWithContext(aws.Context, *ec2.DescribeNetworkInsightsAnalysesInput, ...request.Option) (*ec2.DescribeNetworkInsightsAnalysesOutput, error) + DescribeNetworkInsightsAnalysesRequest(*ec2.DescribeNetworkInsightsAnalysesInput) (*request.Request, *ec2.DescribeNetworkInsightsAnalysesOutput) + + DescribeNetworkInsightsAnalysesPages(*ec2.DescribeNetworkInsightsAnalysesInput, func(*ec2.DescribeNetworkInsightsAnalysesOutput, bool) bool) error + DescribeNetworkInsightsAnalysesPagesWithContext(aws.Context, *ec2.DescribeNetworkInsightsAnalysesInput, func(*ec2.DescribeNetworkInsightsAnalysesOutput, bool) bool, ...request.Option) error + + DescribeNetworkInsightsPaths(*ec2.DescribeNetworkInsightsPathsInput) (*ec2.DescribeNetworkInsightsPathsOutput, error) + DescribeNetworkInsightsPathsWithContext(aws.Context, *ec2.DescribeNetworkInsightsPathsInput, ...request.Option) (*ec2.DescribeNetworkInsightsPathsOutput, error) + DescribeNetworkInsightsPathsRequest(*ec2.DescribeNetworkInsightsPathsInput) (*request.Request, *ec2.DescribeNetworkInsightsPathsOutput) + + DescribeNetworkInsightsPathsPages(*ec2.DescribeNetworkInsightsPathsInput, func(*ec2.DescribeNetworkInsightsPathsOutput, bool) bool) error + DescribeNetworkInsightsPathsPagesWithContext(aws.Context, *ec2.DescribeNetworkInsightsPathsInput, func(*ec2.DescribeNetworkInsightsPathsOutput, bool) bool, ...request.Option) error + DescribeNetworkInterfaceAttribute(*ec2.DescribeNetworkInterfaceAttributeInput) (*ec2.DescribeNetworkInterfaceAttributeOutput, error) DescribeNetworkInterfaceAttributeWithContext(aws.Context, *ec2.DescribeNetworkInterfaceAttributeInput, ...request.Option) (*ec2.DescribeNetworkInterfaceAttributeOutput, error) DescribeNetworkInterfaceAttributeRequest(*ec2.DescribeNetworkInterfaceAttributeInput) (*request.Request, *ec2.DescribeNetworkInterfaceAttributeOutput) @@ -1236,6 +1289,20 @@ type EC2API interface { DescribeTransitGatewayAttachmentsPages(*ec2.DescribeTransitGatewayAttachmentsInput, func(*ec2.DescribeTransitGatewayAttachmentsOutput, bool) bool) error DescribeTransitGatewayAttachmentsPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayAttachmentsInput, func(*ec2.DescribeTransitGatewayAttachmentsOutput, bool) bool, ...request.Option) error + DescribeTransitGatewayConnectPeers(*ec2.DescribeTransitGatewayConnectPeersInput) (*ec2.DescribeTransitGatewayConnectPeersOutput, error) + DescribeTransitGatewayConnectPeersWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectPeersInput, ...request.Option) (*ec2.DescribeTransitGatewayConnectPeersOutput, error) + DescribeTransitGatewayConnectPeersRequest(*ec2.DescribeTransitGatewayConnectPeersInput) (*request.Request, *ec2.DescribeTransitGatewayConnectPeersOutput) + + DescribeTransitGatewayConnectPeersPages(*ec2.DescribeTransitGatewayConnectPeersInput, func(*ec2.DescribeTransitGatewayConnectPeersOutput, bool) bool) error + DescribeTransitGatewayConnectPeersPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectPeersInput, func(*ec2.DescribeTransitGatewayConnectPeersOutput, bool) bool, ...request.Option) error + + DescribeTransitGatewayConnects(*ec2.DescribeTransitGatewayConnectsInput) (*ec2.DescribeTransitGatewayConnectsOutput, error) + DescribeTransitGatewayConnectsWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectsInput, ...request.Option) (*ec2.DescribeTransitGatewayConnectsOutput, error) + DescribeTransitGatewayConnectsRequest(*ec2.DescribeTransitGatewayConnectsInput) (*request.Request, *ec2.DescribeTransitGatewayConnectsOutput) + + DescribeTransitGatewayConnectsPages(*ec2.DescribeTransitGatewayConnectsInput, func(*ec2.DescribeTransitGatewayConnectsOutput, bool) bool) error + DescribeTransitGatewayConnectsPagesWithContext(aws.Context, *ec2.DescribeTransitGatewayConnectsInput, func(*ec2.DescribeTransitGatewayConnectsOutput, bool) bool, ...request.Option) error + DescribeTransitGatewayMulticastDomains(*ec2.DescribeTransitGatewayMulticastDomainsInput) (*ec2.DescribeTransitGatewayMulticastDomainsOutput, error) DescribeTransitGatewayMulticastDomainsWithContext(aws.Context, *ec2.DescribeTransitGatewayMulticastDomainsInput, ...request.Option) (*ec2.DescribeTransitGatewayMulticastDomainsOutput, error) DescribeTransitGatewayMulticastDomainsRequest(*ec2.DescribeTransitGatewayMulticastDomainsInput) (*request.Request, *ec2.DescribeTransitGatewayMulticastDomainsOutput) @@ -1631,6 +1698,10 @@ type EC2API interface { ImportVolumeWithContext(aws.Context, *ec2.ImportVolumeInput, ...request.Option) (*ec2.ImportVolumeOutput, error) ImportVolumeRequest(*ec2.ImportVolumeInput) (*request.Request, *ec2.ImportVolumeOutput) + ModifyAddressAttribute(*ec2.ModifyAddressAttributeInput) (*ec2.ModifyAddressAttributeOutput, error) + ModifyAddressAttributeWithContext(aws.Context, *ec2.ModifyAddressAttributeInput, ...request.Option) (*ec2.ModifyAddressAttributeOutput, error) + ModifyAddressAttributeRequest(*ec2.ModifyAddressAttributeInput) (*request.Request, *ec2.ModifyAddressAttributeOutput) + ModifyAvailabilityZoneGroup(*ec2.ModifyAvailabilityZoneGroupInput) (*ec2.ModifyAvailabilityZoneGroupOutput, error) ModifyAvailabilityZoneGroupWithContext(aws.Context, *ec2.ModifyAvailabilityZoneGroupInput, ...request.Option) (*ec2.ModifyAvailabilityZoneGroupOutput, error) ModifyAvailabilityZoneGroupRequest(*ec2.ModifyAvailabilityZoneGroupInput) (*request.Request, *ec2.ModifyAvailabilityZoneGroupOutput) @@ -1847,6 +1918,10 @@ type EC2API interface { RegisterTransitGatewayMulticastGroupSourcesWithContext(aws.Context, *ec2.RegisterTransitGatewayMulticastGroupSourcesInput, ...request.Option) (*ec2.RegisterTransitGatewayMulticastGroupSourcesOutput, error) RegisterTransitGatewayMulticastGroupSourcesRequest(*ec2.RegisterTransitGatewayMulticastGroupSourcesInput) (*request.Request, *ec2.RegisterTransitGatewayMulticastGroupSourcesOutput) + RejectTransitGatewayMulticastDomainAssociations(*ec2.RejectTransitGatewayMulticastDomainAssociationsInput) (*ec2.RejectTransitGatewayMulticastDomainAssociationsOutput, error) + RejectTransitGatewayMulticastDomainAssociationsWithContext(aws.Context, *ec2.RejectTransitGatewayMulticastDomainAssociationsInput, ...request.Option) (*ec2.RejectTransitGatewayMulticastDomainAssociationsOutput, error) + RejectTransitGatewayMulticastDomainAssociationsRequest(*ec2.RejectTransitGatewayMulticastDomainAssociationsInput) (*request.Request, *ec2.RejectTransitGatewayMulticastDomainAssociationsOutput) + RejectTransitGatewayPeeringAttachment(*ec2.RejectTransitGatewayPeeringAttachmentInput) (*ec2.RejectTransitGatewayPeeringAttachmentOutput, error) RejectTransitGatewayPeeringAttachmentWithContext(aws.Context, *ec2.RejectTransitGatewayPeeringAttachmentInput, ...request.Option) (*ec2.RejectTransitGatewayPeeringAttachmentOutput, error) RejectTransitGatewayPeeringAttachmentRequest(*ec2.RejectTransitGatewayPeeringAttachmentInput) (*request.Request, *ec2.RejectTransitGatewayPeeringAttachmentOutput) @@ -1907,6 +1982,10 @@ type EC2API interface { RequestSpotInstancesWithContext(aws.Context, *ec2.RequestSpotInstancesInput, ...request.Option) (*ec2.RequestSpotInstancesOutput, error) RequestSpotInstancesRequest(*ec2.RequestSpotInstancesInput) (*request.Request, *ec2.RequestSpotInstancesOutput) + ResetAddressAttribute(*ec2.ResetAddressAttributeInput) (*ec2.ResetAddressAttributeOutput, error) + ResetAddressAttributeWithContext(aws.Context, *ec2.ResetAddressAttributeInput, ...request.Option) (*ec2.ResetAddressAttributeOutput, error) + ResetAddressAttributeRequest(*ec2.ResetAddressAttributeInput) (*request.Request, *ec2.ResetAddressAttributeOutput) + ResetEbsDefaultKmsKeyId(*ec2.ResetEbsDefaultKmsKeyIdInput) (*ec2.ResetEbsDefaultKmsKeyIdOutput, error) ResetEbsDefaultKmsKeyIdWithContext(aws.Context, *ec2.ResetEbsDefaultKmsKeyIdInput, ...request.Option) (*ec2.ResetEbsDefaultKmsKeyIdOutput, error) ResetEbsDefaultKmsKeyIdRequest(*ec2.ResetEbsDefaultKmsKeyIdInput) (*request.Request, *ec2.ResetEbsDefaultKmsKeyIdOutput) @@ -1985,6 +2064,10 @@ type EC2API interface { StartInstancesWithContext(aws.Context, *ec2.StartInstancesInput, ...request.Option) (*ec2.StartInstancesOutput, error) StartInstancesRequest(*ec2.StartInstancesInput) (*request.Request, *ec2.StartInstancesOutput) + StartNetworkInsightsAnalysis(*ec2.StartNetworkInsightsAnalysisInput) (*ec2.StartNetworkInsightsAnalysisOutput, error) + StartNetworkInsightsAnalysisWithContext(aws.Context, *ec2.StartNetworkInsightsAnalysisInput, ...request.Option) (*ec2.StartNetworkInsightsAnalysisOutput, error) + StartNetworkInsightsAnalysisRequest(*ec2.StartNetworkInsightsAnalysisInput) (*request.Request, *ec2.StartNetworkInsightsAnalysisOutput) + StartVpcEndpointServicePrivateDnsVerification(*ec2.StartVpcEndpointServicePrivateDnsVerificationInput) (*ec2.StartVpcEndpointServicePrivateDnsVerificationOutput, error) StartVpcEndpointServicePrivateDnsVerificationWithContext(aws.Context, *ec2.StartVpcEndpointServicePrivateDnsVerificationInput, ...request.Option) (*ec2.StartVpcEndpointServicePrivateDnsVerificationOutput, error) StartVpcEndpointServicePrivateDnsVerificationRequest(*ec2.StartVpcEndpointServicePrivateDnsVerificationInput) (*request.Request, *ec2.StartVpcEndpointServicePrivateDnsVerificationOutput) diff --git a/vendor/github.com/aws/aws-sdk-go/service/iam/api.go b/vendor/github.com/aws/aws-sdk-go/service/iam/api.go index 7c3a5dd0d..72e374e2b 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/iam/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/iam/api.go @@ -82,8 +82,7 @@ func (c *IAM) AddClientIDToOpenIDConnectProviderRequest(input *AddClientIDToOpen // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -157,21 +156,19 @@ func (c *IAM) AddRoleToInstanceProfileRequest(input *AddRoleToInstanceProfileInp // AddRoleToInstanceProfile API operation for AWS Identity and Access Management. // // Adds the specified IAM role to the specified instance profile. An instance -// profile can contain only one role. (The number and size of IAM resources -// in an AWS account are limited. For more information, see IAM and STS Quotas -// (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) -// in the IAM User Guide.) You can remove the existing role and then add a different -// role to an instance profile. You must then wait for the change to appear -// across all of AWS because of eventual consistency (https://en.wikipedia.org/wiki/Eventual_consistency). +// profile can contain only one role, and this quota cannot be increased. You +// can remove the existing role and then add a different role to an instance +// profile. You must then wait for the change to appear across all of AWS because +// of eventual consistency (https://en.wikipedia.org/wiki/Eventual_consistency). // To force the change, you must disassociate the instance profile (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html) // and then associate the instance profile (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), // or you can stop your instance and then restart it. // -// The caller of this API must be granted the PassRole permission on the IAM -// role by a permissions policy. +// The caller of this operation must be granted the PassRole permission on the +// IAM role by a permissions policy. // -// For more information about roles, go to Working with Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). -// For more information about instance profiles, go to About Instance Profiles +// For more information about roles, see Working with roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// For more information about instance profiles, see About instance profiles // (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -192,8 +189,7 @@ func (c *IAM) AddRoleToInstanceProfileRequest(input *AddRoleToInstanceProfileInp // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeUnmodifiableEntityException "UnmodifiableEntity" // The request was rejected because only the service that depends on the service-linked @@ -288,8 +284,7 @@ func (c *IAM) AddUserToGroupRequest(input *AddUserToGroupInput) (req *request.Re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -364,10 +359,10 @@ func (c *IAM) AttachGroupPolicyRequest(input *AttachGroupPolicyInput) (req *requ // // Attaches the specified managed policy to the specified IAM group. // -// You use this API to attach a managed policy to a group. To embed an inline -// policy in a group, use PutGroupPolicy. +// You use this operation to attach a managed policy to a group. To embed an +// inline policy in a group, use PutGroupPolicy. // -// For more information about policies, see Managed Policies and Inline Policies +// For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -385,8 +380,7 @@ func (c *IAM) AttachGroupPolicyRequest(input *AttachGroupPolicyInput) (req *requ // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -475,9 +469,9 @@ func (c *IAM) AttachRolePolicyRequest(input *AttachRolePolicyInput) (req *reques // policy is created at the same time as the role, using CreateRole. You can // update a role's trust policy using UpdateAssumeRolePolicy. // -// Use this API to attach a managed policy to a role. To embed an inline policy -// in a role, use PutRolePolicy. For more information about policies, see Managed -// Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// Use this operation to attach a managed policy to a role. To embed an inline +// policy in a role, use PutRolePolicy. For more information about policies, +// see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -494,8 +488,7 @@ func (c *IAM) AttachRolePolicyRequest(input *AttachRolePolicyInput) (req *reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -584,10 +577,10 @@ func (c *IAM) AttachUserPolicyRequest(input *AttachUserPolicyInput) (req *reques // // Attaches the specified managed policy to the specified user. // -// You use this API to attach a managed policy to a user. To embed an inline -// policy in a user, use PutUserPolicy. +// You use this operation to attach a managed policy to a user. To embed an +// inline policy in a user, use PutUserPolicy. // -// For more information about policies, see Managed Policies and Inline Policies +// For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -605,8 +598,7 @@ func (c *IAM) AttachUserPolicyRequest(input *AttachUserPolicyInput) (req *reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -687,11 +679,14 @@ func (c *IAM) ChangePasswordRequest(input *ChangePasswordInput) (req *request.Re // ChangePassword API operation for AWS Identity and Access Management. // -// Changes the password of the IAM user who is calling this operation. The AWS -// account root user password is not affected by this operation. +// Changes the password of the IAM user who is calling this operation. This +// operation can be performed using the AWS CLI, the AWS API, or the My Security +// Credentials page in the AWS Management Console. The AWS account root user +// password is not affected by this operation. // -// To change the password for a different user, see UpdateLoginProfile. For -// more information about modifying passwords, see Managing Passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) +// Use UpdateLoginProfile to use the AWS CLI, the AWS API, or the Users page +// in the IAM console to change the password for any IAM user. For more information +// about modifying passwords, see Managing passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -712,8 +707,7 @@ func (c *IAM) ChangePasswordRequest(input *ChangePasswordInput) (req *request.Re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeEntityTemporarilyUnmodifiableException "EntityTemporarilyUnmodifiable" // The request was rejected because it referenced an entity that is temporarily @@ -804,8 +798,8 @@ func (c *IAM) CreateAccessKeyRequest(input *CreateAccessKeyInput) (req *request. // to manage AWS account root user credentials. This is true even if the AWS // account has no associated users. // -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// For information about quotas on the number of keys you can create, see IAM +// and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // To ensure the security of your AWS account, the secret access key is accessible @@ -828,8 +822,7 @@ func (c *IAM) CreateAccessKeyRequest(input *CreateAccessKeyInput) (req *request. // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -903,7 +896,7 @@ func (c *IAM) CreateAccountAliasRequest(input *CreateAccountAliasInput) (req *re // CreateAccountAlias API operation for AWS Identity and Access Management. // // Creates an alias for your AWS account. For information about using an AWS -// account alias, see Using an Alias for Your AWS Account ID (https://docs.aws.amazon.com/IAM/latest/UserGuide/AccountAlias.html) +// account alias, see Using an alias for your AWS account ID (https://docs.aws.amazon.com/IAM/latest/UserGuide/AccountAlias.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -920,8 +913,7 @@ func (c *IAM) CreateAccountAliasRequest(input *CreateAccountAliasInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -995,8 +987,8 @@ func (c *IAM) CreateGroupRequest(input *CreateGroupInput) (req *request.Request, // // Creates a new group. // -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// For information about the number of groups you can create, see IAM and STS +// quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1009,8 +1001,7 @@ func (c *IAM) CreateGroupRequest(input *CreateGroupInput) (req *request.Request, // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already @@ -1091,10 +1082,10 @@ func (c *IAM) CreateInstanceProfileRequest(input *CreateInstanceProfileInput) (r // CreateInstanceProfile API operation for AWS Identity and Access Management. // // Creates a new instance profile. For information about instance profiles, -// go to About Instance Profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). +// see About instance profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities). // -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// For information about the number of instance profiles you can create, see +// IAM object quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1109,10 +1100,18 @@ func (c *IAM) CreateInstanceProfileRequest(input *CreateInstanceProfileInput) (r // The request was rejected because it attempted to create a resource that already // exists. // +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -1184,9 +1183,15 @@ func (c *IAM) CreateLoginProfileRequest(input *CreateLoginProfileInput) (req *re // CreateLoginProfile API operation for AWS Identity and Access Management. // -// Creates a password for the specified user, giving the user the ability to -// access AWS services through the AWS Management Console. For more information -// about managing passwords, see Managing Passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) +// Creates a password for the specified IAM user. A password allows an IAM user +// to access AWS services through the AWS Management Console. +// +// You can use the AWS CLI, the AWS API, or the Users page in the IAM console +// to create a password for any IAM user. Use ChangePassword to update your +// own existing password in the My Security Credentials page in the AWS Management +// Console. +// +// For more information about managing passwords, see Managing passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1211,8 +1216,7 @@ func (c *IAM) CreateLoginProfileRequest(input *CreateLoginProfileInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -1326,8 +1330,12 @@ func (c *IAM) CreateOpenIDConnectProviderRequest(input *CreateOpenIDConnectProvi // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -1403,11 +1411,11 @@ func (c *IAM) CreatePolicyRequest(input *CreatePolicyInput) (req *request.Reques // // This operation creates a policy version with a version identifier of v1 and // sets v1 as the policy's default version. For more information about policy -// versions, see Versioning for Managed Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) +// versions, see Versioning for managed policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // -// For more information about managed policies in general, see Managed Policies -// and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies in general, see Managed policies +// and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1424,8 +1432,7 @@ func (c *IAM) CreatePolicyRequest(input *CreatePolicyInput) (req *request.Reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already @@ -1435,6 +1442,11 @@ func (c *IAM) CreatePolicyRequest(input *CreatePolicyInput) (req *request.Reques // The request was rejected because the policy document was malformed. The error // message describes the specific error. // +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception // or failure. @@ -1514,8 +1526,8 @@ func (c *IAM) CreatePolicyVersionRequest(input *CreatePolicyVersionInput) (req * // The default version is the version that is in effect for the IAM users, groups, // and roles to which the policy is attached. // -// For more information about managed policy versions, see Versioning for Managed -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) +// For more information about managed policy versions, see Versioning for managed +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1540,8 +1552,7 @@ func (c *IAM) CreatePolicyVersionRequest(input *CreatePolicyVersionInput) (req * // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -1614,9 +1625,9 @@ func (c *IAM) CreateRoleRequest(input *CreateRoleInput) (req *request.Request, o // CreateRole API operation for AWS Identity and Access Management. // // Creates a new role for your AWS account. For more information about roles, -// go to IAM Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// see IAM roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// For information about quotas for role names and the number of roles you can +// create, see IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1629,8 +1640,7 @@ func (c *IAM) CreateRoleRequest(input *CreateRoleInput) (req *request.Request, o // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -1737,9 +1747,9 @@ func (c *IAM) CreateSAMLProviderRequest(input *CreateSAMLProviderInput) (req *re // // This operation requires Signature Version 4 (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). // -// For more information, see Enabling SAML 2.0 Federated Users to Access the +// For more information, see Enabling SAML 2.0 federated users to access the // AWS Management Console (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html) -// and About SAML 2.0-based Federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) +// and About SAML 2.0-based federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1760,8 +1770,12 @@ func (c *IAM) CreateSAMLProviderRequest(input *CreateSAMLProviderInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -1839,7 +1853,7 @@ func (c *IAM) CreateServiceLinkedRoleRequest(input *CreateServiceLinkedRoleInput // role, which could put your AWS resources into an unknown state. Allowing // the service to control the role helps improve service stability and proper // cleanup when a service and its role are no longer needed. For more information, -// see Using Service-Linked Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) +// see Using service-linked roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) // in the IAM User Guide. // // To attach a policy to this service-linked role, you must make the request @@ -1859,8 +1873,7 @@ func (c *IAM) CreateServiceLinkedRoleRequest(input *CreateServiceLinkedRoleInput // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeNoSuchEntityException "NoSuchEntity" // The request was rejected because it referenced a resource entity that does @@ -1943,12 +1956,13 @@ func (c *IAM) CreateServiceSpecificCredentialRequest(input *CreateServiceSpecifi // You can have a maximum of two sets of service-specific credentials for each // supported service per user. // -// The only supported service at this time is AWS CodeCommit. +// You can create service-specific credentials for AWS CodeCommit and Amazon +// Keyspaces (for Apache Cassandra). // // You can reset the password to a new service-generated value by calling ResetServiceSpecificCredential. // // For more information about service-specific credentials, see Using IAM with -// AWS CodeCommit: Git Credentials, SSH Keys, and AWS Access Keys (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_ssh-keys.html) +// AWS CodeCommit: Git credentials, SSH keys, and AWS access keys (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_ssh-keys.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -1961,8 +1975,7 @@ func (c *IAM) CreateServiceSpecificCredentialRequest(input *CreateServiceSpecifi // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeNoSuchEntityException "NoSuchEntity" // The request was rejected because it referenced a resource entity that does @@ -2039,8 +2052,8 @@ func (c *IAM) CreateUserRequest(input *CreateUserInput) (req *request.Request, o // // Creates a new IAM user for your AWS account. // -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// For information about quotas for the number of IAM users you can create, +// see IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2053,8 +2066,7 @@ func (c *IAM) CreateUserRequest(input *CreateUserInput) (req *request.Request, o // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already @@ -2146,11 +2158,11 @@ func (c *IAM) CreateVirtualMFADeviceRequest(input *CreateVirtualMFADeviceInput) // Creates a new virtual MFA device for the AWS account. After creating the // virtual MFA, use EnableMFADevice to attach the MFA device to an IAM user. // For more information about creating and working with virtual MFA devices, -// go to Using a Virtual MFA Device (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_VirtualMFA.html) +// see Using a virtual MFA device (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_VirtualMFA.html) // in the IAM User Guide. // -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// For information about the maximum number of MFA devices you can create, see +// IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // The seed information contained in the QR code and the Base32 string should @@ -2169,13 +2181,21 @@ func (c *IAM) CreateVirtualMFADeviceRequest(input *CreateVirtualMFADeviceInput) // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already // exists. // +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception // or failure. @@ -2251,7 +2271,7 @@ func (c *IAM) DeactivateMFADeviceRequest(input *DeactivateMFADeviceInput) (req * // the user name for which it was originally enabled. // // For more information about creating and working with virtual MFA devices, -// go to Enabling a Virtual Multi-factor Authentication (MFA) Device (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_VirtualMFA.html) +// see Enabling a virtual multi-factor authentication (MFA) device (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_VirtualMFA.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2274,8 +2294,7 @@ func (c *IAM) DeactivateMFADeviceRequest(input *DeactivateMFADeviceInput) (req * // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2370,8 +2389,7 @@ func (c *IAM) DeleteAccessKeyRequest(input *DeleteAccessKeyInput) (req *request. // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2445,7 +2463,7 @@ func (c *IAM) DeleteAccountAliasRequest(input *DeleteAccountAliasInput) (req *re // DeleteAccountAlias API operation for AWS Identity and Access Management. // // Deletes the specified AWS account alias. For information about using an AWS -// account alias, see Using an Alias for Your AWS Account ID (https://docs.aws.amazon.com/IAM/latest/UserGuide/AccountAlias.html) +// account alias, see Using an alias for your AWS account ID (https://docs.aws.amazon.com/IAM/latest/UserGuide/AccountAlias.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2462,8 +2480,7 @@ func (c *IAM) DeleteAccountAliasRequest(input *DeleteAccountAliasInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2552,8 +2569,7 @@ func (c *IAM) DeleteAccountPasswordPolicyRequest(input *DeleteAccountPasswordPol // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2647,8 +2663,7 @@ func (c *IAM) DeleteGroupRequest(input *DeleteGroupInput) (req *request.Request, // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2726,7 +2741,7 @@ func (c *IAM) DeleteGroupPolicyRequest(input *DeleteGroupPolicyInput) (req *requ // // A group can also have managed policies attached to it. To detach a managed // policy from a group, use DetachGroupPolicy. For more information about policies, -// refer to Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// refer to Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2743,8 +2758,7 @@ func (c *IAM) DeleteGroupPolicyRequest(input *DeleteGroupPolicyInput) (req *requ // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2825,7 +2839,7 @@ func (c *IAM) DeleteInstanceProfileRequest(input *DeleteInstanceProfileInput) (r // that is associated with a running instance will break any applications running // on the instance. // -// For more information about instance profiles, go to About Instance Profiles +// For more information about instance profiles, see About instance profiles // (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -2846,8 +2860,7 @@ func (c *IAM) DeleteInstanceProfileRequest(input *DeleteInstanceProfileInput) (r // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -2923,6 +2936,11 @@ func (c *IAM) DeleteLoginProfileRequest(input *DeleteLoginProfileInput) (req *re // Deletes the password for the specified IAM user, which terminates the user's // ability to access AWS services through the AWS Management Console. // +// You can use the AWS CLI, the AWS API, or the Users page in the IAM console +// to delete a password for any IAM user. You can use ChangePassword to update, +// but not delete, your own password in the My Security Credentials page in +// the AWS Management Console. +// // Deleting a user's password does not prevent a user from accessing AWS through // the command line interface or the API. To prevent all user access, you must // also either make any access keys inactive or delete them. For more information @@ -2948,8 +2966,7 @@ func (c *IAM) DeleteLoginProfileRequest(input *DeleteLoginProfileInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -3126,9 +3143,9 @@ func (c *IAM) DeletePolicyRequest(input *DeletePolicyInput) (req *request.Reques // for deleting a managed policy: // // * Detach the policy from all users, groups, and roles that the policy -// is attached to, using the DetachUserPolicy, DetachGroupPolicy, or DetachRolePolicy -// API operations. To list all the users, groups, and roles that a policy -// is attached to, use ListEntitiesForPolicy. +// is attached to, using DetachUserPolicy, DetachGroupPolicy, or DetachRolePolicy. +// To list all the users, groups, and roles that a policy is attached to, +// use ListEntitiesForPolicy. // // * Delete all versions of the policy using DeletePolicyVersion. To list // the policy's versions, use ListPolicyVersions. You cannot use DeletePolicyVersion @@ -3136,9 +3153,9 @@ func (c *IAM) DeletePolicyRequest(input *DeletePolicyInput) (req *request.Reques // the policy's default version in the next step of the process. // // * Delete the policy (this automatically deletes the policy's default version) -// using this API. +// using this operation. // -// For information about managed policies, see Managed Policies and Inline Policies +// For information about managed policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -3156,8 +3173,7 @@ func (c *IAM) DeletePolicyRequest(input *DeletePolicyInput) (req *request.Reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -3240,12 +3256,12 @@ func (c *IAM) DeletePolicyVersionRequest(input *DeletePolicyVersionInput) (req * // // Deletes the specified version from the specified managed policy. // -// You cannot delete the default version from a policy using this API. To delete -// the default version from a policy, use DeletePolicy. To find out which version -// of a policy is marked as the default version, use ListPolicyVersions. +// You cannot delete the default version from a policy using this operation. +// To delete the default version from a policy, use DeletePolicy. To find out +// which version of a policy is marked as the default version, use ListPolicyVersions. // -// For information about versions for managed policies, see Versioning for Managed -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) +// For information about versions for managed policies, see Versioning for managed +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3262,8 +3278,7 @@ func (c *IAM) DeletePolicyVersionRequest(input *DeletePolicyVersionInput) (req * // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -3345,7 +3360,7 @@ func (c *IAM) DeleteRoleRequest(input *DeleteRoleInput) (req *request.Request, o // DeleteRole API operation for AWS Identity and Access Management. // // Deletes the specified role. The role must not have any policies attached. -// For more information about roles, go to Working with Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// For more information about roles, see Working with roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). // // Make sure that you do not have any Amazon EC2 instances running with the // role you are about to delete. Deleting a role or instance profile that is @@ -3370,8 +3385,7 @@ func (c *IAM) DeleteRoleRequest(input *DeleteRoleInput) (req *request.Request, o // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeUnmodifiableEntityException "UnmodifiableEntity" // The request was rejected because only the service that depends on the service-linked @@ -3555,7 +3569,7 @@ func (c *IAM) DeleteRolePolicyRequest(input *DeleteRolePolicyInput) (req *reques // // A role can also have managed policies attached to it. To detach a managed // policy from a role, use DetachRolePolicy. For more information about policies, -// refer to Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// refer to Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3572,8 +3586,7 @@ func (c *IAM) DeleteRolePolicyRequest(input *DeleteRolePolicyInput) (req *reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeUnmodifiableEntityException "UnmodifiableEntity" // The request was rejected because only the service that depends on the service-linked @@ -3675,8 +3688,7 @@ func (c *IAM) DeleteSAMLProviderRequest(input *DeleteSAMLProviderInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeNoSuchEntityException "NoSuchEntity" // The request was rejected because it referenced a resource entity that does @@ -3758,7 +3770,7 @@ func (c *IAM) DeleteSSHPublicKeyRequest(input *DeleteSSHPublicKeyInput) (req *re // The SSH public key deleted by this operation is used only for authenticating // the associated IAM user to an AWS CodeCommit repository. For more information // about using SSH keys to authenticate to an AWS CodeCommit repository, see -// Set up AWS CodeCommit for SSH Connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) +// Set up AWS CodeCommit for SSH connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) // in the AWS CodeCommit User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3843,7 +3855,7 @@ func (c *IAM) DeleteServerCertificateRequest(input *DeleteServerCertificateInput // Deletes the specified server certificate. // // For more information about working with server certificates, see Working -// with Server Certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) // in the IAM User Guide. This topic also includes a list of AWS services that // can use the server certificates that you manage with IAM. // @@ -3853,7 +3865,7 @@ func (c *IAM) DeleteServerCertificateRequest(input *DeleteServerCertificateInput // continue to use the certificates. This could cause Elastic Load Balancing // to stop accepting traffic. We recommend that you remove the reference to // the certificate from Elastic Load Balancing before using this command to -// delete the certificate. For more information, go to DeleteLoadBalancerListeners +// delete the certificate. For more information, see DeleteLoadBalancerListeners // (https://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_DeleteLoadBalancerListeners.html) // in the Elastic Load Balancing API Reference. // @@ -3875,8 +3887,7 @@ func (c *IAM) DeleteServerCertificateRequest(input *DeleteServerCertificateInput // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -3957,16 +3968,16 @@ func (c *IAM) DeleteServiceLinkedRoleRequest(input *DeleteServiceLinkedRoleInput // // If you submit a deletion request for a service-linked role whose linked service // is still accessing a resource, then the deletion task fails. If it fails, -// the GetServiceLinkedRoleDeletionStatus API operation returns the reason for -// the failure, usually including the resources that must be deleted. To delete +// the GetServiceLinkedRoleDeletionStatus operation returns the reason for the +// failure, usually including the resources that must be deleted. To delete // the service-linked role, you must first remove those resources from the linked // service and then submit the deletion request again. Resources are specific // to the service that is linked to the role. For more information about removing // resources from a service, see the AWS documentation (http://docs.aws.amazon.com/) // for your service. // -// For more information about service-linked roles, see Roles Terms and Concepts: -// AWS Service-Linked Role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) +// For more information about service-linked roles, see Roles terms and concepts: +// AWS service-linked role (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -3983,8 +3994,7 @@ func (c *IAM) DeleteServiceLinkedRoleRequest(input *DeleteServiceLinkedRoleInput // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -4160,8 +4170,7 @@ func (c *IAM) DeleteSigningCertificateRequest(input *DeleteSigningCertificateInp // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -4237,7 +4246,7 @@ func (c *IAM) DeleteUserRequest(input *DeleteUserInput) (req *request.Request, o // Deletes the specified IAM user. Unlike the AWS Management Console, when you // delete a user programmatically, you must delete the items attached to the // user manually, or the deletion fails. For more information, see Deleting -// an IAM User (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting_cli). +// an IAM user (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting_cli). // Before attempting to delete a user, remove the following items: // // * Password (DeleteLoginProfile) @@ -4268,8 +4277,7 @@ func (c *IAM) DeleteUserRequest(input *DeleteUserInput) (req *request.Request, o // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeNoSuchEntityException "NoSuchEntity" // The request was rejected because it referenced a resource entity that does @@ -4449,7 +4457,7 @@ func (c *IAM) DeleteUserPolicyRequest(input *DeleteUserPolicyInput) (req *reques // // A user can also have managed policies attached to it. To detach a managed // policy from a user, use DetachUserPolicy. For more information about policies, -// refer to Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// refer to Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -4466,8 +4474,7 @@ func (c *IAM) DeleteUserPolicyRequest(input *DeleteUserPolicyInput) (req *reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -4563,8 +4570,7 @@ func (c *IAM) DeleteVirtualMFADeviceRequest(input *DeleteVirtualMFADeviceInput) // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -4640,8 +4646,8 @@ func (c *IAM) DetachGroupPolicyRequest(input *DetachGroupPolicyInput) (req *requ // Removes the specified managed policy from the specified IAM group. // // A group can also have inline policies embedded with it. To delete an inline -// policy, use the DeleteGroupPolicy API. For information about policies, see -// Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// policy, use DeleteGroupPolicy. For information about policies, see Managed +// policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -4658,8 +4664,7 @@ func (c *IAM) DetachGroupPolicyRequest(input *DetachGroupPolicyInput) (req *requ // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -4739,8 +4744,8 @@ func (c *IAM) DetachRolePolicyRequest(input *DetachRolePolicyInput) (req *reques // Removes the specified managed policy from the specified role. // // A role can also have inline policies embedded with it. To delete an inline -// policy, use the DeleteRolePolicy API. For information about policies, see -// Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// policy, use DeleteRolePolicy. For information about policies, see Managed +// policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -4757,8 +4762,7 @@ func (c *IAM) DetachRolePolicyRequest(input *DetachRolePolicyInput) (req *reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -4844,8 +4848,8 @@ func (c *IAM) DetachUserPolicyRequest(input *DetachUserPolicyInput) (req *reques // Removes the specified managed policy from the specified user. // // A user can also have inline policies embedded with it. To delete an inline -// policy, use the DeleteUserPolicy API. For information about policies, see -// Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// policy, use DeleteUserPolicy. For information about policies, see Managed +// policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -4862,8 +4866,7 @@ func (c *IAM) DetachUserPolicyRequest(input *DetachUserPolicyInput) (req *reques // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -4968,8 +4971,7 @@ func (c *IAM) EnableMFADeviceRequest(input *EnableMFADeviceInput) (req *request. // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeNoSuchEntityException "NoSuchEntity" // The request was rejected because it referenced a resource entity that does @@ -5046,7 +5048,7 @@ func (c *IAM) GenerateCredentialReportRequest(input *GenerateCredentialReportInp // GenerateCredentialReport API operation for AWS Identity and Access Management. // // Generates a credential report for the AWS account. For more information about -// the credential report, see Getting Credential Reports (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) +// the credential report, see Getting credential reports (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -5059,8 +5061,7 @@ func (c *IAM) GenerateCredentialReportRequest(input *GenerateCredentialReportInp // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -5137,11 +5138,11 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // unit, or account) or policies in your organization. // // To call this operation, you must be signed in using your AWS Organizations -// master account credentials. You can use your long-term IAM user or root user -// credentials, or temporary credentials from assuming an IAM role. SCPs must -// be enabled for your organization root. You must have the required IAM and -// AWS Organizations permissions. For more information, see Refining Permissions -// Using Service Last Accessed Data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) +// management account credentials. You can use your long-term IAM user or root +// user credentials, or temporary credentials from assuming an IAM role. SCPs +// must be enabled for your organization root. You must have the required IAM +// and AWS Organizations permissions. For more information, see Refining permissions +// using service last accessed data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) // in the IAM User Guide. // // You can generate a service last accessed data report for entities by specifying @@ -5156,7 +5157,7 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // account activity that the policy allows to account principals in the entity // or the entity's children. For important information about the data, reporting // period, permissions required, troubleshooting, and supported Regions see -// Reducing Permissions Using Service Last Accessed Data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) +// Reducing permissions using service last accessed data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) // in the IAM User Guide. // // The data includes all attempts to access AWS, not just the successful ones. @@ -5166,7 +5167,7 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // account has been compromised, because the request might have been denied. // Refer to your CloudTrail logs as the authoritative source for information // about all API calls and whether they were successful or denied access. For -// more information, see Logging IAM Events with CloudTrail (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) +// more information, see Logging IAM events with CloudTrail (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) // in the IAM User Guide. // // This operation returns a JobId. Use this parameter in the GetOrganizationsAccessReport @@ -5182,19 +5183,19 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // * Root – When you specify the organizations root as the entity, the // resulting report lists all of the services allowed by SCPs that are attached // to your root. For each service, the report includes data for all accounts -// in your organization except the master account, because the master account -// is not limited by SCPs. +// in your organization except the management account, because the management +// account is not limited by SCPs. // // * OU – When you specify an organizational unit (OU) as the entity, the // resulting report lists all of the services allowed by SCPs that are attached // to the OU and its parents. For each service, the report includes data -// for all accounts in the OU or its children. This data excludes the master -// account, because the master account is not limited by SCPs. +// for all accounts in the OU or its children. This data excludes the management +// account, because the management account is not limited by SCPs. // -// * Master account – When you specify the master account, the resulting -// report lists all AWS services, because the master account is not limited -// by SCPs. For each service, the report includes data for only the master -// account. +// * management account – When you specify the management account, the +// resulting report lists all AWS services, because the management account +// is not limited by SCPs. For each service, the report includes data for +// only the management account. // // * Account – When you specify another account as the entity, the resulting // report lists all of the services allowed by SCPs that are attached to @@ -5208,8 +5209,8 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // * Root – When you specify the root entity and a policy ID, the resulting // report lists all of the services that are allowed by the specified SCP. // For each service, the report includes data for all accounts in your organization -// to which the SCP applies. This data excludes the master account, because -// the master account is not limited by SCPs. If the SCP is not attached +// to which the SCP applies. This data excludes the management account, because +// the management account is not limited by SCPs. If the SCP is not attached // to any entities in the organization, then the report will return a list // of services with no data. // @@ -5218,14 +5219,16 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // For each service, the report includes data for all accounts in the OU // or its children to which the SCP applies. This means that other accounts // outside the OU that are affected by the SCP might not be included in the -// data. This data excludes the master account, because the master account -// is not limited by SCPs. If the SCP is not attached to the OU or one of -// its children, the report will return a list of services with no data. +// data. This data excludes the management account, because the management +// account is not limited by SCPs. If the SCP is not attached to the OU or +// one of its children, the report will return a list of services with no +// data. // -// * Master account – When you specify the master account, the resulting -// report lists all AWS services, because the master account is not limited -// by SCPs. If you specify a policy ID in the CLI or API, the policy is ignored. -// For each service, the report includes data for only the master account. +// * management account – When you specify the management account, the +// resulting report lists all AWS services, because the management account +// is not limited by SCPs. If you specify a policy ID in the CLI or API, +// the policy is ignored. For each service, the report includes data for +// only the management account. // // * Account – When you specify another account entity and a policy ID, // the resulting report lists all of the services that are allowed by the @@ -5239,12 +5242,12 @@ func (c *IAM) GenerateOrganizationsAccessReportRequest(input *GenerateOrganizati // whether a principal could access a service. These other policy types include // identity-based policies, resource-based policies, access control lists, IAM // permissions boundaries, and STS assume role policies. It only applies SCP -// logic. For more about the evaluation of policy types, see Evaluating Policies +// logic. For more about the evaluation of policy types, see Evaluating policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) // in the IAM User Guide. // -// For more information about service last accessed data, see Reducing Policy -// Scope by Viewing User Activity (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) +// For more information about service last accessed data, see Reducing policy +// scope by viewing user activity (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -5329,7 +5332,7 @@ func (c *IAM) GenerateServiceLastAccessedDetailsRequest(input *GenerateServiceLa // group, role, or policy) was last used in an attempt to access AWS services. // Recent activity usually appears within four hours. IAM reports activity for // the last 365 days, or less if your Region began supporting this feature within -// the last year. For more information, see Regions Where Data Is Tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period). +// the last year. For more information, see Regions where data is tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period). // // The service last accessed data includes all attempts to access an AWS API, // not just the successful ones. This includes all attempts that were made using @@ -5338,7 +5341,7 @@ func (c *IAM) GenerateServiceLastAccessedDetailsRequest(input *GenerateServiceLa // data does not mean that your account has been compromised, because the request // might have been denied. Refer to your CloudTrail logs as the authoritative // source for information about all API calls and whether they were successful -// or denied access. For more information, see Logging IAM Events with CloudTrail +// or denied access. For more information, see Logging IAM events with CloudTrail // (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) // in the IAM User Guide. // @@ -5370,11 +5373,11 @@ func (c *IAM) GenerateServiceLastAccessedDetailsRequest(input *GenerateServiceLa // resource-based policies, access control lists, AWS Organizations policies, // IAM permissions boundaries, and AWS STS assume role policies. It only applies // permissions policy logic. For more about the evaluation of policy types, -// see Evaluating Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) +// see Evaluating policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) // in the IAM User Guide. // // For more information about service and action last accessed data, see Reducing -// Permissions Using Service Last Accessed Data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) +// permissions using service last accessed data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -5544,14 +5547,14 @@ func (c *IAM) GetAccountAuthorizationDetailsRequest(input *GetAccountAuthorizati // // Retrieves information about all IAM users, groups, roles, and policies in // your AWS account, including their relationships to one another. Use this -// API to obtain a snapshot of the configuration of IAM permissions (users, +// operation to obtain a snapshot of the configuration of IAM permissions (users, // groups, roles, and policies) in your account. // -// Policies returned by this API are URL-encoded compliant with RFC 3986 (https://tools.ietf.org/html/rfc3986). -// You can use a URL decoding method to convert the policy back to plain JSON -// text. For example, if you use Java, you can use the decode method of the -// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs -// provide similar functionality. +// Policies returned by this operation are URL-encoded compliant with RFC 3986 +// (https://tools.ietf.org/html/rfc3986). You can use a URL decoding method +// to convert the policy back to plain JSON text. For example, if you use Java, +// you can use the decode method of the java.net.URLDecoder utility class in +// the Java SDK. Other languages and SDKs provide similar functionality. // // You can optionally filter the results using the Filter parameter. You can // paginate the results using the MaxItems and Marker parameters. @@ -5686,8 +5689,10 @@ func (c *IAM) GetAccountPasswordPolicyRequest(input *GetAccountPasswordPolicyInp // GetAccountPasswordPolicy API operation for AWS Identity and Access Management. // -// Retrieves the password policy for the AWS account. For more information about -// using a password policy, go to Managing an IAM Password Policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html). +// Retrieves the password policy for the AWS account. This tells you the complexity +// requirements and mandatory rotation periods for the IAM user passwords in +// your account. For more information about using a password policy, see Managing +// an IAM password policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -5773,8 +5778,7 @@ func (c *IAM) GetAccountSummaryRequest(input *GetAccountSummaryInput) (req *requ // // Retrieves information about IAM entity usage and IAM quotas in the AWS account. // -// The number and size of IAM resources in an AWS account are limited. For more -// information, see IAM and STS Quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) +// For information about IAM quotas, see IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -5953,9 +5957,9 @@ func (c *IAM) GetContextKeysForPrincipalPolicyRequest(input *GetContextKeysForPr // as strings. If you want to include only a list of policies by string, use // GetContextKeysForCustomPolicy instead. // -// Note: This API discloses information about the permissions granted to other -// users. If you do not want users to see other user's permissions, then consider -// allowing them to use GetContextKeysForCustomPolicy instead. +// Note: This operation discloses information about the permissions granted +// to other users. If you do not want users to see other user's permissions, +// then consider allowing them to use GetContextKeysForCustomPolicy instead. // // Context keys are variables maintained by AWS and its services that provide // details about the context of an API query request. Context keys can be evaluated @@ -6045,7 +6049,7 @@ func (c *IAM) GetCredentialReportRequest(input *GetCredentialReportInput) (req * // GetCredentialReport API operation for AWS Identity and Access Management. // // Retrieves a credential report for the AWS account. For more information about -// the credential report, see Getting Credential Reports (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) +// the credential report, see Getting credential reports (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -6063,7 +6067,7 @@ func (c *IAM) GetCredentialReportRequest(input *GetCredentialReportInput) (req * // * ErrCodeCredentialReportExpiredException "ReportExpired" // The request was rejected because the most recent credential report has expired. // To generate a new credential report, use GenerateCredentialReport. For more -// information about credential report expiration, see Getting Credential Reports +// information about credential report expiration, see Getting credential reports // (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) // in the IAM User Guide. // @@ -6286,18 +6290,18 @@ func (c *IAM) GetGroupPolicyRequest(input *GetGroupPolicyInput) (req *request.Re // Retrieves the specified inline policy document that is embedded in the specified // IAM group. // -// Policies returned by this API are URL-encoded compliant with RFC 3986 (https://tools.ietf.org/html/rfc3986). -// You can use a URL decoding method to convert the policy back to plain JSON -// text. For example, if you use Java, you can use the decode method of the -// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs -// provide similar functionality. +// Policies returned by this operation are URL-encoded compliant with RFC 3986 +// (https://tools.ietf.org/html/rfc3986). You can use a URL decoding method +// to convert the policy back to plain JSON text. For example, if you use Java, +// you can use the decode method of the java.net.URLDecoder utility class in +// the Java SDK. Other languages and SDKs provide similar functionality. // // An IAM group can also have managed policies attached to it. To retrieve a // managed policy document that is attached to a group, use GetPolicy to determine // the policy's default version, then use GetPolicyVersion to retrieve the policy // document. // -// For more information about policies, see Managed Policies and Inline Policies +// For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -6385,7 +6389,7 @@ func (c *IAM) GetInstanceProfileRequest(input *GetInstanceProfileInput) (req *re // // Retrieves information about the specified instance profile, including the // instance profile's path, GUID, ARN, and role. For more information about -// instance profiles, see About Instance Profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html) +// instance profiles, see About instance profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -6470,7 +6474,7 @@ func (c *IAM) GetLoginProfileRequest(input *GetLoginProfileInput) (req *request. // GetLoginProfile API operation for AWS Identity and Access Management. // -// Retrieves the user name and password-creation date for the specified IAM +// Retrieves the user name and password creation date for the specified IAM // user. If the user has not been assigned a password, the operation returns // a 404 (NoSuchEntity) error. // @@ -6652,10 +6656,10 @@ func (c *IAM) GetOrganizationsAccessReportRequest(input *GetOrganizationsAccessR // Depending on the parameters that you passed when you generated the report, // the data returned could include different information. For details, see GenerateOrganizationsAccessReport. // -// To call this operation, you must be signed in to the master account in your -// organization. SCPs must be enabled for your organization root. You must have -// permissions to perform this operation. For more information, see Refining -// Permissions Using Service Last Accessed Data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) +// To call this operation, you must be signed in to the management account in +// your organization. SCPs must be enabled for your organization root. You must +// have permissions to perform this operation. For more information, see Refining +// permissions using service last accessed data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) // in the IAM User Guide. // // For each service that principals in an account (root users, IAM users, or @@ -6747,15 +6751,15 @@ func (c *IAM) GetPolicyRequest(input *GetPolicyInput) (req *request.Request, out // Retrieves information about the specified managed policy, including the policy's // default version and the total number of IAM users, groups, and roles to which // the policy is attached. To retrieve the list of the specific users, groups, -// and roles that the policy is attached to, use the ListEntitiesForPolicy API. -// This API returns metadata about the policy. To retrieve the actual policy +// and roles that the policy is attached to, use ListEntitiesForPolicy. This +// operation returns metadata about the policy. To retrieve the actual policy // document for a specific version of the policy, use GetPolicyVersion. // -// This API retrieves information about managed policies. To retrieve information -// about an inline policy that is embedded with an IAM user, group, or role, -// use the GetUserPolicy, GetGroupPolicy, or GetRolePolicy API. +// This operation retrieves information about managed policies. To retrieve +// information about an inline policy that is embedded with an IAM user, group, +// or role, use GetUserPolicy, GetGroupPolicy, or GetRolePolicy. // -// For more information about policies, see Managed Policies and Inline Policies +// For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -6848,24 +6852,24 @@ func (c *IAM) GetPolicyVersionRequest(input *GetPolicyVersionInput) (req *reques // Retrieves information about the specified version of the specified managed // policy, including the policy document. // -// Policies returned by this API are URL-encoded compliant with RFC 3986 (https://tools.ietf.org/html/rfc3986). -// You can use a URL decoding method to convert the policy back to plain JSON -// text. For example, if you use Java, you can use the decode method of the -// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs -// provide similar functionality. +// Policies returned by this operation are URL-encoded compliant with RFC 3986 +// (https://tools.ietf.org/html/rfc3986). You can use a URL decoding method +// to convert the policy back to plain JSON text. For example, if you use Java, +// you can use the decode method of the java.net.URLDecoder utility class in +// the Java SDK. Other languages and SDKs provide similar functionality. // // To list the available versions for a policy, use ListPolicyVersions. // -// This API retrieves information about managed policies. To retrieve information -// about an inline policy that is embedded in a user, group, or role, use the -// GetUserPolicy, GetGroupPolicy, or GetRolePolicy API. +// This operation retrieves information about managed policies. To retrieve +// information about an inline policy that is embedded in a user, group, or +// role, use GetUserPolicy, GetGroupPolicy, or GetRolePolicy. // -// For more information about the types of policies, see Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about the types of policies, see Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // -// For more information about managed policy versions, see Versioning for Managed -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) +// For more information about managed policy versions, see Versioning for managed +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -6956,13 +6960,13 @@ func (c *IAM) GetRoleRequest(input *GetRoleInput) (req *request.Request, output // // Retrieves information about the specified role, including the role's path, // GUID, ARN, and the role's trust policy that grants permission to assume the -// role. For more information about roles, see Working with Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// role. For more information about roles, see Working with roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). // -// Policies returned by this API are URL-encoded compliant with RFC 3986 (https://tools.ietf.org/html/rfc3986). -// You can use a URL decoding method to convert the policy back to plain JSON -// text. For example, if you use Java, you can use the decode method of the -// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs -// provide similar functionality. +// Policies returned by this operation are URL-encoded compliant with RFC 3986 +// (https://tools.ietf.org/html/rfc3986). You can use a URL decoding method +// to convert the policy back to plain JSON text. For example, if you use Java, +// you can use the decode method of the java.net.URLDecoder utility class in +// the Java SDK. Other languages and SDKs provide similar functionality. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7049,23 +7053,23 @@ func (c *IAM) GetRolePolicyRequest(input *GetRolePolicyInput) (req *request.Requ // Retrieves the specified inline policy document that is embedded with the // specified IAM role. // -// Policies returned by this API are URL-encoded compliant with RFC 3986 (https://tools.ietf.org/html/rfc3986). -// You can use a URL decoding method to convert the policy back to plain JSON -// text. For example, if you use Java, you can use the decode method of the -// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs -// provide similar functionality. +// Policies returned by this operation are URL-encoded compliant with RFC 3986 +// (https://tools.ietf.org/html/rfc3986). You can use a URL decoding method +// to convert the policy back to plain JSON text. For example, if you use Java, +// you can use the decode method of the java.net.URLDecoder utility class in +// the Java SDK. Other languages and SDKs provide similar functionality. // // An IAM role can also have managed policies attached to it. To retrieve a // managed policy document that is attached to a role, use GetPolicy to determine // the policy's default version, then use GetPolicyVersion to retrieve the policy // document. // -// For more information about policies, see Managed Policies and Inline Policies +// For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // -// For more information about roles, see Using Roles to Delegate Permissions -// and Federate Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html). +// For more information about roles, see Using roles to delegate permissions +// and federate identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7245,7 +7249,7 @@ func (c *IAM) GetSSHPublicKeyRequest(input *GetSSHPublicKeyInput) (req *request. // The SSH public key retrieved by this operation is used only for authenticating // the associated IAM user to an AWS CodeCommit repository. For more information // about using SSH keys to authenticate to an AWS CodeCommit repository, see -// Set up AWS CodeCommit for SSH Connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) +// Set up AWS CodeCommit for SSH connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) // in the AWS CodeCommit User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -7333,7 +7337,7 @@ func (c *IAM) GetServerCertificateRequest(input *GetServerCertificateInput) (req // Retrieves information about the specified server certificate stored in IAM. // // For more information about working with server certificates, see Working -// with Server Certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) // in the IAM User Guide. This topic includes a list of AWS services that can // use the server certificates that you manage with IAM. // @@ -7430,7 +7434,7 @@ func (c *IAM) GetServiceLastAccessedDetailsRequest(input *GetServiceLastAccessed // resource-based policies, access control lists, AWS Organizations policies, // IAM permissions boundaries, and AWS STS assume role policies. It only applies // permissions policy logic. For more about the evaluation of policy types, -// see Evaluating Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) +// see Evaluating policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) // in the IAM User Guide. // // For each service that the resource could access using permissions policies, @@ -7463,7 +7467,7 @@ func (c *IAM) GetServiceLastAccessedDetailsRequest(input *GetServiceLastAccessed // Otherwise, this operation returns only service data. // // For more information about service and action last accessed data, see Reducing -// Permissions Using Service Last Accessed Data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) +// permissions using service last accessed data (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -7654,8 +7658,8 @@ func (c *IAM) GetServiceLinkedRoleDeletionStatusRequest(input *GetServiceLinkedR // GetServiceLinkedRoleDeletionStatus API operation for AWS Identity and Access Management. // // Retrieves the status of your service-linked role deletion. After you use -// the DeleteServiceLinkedRole API operation to submit a service-linked role -// for deletion, you can use the DeletionTaskId parameter in GetServiceLinkedRoleDeletionStatus +// DeleteServiceLinkedRole to submit a service-linked role for deletion, you +// can use the DeletionTaskId parameter in GetServiceLinkedRoleDeletionStatus // to check the status of the deletion. If the deletion fails, this operation // returns the reason that it failed, if that information is returned by the // service. @@ -7750,7 +7754,7 @@ func (c *IAM) GetUserRequest(input *GetUserInput) (req *request.Request, output // creation date, path, unique ID, and ARN. // // If you do not specify a user name, IAM determines the user name implicitly -// based on the AWS access key ID used to sign the request to this API. +// based on the AWS access key ID used to sign the request to this operation. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7837,18 +7841,18 @@ func (c *IAM) GetUserPolicyRequest(input *GetUserPolicyInput) (req *request.Requ // Retrieves the specified inline policy document that is embedded in the specified // IAM user. // -// Policies returned by this API are URL-encoded compliant with RFC 3986 (https://tools.ietf.org/html/rfc3986). -// You can use a URL decoding method to convert the policy back to plain JSON -// text. For example, if you use Java, you can use the decode method of the -// java.net.URLDecoder utility class in the Java SDK. Other languages and SDKs -// provide similar functionality. +// Policies returned by this operation are URL-encoded compliant with RFC 3986 +// (https://tools.ietf.org/html/rfc3986). You can use a URL decoding method +// to convert the policy back to plain JSON text. For example, if you use Java, +// you can use the decode method of the java.net.URLDecoder utility class in +// the Java SDK. Other languages and SDKs provide similar functionality. // // An IAM user can also have managed policies attached to it. To retrieve a // managed policy document that is attached to a user, use GetPolicy to determine // the policy's default version. Then use GetPolicyVersion to retrieve the policy // document. // -// For more information about policies, see Managed Policies and Inline Policies +// For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -8097,7 +8101,7 @@ func (c *IAM) ListAccountAliasesRequest(input *ListAccountAliasesInput) (req *re // // Lists the account alias associated with the AWS account (Note: you can have // only one). For information about using an AWS account alias, see Using an -// Alias for Your AWS Account ID (https://docs.aws.amazon.com/IAM/latest/UserGuide/AccountAlias.html) +// alias for your AWS account ID (https://docs.aws.amazon.com/IAM/latest/UserGuide/AccountAlias.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -8239,8 +8243,8 @@ func (c *IAM) ListAttachedGroupPoliciesRequest(input *ListAttachedGroupPoliciesI // Lists all managed policies that are attached to the specified IAM group. // // An IAM group can also have inline policies embedded with it. To list the -// inline policies for a group, use the ListGroupPolicies API. For information -// about policies, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// inline policies for a group, use ListGroupPolicies. For information about +// policies, see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // You can paginate the results using the MaxItems and Marker parameters. You @@ -8396,8 +8400,8 @@ func (c *IAM) ListAttachedRolePoliciesRequest(input *ListAttachedRolePoliciesInp // Lists all managed policies that are attached to the specified IAM role. // // An IAM role can also have inline policies embedded with it. To list the inline -// policies for a role, use the ListRolePolicies API. For information about -// policies, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// policies for a role, use ListRolePolicies. For information about policies, +// see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // You can paginate the results using the MaxItems and Marker parameters. You @@ -8553,8 +8557,8 @@ func (c *IAM) ListAttachedUserPoliciesRequest(input *ListAttachedUserPoliciesInp // Lists all managed policies that are attached to the specified IAM user. // // An IAM user can also have inline policies embedded with it. To list the inline -// policies for a user, use the ListUserPolicies API. For information about -// policies, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// policies for a user, use ListUserPolicies. For information about policies, +// see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // You can paginate the results using the MaxItems and Marker parameters. You @@ -8866,7 +8870,7 @@ func (c *IAM) ListGroupPoliciesRequest(input *ListGroupPoliciesInput) (req *requ // // An IAM group can also have managed policies attached to it. To list the managed // policies that are attached to a group, use ListAttachedGroupPolicies. For -// more information about policies, see Managed Policies and Inline Policies +// more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -9248,6 +9252,93 @@ func (c *IAM) ListGroupsForUserPagesWithContext(ctx aws.Context, input *ListGrou return p.Err() } +const opListInstanceProfileTags = "ListInstanceProfileTags" + +// ListInstanceProfileTagsRequest generates a "aws/request.Request" representing the +// client's request for the ListInstanceProfileTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListInstanceProfileTags for more information on using the ListInstanceProfileTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListInstanceProfileTagsRequest method. +// req, resp := client.ListInstanceProfileTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListInstanceProfileTags +func (c *IAM) ListInstanceProfileTagsRequest(input *ListInstanceProfileTagsInput) (req *request.Request, output *ListInstanceProfileTagsOutput) { + op := &request.Operation{ + Name: opListInstanceProfileTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListInstanceProfileTagsInput{} + } + + output = &ListInstanceProfileTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListInstanceProfileTags API operation for AWS Identity and Access Management. +// +// Lists the tags that are attached to the specified IAM instance profile. The +// returned list of tags is sorted by tag key. For more information about tagging, +// see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation ListInstanceProfileTags for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListInstanceProfileTags +func (c *IAM) ListInstanceProfileTags(input *ListInstanceProfileTagsInput) (*ListInstanceProfileTagsOutput, error) { + req, out := c.ListInstanceProfileTagsRequest(input) + return out, req.Send() +} + +// ListInstanceProfileTagsWithContext is the same as ListInstanceProfileTags with the addition of +// the ability to pass a context and additional request options. +// +// See ListInstanceProfileTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) ListInstanceProfileTagsWithContext(ctx aws.Context, input *ListInstanceProfileTagsInput, opts ...request.Option) (*ListInstanceProfileTagsOutput, error) { + req, out := c.ListInstanceProfileTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListInstanceProfiles = "ListInstanceProfiles" // ListInstanceProfilesRequest generates a "aws/request.Request" representing the @@ -9300,7 +9391,12 @@ func (c *IAM) ListInstanceProfilesRequest(input *ListInstanceProfilesInput) (req // // Lists the instance profiles that have the specified path prefix. If there // are none, the operation returns an empty list. For more information about -// instance profiles, go to About Instance Profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). +// instance profiles, see About instance profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). +// +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for an instance profile, see GetInstanceProfile. // // You can paginate the results using the MaxItems and Marker parameters. // @@ -9442,7 +9538,7 @@ func (c *IAM) ListInstanceProfilesForRoleRequest(input *ListInstanceProfilesForR // // Lists the instance profiles that have the specified associated IAM role. // If there are none, the operation returns an empty list. For more information -// about instance profiles, go to About Instance Profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). +// about instance profiles, go to About instance profiles (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). // // You can paginate the results using the MaxItems and Marker parameters. // @@ -9536,6 +9632,97 @@ func (c *IAM) ListInstanceProfilesForRolePagesWithContext(ctx aws.Context, input return p.Err() } +const opListMFADeviceTags = "ListMFADeviceTags" + +// ListMFADeviceTagsRequest generates a "aws/request.Request" representing the +// client's request for the ListMFADeviceTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListMFADeviceTags for more information on using the ListMFADeviceTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListMFADeviceTagsRequest method. +// req, resp := client.ListMFADeviceTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListMFADeviceTags +func (c *IAM) ListMFADeviceTagsRequest(input *ListMFADeviceTagsInput) (req *request.Request, output *ListMFADeviceTagsOutput) { + op := &request.Operation{ + Name: opListMFADeviceTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListMFADeviceTagsInput{} + } + + output = &ListMFADeviceTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListMFADeviceTags API operation for AWS Identity and Access Management. +// +// Lists the tags that are attached to the specified IAM virtual multi-factor +// authentication (MFA) device. The returned list of tags is sorted by tag key. +// For more information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation ListMFADeviceTags for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListMFADeviceTags +func (c *IAM) ListMFADeviceTags(input *ListMFADeviceTagsInput) (*ListMFADeviceTagsOutput, error) { + req, out := c.ListMFADeviceTagsRequest(input) + return out, req.Send() +} + +// ListMFADeviceTagsWithContext is the same as ListMFADeviceTags with the addition of +// the ability to pass a context and additional request options. +// +// See ListMFADeviceTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) ListMFADeviceTagsWithContext(ctx aws.Context, input *ListMFADeviceTagsInput, opts ...request.Option) (*ListMFADeviceTagsOutput, error) { + req, out := c.ListMFADeviceTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListMFADevices = "ListMFADevices" // ListMFADevicesRequest generates a "aws/request.Request" representing the @@ -9589,7 +9776,7 @@ func (c *IAM) ListMFADevicesRequest(input *ListMFADevicesInput) (req *request.Re // Lists the MFA devices for an IAM user. If the request includes a IAM user // name, then this operation lists all the MFA devices associated with the specified // user. If you do not specify a user name, IAM determines the user name implicitly -// based on the AWS access key ID signing the request for this API. +// based on the AWS access key ID signing the request for this operation. // // You can paginate the results using the MaxItems and Marker parameters. // @@ -9683,6 +9870,99 @@ func (c *IAM) ListMFADevicesPagesWithContext(ctx aws.Context, input *ListMFADevi return p.Err() } +const opListOpenIDConnectProviderTags = "ListOpenIDConnectProviderTags" + +// ListOpenIDConnectProviderTagsRequest generates a "aws/request.Request" representing the +// client's request for the ListOpenIDConnectProviderTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListOpenIDConnectProviderTags for more information on using the ListOpenIDConnectProviderTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListOpenIDConnectProviderTagsRequest method. +// req, resp := client.ListOpenIDConnectProviderTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListOpenIDConnectProviderTags +func (c *IAM) ListOpenIDConnectProviderTagsRequest(input *ListOpenIDConnectProviderTagsInput) (req *request.Request, output *ListOpenIDConnectProviderTagsOutput) { + op := &request.Operation{ + Name: opListOpenIDConnectProviderTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListOpenIDConnectProviderTagsInput{} + } + + output = &ListOpenIDConnectProviderTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListOpenIDConnectProviderTags API operation for AWS Identity and Access Management. +// +// Lists the tags that are attached to the specified OpenID Connect (OIDC)-compatible +// identity provider. The returned list of tags is sorted by tag key. For more +// information, see About web identity federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html). +// +// For more information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation ListOpenIDConnectProviderTags for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListOpenIDConnectProviderTags +func (c *IAM) ListOpenIDConnectProviderTags(input *ListOpenIDConnectProviderTagsInput) (*ListOpenIDConnectProviderTagsOutput, error) { + req, out := c.ListOpenIDConnectProviderTagsRequest(input) + return out, req.Send() +} + +// ListOpenIDConnectProviderTagsWithContext is the same as ListOpenIDConnectProviderTags with the addition of +// the ability to pass a context and additional request options. +// +// See ListOpenIDConnectProviderTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) ListOpenIDConnectProviderTagsWithContext(ctx aws.Context, input *ListOpenIDConnectProviderTagsInput, opts ...request.Option) (*ListOpenIDConnectProviderTagsOutput, error) { + req, out := c.ListOpenIDConnectProviderTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListOpenIDConnectProviders = "ListOpenIDConnectProviders" // ListOpenIDConnectProvidersRequest generates a "aws/request.Request" representing the @@ -9730,6 +10010,11 @@ func (c *IAM) ListOpenIDConnectProvidersRequest(input *ListOpenIDConnectProvider // Lists information about the IAM OpenID Connect (OIDC) provider resource objects // defined in the AWS account. // +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for an OIDC provider, see GetOpenIDConnectProvider. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -9824,10 +10109,15 @@ func (c *IAM) ListPoliciesRequest(input *ListPoliciesInput) (req *request.Reques // // You can paginate the results using the MaxItems and Marker parameters. // -// For more information about managed policies, see Managed Policies and Inline -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, see Managed policies and inline +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for a customer manged policy, see GetPolicy. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -9966,7 +10256,7 @@ func (c *IAM) ListPoliciesGrantingServiceAccessRequest(input *ListPoliciesGranti // policies, access control lists, AWS Organizations policies, IAM permissions // boundaries, and AWS STS assume role policies. It only applies permissions // policy logic. For more about the evaluation of policy types, see Evaluating -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics) // in the IAM User Guide. // // The list of policies returned by the operation depends on the ARN of the @@ -9987,7 +10277,7 @@ func (c *IAM) ListPoliciesGrantingServiceAccessRequest(input *ListPoliciesGranti // For each managed policy, this operation returns the ARN and policy name. // For each inline policy, it returns the policy name and the entity to which // it is attached. Inline policies do not have an ARN. For more information -// about these policy types, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) +// about these policy types, see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) // in the IAM User Guide. // // Policies that are attached to users and roles as permissions boundaries are @@ -10032,6 +10322,97 @@ func (c *IAM) ListPoliciesGrantingServiceAccessWithContext(ctx aws.Context, inpu return out, req.Send() } +const opListPolicyTags = "ListPolicyTags" + +// ListPolicyTagsRequest generates a "aws/request.Request" representing the +// client's request for the ListPolicyTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListPolicyTags for more information on using the ListPolicyTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListPolicyTagsRequest method. +// req, resp := client.ListPolicyTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListPolicyTags +func (c *IAM) ListPolicyTagsRequest(input *ListPolicyTagsInput) (req *request.Request, output *ListPolicyTagsOutput) { + op := &request.Operation{ + Name: opListPolicyTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListPolicyTagsInput{} + } + + output = &ListPolicyTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListPolicyTags API operation for AWS Identity and Access Management. +// +// Lists the tags that are attached to the specified IAM customer managed policy. +// The returned list of tags is sorted by tag key. For more information about +// tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation ListPolicyTags for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListPolicyTags +func (c *IAM) ListPolicyTags(input *ListPolicyTagsInput) (*ListPolicyTagsOutput, error) { + req, out := c.ListPolicyTagsRequest(input) + return out, req.Send() +} + +// ListPolicyTagsWithContext is the same as ListPolicyTags with the addition of +// the ability to pass a context and additional request options. +// +// See ListPolicyTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) ListPolicyTagsWithContext(ctx aws.Context, input *ListPolicyTagsInput, opts ...request.Option) (*ListPolicyTagsOutput, error) { + req, out := c.ListPolicyTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListPolicyVersions = "ListPolicyVersions" // ListPolicyVersionsRequest generates a "aws/request.Request" representing the @@ -10085,8 +10466,8 @@ func (c *IAM) ListPolicyVersionsRequest(input *ListPolicyVersionsInput) (req *re // Lists information about the versions of the specified managed policy, including // the version that is currently set as the policy's default version. // -// For more information about managed policies, see Managed Policies and Inline -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, see Managed policies and inline +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -10238,7 +10619,7 @@ func (c *IAM) ListRolePoliciesRequest(input *ListRolePoliciesInput) (req *reques // // An IAM role can also have managed policies attached to it. To list the managed // policies that are attached to a role, use ListAttachedRolePolicies. For more -// information about policies, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// information about policies, see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // You can paginate the results using the MaxItems and Marker parameters. If @@ -10381,7 +10762,7 @@ func (c *IAM) ListRoleTagsRequest(input *ListRoleTagsInput) (req *request.Reques // // Lists the tags that are attached to the specified role. The returned list // of tags is sorted by tag key. For more information about tagging, see Tagging -// IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -10473,8 +10854,13 @@ func (c *IAM) ListRolesRequest(input *ListRolesInput) (req *request.Request, out // ListRoles API operation for AWS Identity and Access Management. // // Lists the IAM roles that have the specified path prefix. If there are none, -// the operation returns an empty list. For more information about roles, go -// to Working with Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// the operation returns an empty list. For more information about roles, see +// Working with roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for a role, see GetRole. // // You can paginate the results using the MaxItems and Marker parameters. // @@ -10564,6 +10950,99 @@ func (c *IAM) ListRolesPagesWithContext(ctx aws.Context, input *ListRolesInput, return p.Err() } +const opListSAMLProviderTags = "ListSAMLProviderTags" + +// ListSAMLProviderTagsRequest generates a "aws/request.Request" representing the +// client's request for the ListSAMLProviderTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListSAMLProviderTags for more information on using the ListSAMLProviderTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListSAMLProviderTagsRequest method. +// req, resp := client.ListSAMLProviderTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListSAMLProviderTags +func (c *IAM) ListSAMLProviderTagsRequest(input *ListSAMLProviderTagsInput) (req *request.Request, output *ListSAMLProviderTagsOutput) { + op := &request.Operation{ + Name: opListSAMLProviderTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListSAMLProviderTagsInput{} + } + + output = &ListSAMLProviderTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListSAMLProviderTags API operation for AWS Identity and Access Management. +// +// Lists the tags that are attached to the specified Security Assertion Markup +// Language (SAML) identity provider. The returned list of tags is sorted by +// tag key. For more information, see About SAML 2.0-based federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html). +// +// For more information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation ListSAMLProviderTags for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListSAMLProviderTags +func (c *IAM) ListSAMLProviderTags(input *ListSAMLProviderTagsInput) (*ListSAMLProviderTagsOutput, error) { + req, out := c.ListSAMLProviderTagsRequest(input) + return out, req.Send() +} + +// ListSAMLProviderTagsWithContext is the same as ListSAMLProviderTags with the addition of +// the ability to pass a context and additional request options. +// +// See ListSAMLProviderTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) ListSAMLProviderTagsWithContext(ctx aws.Context, input *ListSAMLProviderTagsInput, opts ...request.Option) (*ListSAMLProviderTagsOutput, error) { + req, out := c.ListSAMLProviderTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListSAMLProviders = "ListSAMLProviders" // ListSAMLProvidersRequest generates a "aws/request.Request" representing the @@ -10608,7 +11087,11 @@ func (c *IAM) ListSAMLProvidersRequest(input *ListSAMLProvidersInput) (req *requ // ListSAMLProviders API operation for AWS Identity and Access Management. // -// Lists the SAML provider resource objects defined in IAM in the account. +// Lists the SAML provider resource objects defined in IAM in the account. IAM +// resource-listing operations return a subset of the available attributes for +// the resource. For example, this operation does not return tags, even though +// they are an attribute of the returned object. To view all of the information +// for a SAML provider, see GetSAMLProvider. // // This operation requires Signature Version 4 (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). // @@ -10702,7 +11185,7 @@ func (c *IAM) ListSSHPublicKeysRequest(input *ListSSHPublicKeysInput) (req *requ // The SSH public keys returned by this operation are used only for authenticating // the IAM user to an AWS CodeCommit repository. For more information about // using SSH keys to authenticate to an AWS CodeCommit repository, see Set up -// AWS CodeCommit for SSH Connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) +// AWS CodeCommit for SSH connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) // in the AWS CodeCommit User Guide. // // Although each user is limited to a small number of keys, you can still paginate @@ -10794,6 +11277,99 @@ func (c *IAM) ListSSHPublicKeysPagesWithContext(ctx aws.Context, input *ListSSHP return p.Err() } +const opListServerCertificateTags = "ListServerCertificateTags" + +// ListServerCertificateTagsRequest generates a "aws/request.Request" representing the +// client's request for the ListServerCertificateTags operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListServerCertificateTags for more information on using the ListServerCertificateTags +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListServerCertificateTagsRequest method. +// req, resp := client.ListServerCertificateTagsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListServerCertificateTags +func (c *IAM) ListServerCertificateTagsRequest(input *ListServerCertificateTagsInput) (req *request.Request, output *ListServerCertificateTagsOutput) { + op := &request.Operation{ + Name: opListServerCertificateTags, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListServerCertificateTagsInput{} + } + + output = &ListServerCertificateTagsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListServerCertificateTags API operation for AWS Identity and Access Management. +// +// Lists the tags that are attached to the specified IAM server certificate. +// The returned list of tags is sorted by tag key. For more information about +// tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// For certificates in a Region supported by AWS Certificate Manager (ACM), +// we recommend that you don't use IAM server certificates. Instead, use ACM +// to provision, manage, and deploy your server certificates. For more information +// about IAM server certificates, Working with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation ListServerCertificateTags for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/ListServerCertificateTags +func (c *IAM) ListServerCertificateTags(input *ListServerCertificateTagsInput) (*ListServerCertificateTagsOutput, error) { + req, out := c.ListServerCertificateTagsRequest(input) + return out, req.Send() +} + +// ListServerCertificateTagsWithContext is the same as ListServerCertificateTags with the addition of +// the ability to pass a context and additional request options. +// +// See ListServerCertificateTags for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) ListServerCertificateTagsWithContext(ctx aws.Context, input *ListServerCertificateTagsInput, opts ...request.Option) (*ListServerCertificateTagsOutput, error) { + req, out := c.ListServerCertificateTagsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListServerCertificates = "ListServerCertificates" // ListServerCertificatesRequest generates a "aws/request.Request" representing the @@ -10850,10 +11426,15 @@ func (c *IAM) ListServerCertificatesRequest(input *ListServerCertificatesInput) // You can paginate the results using the MaxItems and Marker parameters. // // For more information about working with server certificates, see Working -// with Server Certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) // in the IAM User Guide. This topic also includes a list of AWS services that // can use the server certificates that you manage with IAM. // +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for a servercertificate, see GetServerCertificate. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -10989,7 +11570,7 @@ func (c *IAM) ListServiceSpecificCredentialsRequest(input *ListServiceSpecificCr // The service-specific credentials returned by this operation are used only // for authenticating the IAM user to a specific service. For more information // about using service-specific credentials to authenticate to an AWS service, -// see Set Up service-specific credentials (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) +// see Set up service-specific credentials (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) // in the AWS CodeCommit User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11086,10 +11667,10 @@ func (c *IAM) ListSigningCertificatesRequest(input *ListSigningCertificatesInput // you can still paginate the results using the MaxItems and Marker parameters. // // If the UserName field is not specified, the user name is determined implicitly -// based on the AWS access key ID used to sign the request for this API. This -// operation works for access keys under the AWS account. Consequently, you -// can use this operation to manage AWS account root user credentials even if -// the AWS account has no associated users. +// based on the AWS access key ID used to sign the request for this operation. +// This operation works for access keys under the AWS account. Consequently, +// you can use this operation to manage AWS account root user credentials even +// if the AWS account has no associated users. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -11235,7 +11816,7 @@ func (c *IAM) ListUserPoliciesRequest(input *ListUserPoliciesInput) (req *reques // // An IAM user can also have managed policies attached to it. To list the managed // policies that are attached to a user, use ListAttachedUserPolicies. For more -// information about policies, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// information about policies, see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // // You can paginate the results using the MaxItems and Marker parameters. If @@ -11376,9 +11957,9 @@ func (c *IAM) ListUserTagsRequest(input *ListUserTagsInput) (req *request.Reques // ListUserTags API operation for AWS Identity and Access Management. // -// Lists the tags that are attached to the specified user. The returned list -// of tags is sorted by tag key. For more information about tagging, see Tagging -// IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// Lists the tags that are attached to the specified IAM user. The returned +// list of tags is sorted by tag key. For more information about tagging, see +// Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11473,6 +12054,11 @@ func (c *IAM) ListUsersRequest(input *ListUsersInput) (req *request.Request, out // is specified, the operation returns all users in the AWS account. If there // are none, the operation returns an empty list. // +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for a user, see GetUser. +// // You can paginate the results using the MaxItems and Marker parameters. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11616,6 +12202,11 @@ func (c *IAM) ListVirtualMFADevicesRequest(input *ListVirtualMFADevicesInput) (r // of all virtual MFA devices. Assignment status can be Assigned, Unassigned, // or Any. // +// IAM resource-listing operations return a subset of the available attributes +// for the resource. For example, this operation does not return tags, even +// though they are an attribute of the returned object. To view all of the information +// for a virtual MFA device, see ListVirtualMFADevices. +// // You can paginate the results using the MaxItems and Marker parameters. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11748,17 +12339,17 @@ func (c *IAM) PutGroupPolicyRequest(input *PutGroupPolicyInput) (req *request.Re // // A user can also have managed policies attached to it. To attach a managed // policy to a group, use AttachGroupPolicy. To create a new managed policy, -// use CreatePolicy. For information about policies, see Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// use CreatePolicy. For information about policies, see Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // -// For information about limits on the number of inline policies that you can -// embed in a group, see Limitations on IAM Entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) +// For information about the maximum number of inline policies that you can +// embed in a group, see IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Because policy documents can be large, you should use POST rather than GET // when calling PutGroupPolicy. For general information about using the Query -// API with IAM, go to Making Query Requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) +// API with IAM, see Making query requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11771,8 +12362,7 @@ func (c *IAM) PutGroupPolicyRequest(input *PutGroupPolicyInput) (req *request.Re // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" // The request was rejected because the policy document was malformed. The error @@ -11863,7 +12453,7 @@ func (c *IAM) PutRolePermissionsBoundaryRequest(input *PutRolePermissionsBoundar // // Policies used as permissions boundaries do not provide permissions. You must // also attach a permissions policy to the role. To learn how the effective -// permissions for a role are evaluated, see IAM JSON Policy Evaluation Logic +// permissions for a role are evaluated, see IAM JSON policy evaluation logic // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) // in the IAM User Guide. // @@ -11971,21 +12561,21 @@ func (c *IAM) PutRolePolicyRequest(input *PutRolePolicyInput) (req *request.Requ // of the role's access (permissions) policy. The role's trust policy is created // at the same time as the role, using CreateRole. You can update a role's trust // policy using UpdateAssumeRolePolicy. For more information about IAM roles, -// go to Using Roles to Delegate Permissions and Federate Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html). +// see Using roles to delegate permissions and federate identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html). // // A role can also have a managed policy attached to it. To attach a managed // policy to a role, use AttachRolePolicy. To create a new managed policy, use -// CreatePolicy. For information about policies, see Managed Policies and Inline -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// CreatePolicy. For information about policies, see Managed policies and inline +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // -// For information about limits on the number of inline policies that you can -// embed with a role, see Limitations on IAM Entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) +// For information about the maximum number of inline policies that you can +// embed with a role, see IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Because policy documents can be large, you should use POST rather than GET // when calling PutRolePolicy. For general information about using the Query -// API with IAM, go to Making Query Requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) +// API with IAM, see Making query requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -11998,8 +12588,7 @@ func (c *IAM) PutRolePolicyRequest(input *PutRolePolicyInput) (req *request.Requ // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" // The request was rejected because the policy document was malformed. The error @@ -12094,7 +12683,7 @@ func (c *IAM) PutUserPermissionsBoundaryRequest(input *PutUserPermissionsBoundar // // Policies that are used as permissions boundaries do not provide permissions. // You must also attach a permissions policy to the user. To learn how the effective -// permissions for a user are evaluated, see IAM JSON Policy Evaluation Logic +// permissions for a user are evaluated, see IAM JSON policy evaluation logic // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) // in the IAM User Guide. // @@ -12194,17 +12783,17 @@ func (c *IAM) PutUserPolicyRequest(input *PutUserPolicyInput) (req *request.Requ // // An IAM user can also have a managed policy attached to it. To attach a managed // policy to a user, use AttachUserPolicy. To create a new managed policy, use -// CreatePolicy. For information about policies, see Managed Policies and Inline -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// CreatePolicy. For information about policies, see Managed policies and inline +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // -// For information about limits on the number of inline policies that you can -// embed in a user, see Limitations on IAM Entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html) +// For information about the maximum number of inline policies that you can +// embed in a user, see IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Because policy documents can be large, you should use POST rather than GET // when calling PutUserPolicy. For general information about using the Query -// API with IAM, go to Making Query Requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) +// API with IAM, see Making query requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -12217,8 +12806,7 @@ func (c *IAM) PutUserPolicyRequest(input *PutUserPolicyInput) (req *request.Requ // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeMalformedPolicyDocumentException "MalformedPolicyDocument" // The request was rejected because the policy document was malformed. The error @@ -12400,8 +12988,8 @@ func (c *IAM) RemoveRoleFromInstanceProfileRequest(input *RemoveRoleFromInstance // an instance profile that is associated with a running instance might break // any applications running on the instance. // -// For more information about IAM roles, go to Working with Roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). -// For more information about instance profiles, go to About Instance Profiles +// For more information about IAM roles, see Working with roles (https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html). +// For more information about instance profiles, see About instance profiles // (https://docs.aws.amazon.com/IAM/latest/UserGuide/AboutInstanceProfiles.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -12418,8 +13006,7 @@ func (c *IAM) RemoveRoleFromInstanceProfileRequest(input *RemoveRoleFromInstance // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeUnmodifiableEntityException "UnmodifiableEntity" // The request was rejected because only the service that depends on the service-linked @@ -12514,8 +13101,7 @@ func (c *IAM) RemoveUserFromGroupRequest(input *RemoveUserFromGroupInput) (req * // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -12675,7 +13261,7 @@ func (c *IAM) ResyncMFADeviceRequest(input *ResyncMFADeviceInput) (req *request. // AWS servers. // // For more information about creating and working with virtual MFA devices, -// go to Using a Virtual MFA Device (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_VirtualMFA.html) +// see Using a virtual MFA device (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_VirtualMFA.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -12696,8 +13282,7 @@ func (c *IAM) ResyncMFADeviceRequest(input *ResyncMFADeviceInput) (req *request. // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -12775,9 +13360,9 @@ func (c *IAM) SetDefaultPolicyVersionRequest(input *SetDefaultPolicyVersionInput // // This operation affects all users, groups, and roles that the policy is attached // to. To list the users, groups, and roles that the policy is attached to, -// use the ListEntitiesForPolicy API. +// use ListEntitiesForPolicy. // -// For information about managed policies, see Managed Policies and Inline Policies +// For information about managed policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // @@ -12799,8 +13384,7 @@ func (c *IAM) SetDefaultPolicyVersionRequest(input *SetDefaultPolicyVersionInput // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -12880,7 +13464,7 @@ func (c *IAM) SetSecurityTokenServicePreferencesRequest(input *SetSecurityTokenS // and all STS requests go to a single endpoint at https://sts.amazonaws.com. // AWS recommends using Regional STS endpoints to reduce latency, build in redundancy, // and increase session token availability. For information about Regional endpoints -// for STS, see AWS Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) +// for STS, see AWS AWS Security Token Service endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/sts.html) // in the AWS General Reference. // // If you make an STS call to the global endpoint, the resulting session tokens @@ -12889,8 +13473,8 @@ func (c *IAM) SetSecurityTokenServicePreferencesRequest(input *SetSecurityTokenS // that are available by default. These tokens do not work in manually enabled // Regions, such as Asia Pacific (Hong Kong). Version 2 tokens are valid in // all Regions. However, version 2 tokens are longer and might affect systems -// where you temporarily store tokens. For information, see Activating and Deactivating -// STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) +// where you temporarily store tokens. For information, see Activating and deactivating +// STS in an AWS region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // // To view the current session token version, see the GlobalEndpointTokenVersion @@ -12985,7 +13569,8 @@ func (c *IAM) SimulateCustomPolicyRequest(input *SimulateCustomPolicyInput) (req // effective permissions. The policies are provided as strings. // // The simulation does not perform the API operations; it only checks the authorization -// to determine if the simulated policies allow or deny the operations. +// to determine if the simulated policies allow or deny the operations. You +// can simulate resources that don't exist in your account. // // If you want to simulate existing policies that are attached to an IAM user, // group, or role, use SimulatePrincipalPolicy instead. @@ -12999,6 +13584,10 @@ func (c *IAM) SimulateCustomPolicyRequest(input *SimulateCustomPolicyInput) (req // If the output is long, you can use MaxItems and Marker parameters to paginate // the results. // +// For more information about using the policy simulator, see Testing IAM policies +// with the IAM policy simulator (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)in +// the IAM User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -13143,7 +13732,8 @@ func (c *IAM) SimulatePrincipalPolicyRequest(input *SimulatePrincipalPolicyInput // list of API operations and AWS resources to determine the policies' effective // permissions. The entity can be an IAM user, group, or role. If you specify // a user, then the simulation also includes all of the policies that are attached -// to groups that the user belongs to. +// to groups that the user belongs to. You can simulate resources that don't +// exist in your account. // // You can optionally include a list of one or more additional policies specified // as strings to include in the simulation. If you want to simulate only policies @@ -13155,9 +13745,9 @@ func (c *IAM) SimulatePrincipalPolicyRequest(input *SimulatePrincipalPolicyInput // The simulation does not perform the API operations; it only checks the authorization // to determine if the simulated policies allow or deny the operations. // -// Note: This API discloses information about the permissions granted to other -// users. If you do not want users to see other user's permissions, then consider -// allowing them to use SimulateCustomPolicy instead. +// Note: This operation discloses information about the permissions granted +// to other users. If you do not want users to see other user's permissions, +// then consider allowing them to use SimulateCustomPolicy instead. // // Context keys are variables maintained by AWS and its services that provide // details about the context of an API query request. You can use the Condition @@ -13167,6 +13757,10 @@ func (c *IAM) SimulatePrincipalPolicyRequest(input *SimulatePrincipalPolicyInput // If the output is long, you can use the MaxItems and Marker parameters to // paginate the results. // +// For more information about using the policy simulator, see Testing IAM policies +// with the IAM policy simulator (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html)in +// the IAM User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -13261,6 +13855,506 @@ func (c *IAM) SimulatePrincipalPolicyPagesWithContext(ctx aws.Context, input *Si return p.Err() } +const opTagInstanceProfile = "TagInstanceProfile" + +// TagInstanceProfileRequest generates a "aws/request.Request" representing the +// client's request for the TagInstanceProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagInstanceProfile for more information on using the TagInstanceProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagInstanceProfileRequest method. +// req, resp := client.TagInstanceProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagInstanceProfile +func (c *IAM) TagInstanceProfileRequest(input *TagInstanceProfileInput) (req *request.Request, output *TagInstanceProfileOutput) { + op := &request.Operation{ + Name: opTagInstanceProfile, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TagInstanceProfileInput{} + } + + output = &TagInstanceProfileOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagInstanceProfile API operation for AWS Identity and Access Management. +// +// Adds one or more tags to an IAM instance profile. If a tag with the same +// key name already exists, then that tag is overwritten with the new value. +// +// Each tag consists of a key name and an associated value. By assigning tags +// to your resources, you can do the following: +// +// * Administrative grouping and discovery - Attach tags to resources to +// aid in organization and search. For example, you could search for all +// resources with the key name Project and the value MyImportantProject. +// Or search for all resources with the key name Cost Center and the value +// 41200. +// +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only an IAM instance profile that +// has a specified tag attached. For examples of policies that show how to +// use tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// in the IAM User Guide. +// +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. +// +// * AWS always interprets the tag Value as a single string. If you need +// to store an array, you can store comma-separated values in the string. +// However, you must interpret the value in your code. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation TagInstanceProfile for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeLimitExceededException "LimitExceeded" +// The request was rejected because it attempted to create resources beyond +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagInstanceProfile +func (c *IAM) TagInstanceProfile(input *TagInstanceProfileInput) (*TagInstanceProfileOutput, error) { + req, out := c.TagInstanceProfileRequest(input) + return out, req.Send() +} + +// TagInstanceProfileWithContext is the same as TagInstanceProfile with the addition of +// the ability to pass a context and additional request options. +// +// See TagInstanceProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) TagInstanceProfileWithContext(ctx aws.Context, input *TagInstanceProfileInput, opts ...request.Option) (*TagInstanceProfileOutput, error) { + req, out := c.TagInstanceProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTagMFADevice = "TagMFADevice" + +// TagMFADeviceRequest generates a "aws/request.Request" representing the +// client's request for the TagMFADevice operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagMFADevice for more information on using the TagMFADevice +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagMFADeviceRequest method. +// req, resp := client.TagMFADeviceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagMFADevice +func (c *IAM) TagMFADeviceRequest(input *TagMFADeviceInput) (req *request.Request, output *TagMFADeviceOutput) { + op := &request.Operation{ + Name: opTagMFADevice, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TagMFADeviceInput{} + } + + output = &TagMFADeviceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagMFADevice API operation for AWS Identity and Access Management. +// +// Adds one or more tags to an IAM virtual multi-factor authentication (MFA) +// device. If a tag with the same key name already exists, then that tag is +// overwritten with the new value. +// +// A tag consists of a key name and an associated value. By assigning tags to +// your resources, you can do the following: +// +// * Administrative grouping and discovery - Attach tags to resources to +// aid in organization and search. For example, you could search for all +// resources with the key name Project and the value MyImportantProject. +// Or search for all resources with the key name Cost Center and the value +// 41200. +// +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only an IAM virtual MFA device +// that has a specified tag attached. For examples of policies that show +// how to use tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// in the IAM User Guide. +// +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. +// +// * AWS always interprets the tag Value as a single string. If you need +// to store an array, you can store comma-separated values in the string. +// However, you must interpret the value in your code. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation TagMFADevice for usage and error information. +// +// Returned Error Codes: +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeLimitExceededException "LimitExceeded" +// The request was rejected because it attempted to create resources beyond +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagMFADevice +func (c *IAM) TagMFADevice(input *TagMFADeviceInput) (*TagMFADeviceOutput, error) { + req, out := c.TagMFADeviceRequest(input) + return out, req.Send() +} + +// TagMFADeviceWithContext is the same as TagMFADevice with the addition of +// the ability to pass a context and additional request options. +// +// See TagMFADevice for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) TagMFADeviceWithContext(ctx aws.Context, input *TagMFADeviceInput, opts ...request.Option) (*TagMFADeviceOutput, error) { + req, out := c.TagMFADeviceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTagOpenIDConnectProvider = "TagOpenIDConnectProvider" + +// TagOpenIDConnectProviderRequest generates a "aws/request.Request" representing the +// client's request for the TagOpenIDConnectProvider operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagOpenIDConnectProvider for more information on using the TagOpenIDConnectProvider +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagOpenIDConnectProviderRequest method. +// req, resp := client.TagOpenIDConnectProviderRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagOpenIDConnectProvider +func (c *IAM) TagOpenIDConnectProviderRequest(input *TagOpenIDConnectProviderInput) (req *request.Request, output *TagOpenIDConnectProviderOutput) { + op := &request.Operation{ + Name: opTagOpenIDConnectProvider, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TagOpenIDConnectProviderInput{} + } + + output = &TagOpenIDConnectProviderOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagOpenIDConnectProvider API operation for AWS Identity and Access Management. +// +// Adds one or more tags to an OpenID Connect (OIDC)-compatible identity provider. +// For more information about these providers, see About web identity federation +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html). +// If a tag with the same key name already exists, then that tag is overwritten +// with the new value. +// +// A tag consists of a key name and an associated value. By assigning tags to +// your resources, you can do the following: +// +// * Administrative grouping and discovery - Attach tags to resources to +// aid in organization and search. For example, you could search for all +// resources with the key name Project and the value MyImportantProject. +// Or search for all resources with the key name Cost Center and the value +// 41200. +// +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only an OIDC provider that has +// a specified tag attached. For examples of policies that show how to use +// tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// in the IAM User Guide. +// +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. +// +// * AWS always interprets the tag Value as a single string. If you need +// to store an array, you can store comma-separated values in the string. +// However, you must interpret the value in your code. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation TagOpenIDConnectProvider for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeLimitExceededException "LimitExceeded" +// The request was rejected because it attempted to create resources beyond +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagOpenIDConnectProvider +func (c *IAM) TagOpenIDConnectProvider(input *TagOpenIDConnectProviderInput) (*TagOpenIDConnectProviderOutput, error) { + req, out := c.TagOpenIDConnectProviderRequest(input) + return out, req.Send() +} + +// TagOpenIDConnectProviderWithContext is the same as TagOpenIDConnectProvider with the addition of +// the ability to pass a context and additional request options. +// +// See TagOpenIDConnectProvider for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) TagOpenIDConnectProviderWithContext(ctx aws.Context, input *TagOpenIDConnectProviderInput, opts ...request.Option) (*TagOpenIDConnectProviderOutput, error) { + req, out := c.TagOpenIDConnectProviderRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTagPolicy = "TagPolicy" + +// TagPolicyRequest generates a "aws/request.Request" representing the +// client's request for the TagPolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagPolicy for more information on using the TagPolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagPolicyRequest method. +// req, resp := client.TagPolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagPolicy +func (c *IAM) TagPolicyRequest(input *TagPolicyInput) (req *request.Request, output *TagPolicyOutput) { + op := &request.Operation{ + Name: opTagPolicy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TagPolicyInput{} + } + + output = &TagPolicyOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagPolicy API operation for AWS Identity and Access Management. +// +// Adds one or more tags to an IAM customer managed policy. If a tag with the +// same key name already exists, then that tag is overwritten with the new value. +// +// A tag consists of a key name and an associated value. By assigning tags to +// your resources, you can do the following: +// +// * Administrative grouping and discovery - Attach tags to resources to +// aid in organization and search. For example, you could search for all +// resources with the key name Project and the value MyImportantProject. +// Or search for all resources with the key name Cost Center and the value +// 41200. +// +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only an IAM customer managed policy +// that has a specified tag attached. For examples of policies that show +// how to use tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// in the IAM User Guide. +// +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. +// +// * AWS always interprets the tag Value as a single string. If you need +// to store an array, you can store comma-separated values in the string. +// However, you must interpret the value in your code. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation TagPolicy for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeLimitExceededException "LimitExceeded" +// The request was rejected because it attempted to create resources beyond +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagPolicy +func (c *IAM) TagPolicy(input *TagPolicyInput) (*TagPolicyOutput, error) { + req, out := c.TagPolicyRequest(input) + return out, req.Send() +} + +// TagPolicyWithContext is the same as TagPolicy with the addition of +// the ability to pass a context and additional request options. +// +// See TagPolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) TagPolicyWithContext(ctx aws.Context, input *TagPolicyInput, opts ...request.Option) (*TagPolicyOutput, error) { + req, out := c.TagPolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opTagRole = "TagRole" // TagRoleRequest generates a "aws/request.Request" representing the @@ -13319,26 +14413,27 @@ func (c *IAM) TagRoleRequest(input *TagRoleInput) (req *request.Request, output // Or search for all resources with the key name Cost Center and the value // 41200. // -// * Access control - Reference tags in IAM user-based and resource-based -// policies. You can use tags to restrict access to only an IAM user or role -// that has a specified tag attached. You can also restrict access to only -// those resources that have a certain tag attached. For examples of policies -// that show how to use tags to control access, see Control Access Using -// IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only an IAM role that has a specified +// tag attached. You can also restrict access to only those resources that +// have a certain tag attached. For examples of policies that show how to +// use tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) // in the IAM User Guide. // // * Cost allocation - Use tags to help track which individuals and teams // are using which AWS resources. // -// * Make sure that you have no invalid tags and that you do not exceed the -// allowed number of tags per role. In either case, the entire request fails -// and no tags are added to the role. +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. // // * AWS always interprets the tag Value as a single string. If you need // to store an array, you can store comma-separated values in the string. // However, you must interpret the value in your code. // -// For more information about tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// For more information about tagging, see Tagging IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13355,8 +14450,7 @@ func (c *IAM) TagRoleRequest(input *TagRoleInput) (req *request.Request, output // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -13393,6 +14487,266 @@ func (c *IAM) TagRoleWithContext(ctx aws.Context, input *TagRoleInput, opts ...r return out, req.Send() } +const opTagSAMLProvider = "TagSAMLProvider" + +// TagSAMLProviderRequest generates a "aws/request.Request" representing the +// client's request for the TagSAMLProvider operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagSAMLProvider for more information on using the TagSAMLProvider +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagSAMLProviderRequest method. +// req, resp := client.TagSAMLProviderRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagSAMLProvider +func (c *IAM) TagSAMLProviderRequest(input *TagSAMLProviderInput) (req *request.Request, output *TagSAMLProviderOutput) { + op := &request.Operation{ + Name: opTagSAMLProvider, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TagSAMLProviderInput{} + } + + output = &TagSAMLProviderOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagSAMLProvider API operation for AWS Identity and Access Management. +// +// Adds one or more tags to a Security Assertion Markup Language (SAML) identity +// provider. For more information about these providers, see About SAML 2.0-based +// federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html). +// If a tag with the same key name already exists, then that tag is overwritten +// with the new value. +// +// A tag consists of a key name and an associated value. By assigning tags to +// your resources, you can do the following: +// +// * Administrative grouping and discovery - Attach tags to resources to +// aid in organization and search. For example, you could search for all +// resources with the key name Project and the value MyImportantProject. +// Or search for all resources with the key name Cost Center and the value +// 41200. +// +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only a SAML identity provider that +// has a specified tag attached. For examples of policies that show how to +// use tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// in the IAM User Guide. +// +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. +// +// * AWS always interprets the tag Value as a single string. If you need +// to store an array, you can store comma-separated values in the string. +// However, you must interpret the value in your code. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation TagSAMLProvider for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeLimitExceededException "LimitExceeded" +// The request was rejected because it attempted to create resources beyond +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagSAMLProvider +func (c *IAM) TagSAMLProvider(input *TagSAMLProviderInput) (*TagSAMLProviderOutput, error) { + req, out := c.TagSAMLProviderRequest(input) + return out, req.Send() +} + +// TagSAMLProviderWithContext is the same as TagSAMLProvider with the addition of +// the ability to pass a context and additional request options. +// +// See TagSAMLProvider for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) TagSAMLProviderWithContext(ctx aws.Context, input *TagSAMLProviderInput, opts ...request.Option) (*TagSAMLProviderOutput, error) { + req, out := c.TagSAMLProviderRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opTagServerCertificate = "TagServerCertificate" + +// TagServerCertificateRequest generates a "aws/request.Request" representing the +// client's request for the TagServerCertificate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See TagServerCertificate for more information on using the TagServerCertificate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the TagServerCertificateRequest method. +// req, resp := client.TagServerCertificateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagServerCertificate +func (c *IAM) TagServerCertificateRequest(input *TagServerCertificateInput) (req *request.Request, output *TagServerCertificateOutput) { + op := &request.Operation{ + Name: opTagServerCertificate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &TagServerCertificateInput{} + } + + output = &TagServerCertificateOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// TagServerCertificate API operation for AWS Identity and Access Management. +// +// Adds one or more tags to an IAM server certificate. If a tag with the same +// key name already exists, then that tag is overwritten with the new value. +// +// For certificates in a Region supported by AWS Certificate Manager (ACM), +// we recommend that you don't use IAM server certificates. Instead, use ACM +// to provision, manage, and deploy your server certificates. For more information +// about IAM server certificates, Working with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// in the IAM User Guide. +// +// A tag consists of a key name and an associated value. By assigning tags to +// your resources, you can do the following: +// +// * Administrative grouping and discovery - Attach tags to resources to +// aid in organization and search. For example, you could search for all +// resources with the key name Project and the value MyImportantProject. +// Or search for all resources with the key name Cost Center and the value +// 41200. +// +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only a server certificate that +// has a specified tag attached. For examples of policies that show how to +// use tags to control access, see Control access using IAM tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) +// in the IAM User Guide. +// +// * Cost allocation - Use tags to help track which individuals and teams +// are using which AWS resources. +// +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. +// +// * AWS always interprets the tag Value as a single string. If you need +// to store an array, you can store comma-separated values in the string. +// However, you must interpret the value in your code. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation TagServerCertificate for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeLimitExceededException "LimitExceeded" +// The request was rejected because it attempted to create resources beyond +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/TagServerCertificate +func (c *IAM) TagServerCertificate(input *TagServerCertificateInput) (*TagServerCertificateOutput, error) { + req, out := c.TagServerCertificateRequest(input) + return out, req.Send() +} + +// TagServerCertificateWithContext is the same as TagServerCertificate with the addition of +// the ability to pass a context and additional request options. +// +// See TagServerCertificate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) TagServerCertificateWithContext(ctx aws.Context, input *TagServerCertificateInput, opts ...request.Option) (*TagServerCertificateOutput, error) { + req, out := c.TagServerCertificateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opTagUser = "TagUser" // TagUserRequest generates a "aws/request.Request" representing the @@ -13450,26 +14804,28 @@ func (c *IAM) TagUserRequest(input *TagUserInput) (req *request.Request, output // Or search for all resources with the key name Cost Center and the value // 41200. // -// * Access control - Reference tags in IAM user-based and resource-based -// policies. You can use tags to restrict access to only an IAM requesting -// user or to a role that has a specified tag attached. You can also restrict -// access to only those resources that have a certain tag attached. For examples -// of policies that show how to use tags to control access, see Control Access -// Using IAM Tags (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) -// in the IAM User Guide. +// * Access control - Include tags in IAM user-based and resource-based policies. +// You can use tags to restrict access to only an IAM requesting user that +// has a specified tag attached. You can also restrict access to only those +// resources that have a certain tag attached. For examples of policies that +// show how to use tags to control access, see Control access using IAM tags +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) in +// the IAM User Guide. // // * Cost allocation - Use tags to help track which individuals and teams // are using which AWS resources. // -// * Make sure that you have no invalid tags and that you do not exceed the -// allowed number of tags per role. In either case, the entire request fails -// and no tags are added to the role. +// * If any one of the tags is invalid or if you exceed the allowed maximum +// number of tags, then the entire request fails and the resource is not +// created. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the +// IAM User Guide. // // * AWS always interprets the tag Value as a single string. If you need // to store an array, you can store comma-separated values in the string. // However, you must interpret the value in your code. // -// For more information about tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// For more information about tagging, see Tagging IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13486,8 +14842,7 @@ func (c *IAM) TagUserRequest(input *TagUserInput) (req *request.Request, output // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeInvalidInputException "InvalidInput" // The request was rejected because an invalid or out-of-range value was supplied @@ -13524,6 +14879,393 @@ func (c *IAM) TagUserWithContext(ctx aws.Context, input *TagUserInput, opts ...r return out, req.Send() } +const opUntagInstanceProfile = "UntagInstanceProfile" + +// UntagInstanceProfileRequest generates a "aws/request.Request" representing the +// client's request for the UntagInstanceProfile operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagInstanceProfile for more information on using the UntagInstanceProfile +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagInstanceProfileRequest method. +// req, resp := client.UntagInstanceProfileRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagInstanceProfile +func (c *IAM) UntagInstanceProfileRequest(input *UntagInstanceProfileInput) (req *request.Request, output *UntagInstanceProfileOutput) { + op := &request.Operation{ + Name: opUntagInstanceProfile, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UntagInstanceProfileInput{} + } + + output = &UntagInstanceProfileOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagInstanceProfile API operation for AWS Identity and Access Management. +// +// Removes the specified tags from the IAM instance profile. For more information +// about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation UntagInstanceProfile for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagInstanceProfile +func (c *IAM) UntagInstanceProfile(input *UntagInstanceProfileInput) (*UntagInstanceProfileOutput, error) { + req, out := c.UntagInstanceProfileRequest(input) + return out, req.Send() +} + +// UntagInstanceProfileWithContext is the same as UntagInstanceProfile with the addition of +// the ability to pass a context and additional request options. +// +// See UntagInstanceProfile for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) UntagInstanceProfileWithContext(ctx aws.Context, input *UntagInstanceProfileInput, opts ...request.Option) (*UntagInstanceProfileOutput, error) { + req, out := c.UntagInstanceProfileRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUntagMFADevice = "UntagMFADevice" + +// UntagMFADeviceRequest generates a "aws/request.Request" representing the +// client's request for the UntagMFADevice operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagMFADevice for more information on using the UntagMFADevice +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagMFADeviceRequest method. +// req, resp := client.UntagMFADeviceRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagMFADevice +func (c *IAM) UntagMFADeviceRequest(input *UntagMFADeviceInput) (req *request.Request, output *UntagMFADeviceOutput) { + op := &request.Operation{ + Name: opUntagMFADevice, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UntagMFADeviceInput{} + } + + output = &UntagMFADeviceOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagMFADevice API operation for AWS Identity and Access Management. +// +// Removes the specified tags from the IAM virtual multi-factor authentication +// (MFA) device. For more information about tagging, see Tagging IAM resources +// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) in the IAM +// User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation UntagMFADevice for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagMFADevice +func (c *IAM) UntagMFADevice(input *UntagMFADeviceInput) (*UntagMFADeviceOutput, error) { + req, out := c.UntagMFADeviceRequest(input) + return out, req.Send() +} + +// UntagMFADeviceWithContext is the same as UntagMFADevice with the addition of +// the ability to pass a context and additional request options. +// +// See UntagMFADevice for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) UntagMFADeviceWithContext(ctx aws.Context, input *UntagMFADeviceInput, opts ...request.Option) (*UntagMFADeviceOutput, error) { + req, out := c.UntagMFADeviceRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUntagOpenIDConnectProvider = "UntagOpenIDConnectProvider" + +// UntagOpenIDConnectProviderRequest generates a "aws/request.Request" representing the +// client's request for the UntagOpenIDConnectProvider operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagOpenIDConnectProvider for more information on using the UntagOpenIDConnectProvider +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagOpenIDConnectProviderRequest method. +// req, resp := client.UntagOpenIDConnectProviderRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagOpenIDConnectProvider +func (c *IAM) UntagOpenIDConnectProviderRequest(input *UntagOpenIDConnectProviderInput) (req *request.Request, output *UntagOpenIDConnectProviderOutput) { + op := &request.Operation{ + Name: opUntagOpenIDConnectProvider, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UntagOpenIDConnectProviderInput{} + } + + output = &UntagOpenIDConnectProviderOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagOpenIDConnectProvider API operation for AWS Identity and Access Management. +// +// Removes the specified tags from the specified OpenID Connect (OIDC)-compatible +// identity provider in IAM. For more information about OIDC providers, see +// About web identity federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html). +// For more information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation UntagOpenIDConnectProvider for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagOpenIDConnectProvider +func (c *IAM) UntagOpenIDConnectProvider(input *UntagOpenIDConnectProviderInput) (*UntagOpenIDConnectProviderOutput, error) { + req, out := c.UntagOpenIDConnectProviderRequest(input) + return out, req.Send() +} + +// UntagOpenIDConnectProviderWithContext is the same as UntagOpenIDConnectProvider with the addition of +// the ability to pass a context and additional request options. +// +// See UntagOpenIDConnectProvider for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) UntagOpenIDConnectProviderWithContext(ctx aws.Context, input *UntagOpenIDConnectProviderInput, opts ...request.Option) (*UntagOpenIDConnectProviderOutput, error) { + req, out := c.UntagOpenIDConnectProviderRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUntagPolicy = "UntagPolicy" + +// UntagPolicyRequest generates a "aws/request.Request" representing the +// client's request for the UntagPolicy operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagPolicy for more information on using the UntagPolicy +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagPolicyRequest method. +// req, resp := client.UntagPolicyRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagPolicy +func (c *IAM) UntagPolicyRequest(input *UntagPolicyInput) (req *request.Request, output *UntagPolicyOutput) { + op := &request.Operation{ + Name: opUntagPolicy, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UntagPolicyInput{} + } + + output = &UntagPolicyOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagPolicy API operation for AWS Identity and Access Management. +// +// Removes the specified tags from the customer managed policy. For more information +// about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation UntagPolicy for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagPolicy +func (c *IAM) UntagPolicy(input *UntagPolicyInput) (*UntagPolicyOutput, error) { + req, out := c.UntagPolicyRequest(input) + return out, req.Send() +} + +// UntagPolicyWithContext is the same as UntagPolicy with the addition of +// the ability to pass a context and additional request options. +// +// See UntagPolicy for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) UntagPolicyWithContext(ctx aws.Context, input *UntagPolicyInput, opts ...request.Option) (*UntagPolicyOutput, error) { + req, out := c.UntagPolicyRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUntagRole = "UntagRole" // UntagRoleRequest generates a "aws/request.Request" representing the @@ -13570,7 +15312,7 @@ func (c *IAM) UntagRoleRequest(input *UntagRoleInput) (req *request.Request, out // UntagRole API operation for AWS Identity and Access Management. // // Removes the specified tags from the role. For more information about tagging, -// see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13616,6 +15358,206 @@ func (c *IAM) UntagRoleWithContext(ctx aws.Context, input *UntagRoleInput, opts return out, req.Send() } +const opUntagSAMLProvider = "UntagSAMLProvider" + +// UntagSAMLProviderRequest generates a "aws/request.Request" representing the +// client's request for the UntagSAMLProvider operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagSAMLProvider for more information on using the UntagSAMLProvider +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagSAMLProviderRequest method. +// req, resp := client.UntagSAMLProviderRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagSAMLProvider +func (c *IAM) UntagSAMLProviderRequest(input *UntagSAMLProviderInput) (req *request.Request, output *UntagSAMLProviderOutput) { + op := &request.Operation{ + Name: opUntagSAMLProvider, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UntagSAMLProviderInput{} + } + + output = &UntagSAMLProviderOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagSAMLProvider API operation for AWS Identity and Access Management. +// +// Removes the specified tags from the specified Security Assertion Markup Language +// (SAML) identity provider in IAM. For more information about these providers, +// see About web identity federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html). +// For more information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation UntagSAMLProvider for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagSAMLProvider +func (c *IAM) UntagSAMLProvider(input *UntagSAMLProviderInput) (*UntagSAMLProviderOutput, error) { + req, out := c.UntagSAMLProviderRequest(input) + return out, req.Send() +} + +// UntagSAMLProviderWithContext is the same as UntagSAMLProvider with the addition of +// the ability to pass a context and additional request options. +// +// See UntagSAMLProvider for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) UntagSAMLProviderWithContext(ctx aws.Context, input *UntagSAMLProviderInput, opts ...request.Option) (*UntagSAMLProviderOutput, error) { + req, out := c.UntagSAMLProviderRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opUntagServerCertificate = "UntagServerCertificate" + +// UntagServerCertificateRequest generates a "aws/request.Request" representing the +// client's request for the UntagServerCertificate operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UntagServerCertificate for more information on using the UntagServerCertificate +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UntagServerCertificateRequest method. +// req, resp := client.UntagServerCertificateRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagServerCertificate +func (c *IAM) UntagServerCertificateRequest(input *UntagServerCertificateInput) (req *request.Request, output *UntagServerCertificateOutput) { + op := &request.Operation{ + Name: opUntagServerCertificate, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UntagServerCertificateInput{} + } + + output = &UntagServerCertificateOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UntagServerCertificate API operation for AWS Identity and Access Management. +// +// Removes the specified tags from the IAM server certificate. For more information +// about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// in the IAM User Guide. +// +// For certificates in a Region supported by AWS Certificate Manager (ACM), +// we recommend that you don't use IAM server certificates. Instead, use ACM +// to provision, manage, and deploy your server certificates. For more information +// about IAM server certificates, Working with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// in the IAM User Guide. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Identity and Access Management's +// API operation UntagServerCertificate for usage and error information. +// +// Returned Error Codes: +// * ErrCodeNoSuchEntityException "NoSuchEntity" +// The request was rejected because it referenced a resource entity that does +// not exist. The error message describes the resource. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. +// +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// +// * ErrCodeServiceFailureException "ServiceFailure" +// The request processing has failed because of an unknown error, exception +// or failure. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/iam-2010-05-08/UntagServerCertificate +func (c *IAM) UntagServerCertificate(input *UntagServerCertificateInput) (*UntagServerCertificateOutput, error) { + req, out := c.UntagServerCertificateRequest(input) + return out, req.Send() +} + +// UntagServerCertificateWithContext is the same as UntagServerCertificate with the addition of +// the ability to pass a context and additional request options. +// +// See UntagServerCertificate for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IAM) UntagServerCertificateWithContext(ctx aws.Context, input *UntagServerCertificateInput, opts ...request.Option) (*UntagServerCertificateOutput, error) { + req, out := c.UntagServerCertificateRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUntagUser = "UntagUser" // UntagUserRequest generates a "aws/request.Request" representing the @@ -13662,7 +15604,7 @@ func (c *IAM) UntagUserRequest(input *UntagUserInput) (req *request.Request, out // UntagUser API operation for AWS Identity and Access Management. // // Removes the specified tags from the user. For more information about tagging, -// see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13763,7 +15705,7 @@ func (c *IAM) UpdateAccessKeyRequest(input *UpdateAccessKeyInput) (req *request. // to manage AWS account root user credentials even if the AWS account has no // associated users. // -// For information about rotating keys, see Managing Keys and Certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html) +// For information about rotating keys, see Managing keys and certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13780,8 +15722,7 @@ func (c *IAM) UpdateAccessKeyRequest(input *UpdateAccessKeyInput) (req *request. // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -13863,8 +15804,8 @@ func (c *IAM) UpdateAccountPasswordPolicyRequest(input *UpdateAccountPasswordPol // parameter to be explicitly set. Instead, to invoke the default value, // do not include that parameter when you invoke the operation. // -// For more information about using a password policy, see Managing an IAM Password -// Policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html) +// For more information about using a password policy, see Managing an IAM password +// policy (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13885,8 +15826,7 @@ func (c *IAM) UpdateAccountPasswordPolicyRequest(input *UpdateAccountPasswordPol // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -13961,7 +15901,7 @@ func (c *IAM) UpdateAssumeRolePolicyRequest(input *UpdateAssumeRolePolicyInput) // // Updates the policy that grants an IAM entity permission to assume a role. // This is typically referred to as the "role trust policy". For more information -// about roles, go to Using Roles to Delegate Permissions and Federate Identities +// about roles, see Using roles to delegate permissions and federate identities // (https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-toplevel.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -13982,8 +15922,7 @@ func (c *IAM) UpdateAssumeRolePolicyRequest(input *UpdateAssumeRolePolicyInput) // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeUnmodifiableEntityException "UnmodifiableEntity" // The request was rejected because only the service that depends on the service-linked @@ -14065,7 +16004,7 @@ func (c *IAM) UpdateGroupRequest(input *UpdateGroupInput) (req *request.Request, // Updates the name and/or the path of the specified IAM group. // // You should understand the implications of changing a group's path or name. -// For more information, see Renaming Users and Groups (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_WorkingWithGroupsAndUsers.html) +// For more information, see Renaming users and groups (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_WorkingWithGroupsAndUsers.html) // in the IAM User Guide. // // The person making the request (the principal), must have permission to change @@ -14073,7 +16012,7 @@ func (c *IAM) UpdateGroupRequest(input *UpdateGroupInput) (req *request.Request, // the group named Managers to MGRs, the principal must have a policy that allows // them to update both groups. If the principal has permission to update the // Managers group, but not the MGRs group, then the update fails. For more information -// about permissions, see Access Management (https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html). +// about permissions, see Access management (https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -14093,8 +16032,7 @@ func (c *IAM) UpdateGroupRequest(input *UpdateGroupInput) (req *request.Request, // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -14167,10 +16105,12 @@ func (c *IAM) UpdateLoginProfileRequest(input *UpdateLoginProfileInput) (req *re // UpdateLoginProfile API operation for AWS Identity and Access Management. // -// Changes the password for the specified IAM user. +// Changes the password for the specified IAM user. You can use the AWS CLI, +// the AWS API, or the Users page in the IAM console to change the password +// for any IAM user. Use ChangePassword to change your own password in the My +// Security Credentials page in the AWS Management Console. // -// IAM users can change their own passwords by calling ChangePassword. For more -// information about modifying passwords, see Managing Passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) +// For more information about modifying passwords, see Managing passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingLogins.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -14197,8 +16137,7 @@ func (c *IAM) UpdateLoginProfileRequest(input *UpdateLoginProfileInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -14579,8 +16518,7 @@ func (c *IAM) UpdateSAMLProviderRequest(input *UpdateSAMLProviderInput) (req *re // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -14661,7 +16599,7 @@ func (c *IAM) UpdateSSHPublicKeyRequest(input *UpdateSSHPublicKeyInput) (req *re // The SSH public key affected by this operation is used only for authenticating // the associated IAM user to an AWS CodeCommit repository. For more information // about using SSH keys to authenticate to an AWS CodeCommit repository, see -// Set up AWS CodeCommit for SSH Connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) +// Set up AWS CodeCommit for SSH connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) // in the AWS CodeCommit User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -14747,12 +16685,12 @@ func (c *IAM) UpdateServerCertificateRequest(input *UpdateServerCertificateInput // in IAM. // // For more information about working with server certificates, see Working -// with Server Certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) // in the IAM User Guide. This topic also includes a list of AWS services that // can use the server certificates that you manage with IAM. // // You should understand the implications of changing a server certificate's -// path or name. For more information, see Renaming a Server Certificate (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs_manage.html#RenamingServerCerts) +// path or name. For more information, see Renaming a server certificate (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs_manage.html#RenamingServerCerts) // in the IAM User Guide. // // The person making the request (the principal), must have permission to change @@ -14761,7 +16699,7 @@ func (c *IAM) UpdateServerCertificateRequest(input *UpdateServerCertificateInput // have a policy that allows them to update both certificates. If the principal // has permission to update the ProductionCert group, but not the ProdCert certificate, // then the update fails. For more information about permissions, see Access -// Management (https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) +// management (https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -14782,8 +16720,7 @@ func (c *IAM) UpdateServerCertificateRequest(input *UpdateServerCertificateInput // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -14964,8 +16901,7 @@ func (c *IAM) UpdateSigningCertificateRequest(input *UpdateSigningCertificateInp // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception @@ -15041,15 +16977,15 @@ func (c *IAM) UpdateUserRequest(input *UpdateUserInput) (req *request.Request, o // Updates the name and/or the path of the specified IAM user. // // You should understand the implications of changing an IAM user's path or -// name. For more information, see Renaming an IAM User (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_renaming) -// and Renaming an IAM Group (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_manage_rename.html) +// name. For more information, see Renaming an IAM user (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_renaming) +// and Renaming an IAM group (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_manage_rename.html) // in the IAM User Guide. // // To change a user name, the requester must have appropriate permissions on // both the source object and the target object. For example, to change Bob // to Robert, the entity making the request must have permission on Bob and // Robert, or must have permission on all (*). For more information about permissions, -// see Permissions and Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html). +// see Permissions and policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/PermissionsAndPolicies.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -15065,8 +17001,7 @@ func (c *IAM) UpdateUserRequest(input *UpdateUserInput) (req *request.Request, o // // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already @@ -15158,7 +17093,7 @@ func (c *IAM) UploadSSHPublicKeyRequest(input *UploadSSHPublicKeyInput) (req *re // The SSH public key uploaded by this operation can be used only for authenticating // the associated IAM user to an AWS CodeCommit repository. For more information // about using SSH keys to authenticate to an AWS CodeCommit repository, see -// Set up AWS CodeCommit for SSH Connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) +// Set up AWS CodeCommit for SSH connections (https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-credentials-ssh.html) // in the AWS CodeCommit User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -15171,8 +17106,7 @@ func (c *IAM) UploadSSHPublicKeyRequest(input *UploadSSHPublicKeyInput) (req *re // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeNoSuchEntityException "NoSuchEntity" // The request was rejected because it referenced a resource entity that does @@ -15267,20 +17201,20 @@ func (c *IAM) UploadServerCertificateRequest(input *UploadServerCertificateInput // about using ACM, see the AWS Certificate Manager User Guide (https://docs.aws.amazon.com/acm/latest/userguide/). // // For more information about working with server certificates, see Working -// with Server Certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// with server certificates (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) // in the IAM User Guide. This topic includes a list of AWS services that can // use the server certificates that you manage with IAM. // // For information about the number of server certificates you can upload, see -// Limitations on IAM Entities and Objects (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html) +// IAM and STS quotas (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) // in the IAM User Guide. // // Because the body of the public key certificate, private key, and the certificate // chain can be large, you should use POST rather than GET when calling UploadServerCertificate. // For information about setting up signatures and authorization through the -// API, go to Signing AWS API Requests (https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) +// API, see Signing AWS API requests (https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) // in the AWS General Reference. For general information about using the Query -// API with IAM, go to Calling the API by Making HTTP Query Requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/programming.html) +// API with IAM, see Calling the API by making HTTP query requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/programming.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -15293,8 +17227,11 @@ func (c *IAM) UploadServerCertificateRequest(input *UploadServerCertificateInput // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. +// +// * ErrCodeInvalidInputException "InvalidInput" +// The request was rejected because an invalid or out-of-range value was supplied +// for an input parameter. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already @@ -15308,6 +17245,11 @@ func (c *IAM) UploadServerCertificateRequest(input *UploadServerCertificateInput // The request was rejected because the public key certificate and the private // key do not match. // +// * ErrCodeConcurrentModificationException "ConcurrentModification" +// The request was rejected because multiple requests to change this object +// were submitted simultaneously. Wait a few minutes and submit your request +// again. +// // * ErrCodeServiceFailureException "ServiceFailure" // The request processing has failed because of an unknown error, exception // or failure. @@ -15379,10 +17321,14 @@ func (c *IAM) UploadSigningCertificateRequest(input *UploadSigningCertificateInp // UploadSigningCertificate API operation for AWS Identity and Access Management. // // Uploads an X.509 signing certificate and associates it with the specified -// IAM user. Some AWS services use X.509 signing certificates to validate requests +// IAM user. Some AWS services require you to use certificates to validate requests // that are signed with a corresponding private key. When you upload the certificate, // its default status is Active. // +// For information about when you would use an X.509 signing certificate, see +// Managing server certificates in IAM (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) +// in the IAM User Guide. +// // If the UserName is not specified, the IAM user name is determined implicitly // based on the AWS access key ID used to sign the request. This operation works // for access keys under the AWS account. Consequently, you can use this operation @@ -15391,10 +17337,10 @@ func (c *IAM) UploadSigningCertificateRequest(input *UploadSigningCertificateInp // // Because the body of an X.509 certificate can be large, you should use POST // rather than GET when calling UploadSigningCertificate. For information about -// setting up signatures and authorization through the API, go to Signing AWS -// API Requests (https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) +// setting up signatures and authorization through the API, see Signing AWS +// API requests (https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) // in the AWS General Reference. For general information about using the Query -// API with IAM, go to Making Query Requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) +// API with IAM, see Making query requests (https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html) // in the IAM User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions @@ -15407,8 +17353,7 @@ func (c *IAM) UploadSigningCertificateRequest(input *UploadSigningCertificateInp // Returned Error Codes: // * ErrCodeLimitExceededException "LimitExceeded" // The request was rejected because it attempted to create resources beyond -// the current AWS account limitations. The error message describes the limit -// exceeded. +// the current AWS account limits. The error message describes the limit exceeded. // // * ErrCodeEntityAlreadyExistsException "EntityAlreadyExists" // The request was rejected because it attempted to create a resource that already @@ -15495,12 +17440,12 @@ type AccessDetail struct { // The namespace of the service in which access was attempted. // - // To learn the service namespace of a service, go to Actions, Resources, and - // Condition Keys for AWS Services (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html) - // in the IAM User Guide. Choose the name of the service to view details for - // that service. In the first paragraph, find the service prefix. For example, - // (service prefix: a4b). For more information about service namespaces, see - // AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) + // To learn the service namespace of a service, see Actions, resources, and + // condition keys for AWS services (https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) + // in the Service Authorization Reference. Choose the name of the service to + // view details for that service. In the first paragraph, find the service prefix. + // For example, (service prefix: a4b). For more information about service namespaces, + // see AWS service namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) // in the AWS General Reference. // // ServiceNamespace is a required field @@ -15666,7 +17611,7 @@ type AccessKeyLastUsed struct { // // * There is no sign-in data associated with the user. // - // For more information about AWS Regions, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html) + // For more information about AWS Regions, see Regions and endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html) // in the Amazon Web Services General Reference. // // Region is a required field @@ -16017,8 +17962,7 @@ type AttachGroupPolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to attach. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -16088,8 +18032,7 @@ type AttachRolePolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to attach. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -16168,8 +18111,7 @@ type AttachUserPolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to attach. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -16248,8 +18190,8 @@ func (s AttachUserPolicyOutput) GoString() string { // An attached permissions boundary is a managed policy that has been attached // to a user or role to set the permissions boundary. // -// For more information about permissions boundaries, see Permissions Boundaries -// for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) +// For more information about permissions boundaries, see Permissions boundaries +// for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. type AttachedPermissionsBoundary struct { _ struct{} `type:"structure"` @@ -16293,16 +18235,15 @@ func (s *AttachedPermissionsBoundary) SetPermissionsBoundaryType(v string) *Atta // ListAttachedRolePolicies, ListAttachedUserPolicies, and GetAccountAuthorizationDetails // operations. // -// For more information about managed policies, refer to Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, refer to Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type AttachedPolicy struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. PolicyArn *string `min:"20" type:"string"` @@ -16617,7 +18558,7 @@ type CreateGroupInput struct { // GroupName is a required field GroupName *string `min:"1" type:"string" required:"true"` - // The path to the group. For more information about paths, see IAM Identifiers + // The path to the group. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // @@ -16726,6 +18667,15 @@ type CreateInstanceProfileInput struct { // (\u007F), including most punctuation characters, digits, and upper and lowercased // letters. Path *string `min:"1" type:"string"` + + // A list of tags that you want to attach to the newly created IAM instance + // profile. Each tag consists of a key name and an associated value. For more + // information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + // + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -16750,6 +18700,16 @@ func (s *CreateInstanceProfileInput) Validate() error { if s.Path != nil && len(*s.Path) < 1 { invalidParams.Add(request.NewErrParamMinLen("Path", 1)) } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -16769,6 +18729,12 @@ func (s *CreateInstanceProfileInput) SetPath(v string) *CreateInstanceProfileInp return s } +// SetTags sets the Tags field's value. +func (s *CreateInstanceProfileInput) SetTags(v []*Tag) *CreateInstanceProfileInput { + s.Tags = v + return s +} + // Contains the response to a successful CreateInstanceProfile request. type CreateInstanceProfileOutput struct { _ struct{} `type:"structure"` @@ -16918,6 +18884,15 @@ type CreateOpenIDConnectProviderInput struct { // operation accepts client IDs up to 255 characters long. ClientIDList []*string `type:"list"` + // A list of tags that you want to attach to the new IAM OpenID Connect (OIDC) + // provider. Each tag consists of a key name and an associated value. For more + // information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + // + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. + Tags []*Tag `type:"list"` + // A list of server certificate thumbprints for the OpenID Connect (OIDC) identity // provider's server certificates. Typically this list includes only one entry. // However, IAM lets you have up to five thumbprints for an OIDC provider. This @@ -16935,7 +18910,7 @@ type CreateOpenIDConnectProviderInput struct { // of the certificate used by https://keys.server.example.com. // // For more information about obtaining the OIDC provider's thumbprint, see - // Obtaining the Thumbprint for an OpenID Connect Provider (https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers-oidc-obtain-thumbprint.html) + // Obtaining the thumbprint for an OpenID Connect provider (https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers-oidc-obtain-thumbprint.html) // in the IAM User Guide. // // ThumbprintList is a required field @@ -16977,6 +18952,16 @@ func (s *CreateOpenIDConnectProviderInput) Validate() error { if s.Url != nil && len(*s.Url) < 1 { invalidParams.Add(request.NewErrParamMinLen("Url", 1)) } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -16990,6 +18975,12 @@ func (s *CreateOpenIDConnectProviderInput) SetClientIDList(v []*string) *CreateO return s } +// SetTags sets the Tags field's value. +func (s *CreateOpenIDConnectProviderInput) SetTags(v []*Tag) *CreateOpenIDConnectProviderInput { + s.Tags = v + return s +} + // SetThumbprintList sets the ThumbprintList field's value. func (s *CreateOpenIDConnectProviderInput) SetThumbprintList(v []*string) *CreateOpenIDConnectProviderInput { s.ThumbprintList = v @@ -17009,6 +19000,12 @@ type CreateOpenIDConnectProviderOutput struct { // The Amazon Resource Name (ARN) of the new IAM OpenID Connect provider that // is created. For more information, see OpenIDConnectProviderListEntry. OpenIDConnectProviderArn *string `min:"20" type:"string"` + + // A list of tags that are attached to the new IAM OIDC provider. The returned + // list of tags is sorted by tag key. For more information about tagging, see + // Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -17027,6 +19024,12 @@ func (s *CreateOpenIDConnectProviderOutput) SetOpenIDConnectProviderArn(v string return s } +// SetTags sets the Tags field's value. +func (s *CreateOpenIDConnectProviderOutput) SetTags(v []*Tag) *CreateOpenIDConnectProviderOutput { + s.Tags = v + return s +} + type CreatePolicyInput struct { _ struct{} `type:"structure"` @@ -17041,7 +19044,7 @@ type CreatePolicyInput struct { // The path for the policy. // - // For more information about paths, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // For more information about paths, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // This parameter is optional. If it is not included, it defaults to a slash @@ -17086,6 +19089,15 @@ type CreatePolicyInput struct { // // PolicyName is a required field PolicyName *string `min:"1" type:"string" required:"true"` + + // A list of tags that you want to attach to the new IAM customer managed policy. + // Each tag consists of a key name and an associated value. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + // + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -17116,6 +19128,16 @@ func (s *CreatePolicyInput) Validate() error { if s.PolicyName != nil && len(*s.PolicyName) < 1 { invalidParams.Add(request.NewErrParamMinLen("PolicyName", 1)) } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -17147,6 +19169,12 @@ func (s *CreatePolicyInput) SetPolicyName(v string) *CreatePolicyInput { return s } +// SetTags sets the Tags field's value. +func (s *CreatePolicyInput) SetTags(v []*Tag) *CreatePolicyInput { + s.Tags = v + return s +} + // Contains the response to a successful CreatePolicy request. type CreatePolicyOutput struct { _ struct{} `type:"structure"` @@ -17177,8 +19205,7 @@ type CreatePolicyVersionInput struct { // The Amazon Resource Name (ARN) of the IAM policy to which you want to add // a new version. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -17213,8 +19240,8 @@ type CreatePolicyVersionInput struct { // version. That is, it becomes the version that is in effect for the IAM users, // groups, and roles that the policy is attached to. // - // For more information about managed policy versions, see Versioning for Managed - // Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) + // For more information about managed policy versions, see Versioning for managed + // policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. SetAsDefault *bool `type:"boolean"` } @@ -17335,7 +19362,7 @@ type CreateRoleInput struct { // for the DurationSeconds parameter, their security credentials are valid for // one hour by default. This applies when you use the AssumeRole* API operations // or the assume-role* CLI operations but does not apply when you use those - // operations to create a console URL. For more information, see Using IAM Roles + // operations to create a console URL. For more information, see Using IAM roles // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the // IAM User Guide. MaxSessionDuration *int64 `min:"3600" type:"integer"` @@ -17368,13 +19395,13 @@ type CreateRoleInput struct { // RoleName is a required field RoleName *string `min:"1" type:"string" required:"true"` - // A list of tags that you want to attach to the newly created role. Each tag - // consists of a key name and an associated value. For more information about - // tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // A list of tags that you want to attach to the new role. Each tag consists + // of a key name and an associated value. For more information about tagging, + // see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // - // If any one of the tags is invalid or if you exceed the allowed number of - // tags per role, then the entire request fails and the role is not created. + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. Tags []*Tag `type:"list"` } @@ -17515,11 +19542,20 @@ type CreateSAMLProviderInput struct { // that are received from the IdP. You must generate the metadata document using // the identity management software that is used as your organization's IdP. // - // For more information, see About SAML 2.0-based Federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) + // For more information, see About SAML 2.0-based federation (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) // in the IAM User Guide // // SAMLMetadataDocument is a required field SAMLMetadataDocument *string `min:"1000" type:"string" required:"true"` + + // A list of tags that you want to attach to the new IAM SAML provider. Each + // tag consists of a key name and an associated value. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + // + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -17547,6 +19583,16 @@ func (s *CreateSAMLProviderInput) Validate() error { if s.SAMLMetadataDocument != nil && len(*s.SAMLMetadataDocument) < 1000 { invalidParams.Add(request.NewErrParamMinLen("SAMLMetadataDocument", 1000)) } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -17566,12 +19612,24 @@ func (s *CreateSAMLProviderInput) SetSAMLMetadataDocument(v string) *CreateSAMLP return s } +// SetTags sets the Tags field's value. +func (s *CreateSAMLProviderInput) SetTags(v []*Tag) *CreateSAMLProviderInput { + s.Tags = v + return s +} + // Contains the response to a successful CreateSAMLProvider request. type CreateSAMLProviderOutput struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) of the new SAML provider resource in IAM. SAMLProviderArn *string `min:"20" type:"string"` + + // A list of tags that are attached to the new IAM SAML provider. The returned + // list of tags is sorted by tag key. For more information about tagging, see + // Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -17590,6 +19648,12 @@ func (s *CreateSAMLProviderOutput) SetSAMLProviderArn(v string) *CreateSAMLProvi return s } +// SetTags sets the Tags field's value. +func (s *CreateSAMLProviderOutput) SetTags(v []*Tag) *CreateSAMLProviderOutput { + s.Tags = v + return s +} + type CreateServiceLinkedRoleInput struct { _ struct{} `type:"structure"` @@ -17598,7 +19662,7 @@ type CreateServiceLinkedRoleInput struct { // elasticbeanstalk.amazonaws.com. // // Service principals are unique and case-sensitive. To find the exact service - // principal for your service-linked role, see AWS Services That Work with IAM + // principal for your service-linked role, see AWS services that work with IAM // (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) // in the IAM User Guide. Look for the services that have Yes in the Service-Linked // Role column. Choose the Yes link to view the service-linked role documentation @@ -17785,7 +19849,7 @@ func (s *CreateServiceSpecificCredentialOutput) SetServiceSpecificCredential(v * type CreateUserInput struct { _ struct{} `type:"structure"` - // The path for the user name. For more information about paths, see IAM Identifiers + // The path for the user name. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // @@ -17804,13 +19868,13 @@ type CreateUserInput struct { // user. PermissionsBoundary *string `min:"20" type:"string"` - // A list of tags that you want to attach to the newly created user. Each tag - // consists of a key name and an associated value. For more information about - // tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // A list of tags that you want to attach to the new user. Each tag consists + // of a key name and an associated value. For more information about tagging, + // see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. // - // If any one of the tags is invalid or if you exceed the allowed number of - // tags per user, then the entire request fails and the user is not created. + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. Tags []*Tag `type:"list"` // The name of the user to create. @@ -17917,7 +19981,7 @@ type CreateVirtualMFADeviceInput struct { _ struct{} `type:"structure"` // The path for the virtual MFA device. For more information about paths, see - // IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // This parameter is optional. If it is not included, it defaults to a slash @@ -17931,6 +19995,15 @@ type CreateVirtualMFADeviceInput struct { // letters. Path *string `min:"1" type:"string"` + // A list of tags that you want to attach to the new IAM virtual MFA device. + // Each tag consists of a key name and an associated value. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + // + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. + Tags []*Tag `type:"list"` + // The name of the virtual MFA device. Use with path to uniquely identify a // virtual MFA device. // @@ -17964,6 +20037,16 @@ func (s *CreateVirtualMFADeviceInput) Validate() error { if s.VirtualMFADeviceName != nil && len(*s.VirtualMFADeviceName) < 1 { invalidParams.Add(request.NewErrParamMinLen("VirtualMFADeviceName", 1)) } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -17977,6 +20060,12 @@ func (s *CreateVirtualMFADeviceInput) SetPath(v string) *CreateVirtualMFADeviceI return s } +// SetTags sets the Tags field's value. +func (s *CreateVirtualMFADeviceInput) SetTags(v []*Tag) *CreateVirtualMFADeviceInput { + s.Tags = v + return s +} + // SetVirtualMFADeviceName sets the VirtualMFADeviceName field's value. func (s *CreateVirtualMFADeviceInput) SetVirtualMFADeviceName(v string) *CreateVirtualMFADeviceInput { s.VirtualMFADeviceName = &v @@ -18574,8 +20663,7 @@ type DeletePolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to delete. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -18634,8 +20722,7 @@ type DeletePolicyVersionInput struct { // The Amazon Resource Name (ARN) of the IAM policy from which you want to delete // a version. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -18648,8 +20735,8 @@ type DeletePolicyVersionInput struct { // by one or two digits, and optionally followed by a period '.' and a string // of letters and digits. // - // For more information about managed policy versions, see Versioning for Managed - // Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) + // For more information about managed policy versions, see Versioning for managed + // policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // // VersionId is a required field @@ -19632,8 +21719,7 @@ type DetachGroupPolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to detach. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -19703,8 +21789,7 @@ type DetachRolePolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to detach. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -19783,8 +21868,7 @@ type DetachUserPolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy you want to detach. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -20043,8 +22127,7 @@ type EntityInfo struct { // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // Arn is a required field @@ -20061,7 +22144,7 @@ type EntityInfo struct { Name *string `min:"1" type:"string" required:"true"` // The path to the entity (user or role). For more information about paths, - // see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. Path *string `min:"1" type:"string"` @@ -20182,7 +22265,7 @@ type EvaluationResult struct { // When you make a cross-account request, AWS evaluates the request in the trusting // account and the trusted account. The request is allowed only if both evaluations // return true. For more information about how policies are evaluated, see Evaluating - // Policies Within a Single Account (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics). + // policies within a single account (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-basics). // // If an AWS Organizations SCP included in the evaluation denies access, the // simulation ends. In this case, policy evaluation does not proceed any further @@ -20910,8 +22993,7 @@ type GetContextKeysForPrincipalPolicyInput struct { // form here for clarity, but must be URL encoded to be included as a part of // a real HTML request. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicySourceArn is a required field @@ -21423,8 +23505,7 @@ type GetOpenIDConnectProviderInput struct { // to get information for. You can get a list of OIDC provider resource ARNs // by using the ListOpenIDConnectProviders operation. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // OpenIDConnectProviderArn is a required field @@ -21475,6 +23556,12 @@ type GetOpenIDConnectProviderOutput struct { // in the AWS account. CreateDate *time.Time `type:"timestamp"` + // A list of tags that are attached to the specified IAM OIDC provider. The + // returned list of tags is sorted by tag key. For more information about tagging, + // see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` + // A list of certificate thumbprints that are associated with the specified // IAM OIDC provider resource object. For more information, see CreateOpenIDConnectProvider. ThumbprintList []*string `type:"list"` @@ -21506,6 +23593,12 @@ func (s *GetOpenIDConnectProviderOutput) SetCreateDate(v time.Time) *GetOpenIDCo return s } +// SetTags sets the Tags field's value. +func (s *GetOpenIDConnectProviderOutput) SetTags(v []*Tag) *GetOpenIDConnectProviderOutput { + s.Tags = v + return s +} + // SetThumbprintList sets the ThumbprintList field's value. func (s *GetOpenIDConnectProviderOutput) SetThumbprintList(v []*string) *GetOpenIDConnectProviderOutput { s.ThumbprintList = v @@ -21729,8 +23822,7 @@ type GetPolicyInput struct { // The Amazon Resource Name (ARN) of the managed policy that you want information // about. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -21799,8 +23891,7 @@ type GetPolicyVersionInput struct { // The Amazon Resource Name (ARN) of the managed policy that you want information // about. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -22077,8 +24168,7 @@ type GetSAMLProviderInput struct { // The Amazon Resource Name (ARN) of the SAML provider resource object in IAM // to get information about. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // SAMLProviderArn is a required field @@ -22127,6 +24217,12 @@ type GetSAMLProviderOutput struct { // The XML metadata document that includes information about an identity provider. SAMLMetadataDocument *string `min:"1000" type:"string"` + // A list of tags that are attached to the specified IAM SAML provider. The + // returned list of tags is sorted by tag key. For more information about tagging, + // see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` + // The expiration date and time for the SAML provider. ValidUntil *time.Time `type:"timestamp"` } @@ -22153,6 +24249,12 @@ func (s *GetSAMLProviderOutput) SetSAMLMetadataDocument(v string) *GetSAMLProvid return s } +// SetTags sets the Tags field's value. +func (s *GetSAMLProviderOutput) SetTags(v []*Tag) *GetSAMLProviderOutput { + s.Tags = v + return s +} + // SetValidUntil sets the ValidUntil field's value. func (s *GetSAMLProviderOutput) SetValidUntil(v time.Time) *GetSAMLProviderOutput { s.ValidUntil = &v @@ -22552,12 +24654,12 @@ type GetServiceLastAccessedDetailsWithEntitiesInput struct { // The service namespace for an AWS service. Provide the service namespace to // learn when the IAM entity last attempted to access the specified service. // - // To learn the service namespace for a service, go to Actions, Resources, and - // Condition Keys for AWS Services (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html) + // To learn the service namespace for a service, see Actions, resources, and + // condition keys for AWS services (https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) // in the IAM User Guide. Choose the name of the service to view details for // that service. In the first paragraph, find the service prefix. For example, // (service prefix: a4b). For more information about service namespaces, see - // AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) + // AWS service namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) // in the AWS General Reference. // // ServiceNamespace is a required field @@ -22852,10 +24954,10 @@ type GetUserOutput struct { // sign-in (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) // dates shown in the IAM console and password last used dates in the IAM credential // report (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html), - // and returned by this GetUser API. If users signed in during the affected - // time, the password last used date that is returned is the date the user last - // signed in before May 3, 2018. For users that signed in after May 23, 2018 - // 14:08 PDT, the returned password last used date is accurate. + // and returned by this operation. If users signed in during the affected time, + // the password last used date that is returned is the date the user last signed + // in before May 3, 2018. For users that signed in after May 23, 2018 14:08 + // PDT, the returned password last used date is accurate. // // You can use password last used information to identify unused credentials // for deletion. For example, you might delete users who did not sign in to @@ -23015,7 +25117,7 @@ type Group struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) specifying the group. For more information - // about ARNs and how to use them in policies, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // about ARNs and how to use them in policies, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // Arn is a required field @@ -23028,7 +25130,7 @@ type Group struct { CreateDate *time.Time `type:"timestamp" required:"true"` // The stable and unique string identifying the group. For more information - // about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // GroupId is a required field @@ -23039,7 +25141,7 @@ type Group struct { // GroupName is a required field GroupName *string `min:"1" type:"string" required:"true"` - // The path to the group. For more information about paths, see IAM Identifiers + // The path to the group. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // @@ -23096,8 +25198,7 @@ type GroupDetail struct { // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. Arn *string `min:"20" type:"string"` @@ -23109,7 +25210,7 @@ type GroupDetail struct { CreateDate *time.Time `type:"timestamp"` // The stable and unique string identifying the group. For more information - // about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. GroupId *string `min:"16" type:"string"` @@ -23119,7 +25220,7 @@ type GroupDetail struct { // A list of the inline policies embedded in the group. GroupPolicyList []*PolicyDetail `type:"list"` - // The path to the group. For more information about paths, see IAM Identifiers + // The path to the group. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. Path *string `min:"1" type:"string"` @@ -23192,7 +25293,7 @@ type InstanceProfile struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) specifying the instance profile. For more - // information about ARNs and how to use them in policies, see IAM Identifiers + // information about ARNs and how to use them in policies, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // @@ -23205,7 +25306,7 @@ type InstanceProfile struct { CreateDate *time.Time `type:"timestamp" required:"true"` // The stable and unique string identifying the instance profile. For more information - // about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // InstanceProfileId is a required field @@ -23217,7 +25318,7 @@ type InstanceProfile struct { InstanceProfileName *string `min:"1" type:"string" required:"true"` // The path to the instance profile. For more information about paths, see IAM - // Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // Path is a required field @@ -23227,6 +25328,11 @@ type InstanceProfile struct { // // Roles is a required field Roles []*Role `type:"list" required:"true"` + + // A list of tags that are attached to the instance profile. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -23275,6 +25381,12 @@ func (s *InstanceProfile) SetRoles(v []*Role) *InstanceProfile { return s } +// SetTags sets the Tags field's value. +func (s *InstanceProfile) SetTags(v []*Tag) *InstanceProfile { + s.Tags = v + return s +} + type ListAccessKeysInput struct { _ struct{} `type:"structure"` @@ -23996,8 +26108,7 @@ type ListEntitiesForPolicyInput struct { // The Amazon Resource Name (ARN) of the IAM policy for which you want the versions. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -24544,6 +26655,138 @@ func (s *ListGroupsOutput) SetMarker(v string) *ListGroupsOutput { return s } +type ListInstanceProfileTagsInput struct { + _ struct{} `type:"structure"` + + // The name of the IAM instance profile whose tags you want to see. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // InstanceProfileName is a required field + InstanceProfileName *string `min:"1" type:"string" required:"true"` + + // Use this parameter only when paginating results and only after you receive + // a response indicating that the results are truncated. Set it to the value + // of the Marker element in the response that you received to indicate where + // the next call should start. + Marker *string `min:"1" type:"string"` + + // (Optional) Use this only when paginating results to indicate the maximum + // number of items that you want in the response. If additional items exist + // beyond the maximum that you specify, the IsTruncated response element is + // true. + // + // If you do not include this parameter, it defaults to 100. Note that IAM might + // return fewer results, even when more results are available. In that case, + // the IsTruncated response element returns true, and Marker contains a value + // to include in the subsequent call that tells the service where to continue + // from. + MaxItems *int64 `min:"1" type:"integer"` +} + +// String returns the string representation +func (s ListInstanceProfileTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListInstanceProfileTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListInstanceProfileTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListInstanceProfileTagsInput"} + if s.InstanceProfileName == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceProfileName")) + } + if s.InstanceProfileName != nil && len(*s.InstanceProfileName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("InstanceProfileName", 1)) + } + if s.Marker != nil && len(*s.Marker) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Marker", 1)) + } + if s.MaxItems != nil && *s.MaxItems < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceProfileName sets the InstanceProfileName field's value. +func (s *ListInstanceProfileTagsInput) SetInstanceProfileName(v string) *ListInstanceProfileTagsInput { + s.InstanceProfileName = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListInstanceProfileTagsInput) SetMarker(v string) *ListInstanceProfileTagsInput { + s.Marker = &v + return s +} + +// SetMaxItems sets the MaxItems field's value. +func (s *ListInstanceProfileTagsInput) SetMaxItems(v int64) *ListInstanceProfileTagsInput { + s.MaxItems = &v + return s +} + +type ListInstanceProfileTagsOutput struct { + _ struct{} `type:"structure"` + + // A flag that indicates whether there are more items to return. If your results + // were truncated, you can use the Marker request parameter to make a subsequent + // pagination request that retrieves more items. Note that IAM might return + // fewer than the MaxItems number of results even when more results are available. + // Check IsTruncated after every call to ensure that you receive all of your + // results. + IsTruncated *bool `type:"boolean"` + + // When IsTruncated is true, this element is present and contains the value + // to use for the Marker parameter in a subsequent pagination request. + Marker *string `type:"string"` + + // The list of tags that are currently attached to the IAM instance profile. + // Each tag consists of a key name and an associated value. If no tags are attached + // to the specified resource, the response contains an empty list. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s ListInstanceProfileTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListInstanceProfileTagsOutput) GoString() string { + return s.String() +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListInstanceProfileTagsOutput) SetIsTruncated(v bool) *ListInstanceProfileTagsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListInstanceProfileTagsOutput) SetMarker(v string) *ListInstanceProfileTagsOutput { + s.Marker = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ListInstanceProfileTagsOutput) SetTags(v []*Tag) *ListInstanceProfileTagsOutput { + s.Tags = v + return s +} + type ListInstanceProfilesForRoleInput struct { _ struct{} `type:"structure"` @@ -24804,6 +27047,139 @@ func (s *ListInstanceProfilesOutput) SetMarker(v string) *ListInstanceProfilesOu return s } +type ListMFADeviceTagsInput struct { + _ struct{} `type:"structure"` + + // Use this parameter only when paginating results and only after you receive + // a response indicating that the results are truncated. Set it to the value + // of the Marker element in the response that you received to indicate where + // the next call should start. + Marker *string `min:"1" type:"string"` + + // (Optional) Use this only when paginating results to indicate the maximum + // number of items that you want in the response. If additional items exist + // beyond the maximum that you specify, the IsTruncated response element is + // true. + // + // If you do not include this parameter, it defaults to 100. Note that IAM might + // return fewer results, even when more results are available. In that case, + // the IsTruncated response element returns true, and Marker contains a value + // to include in the subsequent call that tells the service where to continue + // from. + MaxItems *int64 `min:"1" type:"integer"` + + // The unique identifier for the IAM virtual MFA device whose tags you want + // to see. For virtual MFA devices, the serial number is the same as the ARN. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // SerialNumber is a required field + SerialNumber *string `min:"9" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListMFADeviceTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListMFADeviceTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListMFADeviceTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListMFADeviceTagsInput"} + if s.Marker != nil && len(*s.Marker) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Marker", 1)) + } + if s.MaxItems != nil && *s.MaxItems < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1)) + } + if s.SerialNumber == nil { + invalidParams.Add(request.NewErrParamRequired("SerialNumber")) + } + if s.SerialNumber != nil && len(*s.SerialNumber) < 9 { + invalidParams.Add(request.NewErrParamMinLen("SerialNumber", 9)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMarker sets the Marker field's value. +func (s *ListMFADeviceTagsInput) SetMarker(v string) *ListMFADeviceTagsInput { + s.Marker = &v + return s +} + +// SetMaxItems sets the MaxItems field's value. +func (s *ListMFADeviceTagsInput) SetMaxItems(v int64) *ListMFADeviceTagsInput { + s.MaxItems = &v + return s +} + +// SetSerialNumber sets the SerialNumber field's value. +func (s *ListMFADeviceTagsInput) SetSerialNumber(v string) *ListMFADeviceTagsInput { + s.SerialNumber = &v + return s +} + +type ListMFADeviceTagsOutput struct { + _ struct{} `type:"structure"` + + // A flag that indicates whether there are more items to return. If your results + // were truncated, you can use the Marker request parameter to make a subsequent + // pagination request that retrieves more items. Note that IAM might return + // fewer than the MaxItems number of results even when more results are available. + // Check IsTruncated after every call to ensure that you receive all of your + // results. + IsTruncated *bool `type:"boolean"` + + // When IsTruncated is true, this element is present and contains the value + // to use for the Marker parameter in a subsequent pagination request. + Marker *string `type:"string"` + + // The list of tags that are currently attached to the virtual MFA device. Each + // tag consists of a key name and an associated value. If no tags are attached + // to the specified resource, the response contains an empty list. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s ListMFADeviceTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListMFADeviceTagsOutput) GoString() string { + return s.String() +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListMFADeviceTagsOutput) SetIsTruncated(v bool) *ListMFADeviceTagsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListMFADeviceTagsOutput) SetMarker(v string) *ListMFADeviceTagsOutput { + s.Marker = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ListMFADeviceTagsOutput) SetTags(v []*Tag) *ListMFADeviceTagsOutput { + s.Tags = v + return s +} + type ListMFADevicesInput struct { _ struct{} `type:"structure"` @@ -24929,6 +27305,140 @@ func (s *ListMFADevicesOutput) SetMarker(v string) *ListMFADevicesOutput { return s } +type ListOpenIDConnectProviderTagsInput struct { + _ struct{} `type:"structure"` + + // Use this parameter only when paginating results and only after you receive + // a response indicating that the results are truncated. Set it to the value + // of the Marker element in the response that you received to indicate where + // the next call should start. + Marker *string `min:"1" type:"string"` + + // (Optional) Use this only when paginating results to indicate the maximum + // number of items that you want in the response. If additional items exist + // beyond the maximum that you specify, the IsTruncated response element is + // true. + // + // If you do not include this parameter, it defaults to 100. Note that IAM might + // return fewer results, even when more results are available. In that case, + // the IsTruncated response element returns true, and Marker contains a value + // to include in the subsequent call that tells the service where to continue + // from. + MaxItems *int64 `min:"1" type:"integer"` + + // The ARN of the OpenID Connect (OIDC) identity provider whose tags you want + // to see. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // OpenIDConnectProviderArn is a required field + OpenIDConnectProviderArn *string `min:"20" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListOpenIDConnectProviderTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListOpenIDConnectProviderTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListOpenIDConnectProviderTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListOpenIDConnectProviderTagsInput"} + if s.Marker != nil && len(*s.Marker) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Marker", 1)) + } + if s.MaxItems != nil && *s.MaxItems < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1)) + } + if s.OpenIDConnectProviderArn == nil { + invalidParams.Add(request.NewErrParamRequired("OpenIDConnectProviderArn")) + } + if s.OpenIDConnectProviderArn != nil && len(*s.OpenIDConnectProviderArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("OpenIDConnectProviderArn", 20)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMarker sets the Marker field's value. +func (s *ListOpenIDConnectProviderTagsInput) SetMarker(v string) *ListOpenIDConnectProviderTagsInput { + s.Marker = &v + return s +} + +// SetMaxItems sets the MaxItems field's value. +func (s *ListOpenIDConnectProviderTagsInput) SetMaxItems(v int64) *ListOpenIDConnectProviderTagsInput { + s.MaxItems = &v + return s +} + +// SetOpenIDConnectProviderArn sets the OpenIDConnectProviderArn field's value. +func (s *ListOpenIDConnectProviderTagsInput) SetOpenIDConnectProviderArn(v string) *ListOpenIDConnectProviderTagsInput { + s.OpenIDConnectProviderArn = &v + return s +} + +type ListOpenIDConnectProviderTagsOutput struct { + _ struct{} `type:"structure"` + + // A flag that indicates whether there are more items to return. If your results + // were truncated, you can use the Marker request parameter to make a subsequent + // pagination request that retrieves more items. Note that IAM might return + // fewer than the MaxItems number of results even when more results are available. + // Check IsTruncated after every call to ensure that you receive all of your + // results. + IsTruncated *bool `type:"boolean"` + + // When IsTruncated is true, this element is present and contains the value + // to use for the Marker parameter in a subsequent pagination request. + Marker *string `type:"string"` + + // The list of tags that are currently attached to the OpenID Connect (OIDC) + // identity provider. Each tag consists of a key name and an associated value. + // If no tags are attached to the specified resource, the response contains + // an empty list. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s ListOpenIDConnectProviderTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListOpenIDConnectProviderTagsOutput) GoString() string { + return s.String() +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListOpenIDConnectProviderTagsOutput) SetIsTruncated(v bool) *ListOpenIDConnectProviderTagsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListOpenIDConnectProviderTagsOutput) SetMarker(v string) *ListOpenIDConnectProviderTagsOutput { + s.Marker = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ListOpenIDConnectProviderTagsOutput) SetTags(v []*Tag) *ListOpenIDConnectProviderTagsOutput { + s.Tags = v + return s +} + type ListOpenIDConnectProvidersInput struct { _ struct{} `type:"structure"` } @@ -24981,12 +27491,12 @@ type ListPoliciesGrantingServiceAccessEntry struct { // The namespace of the service that was accessed. // - // To learn the service namespace of a service, go to Actions, Resources, and - // Condition Keys for AWS Services (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html) - // in the IAM User Guide. Choose the name of the service to view details for - // that service. In the first paragraph, find the service prefix. For example, - // (service prefix: a4b). For more information about service namespaces, see - // AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) + // To learn the service namespace of a service, see Actions, resources, and + // condition keys for AWS services (https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) + // in the Service Authorization Reference. Choose the name of the service to + // view details for that service. In the first paragraph, find the service prefix. + // For example, (service prefix: a4b). For more information about service namespaces, + // see AWS service namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) // in the AWS General Reference. ServiceNamespace *string `min:"1" type:"string"` } @@ -25030,12 +27540,12 @@ type ListPoliciesGrantingServiceAccessInput struct { // The service namespace for the AWS services whose policies you want to list. // - // To learn the service namespace for a service, go to Actions, Resources, and - // Condition Keys for AWS Services (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html) + // To learn the service namespace for a service, see Actions, resources, and + // condition keys for AWS services (https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) // in the IAM User Guide. Choose the name of the service to view details for // that service. In the first paragraph, find the service prefix. For example, // (service prefix: a4b). For more information about service namespaces, see - // AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) + // AWS service namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) // in the AWS General Reference. // // ServiceNamespaces is a required field @@ -25313,6 +27823,138 @@ func (s *ListPoliciesOutput) SetPolicies(v []*Policy) *ListPoliciesOutput { return s } +type ListPolicyTagsInput struct { + _ struct{} `type:"structure"` + + // Use this parameter only when paginating results and only after you receive + // a response indicating that the results are truncated. Set it to the value + // of the Marker element in the response that you received to indicate where + // the next call should start. + Marker *string `min:"1" type:"string"` + + // (Optional) Use this only when paginating results to indicate the maximum + // number of items that you want in the response. If additional items exist + // beyond the maximum that you specify, the IsTruncated response element is + // true. + // + // If you do not include this parameter, it defaults to 100. Note that IAM might + // return fewer results, even when more results are available. In that case, + // the IsTruncated response element returns true, and Marker contains a value + // to include in the subsequent call that tells the service where to continue + // from. + MaxItems *int64 `min:"1" type:"integer"` + + // The ARN of the IAM customer managed policy whose tags you want to see. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // PolicyArn is a required field + PolicyArn *string `min:"20" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListPolicyTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListPolicyTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListPolicyTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListPolicyTagsInput"} + if s.Marker != nil && len(*s.Marker) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Marker", 1)) + } + if s.MaxItems != nil && *s.MaxItems < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1)) + } + if s.PolicyArn == nil { + invalidParams.Add(request.NewErrParamRequired("PolicyArn")) + } + if s.PolicyArn != nil && len(*s.PolicyArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("PolicyArn", 20)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMarker sets the Marker field's value. +func (s *ListPolicyTagsInput) SetMarker(v string) *ListPolicyTagsInput { + s.Marker = &v + return s +} + +// SetMaxItems sets the MaxItems field's value. +func (s *ListPolicyTagsInput) SetMaxItems(v int64) *ListPolicyTagsInput { + s.MaxItems = &v + return s +} + +// SetPolicyArn sets the PolicyArn field's value. +func (s *ListPolicyTagsInput) SetPolicyArn(v string) *ListPolicyTagsInput { + s.PolicyArn = &v + return s +} + +type ListPolicyTagsOutput struct { + _ struct{} `type:"structure"` + + // A flag that indicates whether there are more items to return. If your results + // were truncated, you can use the Marker request parameter to make a subsequent + // pagination request that retrieves more items. Note that IAM might return + // fewer than the MaxItems number of results even when more results are available. + // Check IsTruncated after every call to ensure that you receive all of your + // results. + IsTruncated *bool `type:"boolean"` + + // When IsTruncated is true, this element is present and contains the value + // to use for the Marker parameter in a subsequent pagination request. + Marker *string `type:"string"` + + // The list of tags that are currently attached to the IAM customer managed + // policy. Each tag consists of a key name and an associated value. If no tags + // are attached to the specified resource, the response contains an empty list. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s ListPolicyTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListPolicyTagsOutput) GoString() string { + return s.String() +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListPolicyTagsOutput) SetIsTruncated(v bool) *ListPolicyTagsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListPolicyTagsOutput) SetMarker(v string) *ListPolicyTagsOutput { + s.Marker = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ListPolicyTagsOutput) SetTags(v []*Tag) *ListPolicyTagsOutput { + s.Tags = v + return s +} + type ListPolicyVersionsInput struct { _ struct{} `type:"structure"` @@ -25335,8 +27977,7 @@ type ListPolicyVersionsInput struct { // The Amazon Resource Name (ARN) of the IAM policy for which you want the versions. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -25411,8 +28052,8 @@ type ListPolicyVersionsOutput struct { // A list of policy versions. // - // For more information about managed policy versions, see Versioning for Managed - // Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) + // For more information about managed policy versions, see Versioning for managed + // policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. Versions []*PolicyVersion `type:"list"` } @@ -25671,9 +28312,9 @@ type ListRoleTagsOutput struct { // to use for the Marker parameter in a subsequent pagination request. Marker *string `type:"string"` - // The list of tags currently that is attached to the role. Each tag consists + // The list of tags that are currently attached to the role. Each tag consists // of a key name and an associated value. If no tags are attached to the specified - // role, the response contains an empty list. + // resource, the response contains an empty list. // // Tags is a required field Tags []*Tag `type:"list" required:"true"` @@ -25837,6 +28478,140 @@ func (s *ListRolesOutput) SetRoles(v []*Role) *ListRolesOutput { return s } +type ListSAMLProviderTagsInput struct { + _ struct{} `type:"structure"` + + // Use this parameter only when paginating results and only after you receive + // a response indicating that the results are truncated. Set it to the value + // of the Marker element in the response that you received to indicate where + // the next call should start. + Marker *string `min:"1" type:"string"` + + // (Optional) Use this only when paginating results to indicate the maximum + // number of items that you want in the response. If additional items exist + // beyond the maximum that you specify, the IsTruncated response element is + // true. + // + // If you do not include this parameter, it defaults to 100. Note that IAM might + // return fewer results, even when more results are available. In that case, + // the IsTruncated response element returns true, and Marker contains a value + // to include in the subsequent call that tells the service where to continue + // from. + MaxItems *int64 `min:"1" type:"integer"` + + // The ARN of the Security Assertion Markup Language (SAML) identity provider + // whose tags you want to see. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // SAMLProviderArn is a required field + SAMLProviderArn *string `min:"20" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListSAMLProviderTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListSAMLProviderTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListSAMLProviderTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListSAMLProviderTagsInput"} + if s.Marker != nil && len(*s.Marker) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Marker", 1)) + } + if s.MaxItems != nil && *s.MaxItems < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1)) + } + if s.SAMLProviderArn == nil { + invalidParams.Add(request.NewErrParamRequired("SAMLProviderArn")) + } + if s.SAMLProviderArn != nil && len(*s.SAMLProviderArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("SAMLProviderArn", 20)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMarker sets the Marker field's value. +func (s *ListSAMLProviderTagsInput) SetMarker(v string) *ListSAMLProviderTagsInput { + s.Marker = &v + return s +} + +// SetMaxItems sets the MaxItems field's value. +func (s *ListSAMLProviderTagsInput) SetMaxItems(v int64) *ListSAMLProviderTagsInput { + s.MaxItems = &v + return s +} + +// SetSAMLProviderArn sets the SAMLProviderArn field's value. +func (s *ListSAMLProviderTagsInput) SetSAMLProviderArn(v string) *ListSAMLProviderTagsInput { + s.SAMLProviderArn = &v + return s +} + +type ListSAMLProviderTagsOutput struct { + _ struct{} `type:"structure"` + + // A flag that indicates whether there are more items to return. If your results + // were truncated, you can use the Marker request parameter to make a subsequent + // pagination request that retrieves more items. Note that IAM might return + // fewer than the MaxItems number of results even when more results are available. + // Check IsTruncated after every call to ensure that you receive all of your + // results. + IsTruncated *bool `type:"boolean"` + + // When IsTruncated is true, this element is present and contains the value + // to use for the Marker parameter in a subsequent pagination request. + Marker *string `type:"string"` + + // The list of tags that are currently attached to the Security Assertion Markup + // Language (SAML) identity provider. Each tag consists of a key name and an + // associated value. If no tags are attached to the specified resource, the + // response contains an empty list. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s ListSAMLProviderTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListSAMLProviderTagsOutput) GoString() string { + return s.String() +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListSAMLProviderTagsOutput) SetIsTruncated(v bool) *ListSAMLProviderTagsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListSAMLProviderTagsOutput) SetMarker(v string) *ListSAMLProviderTagsOutput { + s.Marker = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ListSAMLProviderTagsOutput) SetTags(v []*Tag) *ListSAMLProviderTagsOutput { + s.Tags = v + return s +} + type ListSAMLProvidersInput struct { _ struct{} `type:"structure"` } @@ -26000,6 +28775,138 @@ func (s *ListSSHPublicKeysOutput) SetSSHPublicKeys(v []*SSHPublicKeyMetadata) *L return s } +type ListServerCertificateTagsInput struct { + _ struct{} `type:"structure"` + + // Use this parameter only when paginating results and only after you receive + // a response indicating that the results are truncated. Set it to the value + // of the Marker element in the response that you received to indicate where + // the next call should start. + Marker *string `min:"1" type:"string"` + + // (Optional) Use this only when paginating results to indicate the maximum + // number of items that you want in the response. If additional items exist + // beyond the maximum that you specify, the IsTruncated response element is + // true. + // + // If you do not include this parameter, it defaults to 100. Note that IAM might + // return fewer results, even when more results are available. In that case, + // the IsTruncated response element returns true, and Marker contains a value + // to include in the subsequent call that tells the service where to continue + // from. + MaxItems *int64 `min:"1" type:"integer"` + + // The name of the IAM server certificate whose tags you want to see. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // ServerCertificateName is a required field + ServerCertificateName *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListServerCertificateTagsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListServerCertificateTagsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListServerCertificateTagsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListServerCertificateTagsInput"} + if s.Marker != nil && len(*s.Marker) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Marker", 1)) + } + if s.MaxItems != nil && *s.MaxItems < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxItems", 1)) + } + if s.ServerCertificateName == nil { + invalidParams.Add(request.NewErrParamRequired("ServerCertificateName")) + } + if s.ServerCertificateName != nil && len(*s.ServerCertificateName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServerCertificateName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetMarker sets the Marker field's value. +func (s *ListServerCertificateTagsInput) SetMarker(v string) *ListServerCertificateTagsInput { + s.Marker = &v + return s +} + +// SetMaxItems sets the MaxItems field's value. +func (s *ListServerCertificateTagsInput) SetMaxItems(v int64) *ListServerCertificateTagsInput { + s.MaxItems = &v + return s +} + +// SetServerCertificateName sets the ServerCertificateName field's value. +func (s *ListServerCertificateTagsInput) SetServerCertificateName(v string) *ListServerCertificateTagsInput { + s.ServerCertificateName = &v + return s +} + +type ListServerCertificateTagsOutput struct { + _ struct{} `type:"structure"` + + // A flag that indicates whether there are more items to return. If your results + // were truncated, you can use the Marker request parameter to make a subsequent + // pagination request that retrieves more items. Note that IAM might return + // fewer than the MaxItems number of results even when more results are available. + // Check IsTruncated after every call to ensure that you receive all of your + // results. + IsTruncated *bool `type:"boolean"` + + // When IsTruncated is true, this element is present and contains the value + // to use for the Marker parameter in a subsequent pagination request. + Marker *string `type:"string"` + + // The list of tags that are currently attached to the IAM server certificate. + // Each tag consists of a key name and an associated value. If no tags are attached + // to the specified resource, the response contains an empty list. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s ListServerCertificateTagsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListServerCertificateTagsOutput) GoString() string { + return s.String() +} + +// SetIsTruncated sets the IsTruncated field's value. +func (s *ListServerCertificateTagsOutput) SetIsTruncated(v bool) *ListServerCertificateTagsOutput { + s.IsTruncated = &v + return s +} + +// SetMarker sets the Marker field's value. +func (s *ListServerCertificateTagsOutput) SetMarker(v string) *ListServerCertificateTagsOutput { + s.Marker = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *ListServerCertificateTagsOutput) SetTags(v []*Tag) *ListServerCertificateTagsOutput { + s.Tags = v + return s +} + type ListServerCertificatesInput struct { _ struct{} `type:"structure"` @@ -26558,7 +29465,7 @@ type ListUserTagsOutput struct { // The list of tags that are currently attached to the user. Each tag consists // of a key name and an associated value. If no tags are attached to the specified - // user, the response contains an empty list. + // resource, the response contains an empty list. // // Tags is a required field Tags []*Tag `type:"list" required:"true"` @@ -26951,16 +29858,15 @@ func (s *MFADevice) SetUserName(v string) *MFADevice { // This data type is used as a response element in the GetAccountAuthorizationDetails // operation. // -// For more information about managed policies, see Managed Policies and Inline -// Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, see Managed policies and inline +// policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type ManagedPolicyDetail struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. Arn *string `min:"20" type:"string"` @@ -26975,7 +29881,7 @@ type ManagedPolicyDetail struct { // The identifier for the version of the policy that is set as the default (operative) // version. // - // For more information about policy versions, see Versioning for Managed Policies + // For more information about policy versions, see Versioning for managed policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. DefaultVersionId *string `type:"string"` @@ -26988,21 +29894,21 @@ type ManagedPolicyDetail struct { // The path to the policy. // - // For more information about paths, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // For more information about paths, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. Path *string `min:"1" type:"string"` // The number of entities (users and roles) for which the policy is used as // the permissions boundary. // - // For more information about permissions boundaries, see Permissions Boundaries - // for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // For more information about permissions boundaries, see Permissions boundaries + // for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. PermissionsBoundaryUsageCount *int64 `type:"integer"` // The stable and unique string identifying the policy. // - // For more information about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // For more information about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. PolicyId *string `min:"16" type:"string"` @@ -27110,8 +30016,7 @@ type OpenIDConnectProviderListEntry struct { // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. Arn *string `min:"20" type:"string"` } @@ -27187,16 +30092,22 @@ type PasswordPolicy struct { // reusing. PasswordReusePrevention *int64 `min:"1" type:"integer"` - // Specifies whether to require lowercase characters for IAM user passwords. + // Specifies whether IAM user passwords must contain at least one lowercase + // character (a to z). RequireLowercaseCharacters *bool `type:"boolean"` - // Specifies whether to require numbers for IAM user passwords. + // Specifies whether IAM user passwords must contain at least one numeric character + // (0 to 9). RequireNumbers *bool `type:"boolean"` - // Specifies whether to require symbols for IAM user passwords. + // Specifies whether IAM user passwords must contain at least one of the following + // symbols: + // + // ! @ # $ % ^ & * ( ) _ + - = [ ] { } | ' RequireSymbols *bool `type:"boolean"` - // Specifies whether to require uppercase characters for IAM user passwords. + // Specifies whether IAM user passwords must contain at least one uppercase + // character (A to Z). RequireUppercaseCharacters *bool `type:"boolean"` } @@ -27307,16 +30218,15 @@ func (s *PermissionsBoundaryDecisionDetail) SetAllowedByPermissionsBoundary(v bo // This data type is used as a response element in the CreatePolicy, GetPolicy, // and ListPolicies operations. // -// For more information about managed policies, refer to Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, refer to Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type Policy struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. Arn *string `min:"20" type:"string"` @@ -27342,27 +30252,32 @@ type Policy struct { // The path to the policy. // - // For more information about paths, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // For more information about paths, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. Path *string `min:"1" type:"string"` // The number of entities (users and roles) for which the policy is used to // set the permissions boundary. // - // For more information about permissions boundaries, see Permissions Boundaries - // for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // For more information about permissions boundaries, see Permissions boundaries + // for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. PermissionsBoundaryUsageCount *int64 `type:"integer"` // The stable and unique string identifying the policy. // - // For more information about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // For more information about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. PolicyId *string `min:"16" type:"string"` // The friendly name (not ARN) identifying the policy. PolicyName *string `min:"1" type:"string"` + // A list of tags that are attached to the instance profile. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` + // The date and time, in ISO 8601 date-time format (http://www.iso.org/iso/iso8601), // when the policy was last updated. // @@ -27443,6 +30358,12 @@ func (s *Policy) SetPolicyName(v string) *Policy { return s } +// SetTags sets the Tags field's value. +func (s *Policy) SetTags(v []*Tag) *Policy { + s.Tags = v + return s +} + // SetUpdateDate sets the UpdateDate field's value. func (s *Policy) SetUpdateDate(v time.Time) *Policy { s.UpdateDate = &v @@ -27496,7 +30417,7 @@ type PolicyGrantingServiceAccess struct { // The name of the entity (user or role) to which the inline policy is attached. // // This field is null for managed policies. For more information about these - // policy types, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) + // policy types, see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) // in the IAM User Guide. EntityName *string `min:"1" type:"string"` @@ -27504,14 +30425,13 @@ type PolicyGrantingServiceAccess struct { // to which the inline policy is attached. // // This field is null for managed policies. For more information about these - // policy types, see Managed Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) + // policy types, see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) // in the IAM User Guide. EntityType *string `type:"string" enum:"PolicyOwnerEntityType"` // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. PolicyArn *string `min:"20" type:"string"` @@ -27521,7 +30441,7 @@ type PolicyGrantingServiceAccess struct { PolicyName *string `min:"1" type:"string" required:"true"` // The policy type. For more information about these policy types, see Managed - // Policies and Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) + // policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) // in the IAM User Guide. // // PolicyType is a required field @@ -27573,14 +30493,14 @@ func (s *PolicyGrantingServiceAccess) SetPolicyType(v string) *PolicyGrantingSer // This data type is used as a response element in the ListEntitiesForPolicy // operation. // -// For more information about managed policies, refer to Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, refer to Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type PolicyGroup struct { _ struct{} `type:"structure"` // The stable and unique string identifying the group. For more information - // about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) + // about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) // in the IAM User Guide. GroupId *string `min:"16" type:"string"` @@ -27615,14 +30535,14 @@ func (s *PolicyGroup) SetGroupName(v string) *PolicyGroup { // This data type is used as a response element in the ListEntitiesForPolicy // operation. // -// For more information about managed policies, refer to Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, refer to Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type PolicyRole struct { _ struct{} `type:"structure"` // The stable and unique string identifying the role. For more information about - // IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) + // IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) // in the IAM User Guide. RoleId *string `min:"16" type:"string"` @@ -27657,14 +30577,14 @@ func (s *PolicyRole) SetRoleName(v string) *PolicyRole { // This data type is used as a response element in the ListEntitiesForPolicy // operation. // -// For more information about managed policies, refer to Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, refer to Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type PolicyUser struct { _ struct{} `type:"structure"` // The stable and unique string identifying the user. For more information about - // IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) + // IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) // in the IAM User Guide. UserId *string `min:"16" type:"string"` @@ -27700,8 +30620,8 @@ func (s *PolicyUser) SetUserName(v string) *PolicyUser { // GetPolicyVersion, ListPolicyVersions, and GetAccountAuthorizationDetails // operations. // -// For more information about managed policies, refer to Managed Policies and -// Inline Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) +// For more information about managed policies, refer to Managed policies and +// inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. type PolicyVersion struct { _ struct{} `type:"structure"` @@ -28306,8 +31226,7 @@ type RemoveClientIDFromOpenIDConnectProviderInput struct { // the client ID from. You can get a list of OIDC provider ARNs by using the // ListOpenIDConnectProviders operation. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // OpenIDConnectProviderArn is a required field @@ -28838,7 +31757,7 @@ type Role struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) specifying the role. For more information - // about ARNs and how to use them in policies, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // about ARNs and how to use them in policies, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide guide. // // Arn is a required field @@ -28862,7 +31781,7 @@ type Role struct { // parameter. MaxSessionDuration *int64 `min:"3600" type:"integer"` - // The path to the role. For more information about paths, see IAM Identifiers + // The path to the role. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // @@ -28871,13 +31790,13 @@ type Role struct { // The ARN of the policy used to set the permissions boundary for the role. // - // For more information about permissions boundaries, see Permissions Boundaries - // for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // For more information about permissions boundaries, see Permissions boundaries + // for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. PermissionsBoundary *AttachedPermissionsBoundary `type:"structure"` // The stable and unique string identifying the role. For more information about - // IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // RoleId is a required field @@ -28888,7 +31807,7 @@ type Role struct { // Activity is only reported for the trailing 400 days. This period can be shorter // if your Region began supporting these features within the last year. The // role might have been used more than 400 days ago. For more information, see - // Regions Where Data Is Tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) + // Regions where data is tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) // in the IAM User Guide. RoleLastUsed *RoleLastUsed `type:"structure"` @@ -28897,8 +31816,8 @@ type Role struct { // RoleName is a required field RoleName *string `min:"1" type:"string" required:"true"` - // A list of tags that are attached to the specified role. For more information - // about tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // A list of tags that are attached to the role. For more information about + // tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. Tags []*Tag `type:"list"` } @@ -28988,8 +31907,7 @@ type RoleDetail struct { // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. Arn *string `min:"20" type:"string"` @@ -29007,20 +31925,20 @@ type RoleDetail struct { // A list of instance profiles that contain this role. InstanceProfileList []*InstanceProfile `type:"list"` - // The path to the role. For more information about paths, see IAM Identifiers + // The path to the role. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. Path *string `min:"1" type:"string"` // The ARN of the policy used to set the permissions boundary for the role. // - // For more information about permissions boundaries, see Permissions Boundaries - // for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // For more information about permissions boundaries, see Permissions boundaries + // for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. PermissionsBoundary *AttachedPermissionsBoundary `type:"structure"` // The stable and unique string identifying the role. For more information about - // IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. RoleId *string `min:"16" type:"string"` @@ -29029,7 +31947,7 @@ type RoleDetail struct { // Activity is only reported for the trailing 400 days. This period can be shorter // if your Region began supporting these features within the last year. The // role might have been used more than 400 days ago. For more information, see - // Regions Where Data Is Tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) + // Regions where data is tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) // in the IAM User Guide. RoleLastUsed *RoleLastUsed `type:"structure"` @@ -29040,8 +31958,8 @@ type RoleDetail struct { // access (permissions) policies. RolePolicyList []*PolicyDetail `type:"list"` - // A list of tags that are attached to the specified role. For more information - // about tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // A list of tags that are attached to the role. For more information about + // tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. Tags []*Tag `type:"list"` } @@ -29133,7 +32051,7 @@ func (s *RoleDetail) SetTags(v []*Tag) *RoleDetail { // Activity is only reported for the trailing 400 days. This period can be shorter // if your Region began supporting these features within the last year. The // role might have been used more than 400 days ago. For more information, see -// Regions Where Data Is Tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) +// Regions where data is tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) // in the IAM User Guide. // // This data type is returned as a response element in the GetRole and GetAccountAuthorizationDetails @@ -29145,8 +32063,8 @@ type RoleLastUsed struct { // that the role was last used. // // This field is null if the role has not been used within the IAM tracking - // period. For more information about the tracking period, see Regions Where - // Data Is Tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) + // period. For more information about the tracking period, see Regions where + // data is tracked (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period) // in the IAM User Guide. LastUsedDate *time.Time `type:"timestamp"` @@ -29424,6 +32342,11 @@ type ServerCertificate struct { // // ServerCertificateMetadata is a required field ServerCertificateMetadata *ServerCertificateMetadata `type:"structure" required:"true"` + + // A list of tags that are attached to the server certificate. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -29454,6 +32377,12 @@ func (s *ServerCertificate) SetServerCertificateMetadata(v *ServerCertificateMet return s } +// SetTags sets the Tags field's value. +func (s *ServerCertificate) SetTags(v []*Tag) *ServerCertificate { + s.Tags = v + return s +} + // Contains information about a server certificate without its certificate body, // certificate chain, and private key. // @@ -29463,7 +32392,7 @@ type ServerCertificateMetadata struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) specifying the server certificate. For more - // information about ARNs and how to use them in policies, see IAM Identifiers + // information about ARNs and how to use them in policies, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // @@ -29474,14 +32403,14 @@ type ServerCertificateMetadata struct { Expiration *time.Time `type:"timestamp"` // The path to the server certificate. For more information about paths, see - // IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // Path is a required field Path *string `min:"1" type:"string" required:"true"` // The stable and unique string identifying the server certificate. For more - // information about IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // information about IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // ServerCertificateId is a required field @@ -29578,12 +32507,12 @@ type ServiceLastAccessed struct { // The namespace of the service in which access was attempted. // - // To learn the service namespace of a service, go to Actions, Resources, and - // Condition Keys for AWS Services (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html) - // in the IAM User Guide. Choose the name of the service to view details for - // that service. In the first paragraph, find the service prefix. For example, - // (service prefix: a4b). For more information about service namespaces, see - // AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) + // To learn the service namespace of a service, see Actions, resources, and + // condition keys for AWS services (https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) + // in the Service Authorization Reference. Choose the name of the service to + // view details for that service. In the first paragraph, find the service prefix. + // For example, (service prefix: a4b). For more information about service namespaces, + // see AWS Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) // in the AWS General Reference. // // ServiceNamespace is a required field @@ -29845,8 +32774,7 @@ type SetDefaultPolicyVersionInput struct { // The Amazon Resource Name (ARN) of the IAM policy whose default version you // want to set. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicyArn is a required field @@ -29854,8 +32782,8 @@ type SetDefaultPolicyVersionInput struct { // The version of the policy to set as the default (operative) version. // - // For more information about managed policy versions, see Versioning for Managed - // Policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) + // For more information about managed policy versions, see Versioning for managed + // policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // // VersionId is a required field @@ -29926,7 +32854,7 @@ type SetSecurityTokenServicePreferencesInput struct { // are valid in all Regions. However, version 2 tokens are longer and might // affect systems where you temporarily store tokens. // - // For information, see Activating and Deactivating STS in an AWS Region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) + // For information, see Activating and deactivating STS in an AWS region (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) // in the IAM User Guide. // // GlobalEndpointTokenVersion is a required field @@ -30093,8 +33021,8 @@ type SimulateCustomPolicyInput struct { // The IAM permissions boundary policy to simulate. The permissions boundary // sets the maximum permissions that an IAM entity can have. You can input only // one permissions boundary when you pass a policy to this operation. For more - // information about permissions boundaries, see Permissions Boundaries for - // IAM Entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // information about permissions boundaries, see Permissions boundaries for + // IAM entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. The policy input is specified as a string that contains // the complete, valid JSON text of a permissions boundary policy. // @@ -30140,7 +33068,8 @@ type SimulateCustomPolicyInput struct { // is not provided, then the value defaults to * (all resources). Each API in // the ActionNames parameter is evaluated for each resource in this list. The // simulation determines the access result (allowed or denied) of each combination - // and reports it in the response. + // and reports it in the response. You can simulate resources that don't exist + // in your account. // // The simulation does not automatically retrieve policies for the specified // resources. If you want to include a resource policy in the simulation, then @@ -30149,8 +33078,7 @@ type SimulateCustomPolicyInput struct { // If you include a ResourcePolicy, then it must be applicable to all of the // resources included in the simulation or you receive an invalid input error. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. ResourceArns []*string `type:"list"` @@ -30167,7 +33095,7 @@ type SimulateCustomPolicyInput struct { // must specify that volume as a resource. If the EC2 scenario includes VPC, // then you must supply the network-interface resource. If it includes an IP // subnet, then you must specify the subnet resource. For more information on - // the EC2 scenario options, see Supported Platforms (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) + // the EC2 scenario options, see Supported platforms (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) // in the Amazon EC2 User Guide. // // * EC2-Classic-InstanceStore instance, image, security-group @@ -30412,8 +33340,7 @@ type SimulatePrincipalPolicyInput struct { // is not the ARN for an IAM user. This is required so that the resource-based // policy's Principal element has a value to use in evaluating the policy. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. CallerArn *string `min:"1" type:"string"` @@ -30446,7 +33373,7 @@ type SimulatePrincipalPolicyInput struct { // if a permissions boundary is attached to an entity and you pass in a different // permissions boundary policy using this parameter, then the new permissions // boundary policy is used for the simulation. For more information about permissions - // boundaries, see Permissions Boundaries for IAM Entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // boundaries, see Permissions boundaries for IAM entities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. The policy input is specified as a string containing // the complete, valid JSON text of a permissions boundary policy. // @@ -30486,8 +33413,7 @@ type SimulatePrincipalPolicyInput struct { // If you specify a user, the simulation also includes all policies that are // attached to any groups the user belongs to. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // PolicySourceArn is a required field @@ -30497,14 +33423,14 @@ type SimulatePrincipalPolicyInput struct { // is not provided, then the value defaults to * (all resources). Each API in // the ActionNames parameter is evaluated for each resource in this list. The // simulation determines the access result (allowed or denied) of each combination - // and reports it in the response. + // and reports it in the response. You can simulate resources that don't exist + // in your account. // // The simulation does not automatically retrieve policies for the specified // resources. If you want to include a resource policy in the simulation, then // you must include the policy as a string in the ResourcePolicy parameter. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. ResourceArns []*string `type:"list"` @@ -30521,7 +33447,7 @@ type SimulatePrincipalPolicyInput struct { // must specify that volume as a resource. If the EC2 scenario includes VPC, // then you must supply the network interface resource. If it includes an IP // subnet, then you must specify the subnet resource. For more information on - // the EC2 scenario options, see Supported Platforms (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) + // the EC2 scenario options, see Supported platforms (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) // in the Amazon EC2 User Guide. // // * EC2-Classic-InstanceStore instance, image, security group @@ -30753,8 +33679,8 @@ func (s *Statement) SetStartPosition(v *Position) *Statement { } // A structure that represents user-provided metadata that can be associated -// with a resource such as an IAM user or role. For more information about tagging, -// see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) +// with an IAM resource. For more information about tagging, see Tagging IAM +// resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. type Tag struct { _ struct{} `type:"structure"` @@ -30820,10 +33746,347 @@ func (s *Tag) SetValue(v string) *Tag { return s } +type TagInstanceProfileInput struct { + _ struct{} `type:"structure"` + + // The name of the IAM instance profile to which you want to add tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // InstanceProfileName is a required field + InstanceProfileName *string `min:"1" type:"string" required:"true"` + + // The list of tags that you want to attach to the IAM instance profile. Each + // tag consists of a key name and an associated value. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s TagInstanceProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagInstanceProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagInstanceProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagInstanceProfileInput"} + if s.InstanceProfileName == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceProfileName")) + } + if s.InstanceProfileName != nil && len(*s.InstanceProfileName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("InstanceProfileName", 1)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceProfileName sets the InstanceProfileName field's value. +func (s *TagInstanceProfileInput) SetInstanceProfileName(v string) *TagInstanceProfileInput { + s.InstanceProfileName = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagInstanceProfileInput) SetTags(v []*Tag) *TagInstanceProfileInput { + s.Tags = v + return s +} + +type TagInstanceProfileOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagInstanceProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagInstanceProfileOutput) GoString() string { + return s.String() +} + +type TagMFADeviceInput struct { + _ struct{} `type:"structure"` + + // The unique identifier for the IAM virtual MFA device to which you want to + // add tags. For virtual MFA devices, the serial number is the same as the ARN. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // SerialNumber is a required field + SerialNumber *string `min:"9" type:"string" required:"true"` + + // The list of tags that you want to attach to the IAM virtual MFA device. Each + // tag consists of a key name and an associated value. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s TagMFADeviceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagMFADeviceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagMFADeviceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagMFADeviceInput"} + if s.SerialNumber == nil { + invalidParams.Add(request.NewErrParamRequired("SerialNumber")) + } + if s.SerialNumber != nil && len(*s.SerialNumber) < 9 { + invalidParams.Add(request.NewErrParamMinLen("SerialNumber", 9)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSerialNumber sets the SerialNumber field's value. +func (s *TagMFADeviceInput) SetSerialNumber(v string) *TagMFADeviceInput { + s.SerialNumber = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagMFADeviceInput) SetTags(v []*Tag) *TagMFADeviceInput { + s.Tags = v + return s +} + +type TagMFADeviceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagMFADeviceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagMFADeviceOutput) GoString() string { + return s.String() +} + +type TagOpenIDConnectProviderInput struct { + _ struct{} `type:"structure"` + + // The ARN of the OIDC identity provider in IAM to which you want to add tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // OpenIDConnectProviderArn is a required field + OpenIDConnectProviderArn *string `min:"20" type:"string" required:"true"` + + // The list of tags that you want to attach to the OIDC identity provider in + // IAM. Each tag consists of a key name and an associated value. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s TagOpenIDConnectProviderInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagOpenIDConnectProviderInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagOpenIDConnectProviderInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagOpenIDConnectProviderInput"} + if s.OpenIDConnectProviderArn == nil { + invalidParams.Add(request.NewErrParamRequired("OpenIDConnectProviderArn")) + } + if s.OpenIDConnectProviderArn != nil && len(*s.OpenIDConnectProviderArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("OpenIDConnectProviderArn", 20)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetOpenIDConnectProviderArn sets the OpenIDConnectProviderArn field's value. +func (s *TagOpenIDConnectProviderInput) SetOpenIDConnectProviderArn(v string) *TagOpenIDConnectProviderInput { + s.OpenIDConnectProviderArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagOpenIDConnectProviderInput) SetTags(v []*Tag) *TagOpenIDConnectProviderInput { + s.Tags = v + return s +} + +type TagOpenIDConnectProviderOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagOpenIDConnectProviderOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagOpenIDConnectProviderOutput) GoString() string { + return s.String() +} + +type TagPolicyInput struct { + _ struct{} `type:"structure"` + + // The ARN of the IAM customer managed policy to which you want to add tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // PolicyArn is a required field + PolicyArn *string `min:"20" type:"string" required:"true"` + + // The list of tags that you want to attach to the IAM customer managed policy. + // Each tag consists of a key name and an associated value. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s TagPolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagPolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagPolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagPolicyInput"} + if s.PolicyArn == nil { + invalidParams.Add(request.NewErrParamRequired("PolicyArn")) + } + if s.PolicyArn != nil && len(*s.PolicyArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("PolicyArn", 20)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPolicyArn sets the PolicyArn field's value. +func (s *TagPolicyInput) SetPolicyArn(v string) *TagPolicyInput { + s.PolicyArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagPolicyInput) SetTags(v []*Tag) *TagPolicyInput { + s.Tags = v + return s +} + +type TagPolicyOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagPolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagPolicyOutput) GoString() string { + return s.String() +} + type TagRoleInput struct { _ struct{} `type:"structure"` - // The name of the role that you want to add tags to. + // The name of the IAM role to which you want to add tags. // // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) // a string of characters that consist of upper and lowercase alphanumeric characters @@ -30832,8 +34095,8 @@ type TagRoleInput struct { // RoleName is a required field RoleName *string `min:"1" type:"string" required:"true"` - // The list of tags that you want to attach to the role. Each tag consists of - // a key name and an associated value. You can specify this with a JSON string. + // The list of tags that you want to attach to the IAM role. Each tag consists + // of a key name and an associated value. // // Tags is a required field Tags []*Tag `type:"list" required:"true"` @@ -30904,16 +34167,184 @@ func (s TagRoleOutput) GoString() string { return s.String() } +type TagSAMLProviderInput struct { + _ struct{} `type:"structure"` + + // The ARN of the SAML identity provider in IAM to which you want to add tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // SAMLProviderArn is a required field + SAMLProviderArn *string `min:"20" type:"string" required:"true"` + + // The list of tags that you want to attach to the SAML identity provider in + // IAM. Each tag consists of a key name and an associated value. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s TagSAMLProviderInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagSAMLProviderInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagSAMLProviderInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagSAMLProviderInput"} + if s.SAMLProviderArn == nil { + invalidParams.Add(request.NewErrParamRequired("SAMLProviderArn")) + } + if s.SAMLProviderArn != nil && len(*s.SAMLProviderArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("SAMLProviderArn", 20)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSAMLProviderArn sets the SAMLProviderArn field's value. +func (s *TagSAMLProviderInput) SetSAMLProviderArn(v string) *TagSAMLProviderInput { + s.SAMLProviderArn = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagSAMLProviderInput) SetTags(v []*Tag) *TagSAMLProviderInput { + s.Tags = v + return s +} + +type TagSAMLProviderOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagSAMLProviderOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagSAMLProviderOutput) GoString() string { + return s.String() +} + +type TagServerCertificateInput struct { + _ struct{} `type:"structure"` + + // The name of the IAM server certificate to which you want to add tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // ServerCertificateName is a required field + ServerCertificateName *string `min:"1" type:"string" required:"true"` + + // The list of tags that you want to attach to the IAM server certificate. Each + // tag consists of a key name and an associated value. + // + // Tags is a required field + Tags []*Tag `type:"list" required:"true"` +} + +// String returns the string representation +func (s TagServerCertificateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagServerCertificateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *TagServerCertificateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "TagServerCertificateInput"} + if s.ServerCertificateName == nil { + invalidParams.Add(request.NewErrParamRequired("ServerCertificateName")) + } + if s.ServerCertificateName != nil && len(*s.ServerCertificateName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServerCertificateName", 1)) + } + if s.Tags == nil { + invalidParams.Add(request.NewErrParamRequired("Tags")) + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetServerCertificateName sets the ServerCertificateName field's value. +func (s *TagServerCertificateInput) SetServerCertificateName(v string) *TagServerCertificateInput { + s.ServerCertificateName = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *TagServerCertificateInput) SetTags(v []*Tag) *TagServerCertificateInput { + s.Tags = v + return s +} + +type TagServerCertificateOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s TagServerCertificateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TagServerCertificateOutput) GoString() string { + return s.String() +} + type TagUserInput struct { _ struct{} `type:"structure"` - // The list of tags that you want to attach to the user. Each tag consists of - // a key name and an associated value. + // The list of tags that you want to attach to the IAM user. Each tag consists + // of a key name and an associated value. // // Tags is a required field Tags []*Tag `type:"list" required:"true"` - // The name of the user that you want to add tags to. + // The name of the IAM user to which you want to add tags. // // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) // a string of characters that consist of upper and lowercase alphanumeric characters @@ -31002,8 +34433,7 @@ type TrackedActionLastAccessed struct { // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. LastAccessedEntity *string `min:"20" type:"string"` @@ -31057,6 +34487,305 @@ func (s *TrackedActionLastAccessed) SetLastAccessedTime(v time.Time) *TrackedAct return s } +type UntagInstanceProfileInput struct { + _ struct{} `type:"structure"` + + // The name of the IAM instance profile from which you want to remove tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // InstanceProfileName is a required field + InstanceProfileName *string `min:"1" type:"string" required:"true"` + + // A list of key names as a simple array of strings. The tags with matching + // keys are removed from the specified instance profile. + // + // TagKeys is a required field + TagKeys []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagInstanceProfileInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagInstanceProfileInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagInstanceProfileInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagInstanceProfileInput"} + if s.InstanceProfileName == nil { + invalidParams.Add(request.NewErrParamRequired("InstanceProfileName")) + } + if s.InstanceProfileName != nil && len(*s.InstanceProfileName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("InstanceProfileName", 1)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetInstanceProfileName sets the InstanceProfileName field's value. +func (s *UntagInstanceProfileInput) SetInstanceProfileName(v string) *UntagInstanceProfileInput { + s.InstanceProfileName = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagInstanceProfileInput) SetTagKeys(v []*string) *UntagInstanceProfileInput { + s.TagKeys = v + return s +} + +type UntagInstanceProfileOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagInstanceProfileOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagInstanceProfileOutput) GoString() string { + return s.String() +} + +type UntagMFADeviceInput struct { + _ struct{} `type:"structure"` + + // The unique identifier for the IAM virtual MFA device from which you want + // to remove tags. For virtual MFA devices, the serial number is the same as + // the ARN. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // SerialNumber is a required field + SerialNumber *string `min:"9" type:"string" required:"true"` + + // A list of key names as a simple array of strings. The tags with matching + // keys are removed from the specified instance profile. + // + // TagKeys is a required field + TagKeys []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagMFADeviceInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagMFADeviceInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagMFADeviceInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagMFADeviceInput"} + if s.SerialNumber == nil { + invalidParams.Add(request.NewErrParamRequired("SerialNumber")) + } + if s.SerialNumber != nil && len(*s.SerialNumber) < 9 { + invalidParams.Add(request.NewErrParamMinLen("SerialNumber", 9)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSerialNumber sets the SerialNumber field's value. +func (s *UntagMFADeviceInput) SetSerialNumber(v string) *UntagMFADeviceInput { + s.SerialNumber = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagMFADeviceInput) SetTagKeys(v []*string) *UntagMFADeviceInput { + s.TagKeys = v + return s +} + +type UntagMFADeviceOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagMFADeviceOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagMFADeviceOutput) GoString() string { + return s.String() +} + +type UntagOpenIDConnectProviderInput struct { + _ struct{} `type:"structure"` + + // The ARN of the OIDC provider in IAM from which you want to remove tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // OpenIDConnectProviderArn is a required field + OpenIDConnectProviderArn *string `min:"20" type:"string" required:"true"` + + // A list of key names as a simple array of strings. The tags with matching + // keys are removed from the specified OIDC provider. + // + // TagKeys is a required field + TagKeys []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagOpenIDConnectProviderInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagOpenIDConnectProviderInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagOpenIDConnectProviderInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagOpenIDConnectProviderInput"} + if s.OpenIDConnectProviderArn == nil { + invalidParams.Add(request.NewErrParamRequired("OpenIDConnectProviderArn")) + } + if s.OpenIDConnectProviderArn != nil && len(*s.OpenIDConnectProviderArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("OpenIDConnectProviderArn", 20)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetOpenIDConnectProviderArn sets the OpenIDConnectProviderArn field's value. +func (s *UntagOpenIDConnectProviderInput) SetOpenIDConnectProviderArn(v string) *UntagOpenIDConnectProviderInput { + s.OpenIDConnectProviderArn = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagOpenIDConnectProviderInput) SetTagKeys(v []*string) *UntagOpenIDConnectProviderInput { + s.TagKeys = v + return s +} + +type UntagOpenIDConnectProviderOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagOpenIDConnectProviderOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagOpenIDConnectProviderOutput) GoString() string { + return s.String() +} + +type UntagPolicyInput struct { + _ struct{} `type:"structure"` + + // The ARN of the IAM customer managed policy from which you want to remove + // tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // PolicyArn is a required field + PolicyArn *string `min:"20" type:"string" required:"true"` + + // A list of key names as a simple array of strings. The tags with matching + // keys are removed from the specified policy. + // + // TagKeys is a required field + TagKeys []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagPolicyInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagPolicyInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagPolicyInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagPolicyInput"} + if s.PolicyArn == nil { + invalidParams.Add(request.NewErrParamRequired("PolicyArn")) + } + if s.PolicyArn != nil && len(*s.PolicyArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("PolicyArn", 20)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetPolicyArn sets the PolicyArn field's value. +func (s *UntagPolicyInput) SetPolicyArn(v string) *UntagPolicyInput { + s.PolicyArn = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagPolicyInput) SetTagKeys(v []*string) *UntagPolicyInput { + s.TagKeys = v + return s +} + +type UntagPolicyOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagPolicyOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagPolicyOutput) GoString() string { + return s.String() +} + type UntagRoleInput struct { _ struct{} `type:"structure"` @@ -31131,6 +34860,155 @@ func (s UntagRoleOutput) GoString() string { return s.String() } +type UntagSAMLProviderInput struct { + _ struct{} `type:"structure"` + + // The ARN of the SAML identity provider in IAM from which you want to remove + // tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // SAMLProviderArn is a required field + SAMLProviderArn *string `min:"20" type:"string" required:"true"` + + // A list of key names as a simple array of strings. The tags with matching + // keys are removed from the specified SAML identity provider. + // + // TagKeys is a required field + TagKeys []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagSAMLProviderInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagSAMLProviderInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagSAMLProviderInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagSAMLProviderInput"} + if s.SAMLProviderArn == nil { + invalidParams.Add(request.NewErrParamRequired("SAMLProviderArn")) + } + if s.SAMLProviderArn != nil && len(*s.SAMLProviderArn) < 20 { + invalidParams.Add(request.NewErrParamMinLen("SAMLProviderArn", 20)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSAMLProviderArn sets the SAMLProviderArn field's value. +func (s *UntagSAMLProviderInput) SetSAMLProviderArn(v string) *UntagSAMLProviderInput { + s.SAMLProviderArn = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagSAMLProviderInput) SetTagKeys(v []*string) *UntagSAMLProviderInput { + s.TagKeys = v + return s +} + +type UntagSAMLProviderOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagSAMLProviderOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagSAMLProviderOutput) GoString() string { + return s.String() +} + +type UntagServerCertificateInput struct { + _ struct{} `type:"structure"` + + // The name of the IAM server certificate from which you want to remove tags. + // + // This parameter accepts (through its regex pattern (http://wikipedia.org/wiki/regex)) + // a string of characters that consist of upper and lowercase alphanumeric characters + // with no spaces. You can also include any of the following characters: =,.@- + // + // ServerCertificateName is a required field + ServerCertificateName *string `min:"1" type:"string" required:"true"` + + // A list of key names as a simple array of strings. The tags with matching + // keys are removed from the specified IAM server certificate. + // + // TagKeys is a required field + TagKeys []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s UntagServerCertificateInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagServerCertificateInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UntagServerCertificateInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UntagServerCertificateInput"} + if s.ServerCertificateName == nil { + invalidParams.Add(request.NewErrParamRequired("ServerCertificateName")) + } + if s.ServerCertificateName != nil && len(*s.ServerCertificateName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ServerCertificateName", 1)) + } + if s.TagKeys == nil { + invalidParams.Add(request.NewErrParamRequired("TagKeys")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetServerCertificateName sets the ServerCertificateName field's value. +func (s *UntagServerCertificateInput) SetServerCertificateName(v string) *UntagServerCertificateInput { + s.ServerCertificateName = &v + return s +} + +// SetTagKeys sets the TagKeys field's value. +func (s *UntagServerCertificateInput) SetTagKeys(v []*string) *UntagServerCertificateInput { + s.TagKeys = v + return s +} + +type UntagServerCertificateOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UntagServerCertificateOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UntagServerCertificateOutput) GoString() string { + return s.String() +} + type UntagUserInput struct { _ struct{} `type:"structure"` @@ -31218,8 +35096,8 @@ type UpdateAccessKeyInput struct { AccessKeyId *string `min:"16" type:"string" required:"true"` // The status you want to assign to the secret access key. Active means that - // the key can be used for API calls to AWS, while Inactive means that the key - // cannot be used. + // the key can be used for programmatic calls to AWS, while Inactive means that + // the key cannot be used. // // Status is a required field Status *string `type:"string" required:"true" enum:"StatusType"` @@ -31300,8 +35178,8 @@ type UpdateAccountPasswordPolicyInput struct { _ struct{} `type:"structure"` // Allows all IAM users in your account to use the AWS Management Console to - // change their own passwords. For more information, see Letting IAM Users Change - // Their Own Passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/HowToPwdIAMUser.html) + // change their own passwords. For more information, see Letting IAM users change + // their own passwords (https://docs.aws.amazon.com/IAM/latest/UserGuide/HowToPwdIAMUser.html) // in the IAM User Guide. // // If you do not specify a value for this parameter, then the operation uses @@ -31761,8 +35639,7 @@ type UpdateOpenIDConnectProviderThumbprintInput struct { // which you want to update the thumbprint. You can get a list of OIDC provider // ARNs by using the ListOpenIDConnectProviders operation. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // OpenIDConnectProviderArn is a required field @@ -31925,7 +35802,7 @@ type UpdateRoleInput struct { // for the DurationSeconds parameter, their security credentials are valid for // one hour by default. This applies when you use the AssumeRole* API operations // or the assume-role* CLI operations but does not apply when you use those - // operations to create a console URL. For more information, see Using IAM Roles + // operations to create a console URL. For more information, see Using IAM roles // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) in the // IAM User Guide. MaxSessionDuration *int64 `min:"3600" type:"integer"` @@ -32011,8 +35888,7 @@ type UpdateSAMLProviderInput struct { // The Amazon Resource Name (ARN) of the SAML provider to update. // - // For more information about ARNs, see Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, see Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. // // SAMLProviderArn is a required field @@ -32384,8 +36260,8 @@ type UpdateSigningCertificateInput struct { CertificateId *string `min:"24" type:"string" required:"true"` // The status you want to assign to the certificate. Active means that the certificate - // can be used for API calls to AWS Inactive means that the certificate cannot - // be used. + // can be used for programmatic calls to AWS Inactive means that the certificate + // cannot be used. // // Status is a required field Status *string `type:"string" required:"true" enum:"StatusType"` @@ -32697,7 +36573,7 @@ type UploadServerCertificateInput struct { CertificateChain *string `min:"1" type:"string"` // The path for the server certificate. For more information about paths, see - // IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // This parameter is optional. If it is not included, it defaults to a slash @@ -32740,6 +36616,15 @@ type UploadServerCertificateInput struct { // // ServerCertificateName is a required field ServerCertificateName *string `min:"1" type:"string" required:"true"` + + // A list of tags that you want to attach to the new IAM server certificate + // resource. Each tag consists of a key name and an associated value. For more + // information about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + // + // If any one of the tags is invalid or if you exceed the allowed maximum number + // of tags, then the entire request fails and the resource is not created. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -32779,6 +36664,16 @@ func (s *UploadServerCertificateInput) Validate() error { if s.ServerCertificateName != nil && len(*s.ServerCertificateName) < 1 { invalidParams.Add(request.NewErrParamMinLen("ServerCertificateName", 1)) } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -32816,6 +36711,12 @@ func (s *UploadServerCertificateInput) SetServerCertificateName(v string) *Uploa return s } +// SetTags sets the Tags field's value. +func (s *UploadServerCertificateInput) SetTags(v []*Tag) *UploadServerCertificateInput { + s.Tags = v + return s +} + // Contains the response to a successful UploadServerCertificate request. type UploadServerCertificateOutput struct { _ struct{} `type:"structure"` @@ -32823,6 +36724,12 @@ type UploadServerCertificateOutput struct { // The meta information of the uploaded server certificate without its certificate // body, certificate chain, and private key. ServerCertificateMetadata *ServerCertificateMetadata `type:"structure"` + + // A list of tags that are attached to the new IAM server certificate. The returned + // list of tags is sorted by tag key. For more information about tagging, see + // Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` } // String returns the string representation @@ -32841,6 +36748,12 @@ func (s *UploadServerCertificateOutput) SetServerCertificateMetadata(v *ServerCe return s } +// SetTags sets the Tags field's value. +func (s *UploadServerCertificateOutput) SetTags(v []*Tag) *UploadServerCertificateOutput { + s.Tags = v + return s +} + type UploadSigningCertificateInput struct { _ struct{} `type:"structure"` @@ -32964,7 +36877,7 @@ type User struct { // The date and time, in ISO 8601 date-time format (http://www.iso.org/iso/iso8601), // when the user's password was last used to sign in to an AWS website. For // a list of AWS websites that capture a user's last sign-in time, see the Credential - // Reports (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) + // reports (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) // topic in the IAM User Guide. If a password is used more than once in a five-minute // span, only the first use is returned in this field. If the field is null // (no value), then it indicates that they never signed in with a password. @@ -32982,27 +36895,27 @@ type User struct { // This value is returned only in the GetUser and ListUsers operations. PasswordLastUsed *time.Time `type:"timestamp"` - // The path to the user. For more information about paths, see IAM Identifiers + // The path to the user. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // + // The ARN of the policy used to set the permissions boundary for the user. + // // Path is a required field Path *string `min:"1" type:"string" required:"true"` - // The ARN of the policy used to set the permissions boundary for the user. - // - // For more information about permissions boundaries, see Permissions Boundaries - // for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // For more information about permissions boundaries, see Permissions boundaries + // for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. PermissionsBoundary *AttachedPermissionsBoundary `type:"structure"` - // A list of tags that are associated with the specified user. For more information - // about tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // A list of tags that are associated with the user. For more information about + // tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. Tags []*Tag `type:"list"` // The stable and unique string identifying the user. For more information about - // IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. // // UserId is a required field @@ -33082,8 +36995,7 @@ type UserDetail struct { // The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. // - // For more information about ARNs, go to Amazon Resource Names (ARNs) and AWS - // Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) + // For more information about ARNs, go to Amazon Resource Names (ARNs) (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) // in the AWS General Reference. Arn *string `min:"20" type:"string"` @@ -33097,25 +37009,25 @@ type UserDetail struct { // A list of IAM groups that the user is in. GroupList []*string `type:"list"` - // The path to the user. For more information about paths, see IAM Identifiers + // The path to the user. For more information about paths, see IAM identifiers // (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. Path *string `min:"1" type:"string"` // The ARN of the policy used to set the permissions boundary for the user. // - // For more information about permissions boundaries, see Permissions Boundaries - // for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) + // For more information about permissions boundaries, see Permissions boundaries + // for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. PermissionsBoundary *AttachedPermissionsBoundary `type:"structure"` - // A list of tags that are associated with the specified user. For more information - // about tagging, see Tagging IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // A list of tags that are associated with the user. For more information about + // tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) // in the IAM User Guide. Tags []*Tag `type:"list"` // The stable and unique string identifying the user. For more information about - // IDs, see IAM Identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) + // IDs, see IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) // in the IAM User Guide. UserId *string `min:"16" type:"string"` @@ -33222,6 +37134,11 @@ type VirtualMFADevice struct { // SerialNumber is a required field SerialNumber *string `min:"9" type:"string" required:"true"` + // A list of tags that are attached to the virtual MFA device. For more information + // about tagging, see Tagging IAM resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) + // in the IAM User Guide. + Tags []*Tag `type:"list"` + // The IAM user associated with this virtual MFA device. User *User `type:"structure"` } @@ -33260,6 +37177,12 @@ func (s *VirtualMFADevice) SetSerialNumber(v string) *VirtualMFADevice { return s } +// SetTags sets the Tags field's value. +func (s *VirtualMFADevice) SetTags(v []*Tag) *VirtualMFADevice { + s.Tags = v + return s +} + // SetUser sets the User field's value. func (s *VirtualMFADevice) SetUser(v *User) *VirtualMFADevice { s.User = v @@ -33589,8 +37512,8 @@ func PolicyType_Values() []string { // The policy usage type that indicates whether the policy is used as a permissions // policy or as the permissions boundary for an entity. // -// For more information about permissions boundaries, see Permissions Boundaries -// for IAM Identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) +// For more information about permissions boundaries, see Permissions boundaries +// for IAM identities (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) // in the IAM User Guide. const ( // PolicyUsageTypePermissionsPolicy is a PolicyUsageType enum value diff --git a/vendor/github.com/aws/aws-sdk-go/service/iam/errors.go b/vendor/github.com/aws/aws-sdk-go/service/iam/errors.go index 74afac25e..3a4ff5f05 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/iam/errors.go +++ b/vendor/github.com/aws/aws-sdk-go/service/iam/errors.go @@ -17,7 +17,7 @@ const ( // // The request was rejected because the most recent credential report has expired. // To generate a new credential report, use GenerateCredentialReport. For more - // information about credential report expiration, see Getting Credential Reports + // information about credential report expiration, see Getting credential reports // (https://docs.aws.amazon.com/IAM/latest/UserGuide/credential-reports.html) // in the IAM User Guide. ErrCodeCredentialReportExpiredException = "ReportExpired" @@ -117,8 +117,7 @@ const ( // "LimitExceeded". // // The request was rejected because it attempted to create resources beyond - // the current AWS account limitations. The error message describes the limit - // exceeded. + // the current AWS account limits. The error message describes the limit exceeded. ErrCodeLimitExceededException = "LimitExceeded" // ErrCodeMalformedCertificateException for service response error code diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go index 66700cce1..89a0a29af 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go @@ -19563,7 +19563,7 @@ type GetObjectInput struct { ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"` // Sets the Expires header of the response. - ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"` + ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"` // Specifies the algorithm to use to when encrypting the object (for example, // AES256). diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go index 403aebb68..6346b9279 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go @@ -98,7 +98,7 @@ func endpointHandler(req *request.Request) { Request: req, } - if resReq.IsCrossPartition() { + if len(resReq.Request.ClientInfo.PartitionID) != 0 && resReq.IsCrossPartition() { req.Error = s3shared.NewClientPartitionMismatchError(resource, req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil) return @@ -110,11 +110,6 @@ func endpointHandler(req *request.Request) { return } - if resReq.HasCustomEndpoint() { - req.Error = s3shared.NewInvalidARNWithCustomEndpointError(resource, nil) - return - } - switch tv := resource.(type) { case arn.AccessPointARN: err = updateRequestAccessPointEndpoint(req, tv) @@ -155,8 +150,7 @@ func updateRequestAccessPointEndpoint(req *request.Request, accessPoint arn.Acce req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil) } - // Ignore the disable host prefix for access points since custom endpoints - // are not supported. + // Ignore the disable host prefix for access points req.Config.DisableEndpointHostPrefix = aws.Bool(false) if err := accessPointEndpointBuilder(accessPoint).build(req); err != nil { @@ -181,8 +175,7 @@ func updateRequestOutpostAccessPointEndpoint(req *request.Request, accessPoint a req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil) } - // Ignore the disable host prefix for access points since custom endpoints - // are not supported. + // Ignore the disable host prefix for access points req.Config.DisableEndpointHostPrefix = aws.Bool(false) if err := outpostAccessPointEndpointBuilder(accessPoint).build(req); err != nil { diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go index c1c77da9a..eb77d981e 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go @@ -22,6 +22,11 @@ const ( outpostAccessPointPrefixTemplate = accessPointPrefixTemplate + "{" + outpostPrefixLabel + "}." ) +// hasCustomEndpoint returns true if endpoint is a custom endpoint +func hasCustomEndpoint(r *request.Request) bool { + return len(aws.StringValue(r.Config.Endpoint)) > 0 +} + // accessPointEndpointBuilder represents the endpoint builder for access point arn type accessPointEndpointBuilder arn.AccessPointARN @@ -55,16 +60,19 @@ func (a accessPointEndpointBuilder) build(req *request.Request) error { req.ClientInfo.PartitionID, cfgRegion, err) } - if err = updateRequestEndpoint(req, endpoint.URL); err != nil { - return err - } + endpoint.URL = endpoints.AddScheme(endpoint.URL, aws.BoolValue(req.Config.DisableSSL)) - const serviceEndpointLabel = "s3-accesspoint" + if !hasCustomEndpoint(req) { + if err = updateRequestEndpoint(req, endpoint.URL); err != nil { + return err + } + const serviceEndpointLabel = "s3-accesspoint" - // dual stack provided by endpoint resolver - cfgHost := req.HTTPRequest.URL.Host - if strings.HasPrefix(cfgHost, "s3") { - req.HTTPRequest.URL.Host = serviceEndpointLabel + cfgHost[2:] + // dual stack provided by endpoint resolver + cfgHost := req.HTTPRequest.URL.Host + if strings.HasPrefix(cfgHost, "s3") { + req.HTTPRequest.URL.Host = serviceEndpointLabel + cfgHost[2:] + } } protocol.HostPrefixBuilder{ @@ -116,14 +124,17 @@ func (o outpostAccessPointEndpointBuilder) build(req *request.Request) error { req.ClientInfo.PartitionID, resolveRegion, err) } - if err = updateRequestEndpoint(req, endpoint.URL); err != nil { - return err - } + endpoint.URL = endpoints.AddScheme(endpoint.URL, aws.BoolValue(req.Config.DisableSSL)) - // add url host as s3-outposts - cfgHost := req.HTTPRequest.URL.Host - if strings.HasPrefix(cfgHost, endpointsID) { - req.HTTPRequest.URL.Host = resolveService + cfgHost[len(endpointsID):] + if !hasCustomEndpoint(req) { + if err = updateRequestEndpoint(req, endpoint.URL); err != nil { + return err + } + // add url host as s3-outposts + cfgHost := req.HTTPRequest.URL.Host + if strings.HasPrefix(cfgHost, endpointsID) { + req.HTTPRequest.URL.Host = resolveService + cfgHost[len(endpointsID):] + } } protocol.HostPrefixBuilder{ @@ -159,7 +170,6 @@ func resolveRegionalEndpoint(r *request.Request, region string, endpointsID stri } func updateRequestEndpoint(r *request.Request, endpoint string) (err error) { - endpoint = endpoints.AddScheme(endpoint, aws.BoolValue(r.Config.DisableSSL)) r.HTTPRequest.URL, err = url.Parse(endpoint + r.Operation.HTTPPath) if err != nil { diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go index 8770d4041..7dba8347b 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go @@ -109,6 +109,9 @@ type UploadOutput struct { // The ID for a multipart upload to S3. In the case of an error the error // can be cast to the MultiUploadFailure interface to extract the upload ID. UploadID string + + // Entity tag of the object. + ETag *string } // WithUploaderRequestOptions appends to the Uploader's API request options. @@ -527,6 +530,7 @@ func (u *uploader) singlePart(r io.ReadSeeker, cleanup func()) (*UploadOutput, e return &UploadOutput{ Location: url, VersionID: out.VersionId, + ETag: out.ETag, }, nil } @@ -632,6 +636,7 @@ func (u *multiuploader) upload(firstBuf io.ReadSeeker, cleanup func()) (*UploadO Location: uploadLocation, VersionID: complete.VersionId, UploadID: u.uploadID, + ETag: complete.ETag, }, nil } diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/service.go b/vendor/github.com/aws/aws-sdk-go/service/s3/service.go index b4c07b4d4..1b78b5d45 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/service.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/service.go @@ -48,6 +48,9 @@ const ( // svc := s3.New(mySession, aws.NewConfig().WithRegion("us-west-2")) func New(p client.ConfigProvider, cfgs ...*aws.Config) *S3 { c := p.ClientConfig(EndpointsID, cfgs...) + if c.SigningNameDerived || len(c.SigningName) == 0 { + c.SigningName = "s3" + } return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) } diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go b/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go index 1318b44d3..537ba3dc4 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go @@ -1007,9 +1007,9 @@ func (c *SSM) CreateOpsMetadataRequest(input *CreateOpsMetadataInput) (req *requ // CreateOpsMetadata API operation for Amazon Simple Systems Manager (SSM). // -// If you create a new application in AppManager, Systems Manager calls this -// API action to specify information about the new application, including the -// application type. +// If you create a new application in Application Manager, Systems Manager calls +// this API action to specify information about the new application, including +// the application type. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -1031,8 +1031,8 @@ func (c *SSM) CreateOpsMetadataRequest(input *CreateOpsMetadataInput) (req *requ // // * OpsMetadataLimitExceededException // Your account reached the maximum number of OpsMetadata objects allowed by -// AppManager. The maximum is 200 OpsMetadata objects. Delete one or more OpsMetadata -// object and try again. +// Application Manager. The maximum is 200 OpsMetadata objects. Delete one or +// more OpsMetadata object and try again. // // * InternalServerError // An error occurred on the server side. @@ -3635,10 +3635,17 @@ func (c *SSM) DescribeDocumentPermissionRequest(input *DescribeDocumentPermissio // * InvalidDocument // The specified document does not exist. // +// * InvalidNextToken +// The specified token is not valid. +// // * InvalidPermissionType // The permission type is not supported. Share is the only supported permission // type. // +// * InvalidDocumentOperation +// You attempted to delete a document while it is still shared. You must stop +// sharing the document before you can delete it. +// // See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/DescribeDocumentPermission func (c *SSM) DescribeDocumentPermission(input *DescribeDocumentPermissionInput) (*DescribeDocumentPermissionOutput, error) { req, out := c.DescribeDocumentPermissionRequest(input) @@ -5647,6 +5654,11 @@ func (c *SSM) DescribeMaintenanceWindowTasksRequest(input *DescribeMaintenanceWi // // Lists the tasks in a maintenance window. // +// For maintenance window tasks without a specified target, you cannot supply +// values for --max-errors and --max-concurrency. Instead, the system inserts +// a placeholder value of 1, which may be reported in the response to this command. +// These values do not affect the running of your task and can be ignored. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -8326,6 +8338,11 @@ func (c *SSM) GetMaintenanceWindowTaskRequest(input *GetMaintenanceWindowTaskInp // // Lists the tasks in a maintenance window. // +// For maintenance window tasks without a specified target, you cannot supply +// values for --max-errors and --max-concurrency. Instead, the system inserts +// a placeholder value of 1, which may be reported in the response to this command. +// These values do not affect the running of your task and can be ignored. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -8502,7 +8519,7 @@ func (c *SSM) GetOpsMetadataRequest(input *GetOpsMetadataInput) (req *request.Re // GetOpsMetadata API operation for Amazon Simple Systems Manager (SSM). // -// View operational metadata related to an application in AppManager. +// View operational metadata related to an application in Application Manager. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -10470,6 +10487,94 @@ func (c *SSM) ListComplianceSummariesPagesWithContext(ctx aws.Context, input *Li return p.Err() } +const opListDocumentMetadataHistory = "ListDocumentMetadataHistory" + +// ListDocumentMetadataHistoryRequest generates a "aws/request.Request" representing the +// client's request for the ListDocumentMetadataHistory operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListDocumentMetadataHistory for more information on using the ListDocumentMetadataHistory +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListDocumentMetadataHistoryRequest method. +// req, resp := client.ListDocumentMetadataHistoryRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentMetadataHistory +func (c *SSM) ListDocumentMetadataHistoryRequest(input *ListDocumentMetadataHistoryInput) (req *request.Request, output *ListDocumentMetadataHistoryOutput) { + op := &request.Operation{ + Name: opListDocumentMetadataHistory, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ListDocumentMetadataHistoryInput{} + } + + output = &ListDocumentMetadataHistoryOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListDocumentMetadataHistory API operation for Amazon Simple Systems Manager (SSM). +// +// Information about approval reviews for a version of an SSM document. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s +// API operation ListDocumentMetadataHistory for usage and error information. +// +// Returned Error Types: +// * InternalServerError +// An error occurred on the server side. +// +// * InvalidDocument +// The specified document does not exist. +// +// * InvalidDocumentVersion +// The document version is not valid or does not exist. +// +// * InvalidNextToken +// The specified token is not valid. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListDocumentMetadataHistory +func (c *SSM) ListDocumentMetadataHistory(input *ListDocumentMetadataHistoryInput) (*ListDocumentMetadataHistoryOutput, error) { + req, out := c.ListDocumentMetadataHistoryRequest(input) + return out, req.Send() +} + +// ListDocumentMetadataHistoryWithContext is the same as ListDocumentMetadataHistory with the addition of +// the ability to pass a context and additional request options. +// +// See ListDocumentMetadataHistory for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSM) ListDocumentMetadataHistoryWithContext(ctx aws.Context, input *ListDocumentMetadataHistoryInput, opts ...request.Option) (*ListDocumentMetadataHistoryOutput, error) { + req, out := c.ListDocumentMetadataHistoryRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opListDocumentVersions = "ListDocumentVersions" // ListDocumentVersionsRequest generates a "aws/request.Request" representing the @@ -10858,6 +10963,156 @@ func (c *SSM) ListInventoryEntriesWithContext(ctx aws.Context, input *ListInvent return out, req.Send() } +const opListOpsItemEvents = "ListOpsItemEvents" + +// ListOpsItemEventsRequest generates a "aws/request.Request" representing the +// client's request for the ListOpsItemEvents operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListOpsItemEvents for more information on using the ListOpsItemEvents +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListOpsItemEventsRequest method. +// req, resp := client.ListOpsItemEventsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsItemEvents +func (c *SSM) ListOpsItemEventsRequest(input *ListOpsItemEventsInput) (req *request.Request, output *ListOpsItemEventsOutput) { + op := &request.Operation{ + Name: opListOpsItemEvents, + HTTPMethod: "POST", + HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListOpsItemEventsInput{} + } + + output = &ListOpsItemEventsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListOpsItemEvents API operation for Amazon Simple Systems Manager (SSM). +// +// Returns a list of all OpsItem events in the current AWS account and Region. +// You can limit the results to events associated with specific OpsItems by +// specifying a filter. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s +// API operation ListOpsItemEvents for usage and error information. +// +// Returned Error Types: +// * InternalServerError +// An error occurred on the server side. +// +// * OpsItemNotFoundException +// The specified OpsItem ID doesn't exist. Verify the ID and try again. +// +// * OpsItemLimitExceededException +// The request caused OpsItems to exceed one or more quotas. For information +// about OpsItem quotas, see What are the resource limits for OpsCenter? (https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-learn-more.html#OpsCenter-learn-more-limits). +// +// * OpsItemInvalidParameterException +// A specified parameter argument isn't valid. Verify the available arguments +// and try again. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/ListOpsItemEvents +func (c *SSM) ListOpsItemEvents(input *ListOpsItemEventsInput) (*ListOpsItemEventsOutput, error) { + req, out := c.ListOpsItemEventsRequest(input) + return out, req.Send() +} + +// ListOpsItemEventsWithContext is the same as ListOpsItemEvents with the addition of +// the ability to pass a context and additional request options. +// +// See ListOpsItemEvents for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSM) ListOpsItemEventsWithContext(ctx aws.Context, input *ListOpsItemEventsInput, opts ...request.Option) (*ListOpsItemEventsOutput, error) { + req, out := c.ListOpsItemEventsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListOpsItemEventsPages iterates over the pages of a ListOpsItemEvents operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListOpsItemEvents method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListOpsItemEvents operation. +// pageNum := 0 +// err := client.ListOpsItemEventsPages(params, +// func(page *ssm.ListOpsItemEventsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *SSM) ListOpsItemEventsPages(input *ListOpsItemEventsInput, fn func(*ListOpsItemEventsOutput, bool) bool) error { + return c.ListOpsItemEventsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListOpsItemEventsPagesWithContext same as ListOpsItemEventsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSM) ListOpsItemEventsPagesWithContext(ctx aws.Context, input *ListOpsItemEventsInput, fn func(*ListOpsItemEventsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListOpsItemEventsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListOpsItemEventsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListOpsItemEventsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opListOpsMetadata = "ListOpsMetadata" // ListOpsMetadataRequest generates a "aws/request.Request" representing the @@ -10889,6 +11144,12 @@ func (c *SSM) ListOpsMetadataRequest(input *ListOpsMetadataInput) (req *request. Name: opListOpsMetadata, HTTPMethod: "POST", HTTPPath: "/", + Paginator: &request.Paginator{ + InputTokens: []string{"NextToken"}, + OutputTokens: []string{"NextToken"}, + LimitToken: "MaxResults", + TruncationToken: "", + }, } if input == nil { @@ -10902,8 +11163,8 @@ func (c *SSM) ListOpsMetadataRequest(input *ListOpsMetadataInput) (req *request. // ListOpsMetadata API operation for Amazon Simple Systems Manager (SSM). // -// Systems Manager calls this API action when displaying all AppManager OpsMetadata -// objects or blobs. +// Systems Manager calls this API action when displaying all Application Manager +// OpsMetadata objects or blobs. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -10941,6 +11202,58 @@ func (c *SSM) ListOpsMetadataWithContext(ctx aws.Context, input *ListOpsMetadata return out, req.Send() } +// ListOpsMetadataPages iterates over the pages of a ListOpsMetadata operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListOpsMetadata method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListOpsMetadata operation. +// pageNum := 0 +// err := client.ListOpsMetadataPages(params, +// func(page *ssm.ListOpsMetadataOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *SSM) ListOpsMetadataPages(input *ListOpsMetadataInput, fn func(*ListOpsMetadataOutput, bool) bool) error { + return c.ListOpsMetadataPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListOpsMetadataPagesWithContext same as ListOpsMetadataPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSM) ListOpsMetadataPagesWithContext(ctx aws.Context, input *ListOpsMetadataInput, fn func(*ListOpsMetadataOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListOpsMetadataInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListOpsMetadataRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListOpsMetadataOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + const opListResourceComplianceSummaries = "ListResourceComplianceSummaries" // ListResourceComplianceSummariesRequest generates a "aws/request.Request" representing the @@ -12934,6 +13247,110 @@ func (c *SSM) StartAutomationExecutionWithContext(ctx aws.Context, input *StartA return out, req.Send() } +const opStartChangeRequestExecution = "StartChangeRequestExecution" + +// StartChangeRequestExecutionRequest generates a "aws/request.Request" representing the +// client's request for the StartChangeRequestExecution operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See StartChangeRequestExecution for more information on using the StartChangeRequestExecution +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the StartChangeRequestExecutionRequest method. +// req, resp := client.StartChangeRequestExecutionRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartChangeRequestExecution +func (c *SSM) StartChangeRequestExecutionRequest(input *StartChangeRequestExecutionInput) (req *request.Request, output *StartChangeRequestExecutionOutput) { + op := &request.Operation{ + Name: opStartChangeRequestExecution, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &StartChangeRequestExecutionInput{} + } + + output = &StartChangeRequestExecutionOutput{} + req = c.newRequest(op, input, output) + return +} + +// StartChangeRequestExecution API operation for Amazon Simple Systems Manager (SSM). +// +// Creates a change request for Change Manager. The runbooks (Automation documents) +// specified in the change request run only after all required approvals for +// the change request have been received. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s +// API operation StartChangeRequestExecution for usage and error information. +// +// Returned Error Types: +// * AutomationDefinitionNotFoundException +// An Automation document with the specified name could not be found. +// +// * InvalidAutomationExecutionParametersException +// The supplied parameters for invoking the specified Automation document are +// incorrect. For example, they may not match the set of parameters permitted +// for the specified Automation document. +// +// * AutomationExecutionLimitExceededException +// The number of simultaneously running Automation executions exceeded the allowable +// limit. +// +// * AutomationDefinitionVersionNotFoundException +// An Automation document with the specified name and version could not be found. +// +// * IdempotentParameterMismatch +// Error returned when an idempotent operation is retried and the parameters +// don't match the original call to the API with the same idempotency token. +// +// * InternalServerError +// An error occurred on the server side. +// +// * AutomationDefinitionNotApprovedException +// Indicates that the Change Manager change template used in the change request +// was rejected or is still in a pending state. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/StartChangeRequestExecution +func (c *SSM) StartChangeRequestExecution(input *StartChangeRequestExecutionInput) (*StartChangeRequestExecutionOutput, error) { + req, out := c.StartChangeRequestExecutionRequest(input) + return out, req.Send() +} + +// StartChangeRequestExecutionWithContext is the same as StartChangeRequestExecution with the addition of +// the ability to pass a context and additional request options. +// +// See StartChangeRequestExecution for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSM) StartChangeRequestExecutionWithContext(ctx aws.Context, input *StartChangeRequestExecutionInput, opts ...request.Option) (*StartChangeRequestExecutionOutput, error) { + req, out := c.StartChangeRequestExecutionRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opStartSession = "StartSession" // StartSessionRequest generates a "aws/request.Request" representing the @@ -13643,6 +14060,97 @@ func (c *SSM) UpdateDocumentDefaultVersionWithContext(ctx aws.Context, input *Up return out, req.Send() } +const opUpdateDocumentMetadata = "UpdateDocumentMetadata" + +// UpdateDocumentMetadataRequest generates a "aws/request.Request" representing the +// client's request for the UpdateDocumentMetadata operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See UpdateDocumentMetadata for more information on using the UpdateDocumentMetadata +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the UpdateDocumentMetadataRequest method. +// req, resp := client.UpdateDocumentMetadataRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentMetadata +func (c *SSM) UpdateDocumentMetadataRequest(input *UpdateDocumentMetadataInput) (req *request.Request, output *UpdateDocumentMetadataOutput) { + op := &request.Operation{ + Name: opUpdateDocumentMetadata, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &UpdateDocumentMetadataInput{} + } + + output = &UpdateDocumentMetadataOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// UpdateDocumentMetadata API operation for Amazon Simple Systems Manager (SSM). +// +// Updates information related to approval reviews for a specific version of +// a document. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Systems Manager (SSM)'s +// API operation UpdateDocumentMetadata for usage and error information. +// +// Returned Error Types: +// * InternalServerError +// An error occurred on the server side. +// +// * InvalidDocument +// The specified document does not exist. +// +// * InvalidDocumentOperation +// You attempted to delete a document while it is still shared. You must stop +// sharing the document before you can delete it. +// +// * InvalidDocumentVersion +// The document version is not valid or does not exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-2014-11-06/UpdateDocumentMetadata +func (c *SSM) UpdateDocumentMetadata(input *UpdateDocumentMetadataInput) (*UpdateDocumentMetadataOutput, error) { + req, out := c.UpdateDocumentMetadataRequest(input) + return out, req.Send() +} + +// UpdateDocumentMetadataWithContext is the same as UpdateDocumentMetadata with the addition of +// the ability to pass a context and additional request options. +// +// See UpdateDocumentMetadata for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSM) UpdateDocumentMetadataWithContext(ctx aws.Context, input *UpdateDocumentMetadataInput, opts ...request.Option) (*UpdateDocumentMetadataOutput, error) { + req, out := c.UpdateDocumentMetadataRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opUpdateMaintenanceWindow = "UpdateMaintenanceWindow" // UpdateMaintenanceWindowRequest generates a "aws/request.Request" representing the @@ -13901,6 +14409,13 @@ func (c *SSM) UpdateMaintenanceWindowTaskRequest(input *UpdateMaintenanceWindowT // // * MaxErrors // +// One or more targets must be specified for maintenance window Run Command-type +// tasks. Depending on the task, targets are optional for other maintenance +// window task types (Automation, AWS Lambda, and AWS Step Functions). For more +// information about running tasks that do not specify targets, see Registering +// maintenance window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html) +// in the AWS Systems Manager User Guide. +// // If the value for a parameter in UpdateMaintenanceWindowTask is null, then // the corresponding field is not modified. If you set Replace to true, then // all fields required by the RegisterTaskWithMaintenanceWindow action are required @@ -14197,7 +14712,8 @@ func (c *SSM) UpdateOpsMetadataRequest(input *UpdateOpsMetadataInput) (req *requ // UpdateOpsMetadata API operation for Amazon Simple Systems Manager (SSM). // -// Systems Manager calls this API action when you edit OpsMetadata in AppManager. +// Systems Manager calls this API action when you edit OpsMetadata in Application +// Manager. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -14215,7 +14731,7 @@ func (c *SSM) UpdateOpsMetadataRequest(input *UpdateOpsMetadataInput) (req *requ // // * OpsMetadataKeyLimitExceededException // The OpsMetadata object exceeds the maximum number of OpsMetadata keys that -// you can assign to an application in AppManager. +// you can assign to an application in Application Manager. // // * OpsMetadataTooManyUpdatesException // The system is processing too many concurrent updates. Wait a few moments @@ -15170,6 +15686,10 @@ type AssociationDescription struct { // By default, all associations use AUTO mode. SyncCompliance *string `type:"string" enum:"AssociationSyncCompliance"` + // The combination of AWS Regions and AWS accounts where you want to run the + // association. + TargetLocations []*TargetLocation `min:"1" type:"list"` + // The instances targeted by the request. Targets []*Target `type:"list"` } @@ -15310,6 +15830,12 @@ func (s *AssociationDescription) SetSyncCompliance(v string) *AssociationDescrip return s } +// SetTargetLocations sets the TargetLocations field's value. +func (s *AssociationDescription) SetTargetLocations(v []*TargetLocation) *AssociationDescription { + s.TargetLocations = v + return s +} + // SetTargets sets the Targets field's value. func (s *AssociationDescription) SetTargets(v []*Target) *AssociationDescription { s.Targets = v @@ -16059,6 +16585,10 @@ type AssociationVersionInfo struct { // By default, all associations use AUTO mode. SyncCompliance *string `type:"string" enum:"AssociationSyncCompliance"` + // The combination of AWS Regions and AWS accounts where you wanted to run the + // association when this association version was created. + TargetLocations []*TargetLocation `min:"1" type:"list"` + // The targets specified for the association when the association version was // created. Targets []*Target `type:"list"` @@ -16158,6 +16688,12 @@ func (s *AssociationVersionInfo) SetSyncCompliance(v string) *AssociationVersion return s } +// SetTargetLocations sets the TargetLocations field's value. +func (s *AssociationVersionInfo) SetTargetLocations(v []*TargetLocation) *AssociationVersionInfo { + s.TargetLocations = v + return s +} + // SetTargets sets the Targets field's value. func (s *AssociationVersionInfo) SetTargets(v []*Target) *AssociationVersionInfo { s.Targets = v @@ -16378,6 +16914,63 @@ func (s *AttachmentsSource) SetValues(v []*string) *AttachmentsSource { return s } +// Indicates that the Change Manager change template used in the change request +// was rejected or is still in a pending state. +type AutomationDefinitionNotApprovedException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"Message" type:"string"` +} + +// String returns the string representation +func (s AutomationDefinitionNotApprovedException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AutomationDefinitionNotApprovedException) GoString() string { + return s.String() +} + +func newErrorAutomationDefinitionNotApprovedException(v protocol.ResponseMetadata) error { + return &AutomationDefinitionNotApprovedException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *AutomationDefinitionNotApprovedException) Code() string { + return "AutomationDefinitionNotApprovedException" +} + +// Message returns the exception's message. +func (s *AutomationDefinitionNotApprovedException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *AutomationDefinitionNotApprovedException) OrigErr() error { + return nil +} + +func (s *AutomationDefinitionNotApprovedException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *AutomationDefinitionNotApprovedException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *AutomationDefinitionNotApprovedException) RequestID() string { + return s.RespMetadata.RequestID +} + // An Automation document with the specified name could not be found. type AutomationDefinitionNotFoundException struct { _ struct{} `type:"structure"` @@ -16495,12 +17088,22 @@ func (s *AutomationDefinitionVersionNotFoundException) RequestID() string { type AutomationExecution struct { _ struct{} `type:"structure"` + // The ID of a State Manager association used in the Automation operation. + AssociationId *string `type:"string"` + // The execution ID. AutomationExecutionId *string `min:"36" type:"string"` // The execution status of the Automation. AutomationExecutionStatus *string `type:"string" enum:"AutomationExecutionStatus"` + // The subtype of the Automation operation. Currently, the only supported value + // is ChangeRequest. + AutomationSubtype *string `type:"string" enum:"AutomationSubtype"` + + // The name of the Change Manager change request. + ChangeRequestName *string `min:"1" type:"string"` + // The action of the step that is currently running. CurrentAction *string `type:"string"` @@ -16535,6 +17138,10 @@ type AutomationExecution struct { // The automation execution mode. Mode *string `type:"string" enum:"ExecutionMode"` + // The ID of an OpsItem that is created to represent a Change Manager change + // request. + OpsItemId *string `type:"string"` + // The list of execution outputs as defined in the automation document. Outputs map[string][]*string `min:"1" type:"map"` @@ -16552,6 +17159,16 @@ type AutomationExecution struct { // A list of resolved targets in the rate control execution. ResolvedTargets *ResolvedTargets `type:"structure"` + // Information about the Automation runbooks (Automation documents) that are + // run as part of a runbook workflow. + // + // The Automation runbooks specified for the runbook workflow can't run until + // all required approvals for the change request have been received. + Runbooks []*Runbook `min:"1" type:"list"` + + // The date and time the Automation operation is scheduled to start. + ScheduledTime *time.Time `type:"timestamp"` + // A list of details about the current state of all steps that comprise an execution. // An Automation document contains a list of steps that are run in order. StepExecutions []*StepExecution `type:"list"` @@ -16588,6 +17205,12 @@ func (s AutomationExecution) GoString() string { return s.String() } +// SetAssociationId sets the AssociationId field's value. +func (s *AutomationExecution) SetAssociationId(v string) *AutomationExecution { + s.AssociationId = &v + return s +} + // SetAutomationExecutionId sets the AutomationExecutionId field's value. func (s *AutomationExecution) SetAutomationExecutionId(v string) *AutomationExecution { s.AutomationExecutionId = &v @@ -16600,6 +17223,18 @@ func (s *AutomationExecution) SetAutomationExecutionStatus(v string) *Automation return s } +// SetAutomationSubtype sets the AutomationSubtype field's value. +func (s *AutomationExecution) SetAutomationSubtype(v string) *AutomationExecution { + s.AutomationSubtype = &v + return s +} + +// SetChangeRequestName sets the ChangeRequestName field's value. +func (s *AutomationExecution) SetChangeRequestName(v string) *AutomationExecution { + s.ChangeRequestName = &v + return s +} + // SetCurrentAction sets the CurrentAction field's value. func (s *AutomationExecution) SetCurrentAction(v string) *AutomationExecution { s.CurrentAction = &v @@ -16666,6 +17301,12 @@ func (s *AutomationExecution) SetMode(v string) *AutomationExecution { return s } +// SetOpsItemId sets the OpsItemId field's value. +func (s *AutomationExecution) SetOpsItemId(v string) *AutomationExecution { + s.OpsItemId = &v + return s +} + // SetOutputs sets the Outputs field's value. func (s *AutomationExecution) SetOutputs(v map[string][]*string) *AutomationExecution { s.Outputs = v @@ -16696,6 +17337,18 @@ func (s *AutomationExecution) SetResolvedTargets(v *ResolvedTargets) *Automation return s } +// SetRunbooks sets the Runbooks field's value. +func (s *AutomationExecution) SetRunbooks(v []*Runbook) *AutomationExecution { + s.Runbooks = v + return s +} + +// SetScheduledTime sets the ScheduledTime field's value. +func (s *AutomationExecution) SetScheduledTime(v time.Time) *AutomationExecution { + s.ScheduledTime = &v + return s +} + // SetStepExecutions sets the StepExecutions field's value. func (s *AutomationExecution) SetStepExecutions(v []*StepExecution) *AutomationExecution { s.StepExecutions = v @@ -16743,9 +17396,7 @@ func (s *AutomationExecution) SetTargets(v []*Target) *AutomationExecution { type AutomationExecutionFilter struct { _ struct{} `type:"structure"` - // One or more keys to limit the results. Valid filter keys include the following: - // DocumentNamePrefix, ExecutionStatus, ExecutionId, ParentExecutionId, CurrentAction, - // StartTimeBefore, StartTimeAfter, TargetResourceGroup. + // One or more keys to limit the results. // // Key is a required field Key *string `type:"string" required:"true" enum:"AutomationExecutionFilterKey"` @@ -16859,12 +17510,19 @@ func (s *AutomationExecutionLimitExceededException) RequestID() string { type AutomationExecutionMetadata struct { _ struct{} `type:"structure"` + // The ID of a State Manager association used in the Automation operation. + AssociationId *string `type:"string"` + // The execution ID. AutomationExecutionId *string `min:"36" type:"string"` // The status of the execution. AutomationExecutionStatus *string `type:"string" enum:"AutomationExecutionStatus"` + // The subtype of the Automation operation. Currently, the only supported value + // is ChangeRequest. + AutomationSubtype *string `type:"string" enum:"AutomationSubtype"` + // Use this filter with DescribeAutomationExecutions. Specify either Local or // CrossAccount. CrossAccount is an Automation that runs in multiple AWS Regions // and accounts. For more information, see Running Automation workflows in multiple @@ -16872,6 +17530,9 @@ type AutomationExecutionMetadata struct { // in the AWS Systems Manager User Guide. AutomationType *string `type:"string" enum:"AutomationType"` + // The name of the Change Manager change request. + ChangeRequestName *string `min:"1" type:"string"` + // The action of the step that is currently running. CurrentAction *string `type:"string"` @@ -16909,6 +17570,10 @@ type AutomationExecutionMetadata struct { // The Automation execution mode. Mode *string `type:"string" enum:"ExecutionMode"` + // The ID of an OpsItem that is created to represent a Change Manager change + // request. + OpsItemId *string `type:"string"` + // The list of execution outputs as defined in the Automation document. Outputs map[string][]*string `min:"1" type:"map"` @@ -16918,6 +17583,16 @@ type AutomationExecutionMetadata struct { // A list of targets that resolved during the execution. ResolvedTargets *ResolvedTargets `type:"structure"` + // Information about the Automation runbooks (Automation documents) that are + // run during a runbook workflow in Change Manager. + // + // The Automation runbooks specified for the runbook workflow can't run until + // all required approvals for the change request have been received. + Runbooks []*Runbook `min:"1" type:"list"` + + // The date and time the Automation operation is scheduled to start. + ScheduledTime *time.Time `type:"timestamp"` + // The list of execution outputs as defined in the Automation document. Target *string `type:"string"` @@ -16941,6 +17616,12 @@ func (s AutomationExecutionMetadata) GoString() string { return s.String() } +// SetAssociationId sets the AssociationId field's value. +func (s *AutomationExecutionMetadata) SetAssociationId(v string) *AutomationExecutionMetadata { + s.AssociationId = &v + return s +} + // SetAutomationExecutionId sets the AutomationExecutionId field's value. func (s *AutomationExecutionMetadata) SetAutomationExecutionId(v string) *AutomationExecutionMetadata { s.AutomationExecutionId = &v @@ -16953,12 +17634,24 @@ func (s *AutomationExecutionMetadata) SetAutomationExecutionStatus(v string) *Au return s } +// SetAutomationSubtype sets the AutomationSubtype field's value. +func (s *AutomationExecutionMetadata) SetAutomationSubtype(v string) *AutomationExecutionMetadata { + s.AutomationSubtype = &v + return s +} + // SetAutomationType sets the AutomationType field's value. func (s *AutomationExecutionMetadata) SetAutomationType(v string) *AutomationExecutionMetadata { s.AutomationType = &v return s } +// SetChangeRequestName sets the ChangeRequestName field's value. +func (s *AutomationExecutionMetadata) SetChangeRequestName(v string) *AutomationExecutionMetadata { + s.ChangeRequestName = &v + return s +} + // SetCurrentAction sets the CurrentAction field's value. func (s *AutomationExecutionMetadata) SetCurrentAction(v string) *AutomationExecutionMetadata { s.CurrentAction = &v @@ -17031,6 +17724,12 @@ func (s *AutomationExecutionMetadata) SetMode(v string) *AutomationExecutionMeta return s } +// SetOpsItemId sets the OpsItemId field's value. +func (s *AutomationExecutionMetadata) SetOpsItemId(v string) *AutomationExecutionMetadata { + s.OpsItemId = &v + return s +} + // SetOutputs sets the Outputs field's value. func (s *AutomationExecutionMetadata) SetOutputs(v map[string][]*string) *AutomationExecutionMetadata { s.Outputs = v @@ -17049,6 +17748,18 @@ func (s *AutomationExecutionMetadata) SetResolvedTargets(v *ResolvedTargets) *Au return s } +// SetRunbooks sets the Runbooks field's value. +func (s *AutomationExecutionMetadata) SetRunbooks(v []*Runbook) *AutomationExecutionMetadata { + s.Runbooks = v + return s +} + +// SetScheduledTime sets the ScheduledTime field's value. +func (s *AutomationExecutionMetadata) SetScheduledTime(v time.Time) *AutomationExecutionMetadata { + s.ScheduledTime = &v + return s +} + // SetTarget sets the Target field's value. func (s *AutomationExecutionMetadata) SetTarget(v string) *AutomationExecutionMetadata { s.Target = &v @@ -18933,6 +19644,10 @@ type CreateAssociationBatchRequestEntry struct { // By default, all associations use AUTO mode. SyncCompliance *string `type:"string" enum:"AssociationSyncCompliance"` + // Use this action to create an association in multiple Regions and multiple + // accounts. + TargetLocations []*TargetLocation `min:"1" type:"list"` + // The instances targeted by the request. Targets []*Target `type:"list"` } @@ -18965,11 +19680,24 @@ func (s *CreateAssociationBatchRequestEntry) Validate() error { if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1)) } + if s.TargetLocations != nil && len(s.TargetLocations) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetLocations", 1)) + } if s.OutputLocation != nil { if err := s.OutputLocation.Validate(); err != nil { invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams)) } } + if s.TargetLocations != nil { + for i, v := range s.TargetLocations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetLocations", i), err.(request.ErrInvalidParams)) + } + } + } if s.Targets != nil { for i, v := range s.Targets { if v == nil { @@ -19065,6 +19793,12 @@ func (s *CreateAssociationBatchRequestEntry) SetSyncCompliance(v string) *Create return s } +// SetTargetLocations sets the TargetLocations field's value. +func (s *CreateAssociationBatchRequestEntry) SetTargetLocations(v []*TargetLocation) *CreateAssociationBatchRequestEntry { + s.TargetLocations = v + return s +} + // SetTargets sets the Targets field's value. func (s *CreateAssociationBatchRequestEntry) SetTargets(v []*Target) *CreateAssociationBatchRequestEntry { s.Targets = v @@ -19175,6 +19909,11 @@ type CreateAssociationInput struct { // By default, all associations use AUTO mode. SyncCompliance *string `type:"string" enum:"AssociationSyncCompliance"` + // A location is a combination of AWS Regions and AWS accounts where you want + // to run the association. Use this action to create an association in multiple + // Regions and multiple accounts. + TargetLocations []*TargetLocation `min:"1" type:"list"` + // The targets for the association. You can target instances by using tags, // AWS Resource Groups, all instances in an AWS account, or individual instance // IDs. For more information about choosing targets for an association, see @@ -19211,11 +19950,24 @@ func (s *CreateAssociationInput) Validate() error { if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1)) } + if s.TargetLocations != nil && len(s.TargetLocations) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetLocations", 1)) + } if s.OutputLocation != nil { if err := s.OutputLocation.Validate(); err != nil { invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams)) } } + if s.TargetLocations != nil { + for i, v := range s.TargetLocations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetLocations", i), err.(request.ErrInvalidParams)) + } + } + } if s.Targets != nil { for i, v := range s.Targets { if v == nil { @@ -19311,6 +20063,12 @@ func (s *CreateAssociationInput) SetSyncCompliance(v string) *CreateAssociationI return s } +// SetTargetLocations sets the TargetLocations field's value. +func (s *CreateAssociationInput) SetTargetLocations(v []*TargetLocation) *CreateAssociationInput { + s.TargetLocations = v + return s +} + // SetTargets sets the Targets field's value. func (s *CreateAssociationInput) SetTargets(v []*Target) *CreateAssociationInput { s.Targets = v @@ -19612,7 +20370,7 @@ type CreateMaintenanceWindowInput struct { // For example, the following cron expression schedules a maintenance window // to run on the third Tuesday of every month at 11:30 PM. // - // cron(0 30 23 ? * TUE#3 *) + // cron(30 23 ? * TUE#3 *) // // If the schedule offset is 2, the maintenance window won't run until two days // later. @@ -19620,7 +20378,7 @@ type CreateMaintenanceWindowInput struct { // The time zone that the scheduled maintenance window executions are based // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", - // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database + // "UTC", or "Asia/Seoul". For more information, see the Time Zone Database // (https://www.iana.org/time-zones) on the IANA website. ScheduleTimezone *string `type:"string"` @@ -19807,6 +20565,14 @@ func (s *CreateMaintenanceWindowOutput) SetWindowId(v string) *CreateMaintenance type CreateOpsItemInput struct { _ struct{} `type:"structure"` + // The time a runbook workflow ended. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualEndTime *time.Time `type:"timestamp"` + + // The time a runbook workflow started. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualStartTime *time.Time `type:"timestamp"` + // Specify a category to assign to an OpsItem. Category *string `min:"1" type:"string"` @@ -19842,6 +20608,18 @@ type CreateOpsItemInput struct { // in the AWS Systems Manager User Guide. OperationalData map[string]*OpsItemDataValue `type:"map"` + // The type of OpsItem to create. Currently, the only valid values are /aws/changerequest + // and /aws/issue. + OpsItemType *string `type:"string"` + + // The time specified in a change request for a runbook workflow to end. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedEndTime *time.Time `type:"timestamp"` + + // The time specified in a change request for a runbook workflow to start. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedStartTime *time.Time `type:"timestamp"` + // The importance of this OpsItem in relation to other OpsItems in the system. Priority *int64 `min:"1" type:"integer"` @@ -19946,6 +20724,18 @@ func (s *CreateOpsItemInput) Validate() error { return nil } +// SetActualEndTime sets the ActualEndTime field's value. +func (s *CreateOpsItemInput) SetActualEndTime(v time.Time) *CreateOpsItemInput { + s.ActualEndTime = &v + return s +} + +// SetActualStartTime sets the ActualStartTime field's value. +func (s *CreateOpsItemInput) SetActualStartTime(v time.Time) *CreateOpsItemInput { + s.ActualStartTime = &v + return s +} + // SetCategory sets the Category field's value. func (s *CreateOpsItemInput) SetCategory(v string) *CreateOpsItemInput { s.Category = &v @@ -19970,6 +20760,24 @@ func (s *CreateOpsItemInput) SetOperationalData(v map[string]*OpsItemDataValue) return s } +// SetOpsItemType sets the OpsItemType field's value. +func (s *CreateOpsItemInput) SetOpsItemType(v string) *CreateOpsItemInput { + s.OpsItemType = &v + return s +} + +// SetPlannedEndTime sets the PlannedEndTime field's value. +func (s *CreateOpsItemInput) SetPlannedEndTime(v time.Time) *CreateOpsItemInput { + s.PlannedEndTime = &v + return s +} + +// SetPlannedStartTime sets the PlannedStartTime field's value. +func (s *CreateOpsItemInput) SetPlannedStartTime(v time.Time) *CreateOpsItemInput { + s.PlannedStartTime = &v + return s +} + // SetPriority sets the Priority field's value. func (s *CreateOpsItemInput) SetPriority(v int64) *CreateOpsItemInput { s.Priority = &v @@ -20032,10 +20840,10 @@ func (s *CreateOpsItemOutput) SetOpsItemId(v string) *CreateOpsItemOutput { type CreateOpsMetadataInput struct { _ struct{} `type:"structure"` - // Metadata for a new AppManager application. + // Metadata for a new Application Manager application. Metadata map[string]*MetadataValue `min:"1" type:"map"` - // A resource ID for a new AppManager application. + // A resource ID for a new Application Manager application. // // ResourceId is a required field ResourceId *string `min:"1" type:"string" required:"true"` @@ -22431,11 +23239,20 @@ func (s *DescribeDocumentOutput) SetDocument(v *DocumentDescription) *DescribeDo type DescribeDocumentPermissionInput struct { _ struct{} `type:"structure"` + // The maximum number of items to return for this call. The call also returns + // a token that you can specify in a subsequent call to get the next set of + // results. + MaxResults *int64 `min:"1" type:"integer"` + // The name of the document for which you are the owner. // // Name is a required field Name *string `type:"string" required:"true"` + // The token for the next set of items to return. (You received this token from + // a previous call.) + NextToken *string `type:"string"` + // The permission type for the document. The permission type can be Share. // // PermissionType is a required field @@ -22455,6 +23272,9 @@ func (s DescribeDocumentPermissionInput) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *DescribeDocumentPermissionInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "DescribeDocumentPermissionInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } if s.Name == nil { invalidParams.Add(request.NewErrParamRequired("Name")) } @@ -22468,12 +23288,24 @@ func (s *DescribeDocumentPermissionInput) Validate() error { return nil } +// SetMaxResults sets the MaxResults field's value. +func (s *DescribeDocumentPermissionInput) SetMaxResults(v int64) *DescribeDocumentPermissionInput { + s.MaxResults = &v + return s +} + // SetName sets the Name field's value. func (s *DescribeDocumentPermissionInput) SetName(v string) *DescribeDocumentPermissionInput { s.Name = &v return s } +// SetNextToken sets the NextToken field's value. +func (s *DescribeDocumentPermissionInput) SetNextToken(v string) *DescribeDocumentPermissionInput { + s.NextToken = &v + return s +} + // SetPermissionType sets the PermissionType field's value. func (s *DescribeDocumentPermissionInput) SetPermissionType(v string) *DescribeDocumentPermissionInput { s.PermissionType = &v @@ -22490,6 +23322,10 @@ type DescribeDocumentPermissionOutput struct { // A list of AWS accounts where the current document is shared and the version // shared with each account. AccountSharingInfoList []*AccountSharingInfo `type:"list"` + + // The token for the next set of items to return. Use this token to get the + // next set of results. + NextToken *string `type:"string"` } // String returns the string representation @@ -22514,6 +23350,12 @@ func (s *DescribeDocumentPermissionOutput) SetAccountSharingInfoList(v []*Accoun return s } +// SetNextToken sets the NextToken field's value. +func (s *DescribeDocumentPermissionOutput) SetNextToken(v string) *DescribeDocumentPermissionOutput { + s.NextToken = &v + return s +} + type DescribeEffectiveInstanceAssociationsInput struct { _ struct{} `type:"structure"` @@ -25285,10 +26127,16 @@ func (s *DocumentDefaultVersionDescription) SetName(v string) *DocumentDefaultVe type DocumentDescription struct { _ struct{} `type:"structure"` + // The version of the document currently approved for use in the organization. + ApprovedVersion *string `type:"string"` + // Details about the document attachments, including names, locations, sizes, // and so on. AttachmentsInformation []*AttachmentInformation `type:"list"` + // The user in your organization who created the document. + Author *string `type:"string"` + // The date when the document was created. CreatedDate *time.Time `type:"timestamp"` @@ -25329,6 +26177,9 @@ type DocumentDescription struct { // A description of the parameters for a document. Parameters []*DocumentParameter `type:"list"` + // The version of the document that is currently under review. + PendingReviewVersion *string `type:"string"` + // The list of OS platforms compatible with this Systems Manager document. PlatformTypes []*string `type:"list"` @@ -25336,6 +26187,12 @@ type DocumentDescription struct { // document requires an ApplicationConfigurationSchema document. Requires []*DocumentRequires `min:"1" type:"list"` + // Details about the review of a document. + ReviewInformation []*ReviewInformation `min:"1" type:"list"` + + // The current status of the review. + ReviewStatus *string `type:"string" enum:"ReviewStatus"` + // The schema version. SchemaVersion *string `type:"string"` @@ -25374,12 +26231,24 @@ func (s DocumentDescription) GoString() string { return s.String() } +// SetApprovedVersion sets the ApprovedVersion field's value. +func (s *DocumentDescription) SetApprovedVersion(v string) *DocumentDescription { + s.ApprovedVersion = &v + return s +} + // SetAttachmentsInformation sets the AttachmentsInformation field's value. func (s *DocumentDescription) SetAttachmentsInformation(v []*AttachmentInformation) *DocumentDescription { s.AttachmentsInformation = v return s } +// SetAuthor sets the Author field's value. +func (s *DocumentDescription) SetAuthor(v string) *DocumentDescription { + s.Author = &v + return s +} + // SetCreatedDate sets the CreatedDate field's value. func (s *DocumentDescription) SetCreatedDate(v time.Time) *DocumentDescription { s.CreatedDate = &v @@ -25452,6 +26321,12 @@ func (s *DocumentDescription) SetParameters(v []*DocumentParameter) *DocumentDes return s } +// SetPendingReviewVersion sets the PendingReviewVersion field's value. +func (s *DocumentDescription) SetPendingReviewVersion(v string) *DocumentDescription { + s.PendingReviewVersion = &v + return s +} + // SetPlatformTypes sets the PlatformTypes field's value. func (s *DocumentDescription) SetPlatformTypes(v []*string) *DocumentDescription { s.PlatformTypes = v @@ -25464,6 +26339,18 @@ func (s *DocumentDescription) SetRequires(v []*DocumentRequires) *DocumentDescri return s } +// SetReviewInformation sets the ReviewInformation field's value. +func (s *DocumentDescription) SetReviewInformation(v []*ReviewInformation) *DocumentDescription { + s.ReviewInformation = v + return s +} + +// SetReviewStatus sets the ReviewStatus field's value. +func (s *DocumentDescription) SetReviewStatus(v string) *DocumentDescription { + s.ReviewStatus = &v + return s +} + // SetSchemaVersion sets the SchemaVersion field's value. func (s *DocumentDescription) SetSchemaVersion(v string) *DocumentDescription { s.SchemaVersion = &v @@ -25566,6 +26453,9 @@ func (s *DocumentFilter) SetValue(v string) *DocumentFilter { type DocumentIdentifier struct { _ struct{} `type:"structure"` + // The user in your organization who created the document. + Author *string `type:"string"` + // The document format, either JSON or YAML. DocumentFormat *string `type:"string" enum:"DocumentFormat"` @@ -25588,6 +26478,9 @@ type DocumentIdentifier struct { // document requires an ApplicationConfigurationSchema document. Requires []*DocumentRequires `min:"1" type:"list"` + // The current status of a document review. + ReviewStatus *string `type:"string" enum:"ReviewStatus"` + // The schema version. SchemaVersion *string `type:"string"` @@ -25616,6 +26509,12 @@ func (s DocumentIdentifier) GoString() string { return s.String() } +// SetAuthor sets the Author field's value. +func (s *DocumentIdentifier) SetAuthor(v string) *DocumentIdentifier { + s.Author = &v + return s +} + // SetDocumentFormat sets the DocumentFormat field's value. func (s *DocumentIdentifier) SetDocumentFormat(v string) *DocumentIdentifier { s.DocumentFormat = &v @@ -25658,6 +26557,12 @@ func (s *DocumentIdentifier) SetRequires(v []*DocumentRequires) *DocumentIdentif return s } +// SetReviewStatus sets the ReviewStatus field's value. +func (s *DocumentIdentifier) SetReviewStatus(v string) *DocumentIdentifier { + s.ReviewStatus = &v + return s +} + // SetSchemaVersion sets the SchemaVersion field's value. func (s *DocumentIdentifier) SetSchemaVersion(v string) *DocumentIdentifier { s.SchemaVersion = &v @@ -25852,6 +26757,30 @@ func (s *DocumentLimitExceeded) RequestID() string { return s.RespMetadata.RequestID } +// Details about the response to a document review request. +type DocumentMetadataResponseInfo struct { + _ struct{} `type:"structure"` + + // Details about a reviewer's response to a document review request. + ReviewerResponse []*DocumentReviewerResponseSource `type:"list"` +} + +// String returns the string representation +func (s DocumentMetadataResponseInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DocumentMetadataResponseInfo) GoString() string { + return s.String() +} + +// SetReviewerResponse sets the ReviewerResponse field's value. +func (s *DocumentMetadataResponseInfo) SetReviewerResponse(v []*DocumentReviewerResponseSource) *DocumentMetadataResponseInfo { + s.ReviewerResponse = v + return s +} + // Parameters specified in a System Manager document that run on the server // when the command is run. type DocumentParameter struct { @@ -26013,6 +26942,182 @@ func (s *DocumentRequires) SetVersion(v string) *DocumentRequires { return s } +// Information about comments added to a document review request. +type DocumentReviewCommentSource struct { + _ struct{} `type:"structure"` + + // The content of a comment entered by a user who requests a review of a new + // document version, or who reviews the new version. + Content *string `min:"1" type:"string"` + + // The type of information added to a review request. Currently, only the value + // Comment is supported. + Type *string `type:"string" enum:"DocumentReviewCommentType"` +} + +// String returns the string representation +func (s DocumentReviewCommentSource) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DocumentReviewCommentSource) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DocumentReviewCommentSource) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DocumentReviewCommentSource"} + if s.Content != nil && len(*s.Content) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Content", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetContent sets the Content field's value. +func (s *DocumentReviewCommentSource) SetContent(v string) *DocumentReviewCommentSource { + s.Content = &v + return s +} + +// SetType sets the Type field's value. +func (s *DocumentReviewCommentSource) SetType(v string) *DocumentReviewCommentSource { + s.Type = &v + return s +} + +// Information about a reviewer's response to a document review request. +type DocumentReviewerResponseSource struct { + _ struct{} `type:"structure"` + + // The comment entered by a reviewer as part of their document review response. + Comment []*DocumentReviewCommentSource `type:"list"` + + // The date and time that a reviewer entered a response to a document review + // request. + CreateTime *time.Time `type:"timestamp"` + + // The current review status of a new custom SSM document created by a member + // of your organization, or of the latest version of an existing SSM document. + // + // Only one version of a document can be in the APPROVED state at a time. When + // a new version is approved, the status of the previous version changes to + // REJECTED. + // + // Only one version of a document can be in review, or PENDING, at a time. + ReviewStatus *string `type:"string" enum:"ReviewStatus"` + + // The user in your organization assigned to review a document request. + Reviewer *string `type:"string"` + + // The date and time that a reviewer last updated a response to a document review + // request. + UpdatedTime *time.Time `type:"timestamp"` +} + +// String returns the string representation +func (s DocumentReviewerResponseSource) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DocumentReviewerResponseSource) GoString() string { + return s.String() +} + +// SetComment sets the Comment field's value. +func (s *DocumentReviewerResponseSource) SetComment(v []*DocumentReviewCommentSource) *DocumentReviewerResponseSource { + s.Comment = v + return s +} + +// SetCreateTime sets the CreateTime field's value. +func (s *DocumentReviewerResponseSource) SetCreateTime(v time.Time) *DocumentReviewerResponseSource { + s.CreateTime = &v + return s +} + +// SetReviewStatus sets the ReviewStatus field's value. +func (s *DocumentReviewerResponseSource) SetReviewStatus(v string) *DocumentReviewerResponseSource { + s.ReviewStatus = &v + return s +} + +// SetReviewer sets the Reviewer field's value. +func (s *DocumentReviewerResponseSource) SetReviewer(v string) *DocumentReviewerResponseSource { + s.Reviewer = &v + return s +} + +// SetUpdatedTime sets the UpdatedTime field's value. +func (s *DocumentReviewerResponseSource) SetUpdatedTime(v time.Time) *DocumentReviewerResponseSource { + s.UpdatedTime = &v + return s +} + +// Information about a document approval review. +type DocumentReviews struct { + _ struct{} `type:"structure"` + + // The action to take on a document approval review request. + // + // Action is a required field + Action *string `type:"string" required:"true" enum:"DocumentReviewAction"` + + // A comment entered by a user in your organization about the document review + // request. + Comment []*DocumentReviewCommentSource `type:"list"` +} + +// String returns the string representation +func (s DocumentReviews) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s DocumentReviews) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *DocumentReviews) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "DocumentReviews"} + if s.Action == nil { + invalidParams.Add(request.NewErrParamRequired("Action")) + } + if s.Comment != nil { + for i, v := range s.Comment { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Comment", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAction sets the Action field's value. +func (s *DocumentReviews) SetAction(v string) *DocumentReviews { + s.Action = &v + return s +} + +// SetComment sets the Comment field's value. +func (s *DocumentReviews) SetComment(v []*DocumentReviewCommentSource) *DocumentReviews { + s.Comment = v + return s +} + // Version information about the document. type DocumentVersionInfo struct { _ struct{} `type:"structure"` @@ -26032,6 +27137,9 @@ type DocumentVersionInfo struct { // The document name. Name *string `type:"string"` + // The current status of the approval review for the latest version of the document. + ReviewStatus *string `type:"string" enum:"ReviewStatus"` + // The status of the Systems Manager document, such as Creating, Active, Failed, // and Deleting. Status *string `type:"string" enum:"DocumentStatus"` @@ -26088,6 +27196,12 @@ func (s *DocumentVersionInfo) SetName(v string) *DocumentVersionInfo { return s } +// SetReviewStatus sets the ReviewStatus field's value. +func (s *DocumentVersionInfo) SetReviewStatus(v string) *DocumentVersionInfo { + s.ReviewStatus = &v + return s +} + // SetStatus sets the Status field's value. func (s *DocumentVersionInfo) SetStatus(v string) *DocumentVersionInfo { s.Status = &v @@ -27381,6 +28495,17 @@ type GetDocumentOutput struct { // document requires an ApplicationConfigurationSchema document. Requires []*DocumentRequires `min:"1" type:"list"` + // The current review status of a new custom Systems Manager document (SSM document) + // created by a member of your organization, or of the latest version of an + // existing SSM document. + // + // Only one version of an SSM document can be in the APPROVED state at a time. + // When a new version is approved, the status of the previous version changes + // to REJECTED. + // + // Only one version of an SSM document can be in review, or PENDING, at a time. + ReviewStatus *string `type:"string" enum:"ReviewStatus"` + // The status of the Systems Manager document, such as Creating, Active, Updating, // Failed, and Deleting. Status *string `type:"string" enum:"DocumentStatus"` @@ -27449,6 +28574,12 @@ func (s *GetDocumentOutput) SetRequires(v []*DocumentRequires) *GetDocumentOutpu return s } +// SetReviewStatus sets the ReviewStatus field's value. +func (s *GetDocumentOutput) SetReviewStatus(v string) *GetDocumentOutput { + s.ReviewStatus = &v + return s +} + // SetStatus sets the Status field's value. func (s *GetDocumentOutput) SetStatus(v string) *GetDocumentOutput { s.Status = &v @@ -28328,7 +29459,7 @@ type GetMaintenanceWindowOutput struct { // The time zone that the scheduled maintenance window executions are based // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", - // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database + // "UTC", or "Asia/Seoul". For more information, see the Time Zone Database // (https://www.iana.org/time-zones) on the IANA website. ScheduleTimezone *string `type:"string"` @@ -28514,9 +29645,19 @@ type GetMaintenanceWindowTaskOutput struct { LoggingInfo *LoggingInfo `type:"structure"` // The maximum number of targets allowed to run this task in parallel. + // + // For maintenance window tasks without a target specified, you cannot supply + // a value for this option. Instead, the system inserts a placeholder value + // of 1, which may be reported in the response to this command. This value does + // not affect the running of your task and can be ignored. MaxConcurrency *string `min:"1" type:"string"` // The maximum number of errors allowed before the task stops being scheduled. + // + // For maintenance window tasks without a target specified, you cannot supply + // a value for this option. Instead, the system inserts a placeholder value + // of 1, which may be reported in the response to this command. This value does + // not affect the running of your task and can be ignored. MaxErrors *string `min:"1" type:"string"` // The retrieved task name. @@ -28782,14 +29923,14 @@ func (s *GetOpsMetadataInput) SetOpsMetadataArn(v string) *GetOpsMetadataInput { type GetOpsMetadataOutput struct { _ struct{} `type:"structure"` - // OpsMetadata for an AppManager application. + // OpsMetadata for an Application Manager application. Metadata map[string]*MetadataValue `min:"1" type:"map"` // The token for the next set of items to return. Use this token to get the // next set of results. NextToken *string `type:"string"` - // The resource ID of the AppManager application. + // The resource ID of the Application Manager application. ResourceId *string `min:"1" type:"string"` } @@ -29182,9 +30323,11 @@ type GetParametersByPathInput struct { // Name, Path, and Tier. ParameterFilters []*ParameterStringFilter `type:"list"` - // The hierarchy for the parameter. Hierarchies start with a forward slash (/) - // and end with the parameter name. A parameter name hierarchy can have a maximum - // of 15 levels. Here is an example of a hierarchy: /Finance/Prod/IAD/WinServ2016/license33 + // The hierarchy for the parameter. Hierarchies start with a forward slash (/). + // The hierachy is the parameter name except the last part of the parameter. + // For the API call to succeeed, the last part of the parameter name cannot + // be in the path. A parameter name hierarchy can have a maximum of 15 levels. + // Here is an example of a hierarchy: /Finance/Prod/IAD/WinServ2016/license33 // // Path is a required field Path *string `min:"1" type:"string" required:"true"` @@ -30300,7 +31443,7 @@ type InstanceInformation struct { // The date the association was last run. LastAssociationExecutionDate *time.Time `type:"timestamp"` - // The date and time when agent last pinged Systems Manager service. + // The date and time when the agent last pinged the Systems Manager service. LastPingDateTime *time.Time `type:"timestamp"` // The last date the association was successfully run. @@ -35309,6 +36452,154 @@ func (s *ListComplianceSummariesOutput) SetNextToken(v string) *ListComplianceSu return s } +type ListDocumentMetadataHistoryInput struct { + _ struct{} `type:"structure"` + + // The version of the document. + DocumentVersion *string `type:"string"` + + // The maximum number of items to return for this call. The call also returns + // a token that you can specify in a subsequent call to get the next set of + // results. + MaxResults *int64 `min:"1" type:"integer"` + + // The type of data for which details are being requested. Currently, the only + // supported value is DocumentReviews. + // + // Metadata is a required field + Metadata *string `type:"string" required:"true" enum:"DocumentMetadataEnum"` + + // The name of the document. + // + // Name is a required field + Name *string `type:"string" required:"true"` + + // The token for the next set of items to return. (You received this token from + // a previous call.) + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s ListDocumentMetadataHistoryInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListDocumentMetadataHistoryInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListDocumentMetadataHistoryInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListDocumentMetadataHistoryInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.Metadata == nil { + invalidParams.Add(request.NewErrParamRequired("Metadata")) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDocumentVersion sets the DocumentVersion field's value. +func (s *ListDocumentMetadataHistoryInput) SetDocumentVersion(v string) *ListDocumentMetadataHistoryInput { + s.DocumentVersion = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListDocumentMetadataHistoryInput) SetMaxResults(v int64) *ListDocumentMetadataHistoryInput { + s.MaxResults = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *ListDocumentMetadataHistoryInput) SetMetadata(v string) *ListDocumentMetadataHistoryInput { + s.Metadata = &v + return s +} + +// SetName sets the Name field's value. +func (s *ListDocumentMetadataHistoryInput) SetName(v string) *ListDocumentMetadataHistoryInput { + s.Name = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListDocumentMetadataHistoryInput) SetNextToken(v string) *ListDocumentMetadataHistoryInput { + s.NextToken = &v + return s +} + +type ListDocumentMetadataHistoryOutput struct { + _ struct{} `type:"structure"` + + // The user ID of the person in the organization who requested the document + // review. + Author *string `type:"string"` + + // The version of the document. + DocumentVersion *string `type:"string"` + + // Information about the response to the document approval request. + Metadata *DocumentMetadataResponseInfo `type:"structure"` + + // The name of the document. + Name *string `type:"string"` + + // The maximum number of items to return for this call. The call also returns + // a token that you can specify in a subsequent call to get the next set of + // results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s ListDocumentMetadataHistoryOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListDocumentMetadataHistoryOutput) GoString() string { + return s.String() +} + +// SetAuthor sets the Author field's value. +func (s *ListDocumentMetadataHistoryOutput) SetAuthor(v string) *ListDocumentMetadataHistoryOutput { + s.Author = &v + return s +} + +// SetDocumentVersion sets the DocumentVersion field's value. +func (s *ListDocumentMetadataHistoryOutput) SetDocumentVersion(v string) *ListDocumentMetadataHistoryOutput { + s.DocumentVersion = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *ListDocumentMetadataHistoryOutput) SetMetadata(v *DocumentMetadataResponseInfo) *ListDocumentMetadataHistoryOutput { + s.Metadata = v + return s +} + +// SetName sets the Name field's value. +func (s *ListDocumentMetadataHistoryOutput) SetName(v string) *ListDocumentMetadataHistoryOutput { + s.Name = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListDocumentMetadataHistoryOutput) SetNextToken(v string) *ListDocumentMetadataHistoryOutput { + s.NextToken = &v + return s +} + type ListDocumentVersionsInput struct { _ struct{} `type:"structure"` @@ -35416,6 +36707,9 @@ type ListDocumentsInput struct { // Owner, Name, PlatformTypes, DocumentType, and TargetType. For example, to // return documents you own use Key=Owner,Values=Self. To specify a custom key-value // pair, use the format Key=tag:tagName,Values=valueName. + // + // This API action only supports filtering documents by using a single tag key + // and one or more tag values. For example: Key=tag:tagName,Values=valueName1,valueName2 Filters []*DocumentKeyValuesFilter `type:"list"` // The maximum number of items to return for this call. The call also returns @@ -35701,6 +36995,106 @@ func (s *ListInventoryEntriesOutput) SetTypeName(v string) *ListInventoryEntries return s } +type ListOpsItemEventsInput struct { + _ struct{} `type:"structure"` + + // One or more OpsItem filters. Use a filter to return a more specific list + // of results. + Filters []*OpsItemEventFilter `type:"list"` + + // The maximum number of items to return for this call. The call also returns + // a token that you can specify in a subsequent call to get the next set of + // results. + MaxResults *int64 `min:"1" type:"integer"` + + // A token to start the list. Use this token to get the next set of results. + NextToken *string `type:"string"` +} + +// String returns the string representation +func (s ListOpsItemEventsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListOpsItemEventsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListOpsItemEventsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListOpsItemEventsInput"} + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + if s.Filters != nil { + for i, v := range s.Filters { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetFilters sets the Filters field's value. +func (s *ListOpsItemEventsInput) SetFilters(v []*OpsItemEventFilter) *ListOpsItemEventsInput { + s.Filters = v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListOpsItemEventsInput) SetMaxResults(v int64) *ListOpsItemEventsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListOpsItemEventsInput) SetNextToken(v string) *ListOpsItemEventsInput { + s.NextToken = &v + return s +} + +type ListOpsItemEventsOutput struct { + _ struct{} `type:"structure"` + + // The token for the next set of items to return. Use this token to get the + // next set of results. + NextToken *string `type:"string"` + + // A list of event information for the specified OpsItems. + Summaries []*OpsItemEventSummary `type:"list"` +} + +// String returns the string representation +func (s ListOpsItemEventsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListOpsItemEventsOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListOpsItemEventsOutput) SetNextToken(v string) *ListOpsItemEventsOutput { + s.NextToken = &v + return s +} + +// SetSummaries sets the Summaries field's value. +func (s *ListOpsItemEventsOutput) SetSummaries(v []*OpsItemEventSummary) *ListOpsItemEventsOutput { + s.Summaries = v + return s +} + type ListOpsMetadataInput struct { _ struct{} `type:"structure"` @@ -37409,11 +38803,11 @@ func (s *MaxDocumentSizeExceeded) RequestID() string { return s.RespMetadata.RequestID } -// Metadata to assign to an AppManager application. +// Metadata to assign to an Application Manager application. type MetadataValue struct { _ struct{} `type:"structure"` - // Metadata value to assign to an AppManager application. + // Metadata value to assign to an Application Manager application. Value *string `min:"1" type:"string"` } @@ -37885,6 +39279,14 @@ func (s *OpsFilter) SetValues(v []*string) *OpsFilter { type OpsItem struct { _ struct{} `type:"structure"` + // The time a runbook workflow ended. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualEndTime *time.Time `type:"timestamp"` + + // The time a runbook workflow started. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualStartTime *time.Time `type:"timestamp"` + // An OpsItem category. Category options include: Availability, Cost, Performance, // Recovery, Security. Category *string `min:"1" type:"string"` @@ -37934,6 +39336,18 @@ type OpsItem struct { // The ID of the OpsItem. OpsItemId *string `type:"string"` + // The type of OpsItem. Currently, the only valid values are /aws/changerequest + // and /aws/issue. + OpsItemType *string `type:"string"` + + // The time specified in a change request for a runbook workflow to end. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedEndTime *time.Time `type:"timestamp"` + + // The time specified in a change request for a runbook workflow to start. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedStartTime *time.Time `type:"timestamp"` + // The importance of this OpsItem in relation to other OpsItems in the system. Priority *int64 `min:"1" type:"integer"` @@ -37973,6 +39387,18 @@ func (s OpsItem) GoString() string { return s.String() } +// SetActualEndTime sets the ActualEndTime field's value. +func (s *OpsItem) SetActualEndTime(v time.Time) *OpsItem { + s.ActualEndTime = &v + return s +} + +// SetActualStartTime sets the ActualStartTime field's value. +func (s *OpsItem) SetActualStartTime(v time.Time) *OpsItem { + s.ActualStartTime = &v + return s +} + // SetCategory sets the Category field's value. func (s *OpsItem) SetCategory(v string) *OpsItem { s.Category = &v @@ -38027,6 +39453,24 @@ func (s *OpsItem) SetOpsItemId(v string) *OpsItem { return s } +// SetOpsItemType sets the OpsItemType field's value. +func (s *OpsItem) SetOpsItemType(v string) *OpsItem { + s.OpsItemType = &v + return s +} + +// SetPlannedEndTime sets the PlannedEndTime field's value. +func (s *OpsItem) SetPlannedEndTime(v time.Time) *OpsItem { + s.PlannedEndTime = &v + return s +} + +// SetPlannedStartTime sets the PlannedStartTime field's value. +func (s *OpsItem) SetPlannedStartTime(v time.Time) *OpsItem { + s.PlannedStartTime = &v + return s +} + // SetPriority sets the Priority field's value. func (s *OpsItem) SetPriority(v int64) *OpsItem { s.Priority = &v @@ -38161,6 +39605,154 @@ func (s *OpsItemDataValue) SetValue(v string) *OpsItemDataValue { return s } +// Describes a filter for a specific list of OpsItem events. You can filter +// event information by using tags. You specify tags by using a key-value pair +// mapping. +type OpsItemEventFilter struct { + _ struct{} `type:"structure"` + + // The name of the filter key. Currently, the only supported value is OpsItemId. + // + // Key is a required field + Key *string `type:"string" required:"true" enum:"OpsItemEventFilterKey"` + + // The operator used by the filter call. Currently, the only supported value + // is Equal. + // + // Operator is a required field + Operator *string `type:"string" required:"true" enum:"OpsItemEventFilterOperator"` + + // The values for the filter, consisting of one or more OpsItem IDs. + // + // Values is a required field + Values []*string `type:"list" required:"true"` +} + +// String returns the string representation +func (s OpsItemEventFilter) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OpsItemEventFilter) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *OpsItemEventFilter) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "OpsItemEventFilter"} + if s.Key == nil { + invalidParams.Add(request.NewErrParamRequired("Key")) + } + if s.Operator == nil { + invalidParams.Add(request.NewErrParamRequired("Operator")) + } + if s.Values == nil { + invalidParams.Add(request.NewErrParamRequired("Values")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKey sets the Key field's value. +func (s *OpsItemEventFilter) SetKey(v string) *OpsItemEventFilter { + s.Key = &v + return s +} + +// SetOperator sets the Operator field's value. +func (s *OpsItemEventFilter) SetOperator(v string) *OpsItemEventFilter { + s.Operator = &v + return s +} + +// SetValues sets the Values field's value. +func (s *OpsItemEventFilter) SetValues(v []*string) *OpsItemEventFilter { + s.Values = v + return s +} + +// Summary information about an OpsItem event. +type OpsItemEventSummary struct { + _ struct{} `type:"structure"` + + // Information about the user or resource that created the OpsItem event. + CreatedBy *OpsItemIdentity `type:"structure"` + + // The date and time the OpsItem event was created. + CreatedTime *time.Time `type:"timestamp"` + + // Specific information about the OpsItem event. + Detail *string `type:"string"` + + // The type of information provided as a detail. + DetailType *string `type:"string"` + + // The ID of the OpsItem event. + EventId *string `type:"string"` + + // The ID of the OpsItem. + OpsItemId *string `type:"string"` + + // The source of the OpsItem event. + Source *string `type:"string"` +} + +// String returns the string representation +func (s OpsItemEventSummary) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OpsItemEventSummary) GoString() string { + return s.String() +} + +// SetCreatedBy sets the CreatedBy field's value. +func (s *OpsItemEventSummary) SetCreatedBy(v *OpsItemIdentity) *OpsItemEventSummary { + s.CreatedBy = v + return s +} + +// SetCreatedTime sets the CreatedTime field's value. +func (s *OpsItemEventSummary) SetCreatedTime(v time.Time) *OpsItemEventSummary { + s.CreatedTime = &v + return s +} + +// SetDetail sets the Detail field's value. +func (s *OpsItemEventSummary) SetDetail(v string) *OpsItemEventSummary { + s.Detail = &v + return s +} + +// SetDetailType sets the DetailType field's value. +func (s *OpsItemEventSummary) SetDetailType(v string) *OpsItemEventSummary { + s.DetailType = &v + return s +} + +// SetEventId sets the EventId field's value. +func (s *OpsItemEventSummary) SetEventId(v string) *OpsItemEventSummary { + s.EventId = &v + return s +} + +// SetOpsItemId sets the OpsItemId field's value. +func (s *OpsItemEventSummary) SetOpsItemId(v string) *OpsItemEventSummary { + s.OpsItemId = &v + return s +} + +// SetSource sets the Source field's value. +func (s *OpsItemEventSummary) SetSource(v string) *OpsItemEventSummary { + s.Source = &v + return s +} + // Describes an OpsItem filter. type OpsItemFilter struct { _ struct{} `type:"structure"` @@ -38228,6 +39820,31 @@ func (s *OpsItemFilter) SetValues(v []*string) *OpsItemFilter { return s } +// Information about the user or resource that created an OpsItem event. +type OpsItemIdentity struct { + _ struct{} `type:"structure"` + + // The Amazon Resource Name (ARN) of the IAM entity that created the OpsItem + // event. + Arn *string `type:"string"` +} + +// String returns the string representation +func (s OpsItemIdentity) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s OpsItemIdentity) GoString() string { + return s.String() +} + +// SetArn sets the Arn field's value. +func (s *OpsItemIdentity) SetArn(v string) *OpsItemIdentity { + s.Arn = &v + return s +} + // A specified parameter argument isn't valid. Verify the available arguments // and try again. type OpsItemInvalidParameterException struct { @@ -38435,6 +40052,14 @@ func (s *OpsItemNotification) SetArn(v string) *OpsItemNotification { type OpsItemSummary struct { _ struct{} `type:"structure"` + // The time a runbook workflow ended. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualEndTime *time.Time `type:"timestamp"` + + // The time a runbook workflow started. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualStartTime *time.Time `type:"timestamp"` + // A list of OpsItems by category. Category *string `min:"1" type:"string"` @@ -38457,6 +40082,18 @@ type OpsItemSummary struct { // The ID of the OpsItem. OpsItemId *string `type:"string"` + // The type of OpsItem. Currently, the only valid values are /aws/changerequest + // and /aws/issue. + OpsItemType *string `type:"string"` + + // The time specified in a change request for a runbook workflow to end. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedEndTime *time.Time `type:"timestamp"` + + // The time specified in a change request for a runbook workflow to start. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedStartTime *time.Time `type:"timestamp"` + // The importance of this OpsItem in relation to other OpsItems in the system. Priority *int64 `min:"1" type:"integer"` @@ -38484,6 +40121,18 @@ func (s OpsItemSummary) GoString() string { return s.String() } +// SetActualEndTime sets the ActualEndTime field's value. +func (s *OpsItemSummary) SetActualEndTime(v time.Time) *OpsItemSummary { + s.ActualEndTime = &v + return s +} + +// SetActualStartTime sets the ActualStartTime field's value. +func (s *OpsItemSummary) SetActualStartTime(v time.Time) *OpsItemSummary { + s.ActualStartTime = &v + return s +} + // SetCategory sets the Category field's value. func (s *OpsItemSummary) SetCategory(v string) *OpsItemSummary { s.Category = &v @@ -38526,6 +40175,24 @@ func (s *OpsItemSummary) SetOpsItemId(v string) *OpsItemSummary { return s } +// SetOpsItemType sets the OpsItemType field's value. +func (s *OpsItemSummary) SetOpsItemType(v string) *OpsItemSummary { + s.OpsItemType = &v + return s +} + +// SetPlannedEndTime sets the PlannedEndTime field's value. +func (s *OpsItemSummary) SetPlannedEndTime(v time.Time) *OpsItemSummary { + s.PlannedEndTime = &v + return s +} + +// SetPlannedStartTime sets the PlannedStartTime field's value. +func (s *OpsItemSummary) SetPlannedStartTime(v time.Time) *OpsItemSummary { + s.PlannedStartTime = &v + return s +} + // SetPriority sets the Priority field's value. func (s *OpsItemSummary) SetPriority(v int64) *OpsItemSummary { s.Priority = &v @@ -38556,7 +40223,7 @@ func (s *OpsItemSummary) SetTitle(v string) *OpsItemSummary { return s } -// Operational metadata for an application in AppManager. +// Operational metadata for an application in Application Manager. type OpsMetadata struct { _ struct{} `type:"structure"` @@ -38572,7 +40239,7 @@ type OpsMetadata struct { // The Amazon Resource Name (ARN) of the OpsMetadata Object or blob. OpsMetadataArn *string `min:"1" type:"string"` - // The ID of the AppManager application. + // The ID of the Application Manager application. ResourceId *string `min:"1" type:"string"` } @@ -38788,7 +40455,7 @@ func (s *OpsMetadataInvalidArgumentException) RequestID() string { } // The OpsMetadata object exceeds the maximum number of OpsMetadata keys that -// you can assign to an application in AppManager. +// you can assign to an application in Application Manager. type OpsMetadataKeyLimitExceededException struct { _ struct{} `type:"structure"` RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` @@ -38845,8 +40512,8 @@ func (s *OpsMetadataKeyLimitExceededException) RequestID() string { } // Your account reached the maximum number of OpsMetadata objects allowed by -// AppManager. The maximum is 200 OpsMetadata objects. Delete one or more OpsMetadata -// object and try again. +// Application Manager. The maximum is 200 OpsMetadata objects. Delete one or +// more OpsMetadata object and try again. type OpsMetadataLimitExceededException struct { _ struct{} `type:"structure"` RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` @@ -40811,11 +42478,14 @@ type PatchSource struct { // // [main] // - // cachedir=/var/cache/yum/$basesearch$releasever + // name=MyCustomRepository // - // keepcache=0 + // baseurl=https://my-custom-repository // - // debuglevel=2 + // enabled=1 + // + // For information about other options available for your yum repository configuration, + // see dnf.conf(5) (https://man7.org/linux/man-pages/man5/dnf.conf.5.html). // // Configuration is a required field Configuration *string `min:"1" type:"string" required:"true" sensitive:"true"` @@ -42026,13 +43696,17 @@ type RegisterTaskWithMaintenanceWindowInput struct { // The maximum number of targets this task can be run for in parallel. // - // MaxConcurrency is a required field - MaxConcurrency *string `min:"1" type:"string" required:"true"` + // For maintenance window tasks without a target specified, you cannot supply + // a value for this option. Instead, the system inserts a placeholder value + // of 1. This value does not affect the running of your task. + MaxConcurrency *string `min:"1" type:"string"` // The maximum number of errors allowed before this task stops being scheduled. // - // MaxErrors is a required field - MaxErrors *string `min:"1" type:"string" required:"true"` + // For maintenance window tasks without a target specified, you cannot supply + // a value for this option. Instead, the system inserts a placeholder value + // of 1. This value does not affect the running of your task. + MaxErrors *string `min:"1" type:"string"` // An optional name for the task. Name *string `min:"3" type:"string"` @@ -42058,16 +43732,21 @@ type RegisterTaskWithMaintenanceWindowInput struct { // The targets (either instances or maintenance window targets). // + // One or more targets must be specified for maintenance window Run Command-type + // tasks. Depending on the task, targets are optional for other maintenance + // window task types (Automation, AWS Lambda, and AWS Step Functions). For more + // information about running tasks that do not specify targets, see Registering + // maintenance window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html) + // in the AWS Systems Manager User Guide. + // // Specify instances using the following format: // // Key=InstanceIds,Values=, // // Specify maintenance window targets using the following format: // - // Key=WindowTargetIds;,Values=, - // - // Targets is a required field - Targets []*Target `type:"list" required:"true"` + // Key=WindowTargetIds,Values=, + Targets []*Target `type:"list"` // The ARN of the task to run. // @@ -42116,24 +43795,15 @@ func (s *RegisterTaskWithMaintenanceWindowInput) Validate() error { if s.Description != nil && len(*s.Description) < 1 { invalidParams.Add(request.NewErrParamMinLen("Description", 1)) } - if s.MaxConcurrency == nil { - invalidParams.Add(request.NewErrParamRequired("MaxConcurrency")) - } if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 { invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1)) } - if s.MaxErrors == nil { - invalidParams.Add(request.NewErrParamRequired("MaxErrors")) - } if s.MaxErrors != nil && len(*s.MaxErrors) < 1 { invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1)) } if s.Name != nil && len(*s.Name) < 3 { invalidParams.Add(request.NewErrParamMinLen("Name", 3)) } - if s.Targets == nil { - invalidParams.Add(request.NewErrParamRequired("Targets")) - } if s.TaskArn == nil { invalidParams.Add(request.NewErrParamRequired("TaskArn")) } @@ -43689,6 +45359,199 @@ func (s *ResumeSessionOutput) SetTokenValue(v string) *ResumeSessionOutput { return s } +// Information about the result of a document review request. +type ReviewInformation struct { + _ struct{} `type:"structure"` + + // The time that the reviewer took action on the document review request. + ReviewedTime *time.Time `type:"timestamp"` + + // The reviewer assigned to take action on the document review request. + Reviewer *string `type:"string"` + + // The current status of the document review request. + Status *string `type:"string" enum:"ReviewStatus"` +} + +// String returns the string representation +func (s ReviewInformation) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReviewInformation) GoString() string { + return s.String() +} + +// SetReviewedTime sets the ReviewedTime field's value. +func (s *ReviewInformation) SetReviewedTime(v time.Time) *ReviewInformation { + s.ReviewedTime = &v + return s +} + +// SetReviewer sets the Reviewer field's value. +func (s *ReviewInformation) SetReviewer(v string) *ReviewInformation { + s.Reviewer = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ReviewInformation) SetStatus(v string) *ReviewInformation { + s.Status = &v + return s +} + +// Information about an Automation runbook (Automation document) used in a runbook +// workflow in Change Manager. +// +// The Automation runbooks specified for the runbook workflow can't run until +// all required approvals for the change request have been received. +type Runbook struct { + _ struct{} `type:"structure"` + + // The name of the Automation runbook (Automation document) used in a runbook + // workflow. + // + // DocumentName is a required field + DocumentName *string `type:"string" required:"true"` + + // The version of the Automation runbook (Automation document) used in a runbook + // workflow. + DocumentVersion *string `type:"string"` + + // The MaxConcurrency value specified by the user when the operation started, + // indicating the maximum number of resources that the runbook operation can + // run on at the same time. + MaxConcurrency *string `min:"1" type:"string"` + + // The MaxErrors value specified by the user when the execution started, indicating + // the maximum number of errors that can occur during the operation before the + // updates are stopped or rolled back. + MaxErrors *string `min:"1" type:"string"` + + // The key-value map of execution parameters, which were supplied when calling + // StartChangeRequestExecution. + Parameters map[string][]*string `min:"1" type:"map"` + + // Information about the AWS Regions and accounts targeted by the current Runbook + // operation. + TargetLocations []*TargetLocation `min:"1" type:"list"` + + // The name of the parameter used as the target resource for the rate-controlled + // runbook workflow. Required if you specify Targets. + TargetParameterName *string `min:"1" type:"string"` + + // A key-value mapping to target resources that the Runbook operation performs + // tasks on. Required if you specify TargetParameterName. + Targets []*Target `type:"list"` +} + +// String returns the string representation +func (s Runbook) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s Runbook) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *Runbook) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "Runbook"} + if s.DocumentName == nil { + invalidParams.Add(request.NewErrParamRequired("DocumentName")) + } + if s.MaxConcurrency != nil && len(*s.MaxConcurrency) < 1 { + invalidParams.Add(request.NewErrParamMinLen("MaxConcurrency", 1)) + } + if s.MaxErrors != nil && len(*s.MaxErrors) < 1 { + invalidParams.Add(request.NewErrParamMinLen("MaxErrors", 1)) + } + if s.Parameters != nil && len(s.Parameters) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Parameters", 1)) + } + if s.TargetLocations != nil && len(s.TargetLocations) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetLocations", 1)) + } + if s.TargetParameterName != nil && len(*s.TargetParameterName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetParameterName", 1)) + } + if s.TargetLocations != nil { + for i, v := range s.TargetLocations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetLocations", i), err.(request.ErrInvalidParams)) + } + } + } + if s.Targets != nil { + for i, v := range s.Targets { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDocumentName sets the DocumentName field's value. +func (s *Runbook) SetDocumentName(v string) *Runbook { + s.DocumentName = &v + return s +} + +// SetDocumentVersion sets the DocumentVersion field's value. +func (s *Runbook) SetDocumentVersion(v string) *Runbook { + s.DocumentVersion = &v + return s +} + +// SetMaxConcurrency sets the MaxConcurrency field's value. +func (s *Runbook) SetMaxConcurrency(v string) *Runbook { + s.MaxConcurrency = &v + return s +} + +// SetMaxErrors sets the MaxErrors field's value. +func (s *Runbook) SetMaxErrors(v string) *Runbook { + s.MaxErrors = &v + return s +} + +// SetParameters sets the Parameters field's value. +func (s *Runbook) SetParameters(v map[string][]*string) *Runbook { + s.Parameters = v + return s +} + +// SetTargetLocations sets the TargetLocations field's value. +func (s *Runbook) SetTargetLocations(v []*TargetLocation) *Runbook { + s.TargetLocations = v + return s +} + +// SetTargetParameterName sets the TargetParameterName field's value. +func (s *Runbook) SetTargetParameterName(v string) *Runbook { + s.TargetParameterName = &v + return s +} + +// SetTargets sets the Targets field's value. +func (s *Runbook) SetTargets(v []*Target) *Runbook { + s.Targets = v + return s +} + // An S3 bucket where you want to store the results of this request. type S3OutputLocation struct { _ struct{} `type:"structure"` @@ -43934,8 +45797,11 @@ type SendCommandInput struct { // Sha1 hashes have been deprecated. DocumentHashType *string `type:"string" enum:"DocumentHashType"` - // Required. The name of the Systems Manager document to run. This can be a - // public document or a custom document. + // The name of the Systems Manager document to run. This can be a public document + // or a custom document. To run a shared document belonging to another account, + // specify the document ARN. For more information about how to use shared documents, + // see Using shared SSM documents (https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-using-shared.html) + // in the AWS Systems Manager User Guide. // // DocumentName is a required field DocumentName *string `type:"string" required:"true"` @@ -44703,7 +46569,11 @@ type StartAutomationExecutionInput struct { // enforces the UUID format, and can't be reused. ClientToken *string `min:"36" type:"string"` - // The name of the Automation document to use for this execution. + // The name of the Systems Manager document to run. This can be a public document + // or a custom document. To run a shared document belonging to another account, + // specify the document ARN. For more information about how to use shared documents, + // see Using shared SSM documents (https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-using-shared.html) + // in the AWS Systems Manager User Guide. // // DocumentName is a required field DocumentName *string `type:"string" required:"true"` @@ -44938,6 +46808,186 @@ func (s *StartAutomationExecutionOutput) SetAutomationExecutionId(v string) *Sta return s } +type StartChangeRequestExecutionInput struct { + _ struct{} `type:"structure"` + + // The name of the change request associated with the runbook workflow to be + // run. + ChangeRequestName *string `min:"1" type:"string"` + + // The user-provided idempotency token. The token must be unique, is case insensitive, + // enforces the UUID format, and can't be reused. + ClientToken *string `min:"36" type:"string"` + + // The name of the change template document to run during the runbook workflow. + // + // DocumentName is a required field + DocumentName *string `type:"string" required:"true"` + + // The version of the change template document to run during the runbook workflow. + DocumentVersion *string `type:"string"` + + // A key-value map of parameters that match the declared parameters in the change + // template document. + Parameters map[string][]*string `min:"1" type:"map"` + + // Information about the Automation runbooks (Automation documents) that are + // run during the runbook workflow. + // + // The Automation runbooks specified for the runbook workflow can't run until + // all required approvals for the change request have been received. + // + // Runbooks is a required field + Runbooks []*Runbook `min:"1" type:"list" required:"true"` + + // The date and time specified in the change request to run the Automation runbooks. + // + // The Automation runbooks specified for the runbook workflow can't run until + // all required approvals for the change request have been received. + ScheduledTime *time.Time `type:"timestamp"` + + // Optional metadata that you assign to a resource. You can specify a maximum + // of five tags for a change request. Tags enable you to categorize a resource + // in different ways, such as by purpose, owner, or environment. For example, + // you might want to tag a change request to identify an environment or target + // AWS Region. In this case, you could specify the following key-value pairs: + // + // * Key=Environment,Value=Production + // + // * Key=Region,Value=us-east-2 + Tags []*Tag `type:"list"` +} + +// String returns the string representation +func (s StartChangeRequestExecutionInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartChangeRequestExecutionInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StartChangeRequestExecutionInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StartChangeRequestExecutionInput"} + if s.ChangeRequestName != nil && len(*s.ChangeRequestName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ChangeRequestName", 1)) + } + if s.ClientToken != nil && len(*s.ClientToken) < 36 { + invalidParams.Add(request.NewErrParamMinLen("ClientToken", 36)) + } + if s.DocumentName == nil { + invalidParams.Add(request.NewErrParamRequired("DocumentName")) + } + if s.Parameters != nil && len(s.Parameters) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Parameters", 1)) + } + if s.Runbooks == nil { + invalidParams.Add(request.NewErrParamRequired("Runbooks")) + } + if s.Runbooks != nil && len(s.Runbooks) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Runbooks", 1)) + } + if s.Runbooks != nil { + for i, v := range s.Runbooks { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Runbooks", i), err.(request.ErrInvalidParams)) + } + } + } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetChangeRequestName sets the ChangeRequestName field's value. +func (s *StartChangeRequestExecutionInput) SetChangeRequestName(v string) *StartChangeRequestExecutionInput { + s.ChangeRequestName = &v + return s +} + +// SetClientToken sets the ClientToken field's value. +func (s *StartChangeRequestExecutionInput) SetClientToken(v string) *StartChangeRequestExecutionInput { + s.ClientToken = &v + return s +} + +// SetDocumentName sets the DocumentName field's value. +func (s *StartChangeRequestExecutionInput) SetDocumentName(v string) *StartChangeRequestExecutionInput { + s.DocumentName = &v + return s +} + +// SetDocumentVersion sets the DocumentVersion field's value. +func (s *StartChangeRequestExecutionInput) SetDocumentVersion(v string) *StartChangeRequestExecutionInput { + s.DocumentVersion = &v + return s +} + +// SetParameters sets the Parameters field's value. +func (s *StartChangeRequestExecutionInput) SetParameters(v map[string][]*string) *StartChangeRequestExecutionInput { + s.Parameters = v + return s +} + +// SetRunbooks sets the Runbooks field's value. +func (s *StartChangeRequestExecutionInput) SetRunbooks(v []*Runbook) *StartChangeRequestExecutionInput { + s.Runbooks = v + return s +} + +// SetScheduledTime sets the ScheduledTime field's value. +func (s *StartChangeRequestExecutionInput) SetScheduledTime(v time.Time) *StartChangeRequestExecutionInput { + s.ScheduledTime = &v + return s +} + +// SetTags sets the Tags field's value. +func (s *StartChangeRequestExecutionInput) SetTags(v []*Tag) *StartChangeRequestExecutionInput { + s.Tags = v + return s +} + +type StartChangeRequestExecutionOutput struct { + _ struct{} `type:"structure"` + + // The unique ID of a runbook workflow operation. (A runbook workflow is a type + // of Automation operation.) + AutomationExecutionId *string `min:"36" type:"string"` +} + +// String returns the string representation +func (s StartChangeRequestExecutionOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StartChangeRequestExecutionOutput) GoString() string { + return s.String() +} + +// SetAutomationExecutionId sets the AutomationExecutionId field's value. +func (s *StartChangeRequestExecutionOutput) SetAutomationExecutionId(v string) *StartChangeRequestExecutionOutput { + s.AutomationExecutionId = &v + return s +} + type StartSessionInput struct { _ struct{} `type:"structure"` @@ -45577,6 +47627,13 @@ func (s *Tag) SetValue(v string) *Tag { // An array of search criteria that targets instances using a Key,Value combination // that you specify. // +// One or more targets must be specified for maintenance window Run Command-type +// tasks. Depending on the task, targets are optional for other maintenance +// window task types (Automation, AWS Lambda, and AWS Step Functions). For more +// information about running tasks that do not specify targets, see Registering +// maintenance window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html) +// in the AWS Systems Manager User Guide. +// // Supported formats include the following. // // * Key=InstanceIds,Values=instance-id-1,instance-id-2,instance-id-3 @@ -45729,14 +47786,15 @@ type TargetLocation struct { // The AWS accounts targeted by the current Automation execution. Accounts []*string `min:"1" type:"list"` - // The Automation execution role used by the currently running Automation. + // The Automation execution role used by the currently running Automation. If + // not specified, the default value is AWS-SystemsManager-AutomationExecutionRole. ExecutionRoleName *string `min:"1" type:"string"` // The AWS Regions targeted by the current Automation execution. Regions []*string `min:"1" type:"list"` // The maximum number of AWS accounts and AWS regions allowed to run the Automation - // concurrently + // concurrently. TargetLocationMaxConcurrency *string `min:"1" type:"string"` // The maximum number of errors allowed before the system stops queueing additional @@ -46617,6 +48675,11 @@ type UpdateAssociationInput struct { // By default, all associations use AUTO mode. SyncCompliance *string `type:"string" enum:"AssociationSyncCompliance"` + // A location is a combination of AWS Regions and AWS accounts where you want + // to run the association. Use this action to update an association in multiple + // Regions and multiple accounts. + TargetLocations []*TargetLocation `min:"1" type:"list"` + // The targets of the association. Targets []*Target `type:"list"` } @@ -46649,11 +48712,24 @@ func (s *UpdateAssociationInput) Validate() error { if s.ScheduleExpression != nil && len(*s.ScheduleExpression) < 1 { invalidParams.Add(request.NewErrParamMinLen("ScheduleExpression", 1)) } + if s.TargetLocations != nil && len(s.TargetLocations) < 1 { + invalidParams.Add(request.NewErrParamMinLen("TargetLocations", 1)) + } if s.OutputLocation != nil { if err := s.OutputLocation.Validate(); err != nil { invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams)) } } + if s.TargetLocations != nil { + for i, v := range s.TargetLocations { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetLocations", i), err.(request.ErrInvalidParams)) + } + } + } if s.Targets != nil { for i, v := range s.Targets { if v == nil { @@ -46755,6 +48831,12 @@ func (s *UpdateAssociationInput) SetSyncCompliance(v string) *UpdateAssociationI return s } +// SetTargetLocations sets the TargetLocations field's value. +func (s *UpdateAssociationInput) SetTargetLocations(v []*TargetLocation) *UpdateAssociationInput { + s.TargetLocations = v + return s +} + // SetTargets sets the Targets field's value. func (s *UpdateAssociationInput) SetTargets(v []*Target) *UpdateAssociationInput { s.Targets = v @@ -47070,6 +49152,86 @@ func (s *UpdateDocumentInput) SetVersionName(v string) *UpdateDocumentInput { return s } +type UpdateDocumentMetadataInput struct { + _ struct{} `type:"structure"` + + // The document review details to update. + // + // DocumentReviews is a required field + DocumentReviews *DocumentReviews `type:"structure" required:"true"` + + // The version of a document to update. + DocumentVersion *string `type:"string"` + + // The name of the document for which a version is to be updated. + // + // Name is a required field + Name *string `type:"string" required:"true"` +} + +// String returns the string representation +func (s UpdateDocumentMetadataInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateDocumentMetadataInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *UpdateDocumentMetadataInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "UpdateDocumentMetadataInput"} + if s.DocumentReviews == nil { + invalidParams.Add(request.NewErrParamRequired("DocumentReviews")) + } + if s.Name == nil { + invalidParams.Add(request.NewErrParamRequired("Name")) + } + if s.DocumentReviews != nil { + if err := s.DocumentReviews.Validate(); err != nil { + invalidParams.AddNested("DocumentReviews", err.(request.ErrInvalidParams)) + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetDocumentReviews sets the DocumentReviews field's value. +func (s *UpdateDocumentMetadataInput) SetDocumentReviews(v *DocumentReviews) *UpdateDocumentMetadataInput { + s.DocumentReviews = v + return s +} + +// SetDocumentVersion sets the DocumentVersion field's value. +func (s *UpdateDocumentMetadataInput) SetDocumentVersion(v string) *UpdateDocumentMetadataInput { + s.DocumentVersion = &v + return s +} + +// SetName sets the Name field's value. +func (s *UpdateDocumentMetadataInput) SetName(v string) *UpdateDocumentMetadataInput { + s.Name = &v + return s +} + +type UpdateDocumentMetadataOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s UpdateDocumentMetadataOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UpdateDocumentMetadataOutput) GoString() string { + return s.String() +} + type UpdateDocumentOutput struct { _ struct{} `type:"structure"` @@ -47135,7 +49297,7 @@ type UpdateMaintenanceWindowInput struct { // For example, the following cron expression schedules a maintenance window // to run the third Tuesday of every month at 11:30 PM. // - // cron(0 30 23 ? * TUE#3 *) + // cron(30 23 ? * TUE#3 *) // // If the schedule offset is 2, the maintenance window won't run until two days // later. @@ -47143,13 +49305,13 @@ type UpdateMaintenanceWindowInput struct { // The time zone that the scheduled maintenance window executions are based // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", - // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database + // "UTC", or "Asia/Seoul". For more information, see the Time Zone Database // (https://www.iana.org/time-zones) on the IANA website. ScheduleTimezone *string `type:"string"` // The time zone that the scheduled maintenance window executions are based // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", - // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database + // "UTC", or "Asia/Seoul". For more information, see the Time Zone Database // (https://www.iana.org/time-zones) on the IANA website. StartDate *string `type:"string"` @@ -47315,7 +49477,7 @@ type UpdateMaintenanceWindowOutput struct { // The time zone that the scheduled maintenance window executions are based // on, in Internet Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", - // "etc/UTC", or "Asia/Seoul". For more information, see the Time Zone Database + // "UTC", or "Asia/Seoul". For more information, see the Time Zone Database // (https://www.iana.org/time-zones) on the IANA website. ScheduleTimezone *string `type:"string"` @@ -47619,10 +49781,20 @@ type UpdateMaintenanceWindowTaskInput struct { // The new MaxConcurrency value you want to specify. MaxConcurrency is the number // of targets that are allowed to run this task in parallel. + // + // For maintenance window tasks without a target specified, you cannot supply + // a value for this option. Instead, the system inserts a placeholder value + // of 1, which may be reported in the response to this command. This value does + // not affect the running of your task and can be ignored. MaxConcurrency *string `min:"1" type:"string"` // The new MaxErrors value to specify. MaxErrors is the maximum number of errors // that are allowed before the task stops being scheduled. + // + // For maintenance window tasks without a target specified, you cannot supply + // a value for this option. Instead, the system inserts a placeholder value + // of 1, which may be reported in the response to this command. This value does + // not affect the running of your task and can be ignored. MaxErrors *string `min:"1" type:"string"` // The new task name to specify. @@ -47654,6 +49826,13 @@ type UpdateMaintenanceWindowTaskInput struct { // The targets (either instances or tags) to modify. Instances are specified // using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified // using Key=tag_name,Values=tag_value. + // + // One or more targets must be specified for maintenance window Run Command-type + // tasks. Depending on the task, targets are optional for other maintenance + // window task types (Automation, AWS Lambda, and AWS Step Functions). For more + // information about running tasks that do not specify targets, see Registering + // maintenance window tasks without targets (https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html) + // in the AWS Systems Manager User Guide. Targets []*Target `type:"list"` // The task ARN to modify. @@ -48058,6 +50237,14 @@ func (s UpdateManagedInstanceRoleOutput) GoString() string { type UpdateOpsItemInput struct { _ struct{} `type:"structure"` + // The time a runbook workflow ended. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualEndTime *time.Time `type:"timestamp"` + + // The time a runbook workflow started. Currently reported only for the OpsItem + // type /aws/changerequest. + ActualStartTime *time.Time `type:"timestamp"` + // Specify a new category for an OpsItem. Category *string `min:"1" type:"string"` @@ -48103,6 +50290,14 @@ type UpdateOpsItemInput struct { // OpsItemId is a required field OpsItemId *string `type:"string" required:"true"` + // The time specified in a change request for a runbook workflow to end. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedEndTime *time.Time `type:"timestamp"` + + // The time specified in a change request for a runbook workflow to start. Currently + // supported only for the OpsItem type /aws/changerequest. + PlannedStartTime *time.Time `type:"timestamp"` + // The importance of this OpsItem in relation to other OpsItems in the system. Priority *int64 `min:"1" type:"integer"` @@ -48172,6 +50367,18 @@ func (s *UpdateOpsItemInput) Validate() error { return nil } +// SetActualEndTime sets the ActualEndTime field's value. +func (s *UpdateOpsItemInput) SetActualEndTime(v time.Time) *UpdateOpsItemInput { + s.ActualEndTime = &v + return s +} + +// SetActualStartTime sets the ActualStartTime field's value. +func (s *UpdateOpsItemInput) SetActualStartTime(v time.Time) *UpdateOpsItemInput { + s.ActualStartTime = &v + return s +} + // SetCategory sets the Category field's value. func (s *UpdateOpsItemInput) SetCategory(v string) *UpdateOpsItemInput { s.Category = &v @@ -48208,6 +50415,18 @@ func (s *UpdateOpsItemInput) SetOpsItemId(v string) *UpdateOpsItemInput { return s } +// SetPlannedEndTime sets the PlannedEndTime field's value. +func (s *UpdateOpsItemInput) SetPlannedEndTime(v time.Time) *UpdateOpsItemInput { + s.PlannedEndTime = &v + return s +} + +// SetPlannedStartTime sets the PlannedStartTime field's value. +func (s *UpdateOpsItemInput) SetPlannedStartTime(v time.Time) *UpdateOpsItemInput { + s.PlannedStartTime = &v + return s +} + // SetPriority sets the Priority field's value. func (s *UpdateOpsItemInput) SetPriority(v int64) *UpdateOpsItemInput { s.Priority = &v @@ -49098,6 +51317,12 @@ const ( // AutomationExecutionFilterKeyTargetResourceGroup is a AutomationExecutionFilterKey enum value AutomationExecutionFilterKeyTargetResourceGroup = "TargetResourceGroup" + + // AutomationExecutionFilterKeyAutomationSubtype is a AutomationExecutionFilterKey enum value + AutomationExecutionFilterKeyAutomationSubtype = "AutomationSubtype" + + // AutomationExecutionFilterKeyOpsItemId is a AutomationExecutionFilterKey enum value + AutomationExecutionFilterKeyOpsItemId = "OpsItemId" ) // AutomationExecutionFilterKey_Values returns all elements of the AutomationExecutionFilterKey enum @@ -49113,6 +51338,8 @@ func AutomationExecutionFilterKey_Values() []string { AutomationExecutionFilterKeyAutomationType, AutomationExecutionFilterKeyTagKey, AutomationExecutionFilterKeyTargetResourceGroup, + AutomationExecutionFilterKeyAutomationSubtype, + AutomationExecutionFilterKeyOpsItemId, } } @@ -49140,6 +51367,36 @@ const ( // AutomationExecutionStatusFailed is a AutomationExecutionStatus enum value AutomationExecutionStatusFailed = "Failed" + + // AutomationExecutionStatusPendingApproval is a AutomationExecutionStatus enum value + AutomationExecutionStatusPendingApproval = "PendingApproval" + + // AutomationExecutionStatusApproved is a AutomationExecutionStatus enum value + AutomationExecutionStatusApproved = "Approved" + + // AutomationExecutionStatusRejected is a AutomationExecutionStatus enum value + AutomationExecutionStatusRejected = "Rejected" + + // AutomationExecutionStatusScheduled is a AutomationExecutionStatus enum value + AutomationExecutionStatusScheduled = "Scheduled" + + // AutomationExecutionStatusRunbookInProgress is a AutomationExecutionStatus enum value + AutomationExecutionStatusRunbookInProgress = "RunbookInProgress" + + // AutomationExecutionStatusPendingChangeCalendarOverride is a AutomationExecutionStatus enum value + AutomationExecutionStatusPendingChangeCalendarOverride = "PendingChangeCalendarOverride" + + // AutomationExecutionStatusChangeCalendarOverrideApproved is a AutomationExecutionStatus enum value + AutomationExecutionStatusChangeCalendarOverrideApproved = "ChangeCalendarOverrideApproved" + + // AutomationExecutionStatusChangeCalendarOverrideRejected is a AutomationExecutionStatus enum value + AutomationExecutionStatusChangeCalendarOverrideRejected = "ChangeCalendarOverrideRejected" + + // AutomationExecutionStatusCompletedWithSuccess is a AutomationExecutionStatus enum value + AutomationExecutionStatusCompletedWithSuccess = "CompletedWithSuccess" + + // AutomationExecutionStatusCompletedWithFailure is a AutomationExecutionStatus enum value + AutomationExecutionStatusCompletedWithFailure = "CompletedWithFailure" ) // AutomationExecutionStatus_Values returns all elements of the AutomationExecutionStatus enum @@ -49153,6 +51410,28 @@ func AutomationExecutionStatus_Values() []string { AutomationExecutionStatusCancelling, AutomationExecutionStatusCancelled, AutomationExecutionStatusFailed, + AutomationExecutionStatusPendingApproval, + AutomationExecutionStatusApproved, + AutomationExecutionStatusRejected, + AutomationExecutionStatusScheduled, + AutomationExecutionStatusRunbookInProgress, + AutomationExecutionStatusPendingChangeCalendarOverride, + AutomationExecutionStatusChangeCalendarOverrideApproved, + AutomationExecutionStatusChangeCalendarOverrideRejected, + AutomationExecutionStatusCompletedWithSuccess, + AutomationExecutionStatusCompletedWithFailure, + } +} + +const ( + // AutomationSubtypeChangeRequest is a AutomationSubtype enum value + AutomationSubtypeChangeRequest = "ChangeRequest" +) + +// AutomationSubtype_Values returns all elements of the AutomationSubtype enum +func AutomationSubtype_Values() []string { + return []string{ + AutomationSubtypeChangeRequest, } } @@ -49512,6 +51791,18 @@ func DocumentHashType_Values() []string { } } +const ( + // DocumentMetadataEnumDocumentReviews is a DocumentMetadataEnum enum value + DocumentMetadataEnumDocumentReviews = "DocumentReviews" +) + +// DocumentMetadataEnum_Values returns all elements of the DocumentMetadataEnum enum +func DocumentMetadataEnum_Values() []string { + return []string{ + DocumentMetadataEnumDocumentReviews, + } +} + const ( // DocumentParameterTypeString is a DocumentParameterType enum value DocumentParameterTypeString = "String" @@ -49540,6 +51831,42 @@ func DocumentPermissionType_Values() []string { } } +const ( + // DocumentReviewActionSendForReview is a DocumentReviewAction enum value + DocumentReviewActionSendForReview = "SendForReview" + + // DocumentReviewActionUpdateReview is a DocumentReviewAction enum value + DocumentReviewActionUpdateReview = "UpdateReview" + + // DocumentReviewActionApprove is a DocumentReviewAction enum value + DocumentReviewActionApprove = "Approve" + + // DocumentReviewActionReject is a DocumentReviewAction enum value + DocumentReviewActionReject = "Reject" +) + +// DocumentReviewAction_Values returns all elements of the DocumentReviewAction enum +func DocumentReviewAction_Values() []string { + return []string{ + DocumentReviewActionSendForReview, + DocumentReviewActionUpdateReview, + DocumentReviewActionApprove, + DocumentReviewActionReject, + } +} + +const ( + // DocumentReviewCommentTypeComment is a DocumentReviewCommentType enum value + DocumentReviewCommentTypeComment = "Comment" +) + +// DocumentReviewCommentType_Values returns all elements of the DocumentReviewCommentType enum +func DocumentReviewCommentType_Values() []string { + return []string{ + DocumentReviewCommentTypeComment, + } +} + // The status of a document. const ( // DocumentStatusCreating is a DocumentStatus enum value @@ -49596,6 +51923,9 @@ const ( // DocumentTypeChangeCalendar is a DocumentType enum value DocumentTypeChangeCalendar = "ChangeCalendar" + + // DocumentTypeAutomationChangeTemplate is a DocumentType enum value + DocumentTypeAutomationChangeTemplate = "Automation.ChangeTemplate" ) // DocumentType_Values returns all elements of the DocumentType enum @@ -49610,6 +51940,7 @@ func DocumentType_Values() []string { DocumentTypeApplicationConfigurationSchema, DocumentTypeDeploymentStrategy, DocumentTypeChangeCalendar, + DocumentTypeAutomationChangeTemplate, } } @@ -50037,6 +52368,30 @@ func OpsItemDataType_Values() []string { } } +const ( + // OpsItemEventFilterKeyOpsItemId is a OpsItemEventFilterKey enum value + OpsItemEventFilterKeyOpsItemId = "OpsItemId" +) + +// OpsItemEventFilterKey_Values returns all elements of the OpsItemEventFilterKey enum +func OpsItemEventFilterKey_Values() []string { + return []string{ + OpsItemEventFilterKeyOpsItemId, + } +} + +const ( + // OpsItemEventFilterOperatorEqual is a OpsItemEventFilterOperator enum value + OpsItemEventFilterOperatorEqual = "Equal" +) + +// OpsItemEventFilterOperator_Values returns all elements of the OpsItemEventFilterOperator enum +func OpsItemEventFilterOperator_Values() []string { + return []string{ + OpsItemEventFilterOperatorEqual, + } +} + const ( // OpsItemFilterKeyStatus is a OpsItemFilterKey enum value OpsItemFilterKeyStatus = "Status" @@ -50062,6 +52417,18 @@ const ( // OpsItemFilterKeyLastModifiedTime is a OpsItemFilterKey enum value OpsItemFilterKeyLastModifiedTime = "LastModifiedTime" + // OpsItemFilterKeyActualStartTime is a OpsItemFilterKey enum value + OpsItemFilterKeyActualStartTime = "ActualStartTime" + + // OpsItemFilterKeyActualEndTime is a OpsItemFilterKey enum value + OpsItemFilterKeyActualEndTime = "ActualEndTime" + + // OpsItemFilterKeyPlannedStartTime is a OpsItemFilterKey enum value + OpsItemFilterKeyPlannedStartTime = "PlannedStartTime" + + // OpsItemFilterKeyPlannedEndTime is a OpsItemFilterKey enum value + OpsItemFilterKeyPlannedEndTime = "PlannedEndTime" + // OpsItemFilterKeyOperationalData is a OpsItemFilterKey enum value OpsItemFilterKeyOperationalData = "OperationalData" @@ -50082,6 +52449,27 @@ const ( // OpsItemFilterKeySeverity is a OpsItemFilterKey enum value OpsItemFilterKeySeverity = "Severity" + + // OpsItemFilterKeyOpsItemType is a OpsItemFilterKey enum value + OpsItemFilterKeyOpsItemType = "OpsItemType" + + // OpsItemFilterKeyChangeRequestByRequesterArn is a OpsItemFilterKey enum value + OpsItemFilterKeyChangeRequestByRequesterArn = "ChangeRequestByRequesterArn" + + // OpsItemFilterKeyChangeRequestByRequesterName is a OpsItemFilterKey enum value + OpsItemFilterKeyChangeRequestByRequesterName = "ChangeRequestByRequesterName" + + // OpsItemFilterKeyChangeRequestByApproverArn is a OpsItemFilterKey enum value + OpsItemFilterKeyChangeRequestByApproverArn = "ChangeRequestByApproverArn" + + // OpsItemFilterKeyChangeRequestByApproverName is a OpsItemFilterKey enum value + OpsItemFilterKeyChangeRequestByApproverName = "ChangeRequestByApproverName" + + // OpsItemFilterKeyChangeRequestByTemplate is a OpsItemFilterKey enum value + OpsItemFilterKeyChangeRequestByTemplate = "ChangeRequestByTemplate" + + // OpsItemFilterKeyChangeRequestByTargetsResourceGroup is a OpsItemFilterKey enum value + OpsItemFilterKeyChangeRequestByTargetsResourceGroup = "ChangeRequestByTargetsResourceGroup" ) // OpsItemFilterKey_Values returns all elements of the OpsItemFilterKey enum @@ -50095,6 +52483,10 @@ func OpsItemFilterKey_Values() []string { OpsItemFilterKeyOpsItemId, OpsItemFilterKeyCreatedTime, OpsItemFilterKeyLastModifiedTime, + OpsItemFilterKeyActualStartTime, + OpsItemFilterKeyActualEndTime, + OpsItemFilterKeyPlannedStartTime, + OpsItemFilterKeyPlannedEndTime, OpsItemFilterKeyOperationalData, OpsItemFilterKeyOperationalDataKey, OpsItemFilterKeyOperationalDataValue, @@ -50102,6 +52494,13 @@ func OpsItemFilterKey_Values() []string { OpsItemFilterKeyAutomationId, OpsItemFilterKeyCategory, OpsItemFilterKeySeverity, + OpsItemFilterKeyOpsItemType, + OpsItemFilterKeyChangeRequestByRequesterArn, + OpsItemFilterKeyChangeRequestByRequesterName, + OpsItemFilterKeyChangeRequestByApproverArn, + OpsItemFilterKeyChangeRequestByApproverName, + OpsItemFilterKeyChangeRequestByTemplate, + OpsItemFilterKeyChangeRequestByTargetsResourceGroup, } } @@ -50138,6 +52537,51 @@ const ( // OpsItemStatusResolved is a OpsItemStatus enum value OpsItemStatusResolved = "Resolved" + + // OpsItemStatusPending is a OpsItemStatus enum value + OpsItemStatusPending = "Pending" + + // OpsItemStatusTimedOut is a OpsItemStatus enum value + OpsItemStatusTimedOut = "TimedOut" + + // OpsItemStatusCancelling is a OpsItemStatus enum value + OpsItemStatusCancelling = "Cancelling" + + // OpsItemStatusCancelled is a OpsItemStatus enum value + OpsItemStatusCancelled = "Cancelled" + + // OpsItemStatusFailed is a OpsItemStatus enum value + OpsItemStatusFailed = "Failed" + + // OpsItemStatusCompletedWithSuccess is a OpsItemStatus enum value + OpsItemStatusCompletedWithSuccess = "CompletedWithSuccess" + + // OpsItemStatusCompletedWithFailure is a OpsItemStatus enum value + OpsItemStatusCompletedWithFailure = "CompletedWithFailure" + + // OpsItemStatusScheduled is a OpsItemStatus enum value + OpsItemStatusScheduled = "Scheduled" + + // OpsItemStatusRunbookInProgress is a OpsItemStatus enum value + OpsItemStatusRunbookInProgress = "RunbookInProgress" + + // OpsItemStatusPendingChangeCalendarOverride is a OpsItemStatus enum value + OpsItemStatusPendingChangeCalendarOverride = "PendingChangeCalendarOverride" + + // OpsItemStatusChangeCalendarOverrideApproved is a OpsItemStatus enum value + OpsItemStatusChangeCalendarOverrideApproved = "ChangeCalendarOverrideApproved" + + // OpsItemStatusChangeCalendarOverrideRejected is a OpsItemStatus enum value + OpsItemStatusChangeCalendarOverrideRejected = "ChangeCalendarOverrideRejected" + + // OpsItemStatusPendingApproval is a OpsItemStatus enum value + OpsItemStatusPendingApproval = "PendingApproval" + + // OpsItemStatusApproved is a OpsItemStatus enum value + OpsItemStatusApproved = "Approved" + + // OpsItemStatusRejected is a OpsItemStatus enum value + OpsItemStatusRejected = "Rejected" ) // OpsItemStatus_Values returns all elements of the OpsItemStatus enum @@ -50146,6 +52590,21 @@ func OpsItemStatus_Values() []string { OpsItemStatusOpen, OpsItemStatusInProgress, OpsItemStatusResolved, + OpsItemStatusPending, + OpsItemStatusTimedOut, + OpsItemStatusCancelling, + OpsItemStatusCancelled, + OpsItemStatusFailed, + OpsItemStatusCompletedWithSuccess, + OpsItemStatusCompletedWithFailure, + OpsItemStatusScheduled, + OpsItemStatusRunbookInProgress, + OpsItemStatusPendingChangeCalendarOverride, + OpsItemStatusChangeCalendarOverrideApproved, + OpsItemStatusChangeCalendarOverrideRejected, + OpsItemStatusPendingApproval, + OpsItemStatusApproved, + OpsItemStatusRejected, } } @@ -50581,6 +53040,30 @@ func ResourceTypeForTagging_Values() []string { } } +const ( + // ReviewStatusApproved is a ReviewStatus enum value + ReviewStatusApproved = "APPROVED" + + // ReviewStatusNotReviewed is a ReviewStatus enum value + ReviewStatusNotReviewed = "NOT_REVIEWED" + + // ReviewStatusPending is a ReviewStatus enum value + ReviewStatusPending = "PENDING" + + // ReviewStatusRejected is a ReviewStatus enum value + ReviewStatusRejected = "REJECTED" +) + +// ReviewStatus_Values returns all elements of the ReviewStatus enum +func ReviewStatus_Values() []string { + return []string{ + ReviewStatusApproved, + ReviewStatusNotReviewed, + ReviewStatusPending, + ReviewStatusRejected, + } +} + const ( // SessionFilterKeyInvokedAfter is a SessionFilterKey enum value SessionFilterKeyInvokedAfter = "InvokedAfter" diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go b/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go index 199710e71..d060be8c8 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ssm/errors.go @@ -53,6 +53,13 @@ const ( // Each association has a limit of 1,000 versions. ErrCodeAssociationVersionLimitExceeded = "AssociationVersionLimitExceeded" + // ErrCodeAutomationDefinitionNotApprovedException for service response error code + // "AutomationDefinitionNotApprovedException". + // + // Indicates that the Change Manager change template used in the change request + // was rejected or is still in a pending state. + ErrCodeAutomationDefinitionNotApprovedException = "AutomationDefinitionNotApprovedException" + // ErrCodeAutomationDefinitionNotFoundException for service response error code // "AutomationDefinitionNotFoundException". // @@ -585,15 +592,15 @@ const ( // "OpsMetadataKeyLimitExceededException". // // The OpsMetadata object exceeds the maximum number of OpsMetadata keys that - // you can assign to an application in AppManager. + // you can assign to an application in Application Manager. ErrCodeOpsMetadataKeyLimitExceededException = "OpsMetadataKeyLimitExceededException" // ErrCodeOpsMetadataLimitExceededException for service response error code // "OpsMetadataLimitExceededException". // // Your account reached the maximum number of OpsMetadata objects allowed by - // AppManager. The maximum is 200 OpsMetadata objects. Delete one or more OpsMetadata - // object and try again. + // Application Manager. The maximum is 200 OpsMetadata objects. Delete one or + // more OpsMetadata object and try again. ErrCodeOpsMetadataLimitExceededException = "OpsMetadataLimitExceededException" // ErrCodeOpsMetadataNotFoundException for service response error code @@ -846,6 +853,7 @@ var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{ "AssociationExecutionDoesNotExist": newErrorAssociationExecutionDoesNotExist, "AssociationLimitExceeded": newErrorAssociationLimitExceeded, "AssociationVersionLimitExceeded": newErrorAssociationVersionLimitExceeded, + "AutomationDefinitionNotApprovedException": newErrorAutomationDefinitionNotApprovedException, "AutomationDefinitionNotFoundException": newErrorAutomationDefinitionNotFoundException, "AutomationDefinitionVersionNotFoundException": newErrorAutomationDefinitionVersionNotFoundException, "AutomationExecutionLimitExceededException": newErrorAutomationExecutionLimitExceededException, diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssm/ssmiface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/ssm/ssmiface/interface.go index b1ebed82e..2a03444a3 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ssm/ssmiface/interface.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ssm/ssmiface/interface.go @@ -533,6 +533,10 @@ type SSMAPI interface { ListComplianceSummariesPages(*ssm.ListComplianceSummariesInput, func(*ssm.ListComplianceSummariesOutput, bool) bool) error ListComplianceSummariesPagesWithContext(aws.Context, *ssm.ListComplianceSummariesInput, func(*ssm.ListComplianceSummariesOutput, bool) bool, ...request.Option) error + ListDocumentMetadataHistory(*ssm.ListDocumentMetadataHistoryInput) (*ssm.ListDocumentMetadataHistoryOutput, error) + ListDocumentMetadataHistoryWithContext(aws.Context, *ssm.ListDocumentMetadataHistoryInput, ...request.Option) (*ssm.ListDocumentMetadataHistoryOutput, error) + ListDocumentMetadataHistoryRequest(*ssm.ListDocumentMetadataHistoryInput) (*request.Request, *ssm.ListDocumentMetadataHistoryOutput) + ListDocumentVersions(*ssm.ListDocumentVersionsInput) (*ssm.ListDocumentVersionsOutput, error) ListDocumentVersionsWithContext(aws.Context, *ssm.ListDocumentVersionsInput, ...request.Option) (*ssm.ListDocumentVersionsOutput, error) ListDocumentVersionsRequest(*ssm.ListDocumentVersionsInput) (*request.Request, *ssm.ListDocumentVersionsOutput) @@ -551,10 +555,20 @@ type SSMAPI interface { ListInventoryEntriesWithContext(aws.Context, *ssm.ListInventoryEntriesInput, ...request.Option) (*ssm.ListInventoryEntriesOutput, error) ListInventoryEntriesRequest(*ssm.ListInventoryEntriesInput) (*request.Request, *ssm.ListInventoryEntriesOutput) + ListOpsItemEvents(*ssm.ListOpsItemEventsInput) (*ssm.ListOpsItemEventsOutput, error) + ListOpsItemEventsWithContext(aws.Context, *ssm.ListOpsItemEventsInput, ...request.Option) (*ssm.ListOpsItemEventsOutput, error) + ListOpsItemEventsRequest(*ssm.ListOpsItemEventsInput) (*request.Request, *ssm.ListOpsItemEventsOutput) + + ListOpsItemEventsPages(*ssm.ListOpsItemEventsInput, func(*ssm.ListOpsItemEventsOutput, bool) bool) error + ListOpsItemEventsPagesWithContext(aws.Context, *ssm.ListOpsItemEventsInput, func(*ssm.ListOpsItemEventsOutput, bool) bool, ...request.Option) error + ListOpsMetadata(*ssm.ListOpsMetadataInput) (*ssm.ListOpsMetadataOutput, error) ListOpsMetadataWithContext(aws.Context, *ssm.ListOpsMetadataInput, ...request.Option) (*ssm.ListOpsMetadataOutput, error) ListOpsMetadataRequest(*ssm.ListOpsMetadataInput) (*request.Request, *ssm.ListOpsMetadataOutput) + ListOpsMetadataPages(*ssm.ListOpsMetadataInput, func(*ssm.ListOpsMetadataOutput, bool) bool) error + ListOpsMetadataPagesWithContext(aws.Context, *ssm.ListOpsMetadataInput, func(*ssm.ListOpsMetadataOutput, bool) bool, ...request.Option) error + ListResourceComplianceSummaries(*ssm.ListResourceComplianceSummariesInput) (*ssm.ListResourceComplianceSummariesOutput, error) ListResourceComplianceSummariesWithContext(aws.Context, *ssm.ListResourceComplianceSummariesInput, ...request.Option) (*ssm.ListResourceComplianceSummariesOutput, error) ListResourceComplianceSummariesRequest(*ssm.ListResourceComplianceSummariesInput) (*request.Request, *ssm.ListResourceComplianceSummariesOutput) @@ -633,6 +647,10 @@ type SSMAPI interface { StartAutomationExecutionWithContext(aws.Context, *ssm.StartAutomationExecutionInput, ...request.Option) (*ssm.StartAutomationExecutionOutput, error) StartAutomationExecutionRequest(*ssm.StartAutomationExecutionInput) (*request.Request, *ssm.StartAutomationExecutionOutput) + StartChangeRequestExecution(*ssm.StartChangeRequestExecutionInput) (*ssm.StartChangeRequestExecutionOutput, error) + StartChangeRequestExecutionWithContext(aws.Context, *ssm.StartChangeRequestExecutionInput, ...request.Option) (*ssm.StartChangeRequestExecutionOutput, error) + StartChangeRequestExecutionRequest(*ssm.StartChangeRequestExecutionInput) (*request.Request, *ssm.StartChangeRequestExecutionOutput) + StartSession(*ssm.StartSessionInput) (*ssm.StartSessionOutput, error) StartSessionWithContext(aws.Context, *ssm.StartSessionInput, ...request.Option) (*ssm.StartSessionOutput, error) StartSessionRequest(*ssm.StartSessionInput) (*request.Request, *ssm.StartSessionOutput) @@ -661,6 +679,10 @@ type SSMAPI interface { UpdateDocumentDefaultVersionWithContext(aws.Context, *ssm.UpdateDocumentDefaultVersionInput, ...request.Option) (*ssm.UpdateDocumentDefaultVersionOutput, error) UpdateDocumentDefaultVersionRequest(*ssm.UpdateDocumentDefaultVersionInput) (*request.Request, *ssm.UpdateDocumentDefaultVersionOutput) + UpdateDocumentMetadata(*ssm.UpdateDocumentMetadataInput) (*ssm.UpdateDocumentMetadataOutput, error) + UpdateDocumentMetadataWithContext(aws.Context, *ssm.UpdateDocumentMetadataInput, ...request.Option) (*ssm.UpdateDocumentMetadataOutput, error) + UpdateDocumentMetadataRequest(*ssm.UpdateDocumentMetadataInput) (*request.Request, *ssm.UpdateDocumentMetadataOutput) + UpdateMaintenanceWindow(*ssm.UpdateMaintenanceWindowInput) (*ssm.UpdateMaintenanceWindowOutput, error) UpdateMaintenanceWindowWithContext(aws.Context, *ssm.UpdateMaintenanceWindowInput, ...request.Option) (*ssm.UpdateMaintenanceWindowOutput, error) UpdateMaintenanceWindowRequest(*ssm.UpdateMaintenanceWindowInput) (*request.Request, *ssm.UpdateMaintenanceWindowOutput) diff --git a/vendor/github.com/aws/aws-sdk-go/service/sso/api.go b/vendor/github.com/aws/aws-sdk-go/service/sso/api.go new file mode 100644 index 000000000..4498f285e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sso/api.go @@ -0,0 +1,1210 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package sso + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/awsutil" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/restjson" +) + +const opGetRoleCredentials = "GetRoleCredentials" + +// GetRoleCredentialsRequest generates a "aws/request.Request" representing the +// client's request for the GetRoleCredentials operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See GetRoleCredentials for more information on using the GetRoleCredentials +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the GetRoleCredentialsRequest method. +// req, resp := client.GetRoleCredentialsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/GetRoleCredentials +func (c *SSO) GetRoleCredentialsRequest(input *GetRoleCredentialsInput) (req *request.Request, output *GetRoleCredentialsOutput) { + op := &request.Operation{ + Name: opGetRoleCredentials, + HTTPMethod: "GET", + HTTPPath: "/federation/credentials", + } + + if input == nil { + input = &GetRoleCredentialsInput{} + } + + output = &GetRoleCredentialsOutput{} + req = c.newRequest(op, input, output) + req.Config.Credentials = credentials.AnonymousCredentials + return +} + +// GetRoleCredentials API operation for AWS Single Sign-On. +// +// Returns the STS short-term credentials for a given role name that is assigned +// to the user. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Single Sign-On's +// API operation GetRoleCredentials for usage and error information. +// +// Returned Error Types: +// * InvalidRequestException +// Indicates that a problem occurred with the input to the request. For example, +// a required parameter might be missing or out of range. +// +// * UnauthorizedException +// Indicates that the request is not authorized. This can happen due to an invalid +// access token in the request. +// +// * TooManyRequestsException +// Indicates that the request is being made too frequently and is more than +// what the server can handle. +// +// * ResourceNotFoundException +// The specified resource doesn't exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/GetRoleCredentials +func (c *SSO) GetRoleCredentials(input *GetRoleCredentialsInput) (*GetRoleCredentialsOutput, error) { + req, out := c.GetRoleCredentialsRequest(input) + return out, req.Send() +} + +// GetRoleCredentialsWithContext is the same as GetRoleCredentials with the addition of +// the ability to pass a context and additional request options. +// +// See GetRoleCredentials for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSO) GetRoleCredentialsWithContext(ctx aws.Context, input *GetRoleCredentialsInput, opts ...request.Option) (*GetRoleCredentialsOutput, error) { + req, out := c.GetRoleCredentialsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opListAccountRoles = "ListAccountRoles" + +// ListAccountRolesRequest generates a "aws/request.Request" representing the +// client's request for the ListAccountRoles operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListAccountRoles for more information on using the ListAccountRoles +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListAccountRolesRequest method. +// req, resp := client.ListAccountRolesRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccountRoles +func (c *SSO) ListAccountRolesRequest(input *ListAccountRolesInput) (req *request.Request, output *ListAccountRolesOutput) { + op := &request.Operation{ + Name: opListAccountRoles, + HTTPMethod: "GET", + HTTPPath: "/assignment/roles", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListAccountRolesInput{} + } + + output = &ListAccountRolesOutput{} + req = c.newRequest(op, input, output) + req.Config.Credentials = credentials.AnonymousCredentials + return +} + +// ListAccountRoles API operation for AWS Single Sign-On. +// +// Lists all roles that are assigned to the user for a given AWS account. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Single Sign-On's +// API operation ListAccountRoles for usage and error information. +// +// Returned Error Types: +// * InvalidRequestException +// Indicates that a problem occurred with the input to the request. For example, +// a required parameter might be missing or out of range. +// +// * UnauthorizedException +// Indicates that the request is not authorized. This can happen due to an invalid +// access token in the request. +// +// * TooManyRequestsException +// Indicates that the request is being made too frequently and is more than +// what the server can handle. +// +// * ResourceNotFoundException +// The specified resource doesn't exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccountRoles +func (c *SSO) ListAccountRoles(input *ListAccountRolesInput) (*ListAccountRolesOutput, error) { + req, out := c.ListAccountRolesRequest(input) + return out, req.Send() +} + +// ListAccountRolesWithContext is the same as ListAccountRoles with the addition of +// the ability to pass a context and additional request options. +// +// See ListAccountRoles for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSO) ListAccountRolesWithContext(ctx aws.Context, input *ListAccountRolesInput, opts ...request.Option) (*ListAccountRolesOutput, error) { + req, out := c.ListAccountRolesRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListAccountRolesPages iterates over the pages of a ListAccountRoles operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListAccountRoles method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListAccountRoles operation. +// pageNum := 0 +// err := client.ListAccountRolesPages(params, +// func(page *sso.ListAccountRolesOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *SSO) ListAccountRolesPages(input *ListAccountRolesInput, fn func(*ListAccountRolesOutput, bool) bool) error { + return c.ListAccountRolesPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListAccountRolesPagesWithContext same as ListAccountRolesPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSO) ListAccountRolesPagesWithContext(ctx aws.Context, input *ListAccountRolesInput, fn func(*ListAccountRolesOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListAccountRolesInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListAccountRolesRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListAccountRolesOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opListAccounts = "ListAccounts" + +// ListAccountsRequest generates a "aws/request.Request" representing the +// client's request for the ListAccounts operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListAccounts for more information on using the ListAccounts +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListAccountsRequest method. +// req, resp := client.ListAccountsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccounts +func (c *SSO) ListAccountsRequest(input *ListAccountsInput) (req *request.Request, output *ListAccountsOutput) { + op := &request.Operation{ + Name: opListAccounts, + HTTPMethod: "GET", + HTTPPath: "/assignment/accounts", + Paginator: &request.Paginator{ + InputTokens: []string{"nextToken"}, + OutputTokens: []string{"nextToken"}, + LimitToken: "maxResults", + TruncationToken: "", + }, + } + + if input == nil { + input = &ListAccountsInput{} + } + + output = &ListAccountsOutput{} + req = c.newRequest(op, input, output) + req.Config.Credentials = credentials.AnonymousCredentials + return +} + +// ListAccounts API operation for AWS Single Sign-On. +// +// Lists all AWS accounts assigned to the user. These AWS accounts are assigned +// by the administrator of the account. For more information, see Assign User +// Access (https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#assignusers) +// in the AWS SSO User Guide. This operation returns a paginated response. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Single Sign-On's +// API operation ListAccounts for usage and error information. +// +// Returned Error Types: +// * InvalidRequestException +// Indicates that a problem occurred with the input to the request. For example, +// a required parameter might be missing or out of range. +// +// * UnauthorizedException +// Indicates that the request is not authorized. This can happen due to an invalid +// access token in the request. +// +// * TooManyRequestsException +// Indicates that the request is being made too frequently and is more than +// what the server can handle. +// +// * ResourceNotFoundException +// The specified resource doesn't exist. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/ListAccounts +func (c *SSO) ListAccounts(input *ListAccountsInput) (*ListAccountsOutput, error) { + req, out := c.ListAccountsRequest(input) + return out, req.Send() +} + +// ListAccountsWithContext is the same as ListAccounts with the addition of +// the ability to pass a context and additional request options. +// +// See ListAccounts for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSO) ListAccountsWithContext(ctx aws.Context, input *ListAccountsInput, opts ...request.Option) (*ListAccountsOutput, error) { + req, out := c.ListAccountsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// ListAccountsPages iterates over the pages of a ListAccounts operation, +// calling the "fn" function with the response data for each page. To stop +// iterating, return false from the fn function. +// +// See ListAccounts method for more information on how to use this operation. +// +// Note: This operation can generate multiple requests to a service. +// +// // Example iterating over at most 3 pages of a ListAccounts operation. +// pageNum := 0 +// err := client.ListAccountsPages(params, +// func(page *sso.ListAccountsOutput, lastPage bool) bool { +// pageNum++ +// fmt.Println(page) +// return pageNum <= 3 +// }) +// +func (c *SSO) ListAccountsPages(input *ListAccountsInput, fn func(*ListAccountsOutput, bool) bool) error { + return c.ListAccountsPagesWithContext(aws.BackgroundContext(), input, fn) +} + +// ListAccountsPagesWithContext same as ListAccountsPages except +// it takes a Context and allows setting request options on the pages. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSO) ListAccountsPagesWithContext(ctx aws.Context, input *ListAccountsInput, fn func(*ListAccountsOutput, bool) bool, opts ...request.Option) error { + p := request.Pagination{ + NewRequest: func() (*request.Request, error) { + var inCpy *ListAccountsInput + if input != nil { + tmp := *input + inCpy = &tmp + } + req, _ := c.ListAccountsRequest(inCpy) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return req, nil + }, + } + + for p.Next() { + if !fn(p.Page().(*ListAccountsOutput), !p.HasNextPage()) { + break + } + } + + return p.Err() +} + +const opLogout = "Logout" + +// LogoutRequest generates a "aws/request.Request" representing the +// client's request for the Logout operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See Logout for more information on using the Logout +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the LogoutRequest method. +// req, resp := client.LogoutRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/Logout +func (c *SSO) LogoutRequest(input *LogoutInput) (req *request.Request, output *LogoutOutput) { + op := &request.Operation{ + Name: opLogout, + HTTPMethod: "POST", + HTTPPath: "/logout", + } + + if input == nil { + input = &LogoutInput{} + } + + output = &LogoutOutput{} + req = c.newRequest(op, input, output) + req.Config.Credentials = credentials.AnonymousCredentials + req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + return +} + +// Logout API operation for AWS Single Sign-On. +// +// Removes the client- and server-side session that is associated with the user. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Single Sign-On's +// API operation Logout for usage and error information. +// +// Returned Error Types: +// * InvalidRequestException +// Indicates that a problem occurred with the input to the request. For example, +// a required parameter might be missing or out of range. +// +// * UnauthorizedException +// Indicates that the request is not authorized. This can happen due to an invalid +// access token in the request. +// +// * TooManyRequestsException +// Indicates that the request is being made too frequently and is more than +// what the server can handle. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10/Logout +func (c *SSO) Logout(input *LogoutInput) (*LogoutOutput, error) { + req, out := c.LogoutRequest(input) + return out, req.Send() +} + +// LogoutWithContext is the same as Logout with the addition of +// the ability to pass a context and additional request options. +// +// See Logout for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SSO) LogoutWithContext(ctx aws.Context, input *LogoutInput, opts ...request.Option) (*LogoutOutput, error) { + req, out := c.LogoutRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +// Provides information about your AWS account. +type AccountInfo struct { + _ struct{} `type:"structure"` + + // The identifier of the AWS account that is assigned to the user. + AccountId *string `locationName:"accountId" type:"string"` + + // The display name of the AWS account that is assigned to the user. + AccountName *string `locationName:"accountName" type:"string"` + + // The email address of the AWS account that is assigned to the user. + EmailAddress *string `locationName:"emailAddress" min:"1" type:"string"` +} + +// String returns the string representation +func (s AccountInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s AccountInfo) GoString() string { + return s.String() +} + +// SetAccountId sets the AccountId field's value. +func (s *AccountInfo) SetAccountId(v string) *AccountInfo { + s.AccountId = &v + return s +} + +// SetAccountName sets the AccountName field's value. +func (s *AccountInfo) SetAccountName(v string) *AccountInfo { + s.AccountName = &v + return s +} + +// SetEmailAddress sets the EmailAddress field's value. +func (s *AccountInfo) SetEmailAddress(v string) *AccountInfo { + s.EmailAddress = &v + return s +} + +type GetRoleCredentialsInput struct { + _ struct{} `type:"structure"` + + // The token issued by the CreateToken API call. For more information, see CreateToken + // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) + // in the AWS SSO OIDC API Reference Guide. + // + // AccessToken is a required field + AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"` + + // The identifier for the AWS account that is assigned to the user. + // + // AccountId is a required field + AccountId *string `location:"querystring" locationName:"account_id" type:"string" required:"true"` + + // The friendly name of the role that is assigned to the user. + // + // RoleName is a required field + RoleName *string `location:"querystring" locationName:"role_name" type:"string" required:"true"` +} + +// String returns the string representation +func (s GetRoleCredentialsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetRoleCredentialsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *GetRoleCredentialsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "GetRoleCredentialsInput"} + if s.AccessToken == nil { + invalidParams.Add(request.NewErrParamRequired("AccessToken")) + } + if s.AccountId == nil { + invalidParams.Add(request.NewErrParamRequired("AccountId")) + } + if s.RoleName == nil { + invalidParams.Add(request.NewErrParamRequired("RoleName")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessToken sets the AccessToken field's value. +func (s *GetRoleCredentialsInput) SetAccessToken(v string) *GetRoleCredentialsInput { + s.AccessToken = &v + return s +} + +// SetAccountId sets the AccountId field's value. +func (s *GetRoleCredentialsInput) SetAccountId(v string) *GetRoleCredentialsInput { + s.AccountId = &v + return s +} + +// SetRoleName sets the RoleName field's value. +func (s *GetRoleCredentialsInput) SetRoleName(v string) *GetRoleCredentialsInput { + s.RoleName = &v + return s +} + +type GetRoleCredentialsOutput struct { + _ struct{} `type:"structure"` + + // The credentials for the role that is assigned to the user. + RoleCredentials *RoleCredentials `locationName:"roleCredentials" type:"structure"` +} + +// String returns the string representation +func (s GetRoleCredentialsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s GetRoleCredentialsOutput) GoString() string { + return s.String() +} + +// SetRoleCredentials sets the RoleCredentials field's value. +func (s *GetRoleCredentialsOutput) SetRoleCredentials(v *RoleCredentials) *GetRoleCredentialsOutput { + s.RoleCredentials = v + return s +} + +// Indicates that a problem occurred with the input to the request. For example, +// a required parameter might be missing or out of range. +type InvalidRequestException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s InvalidRequestException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s InvalidRequestException) GoString() string { + return s.String() +} + +func newErrorInvalidRequestException(v protocol.ResponseMetadata) error { + return &InvalidRequestException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *InvalidRequestException) Code() string { + return "InvalidRequestException" +} + +// Message returns the exception's message. +func (s *InvalidRequestException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *InvalidRequestException) OrigErr() error { + return nil +} + +func (s *InvalidRequestException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *InvalidRequestException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *InvalidRequestException) RequestID() string { + return s.RespMetadata.RequestID +} + +type ListAccountRolesInput struct { + _ struct{} `type:"structure"` + + // The token issued by the CreateToken API call. For more information, see CreateToken + // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) + // in the AWS SSO OIDC API Reference Guide. + // + // AccessToken is a required field + AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"` + + // The identifier for the AWS account that is assigned to the user. + // + // AccountId is a required field + AccountId *string `location:"querystring" locationName:"account_id" type:"string" required:"true"` + + // The number of items that clients can request per page. + MaxResults *int64 `location:"querystring" locationName:"max_result" min:"1" type:"integer"` + + // The page token from the previous response output when you request subsequent + // pages. + NextToken *string `location:"querystring" locationName:"next_token" type:"string"` +} + +// String returns the string representation +func (s ListAccountRolesInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListAccountRolesInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListAccountRolesInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListAccountRolesInput"} + if s.AccessToken == nil { + invalidParams.Add(request.NewErrParamRequired("AccessToken")) + } + if s.AccountId == nil { + invalidParams.Add(request.NewErrParamRequired("AccountId")) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessToken sets the AccessToken field's value. +func (s *ListAccountRolesInput) SetAccessToken(v string) *ListAccountRolesInput { + s.AccessToken = &v + return s +} + +// SetAccountId sets the AccountId field's value. +func (s *ListAccountRolesInput) SetAccountId(v string) *ListAccountRolesInput { + s.AccountId = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListAccountRolesInput) SetMaxResults(v int64) *ListAccountRolesInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListAccountRolesInput) SetNextToken(v string) *ListAccountRolesInput { + s.NextToken = &v + return s +} + +type ListAccountRolesOutput struct { + _ struct{} `type:"structure"` + + // The page token client that is used to retrieve the list of accounts. + NextToken *string `locationName:"nextToken" type:"string"` + + // A paginated response with the list of roles and the next token if more results + // are available. + RoleList []*RoleInfo `locationName:"roleList" type:"list"` +} + +// String returns the string representation +func (s ListAccountRolesOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListAccountRolesOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListAccountRolesOutput) SetNextToken(v string) *ListAccountRolesOutput { + s.NextToken = &v + return s +} + +// SetRoleList sets the RoleList field's value. +func (s *ListAccountRolesOutput) SetRoleList(v []*RoleInfo) *ListAccountRolesOutput { + s.RoleList = v + return s +} + +type ListAccountsInput struct { + _ struct{} `type:"structure"` + + // The token issued by the CreateToken API call. For more information, see CreateToken + // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) + // in the AWS SSO OIDC API Reference Guide. + // + // AccessToken is a required field + AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"` + + // This is the number of items clients can request per page. + MaxResults *int64 `location:"querystring" locationName:"max_result" min:"1" type:"integer"` + + // (Optional) When requesting subsequent pages, this is the page token from + // the previous response output. + NextToken *string `location:"querystring" locationName:"next_token" type:"string"` +} + +// String returns the string representation +func (s ListAccountsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListAccountsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListAccountsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListAccountsInput"} + if s.AccessToken == nil { + invalidParams.Add(request.NewErrParamRequired("AccessToken")) + } + if s.MaxResults != nil && *s.MaxResults < 1 { + invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessToken sets the AccessToken field's value. +func (s *ListAccountsInput) SetAccessToken(v string) *ListAccountsInput { + s.AccessToken = &v + return s +} + +// SetMaxResults sets the MaxResults field's value. +func (s *ListAccountsInput) SetMaxResults(v int64) *ListAccountsInput { + s.MaxResults = &v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListAccountsInput) SetNextToken(v string) *ListAccountsInput { + s.NextToken = &v + return s +} + +type ListAccountsOutput struct { + _ struct{} `type:"structure"` + + // A paginated response with the list of account information and the next token + // if more results are available. + AccountList []*AccountInfo `locationName:"accountList" type:"list"` + + // The page token client that is used to retrieve the list of accounts. + NextToken *string `locationName:"nextToken" type:"string"` +} + +// String returns the string representation +func (s ListAccountsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListAccountsOutput) GoString() string { + return s.String() +} + +// SetAccountList sets the AccountList field's value. +func (s *ListAccountsOutput) SetAccountList(v []*AccountInfo) *ListAccountsOutput { + s.AccountList = v + return s +} + +// SetNextToken sets the NextToken field's value. +func (s *ListAccountsOutput) SetNextToken(v string) *ListAccountsOutput { + s.NextToken = &v + return s +} + +type LogoutInput struct { + _ struct{} `type:"structure"` + + // The token issued by the CreateToken API call. For more information, see CreateToken + // (https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html) + // in the AWS SSO OIDC API Reference Guide. + // + // AccessToken is a required field + AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"` +} + +// String returns the string representation +func (s LogoutInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LogoutInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *LogoutInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "LogoutInput"} + if s.AccessToken == nil { + invalidParams.Add(request.NewErrParamRequired("AccessToken")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAccessToken sets the AccessToken field's value. +func (s *LogoutInput) SetAccessToken(v string) *LogoutInput { + s.AccessToken = &v + return s +} + +type LogoutOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s LogoutOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s LogoutOutput) GoString() string { + return s.String() +} + +// The specified resource doesn't exist. +type ResourceNotFoundException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s ResourceNotFoundException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ResourceNotFoundException) GoString() string { + return s.String() +} + +func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error { + return &ResourceNotFoundException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *ResourceNotFoundException) Code() string { + return "ResourceNotFoundException" +} + +// Message returns the exception's message. +func (s *ResourceNotFoundException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *ResourceNotFoundException) OrigErr() error { + return nil +} + +func (s *ResourceNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *ResourceNotFoundException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *ResourceNotFoundException) RequestID() string { + return s.RespMetadata.RequestID +} + +// Provides information about the role credentials that are assigned to the +// user. +type RoleCredentials struct { + _ struct{} `type:"structure"` + + // The identifier used for the temporary security credentials. For more information, + // see Using Temporary Security Credentials to Request Access to AWS Resources + // (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) + // in the AWS IAM User Guide. + AccessKeyId *string `locationName:"accessKeyId" type:"string"` + + // The date on which temporary security credentials expire. + Expiration *int64 `locationName:"expiration" type:"long"` + + // The key that is used to sign the request. For more information, see Using + // Temporary Security Credentials to Request Access to AWS Resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) + // in the AWS IAM User Guide. + SecretAccessKey *string `locationName:"secretAccessKey" type:"string" sensitive:"true"` + + // The token used for temporary credentials. For more information, see Using + // Temporary Security Credentials to Request Access to AWS Resources (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) + // in the AWS IAM User Guide. + SessionToken *string `locationName:"sessionToken" type:"string" sensitive:"true"` +} + +// String returns the string representation +func (s RoleCredentials) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RoleCredentials) GoString() string { + return s.String() +} + +// SetAccessKeyId sets the AccessKeyId field's value. +func (s *RoleCredentials) SetAccessKeyId(v string) *RoleCredentials { + s.AccessKeyId = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *RoleCredentials) SetExpiration(v int64) *RoleCredentials { + s.Expiration = &v + return s +} + +// SetSecretAccessKey sets the SecretAccessKey field's value. +func (s *RoleCredentials) SetSecretAccessKey(v string) *RoleCredentials { + s.SecretAccessKey = &v + return s +} + +// SetSessionToken sets the SessionToken field's value. +func (s *RoleCredentials) SetSessionToken(v string) *RoleCredentials { + s.SessionToken = &v + return s +} + +// Provides information about the role that is assigned to the user. +type RoleInfo struct { + _ struct{} `type:"structure"` + + // The identifier of the AWS account assigned to the user. + AccountId *string `locationName:"accountId" type:"string"` + + // The friendly name of the role that is assigned to the user. + RoleName *string `locationName:"roleName" type:"string"` +} + +// String returns the string representation +func (s RoleInfo) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RoleInfo) GoString() string { + return s.String() +} + +// SetAccountId sets the AccountId field's value. +func (s *RoleInfo) SetAccountId(v string) *RoleInfo { + s.AccountId = &v + return s +} + +// SetRoleName sets the RoleName field's value. +func (s *RoleInfo) SetRoleName(v string) *RoleInfo { + s.RoleName = &v + return s +} + +// Indicates that the request is being made too frequently and is more than +// what the server can handle. +type TooManyRequestsException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s TooManyRequestsException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s TooManyRequestsException) GoString() string { + return s.String() +} + +func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error { + return &TooManyRequestsException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *TooManyRequestsException) Code() string { + return "TooManyRequestsException" +} + +// Message returns the exception's message. +func (s *TooManyRequestsException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *TooManyRequestsException) OrigErr() error { + return nil +} + +func (s *TooManyRequestsException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *TooManyRequestsException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *TooManyRequestsException) RequestID() string { + return s.RespMetadata.RequestID +} + +// Indicates that the request is not authorized. This can happen due to an invalid +// access token in the request. +type UnauthorizedException struct { + _ struct{} `type:"structure"` + RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` + + Message_ *string `locationName:"message" type:"string"` +} + +// String returns the string representation +func (s UnauthorizedException) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s UnauthorizedException) GoString() string { + return s.String() +} + +func newErrorUnauthorizedException(v protocol.ResponseMetadata) error { + return &UnauthorizedException{ + RespMetadata: v, + } +} + +// Code returns the exception type name. +func (s *UnauthorizedException) Code() string { + return "UnauthorizedException" +} + +// Message returns the exception's message. +func (s *UnauthorizedException) Message() string { + if s.Message_ != nil { + return *s.Message_ + } + return "" +} + +// OrigErr always returns nil, satisfies awserr.Error interface. +func (s *UnauthorizedException) OrigErr() error { + return nil +} + +func (s *UnauthorizedException) Error() string { + return fmt.Sprintf("%s: %s", s.Code(), s.Message()) +} + +// Status code returns the HTTP status code for the request's response error. +func (s *UnauthorizedException) StatusCode() int { + return s.RespMetadata.StatusCode +} + +// RequestID returns the service's response RequestID for request. +func (s *UnauthorizedException) RequestID() string { + return s.RespMetadata.RequestID +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go b/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go new file mode 100644 index 000000000..92d82b2af --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go @@ -0,0 +1,44 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package sso provides the client and types for making API +// requests to AWS Single Sign-On. +// +// AWS Single Sign-On Portal is a web service that makes it easy for you to +// assign user access to AWS SSO resources such as the user portal. Users can +// get AWS account applications and roles assigned to them and get federated +// into the application. +// +// For general information about AWS SSO, see What is AWS Single Sign-On? (https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) +// in the AWS SSO User Guide. +// +// This API reference guide describes the AWS SSO Portal operations that you +// can call programatically and includes detailed information on data types +// and errors. +// +// AWS provides SDKs that consist of libraries and sample code for various programming +// languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs +// provide a convenient way to create programmatic access to AWS SSO and other +// AWS services. For more information about the AWS SDKs, including how to download +// and install them, see Tools for Amazon Web Services (http://aws.amazon.com/tools/). +// +// See https://docs.aws.amazon.com/goto/WebAPI/sso-2019-06-10 for more information on this service. +// +// See sso package documentation for more information. +// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/ +// +// Using the Client +// +// To contact AWS Single Sign-On with the SDK use the New function to create +// a new service client. With that client you can make API requests to the service. +// These clients are safe to use concurrently. +// +// See the SDK's documentation for more information on how to use the SDK. +// https://docs.aws.amazon.com/sdk-for-go/api/ +// +// See aws.Config documentation for more information on configuring SDK clients. +// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config +// +// See the AWS Single Sign-On client SSO for more +// information on creating client for this service. +// https://docs.aws.amazon.com/sdk-for-go/api/service/sso/#New +package sso diff --git a/vendor/github.com/aws/aws-sdk-go/service/sso/errors.go b/vendor/github.com/aws/aws-sdk-go/service/sso/errors.go new file mode 100644 index 000000000..77a6792e3 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sso/errors.go @@ -0,0 +1,44 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package sso + +import ( + "github.com/aws/aws-sdk-go/private/protocol" +) + +const ( + + // ErrCodeInvalidRequestException for service response error code + // "InvalidRequestException". + // + // Indicates that a problem occurred with the input to the request. For example, + // a required parameter might be missing or out of range. + ErrCodeInvalidRequestException = "InvalidRequestException" + + // ErrCodeResourceNotFoundException for service response error code + // "ResourceNotFoundException". + // + // The specified resource doesn't exist. + ErrCodeResourceNotFoundException = "ResourceNotFoundException" + + // ErrCodeTooManyRequestsException for service response error code + // "TooManyRequestsException". + // + // Indicates that the request is being made too frequently and is more than + // what the server can handle. + ErrCodeTooManyRequestsException = "TooManyRequestsException" + + // ErrCodeUnauthorizedException for service response error code + // "UnauthorizedException". + // + // Indicates that the request is not authorized. This can happen due to an invalid + // access token in the request. + ErrCodeUnauthorizedException = "UnauthorizedException" +) + +var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{ + "InvalidRequestException": newErrorInvalidRequestException, + "ResourceNotFoundException": newErrorResourceNotFoundException, + "TooManyRequestsException": newErrorTooManyRequestsException, + "UnauthorizedException": newErrorUnauthorizedException, +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sso/service.go b/vendor/github.com/aws/aws-sdk-go/service/sso/service.go new file mode 100644 index 000000000..35175331f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sso/service.go @@ -0,0 +1,104 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +package sso + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/client" + "github.com/aws/aws-sdk-go/aws/client/metadata" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/signer/v4" + "github.com/aws/aws-sdk-go/private/protocol" + "github.com/aws/aws-sdk-go/private/protocol/restjson" +) + +// SSO provides the API operation methods for making requests to +// AWS Single Sign-On. See this package's package overview docs +// for details on the service. +// +// SSO methods are safe to use concurrently. It is not safe to +// modify mutate any of the struct's properties though. +type SSO struct { + *client.Client +} + +// Used for custom client initialization logic +var initClient func(*client.Client) + +// Used for custom request initialization logic +var initRequest func(*request.Request) + +// Service information constants +const ( + ServiceName = "SSO" // Name of service. + EndpointsID = "portal.sso" // ID to lookup a service endpoint with. + ServiceID = "SSO" // ServiceID is a unique identifier of a specific service. +) + +// New creates a new instance of the SSO client with a session. +// If additional configuration is needed for the client instance use the optional +// aws.Config parameter to add your extra config. +// +// Example: +// mySession := session.Must(session.NewSession()) +// +// // Create a SSO client from just a session. +// svc := sso.New(mySession) +// +// // Create a SSO client with additional configuration +// svc := sso.New(mySession, aws.NewConfig().WithRegion("us-west-2")) +func New(p client.ConfigProvider, cfgs ...*aws.Config) *SSO { + c := p.ClientConfig(EndpointsID, cfgs...) + if c.SigningNameDerived || len(c.SigningName) == 0 { + c.SigningName = "awsssoportal" + } + return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) +} + +// newClient creates, initializes and returns a new service client instance. +func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *SSO { + svc := &SSO{ + Client: client.New( + cfg, + metadata.ClientInfo{ + ServiceName: ServiceName, + ServiceID: ServiceID, + SigningName: signingName, + SigningRegion: signingRegion, + PartitionID: partitionID, + Endpoint: endpoint, + APIVersion: "2019-06-10", + }, + handlers, + ), + } + + // Handlers + svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler) + svc.Handlers.Build.PushBackNamed(restjson.BuildHandler) + svc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler) + svc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler) + svc.Handlers.UnmarshalError.PushBackNamed( + protocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(), + ) + + // Run custom client initialization if present + if initClient != nil { + initClient(svc.Client) + } + + return svc +} + +// newRequest creates a new request for a SSO operation and runs any +// custom request initialization. +func (c *SSO) newRequest(op *request.Operation, params, data interface{}) *request.Request { + req := c.NewRequest(op, params, data) + + // Run custom request initialization if present + if initRequest != nil { + initRequest(req) + } + + return req +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go new file mode 100644 index 000000000..4cac247c1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go @@ -0,0 +1,86 @@ +// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. + +// Package ssoiface provides an interface to enable mocking the AWS Single Sign-On service client +// for testing your code. +// +// It is important to note that this interface will have breaking changes +// when the service model is updated and adds new API operations, paginators, +// and waiters. +package ssoiface + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/sso" +) + +// SSOAPI provides an interface to enable mocking the +// sso.SSO service client's API operation, +// paginators, and waiters. This make unit testing your code that calls out +// to the SDK's service client's calls easier. +// +// The best way to use this interface is so the SDK's service client's calls +// can be stubbed out for unit testing your code with the SDK without needing +// to inject custom request handlers into the SDK's request pipeline. +// +// // myFunc uses an SDK service client to make a request to +// // AWS Single Sign-On. +// func myFunc(svc ssoiface.SSOAPI) bool { +// // Make svc.GetRoleCredentials request +// } +// +// func main() { +// sess := session.New() +// svc := sso.New(sess) +// +// myFunc(svc) +// } +// +// In your _test.go file: +// +// // Define a mock struct to be used in your unit tests of myFunc. +// type mockSSOClient struct { +// ssoiface.SSOAPI +// } +// func (m *mockSSOClient) GetRoleCredentials(input *sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error) { +// // mock response/functionality +// } +// +// func TestMyFunc(t *testing.T) { +// // Setup Test +// mockSvc := &mockSSOClient{} +// +// myfunc(mockSvc) +// +// // Verify myFunc's functionality +// } +// +// It is important to note that this interface will have breaking changes +// when the service model is updated and adds new API operations, paginators, +// and waiters. Its suggested to use the pattern above for testing, or using +// tooling to generate mocks to satisfy the interfaces. +type SSOAPI interface { + GetRoleCredentials(*sso.GetRoleCredentialsInput) (*sso.GetRoleCredentialsOutput, error) + GetRoleCredentialsWithContext(aws.Context, *sso.GetRoleCredentialsInput, ...request.Option) (*sso.GetRoleCredentialsOutput, error) + GetRoleCredentialsRequest(*sso.GetRoleCredentialsInput) (*request.Request, *sso.GetRoleCredentialsOutput) + + ListAccountRoles(*sso.ListAccountRolesInput) (*sso.ListAccountRolesOutput, error) + ListAccountRolesWithContext(aws.Context, *sso.ListAccountRolesInput, ...request.Option) (*sso.ListAccountRolesOutput, error) + ListAccountRolesRequest(*sso.ListAccountRolesInput) (*request.Request, *sso.ListAccountRolesOutput) + + ListAccountRolesPages(*sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool) error + ListAccountRolesPagesWithContext(aws.Context, *sso.ListAccountRolesInput, func(*sso.ListAccountRolesOutput, bool) bool, ...request.Option) error + + ListAccounts(*sso.ListAccountsInput) (*sso.ListAccountsOutput, error) + ListAccountsWithContext(aws.Context, *sso.ListAccountsInput, ...request.Option) (*sso.ListAccountsOutput, error) + ListAccountsRequest(*sso.ListAccountsInput) (*request.Request, *sso.ListAccountsOutput) + + ListAccountsPages(*sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool) error + ListAccountsPagesWithContext(aws.Context, *sso.ListAccountsInput, func(*sso.ListAccountsOutput, bool) bool, ...request.Option) error + + Logout(*sso.LogoutInput) (*sso.LogoutOutput, error) + LogoutWithContext(aws.Context, *sso.LogoutInput, ...request.Option) (*sso.LogoutOutput, error) + LogoutRequest(*sso.LogoutInput) (*request.Request, *sso.LogoutOutput) +} + +var _ SSOAPI = (*sso.SSO)(nil) diff --git a/vendor/modules.txt b/vendor/modules.txt index 9c7e5a01a..21fd4ed92 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -100,7 +100,7 @@ github.com/approvals/go-approval-tests/utils github.com/armon/go-metrics # github.com/armon/go-radix v1.0.0 github.com/armon/go-radix -# github.com/aws/aws-sdk-go v1.36.5 +# github.com/aws/aws-sdk-go v1.37.15 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/arn github.com/aws/aws-sdk-go/aws/awserr @@ -112,6 +112,7 @@ github.com/aws/aws-sdk-go/aws/credentials github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds github.com/aws/aws-sdk-go/aws/credentials/endpointcreds github.com/aws/aws-sdk-go/aws/credentials/processcreds +github.com/aws/aws-sdk-go/aws/credentials/ssocreds github.com/aws/aws-sdk-go/aws/credentials/stscreds github.com/aws/aws-sdk-go/aws/csm github.com/aws/aws-sdk-go/aws/defaults @@ -142,6 +143,7 @@ github.com/aws/aws-sdk-go/private/protocol/jsonrpc github.com/aws/aws-sdk-go/private/protocol/query github.com/aws/aws-sdk-go/private/protocol/query/queryutil github.com/aws/aws-sdk-go/private/protocol/rest +github.com/aws/aws-sdk-go/private/protocol/restjson github.com/aws/aws-sdk-go/private/protocol/restxml github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil github.com/aws/aws-sdk-go/service/ec2 @@ -155,6 +157,8 @@ github.com/aws/aws-sdk-go/service/secretsmanager github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface github.com/aws/aws-sdk-go/service/ssm github.com/aws/aws-sdk-go/service/ssm/ssmiface +github.com/aws/aws-sdk-go/service/sso +github.com/aws/aws-sdk-go/service/sso/ssoiface github.com/aws/aws-sdk-go/service/sts github.com/aws/aws-sdk-go/service/sts/stsiface # github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d From 079786f8d027275a8effbd70db136814d2e5468b Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 22 Feb 2021 02:20:44 -0800 Subject: [PATCH 027/212] remove this logline -- it is spammy and seems like a leftover dev debug line (#10665) --- packer/core.go | 1 - 1 file changed, 1 deletion(-) diff --git a/packer/core.go b/packer/core.go index 829466341..796bcf5e0 100644 --- a/packer/core.go +++ b/packer/core.go @@ -828,7 +828,6 @@ func (c *Core) renderVarsRecursively() (*interpolate.Context, error) { for _, k := range deleteKeys { for ind, kv := range sortedMap { if kv.Key == k { - log.Printf("Deleting kv.Value: %s", kv.Value) sortedMap = append(sortedMap[:ind], sortedMap[ind+1:]...) break } From 08fd0a7e33b431fe31e901660b017494a247d5ee Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 22 Feb 2021 02:33:20 -0800 Subject: [PATCH 028/212] add a brief explanation of the difference between vars and locals in the docs for vars and locals (#10664) --- website/content/docs/templates/hcl_templates/locals.mdx | 9 +++++++++ .../content/docs/templates/hcl_templates/variables.mdx | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/website/content/docs/templates/hcl_templates/locals.mdx b/website/content/docs/templates/hcl_templates/locals.mdx index 5766ae37c..4e59ec863 100644 --- a/website/content/docs/templates/hcl_templates/locals.mdx +++ b/website/content/docs/templates/hcl_templates/locals.mdx @@ -10,6 +10,15 @@ description: >- `@include 'from-1.5/beta-hcl2-note.mdx'` +There are two kinds of variables in HCL Packer templates: Input variables, +sometimes simply called "variables", and Local variables, also known as +"locals". Input variables may have defaults, but those defaults can +be overridden from the command line or special variable files. Local variables +can be thought of as constants, and are not able to be overridden at runtime. + +This page is about local variables. To learn about input variables, see the +[input variables](/docs/templates/hcl_templates/variables) page. + Local values assign a name to an expression, that can then be used multiple times within a folder. diff --git a/website/content/docs/templates/hcl_templates/variables.mdx b/website/content/docs/templates/hcl_templates/variables.mdx index dd1107b95..3d303128a 100644 --- a/website/content/docs/templates/hcl_templates/variables.mdx +++ b/website/content/docs/templates/hcl_templates/variables.mdx @@ -10,6 +10,15 @@ description: |- `@include 'from-1.5/beta-hcl2-note.mdx'` +There are two kinds of variables in HCL Packer templates: Input variables, +sometimes simply called "variables", and Local variables, also known as +"locals". Input variables may have defaults, but those defaults can +be overridden from the command line or special variable files. Local variables +can be thought of as constants, and are not able to be overridden at runtime. + +This page is about input variables. To learn about local variables, see the +[locals](/docs/templates/hcl_templates/locals) page. + Input variables serve as parameters for a Packer build, allowing aspects of the build to be customized without altering the build's own source code. From 557bffc94a080d3513af5ae96dcc5bcab26de6fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Wed, 20 Jan 2021 21:41:39 +0100 Subject: [PATCH 029/212] scaleway: add support for timeout in shutdown step --- builder/scaleway/config.go | 2 ++ builder/scaleway/step_shutdown.go | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/builder/scaleway/config.go b/builder/scaleway/config.go index 3f5277c24..a00897635 100644 --- a/builder/scaleway/config.go +++ b/builder/scaleway/config.go @@ -98,6 +98,8 @@ type Config struct { // available. // Deprecated, use Zone instead Region string `mapstructure:"region" required:"false"` + + Timeout string `mapstructure:"timeout" required:"false"` } func (c *Config) Prepare(raws ...interface{}) ([]string, error) { diff --git a/builder/scaleway/step_shutdown.go b/builder/scaleway/step_shutdown.go index 12365a482..0b96926a5 100644 --- a/builder/scaleway/step_shutdown.go +++ b/builder/scaleway/step_shutdown.go @@ -3,6 +3,7 @@ package scaleway import ( "context" "fmt" + "time" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -30,9 +31,22 @@ func (s *stepShutdown) Run(ctx context.Context, state multistep.StateBag) multis return multistep.ActionHalt } - instanceResp, err := instanceAPI.WaitForServer(&instance.WaitForServerRequest{ + waitRequest := &instance.WaitForServerRequest{ ServerID: serverID, - }) + } + timeout := state.Get("timeout").(string) + duration, err := time.ParseDuration(timeout) + if err != nil { + err := fmt.Errorf("error: %s could not parse string %s as a duration", err, timeout) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + if timeout != "" { + waitRequest.Timeout = scw.TimeDurationPtr(duration) + } + + instanceResp, err := instanceAPI.WaitForServer(waitRequest) if err != nil { err := fmt.Errorf("Error shutting down server: %s", err) state.Put("error", err) From 44d19f160a683aee4f3e4d528eb4d7bb46dc2754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Fri, 22 Jan 2021 11:29:19 +0100 Subject: [PATCH 030/212] fix --- builder/scaleway/config.go | 4 ++++ builder/scaleway/config.hcl2spec.go | 2 ++ builder/scaleway/step_shutdown.go | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/builder/scaleway/config.go b/builder/scaleway/config.go index a00897635..9ee2256ec 100644 --- a/builder/scaleway/config.go +++ b/builder/scaleway/config.go @@ -257,6 +257,10 @@ func (c *Config) Prepare(raws ...interface{}) ([]string, error) { errs, errors.New("image is required")) } + if c.Timeout == "" { + c.Timeout = "5m" + } + if errs != nil && len(errs.Errors) > 0 { return warnings, errs } diff --git a/builder/scaleway/config.hcl2spec.go b/builder/scaleway/config.hcl2spec.go index 32a04f1eb..aeedbc01a 100644 --- a/builder/scaleway/config.hcl2spec.go +++ b/builder/scaleway/config.hcl2spec.go @@ -83,6 +83,7 @@ type FlatConfig struct { Token *string `mapstructure:"api_token" required:"false" cty:"api_token" hcl:"api_token"` Organization *string `mapstructure:"organization_id" required:"false" cty:"organization_id" hcl:"organization_id"` Region *string `mapstructure:"region" required:"false" cty:"region" hcl:"region"` + Timeout *string `mapstructure:"timeout" required:"false" cty:"timeout" hcl:"timeout"` } // FlatMapstructure returns a new FlatConfig. @@ -170,6 +171,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "api_token": &hcldec.AttrSpec{Name: "api_token", Type: cty.String, Required: false}, "organization_id": &hcldec.AttrSpec{Name: "organization_id", Type: cty.String, Required: false}, "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "timeout": &hcldec.AttrSpec{Name: "timeout", Type: cty.String, Required: false}, } return s } diff --git a/builder/scaleway/step_shutdown.go b/builder/scaleway/step_shutdown.go index 0b96926a5..3bc874e2a 100644 --- a/builder/scaleway/step_shutdown.go +++ b/builder/scaleway/step_shutdown.go @@ -34,7 +34,8 @@ func (s *stepShutdown) Run(ctx context.Context, state multistep.StateBag) multis waitRequest := &instance.WaitForServerRequest{ ServerID: serverID, } - timeout := state.Get("timeout").(string) + c := state.Get("config").(*Config) + timeout := c.Timeout duration, err := time.ParseDuration(timeout) if err != nil { err := fmt.Errorf("error: %s could not parse string %s as a duration", err, timeout) From 1f4971f5accfc081dca7c9ad821e9e6bece74ce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Thu, 11 Feb 2021 14:23:43 +0100 Subject: [PATCH 031/212] Fix --- .../content/partials/builder/scaleway/Config-not-required.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/content/partials/builder/scaleway/Config-not-required.mdx b/website/content/partials/builder/scaleway/Config-not-required.mdx index ef73b13c1..2f301c0a6 100644 --- a/website/content/partials/builder/scaleway/Config-not-required.mdx +++ b/website/content/partials/builder/scaleway/Config-not-required.mdx @@ -39,3 +39,5 @@ or ams1). Consequently, this is the region where the snapshot will be available. Deprecated, use Zone instead + +- `timeout` (string) - Timeout From 95e8263280e1ef2305ab2b30613635c6a8e1af09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Mon, 22 Feb 2021 12:17:16 +0100 Subject: [PATCH 032/212] Fix --- builder/scaleway/config.go | 12 ++++++------ builder/scaleway/step_shutdown.go | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/builder/scaleway/config.go b/builder/scaleway/config.go index 9ee2256ec..878f5be1d 100644 --- a/builder/scaleway/config.go +++ b/builder/scaleway/config.go @@ -74,8 +74,10 @@ type Config struct { RemoveVolume bool `mapstructure:"remove_volume"` - UserAgent string `mapstructure-to-hcl2:",skip"` - ctx interpolate.Context + // Shutdown timeout. Default to 5m + ShutdownTimeout string `mapstructure:"shutdown_timeout" required:"false"` + UserAgent string `mapstructure-to-hcl2:",skip"` + ctx interpolate.Context // Deprecated configs @@ -98,8 +100,6 @@ type Config struct { // available. // Deprecated, use Zone instead Region string `mapstructure:"region" required:"false"` - - Timeout string `mapstructure:"timeout" required:"false"` } func (c *Config) Prepare(raws ...interface{}) ([]string, error) { @@ -257,8 +257,8 @@ func (c *Config) Prepare(raws ...interface{}) ([]string, error) { errs, errors.New("image is required")) } - if c.Timeout == "" { - c.Timeout = "5m" + if c.ShutdownTimeout == "" { + c.ShutdownTimeout = "5m" } if errs != nil && len(errs.Errors) > 0 { diff --git a/builder/scaleway/step_shutdown.go b/builder/scaleway/step_shutdown.go index 3bc874e2a..164acc607 100644 --- a/builder/scaleway/step_shutdown.go +++ b/builder/scaleway/step_shutdown.go @@ -35,7 +35,7 @@ func (s *stepShutdown) Run(ctx context.Context, state multistep.StateBag) multis ServerID: serverID, } c := state.Get("config").(*Config) - timeout := c.Timeout + timeout := c.ShutdownTimeout duration, err := time.ParseDuration(timeout) if err != nil { err := fmt.Errorf("error: %s could not parse string %s as a duration", err, timeout) From 2967fccfd7e7580ee38b7861a0ae29b050821c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Mon, 22 Feb 2021 14:10:31 +0100 Subject: [PATCH 033/212] Fix --- builder/scaleway/config.hcl2spec.go | 4 ++-- .../content/partials/builder/scaleway/Config-not-required.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/builder/scaleway/config.hcl2spec.go b/builder/scaleway/config.hcl2spec.go index aeedbc01a..720e02dae 100644 --- a/builder/scaleway/config.hcl2spec.go +++ b/builder/scaleway/config.hcl2spec.go @@ -80,10 +80,10 @@ type FlatConfig struct { Bootscript *string `mapstructure:"bootscript" required:"false" cty:"bootscript" hcl:"bootscript"` BootType *string `mapstructure:"boottype" required:"false" cty:"boottype" hcl:"boottype"` RemoveVolume *bool `mapstructure:"remove_volume" cty:"remove_volume" hcl:"remove_volume"` + ShutdownTimeout *string `mapstructure:"shutdown_timeout" required:"false" cty:"shutdown_timeout" hcl:"shutdown_timeout"` Token *string `mapstructure:"api_token" required:"false" cty:"api_token" hcl:"api_token"` Organization *string `mapstructure:"organization_id" required:"false" cty:"organization_id" hcl:"organization_id"` Region *string `mapstructure:"region" required:"false" cty:"region" hcl:"region"` - Timeout *string `mapstructure:"timeout" required:"false" cty:"timeout" hcl:"timeout"` } // FlatMapstructure returns a new FlatConfig. @@ -168,10 +168,10 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "bootscript": &hcldec.AttrSpec{Name: "bootscript", Type: cty.String, Required: false}, "boottype": &hcldec.AttrSpec{Name: "boottype", Type: cty.String, Required: false}, "remove_volume": &hcldec.AttrSpec{Name: "remove_volume", Type: cty.Bool, Required: false}, + "shutdown_timeout": &hcldec.AttrSpec{Name: "shutdown_timeout", Type: cty.String, Required: false}, "api_token": &hcldec.AttrSpec{Name: "api_token", Type: cty.String, Required: false}, "organization_id": &hcldec.AttrSpec{Name: "organization_id", Type: cty.String, Required: false}, "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, - "timeout": &hcldec.AttrSpec{Name: "timeout", Type: cty.String, Required: false}, } return s } diff --git a/website/content/partials/builder/scaleway/Config-not-required.mdx b/website/content/partials/builder/scaleway/Config-not-required.mdx index 2f301c0a6..0e5560984 100644 --- a/website/content/partials/builder/scaleway/Config-not-required.mdx +++ b/website/content/partials/builder/scaleway/Config-not-required.mdx @@ -21,6 +21,8 @@ - `remove_volume` (bool) - Remove Volume +- `shutdown_timeout` (string) - Shutdown timeout. Default to 5m + - `api_token` (string) - The token to use to authenticate with your account. It can also be specified via environment variable SCALEWAY_API_TOKEN. You can see and generate tokens in the "Credentials" @@ -39,5 +41,3 @@ or ams1). Consequently, this is the region where the snapshot will be available. Deprecated, use Zone instead - -- `timeout` (string) - Timeout From 2016d6baec61e932c5c74aeefc4687ae7fe9185a Mon Sep 17 00:00:00 2001 From: sylviamoss Date: Mon, 22 Feb 2021 16:07:37 +0100 Subject: [PATCH 034/212] Fix panic on upgrading variables json file --- command/hcl2_upgrade.go | 4 ++ command/hcl2_upgrade_test.go | 1 + .../variables-only/expected.pkr.hcl | 45 +++++++++++++++++++ .../hcl2_upgrade/variables-only/input.json | 18 ++++++++ 4 files changed, 68 insertions(+) create mode 100644 command/test-fixtures/hcl2_upgrade/variables-only/expected.pkr.hcl create mode 100644 command/test-fixtures/hcl2_upgrade/variables-only/input.json diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 2923d91fa..73b03284f 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -896,6 +896,10 @@ type BuildParser struct { } func (p *BuildParser) Parse(tpl *template.Template) error { + if len(p.Builders) == 0 { + return nil + } + buildContent := hclwrite.NewEmptyFile() buildBody := buildContent.Body() if tpl.Description != "" { diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index 9368a5f80..ac1ec7071 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -26,6 +26,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "source-name", flags: []string{"-with-annotations"}}, {folder: "error-cleanup-provisioner", flags: []string{"-with-annotations"}}, {folder: "aws-access-config", flags: []string{}}, + {folder: "variables-only", flags: []string{}}, } for _, tc := range tc { diff --git a/command/test-fixtures/hcl2_upgrade/variables-only/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/variables-only/expected.pkr.hcl new file mode 100644 index 000000000..2b612eb57 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/variables-only/expected.pkr.hcl @@ -0,0 +1,45 @@ + +variable "aws_access_key" { + type = string + default = "" + sensitive = true +} + +variable "aws_region" { + type = string +} + +variable "aws_secondary_region" { + type = string + default = "${env("AWS_DEFAULT_REGION")}" +} + +variable "aws_secret_key" { + type = string + default = "" + sensitive = true +} + +variable "secret_account" { + type = string + default = "🤷" + sensitive = true +} + +data "amazon-secretsmanager" "autogenerated_1" { + name = "sample/app/password" +} + +data "amazon-secretsmanager" "autogenerated_2" { + key = "api_key" + name = "sample/app/passwords" +} + +local "password" { + sensitive = true + expression = "${data.amazon-secretsmanager.autogenerated_1.value}" +} + +locals { + password_key = "MY_KEY_${data.amazon-secretsmanager.autogenerated_2.value}" +} diff --git a/command/test-fixtures/hcl2_upgrade/variables-only/input.json b/command/test-fixtures/hcl2_upgrade/variables-only/input.json new file mode 100644 index 000000000..27cefb911 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/variables-only/input.json @@ -0,0 +1,18 @@ +{ + "variables": { + "secret_account": "🤷", + "aws_region": null, + "aws_secondary_region": "{{ env `AWS_DEFAULT_REGION` }}", + "aws_secret_key": "", + "aws_access_key": "", + "password": "{{ aws_secretsmanager `sample/app/password` }}", + "password_key": "MY_KEY_{{ aws_secretsmanager `sample/app/passwords` `api_key` }}" + }, + "sensitive-variables": [ + "aws_secret_key", + "aws_access_key", + "secret_account", + "potato", + "password" + ] +} \ No newline at end of file From 60017822e07beb6669cfd0fbded1ba7e5d096e23 Mon Sep 17 00:00:00 2001 From: sylviamoss Date: Mon, 22 Feb 2021 16:19:55 +0100 Subject: [PATCH 035/212] add docs --- .../content/docs/commands/hcl2_upgrade.mdx | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/website/content/docs/commands/hcl2_upgrade.mdx b/website/content/docs/commands/hcl2_upgrade.mdx index d6a5b44e6..3c7652eec 100644 --- a/website/content/docs/commands/hcl2_upgrade.mdx +++ b/website/content/docs/commands/hcl2_upgrade.mdx @@ -51,6 +51,57 @@ locals { } ``` +## Upgrading variables file + +From **v1.7.1**, the `hcl2_upgrade` command can upgrade a variables file. + + + + +```json +{ + "variables": { + "aws_region": null, + "aws_secondary_region": "{{ env `AWS_DEFAULT_REGION` }}", + "aws_secret_key": "", + "aws_access_key": "", + }, + "sensitive-variables": [ + "aws_secret_key", + "aws_access_key", + ] +} +``` + + + + +```hcl +variable "aws_access_key" { + type = string + default = "" + sensitive = true +} + +variable "aws_region" { + type = string +} + +variable "aws_secondary_region" { + type = string + default = "${env("AWS_DEFAULT_REGION")}" +} + +variable "aws_secret_key" { + type = string + default = "" + sensitive = true +} +``` + + + + ## Go template functions `hcl2_upgrade` will do its best to transform your go _template calls_ to HCL2, From a1a5cf0113b3d79cf9e3f52e9d7537a694809a7d Mon Sep 17 00:00:00 2001 From: sylviamoss Date: Mon, 22 Feb 2021 17:14:01 +0100 Subject: [PATCH 036/212] upgrade variables with other variables --- command/hcl2_upgrade.go | 4 ++ command/hcl2_upgrade_test.go | 1 + .../variables-with-variables/expected.pkr.hcl | 25 +++++++++ .../variables-with-variables/input.json | 14 +++++ .../content/docs/commands/hcl2_upgrade.mdx | 52 ++++++++++--------- 5 files changed, 71 insertions(+), 25 deletions(-) create mode 100644 command/test-fixtures/hcl2_upgrade/variables-with-variables/expected.pkr.hcl create mode 100644 command/test-fixtures/hcl2_upgrade/variables-with-variables/input.json diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 73b03284f..186d3c024 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -436,6 +436,10 @@ func variableTransposeTemplatingCalls(s []byte) (isLocal bool, body []byte) { isLocal = true return "" } + funcMap["user"] = func(a ...string) string { + isLocal = true + return "" + } tpl, err := texttemplate.New("hcl2_upgrade"). Funcs(funcMap). diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index ac1ec7071..1d8818e4e 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -27,6 +27,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "error-cleanup-provisioner", flags: []string{"-with-annotations"}}, {folder: "aws-access-config", flags: []string{}}, {folder: "variables-only", flags: []string{}}, + {folder: "variables-with-variables", flags: []string{}}, } for _, tc := range tc { diff --git a/command/test-fixtures/hcl2_upgrade/variables-with-variables/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/variables-with-variables/expected.pkr.hcl new file mode 100644 index 000000000..d3838edde --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/variables-with-variables/expected.pkr.hcl @@ -0,0 +1,25 @@ + +variable "aws_access_key" { + type = string + default = "" + sensitive = true +} + +variable "aws_region" { + type = string +} + +variable "aws_secret_key" { + type = string + default = "" + sensitive = true +} + +local "password" { + sensitive = true + expression = "${var.aws_secret_key}-${var.aws_access_key}" +} + +locals { + aws_secondary_region = "${var.aws_region}" +} diff --git a/command/test-fixtures/hcl2_upgrade/variables-with-variables/input.json b/command/test-fixtures/hcl2_upgrade/variables-with-variables/input.json new file mode 100644 index 000000000..4696945de --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/variables-with-variables/input.json @@ -0,0 +1,14 @@ +{ + "variables": { + "aws_region": null, + "aws_secondary_region": "{{ user `aws_region` }}", + "aws_secret_key": "", + "aws_access_key": "", + "password": "{{ user `aws_secret_key` }}-{{ user `aws_access_key` }}" + }, + "sensitive-variables": [ + "aws_secret_key", + "aws_access_key", + "password" + ] +} \ No newline at end of file diff --git a/website/content/docs/commands/hcl2_upgrade.mdx b/website/content/docs/commands/hcl2_upgrade.mdx index 3c7652eec..247de3da2 100644 --- a/website/content/docs/commands/hcl2_upgrade.mdx +++ b/website/content/docs/commands/hcl2_upgrade.mdx @@ -26,31 +26,6 @@ $ packer hcl2_upgrade my-template.json Successfully created my-template.json.pkr.hcl ``` -## User variables using other user variables - -Packer JSON recently started allowing using user variables from variables. In -HCL2, input variables cannot use functions nor other variables and are -virtually static, local variables must be used instead to craft more dynamic -variables. For that reason `hcl2_upgrade` cannot decide for you what local -variables to create and the `hcl2_upgrade` command will simply output all seen -variables as an input variable, it is now up to you to create a local variable. - -Here is an example of a local variable using a string input variables: - -```hcl -variable "foo" { - default = "Hello," -} - -variable "bar" { - default = "World!" -} - -locals { - baz = "${var.foo} ${var.bar}" -} -``` - ## Upgrading variables file From **v1.7.1**, the `hcl2_upgrade` command can upgrade a variables file. @@ -130,3 +105,30 @@ working on improving this part of the transformer. - `-output-file` - File where to put the hcl2 generated config. Defaults to JSON_TEMPLATE.pkr.hcl - `-with-annotations` - Adds helper annotations with information about the generated HCL2 blocks. + +## User variables using other user variables + +Packer JSON recently started allowing using user variables from variables. In +HCL2, input variables cannot use functions nor other variables and are +virtually static, local variables must be used instead to craft more dynamic +variables. + +For v1.7.0 and lower, `hcl2_upgrade` doesn't upgrade variables to local variables, +and it is up to you to upgrade them manually. Upgrade to **v1.7.1** to let the command do it +automatically for you. + +Here is an example of a local variable using a string input variables: + +```hcl +variable "foo" { + default = "Hello," +} + +variable "bar" { + default = "World!" +} + +locals { + baz = "${var.foo} ${var.bar}" +} +``` From 0f86c66f8b3ed531fe462127425c71eac311b924 Mon Sep 17 00:00:00 2001 From: Tim Black Date: Mon, 22 Feb 2021 14:35:27 -0800 Subject: [PATCH 037/212] Fix wrong link in post-processor docs (#10678) --- .../templates/hcl_templates/blocks/build/post-processor.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx index b7447ff9c..a3c93556f 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx @@ -89,6 +89,6 @@ about and see some examples of how to use them. ### Related -- The [`post-processors` block](/docs/templates/hcl_templates/blocks/build/post-processor) +- The [`post-processors` block](/docs/templates/hcl_templates/blocks/build/post-processors) allows to define one or more chain of `post-processor`s that will take the output from the build and provision steps. From 5515d7293f7ca8fe655a1f170cb1e12b2bb350ea Mon Sep 17 00:00:00 2001 From: Bruno Bigras Date: Mon, 22 Feb 2021 23:30:11 +0000 Subject: [PATCH 038/212] fix typo in website/content/docs/plugins/index.mdx --- website/content/docs/plugins/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/content/docs/plugins/index.mdx b/website/content/docs/plugins/index.mdx index 84daeeac5..eba39a35d 100644 --- a/website/content/docs/plugins/index.mdx +++ b/website/content/docs/plugins/index.mdx @@ -18,7 +18,7 @@ This page documents how to install plugins. If you're interested in developing plugins, see the [developing plugins](/docs/plugins/creation#developing-plugins) page. -The current official listing of community-written plugins can ve found +The current official listing of community-written plugins can be found [here](/community-tools#third-party-plugins); if you have written a Packer plugin, please reach out to us so we can add your plugin to the website. @@ -106,7 +106,7 @@ per configuration. This is best explained using an example. In the above `required_plugins` block, we declared the local name "myawesomecloud" for the plugin `azr/myawesomecloud`. -If the "myawesomecloud" plugin contains both an "ebs" builder and a "import" +If the "myawesomecloud" plugin contains both an "ebs" builder and an "import" post-processor, then the builder will be accessed in a source block by using: ```hcl From ff5b55b560095ca88421d3f1ad8b8a66646b7ab6 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Tue, 23 Feb 2021 11:17:32 +0100 Subject: [PATCH 039/212] chef-solo: json_string to HCL2 templates compatibility (#10655) --- provisioner/chef-solo/provisioner.go | 27 ++++--- provisioner/chef-solo/provisioner.hcl2spec.go | 54 +++++++------- provisioner/chef-solo/provisioner_test.go | 32 +++++++++ .../content/docs/provisioners/chef-solo.mdx | 72 +++++++++++++++++-- 4 files changed, 142 insertions(+), 43 deletions(-) diff --git a/provisioner/chef-solo/provisioner.go b/provisioner/chef-solo/provisioner.go index e80b83f5a..54e7f8f59 100644 --- a/provisioner/chef-solo/provisioner.go +++ b/provisioner/chef-solo/provisioner.go @@ -56,13 +56,18 @@ type Config struct { ExecuteCommand string `mapstructure:"execute_command"` InstallCommand string `mapstructure:"install_command"` RemoteCookbookPaths []string `mapstructure:"remote_cookbook_paths"` - Json map[string]interface{} - PreventSudo bool `mapstructure:"prevent_sudo"` - RunList []string `mapstructure:"run_list"` - SkipInstall bool `mapstructure:"skip_install"` - StagingDir string `mapstructure:"staging_directory"` - GuestOSType string `mapstructure:"guest_os_type"` - Version string `mapstructure:"version"` + // HCL cannot be decoded into an interface so for HCL templates you must use the JsonString option, + // To be used with https://www.packer.io/docs/templates/hcl_templates/functions/encoding/jsonencode + // ref: https://github.com/hashicorp/hcl/issues/291#issuecomment-496347585 + JsonString string `mapstructure:"json_string"` + // For JSON templates we keep the map[string]interface{} + Json map[string]interface{} `mapstructure:"json" mapstructure-to-hcl2:",skip"` + PreventSudo bool `mapstructure:"prevent_sudo"` + RunList []string `mapstructure:"run_list"` + SkipInstall bool `mapstructure:"skip_install"` + StagingDir string `mapstructure:"staging_directory"` + GuestOSType string `mapstructure:"guest_os_type"` + Version string `mapstructure:"version"` ctx interpolate.Context } @@ -120,6 +125,12 @@ func (p *Provisioner) Prepare(raws ...interface{}) error { return err } + if p.config.JsonString != "" { + if err := json.Unmarshal([]byte(p.config.JsonString), &p.config.Json); err != nil { + return fmt.Errorf("Failed to unmarshal 'json_string': %s", err.Error()) + } + } + if p.config.GuestOSType == "" { p.config.GuestOSType = guestexec.DefaultOSType } @@ -398,12 +409,10 @@ func (p *Provisioner) createJson(ui packersdk.Ui, comm packersdk.Communicator) ( ui.Message("Creating JSON attribute file") jsonData := make(map[string]interface{}) - // Copy the configured JSON for k, v := range p.config.Json { jsonData[k] = v } - // Set the run list if it was specified if len(p.config.RunList) > 0 { jsonData["run_list"] = p.config.RunList diff --git a/provisioner/chef-solo/provisioner.hcl2spec.go b/provisioner/chef-solo/provisioner.hcl2spec.go index 951cda0a2..84bb9124a 100644 --- a/provisioner/chef-solo/provisioner.hcl2spec.go +++ b/provisioner/chef-solo/provisioner.hcl2spec.go @@ -10,32 +10,32 @@ import ( // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - ChefEnvironment *string `mapstructure:"chef_environment" cty:"chef_environment" hcl:"chef_environment"` - ChefLicense *string `mapstructure:"chef_license" cty:"chef_license" hcl:"chef_license"` - ConfigTemplate *string `mapstructure:"config_template" cty:"config_template" hcl:"config_template"` - CookbookPaths []string `mapstructure:"cookbook_paths" cty:"cookbook_paths" hcl:"cookbook_paths"` - RolesPath *string `mapstructure:"roles_path" cty:"roles_path" hcl:"roles_path"` - DataBagsPath *string `mapstructure:"data_bags_path" cty:"data_bags_path" hcl:"data_bags_path"` - EncryptedDataBagSecretPath *string `mapstructure:"encrypted_data_bag_secret_path" cty:"encrypted_data_bag_secret_path" hcl:"encrypted_data_bag_secret_path"` - EnvironmentsPath *string `mapstructure:"environments_path" cty:"environments_path" hcl:"environments_path"` - ExecuteCommand *string `mapstructure:"execute_command" cty:"execute_command" hcl:"execute_command"` - InstallCommand *string `mapstructure:"install_command" cty:"install_command" hcl:"install_command"` - RemoteCookbookPaths []string `mapstructure:"remote_cookbook_paths" cty:"remote_cookbook_paths" hcl:"remote_cookbook_paths"` - Json map[string]interface{} `cty:"json" hcl:"json"` - PreventSudo *bool `mapstructure:"prevent_sudo" cty:"prevent_sudo" hcl:"prevent_sudo"` - RunList []string `mapstructure:"run_list" cty:"run_list" hcl:"run_list"` - SkipInstall *bool `mapstructure:"skip_install" cty:"skip_install" hcl:"skip_install"` - StagingDir *string `mapstructure:"staging_directory" cty:"staging_directory" hcl:"staging_directory"` - GuestOSType *string `mapstructure:"guest_os_type" cty:"guest_os_type" hcl:"guest_os_type"` - Version *string `mapstructure:"version" cty:"version" hcl:"version"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + ChefEnvironment *string `mapstructure:"chef_environment" cty:"chef_environment" hcl:"chef_environment"` + ChefLicense *string `mapstructure:"chef_license" cty:"chef_license" hcl:"chef_license"` + ConfigTemplate *string `mapstructure:"config_template" cty:"config_template" hcl:"config_template"` + CookbookPaths []string `mapstructure:"cookbook_paths" cty:"cookbook_paths" hcl:"cookbook_paths"` + RolesPath *string `mapstructure:"roles_path" cty:"roles_path" hcl:"roles_path"` + DataBagsPath *string `mapstructure:"data_bags_path" cty:"data_bags_path" hcl:"data_bags_path"` + EncryptedDataBagSecretPath *string `mapstructure:"encrypted_data_bag_secret_path" cty:"encrypted_data_bag_secret_path" hcl:"encrypted_data_bag_secret_path"` + EnvironmentsPath *string `mapstructure:"environments_path" cty:"environments_path" hcl:"environments_path"` + ExecuteCommand *string `mapstructure:"execute_command" cty:"execute_command" hcl:"execute_command"` + InstallCommand *string `mapstructure:"install_command" cty:"install_command" hcl:"install_command"` + RemoteCookbookPaths []string `mapstructure:"remote_cookbook_paths" cty:"remote_cookbook_paths" hcl:"remote_cookbook_paths"` + JsonString *string `mapstructure:"json_string" cty:"json_string" hcl:"json_string"` + PreventSudo *bool `mapstructure:"prevent_sudo" cty:"prevent_sudo" hcl:"prevent_sudo"` + RunList []string `mapstructure:"run_list" cty:"run_list" hcl:"run_list"` + SkipInstall *bool `mapstructure:"skip_install" cty:"skip_install" hcl:"skip_install"` + StagingDir *string `mapstructure:"staging_directory" cty:"staging_directory" hcl:"staging_directory"` + GuestOSType *string `mapstructure:"guest_os_type" cty:"guest_os_type" hcl:"guest_os_type"` + Version *string `mapstructure:"version" cty:"version" hcl:"version"` } // FlatMapstructure returns a new FlatConfig. @@ -69,7 +69,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "execute_command": &hcldec.AttrSpec{Name: "execute_command", Type: cty.String, Required: false}, "install_command": &hcldec.AttrSpec{Name: "install_command", Type: cty.String, Required: false}, "remote_cookbook_paths": &hcldec.AttrSpec{Name: "remote_cookbook_paths", Type: cty.List(cty.String), Required: false}, - "json": &hcldec.AttrSpec{Name: "json", Type: cty.Map(cty.String), Required: false}, + "json_string": &hcldec.AttrSpec{Name: "json_string", Type: cty.String, Required: false}, "prevent_sudo": &hcldec.AttrSpec{Name: "prevent_sudo", Type: cty.Bool, Required: false}, "run_list": &hcldec.AttrSpec{Name: "run_list", Type: cty.List(cty.String), Required: false}, "skip_install": &hcldec.AttrSpec{Name: "skip_install", Type: cty.Bool, Required: false}, diff --git a/provisioner/chef-solo/provisioner_test.go b/provisioner/chef-solo/provisioner_test.go index 402e972fa..f1b0aef41 100644 --- a/provisioner/chef-solo/provisioner_test.go +++ b/provisioner/chef-solo/provisioner_test.go @@ -356,3 +356,35 @@ func TestProvisionerPrepare_jsonNested(t *testing.T) { t.Fatalf("nope: %#v", fooMap["bar"]) } } + +func TestProvisionerPrepare_jsonstring(t *testing.T) { + config := testConfig() + config["json_string"] = `{ + "foo": { + "bar": "baz" + }, + "bar": { + "bar": "baz" + }, + "bFalse": false, + "bTrue": true, + "bStr": "bar", + "bNil": null, + "bInt": 1, + "bFloat": 4.5 + }` + + var p Provisioner + err := p.Prepare(config) + if err != nil { + t.Fatalf("err: %s", err) + } + + fooMap := p.config.Json["foo"].(map[string]interface{}) + if fooMap["bar"] != "baz" { + t.Fatalf("nope: %#v", fooMap["bar"]) + } + if p.config.Json["bStr"] != "bar" { + t.Fatalf("nope: %#v", fooMap["bar"]) + } +} diff --git a/website/content/docs/provisioners/chef-solo.mdx b/website/content/docs/provisioners/chef-solo.mdx index 975f67bd2..6f99e6c3a 100644 --- a/website/content/docs/provisioners/chef-solo.mdx +++ b/website/content/docs/provisioners/chef-solo.mdx @@ -26,13 +26,29 @@ installed, using the official Chef installers provided by Chef Inc. The example below is fully functional and expects cookbooks in the "cookbooks" directory relative to your working directory. -```json -{ - "type": "chef-solo", - "cookbook_paths": ["cookbooks"] + + + +```hcl +provisioner "chef-solo" { + cookbook_paths = ["cookbooks"] } ``` + + + + +```json +"provisioners":[{ + "type": "chef-solo", + "cookbook_paths": ["cookbooks"] +}] +``` + + + + ## Configuration Reference The reference of available configuration options is listed below. No @@ -83,9 +99,6 @@ configuration is actually required, but at least `run_list` is recommended. various [configuration template variables](/docs/templates/legacy_json_templates/engine) available. See below for more information. -- `json` (object) - An arbitrary mapping of JSON that will be available as - node attributes while running Chef. - - `prevent_sudo` (boolean) - By default, the configured commands that are executed to install and run Chef are executed with `sudo`. If this is true, then the sudo will be omitted. This has no effect when guest_os_type is @@ -115,11 +128,56 @@ configuration is actually required, but at least `run_list` is recommended. able to create directories and write into this folder. If the permissions are not correct, use a shell provisioner prior to this to configure it properly. + - `version` (string) - The version of Chef to be installed. By default this is empty which will install the latest version of Chef. @include 'provisioners/common-config.mdx' +##### Node Attribute Mapping + +An arbitrary mapping of JSON that will be available as node attributes while running Chef. + + + + +- `json_string` (string) - The JSON string can be encoded using the [jsonencode](/docs/templates/hcl_templates/functions/encoding/jsonencode) +template function. + +```hcl +provisioner "chef-solo" { + json_string = jsonencode({ + "a" = "b" + "foo" = { + "bar" = "val" + "number" = 1 + } + }) +} +``` + + + + + +- `json` (object) - This option is only available to old-style JSON templates. + +```json +"provisioners":[{ + "type": "chef-solo", + "json": { + "a": "b", + "foo": { + "bar": "val", + "number": 1 + } + } +}] +``` + + + + ## Chef Configuration By default, Packer uses a simple Chef configuration file in order to set the From 20e8f666d943a4383d965e9b372f06a7edcf005b Mon Sep 17 00:00:00 2001 From: sylviamoss Date: Tue, 23 Feb 2021 14:18:43 +0100 Subject: [PATCH 040/212] make locals out of variables with template engines --- command/hcl2_upgrade.go | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 186d3c024..a979cf751 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -328,11 +328,12 @@ func templateCommonFunctionMap() texttemplate.FuncMap { "name": a[0], } return fmt.Sprintf("${data.amazon-secretsmanager.%s.value}", id) - }, "timestamp": func() string { + }, + "timestamp": func() string { timestamp = true return "${local.timestamp}" }, - "isotime": func() string { + "isotime": func(a ...string) string { timestamp = true return "${local.timestamp}" }, @@ -431,14 +432,35 @@ func variableTransposeTemplatingCalls(s []byte) (isLocal bool, body []byte) { return append([]byte(fmt.Sprintf("\n# could not parse template for following block: %q\n", err)), s...) } - funcMap := templateCommonFunctionMap() - funcMap["aws_secretsmanager"] = func(a ...string) string { + setIsLocal := func(a ...string) string { isLocal = true return "" } - funcMap["user"] = func(a ...string) string { + + // Make locals from variables using valid template engine, + // expect the ones using only 'env' + // ref: https://www.packer.io/docs/templates/legacy_json_templates/engine#template-engine + funcMap := templateCommonFunctionMap() + funcMap["aws_secretsmanager"] = setIsLocal + funcMap["user"] = setIsLocal + funcMap["isotime"] = setIsLocal + funcMap["timestamp"] = setIsLocal + funcMap["template_dir"] = setIsLocal + funcMap["lower"] = setIsLocal + funcMap["upper"] = setIsLocal + funcMap["uuid"] = setIsLocal + funcMap["pwd"] = setIsLocal + funcMap["split"] = func(_, _ string, _ int) (string, error) { isLocal = true - return "" + return "", nil + } + funcMap["replace"] = func(_, _, _ string, _ int) (string, error) { + isLocal = true + return "", nil + } + funcMap["replace_all"] = func(_, _, _ string) (string, error) { + isLocal = true + return "", nil } tpl, err := texttemplate.New("hcl2_upgrade"). From 5ccbd27b726ac15bd6c698f8317281d9670da02c Mon Sep 17 00:00:00 2001 From: sylviamoss Date: Tue, 23 Feb 2021 16:51:13 +0100 Subject: [PATCH 041/212] Improve upgrade error and transform all variables with template eng to locals --- command/hcl2_upgrade.go | 149 +++++++++++------- command/hcl2_upgrade_test.go | 1 + .../expected.pkr.hcl | 58 +++++++ .../input.json | 35 ++++ .../hcl2_upgrade/complete/expected.pkr.hcl | 26 +-- .../hcl2_upgrade/complete/input.json | 2 +- .../without-annotations/expected.pkr.hcl | 26 +-- .../without-annotations/input.json | 2 +- 8 files changed, 220 insertions(+), 79 deletions(-) create mode 100644 command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl create mode 100644 command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/input.json diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index a979cf751..b0647a23e 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -12,6 +12,7 @@ import ( "strings" texttemplate "text/template" + "github.com/hashicorp/go-multierror" "github.com/hashicorp/hcl/v2/hclwrite" hcl2shim "github.com/hashicorp/packer-plugin-sdk/hcl2helper" "github.com/hashicorp/packer-plugin-sdk/template" @@ -279,28 +280,29 @@ func transposeTemplatingCalls(s []byte) []byte { return append([]byte(fmt.Sprintf("\n# could not parse template for following block: %q\n", err)), s...) } - funcMap := templateCommonFunctionMap() - tpl, err := texttemplate.New("hcl2_upgrade"). - Funcs(funcMap). - Parse(string(s)) + funcErrors := &multierror.Error{ + ErrorFormat: func(es []error) string { + if len(es) == 1 { + return fmt.Sprintf("# 1 error occurred upgrading the following block:\n\t# %s\n", es[0]) + } - if err != nil { - return fallbackReturn(err) + points := make([]string, len(es)) + for i, err := range es { + if i == len(es)-1 { + points[i] = fmt.Sprintf("# %s", err) + continue + } + points[i] = fmt.Sprintf("# %s\n", err) + } + + return fmt.Sprintf( + "# %d errors occurred upgrading the following block:\n\t%s", + len(es), strings.Join(points, "\n\t")) + }, } - str := &bytes.Buffer{} - // PASSTHROUGHS is a map of variable-specific golang text template fields - // that should remain in the text template format. - if err := tpl.Execute(str, PASSTHROUGHS); err != nil { - return fallbackReturn(err) - } - - return str.Bytes() -} - -func templateCommonFunctionMap() texttemplate.FuncMap { - return texttemplate.FuncMap{ + funcMap := texttemplate.FuncMap{ "aws_secretsmanager": func(a ...string) string { if len(a) == 2 { for key, config := range amazonSecretsManagerMap { @@ -365,49 +367,55 @@ func templateCommonFunctionMap() texttemplate.FuncMap { "uuid": func() string { return fmt.Sprintf("${uuidv4()}") }, - "lower": func(_ string) (string, error) { - return "", UnhandleableArgumentError{ + "lower": func(a string) (string, error) { + funcErrors = multierror.Append(funcErrors, UnhandleableArgumentError{ "lower", "`lower(var.example)`", "https://www.packer.io/docs/templates/hcl_templates/functions/string/lower", - } + }) + return fmt.Sprintf("{{ lower `%s` }}", a), nil }, - "upper": func(_ string) (string, error) { - return "", UnhandleableArgumentError{ + "upper": func(a string) (string, error) { + funcErrors = multierror.Append(funcErrors, UnhandleableArgumentError{ "upper", "`upper(var.example)`", "https://www.packer.io/docs/templates/hcl_templates/functions/string/upper", - } + }) + return fmt.Sprintf("{{ upper `%s` }}", a), nil }, - "split": func(_, _ string, _ int) (string, error) { - return "", UnhandleableArgumentError{ + "split": func(a, b string, n int) (string, error) { + funcErrors = multierror.Append(funcErrors, UnhandleableArgumentError{ "split", "`split(separator, string)`", "https://www.packer.io/docs/templates/hcl_templates/functions/string/split", - } + }) + return fmt.Sprintf("{{ split `%s` `%s` %d }}", a, b, n), nil }, - "replace": func(_, _, _ string, _ int) (string, error) { - return "", UnhandleableArgumentError{ + "replace": func(a, b string, n int, c string) (string, error) { + funcErrors = multierror.Append(funcErrors, UnhandleableArgumentError{ "replace", "`replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)`", "https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace", - } + }) + return fmt.Sprintf("{{ replace `%s` `%s` `%s` %d }}", a, b, c, n), nil }, - "replace_all": func(_, _, _ string) (string, error) { - return "", UnhandleableArgumentError{ + "replace_all": func(a, b, c string) (string, error) { + funcErrors = multierror.Append(funcErrors, UnhandleableArgumentError{ "replace_all", "`replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)`", "https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace", - } + }) + return fmt.Sprintf("{{ replace_all `%s` `%s` `%s` }}", a, b, c), nil }, - "clean_resource_name": func(_ string) (string, error) { - return "", UnhandleableArgumentError{ + "clean_resource_name": func(a string) (string, error) { + funcErrors = multierror.Append(funcErrors, UnhandleableArgumentError{ "clean_resource_name", "use custom validation rules, `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)`", "https://packer.io/docs/templates/hcl_templates/variables#custom-validation-rules" + " , https://www.packer.io/docs/templates/hcl_templates/functions/string/replace" + " or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace", - } + }) + return fmt.Sprintf("{{ clean_resource_name `%s` }}", a), nil }, "build_name": func() string { return fmt.Sprintf("${build.name}") @@ -416,6 +424,28 @@ func templateCommonFunctionMap() texttemplate.FuncMap { return fmt.Sprintf("${build.type}") }, } + + tpl, err := texttemplate.New("hcl2_upgrade"). + Funcs(funcMap). + Parse(string(s)) + + if err != nil { + return fallbackReturn(err) + } + + str := &bytes.Buffer{} + // PASSTHROUGHS is a map of variable-specific golang text template fields + // that should remain in the text template format. + if err := tpl.Execute(str, PASSTHROUGHS); err != nil { + return fallbackReturn(err) + } + + out := str.Bytes() + + if funcErrors.Len() > 0 { + return append([]byte(fmt.Sprintf("\n%s", funcErrors)), out...) + } + return out } // variableTransposeTemplatingCalls executes parts of blocks as go template files and replaces @@ -440,27 +470,32 @@ func variableTransposeTemplatingCalls(s []byte) (isLocal bool, body []byte) { // Make locals from variables using valid template engine, // expect the ones using only 'env' // ref: https://www.packer.io/docs/templates/legacy_json_templates/engine#template-engine - funcMap := templateCommonFunctionMap() - funcMap["aws_secretsmanager"] = setIsLocal - funcMap["user"] = setIsLocal - funcMap["isotime"] = setIsLocal - funcMap["timestamp"] = setIsLocal - funcMap["template_dir"] = setIsLocal - funcMap["lower"] = setIsLocal - funcMap["upper"] = setIsLocal - funcMap["uuid"] = setIsLocal - funcMap["pwd"] = setIsLocal - funcMap["split"] = func(_, _ string, _ int) (string, error) { - isLocal = true - return "", nil - } - funcMap["replace"] = func(_, _, _ string, _ int) (string, error) { - isLocal = true - return "", nil - } - funcMap["replace_all"] = func(_, _, _ string) (string, error) { - isLocal = true - return "", nil + funcMap := texttemplate.FuncMap{ + "aws_secretsmanager": setIsLocal, + "timestamp": setIsLocal, + "isotime": setIsLocal, + "user": setIsLocal, + "env": func(in string) string { + return fmt.Sprintf("${env(%q)}", in) + }, + "template_dir": setIsLocal, + "pwd": setIsLocal, + "packer_version": setIsLocal, + "uuid": setIsLocal, + "lower": setIsLocal, + "upper": setIsLocal, + "split": func(_, _ string, _ int) (string, error) { + isLocal = true + return "", nil + }, + "replace": func(_, _ string, _ int, _ string) (string, error) { + isLocal = true + return "", nil + }, + "replace_all": func(_, _, _ string) (string, error) { + isLocal = true + return "", nil + }, } tpl, err := texttemplate.New("hcl2_upgrade"). diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index 1d8818e4e..1e3ce491f 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -28,6 +28,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "aws-access-config", flags: []string{}}, {folder: "variables-only", flags: []string{}}, {folder: "variables-with-variables", flags: []string{}}, + {folder: "complete-variables-with-template-engine", flags: []string{}}, } for _, tc := range tc { diff --git a/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl new file mode 100644 index 000000000..1116310d6 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl @@ -0,0 +1,58 @@ + +variable "env_test" { + type = string + default = "${env("TEST_ENV")}" +} + +locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } + +# 5 errors occurred upgrading the following block: +# unhandled "lower" call: +# there is no way to automatically upgrade the "lower" call. +# Please manually upgrade to `lower(var.example)` +# Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/lower for more infos. + +# unhandled "replace" call: +# there is no way to automatically upgrade the "replace" call. +# Please manually upgrade to `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` +# Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. + +# unhandled "replace_all" call: +# there is no way to automatically upgrade the "replace_all" call. +# Please manually upgrade to `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` +# Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. + +# unhandled "split" call: +# there is no way to automatically upgrade the "split" call. +# Please manually upgrade to `split(separator, string)` +# Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/split for more infos. + +# unhandled "upper" call: +# there is no way to automatically upgrade the "upper" call. +# Please manually upgrade to `upper(var.example)` +# Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/upper for more infos. +locals { + build_timestamp = "${local.timestamp}" + iso_datetime = "${local.timestamp}" + lower = "{{ lower `HELLO` }}" + pwd = "${path.cwd}" + replace = "{{ replace `b` `c` `ababa` 2 }}" + replace_all = "{{ replace_all `b` `c` `ababa` }}" + split = "{{ split `aba` `b` 1 }}" + temp_directory = "${path.root}" + upper = "{{ upper `hello` }}" + uuid = "${uuidv4()}" +} + +source "null" "autogenerated_1" { + communicator = "none" +} + +build { + sources = ["source.null.autogenerated_1"] + + provisioner "shell-local" { + inline = ["echo ${local.build_timestamp}", "echo ${local.temp_directory}", "echo ${local.iso_datetime}", "echo ${local.uuid}", "echo ${var.env_test}", "echo ${local.lower}", "echo ${local.upper}", "echo ${local.pwd}", "echo ${local.replace}", "echo ${local.replace_all}", "echo ${local.split}"] + } + +} diff --git a/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/input.json b/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/input.json new file mode 100644 index 000000000..17117221f --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/input.json @@ -0,0 +1,35 @@ +{ + "variables": { + "build_timestamp": "{{timestamp}}", + "temp_directory": "{{template_dir}}", + "uuid": "{{uuid}}", + "env_test": "{{env `TEST_ENV`}}", + "lower": "{{lower `HELLO`}}", + "upper": "{{upper `hello`}}", + "pwd": "{{pwd}}", + "replace": "{{replace `b` `c` 2 `ababa`}}", + "replace_all": "{{replace_all `b` `c` `ababa`}}", + "split": "{{split `aba` `b` 1}}", + "iso_datetime": "{{isotime `2006-01-02T15:04:05Z07:00`}}" + }, + "builders": [{ + "type": "null", + "communicator": "none" + }], + "provisioners": [{ + "type": "shell-local", + "inline": [ + "echo {{ user `build_timestamp`}}", + "echo {{ user `temp_directory`}}", + "echo {{ user `iso_datetime`}}", + "echo {{ user `uuid`}}", + "echo {{ user `env_test`}}", + "echo {{ user `lower`}}", + "echo {{ user `upper`}}", + "echo {{ user `pwd`}}", + "echo {{ user `replace`}}", + "echo {{ user `replace_all`}}", + "echo {{ user `split`}}" + ] + }] +} \ No newline at end of file diff --git a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl index 7cf8d558c..4293048e5 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl @@ -187,34 +187,38 @@ build { } - # template: hcl2_upgrade:2:38: executing "hcl2_upgrade" at : error calling clean_resource_name: unhandled "clean_resource_name" call: + # 1 error occurred upgrading the following block: + # unhandled "clean_resource_name" call: # there is no way to automatically upgrade the "clean_resource_name" call. # Please manually upgrade to use custom validation rules, `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://packer.io/docs/templates/hcl_templates/variables#custom-validation-rules , https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. provisioner "shell" { - inline = ["echo mybuild-{{isotime | clean_resource_name}}"] + inline = ["echo mybuild-{{ clean_resource_name `${local.timestamp}` }}"] } - # template: hcl2_upgrade:2:35: executing "hcl2_upgrade" at : error calling lower: unhandled "lower" call: + # 1 error occurred upgrading the following block: + # unhandled "lower" call: # there is no way to automatically upgrade the "lower" call. # Please manually upgrade to `lower(var.example)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/lower for more infos. provisioner "shell" { - inline = ["echo {{ `SOMETHING` | lower }}"] + inline = ["echo {{ lower `SOMETHING` }}"] } - # template: hcl2_upgrade:2:35: executing "hcl2_upgrade" at : error calling upper: unhandled "upper" call: + # 1 error occurred upgrading the following block: + # unhandled "upper" call: # there is no way to automatically upgrade the "upper" call. # Please manually upgrade to `upper(var.example)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/upper for more infos. provisioner "shell" { - inline = ["echo {{ `something` | upper }}"] + inline = ["echo {{ upper `something` }}"] } - # template: hcl2_upgrade:2:21: executing "hcl2_upgrade" at : error calling split: unhandled "split" call: + # 1 error occurred upgrading the following block: + # unhandled "split" call: # there is no way to automatically upgrade the "split" call. # Please manually upgrade to `split(separator, string)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/split for more infos. @@ -223,16 +227,18 @@ build { } - # template: hcl2_upgrade:2:21: executing "hcl2_upgrade" at : error calling replace_all: unhandled "replace_all" call: + # 1 error occurred upgrading the following block: + # unhandled "replace_all" call: # there is no way to automatically upgrade the "replace_all" call. # Please manually upgrade to `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. provisioner "shell" { - inline = ["echo {{ replace_all `-` `/` build_name }}"] + inline = ["echo {{ replace_all `-` `/` `${build.name}` }}"] } - # template: hcl2_upgrade:2:21: executing "hcl2_upgrade" at : error calling replace: unhandled "replace" call: + # 1 error occurred upgrading the following block: + # unhandled "replace" call: # there is no way to automatically upgrade the "replace" call. # Please manually upgrade to `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. diff --git a/command/test-fixtures/hcl2_upgrade/complete/input.json b/command/test-fixtures/hcl2_upgrade/complete/input.json index 5efa2c419..3c7461ed6 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/input.json +++ b/command/test-fixtures/hcl2_upgrade/complete/input.json @@ -180,7 +180,7 @@ { "type": "shell", "inline": [ - "echo {{ replace `some-string` `-` `/` 1 }}" + "echo {{ replace `some-string` `-` 1 `/` }}" ] }, { diff --git a/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl index 779fa6ed9..93c51bdc4 100644 --- a/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl @@ -145,34 +145,38 @@ build { } - # template: hcl2_upgrade:2:38: executing "hcl2_upgrade" at : error calling clean_resource_name: unhandled "clean_resource_name" call: + # 1 error occurred upgrading the following block: + # unhandled "clean_resource_name" call: # there is no way to automatically upgrade the "clean_resource_name" call. # Please manually upgrade to use custom validation rules, `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://packer.io/docs/templates/hcl_templates/variables#custom-validation-rules , https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. provisioner "shell" { - inline = ["echo mybuild-{{isotime | clean_resource_name}}"] + inline = ["echo mybuild-{{ clean_resource_name `${local.timestamp}` }}"] } - # template: hcl2_upgrade:2:35: executing "hcl2_upgrade" at : error calling lower: unhandled "lower" call: + # 1 error occurred upgrading the following block: + # unhandled "lower" call: # there is no way to automatically upgrade the "lower" call. # Please manually upgrade to `lower(var.example)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/lower for more infos. provisioner "shell" { - inline = ["echo {{ `SOMETHING` | lower }}"] + inline = ["echo {{ lower `SOMETHING` }}"] } - # template: hcl2_upgrade:2:35: executing "hcl2_upgrade" at : error calling upper: unhandled "upper" call: + # 1 error occurred upgrading the following block: + # unhandled "upper" call: # there is no way to automatically upgrade the "upper" call. # Please manually upgrade to `upper(var.example)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/upper for more infos. provisioner "shell" { - inline = ["echo {{ `something` | upper }}"] + inline = ["echo {{ upper `something` }}"] } - # template: hcl2_upgrade:2:21: executing "hcl2_upgrade" at : error calling split: unhandled "split" call: + # 1 error occurred upgrading the following block: + # unhandled "split" call: # there is no way to automatically upgrade the "split" call. # Please manually upgrade to `split(separator, string)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/split for more infos. @@ -181,16 +185,18 @@ build { } - # template: hcl2_upgrade:2:21: executing "hcl2_upgrade" at : error calling replace_all: unhandled "replace_all" call: + # 1 error occurred upgrading the following block: + # unhandled "replace_all" call: # there is no way to automatically upgrade the "replace_all" call. # Please manually upgrade to `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. provisioner "shell" { - inline = ["echo {{ replace_all `-` `/` build_name }}"] + inline = ["echo {{ replace_all `-` `/` `${build.name}` }}"] } - # template: hcl2_upgrade:2:21: executing "hcl2_upgrade" at : error calling replace: unhandled "replace" call: + # 1 error occurred upgrading the following block: + # unhandled "replace" call: # there is no way to automatically upgrade the "replace" call. # Please manually upgrade to `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. diff --git a/command/test-fixtures/hcl2_upgrade/without-annotations/input.json b/command/test-fixtures/hcl2_upgrade/without-annotations/input.json index 1b4eb5dec..fdd5cf257 100644 --- a/command/test-fixtures/hcl2_upgrade/without-annotations/input.json +++ b/command/test-fixtures/hcl2_upgrade/without-annotations/input.json @@ -180,7 +180,7 @@ { "type": "shell", "inline": [ - "echo {{ replace `some-string` `-` `/` 1 }}" + "echo {{ replace `some-string` `-` 1 `/` }}" ] }, { From fc23eb9241ce1a52ebfaa12e79a075d8b8633182 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Tue, 23 Feb 2021 18:00:02 +0100 Subject: [PATCH 042/212] add missing provisioner override hcl docs (#10684) --- .../blocks/build/provisioner.mdx | 60 +++++++++++++++++++ .../partials/provisioners/common-config.mdx | 48 +++++++-------- 2 files changed, 84 insertions(+), 24 deletions(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx index 8c37560a3..6b6e98038 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx @@ -76,6 +76,66 @@ build { The values within `only` or `except` are _build names_, not builder types. +## Build-Specific Overrides + +While the goal of Packer is to produce identical machine images, it sometimes +requires periods of time where the machines are different before they +eventually converge to be identical. In these cases, different configurations +for provisioners may be necessary depending on the build. This can be done +using build-specific overrides. + +An example of where this might be necessary is when building both an EC2 AMI +and a VMware machine. The source EC2 AMI may setup a user with administrative +privileges by default, whereas the VMware machine doesn't have these +privileges. In this case, the shell script may need to be executed differently. +Of course, the goal is that hopefully the shell script converges these two +images to be identical. However, they may initially need to be run differently. + +This example is shown below: + +```hcl +source "null" "example1" { + communicator = "none" +} + +source "null" "example2" { + communicator = "none" +} + +source "null" "example3" { + communicator = "none" +} + +build { + sources = ["source.null.example2", "source.null.example3"] + + source "source.null.example1" { + // Give a name to this source + name = "renamed" + } + + provisioner "shell-local" { + inline = ["echo not overridden"] + override = { + example3 = { + inline = ["echo overrides for example3"] + } + // Refer to the source with the given name + renamed = { + inline = ["echo overrides for renamed"] + } + } + } +} +``` + +As you can see, the `override` key is used. The value of this key is another +HCL attribute map where the key is the name of a [builder +definition](/docs/templates/hcl_templates/blocks/source). The value of this is in turn +another HCL attribute map. This HCL attribute map simply contains the provisioner +configuration as normal. This configuration is merged into the default +provisioner configuration. + ## On Error Provisioner You can optionally create a single specialized provisioner called an diff --git a/website/content/partials/provisioners/common-config.mdx b/website/content/partials/provisioners/common-config.mdx index ed8ca8a72..15cd1b814 100644 --- a/website/content/partials/provisioners/common-config.mdx +++ b/website/content/partials/provisioners/common-config.mdx @@ -10,6 +10,30 @@ Parameters common to all provisioners: - `override` (object) - Override the builder with different settings for a specific builder, eg : + In HCL2: + + ```hcl + source "null" "example1" { + communicator = "none" + } + + source "null" "example2" { + communicator = "none" + } + + build { + sources = ["source.null.example1", "source.null.example2"] + provisioner "shell-local" { + inline = ["echo not overridden"] + override = { + example1 = { + inline = ["echo yes overridden"] + } + } + } + } + ``` + In JSON: ```json @@ -40,29 +64,5 @@ Parameters common to all provisioners: } ``` - In HCL2: - - ```hcl - source "null" "example1" { - communicator = "none" - } - - source "null" "example2" { - communicator = "none" - } - - build { - sources = ["source.null.example1", "source.null.example2"] - provisioner "shell-local" { - inline = ["echo not overridden"] - override = { - example1 = { - inline = ["echo yes overridden"] - } - } - } - } - ``` - - `timeout` (duration) - If the provisioner takes more than for example `1h10m1s` or `10m` to finish, the provisioner will timeout and fail. From 160be7e77386ebdf9725f37afdcb51cdb302e86e Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 23 Feb 2021 09:23:35 -0800 Subject: [PATCH 043/212] refactor aws test tooling so we can apply common test function helpers to ebsvolume tests --- builder/amazon/common/access_config_test.go | 14 ++------ builder/amazon/common/ami_config_test.go | 17 ++++------ .../common/step_ami_region_copy_test.go | 24 +++++++------- builder/amazon/common/test_helper_funcs.go | 25 +++++++++++++++ builder/amazon/ebsvolume/builder.go | 2 +- .../ebsvolume/step_snapshot_ebs_volumes.go | 16 +++++----- .../step_snapshot_ebs_volumes_test.go | 32 +++++++++++++++++-- 7 files changed, 84 insertions(+), 46 deletions(-) create mode 100644 builder/amazon/common/test_helper_funcs.go diff --git a/builder/amazon/common/access_config_test.go b/builder/amazon/common/access_config_test.go index 0e2d4b4fa..e1eeaa05f 100644 --- a/builder/amazon/common/access_config_test.go +++ b/builder/amazon/common/access_config_test.go @@ -5,20 +5,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/ec2/ec2iface" ) -func testAccessConfig() *AccessConfig { - return &AccessConfig{ - getEC2Connection: func() ec2iface.EC2API { - return &mockEC2Client{} - }, - PollingConfig: new(AWSPollingConfig), - } -} - func TestAccessConfigPrepare_Region(t *testing.T) { - c := testAccessConfig() + c := FakeAccessConfig() c.RawRegion = "us-east-12" err := c.ValidateRegion(c.RawRegion) @@ -40,7 +30,7 @@ func TestAccessConfigPrepare_Region(t *testing.T) { } func TestAccessConfigPrepare_RegionRestricted(t *testing.T) { - c := testAccessConfig() + c := FakeAccessConfig() // Create a Session with a custom region c.session = session.Must(session.NewSession(&aws.Config{ diff --git a/builder/amazon/common/ami_config_test.go b/builder/amazon/common/ami_config_test.go index ca2815589..1a3435868 100644 --- a/builder/amazon/common/ami_config_test.go +++ b/builder/amazon/common/ami_config_test.go @@ -7,7 +7,6 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" - "github.com/aws/aws-sdk-go/service/ec2/ec2iface" "github.com/hashicorp/packer-plugin-sdk/template/config" ) @@ -18,14 +17,14 @@ func testAMIConfig() *AMIConfig { } func getFakeAccessConfig(region string) *AccessConfig { - c := testAccessConfig() + c := FakeAccessConfig() c.RawRegion = region return c } func TestAMIConfigPrepare_name(t *testing.T) { c := testAMIConfig() - accessConf := testAccessConfig() + accessConf := FakeAccessConfig() if err := c.Prepare(accessConf, nil); err != nil { t.Fatalf("shouldn't have err: %s", err) } @@ -36,10 +35,6 @@ func TestAMIConfigPrepare_name(t *testing.T) { } } -type mockEC2Client struct { - ec2iface.EC2API -} - func (m *mockEC2Client) DescribeRegions(*ec2.DescribeRegionsInput) (*ec2.DescribeRegionsOutput, error) { return &ec2.DescribeRegionsOutput{ Regions: []*ec2.Region{ @@ -56,7 +51,7 @@ func TestAMIConfigPrepare_regions(t *testing.T) { var errs []error var err error - accessConf := testAccessConfig() + accessConf := FakeAccessConfig() mockConn := &mockEC2Client{} if errs = c.prepareRegions(accessConf); len(errs) > 0 { t.Fatalf("shouldn't have err: %#v", errs) @@ -163,7 +158,7 @@ func TestAMIConfigPrepare_Share_EncryptedBoot(t *testing.T) { c.AMIUsers = []string{"testAccountID"} c.AMIEncryptBootVolume = config.TriTrue - accessConf := testAccessConfig() + accessConf := FakeAccessConfig() c.AMIKmsKeyId = "" if err := c.Prepare(accessConf, nil); err == nil { @@ -179,7 +174,7 @@ func TestAMIConfigPrepare_ValidateKmsKey(t *testing.T) { c := testAMIConfig() c.AMIEncryptBootVolume = config.TriTrue - accessConf := testAccessConfig() + accessConf := FakeAccessConfig() validCases := []string{ "abcd1234-e567-890f-a12b-a123b4cd56ef", @@ -215,7 +210,7 @@ func TestAMIConfigPrepare_ValidateKmsKey(t *testing.T) { func TestAMINameValidation(t *testing.T) { c := testAMIConfig() - accessConf := testAccessConfig() + accessConf := FakeAccessConfig() c.AMIName = "aa" if err := c.Prepare(accessConf, nil); err == nil { diff --git a/builder/amazon/common/step_ami_region_copy_test.go b/builder/amazon/common/step_ami_region_copy_test.go index 9f5e3fe5d..4c809b665 100644 --- a/builder/amazon/common/step_ami_region_copy_test.go +++ b/builder/amazon/common/step_ami_region_copy_test.go @@ -105,7 +105,7 @@ func TestStepAMIRegionCopy_duplicates(t *testing.T) { // ------------------------------------------------------------------------ stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-east-1"}, AMIKmsKeyId: "12345", // Original region key in regionkeyids is different than in amikmskeyid @@ -131,7 +131,7 @@ func TestStepAMIRegionCopy_duplicates(t *testing.T) { // the ami is only copied once. stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-east-1"}, Name: "fake-ami-name", OriginalRegion: "us-east-1", @@ -152,7 +152,7 @@ func TestStepAMIRegionCopy_duplicates(t *testing.T) { // the ami is only copied once. stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-east-1"}, EncryptBootVolume: config.TriFalse, Name: "fake-ami-name", @@ -174,7 +174,7 @@ func TestStepAMIRegionCopy_duplicates(t *testing.T) { // ------------------------------------------------------------------------ stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), // Many duplicates for only 3 actual values Regions: []string{"us-east-1", "us-west-2", "us-west-2", "ap-east-1", "ap-east-1", "ap-east-1"}, AMIKmsKeyId: "IlikePancakes", @@ -203,7 +203,7 @@ func TestStepAMIRegionCopy_duplicates(t *testing.T) { // ------------------------------------------------------------------------ stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), // Many duplicates for only 3 actual values Regions: []string{"us-east-1", "us-west-2", "us-west-2", "ap-east-1", "ap-east-1", "ap-east-1"}, Name: "fake-ami-name", @@ -223,7 +223,7 @@ func TestStepAMIRegionCopy_duplicates(t *testing.T) { func TestStepAmiRegionCopy_nil_encryption(t *testing.T) { // create step stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: make([]string, 0), AMIKmsKeyId: "", RegionKeyIds: make(map[string]string), @@ -249,7 +249,7 @@ func TestStepAmiRegionCopy_nil_encryption(t *testing.T) { func TestStepAmiRegionCopy_true_encryption(t *testing.T) { // create step stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: make([]string, 0), AMIKmsKeyId: "", RegionKeyIds: make(map[string]string), @@ -275,7 +275,7 @@ func TestStepAmiRegionCopy_true_encryption(t *testing.T) { func TestStepAmiRegionCopy_nil_intermediary(t *testing.T) { // create step stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: make([]string, 0), AMIKmsKeyId: "", RegionKeyIds: make(map[string]string), @@ -303,7 +303,7 @@ func TestStepAmiRegionCopy_AMISkipBuildRegion(t *testing.T) { // ------------------------------------------------------------------------ stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-west-1"}, AMIKmsKeyId: "", RegionKeyIds: map[string]string{"us-west-1": "abcde"}, @@ -329,7 +329,7 @@ func TestStepAmiRegionCopy_AMISkipBuildRegion(t *testing.T) { // skip build region is false. // ------------------------------------------------------------------------ stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-west-1"}, AMIKmsKeyId: "", RegionKeyIds: make(map[string]string), @@ -354,7 +354,7 @@ func TestStepAmiRegionCopy_AMISkipBuildRegion(t *testing.T) { // skip build region is false, but encrypt is true // ------------------------------------------------------------------------ stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-west-1"}, AMIKmsKeyId: "", RegionKeyIds: map[string]string{"us-west-1": "abcde"}, @@ -380,7 +380,7 @@ func TestStepAmiRegionCopy_AMISkipBuildRegion(t *testing.T) { // skip build region is true, and encrypt is true // ------------------------------------------------------------------------ stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: testAccessConfig(), + AccessConfig: FakeAccessConfig(), Regions: []string{"us-west-1"}, AMIKmsKeyId: "", RegionKeyIds: map[string]string{"us-west-1": "abcde"}, diff --git a/builder/amazon/common/test_helper_funcs.go b/builder/amazon/common/test_helper_funcs.go new file mode 100644 index 000000000..c951ba855 --- /dev/null +++ b/builder/amazon/common/test_helper_funcs.go @@ -0,0 +1,25 @@ +package common + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/ec2/ec2iface" +) + +type mockEC2Client struct { + ec2iface.EC2API +} + +func FakeAccessConfig() *AccessConfig { + accessConfig := AccessConfig{ + getEC2Connection: func() ec2iface.EC2API { + return &mockEC2Client{} + }, + PollingConfig: new(AWSPollingConfig), + } + accessConfig.session = session.Must(session.NewSession(&aws.Config{ + Region: aws.String("us-west-1"), + })) + + return &accessConfig +} diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index b311cd1b8..25a24fb39 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -317,7 +317,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) &stepSnapshotEBSVolumes{ PollingConfig: b.config.PollingConfig, VolumeMapping: b.config.VolumeMappings, - AccessConfig: b.config.AccessConfig, + AccessConfig: &b.config.AccessConfig, Ctx: b.config.ctx, }, } diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index b86300dc2..5db0213ac 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -7,18 +7,18 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" - awscommon "github.com/hashicorp/packer/builder/amazon/common" "github.com/hashicorp/packer-plugin-sdk/multistep" "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" + awscommon "github.com/hashicorp/packer/builder/amazon/common" ) type stepSnapshotEBSVolumes struct { PollingConfig *awscommon.AWSPollingConfig - AccessConfig awscommon.AccessConfig + AccessConfig *awscommon.AccessConfig VolumeMapping []BlockDevice //Map of SnapshotID: BlockDevice, Where *BlockDevice is in VolumeMapping - SnapshotMap map[string]*BlockDevice + snapshotMap map[string]*BlockDevice Ctx interpolate.Context } @@ -27,7 +27,7 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB instance := state.Get("instance").(*ec2.Instance) ui := state.Get("ui").(packer.Ui) - s.SnapshotMap = make(map[string]*BlockDevice) + s.snapshotMap = make(map[string]*BlockDevice) for _, instanceBlockDevices := range instance.BlockDeviceMappings { for _, configVolumeMapping := range s.VolumeMapping { @@ -72,13 +72,13 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB return multistep.ActionHalt } ui.Message(fmt.Sprintf("Requested Snapshot of Volume %s: %s", *instanceBlockDevices.Ebs.VolumeId, *snapshot.SnapshotId)) - s.SnapshotMap[*snapshot.SnapshotId] = &configVolumeMapping + s.snapshotMap[*snapshot.SnapshotId] = &configVolumeMapping } } } ui.Say("Waiting for Snapshots to become ready...") - for snapID := range s.SnapshotMap { + for snapID := range s.snapshotMap { ui.Message(fmt.Sprintf("Waiting for %s to be ready.", snapID)) err := s.PollingConfig.WaitUntilSnapshotDone(ctx, ec2conn, snapID) if err != nil { @@ -93,7 +93,7 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB //Attach User and Group permissions to snapshots ui.Say("Setting User/Group Permissions for Snapshots...") - for snapID, bd := range s.SnapshotMap { + for snapID, bd := range s.snapshotMap { snapshotOptions := make(map[string]*ec2.ModifySnapshotAttributeInput) if len(bd.SnapshotGroups) > 0 { @@ -151,7 +151,7 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB snapshots := make(EbsSnapshots) currentregion := s.AccessConfig.SessionRegion() - for snapID := range s.SnapshotMap { + for snapID := range s.snapshotMap { snapshots[currentregion] = append( snapshots[currentregion], snapID) diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go index d43b143ab..e97e54452 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go @@ -7,11 +7,13 @@ import ( "testing" "github.com/aws/aws-sdk-go/aws" + //"github.com/aws/aws-sdk-go/service/ec2" + "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" - "github.com/hashicorp/packer/builder/amazon/common" "github.com/hashicorp/packer-plugin-sdk/multistep" "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer/builder/amazon/common" ) // Define a mock struct to be used in unit tests for common aws steps. @@ -76,17 +78,43 @@ func TestStepSnapshot_run_simple(t *testing.T) { } state := tState(t) + state.Put("instance", &ec2.Instance{ + InstanceId: aws.String("instance-id"), + }) + + accessConfig := common.FakeAccessConfig() + + volMap := BlockDevices{ + { + awscommon.BlockDevice `mapstructure:",squash"` + // Key/value pair tags to apply to the volume. These are retained after the builder + // completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see + // [Build template data](#build-template-data) for more information. + Tags map[string]string `mapstructure:"tags" required:"false"` + // Same as [`tags`](#tags) but defined as a singular repeatable block + // containing a `key` and a `value` field. In HCL2 mode the + // [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) + // will allow you to create those programatically. + Tag config.KeyValues `mapstructure:"tag" required:"false"` + + // Create a Snapshot of this Volume. + SnapshotVolume bool `mapstructure:"snapshot_volume" required:"false"` + + awscommon.SnapshotConfig `mapstructure:",squash"` +} +} //Todo add fake volumes, for the snap shot step to Snapshot step := stepSnapshotEBSVolumes{ PollingConfig: new(common.AWSPollingConfig), //Dosnt look like builder sets this up + AccessConfig: accessConfig, VolumeMapping: b.config.VolumeMappings, Ctx: b.config.ctx, } step.Run(context.Background(), state) - if len(step.SnapshotMap) != 1 { + if len(step.snapshotMap) != 1 { t.Fatalf("Missing Snapshot from step") } } From 74a6c1987c1c6ab40367cc80c7ebed663ee347ac Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 23 Feb 2021 10:22:57 -0800 Subject: [PATCH 044/212] change name of singular block device in loop to be less confusing; fix snapshot tests --- .../ebsvolume/step_snapshot_ebs_volumes.go | 16 +-- .../step_snapshot_ebs_volumes_test.go | 110 ++++++++++++++---- 2 files changed, 93 insertions(+), 33 deletions(-) diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go index 5db0213ac..4b3408241 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go @@ -29,19 +29,19 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB s.snapshotMap = make(map[string]*BlockDevice) - for _, instanceBlockDevices := range instance.BlockDeviceMappings { + for _, instanceBlockDevice := range instance.BlockDeviceMappings { for _, configVolumeMapping := range s.VolumeMapping { //Find the config entry for the instance blockDevice - if configVolumeMapping.DeviceName == *instanceBlockDevices.DeviceName { + if configVolumeMapping.DeviceName == *instanceBlockDevice.DeviceName { //Skip Volumes that are not set to create snapshot if configVolumeMapping.SnapshotVolume != true { continue } - ui.Message(fmt.Sprintf("Compiling list of tags to apply to snapshot from Volume %s...", *instanceBlockDevices.DeviceName)) + ui.Message(fmt.Sprintf("Compiling list of tags to apply to snapshot from Volume %s...", *instanceBlockDevice.DeviceName)) tags, err := awscommon.TagMap(configVolumeMapping.SnapshotTags).EC2Tags(s.Ctx, s.AccessConfig.SessionRegion(), state) if err != nil { - err := fmt.Errorf("Error generating tags for snapshot %s: %s", *instanceBlockDevices.DeviceName, err) + err := fmt.Errorf("Error generating tags for snapshot %s: %s", *instanceBlockDevice.DeviceName, err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt @@ -54,7 +54,7 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB } input := &ec2.CreateSnapshotInput{ - VolumeId: aws.String(*instanceBlockDevices.Ebs.VolumeId), + VolumeId: aws.String(*instanceBlockDevice.Ebs.VolumeId), TagSpecifications: []*ec2.TagSpecification{tagSpec}, } @@ -63,15 +63,15 @@ func (s *stepSnapshotEBSVolumes) Run(ctx context.Context, state multistep.StateB input.TagSpecifications = nil } - ui.Message(fmt.Sprintf("Requesting snapshot of volume: %s...", *instanceBlockDevices.Ebs.VolumeId)) + ui.Message(fmt.Sprintf("Requesting snapshot of volume: %s...", *instanceBlockDevice.Ebs.VolumeId)) snapshot, err := ec2conn.CreateSnapshot(input) if err != nil || snapshot == nil { - err := fmt.Errorf("Error generating snapsot for volume %s: %s", *instanceBlockDevices.Ebs.VolumeId, err) + err := fmt.Errorf("Error generating snapsot for volume %s: %s", *instanceBlockDevice.Ebs.VolumeId, err) state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } - ui.Message(fmt.Sprintf("Requested Snapshot of Volume %s: %s", *instanceBlockDevices.Ebs.VolumeId, *snapshot.SnapshotId)) + ui.Message(fmt.Sprintf("Requested Snapshot of Volume %s: %s", *instanceBlockDevice.Ebs.VolumeId, *snapshot.SnapshotId)) s.snapshotMap[*snapshot.SnapshotId] = &configVolumeMapping } } diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go index e97e54452..b4b432319 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go @@ -3,10 +3,12 @@ package ebsvolume import ( "bytes" "context" + "fmt" "sync" "testing" "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/request" //"github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2" @@ -31,6 +33,21 @@ type mockEC2Conn struct { lock sync.Mutex } +func (m *mockEC2Conn) CreateSnapshot(input *ec2.CreateSnapshotInput) (*ec2.Snapshot, error) { + snap := &ec2.Snapshot{ + // This isn't typical amazon format, but injecting the volume id into + // this field lets us verify that the right volume was snapshotted with + // a simple string comparison + SnapshotId: aws.String(fmt.Sprintf("snap-of-%s", *input.VolumeId)), + } + + return snap, nil +} + +func (m *mockEC2Conn) WaitUntilSnapshotCompletedWithContext(aws.Context, *ec2.DescribeSnapshotsInput, ...request.WaiterOption) error { + return nil +} + func getMockConn(config *common.AccessConfig, target string) (ec2iface.EC2API, error) { mockConn := &mockEC2Conn{ Config: aws.NewConfig(), @@ -50,6 +67,25 @@ func tState(t *testing.T) multistep.StateBag { conn, _ := getMockConn(&common.AccessConfig{}, "us-east-2") state.Put("ec2", conn) + // Store a fake instance that contains a block device that matches the + // volumes defined in the config above + state.Put("instance", &ec2.Instance{ + InstanceId: aws.String("instance-id"), + BlockDeviceMappings: []*ec2.InstanceBlockDeviceMapping{ + { + DeviceName: aws.String("/dev/xvda"), + Ebs: &ec2.EbsInstanceBlockDevice{ + VolumeId: aws.String("vol-1234"), + }, + }, + { + DeviceName: aws.String("/dev/xvdb"), + Ebs: &ec2.EbsInstanceBlockDevice{ + VolumeId: aws.String("vol-5678"), + }, + }, + }, + }) return state } @@ -63,6 +99,7 @@ func TestStepSnapshot_run_simple(t *testing.T) { "device_name": "/dev/xvdb", "volume_size": "32", "delete_on_termination": true, + "snapshot_volume": true, }, } @@ -78,35 +115,11 @@ func TestStepSnapshot_run_simple(t *testing.T) { } state := tState(t) - state.Put("instance", &ec2.Instance{ - InstanceId: aws.String("instance-id"), - }) accessConfig := common.FakeAccessConfig() - volMap := BlockDevices{ - { - awscommon.BlockDevice `mapstructure:",squash"` - // Key/value pair tags to apply to the volume. These are retained after the builder - // completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see - // [Build template data](#build-template-data) for more information. - Tags map[string]string `mapstructure:"tags" required:"false"` - // Same as [`tags`](#tags) but defined as a singular repeatable block - // containing a `key` and a `value` field. In HCL2 mode the - // [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - // will allow you to create those programatically. - Tag config.KeyValues `mapstructure:"tag" required:"false"` - - // Create a Snapshot of this Volume. - SnapshotVolume bool `mapstructure:"snapshot_volume" required:"false"` - - awscommon.SnapshotConfig `mapstructure:",squash"` -} -} - //Todo add fake volumes, for the snap shot step to Snapshot - step := stepSnapshotEBSVolumes{ - PollingConfig: new(common.AWSPollingConfig), //Dosnt look like builder sets this up + PollingConfig: new(common.AWSPollingConfig), AccessConfig: accessConfig, VolumeMapping: b.config.VolumeMappings, Ctx: b.config.ctx, @@ -117,4 +130,51 @@ func TestStepSnapshot_run_simple(t *testing.T) { if len(step.snapshotMap) != 1 { t.Fatalf("Missing Snapshot from step") } + + if volmapping := step.snapshotMap["snap-of-vol-5678"]; volmapping == nil { + t.Fatalf("Didn't snapshot correct volume: Map is %#v", step.snapshotMap) + } +} + +func TestStepSnapshot_run_no_snaps(t *testing.T) { + var b Builder + config := testConfig() //from builder_test + + //Set some snapshot settings + config["ebs_volumes"] = []map[string]interface{}{ + { + "device_name": "/dev/xvdb", + "volume_size": "32", + "delete_on_termination": true, + "snapshot_volume": false, + }, + } + + generatedData, warnings, err := b.Prepare(config) + if len(warnings) > 0 { + t.Fatalf("bad: %#v", warnings) + } + if err != nil { + t.Fatalf("should not have error: %s", err) + } + if len(generatedData) == 0 { + t.Fatalf("Generated data should not be empty") + } + + state := tState(t) + + accessConfig := common.FakeAccessConfig() + + step := stepSnapshotEBSVolumes{ + PollingConfig: new(common.AWSPollingConfig), + AccessConfig: accessConfig, + VolumeMapping: b.config.VolumeMappings, + Ctx: b.config.ctx, + } + + step.Run(context.Background(), state) + + if len(step.snapshotMap) != 0 { + t.Fatalf("Shouldn't have snapshotted any volumes") + } } From 25920b2bd3ff5cc0df731c65fe9e69fb15d09095 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 23 Feb 2021 10:38:15 -0800 Subject: [PATCH 045/212] remove unused mock fields --- .../amazon/ebsvolume/step_snapshot_ebs_volumes_test.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go index b4b432319..fa946efc7 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go +++ b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "fmt" - "sync" "testing" "github.com/aws/aws-sdk-go/aws" @@ -22,15 +21,6 @@ import ( type mockEC2Conn struct { ec2iface.EC2API Config *aws.Config - - // Counters to figure out what code path was taken - copyImageCount int - describeImagesCount int - deregisterImageCount int - deleteSnapshotCount int - waitCount int - - lock sync.Mutex } func (m *mockEC2Conn) CreateSnapshot(input *ec2.CreateSnapshotInput) (*ec2.Snapshot, error) { From e441733cbdc9fae58319d5366ef00e26e7fffbca Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 24 Feb 2021 13:33:08 -0500 Subject: [PATCH 046/212] Update plugin location docs This change updates the multi-component name to reflect the name generated by the goreleaser configuration in packer-plugin-scaffolding. It also adds a small call out about the SHA256SUM file that needs to be present for binaries installed via `packer init` in case maintainers want to test packer init locally without having to call out to GitHub. --- .../content/partials/plugins/plugin-location.mdx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/website/content/partials/plugins/plugin-location.mdx b/website/content/partials/plugins/plugin-location.mdx index 3935c2bf9..cfb6df94d 100644 --- a/website/content/partials/plugins/plugin-location.mdx +++ b/website/content/partials/plugins/plugin-location.mdx @@ -12,7 +12,7 @@ found version matching `required_plugins` will be taken into consideration. 1. The directory where `packer` is, or the executable directory. 1. The current working directory. (`"."`) -1. The `PACKER_HOME_DIR/plugins` directory. PACKER_HOME_DIR refers to *[Packer's home +1. The `PACKER_HOME_DIR/plugins` directory. PACKER_HOME_DIR refers to *[Packer's home directory](/docs/configure#packer-s-home-directory)*, if it could be found. 1. The director(y/ies) under the `PACKER_PLUGIN_PATH` env var, if `PACKER_PLUGIN_PATH` is set. @@ -39,14 +39,20 @@ system with no `PACKER_PLUGIN_PATH` env var set. During initialization, on a `darwin_amd64` system, Packer will look-up for the following files: -* `PACKER_EXEC_DIR/github.com/azr/happycloud/packer-plugin-happycloud_*_darwin_amd64_x5.0` -* `./github.com/azr/happycloud/packer-plugin-happycloud_*_darwin_amd64_x5.0` -* `PACKER_HOME_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_darwin_amd64_x5.0` -* `PACKER_PLUGIN_PATH/github.com/azr/happycloud/packer-plugin-happycloud_*_darwin_amd64_x5.0` +* `PACKER_EXEC_DIR/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` +* `./github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` +* `PACKER_HOME_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` +* `PACKER_PLUGIN_PATH/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` * `./packer-plugin-happycloud` The first plugin-name/version files found will take precedence. +For plugins located under the `github.com/azr/happycloud/` directory structure an accompanying SHA256SUM file +will be required in order for `packer init` to ensure the plugin being loaded has not been tampered with. +The SHA256SUM file will be automatically generated when a plugin is installed via `packer init` if the plugin +was installed manually into `PACKER_HOME_DIR/plugins/github.com/azr/happycloud/` then the file +`PACKER_HOME_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64_SHA256SUM` must be generated manually as well. + -> Note: `PACKER_HOME_DIR` is not an actual env var and refers to [Packer's home directory](#packer-s-home-directory). `PACKER_EXEC_DIR` is not an actual env var and refers to the directory where `packer` is, or the executable directory. From 1c6daa23ac5a9526138354e3324b3ac57f84a847 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 Feb 2021 11:31:22 -0500 Subject: [PATCH 047/212] Add UpCloud builder to community builders page (#10689) * Add UpCloud builder to community builders page * Update plugin description --- website/content/partials/builders/community_builders.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/website/content/partials/builders/community_builders.mdx b/website/content/partials/builders/community_builders.mdx index 79598629b..d8dc7394f 100644 --- a/website/content/partials/builders/community_builders.mdx +++ b/website/content/partials/builders/community_builders.mdx @@ -5,9 +5,10 @@ - [packer-builder-arm-image](https://github.com/solo-io/packer-builder-arm-image) - simple builder lets you extend on existing system images. - [packer-builder-arm](https://github.com/mkaczanowski/packer-builder-arm) - flexible builder lets you extend or build images from scratch with variety of options (ie. custom partition table). -- [Vultr builder](https://github.com/vultr/packer-builder-vultr) - A builder - for creating [Vultr](https://www.vultr.com/) snapshots. - - [Huawei Cloud ECS builder](https://github.com/huaweicloud/packer-builder-huaweicloud-ecs) - Plugin for creating [Huawei Cloud ECS](https://www.huaweicloud.com/intl/en-us/) images. +- [UpCloud builder](https://github.com/UpCloudLtd/packer-plugin-upcloud) - A suite of Packer plugins for provisioning Upcloud servers. + +- [Vultr builder](https://github.com/vultr/packer-builder-vultr) - A builder for creating [Vultr](https://www.vultr.com/) snapshots. + - [Citrix XenServer/Citrix Hypervisor](https://github.com/xenserver/packer-builder-xenserver) - Plugin for creating [Citrix XenServer/Citrix Hypervisor](https://xenserver.org/) images from an iso image or from an existing template. From 824fe13bd5f52d6de5fc438ca023de78d526aada Mon Sep 17 00:00:00 2001 From: kiddom-kq <72228610+kiddom-kq@users.noreply.github.com> Date: Fri, 26 Feb 2021 12:15:15 -0800 Subject: [PATCH 048/212] Update index.mdx While trying to get packer to: 1. Assume a role 2. use `auto` price for spot instances 2. Assign an instance profile to the provisioned instance, I hit this error: ``` The provided credentials do not have permission to create the service-linked role for EC2 Spot Instances. ``` Adding the `iam:CreateServiceLinkedRole` entitlement to the role that packer assumes was all I needed to do. --- website/content/docs/builders/amazon/index.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/website/content/docs/builders/amazon/index.mdx b/website/content/docs/builders/amazon/index.mdx index f439d4439..011137154 100644 --- a/website/content/docs/builders/amazon/index.mdx +++ b/website/content/docs/builders/amazon/index.mdx @@ -257,6 +257,17 @@ work, but specifics will depend on your use-case. } ``` +If using an existing instance profile with spot instances/spot pricing, the `iam:CreateServiceLinkedRole` action is also required: + +```json +{ + "Sid": "PackerIAMPassRole", + "Effect": "Allow", + "Action": ["iam:PassRole", "iam:GetInstanceProfile", "iam:CreateServiceLinkedRole"], + "Resource": ["*"] +} +``` + In case when you're creating a temporary instance profile you will require to have following IAM policies. From eea215adf9c289eb4b7545a899006580260514e2 Mon Sep 17 00:00:00 2001 From: Alvaro Miranda Aguilera Date: Mon, 1 Mar 2021 11:06:18 +0100 Subject: [PATCH 049/212] Update VBoxManageConfig-not-required.mdx (#10707) replace indentation with spaces --- builder/virtualbox/common/vboxmanage_config.go | 2 +- .../builder/virtualbox/common/VBoxManageConfig-not-required.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/virtualbox/common/vboxmanage_config.go b/builder/virtualbox/common/vboxmanage_config.go index 577998ea0..915a47c45 100644 --- a/builder/virtualbox/common/vboxmanage_config.go +++ b/builder/virtualbox/common/vboxmanage_config.go @@ -20,7 +20,7 @@ type VBoxManageConfig struct { // ```json // "vboxmanage": [ // ["modifyvm", "{{.Name}}", "--memory", "1024"], - // ["modifyvm", "{{.Name}}", "--cpus", "2"] + // ["modifyvm", "{{.Name}}", "--cpus", "2"] // ] // ``` // diff --git a/website/content/partials/builder/virtualbox/common/VBoxManageConfig-not-required.mdx b/website/content/partials/builder/virtualbox/common/VBoxManageConfig-not-required.mdx index 03fed8bb9..01b732a7b 100644 --- a/website/content/partials/builder/virtualbox/common/VBoxManageConfig-not-required.mdx +++ b/website/content/partials/builder/virtualbox/common/VBoxManageConfig-not-required.mdx @@ -8,7 +8,7 @@ ```json "vboxmanage": [ ["modifyvm", "{{.Name}}", "--memory", "1024"], - ["modifyvm", "{{.Name}}", "--cpus", "2"] + ["modifyvm", "{{.Name}}", "--cpus", "2"] ] ``` From 751038cd6df8967ce01edf9ec487fe28bece7c65 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 1 Mar 2021 02:45:58 -0800 Subject: [PATCH 050/212] clarify onlyexcept docs further (#10679) --- website/content/docs/commands/validate.mdx | 16 ++++++++++++---- .../docs/templates/hcl_templates/onlyexcept.mdx | 9 +++++---- .../legacy_json_templates/post-processors.mdx | 9 +++++---- website/content/partials/commands/except.mdx | 13 ++++++++----- website/content/partials/commands/only.mdx | 9 ++++++--- 5 files changed, 36 insertions(+), 20 deletions(-) diff --git a/website/content/docs/commands/validate.mdx b/website/content/docs/commands/validate.mdx index 90680f1c3..e10a1de64 100644 --- a/website/content/docs/commands/validate.mdx +++ b/website/content/docs/commands/validate.mdx @@ -33,12 +33,20 @@ Errors validating build 'vmware'. 1 error(s) occurred: configuration is not validated. - `-except=foo,bar,baz` - Validates all the builds except those with the - comma-separated names. Build names by default are the names of their - builders, unless a specific `name` attribute is specified within the configuration. + comma-separated names. In legacy JSON templates, build names default to the + types of their builders (e.g. `docker` or + `amazon-ebs` or `virtualbox-iso`, unless a specific `name` attribute is + specified within the configuration. In HCL2 templates, the "name" is the + source block's "name" label, unless an in-build source definition adds the + "name" configuration option. - `-only=foo,bar,baz` - Only validate the builds with the given comma-separated - names. Build names by default are the names of their builders, unless a - specific `name` attribute is specified within the configuration. + names. In legacy JSON templates, build names default to the + types of their builders (e.g. `docker` or + `amazon-ebs` or `virtualbox-iso`, unless a specific `name` attribute is + specified within the configuration. In HCL2 templates, the "name" is the + source block's "name" label, unless an in-build source definition adds the + "name" configuration option. - `-machine-readable` Sets all output to become machine-readable on stdout. Logging, if enabled, continues to appear on stderr. diff --git a/website/content/docs/templates/hcl_templates/onlyexcept.mdx b/website/content/docs/templates/hcl_templates/onlyexcept.mdx index 3f38f9ec5..814b13ba5 100644 --- a/website/content/docs/templates/hcl_templates/onlyexcept.mdx +++ b/website/content/docs/templates/hcl_templates/onlyexcept.mdx @@ -25,9 +25,10 @@ build { sources [ "source.amazon-ebs.first-example", ] - source "source.amazon-ebs.second-example" { - // setting the name field allows to rename the source only for this build - // section. + source "source.amazon-ebs.second-example" + // setting the name field allows you to rename the source only for this + // build section. To match this builder, you need to use + // second-example-local-name, not second-example name = "second-example-local-name" } @@ -68,4 +69,4 @@ configuration: -> Note: In the cli `only` and `except` will match agains **build names** (for example:`my_build.amazon-ebs.first-example`) but in a provisioner they will -match on the **source type** (for example:`source.amazon-ebs.third-example`). +match on the **source name** (for example:`amazon-ebs.third-example`). diff --git a/website/content/docs/templates/legacy_json_templates/post-processors.mdx b/website/content/docs/templates/legacy_json_templates/post-processors.mdx index 7b958d979..167ba4168 100644 --- a/website/content/docs/templates/legacy_json_templates/post-processors.mdx +++ b/website/content/docs/templates/legacy_json_templates/post-processors.mdx @@ -169,7 +169,8 @@ option _ignores_ post-processors. ]) ``` -The values within `only` or `except` are _build names_, not builder types. If -you recall, build names by default are just their builder type, but if you -specify a custom `name` parameter, then you should use that as the value -instead of the type. +The values within `only` or `except` are _build names_, not builder types. +Name is a required block label in HCL, but in legacy JSON, build names default +to the types of their builders (e.g. `docker` or `amazon-ebs` or +`virtualbox-iso`, unless a specific `name` attribute is specified within the +configuration. diff --git a/website/content/partials/commands/except.mdx b/website/content/partials/commands/except.mdx index c7fb856b4..b0e444f8a 100644 --- a/website/content/partials/commands/except.mdx +++ b/website/content/partials/commands/except.mdx @@ -1,7 +1,10 @@ - `-except=foo,bar,baz` - Run all the builds and post-processors except those - with the given comma-separated names. Build and post-processor names by - default are their type, unless a specific `name` attribute is specified - within the configuration. Any post-processor following a skipped - post-processor will not run. Because post-processors can be nested in - arrays a different post-processor chain can still run. A post-processor + with the given comma-separated names. In legacy JSON templates, build names default to the + types of their builders (e.g. `docker` or + `amazon-ebs` or `virtualbox-iso`, unless a specific `name` attribute is + specified within the configuration. In HCL2 templates, the "name" is the + source block's "name" label, unless an in-build source definition adds the + "name" configuration option.Any post-processor following + a skipped post-processor will not run. Because post-processors can be nested + in arrays a different post-processor chain can still run. A post-processor with an empty name will be ignored. diff --git a/website/content/partials/commands/only.mdx b/website/content/partials/commands/only.mdx index 7486720d4..ab532b5f5 100644 --- a/website/content/partials/commands/only.mdx +++ b/website/content/partials/commands/only.mdx @@ -1,4 +1,7 @@ - `-only=foo,bar,baz` - Only run the builds with the given comma-separated - names. Build names by default are their type, unless a specific `name` - attribute is specified within the configuration. `-only` does not apply to - post-processors. + names. In legacy JSON templates, build names default to the + types of their builders (e.g. `docker` or + `amazon-ebs` or `virtualbox-iso`, unless a specific `name` attribute is + specified within the configuration. In HCL2 templates, the "name" is the + source block's "name" label, unless an in-build source definition adds the + "name" configuration option. \ No newline at end of file From 96b753f3b006e3b3ea5efd4442ea4b25b6e8f900 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 2 Mar 2021 02:43:58 -0800 Subject: [PATCH 051/212] pin packer to golang 1.16 (#10702) * pin packer to golang 1.16 * vet command/build_cancellation_test.go --- .circleci/config.yml | 10 +- .github/CONTRIBUTING.md | 5 +- .../vsphere/common/output_config.hcl2spec.go | 4 +- .../vsphere/common/step_export.hcl2spec.go | 4 +- command/build_cancellation_test.go | 3 +- go.mod | 2 +- vendor/modules.txt | 96 +++++++++++++++++++ 7 files changed, 110 insertions(+), 14 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7f9719bbc..c2c41e5e9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ version: 2.1 executors: golang: docker: - - image: docker.mirror.hashicorp.services/circleci/golang:1.15 + - image: docker.mirror.hashicorp.services/circleci/golang:1.16 resource_class: medium+ darwin: macos: @@ -61,13 +61,11 @@ jobs: file: coverage.txt test-darwin: executor: darwin - working_directory: ~/go/src/github.com/hashicorp/packer - environment: - GO111MODULE: "off" + working_directory: ~/go/github.com/hashicorp/packer steps: - install-go-run-tests-unix: GOOS: darwin - GOVERSION: "1.15" + GOVERSION: "1.16" - codecov/upload: file: coverage.txt test-windows: @@ -76,7 +74,7 @@ jobs: shell: bash.exe steps: - install-go-run-tests-windows: - GOVERSION: "1.15" + GOVERSION: "1.16" - codecov/upload: file: coverage.txt check-lint: diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 64cee9ff1..8e39ab76d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -64,7 +64,9 @@ can quickly merge or address your contributions. If you have never worked with Go before, you will have to install its runtime in order to build packer. -1. This project always releases from the latest version of golang. [Install go](https://golang.org/doc/install#install) +1. This project always releases from the latest version of golang. +[Install go](https://golang.org/doc/install#install) To properly build from +source, you need to have golang >= v1.16 ## Setting up Packer for dev @@ -72,7 +74,6 @@ If/when you have go installed you can already `go get` packer and `make` in order to compile and test Packer. These instructions target POSIX-like environments (macOS, Linux, Cygwin, etc.) so you may need to adjust them for Windows or other shells. -The instructions below are for go 1.7. or later. 1. Download the Packer source (and its dependencies) by running `go get github.com/hashicorp/packer`. This will download the Packer source to diff --git a/builder/vsphere/common/output_config.hcl2spec.go b/builder/vsphere/common/output_config.hcl2spec.go index 13847fcbc..0cec88325 100644 --- a/builder/vsphere/common/output_config.hcl2spec.go +++ b/builder/vsphere/common/output_config.hcl2spec.go @@ -3,7 +3,7 @@ package common import ( - "os" + "io/fs" "github.com/hashicorp/hcl/v2/hcldec" "github.com/zclconf/go-cty/cty" @@ -13,7 +13,7 @@ import ( // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatOutputConfig struct { OutputDir *string `mapstructure:"output_directory" required:"false" cty:"output_directory" hcl:"output_directory"` - DirPerm *os.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` + DirPerm *fs.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` } // FlatMapstructure returns a new FlatOutputConfig. diff --git a/builder/vsphere/common/step_export.hcl2spec.go b/builder/vsphere/common/step_export.hcl2spec.go index f7d24dbbe..21824d5d5 100644 --- a/builder/vsphere/common/step_export.hcl2spec.go +++ b/builder/vsphere/common/step_export.hcl2spec.go @@ -3,7 +3,7 @@ package common import ( - "os" + "io/fs" "github.com/hashicorp/hcl/v2/hcldec" "github.com/zclconf/go-cty/cty" @@ -17,7 +17,7 @@ type FlatExportConfig struct { Images *bool `mapstructure:"images" cty:"images" hcl:"images"` Manifest *string `mapstructure:"manifest" cty:"manifest" hcl:"manifest"` OutputDir *string `mapstructure:"output_directory" required:"false" cty:"output_directory" hcl:"output_directory"` - DirPerm *os.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` + DirPerm *fs.FileMode `mapstructure:"directory_permission" required:"false" cty:"directory_permission" hcl:"directory_permission"` Options []string `mapstructure:"options" cty:"options" hcl:"options"` } diff --git a/command/build_cancellation_test.go b/command/build_cancellation_test.go index f85828da6..a81c057db 100644 --- a/command/build_cancellation_test.go +++ b/command/build_cancellation_test.go @@ -64,7 +64,8 @@ func TestBuildCommand_RunContext_CtxCancel(t *testing.T) { defer close(codeC) cfg, ret := c.ParseArgs(tt.args) if ret != 0 { - t.Fatal("ParseArgs failed.") + t.Error("ParseArgs failed.") + return } codeC <- c.RunContext(ctx, cfg) }() diff --git a/go.mod b/go.mod index d553f702a..000259a3c 100644 --- a/go.mod +++ b/go.mod @@ -99,4 +99,4 @@ require ( google.golang.org/grpc v1.32.0 ) -go 1.13 +go 1.16 diff --git a/vendor/modules.txt b/vendor/modules.txt index 21fd4ed92..e20feaac3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,5 @@ # cloud.google.com/go v0.66.0 +## explicit cloud.google.com/go cloud.google.com/go/compute/metadata cloud.google.com/go/iam @@ -9,8 +10,10 @@ cloud.google.com/go/internal/version # cloud.google.com/go/storage v1.10.0 cloud.google.com/go/storage # github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1 +## explicit github.com/1and1/oneandone-cloudserver-sdk-go # github.com/Azure/azure-sdk-for-go v40.5.0+incompatible +## explicit github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-04-01/compute github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-03-01/compute github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute @@ -26,17 +29,23 @@ github.com/Azure/azure-sdk-for-go/version # github.com/Azure/go-autorest v14.2.0+incompatible github.com/Azure/go-autorest # github.com/Azure/go-autorest/autorest v0.10.0 +## explicit github.com/Azure/go-autorest/autorest github.com/Azure/go-autorest/autorest/azure # github.com/Azure/go-autorest/autorest/adal v0.8.2 +## explicit github.com/Azure/go-autorest/autorest/adal # github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 +## explicit github.com/Azure/go-autorest/autorest/azure/auth # github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 +## explicit github.com/Azure/go-autorest/autorest/azure/cli # github.com/Azure/go-autorest/autorest/date v0.2.0 +## explicit github.com/Azure/go-autorest/autorest/date # github.com/Azure/go-autorest/autorest/to v0.3.0 +## explicit github.com/Azure/go-autorest/autorest/to # github.com/Azure/go-autorest/autorest/validation v0.3.1 github.com/Azure/go-autorest/autorest/validation @@ -47,6 +56,7 @@ github.com/Azure/go-autorest/tracing # github.com/Azure/go-ntlmssp v0.0.0-20191115201650-bad6df29494a github.com/Azure/go-ntlmssp # github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022 +## explicit github.com/ChrisTrenkamp/goxpath github.com/ChrisTrenkamp/goxpath/internal/execxp github.com/ChrisTrenkamp/goxpath/internal/execxp/findutil @@ -62,16 +72,19 @@ github.com/ChrisTrenkamp/goxpath/tree/xmltree/xmlele github.com/ChrisTrenkamp/goxpath/tree/xmltree/xmlnode github.com/ChrisTrenkamp/goxpath/xconst # github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.0 +## explicit github.com/NaverCloudPlatform/ncloud-sdk-go-v2/hmac github.com/NaverCloudPlatform/ncloud-sdk-go-v2/ncloud github.com/NaverCloudPlatform/ncloud-sdk-go-v2/services/server # github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d github.com/StackExchange/wmi # github.com/Telmate/proxmox-api-go v0.0.0-20200715182505-ec97c70ba887 +## explicit github.com/Telmate/proxmox-api-go/proxmox # github.com/agext/levenshtein v1.2.1 github.com/agext/levenshtein # github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190418113227-25233c783f4e +## explicit github.com/aliyun/alibaba-cloud-sdk-go/sdk github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials @@ -85,14 +98,17 @@ github.com/aliyun/alibaba-cloud-sdk-go/sdk/utils github.com/aliyun/alibaba-cloud-sdk-go/services/ecs github.com/aliyun/alibaba-cloud-sdk-go/services/ram # github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f +## explicit github.com/aliyun/aliyun-oss-go-sdk/oss # github.com/antihax/optional v1.0.0 +## explicit github.com/antihax/optional # github.com/apparentlymart/go-cidr v1.0.1 github.com/apparentlymart/go-cidr/cidr # github.com/apparentlymart/go-textseg/v12 v12.0.0 github.com/apparentlymart/go-textseg/v12/textseg # github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43 +## explicit github.com/approvals/go-approval-tests github.com/approvals/go-approval-tests/reporters github.com/approvals/go-approval-tests/utils @@ -101,6 +117,7 @@ github.com/armon/go-metrics # github.com/armon/go-radix v1.0.0 github.com/armon/go-radix # github.com/aws/aws-sdk-go v1.37.15 +## explicit github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/arn github.com/aws/aws-sdk-go/aws/awserr @@ -166,18 +183,23 @@ github.com/bgentry/go-netrc/netrc # github.com/bgentry/speakeasy v0.1.0 github.com/bgentry/speakeasy # github.com/biogo/hts v0.0.0-20160420073057-50da7d4131a3 +## explicit github.com/biogo/hts/bgzf # github.com/bmatcuk/doublestar v1.1.5 github.com/bmatcuk/doublestar # github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee +## explicit github.com/c2h5oh/datasize # github.com/cheggaaa/pb v1.0.27 +## explicit github.com/cheggaaa/pb # github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e +## explicit github.com/chzyer/readline # github.com/davecgh/go-spew v1.1.1 github.com/davecgh/go-spew/spew # github.com/dgrijalva/jwt-go v3.2.0+incompatible +## explicit github.com/dgrijalva/jwt-go # github.com/digitalocean/go-libvirt v0.0.0-20210112203132-25518eb2c840 github.com/digitalocean/go-libvirt @@ -185,31 +207,39 @@ github.com/digitalocean/go-libvirt/internal/constants github.com/digitalocean/go-libvirt/internal/event github.com/digitalocean/go-libvirt/internal/go-xdr/xdr2 # github.com/digitalocean/go-qemu v0.0.0-20201211181942-d361e7b4965f +## explicit github.com/digitalocean/go-qemu/qmp # github.com/digitalocean/godo v1.11.1 +## explicit github.com/digitalocean/godo # github.com/dimchansky/utfbom v1.1.0 github.com/dimchansky/utfbom # github.com/dylanmei/iso8601 v0.1.0 github.com/dylanmei/iso8601 # github.com/exoscale/egoscale v0.18.1 +## explicit github.com/exoscale/egoscale # github.com/fatih/camelcase v1.0.0 +## explicit github.com/fatih/camelcase # github.com/fatih/color v1.9.0 github.com/fatih/color # github.com/fatih/structtag v1.0.0 +## explicit github.com/fatih/structtag # github.com/ghodss/yaml v1.0.0 github.com/ghodss/yaml # github.com/go-ini/ini v1.25.4 +## explicit github.com/go-ini/ini # github.com/go-ole/go-ole v1.2.5 github.com/go-ole/go-ole github.com/go-ole/go-ole/oleutil # github.com/go-resty/resty/v2 v2.3.0 +## explicit github.com/go-resty/resty/v2 # github.com/gobwas/glob v0.2.3 +## explicit github.com/gobwas/glob github.com/gobwas/glob/compiler github.com/gobwas/glob/match @@ -223,6 +253,7 @@ github.com/gofrs/flock # github.com/gofrs/uuid v3.2.0+incompatible github.com/gofrs/uuid # github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 +## explicit github.com/golang-collections/collections/stack # github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e github.com/golang/groupcache/lru @@ -241,6 +272,7 @@ github.com/golang/protobuf/ptypes/wrappers # github.com/golang/snappy v0.0.1 github.com/golang/snappy # github.com/google/go-cmp v0.5.2 +## explicit github.com/google/go-cmp/cmp github.com/google/go-cmp/cmp/cmpopts github.com/google/go-cmp/cmp/internal/diff @@ -248,16 +280,19 @@ github.com/google/go-cmp/cmp/internal/flags github.com/google/go-cmp/cmp/internal/function github.com/google/go-cmp/cmp/internal/value # github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 +## explicit github.com/google/go-github/v33/github # github.com/google/go-querystring v1.0.0 github.com/google/go-querystring/query # github.com/google/shlex v0.0.0-20150127133951-6f45313302b9 github.com/google/shlex # github.com/google/uuid v1.1.2 +## explicit github.com/google/uuid # github.com/googleapis/gax-go/v2 v2.0.5 github.com/googleapis/gax-go/v2 # github.com/gophercloud/gophercloud v0.12.0 +## explicit github.com/gophercloud/gophercloud github.com/gophercloud/gophercloud/internal github.com/gophercloud/gophercloud/openstack @@ -286,25 +321,33 @@ github.com/gophercloud/gophercloud/openstack/networking/v2/subnets github.com/gophercloud/gophercloud/openstack/utils github.com/gophercloud/gophercloud/pagination # github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c +## explicit github.com/gophercloud/utils/env github.com/gophercloud/utils/openstack/clientconfig github.com/gophercloud/utils/openstack/compute/v2/flavors # github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 +## explicit github.com/grpc-ecosystem/go-grpc-middleware # github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 +## explicit github.com/hako/durafmt # github.com/hashicorp/aws-sdk-go-base v0.6.0 +## explicit github.com/hashicorp/aws-sdk-go-base github.com/hashicorp/aws-sdk-go-base/tfawserr # github.com/hashicorp/consul/api v1.4.0 github.com/hashicorp/consul/api # github.com/hashicorp/errwrap v1.0.0 +## explicit github.com/hashicorp/errwrap # github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de +## explicit github.com/hashicorp/go-checkpoint # github.com/hashicorp/go-cleanhttp v0.5.1 +## explicit github.com/hashicorp/go-cleanhttp # github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 +## explicit github.com/hashicorp/go-cty-funcs/cidr github.com/hashicorp/go-cty-funcs/collection github.com/hashicorp/go-cty-funcs/crypto @@ -316,6 +359,7 @@ github.com/hashicorp/go-getter/gcs/v2 # github.com/hashicorp/go-getter/s3/v2 v2.0.0-20200604122502-a6995fa1edad github.com/hashicorp/go-getter/s3/v2 # github.com/hashicorp/go-getter/v2 v2.0.0-20200604122502-a6995fa1edad +## explicit github.com/hashicorp/go-getter/v2 github.com/hashicorp/go-getter/v2/helper/url # github.com/hashicorp/go-hclog v0.12.0 @@ -323,8 +367,10 @@ github.com/hashicorp/go-hclog # github.com/hashicorp/go-immutable-radix v1.1.0 github.com/hashicorp/go-immutable-radix # github.com/hashicorp/go-multierror v1.1.0 +## explicit github.com/hashicorp/go-multierror # github.com/hashicorp/go-oracle-terraform v0.0.0-20181016190316-007121241b79 +## explicit github.com/hashicorp/go-oracle-terraform/client github.com/hashicorp/go-oracle-terraform/compute github.com/hashicorp/go-oracle-terraform/opc @@ -337,8 +383,10 @@ github.com/hashicorp/go-safetemp # github.com/hashicorp/go-sockaddr v1.0.2 github.com/hashicorp/go-sockaddr # github.com/hashicorp/go-uuid v1.0.2 +## explicit github.com/hashicorp/go-uuid # github.com/hashicorp/go-version v1.2.0 +## explicit github.com/hashicorp/go-version # github.com/hashicorp/golang-lru v0.5.3 github.com/hashicorp/golang-lru/simplelru @@ -353,6 +401,7 @@ github.com/hashicorp/hcl/json/parser github.com/hashicorp/hcl/json/scanner github.com/hashicorp/hcl/json/token # github.com/hashicorp/hcl/v2 v2.8.0 +## explicit github.com/hashicorp/hcl/v2 github.com/hashicorp/hcl/v2/ext/customdecode github.com/hashicorp/hcl/v2/ext/dynblock @@ -365,6 +414,7 @@ github.com/hashicorp/hcl/v2/hclsyntax github.com/hashicorp/hcl/v2/hclwrite github.com/hashicorp/hcl/v2/json # github.com/hashicorp/packer-plugin-sdk v0.0.14 +## explicit github.com/hashicorp/packer-plugin-sdk/acctest github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc github.com/hashicorp/packer-plugin-sdk/acctest/testutils @@ -407,6 +457,7 @@ github.com/hashicorp/packer-plugin-sdk/version # github.com/hashicorp/serf v0.9.2 github.com/hashicorp/serf/coordinate # github.com/hashicorp/vault/api v1.0.4 +## explicit github.com/hashicorp/vault/api # github.com/hashicorp/vault/sdk v0.1.13 github.com/hashicorp/vault/sdk/helper/compressutil @@ -418,11 +469,14 @@ github.com/hashicorp/vault/sdk/helper/strutil # github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d github.com/hashicorp/yamux # github.com/hetznercloud/hcloud-go v1.15.1 +## explicit github.com/hetznercloud/hcloud-go/hcloud github.com/hetznercloud/hcloud-go/hcloud/schema # github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 +## explicit github.com/hyperonecom/h1-client-go # github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961 +## explicit github.com/jdcloud-api/jdcloud-sdk-go/core github.com/jdcloud-api/jdcloud-sdk-go/services/charge/models github.com/jdcloud-api/jdcloud-sdk-go/services/common/models @@ -438,6 +492,7 @@ github.com/jehiah/go-strftime # github.com/jmespath/go-jmespath v0.4.0 github.com/jmespath/go-jmespath # github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62 +## explicit github.com/joyent/triton-go github.com/joyent/triton-go/authentication github.com/joyent/triton-go/client @@ -455,18 +510,21 @@ github.com/klauspost/compress/flate # github.com/klauspost/crc32 v1.2.0 github.com/klauspost/crc32 # github.com/klauspost/pgzip v0.0.0-20151221113845-47f36e165cec +## explicit github.com/klauspost/pgzip # github.com/konsorten/go-windows-terminal-sequences v1.0.1 github.com/konsorten/go-windows-terminal-sequences # github.com/kr/fs v0.1.0 github.com/kr/fs # github.com/linode/linodego v0.14.0 +## explicit github.com/linode/linodego github.com/linode/linodego/internal/duration github.com/linode/linodego/internal/parseabletime # github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 github.com/masterzen/simplexml/dom # github.com/masterzen/winrm v0.0.0-20201030141608-56ca5c5f2380 +## explicit github.com/masterzen/winrm github.com/masterzen/winrm/soap # github.com/mattn/go-colorable v0.1.6 @@ -476,29 +534,37 @@ github.com/mattn/go-isatty # github.com/mattn/go-runewidth v0.0.10 github.com/mattn/go-runewidth # github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08 +## explicit github.com/mattn/go-tty # github.com/mitchellh/cli v1.1.0 +## explicit github.com/mitchellh/cli # github.com/mitchellh/go-fs v0.0.0-20180402234041-7b48fa161ea7 github.com/mitchellh/go-fs github.com/mitchellh/go-fs/fat # github.com/mitchellh/go-homedir v1.1.0 +## explicit github.com/mitchellh/go-homedir # github.com/mitchellh/go-testing-interface v1.0.3 github.com/mitchellh/go-testing-interface # github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed +## explicit github.com/mitchellh/go-vnc # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap # github.com/mitchellh/iochan v1.0.0 github.com/mitchellh/iochan # github.com/mitchellh/mapstructure v1.4.0 +## explicit github.com/mitchellh/mapstructure # github.com/mitchellh/panicwrap v1.0.0 +## explicit github.com/mitchellh/panicwrap # github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 +## explicit github.com/mitchellh/prefixedio # github.com/mitchellh/reflectwalk v1.0.0 +## explicit github.com/mitchellh/reflectwalk # github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd github.com/modern-go/concurrent @@ -507,29 +573,36 @@ github.com/modern-go/reflect2 # github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d github.com/nu7hatch/gouuid # github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b +## explicit github.com/olekukonko/tablewriter # github.com/oracle/oci-go-sdk v24.3.0+incompatible +## explicit github.com/oracle/oci-go-sdk/common github.com/oracle/oci-go-sdk/common/auth github.com/oracle/oci-go-sdk/core # github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 +## explicit github.com/outscale/osc-sdk-go/osc # github.com/packer-community/winrmcp v0.0.0-20180921204643-0fd363d6159a github.com/packer-community/winrmcp/winrmcp # github.com/pierrec/lz4 v2.0.5+incompatible +## explicit github.com/pierrec/lz4 github.com/pierrec/lz4/internal/xxh32 # github.com/pkg/errors v0.9.1 +## explicit github.com/pkg/errors # github.com/pkg/sftp v0.0.0-20160118190721-e84cc8c755ca github.com/pkg/sftp # github.com/pmezard/go-difflib v1.0.0 github.com/pmezard/go-difflib/difflib # github.com/posener/complete v1.2.3 +## explicit github.com/posener/complete github.com/posener/complete/cmd github.com/posener/complete/cmd/install # github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible +## explicit github.com/profitbricks/profitbricks-sdk-go # github.com/rivo/uniseg v0.1.0 github.com/rivo/uniseg @@ -538,6 +611,7 @@ github.com/ryanuber/go-glob # github.com/satori/go.uuid v1.2.0 github.com/satori/go.uuid # github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7 +## explicit github.com/scaleway/scaleway-sdk-go/api/instance/v1 github.com/scaleway/scaleway-sdk-go/api/marketplace/v1 github.com/scaleway/scaleway-sdk-go/internal/async @@ -550,6 +624,7 @@ github.com/scaleway/scaleway-sdk-go/namegenerator github.com/scaleway/scaleway-sdk-go/scw github.com/scaleway/scaleway-sdk-go/validation # github.com/shirou/gopsutil v2.18.12+incompatible +## explicit github.com/shirou/gopsutil/cpu github.com/shirou/gopsutil/host github.com/shirou/gopsutil/internal/common @@ -561,9 +636,11 @@ github.com/shirou/w32 # github.com/sirupsen/logrus v1.4.2 github.com/sirupsen/logrus # github.com/stretchr/testify v1.6.1 +## explicit github.com/stretchr/testify/assert github.com/stretchr/testify/require # github.com/tencentcloud/tencentcloud-sdk-go v3.0.222+incompatible +## explicit github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http @@ -571,6 +648,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312 # github.com/ucloud/ucloud-sdk-go v0.16.3 +## explicit github.com/ucloud/ucloud-sdk-go/external github.com/ucloud/ucloud-sdk-go/private/protocol/http github.com/ucloud/ucloud-sdk-go/private/utils @@ -588,15 +666,18 @@ github.com/ucloud/ucloud-sdk-go/ucloud/request github.com/ucloud/ucloud-sdk-go/ucloud/response github.com/ucloud/ucloud-sdk-go/ucloud/version # github.com/ufilesdk-dev/ufile-gosdk v0.0.0-20190830075812-b4dbc4ef43a6 +## explicit github.com/ufilesdk-dev/ufile-gosdk # github.com/ugorji/go/codec v1.2.4 github.com/ugorji/go/codec # github.com/ulikunitz/xz v0.5.5 +## explicit github.com/ulikunitz/xz github.com/ulikunitz/xz/internal/hash github.com/ulikunitz/xz/internal/xlog github.com/ulikunitz/xz/lzma # github.com/vmware/govmomi v0.23.1 +## explicit github.com/vmware/govmomi github.com/vmware/govmomi/find github.com/vmware/govmomi/list @@ -624,8 +705,10 @@ github.com/vmware/govmomi/vim25/soap github.com/vmware/govmomi/vim25/types github.com/vmware/govmomi/vim25/xml # github.com/xanzy/go-cloudstack v0.0.0-20190526095453-42f262b63ed0 +## explicit github.com/xanzy/go-cloudstack/cloudstack # github.com/yandex-cloud/go-genproto v0.0.0-20200915125933-33de72a328bd +## explicit github.com/yandex-cloud/go-genproto/yandex/cloud github.com/yandex-cloud/go-genproto/yandex/cloud/access github.com/yandex-cloud/go-genproto/yandex/cloud/ai/stt/v2 @@ -662,6 +745,7 @@ github.com/yandex-cloud/go-genproto/yandex/cloud/serverless/functions/v1 github.com/yandex-cloud/go-genproto/yandex/cloud/serverless/triggers/v1 github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1 # github.com/yandex-cloud/go-sdk v0.0.0-20200921111412-ef15ded2014c +## explicit github.com/yandex-cloud/go-sdk github.com/yandex-cloud/go-sdk/dial github.com/yandex-cloud/go-sdk/gen/ai/stt @@ -701,6 +785,7 @@ github.com/yandex-cloud/go-sdk/pkg/sdkerrors github.com/yandex-cloud/go-sdk/pkg/singleflight github.com/yandex-cloud/go-sdk/sdkresolvers # github.com/zclconf/go-cty v1.7.0 +## explicit github.com/zclconf/go-cty/cty github.com/zclconf/go-cty/cty/convert github.com/zclconf/go-cty/cty/function @@ -709,6 +794,7 @@ github.com/zclconf/go-cty/cty/gocty github.com/zclconf/go-cty/cty/json github.com/zclconf/go-cty/cty/set # github.com/zclconf/go-cty-yaml v1.0.1 +## explicit github.com/zclconf/go-cty-yaml # go.opencensus.io v0.22.4 go.opencensus.io @@ -728,6 +814,7 @@ go.opencensus.io/trace/internal go.opencensus.io/trace/propagation go.opencensus.io/trace/tracestate # golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 +## explicit golang.org/x/crypto/bcrypt golang.org/x/crypto/blowfish golang.org/x/crypto/cast5 @@ -755,12 +842,15 @@ golang.org/x/crypto/ssh/terminal golang.org/x/lint golang.org/x/lint/golint # golang.org/x/mobile v0.0.0-20201208152944-da85bec010a2 +## explicit golang.org/x/mobile/event/key # golang.org/x/mod v0.3.0 +## explicit golang.org/x/mod/module golang.org/x/mod/semver golang.org/x/mod/sumdb/dirhash # golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 +## explicit golang.org/x/net/context golang.org/x/net/context/ctxhttp golang.org/x/net/html @@ -778,15 +868,18 @@ golang.org/x/net/publicsuffix golang.org/x/net/trace golang.org/x/net/websocket # golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 +## explicit golang.org/x/oauth2 golang.org/x/oauth2/google golang.org/x/oauth2/internal golang.org/x/oauth2/jws golang.org/x/oauth2/jwt # golang.org/x/sync v0.0.0-20201207232520-09787c993a3a +## explicit golang.org/x/sync/errgroup golang.org/x/sync/semaphore # golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 +## explicit golang.org/x/sys/cpu golang.org/x/sys/internal/unsafeheader golang.org/x/sys/plan9 @@ -818,6 +911,7 @@ golang.org/x/text/unicode/norm # golang.org/x/time v0.0.0-20191024005414-555d28b269f0 golang.org/x/time/rate # golang.org/x/tools v0.0.0-20201111133315-69daaf961d65 +## explicit golang.org/x/tools/cmd/goimports golang.org/x/tools/go/ast/astutil golang.org/x/tools/go/gcexportdata @@ -839,6 +933,7 @@ golang.org/x/tools/internal/typesinternal golang.org/x/xerrors golang.org/x/xerrors/internal # google.golang.org/api v0.32.0 +## explicit google.golang.org/api/compute/v1 google.golang.org/api/googleapi google.golang.org/api/googleapi/transport @@ -877,6 +972,7 @@ google.golang.org/genproto/googleapis/type/expr google.golang.org/genproto/googleapis/type/timeofday google.golang.org/genproto/protobuf/field_mask # google.golang.org/grpc v1.32.0 +## explicit google.golang.org/grpc google.golang.org/grpc/attributes google.golang.org/grpc/backoff From 273a7204405f99172b02dee56501ad7b0c6cbca3 Mon Sep 17 00:00:00 2001 From: Brian Farrell Date: Tue, 2 Mar 2021 04:51:18 -0600 Subject: [PATCH 052/212] Add client_cert_token_timeout to address GH-9465 (#10528) --- builder/azure/arm/config.hcl2spec.go | 2 + builder/azure/chroot/builder.hcl2spec.go | 2 + builder/azure/common/client/config.go | 11 +++- builder/azure/common/client/config_test.go | 10 ++++ .../azure/common/client/tokenprovider_cert.go | 4 +- builder/azure/dtl/config.hcl2spec.go | 2 + .../azure-dtlartifact/provisioner.hcl2spec.go | 50 ++++++++++--------- website/content/docs/builders/azure/arm.mdx | 3 ++ website/content/docs/builders/azure/index.mdx | 2 + .../common/client/Config-not-required.mdx | 2 + 10 files changed, 61 insertions(+), 27 deletions(-) diff --git a/builder/azure/arm/config.hcl2spec.go b/builder/azure/arm/config.hcl2spec.go index f097d662b..354535128 100644 --- a/builder/azure/arm/config.hcl2spec.go +++ b/builder/azure/arm/config.hcl2spec.go @@ -23,6 +23,7 @@ type FlatConfig struct { ClientID *string `mapstructure:"client_id" cty:"client_id" hcl:"client_id"` ClientSecret *string `mapstructure:"client_secret" cty:"client_secret" hcl:"client_secret"` ClientCertPath *string `mapstructure:"client_cert_path" cty:"client_cert_path" hcl:"client_cert_path"` + ClientCertExpireTimeout *string `mapstructure:"client_cert_token_timeout" required:"false" cty:"client_cert_token_timeout" hcl:"client_cert_token_timeout"` ClientJWT *string `mapstructure:"client_jwt" cty:"client_jwt" hcl:"client_jwt"` ObjectID *string `mapstructure:"object_id" cty:"object_id" hcl:"object_id"` TenantID *string `mapstructure:"tenant_id" required:"false" cty:"tenant_id" hcl:"tenant_id"` @@ -151,6 +152,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "client_id": &hcldec.AttrSpec{Name: "client_id", Type: cty.String, Required: false}, "client_secret": &hcldec.AttrSpec{Name: "client_secret", Type: cty.String, Required: false}, "client_cert_path": &hcldec.AttrSpec{Name: "client_cert_path", Type: cty.String, Required: false}, + "client_cert_token_timeout": &hcldec.AttrSpec{Name: "client_cert_token_timeout", Type: cty.String, Required: false}, "client_jwt": &hcldec.AttrSpec{Name: "client_jwt", Type: cty.String, Required: false}, "object_id": &hcldec.AttrSpec{Name: "object_id", Type: cty.String, Required: false}, "tenant_id": &hcldec.AttrSpec{Name: "tenant_id", Type: cty.String, Required: false}, diff --git a/builder/azure/chroot/builder.hcl2spec.go b/builder/azure/chroot/builder.hcl2spec.go index 6e233f2b1..97a372622 100644 --- a/builder/azure/chroot/builder.hcl2spec.go +++ b/builder/azure/chroot/builder.hcl2spec.go @@ -22,6 +22,7 @@ type FlatConfig struct { ClientID *string `mapstructure:"client_id" cty:"client_id" hcl:"client_id"` ClientSecret *string `mapstructure:"client_secret" cty:"client_secret" hcl:"client_secret"` ClientCertPath *string `mapstructure:"client_cert_path" cty:"client_cert_path" hcl:"client_cert_path"` + ClientCertExpireTimeout *string `mapstructure:"client_cert_token_timeout" required:"false" cty:"client_cert_token_timeout" hcl:"client_cert_token_timeout"` ClientJWT *string `mapstructure:"client_jwt" cty:"client_jwt" hcl:"client_jwt"` ObjectID *string `mapstructure:"object_id" cty:"object_id" hcl:"object_id"` TenantID *string `mapstructure:"tenant_id" required:"false" cty:"tenant_id" hcl:"tenant_id"` @@ -76,6 +77,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "client_id": &hcldec.AttrSpec{Name: "client_id", Type: cty.String, Required: false}, "client_secret": &hcldec.AttrSpec{Name: "client_secret", Type: cty.String, Required: false}, "client_cert_path": &hcldec.AttrSpec{Name: "client_cert_path", Type: cty.String, Required: false}, + "client_cert_token_timeout": &hcldec.AttrSpec{Name: "client_cert_token_timeout", Type: cty.String, Required: false}, "client_jwt": &hcldec.AttrSpec{Name: "client_jwt", Type: cty.String, Required: false}, "object_id": &hcldec.AttrSpec{Name: "object_id", Type: cty.String, Required: false}, "tenant_id": &hcldec.AttrSpec{Name: "tenant_id", Type: cty.String, Required: false}, diff --git a/builder/azure/common/client/config.go b/builder/azure/common/client/config.go index 11c31d64f..041197222 100644 --- a/builder/azure/common/client/config.go +++ b/builder/azure/common/client/config.go @@ -39,6 +39,8 @@ type Config struct { // The path to a pem-encoded certificate that will be used to authenticate // as the specified AAD SP. ClientCertPath string `mapstructure:"client_cert_path"` + // The timeout for the JWT Token when using a [client certificate](#client_cert_path). Defaults to 1 hour. + ClientCertExpireTimeout time.Duration `mapstructure:"client_cert_token_timeout" required:"false"` // A JWT bearer token for client auth (RFC 7523, Sec. 2.2) that will be used // to authenticate the AAD SP. Provides more control over token the expiration // when using certificate authentication than when using `client_cert_path`. @@ -163,6 +165,9 @@ func (c Config) Validate(errs *packersdk.MultiError) { if _, err := os.Stat(c.ClientCertPath); err != nil { errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("client_cert_path is not an accessible file: %v", err)) } + if c.ClientCertExpireTimeout < 5*time.Minute { + errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("client_cert_token_timeout will expire within 5 minutes, please set a value greater than 5 minutes")) + } return } @@ -259,7 +264,7 @@ func (c Config) GetServicePrincipalToken( auth = NewSecretOAuthTokenProvider(*c.cloudEnvironment, c.ClientID, c.ClientSecret, c.TenantID) case authTypeClientCert: say("Getting tokens using client certificate") - auth, err = NewCertOAuthTokenProvider(*c.cloudEnvironment, c.ClientID, c.ClientCertPath, c.TenantID) + auth, err = NewCertOAuthTokenProvider(*c.cloudEnvironment, c.ClientID, c.ClientCertPath, c.TenantID, c.ClientCertExpireTimeout) if err != nil { return nil, err } @@ -336,6 +341,10 @@ func (c *Config) FillParameters() error { c.TenantID = tenantID } + if c.ClientCertExpireTimeout == 0 { + c.ClientCertExpireTimeout = time.Hour + } + return nil } diff --git a/builder/azure/common/client/config_test.go b/builder/azure/common/client/config_test.go index 74484d883..c2bc05c5b 100644 --- a/builder/azure/common/client/config_test.go +++ b/builder/azure/common/client/config_test.go @@ -95,6 +95,16 @@ func Test_ClientConfig_RequiredParametersSet(t *testing.T) { }, wantErr: true, }, + { + name: "client_cert_token_timeout should be 5 minutes or more", + config: Config{ + SubscriptionID: "ok", + ClientID: "ok", + ClientCertPath: "/dev/null", + ClientCertExpireTimeout: 1 * time.Minute, + }, + wantErr: true, + }, { name: "too many client_* values", config: Config{ diff --git a/builder/azure/common/client/tokenprovider_cert.go b/builder/azure/common/client/tokenprovider_cert.go index b03df2059..64decad46 100644 --- a/builder/azure/common/client/tokenprovider_cert.go +++ b/builder/azure/common/client/tokenprovider_cert.go @@ -18,14 +18,14 @@ import ( "github.com/hashicorp/packer/builder/azure/pkcs12" ) -func NewCertOAuthTokenProvider(env azure.Environment, clientID, clientCertPath, tenantID string) (oAuthTokenProvider, error) { +func NewCertOAuthTokenProvider(env azure.Environment, clientID, clientCertPath, tenantID string, certExpireTimeout time.Duration) (oAuthTokenProvider, error) { cert, key, err := readCert(clientCertPath) if err != nil { return nil, fmt.Errorf("Error reading certificate: %v", err) } audience := fmt.Sprintf("%s%s/oauth2/token", env.ActiveDirectoryEndpoint, tenantID) - jwt, err := makeJWT(clientID, audience, cert, key, time.Hour, true) + jwt, err := makeJWT(clientID, audience, cert, key, certExpireTimeout, true) if err != nil { return nil, fmt.Errorf("Error generating JWT: %v", err) } diff --git a/builder/azure/dtl/config.hcl2spec.go b/builder/azure/dtl/config.hcl2spec.go index c7bc974a7..b0684e265 100644 --- a/builder/azure/dtl/config.hcl2spec.go +++ b/builder/azure/dtl/config.hcl2spec.go @@ -49,6 +49,7 @@ type FlatConfig struct { ClientID *string `mapstructure:"client_id" cty:"client_id" hcl:"client_id"` ClientSecret *string `mapstructure:"client_secret" cty:"client_secret" hcl:"client_secret"` ClientCertPath *string `mapstructure:"client_cert_path" cty:"client_cert_path" hcl:"client_cert_path"` + ClientCertExpireTimeout *string `mapstructure:"client_cert_token_timeout" required:"false" cty:"client_cert_token_timeout" hcl:"client_cert_token_timeout"` ClientJWT *string `mapstructure:"client_jwt" cty:"client_jwt" hcl:"client_jwt"` ObjectID *string `mapstructure:"object_id" cty:"object_id" hcl:"object_id"` TenantID *string `mapstructure:"tenant_id" required:"false" cty:"tenant_id" hcl:"tenant_id"` @@ -163,6 +164,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "client_id": &hcldec.AttrSpec{Name: "client_id", Type: cty.String, Required: false}, "client_secret": &hcldec.AttrSpec{Name: "client_secret", Type: cty.String, Required: false}, "client_cert_path": &hcldec.AttrSpec{Name: "client_cert_path", Type: cty.String, Required: false}, + "client_cert_token_timeout": &hcldec.AttrSpec{Name: "client_cert_token_timeout", Type: cty.String, Required: false}, "client_jwt": &hcldec.AttrSpec{Name: "client_jwt", Type: cty.String, Required: false}, "object_id": &hcldec.AttrSpec{Name: "object_id", Type: cty.String, Required: false}, "tenant_id": &hcldec.AttrSpec{Name: "tenant_id", Type: cty.String, Required: false}, diff --git a/provisioner/azure-dtlartifact/provisioner.hcl2spec.go b/provisioner/azure-dtlartifact/provisioner.hcl2spec.go index 95601f797..dc914de5c 100644 --- a/provisioner/azure-dtlartifact/provisioner.hcl2spec.go +++ b/provisioner/azure-dtlartifact/provisioner.hcl2spec.go @@ -37,30 +37,31 @@ func (*FlatArtifactParameter) HCL2Spec() map[string]hcldec.Spec { // FlatConfig is an auto-generated flat version of Config. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - CloudEnvironmentName *string `mapstructure:"cloud_environment_name" required:"false" cty:"cloud_environment_name" hcl:"cloud_environment_name"` - ClientID *string `mapstructure:"client_id" cty:"client_id" hcl:"client_id"` - ClientSecret *string `mapstructure:"client_secret" cty:"client_secret" hcl:"client_secret"` - ClientCertPath *string `mapstructure:"client_cert_path" cty:"client_cert_path" hcl:"client_cert_path"` - ClientJWT *string `mapstructure:"client_jwt" cty:"client_jwt" hcl:"client_jwt"` - ObjectID *string `mapstructure:"object_id" cty:"object_id" hcl:"object_id"` - TenantID *string `mapstructure:"tenant_id" required:"false" cty:"tenant_id" hcl:"tenant_id"` - SubscriptionID *string `mapstructure:"subscription_id" cty:"subscription_id" hcl:"subscription_id"` - UseAzureCLIAuth *bool `mapstructure:"use_azure_cli_auth" required:"false" cty:"use_azure_cli_auth" hcl:"use_azure_cli_auth"` - DtlArtifacts []FlatDtlArtifact `mapstructure:"dtl_artifacts" cty:"dtl_artifacts" hcl:"dtl_artifacts"` - LabName *string `mapstructure:"lab_name" cty:"lab_name" hcl:"lab_name"` - ResourceGroupName *string `mapstructure:"lab_resource_group_name" cty:"lab_resource_group_name" hcl:"lab_resource_group_name"` - VMName *string `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"` - PollingDurationTimeout *string `mapstructure:"polling_duration_timeout" required:"false" cty:"polling_duration_timeout" hcl:"polling_duration_timeout"` - AzureTags map[string]*string `mapstructure:"azure_tags" cty:"azure_tags" hcl:"azure_tags"` - Json map[string]interface{} `cty:"json" hcl:"json"` + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + CloudEnvironmentName *string `mapstructure:"cloud_environment_name" required:"false" cty:"cloud_environment_name" hcl:"cloud_environment_name"` + ClientID *string `mapstructure:"client_id" cty:"client_id" hcl:"client_id"` + ClientSecret *string `mapstructure:"client_secret" cty:"client_secret" hcl:"client_secret"` + ClientCertPath *string `mapstructure:"client_cert_path" cty:"client_cert_path" hcl:"client_cert_path"` + ClientCertExpireTimeout *string `mapstructure:"client_cert_token_timeout" required:"false" cty:"client_cert_token_timeout" hcl:"client_cert_token_timeout"` + ClientJWT *string `mapstructure:"client_jwt" cty:"client_jwt" hcl:"client_jwt"` + ObjectID *string `mapstructure:"object_id" cty:"object_id" hcl:"object_id"` + TenantID *string `mapstructure:"tenant_id" required:"false" cty:"tenant_id" hcl:"tenant_id"` + SubscriptionID *string `mapstructure:"subscription_id" cty:"subscription_id" hcl:"subscription_id"` + UseAzureCLIAuth *bool `mapstructure:"use_azure_cli_auth" required:"false" cty:"use_azure_cli_auth" hcl:"use_azure_cli_auth"` + DtlArtifacts []FlatDtlArtifact `mapstructure:"dtl_artifacts" cty:"dtl_artifacts" hcl:"dtl_artifacts"` + LabName *string `mapstructure:"lab_name" cty:"lab_name" hcl:"lab_name"` + ResourceGroupName *string `mapstructure:"lab_resource_group_name" cty:"lab_resource_group_name" hcl:"lab_resource_group_name"` + VMName *string `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"` + PollingDurationTimeout *string `mapstructure:"polling_duration_timeout" required:"false" cty:"polling_duration_timeout" hcl:"polling_duration_timeout"` + AzureTags map[string]*string `mapstructure:"azure_tags" cty:"azure_tags" hcl:"azure_tags"` + Json map[string]interface{} `cty:"json" hcl:"json"` } // FlatMapstructure returns a new FlatConfig. @@ -87,6 +88,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "client_id": &hcldec.AttrSpec{Name: "client_id", Type: cty.String, Required: false}, "client_secret": &hcldec.AttrSpec{Name: "client_secret", Type: cty.String, Required: false}, "client_cert_path": &hcldec.AttrSpec{Name: "client_cert_path", Type: cty.String, Required: false}, + "client_cert_token_timeout": &hcldec.AttrSpec{Name: "client_cert_token_timeout", Type: cty.String, Required: false}, "client_jwt": &hcldec.AttrSpec{Name: "client_jwt", Type: cty.String, Required: false}, "object_id": &hcldec.AttrSpec{Name: "object_id", Type: cty.String, Required: false}, "tenant_id": &hcldec.AttrSpec{Name: "tenant_id", Type: cty.String, Required: false}, diff --git a/website/content/docs/builders/azure/arm.mdx b/website/content/docs/builders/azure/arm.mdx index ff4b2b41d..8dd43c386 100644 --- a/website/content/docs/builders/azure/arm.mdx +++ b/website/content/docs/builders/azure/arm.mdx @@ -61,6 +61,9 @@ you should specify `subscription_id`, `client_id` and one of `client_secret`, - `client_cert_path` (string) - The location of a PEM file containing a certificate and private key for service principal. +- `client_cert_token_timeout` (duration string | ex: "1h30m12s") - How long to set the expire time on the token created when using + `client_cert_path`. + - `client_jwt` (string) - The bearer JWT assertion signed using a certificate associated with your service principal principal. See [Azure Active Directory docs](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials) diff --git a/website/content/docs/builders/azure/index.mdx b/website/content/docs/builders/azure/index.mdx index a1b3c0254..a961910e2 100644 --- a/website/content/docs/builders/azure/index.mdx +++ b/website/content/docs/builders/azure/index.mdx @@ -94,6 +94,8 @@ way to authenticate the SP to AAD: for the AAD SP. - `client_cert_path` - allows usage of a certificate to be used to authenticate as the specified AAD SP. +- `client_cert_token_timeout` - How long to set the expire time on the token created when using + `client_cert_path`. - `client_jwt` - For advanced scenario's where the used cannot provide Packer the full certificate, they can provide a JWT bearer token for client auth (RFC 7523, Sec. 2.2). These bearer tokens are created and signed using a diff --git a/website/content/partials/builder/azure/common/client/Config-not-required.mdx b/website/content/partials/builder/azure/common/client/Config-not-required.mdx index 46d553c81..c45b07915 100644 --- a/website/content/partials/builder/azure/common/client/Config-not-required.mdx +++ b/website/content/partials/builder/azure/common/client/Config-not-required.mdx @@ -12,6 +12,8 @@ - `client_cert_path` (string) - The path to a pem-encoded certificate that will be used to authenticate as the specified AAD SP. +- `client_cert_token_timeout` (duration string | ex: "1h5m2s") - The timeout for the JWT Token when using a [client certificate](#client_cert_path). Defaults to 1 hour. + - `client_jwt` (string) - A JWT bearer token for client auth (RFC 7523, Sec. 2.2) that will be used to authenticate the AAD SP. Provides more control over token the expiration when using certificate authentication than when using `client_cert_path`. From c5df930437808767ff709c10d0de14f684f3f95b Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Tue, 2 Mar 2021 11:56:28 +0100 Subject: [PATCH 053/212] Added firmware option for QEMU builder (#10683) --- builder/qemu/config.go | 6 ++++++ builder/qemu/config.hcl2spec.go | 2 ++ builder/qemu/step_run.go | 5 +++++ .../content/partials/builder/qemu/Config-not-required.mdx | 6 ++++++ 4 files changed, 19 insertions(+) diff --git a/builder/qemu/config.go b/builder/qemu/config.go index 29b0c71ff..19370c698 100644 --- a/builder/qemu/config.go +++ b/builder/qemu/config.go @@ -108,6 +108,12 @@ type Config struct { // The number of cpus to use when building the VM. // The default is `1` CPU. CpuCount int `mapstructure:"cpus" required:"false"` + // The firmware file to be used by QEMU, which is to be set by the -bios + // option of QEMU. Particularly, this option can be set to use EFI instead + // of BIOS, by using "OVMF.fd" from OpenFirmware. + // If unset, no -bios option is passed to QEMU, using the default of QEMU. + // Also see the QEMU documentation. + Firmware string `mapstructure:"firmware" required:"false"` // The interface to use for the disk. Allowed values include any of `ide`, // `scsi`, `virtio` or `virtio-scsi`^\*. Note also that any boot commands // or kickstart type scripts must have proper adjustments for resulting diff --git a/builder/qemu/config.hcl2spec.go b/builder/qemu/config.hcl2spec.go index ca16e2a03..dc141cd7d 100644 --- a/builder/qemu/config.hcl2spec.go +++ b/builder/qemu/config.hcl2spec.go @@ -98,6 +98,7 @@ type FlatConfig struct { Accelerator *string `mapstructure:"accelerator" required:"false" cty:"accelerator" hcl:"accelerator"` AdditionalDiskSize []string `mapstructure:"disk_additional_size" required:"false" cty:"disk_additional_size" hcl:"disk_additional_size"` CpuCount *int `mapstructure:"cpus" required:"false" cty:"cpus" hcl:"cpus"` + Firmware *string `mapstructure:"firmware" required:"false" cty:"firmware" hcl:"firmware"` DiskInterface *string `mapstructure:"disk_interface" required:"false" cty:"disk_interface" hcl:"disk_interface"` DiskSize *string `mapstructure:"disk_size" required:"false" cty:"disk_size" hcl:"disk_size"` SkipResizeDisk *bool `mapstructure:"skip_resize_disk" required:"false" cty:"skip_resize_disk" hcl:"skip_resize_disk"` @@ -231,6 +232,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "accelerator": &hcldec.AttrSpec{Name: "accelerator", Type: cty.String, Required: false}, "disk_additional_size": &hcldec.AttrSpec{Name: "disk_additional_size", Type: cty.List(cty.String), Required: false}, "cpus": &hcldec.AttrSpec{Name: "cpus", Type: cty.Number, Required: false}, + "firmware": &hcldec.AttrSpec{Name: "firmware", Type: cty.String, Required: false}, "disk_interface": &hcldec.AttrSpec{Name: "disk_interface", Type: cty.String, Required: false}, "disk_size": &hcldec.AttrSpec{Name: "disk_size", Type: cty.String, Required: false}, "skip_resize_disk": &hcldec.AttrSpec{Name: "skip_resize_disk", Type: cty.Bool, Required: false}, diff --git a/builder/qemu/step_run.go b/builder/qemu/step_run.go index 86611e9e8..be802348b 100644 --- a/builder/qemu/step_run.go +++ b/builder/qemu/step_run.go @@ -104,6 +104,11 @@ func (s *stepRun) getDefaultArgs(config *Config, state multistep.StateBag) map[s config.MachineType, config.Accelerator) } + // Firmware + if config.Firmware != "" { + defaultArgs["-bios"] = config.Firmware + } + // Configure "-netdev" arguments defaultArgs["-netdev"] = fmt.Sprintf("bridge,id=user.0,br=%s", config.NetBridge) if config.NetBridge == "" { diff --git a/website/content/partials/builder/qemu/Config-not-required.mdx b/website/content/partials/builder/qemu/Config-not-required.mdx index dcd274282..9242cc3c6 100644 --- a/website/content/partials/builder/qemu/Config-not-required.mdx +++ b/website/content/partials/builder/qemu/Config-not-required.mdx @@ -35,6 +35,12 @@ - `cpus` (int) - The number of cpus to use when building the VM. The default is `1` CPU. +- `firmware` (string) - The firmware file to be used by QEMU, which is to be set by the -bios + option of QEMU. Particularly, this option can be set to use EFI instead + of BIOS, by using "OVMF.fd" from OpenFirmware. + If unset, no -bios option is passed to QEMU, using the default of QEMU. + Also see the QEMU documentation. + - `disk_interface` (string) - The interface to use for the disk. Allowed values include any of `ide`, `scsi`, `virtio` or `virtio-scsi`^\*. Note also that any boot commands or kickstart type scripts must have proper adjustments for resulting From 0b1829ef88c05a677f36a15c2a24bd49ab01b085 Mon Sep 17 00:00:00 2001 From: Blake Garner Date: Tue, 2 Mar 2021 03:13:59 -0800 Subject: [PATCH 054/212] Update to gopsutil v3.21.1 to allow builds to work for darwin arm64 (#10697) * Update to v3.21.1 to allow builds to work for darwin arm64 Co-authored-by: Megan Marsh Co-authored-by: Adrien Delorme --- go.mod | 3 +- go.sum | 2 + vendor/github.com/shirou/gopsutil/cpu/cpu.go | 26 +- .../shirou/gopsutil/cpu/cpu_darwin.go | 122 +- .../shirou/gopsutil/cpu/cpu_dragonfly.go | 161 + .../gopsutil/cpu/cpu_dragonfly_amd64.go | 9 + .../shirou/gopsutil/cpu/cpu_fallback.go | 7 +- .../shirou/gopsutil/cpu/cpu_freebsd.go | 7 +- .../shirou/gopsutil/cpu/cpu_freebsd_arm.go | 9 + .../shirou/gopsutil/cpu/cpu_freebsd_arm64.go | 9 + .../shirou/gopsutil/cpu/cpu_linux.go | 119 +- .../shirou/gopsutil/cpu/cpu_openbsd.go | 105 +- .../shirou/gopsutil/cpu/cpu_solaris.go | 100 +- .../shirou/gopsutil/cpu/cpu_windows.go | 156 +- .../github.com/shirou/gopsutil/host/host.go | 53 - .../shirou/gopsutil/host/host_darwin.go | 232 -- .../shirou/gopsutil/host/host_darwin_386.go | 19 - .../shirou/gopsutil/host/host_darwin_amd64.go | 19 - .../shirou/gopsutil/host/host_fallback.go | 65 - .../shirou/gopsutil/host/host_freebsd.go | 245 -- .../shirou/gopsutil/host/host_freebsd_386.go | 43 - .../gopsutil/host/host_freebsd_amd64.go | 44 - .../shirou/gopsutil/host/host_freebsd_arm.go | 44 - .../shirou/gopsutil/host/host_linux.go | 682 ----- .../shirou/gopsutil/host/host_linux_386.go | 45 - .../shirou/gopsutil/host/host_linux_amd64.go | 48 - .../shirou/gopsutil/host/host_linux_arm.go | 43 - .../shirou/gopsutil/host/host_linux_arm64.go | 43 - .../shirou/gopsutil/host/host_linux_mips.go | 43 - .../shirou/gopsutil/host/host_linux_mips64.go | 43 - .../gopsutil/host/host_linux_mips64le.go | 43 - .../shirou/gopsutil/host/host_linux_mipsle.go | 43 - .../gopsutil/host/host_linux_ppc64le.go | 45 - .../shirou/gopsutil/host/host_linux_s390x.go | 45 - .../shirou/gopsutil/host/host_openbsd.go | 195 -- .../gopsutil/host/host_openbsd_amd64.go | 31 - .../shirou/gopsutil/host/host_solaris.go | 248 -- .../shirou/gopsutil/host/host_windows.go | 295 -- .../shirou/gopsutil/internal/common/common.go | 61 +- .../gopsutil/internal/common/common_darwin.go | 6 +- .../internal/common/common_freebsd.go | 18 +- .../gopsutil/internal/common/common_linux.go | 255 +- .../internal/common/common_openbsd.go | 2 +- .../gopsutil/internal/common/common_unix.go | 2 +- .../internal/common/common_windows.go | 114 +- .../shirou/gopsutil/internal/common/sleep.go | 18 + vendor/github.com/shirou/gopsutil/mem/mem.go | 8 + .../shirou/gopsutil/mem/mem_darwin.go | 47 +- .../shirou/gopsutil/mem/mem_freebsd.go | 79 +- .../shirou/gopsutil/mem/mem_linux.go | 282 +- .../shirou/gopsutil/mem/mem_openbsd.go | 31 +- .../shirou/gopsutil/mem/mem_openbsd_386.go | 37 + .../shirou/gopsutil/mem/mem_openbsd_amd64.go | 90 - .../shirou/gopsutil/mem/mem_solaris.go | 6 +- .../shirou/gopsutil/mem/mem_windows.go | 3 +- vendor/github.com/shirou/gopsutil/net/net.go | 186 +- .../github.com/shirou/gopsutil/net/net_aix.go | 425 +++ .../shirou/gopsutil/net/net_darwin.go | 19 +- .../shirou/gopsutil/net/net_fallback.go | 45 +- .../shirou/gopsutil/net/net_freebsd.go | 17 +- .../shirou/gopsutil/net/net_linux.go | 149 +- .../shirou/gopsutil/net/net_openbsd.go | 15 +- .../shirou/gopsutil/net/net_unix.go | 130 +- .../shirou/gopsutil/net/net_windows.go | 178 +- .../shirou/gopsutil/process/process.go | 330 +- .../shirou/gopsutil/process/process_bsd.go | 80 + .../shirou/gopsutil/process/process_darwin.go | 347 +-- .../gopsutil/process/process_darwin_arm64.go | 205 ++ .../gopsutil/process/process_darwin_cgo.go | 30 + .../gopsutil/process/process_darwin_nocgo.go | 34 + .../gopsutil/process/process_fallback.go | 156 +- .../gopsutil/process/process_freebsd.go | 239 +- .../gopsutil/process/process_freebsd_arm64.go | 201 ++ .../shirou/gopsutil/process/process_linux.go | 452 +-- .../gopsutil/process/process_openbsd.go | 255 +- .../gopsutil/process/process_openbsd_386.go | 201 ++ .../shirou/gopsutil/process/process_posix.go | 82 +- .../gopsutil/process/process_windows.go | 801 ++--- .../gopsutil/process/process_windows_386.go | 86 + .../gopsutil/process/process_windows_amd64.go | 60 + vendor/github.com/shirou/w32/AUTHORS | 16 - vendor/github.com/shirou/w32/LICENSE | 23 - vendor/github.com/shirou/w32/README.md | 33 - vendor/github.com/shirou/w32/advapi32.go | 301 -- vendor/github.com/shirou/w32/comctl32.go | 111 - vendor/github.com/shirou/w32/comdlg32.go | 40 - vendor/github.com/shirou/w32/constants.go | 2661 ----------------- vendor/github.com/shirou/w32/dwmapi.go | 256 -- vendor/github.com/shirou/w32/gdi32.go | 511 ---- vendor/github.com/shirou/w32/gdiplus.go | 177 -- vendor/github.com/shirou/w32/idispatch.go | 45 - vendor/github.com/shirou/w32/istream.go | 33 - vendor/github.com/shirou/w32/iunknown.go | 29 - vendor/github.com/shirou/w32/kernel32.go | 316 -- vendor/github.com/shirou/w32/ole32.go | 65 - vendor/github.com/shirou/w32/oleaut32.go | 50 - vendor/github.com/shirou/w32/opengl32.go | 74 - vendor/github.com/shirou/w32/psapi.go | 27 - vendor/github.com/shirou/w32/shell32.go | 155 - vendor/github.com/shirou/w32/typedef.go | 901 ------ vendor/github.com/shirou/w32/user32.go | 950 ------ vendor/github.com/shirou/w32/utils.go | 203 -- vendor/github.com/shirou/w32/vars.go | 13 - vendor/modules.txt | 7 +- 104 files changed, 4537 insertions(+), 11733 deletions(-) create mode 100644 vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly.go create mode 100644 vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly_amd64.go create mode 100644 vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm.go create mode 100644 vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_darwin.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_darwin_386.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_darwin_amd64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_fallback.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_freebsd.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_freebsd_386.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_freebsd_amd64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_freebsd_arm.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_386.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_amd64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_arm.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_arm64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_mips.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_mips64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_mips64le.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_mipsle.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_ppc64le.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_linux_s390x.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_openbsd.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_openbsd_amd64.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_solaris.go delete mode 100644 vendor/github.com/shirou/gopsutil/host/host_windows.go create mode 100644 vendor/github.com/shirou/gopsutil/internal/common/sleep.go create mode 100644 vendor/github.com/shirou/gopsutil/mem/mem_openbsd_386.go create mode 100644 vendor/github.com/shirou/gopsutil/net/net_aix.go create mode 100644 vendor/github.com/shirou/gopsutil/process/process_bsd.go create mode 100644 vendor/github.com/shirou/gopsutil/process/process_darwin_arm64.go create mode 100644 vendor/github.com/shirou/gopsutil/process/process_darwin_cgo.go create mode 100644 vendor/github.com/shirou/gopsutil/process/process_darwin_nocgo.go create mode 100644 vendor/github.com/shirou/gopsutil/process/process_freebsd_arm64.go create mode 100644 vendor/github.com/shirou/gopsutil/process/process_openbsd_386.go delete mode 100644 vendor/github.com/shirou/w32/AUTHORS delete mode 100644 vendor/github.com/shirou/w32/LICENSE delete mode 100644 vendor/github.com/shirou/w32/README.md delete mode 100644 vendor/github.com/shirou/w32/advapi32.go delete mode 100644 vendor/github.com/shirou/w32/comctl32.go delete mode 100644 vendor/github.com/shirou/w32/comdlg32.go delete mode 100644 vendor/github.com/shirou/w32/constants.go delete mode 100644 vendor/github.com/shirou/w32/dwmapi.go delete mode 100644 vendor/github.com/shirou/w32/gdi32.go delete mode 100644 vendor/github.com/shirou/w32/gdiplus.go delete mode 100644 vendor/github.com/shirou/w32/idispatch.go delete mode 100644 vendor/github.com/shirou/w32/istream.go delete mode 100644 vendor/github.com/shirou/w32/iunknown.go delete mode 100644 vendor/github.com/shirou/w32/kernel32.go delete mode 100644 vendor/github.com/shirou/w32/ole32.go delete mode 100644 vendor/github.com/shirou/w32/oleaut32.go delete mode 100644 vendor/github.com/shirou/w32/opengl32.go delete mode 100644 vendor/github.com/shirou/w32/psapi.go delete mode 100644 vendor/github.com/shirou/w32/shell32.go delete mode 100644 vendor/github.com/shirou/w32/typedef.go delete mode 100644 vendor/github.com/shirou/w32/user32.go delete mode 100644 vendor/github.com/shirou/w32/utils.go delete mode 100644 vendor/github.com/shirou/w32/vars.go diff --git a/go.mod b/go.mod index 000259a3c..000b31cfa 100644 --- a/go.mod +++ b/go.mod @@ -63,6 +63,7 @@ require ( github.com/mitchellh/cli v1.1.0 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed + github.com/mitchellh/gox v1.0.1 // indirect github.com/mitchellh/mapstructure v1.4.0 github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 @@ -75,7 +76,7 @@ require ( github.com/posener/complete v1.2.3 github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7 - github.com/shirou/gopsutil v2.18.12+incompatible + github.com/shirou/gopsutil v3.21.1+incompatible github.com/stretchr/testify v1.6.1 github.com/tencentcloud/tencentcloud-sdk-go v3.0.222+incompatible github.com/ucloud/ucloud-sdk-go v0.16.3 diff --git a/go.sum b/go.sum index a847cc20a..070e3f889 100644 --- a/go.sum +++ b/go.sum @@ -615,6 +615,8 @@ github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM= github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.1+incompatible h1:2LwXWdbjXwyDgq26Yy/OT4xozlpmssQfy/rtfhWb0bY= +github.com/shirou/gopsutil v3.21.1+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu.go b/vendor/github.com/shirou/gopsutil/cpu/cpu.go index ceaf77fee..24a81167d 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "fmt" - "runtime" + "math" "strconv" "strings" "sync" @@ -14,8 +14,7 @@ import ( ) // TimesStat contains the amounts of time the CPU has spent performing different -// kinds of work. Time units are in USER_HZ or Jiffies (typically hundredths of -// a second). It is based on linux /proc/stat file. +// kinds of work. Time units are in seconds. It is based on linux /proc/stat file. type TimesStat struct { CPU string `json:"cpu"` User float64 `json:"user"` @@ -28,7 +27,6 @@ type TimesStat struct { Steal float64 `json:"steal"` Guest float64 `json:"guest"` GuestNice float64 `json:"guestNice"` - Stolen float64 `json:"stolen"` } type InfoStat struct { @@ -63,14 +61,11 @@ func init() { lastCPUPercent.Unlock() } +// Counts returns the number of physical or logical cores in the system func Counts(logical bool) (int, error) { return CountsWithContext(context.Background(), logical) } -func CountsWithContext(ctx context.Context, logical bool) (int, error) { - return runtime.NumCPU(), nil -} - func (c TimesStat) String() string { v := []string{ `"cpu":"` + c.CPU + `"`, @@ -84,7 +79,6 @@ func (c TimesStat) String() string { `"steal":` + strconv.FormatFloat(c.Steal, 'f', 1, 64), `"guest":` + strconv.FormatFloat(c.Guest, 'f', 1, 64), `"guestNice":` + strconv.FormatFloat(c.GuestNice, 'f', 1, 64), - `"stolen":` + strconv.FormatFloat(c.Stolen, 'f', 1, 64), } return `{` + strings.Join(v, ",") + `}` @@ -92,8 +86,8 @@ func (c TimesStat) String() string { // Total returns the total number of seconds in a CPUTimesStat func (c TimesStat) Total() float64 { - total := c.User + c.System + c.Nice + c.Iowait + c.Irq + c.Softirq + c.Steal + - c.Guest + c.GuestNice + c.Idle + c.Stolen + total := c.User + c.System + c.Nice + c.Iowait + c.Irq + c.Softirq + + c.Steal + c.Idle return total } @@ -104,7 +98,7 @@ func (c InfoStat) String() string { func getAllBusy(t TimesStat) (float64, float64) { busy := t.User + t.System + t.Nice + t.Iowait + t.Irq + - t.Softirq + t.Steal + t.Guest + t.GuestNice + t.Stolen + t.Softirq + t.Steal return busy + t.Idle, busy } @@ -116,9 +110,9 @@ func calculateBusy(t1, t2 TimesStat) float64 { return 0 } if t2All <= t1All { - return 1 + return 100 } - return (t2Busy - t1Busy) / (t2All - t1All) * 100 + return math.Min(100, math.Max(0, (t2Busy-t1Busy)/(t2All-t1All)*100)) } func calculateAllBusy(t1, t2 []TimesStat) ([]float64, error) { @@ -155,7 +149,9 @@ func PercentWithContext(ctx context.Context, interval time.Duration, percpu bool return nil, err } - time.Sleep(interval) + if err := common.Sleep(ctx, interval); err != nil { + return nil, err + } // And at the end of the interval. cpuTimes2, err := Times(percpu) diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_darwin.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_darwin.go index 74d273731..3d3455ee6 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_darwin.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_darwin.go @@ -7,6 +7,8 @@ import ( "os/exec" "strconv" "strings" + + "golang.org/x/sys/unix" ) // sys/resource.h @@ -22,6 +24,21 @@ const ( // default value. from time.h var ClocksPerSec = float64(128) +func init() { + getconf, err := exec.LookPath("getconf") + if err != nil { + return + } + out, err := invoke.Command(getconf, "CLK_TCK") + // ignore errors + if err == nil { + i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) + if err == nil { + ClocksPerSec = float64(i) + } + } +} + func Times(percpu bool) ([]TimesStat, error) { return TimesWithContext(context.Background(), percpu) } @@ -41,75 +58,62 @@ func Info() ([]InfoStat, error) { func InfoWithContext(ctx context.Context) ([]InfoStat, error) { var ret []InfoStat - sysctl, err := exec.LookPath("/usr/sbin/sysctl") - if err != nil { - return ret, err - } - out, err := invoke.CommandWithContext(ctx, sysctl, "machdep.cpu") - if err != nil { - return ret, err - } c := InfoStat{} - for _, line := range strings.Split(string(out), "\n") { - values := strings.Fields(line) - if len(values) < 1 { - continue - } - - t, err := strconv.ParseInt(values[1], 10, 64) - // err is not checked here because some value is string. - if strings.HasPrefix(line, "machdep.cpu.brand_string") { - c.ModelName = strings.Join(values[1:], " ") - } else if strings.HasPrefix(line, "machdep.cpu.family") { - c.Family = values[1] - } else if strings.HasPrefix(line, "machdep.cpu.model") { - c.Model = values[1] - } else if strings.HasPrefix(line, "machdep.cpu.stepping") { - if err != nil { - return ret, err - } - c.Stepping = int32(t) - } else if strings.HasPrefix(line, "machdep.cpu.features") { - for _, v := range values[1:] { - c.Flags = append(c.Flags, strings.ToLower(v)) - } - } else if strings.HasPrefix(line, "machdep.cpu.leaf7_features") { - for _, v := range values[1:] { - c.Flags = append(c.Flags, strings.ToLower(v)) - } - } else if strings.HasPrefix(line, "machdep.cpu.extfeatures") { - for _, v := range values[1:] { - c.Flags = append(c.Flags, strings.ToLower(v)) - } - } else if strings.HasPrefix(line, "machdep.cpu.core_count") { - if err != nil { - return ret, err - } - c.Cores = int32(t) - } else if strings.HasPrefix(line, "machdep.cpu.cache.size") { - if err != nil { - return ret, err - } - c.CacheSize = int32(t) - } else if strings.HasPrefix(line, "machdep.cpu.vendor") { - c.VendorID = values[1] + c.ModelName, _ = unix.Sysctl("machdep.cpu.brand_string") + family, _ := unix.SysctlUint32("machdep.cpu.family") + c.Family = strconv.FormatUint(uint64(family), 10) + model, _ := unix.SysctlUint32("machdep.cpu.model") + c.Model = strconv.FormatUint(uint64(model), 10) + stepping, _ := unix.SysctlUint32("machdep.cpu.stepping") + c.Stepping = int32(stepping) + features, err := unix.Sysctl("machdep.cpu.features") + if err == nil { + for _, v := range strings.Fields(features) { + c.Flags = append(c.Flags, strings.ToLower(v)) } } + leaf7Features, err := unix.Sysctl("machdep.cpu.leaf7_features") + if err == nil { + for _, v := range strings.Fields(leaf7Features) { + c.Flags = append(c.Flags, strings.ToLower(v)) + } + } + extfeatures, err := unix.Sysctl("machdep.cpu.extfeatures") + if err == nil { + for _, v := range strings.Fields(extfeatures) { + c.Flags = append(c.Flags, strings.ToLower(v)) + } + } + cores, _ := unix.SysctlUint32("machdep.cpu.core_count") + c.Cores = int32(cores) + cacheSize, _ := unix.SysctlUint32("machdep.cpu.cache.size") + c.CacheSize = int32(cacheSize) + c.VendorID, _ = unix.Sysctl("machdep.cpu.vendor") // Use the rated frequency of the CPU. This is a static value and does not // account for low power or Turbo Boost modes. - out, err = invoke.CommandWithContext(ctx, sysctl, "hw.cpufrequency") + cpuFrequency, err := unix.SysctlUint64("hw.cpufrequency") if err != nil { return ret, err } - - values := strings.Fields(string(out)) - hz, err := strconv.ParseFloat(values[1], 64) - if err != nil { - return ret, err - } - c.Mhz = hz / 1000000.0 + c.Mhz = float64(cpuFrequency) / 1000000.0 return append(ret, c), nil } + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + var cpuArgument string + if logical { + cpuArgument = "hw.logicalcpu" + } else { + cpuArgument = "hw.physicalcpu" + } + + count, err := unix.SysctlUint32(cpuArgument) + if err != nil { + return 0, err + } + + return int(count), nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly.go new file mode 100644 index 000000000..eed5beab7 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly.go @@ -0,0 +1,161 @@ +package cpu + +import ( + "context" + "fmt" + "os/exec" + "reflect" + "regexp" + "runtime" + "strconv" + "strings" + "unsafe" + + "github.com/shirou/gopsutil/internal/common" + "golang.org/x/sys/unix" +) + +var ClocksPerSec = float64(128) +var cpuMatch = regexp.MustCompile(`^CPU:`) +var originMatch = regexp.MustCompile(`Origin\s*=\s*"(.+)"\s+Id\s*=\s*(.+)\s+Stepping\s*=\s*(.+)`) +var featuresMatch = regexp.MustCompile(`Features=.+<(.+)>`) +var featuresMatch2 = regexp.MustCompile(`Features2=[a-f\dx]+<(.+)>`) +var cpuEnd = regexp.MustCompile(`^Trying to mount root`) +var cpuTimesSize int +var emptyTimes cpuTimes + +func init() { + getconf, err := exec.LookPath("getconf") + if err != nil { + return + } + out, err := invoke.Command(getconf, "CLK_TCK") + // ignore errors + if err == nil { + i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) + if err == nil { + ClocksPerSec = float64(i) + } + } +} + +func timeStat(name string, t *cpuTimes) *TimesStat { + return &TimesStat{ + User: float64(t.User) / ClocksPerSec, + Nice: float64(t.Nice) / ClocksPerSec, + System: float64(t.Sys) / ClocksPerSec, + Idle: float64(t.Idle) / ClocksPerSec, + Irq: float64(t.Intr) / ClocksPerSec, + CPU: name, + } +} + +func Times(percpu bool) ([]TimesStat, error) { + return TimesWithContext(context.Background(), percpu) +} + +func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error) { + if percpu { + buf, err := unix.SysctlRaw("kern.cp_times") + if err != nil { + return nil, err + } + + // We can't do this in init due to the conflict with cpu.init() + if cpuTimesSize == 0 { + cpuTimesSize = int(reflect.TypeOf(cpuTimes{}).Size()) + } + + ncpus := len(buf) / cpuTimesSize + ret := make([]TimesStat, 0, ncpus) + for i := 0; i < ncpus; i++ { + times := (*cpuTimes)(unsafe.Pointer(&buf[i*cpuTimesSize])) + if *times == emptyTimes { + // CPU not present + continue + } + ret = append(ret, *timeStat(fmt.Sprintf("cpu%d", len(ret)), times)) + } + return ret, nil + } + + buf, err := unix.SysctlRaw("kern.cp_time") + if err != nil { + return nil, err + } + + times := (*cpuTimes)(unsafe.Pointer(&buf[0])) + return []TimesStat{*timeStat("cpu-total", times)}, nil +} + +// Returns only one InfoStat on DragonflyBSD. The information regarding core +// count, however is accurate and it is assumed that all InfoStat attributes +// are the same across CPUs. +func Info() ([]InfoStat, error) { + return InfoWithContext(context.Background()) +} + +func InfoWithContext(ctx context.Context) ([]InfoStat, error) { + const dmesgBoot = "/var/run/dmesg.boot" + + c, err := parseDmesgBoot(dmesgBoot) + if err != nil { + return nil, err + } + + var u32 uint32 + if u32, err = unix.SysctlUint32("hw.clockrate"); err != nil { + return nil, err + } + c.Mhz = float64(u32) + + var num int + var buf string + if buf, err = unix.Sysctl("hw.cpu_topology.tree"); err != nil { + return nil, err + } + num = strings.Count(buf, "CHIP") + c.Cores = int32(strings.Count(string(buf), "CORE") / num) + + if c.ModelName, err = unix.Sysctl("hw.model"); err != nil { + return nil, err + } + + ret := make([]InfoStat, num) + for i := 0; i < num; i++ { + ret[i] = c + } + + return ret, nil +} + +func parseDmesgBoot(fileName string) (InfoStat, error) { + c := InfoStat{} + lines, _ := common.ReadLines(fileName) + for _, line := range lines { + if matches := cpuEnd.FindStringSubmatch(line); matches != nil { + break + } else if matches := originMatch.FindStringSubmatch(line); matches != nil { + c.VendorID = matches[1] + t, err := strconv.ParseInt(matches[2], 10, 32) + if err != nil { + return c, fmt.Errorf("unable to parse DragonflyBSD CPU stepping information from %q: %v", line, err) + } + c.Stepping = int32(t) + } else if matches := featuresMatch.FindStringSubmatch(line); matches != nil { + for _, v := range strings.Split(matches[1], ",") { + c.Flags = append(c.Flags, strings.ToLower(v)) + } + } else if matches := featuresMatch2.FindStringSubmatch(line); matches != nil { + for _, v := range strings.Split(matches[1], ",") { + c.Flags = append(c.Flags, strings.ToLower(v)) + } + } + } + + return c, nil +} + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + return runtime.NumCPU(), nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly_amd64.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly_amd64.go new file mode 100644 index 000000000..57e14528d --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_dragonfly_amd64.go @@ -0,0 +1,9 @@ +package cpu + +type cpuTimes struct { + User uint64 + Nice uint64 + Sys uint64 + Intr uint64 + Idle uint64 +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_fallback.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_fallback.go index e9e7ada2c..5551c49d1 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_fallback.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_fallback.go @@ -1,9 +1,10 @@ -// +build !darwin,!linux,!freebsd,!openbsd,!solaris,!windows +// +build !darwin,!linux,!freebsd,!openbsd,!solaris,!windows,!dragonfly package cpu import ( "context" + "runtime" "github.com/shirou/gopsutil/internal/common" ) @@ -23,3 +24,7 @@ func Info() ([]InfoStat, error) { func InfoWithContext(ctx context.Context) ([]InfoStat, error) { return []InfoStat{}, common.ErrNotImplementedError } + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + return runtime.NumCPU(), nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd.go index b6c7186c7..57beffae1 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd.go @@ -6,6 +6,7 @@ import ( "os/exec" "reflect" "regexp" + "runtime" "strconv" "strings" "unsafe" @@ -25,7 +26,7 @@ var cpuTimesSize int var emptyTimes cpuTimes func init() { - getconf, err := exec.LookPath("/usr/bin/getconf") + getconf, err := exec.LookPath("getconf") if err != nil { return } @@ -166,3 +167,7 @@ func parseDmesgBoot(fileName string) (InfoStat, int, error) { return c, cpuNum, nil } + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + return runtime.NumCPU(), nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm.go new file mode 100644 index 000000000..8b7f4c321 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm.go @@ -0,0 +1,9 @@ +package cpu + +type cpuTimes struct { + User uint32 + Nice uint32 + Sys uint32 + Intr uint32 + Idle uint32 +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm64.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm64.go new file mode 100644 index 000000000..57e14528d --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_freebsd_arm64.go @@ -0,0 +1,9 @@ +package cpu + +type cpuTimes struct { + User uint64 + Nice uint64 + Sys uint64 + Intr uint64 + Idle uint64 +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_linux.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_linux.go index 2fffe85b9..f5adae706 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_linux.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_linux.go @@ -7,16 +7,17 @@ import ( "errors" "fmt" "os/exec" + "path/filepath" "strconv" "strings" "github.com/shirou/gopsutil/internal/common" ) -var CPUTick = float64(100) +var ClocksPerSec = float64(100) func init() { - getconf, err := exec.LookPath("/usr/bin/getconf") + getconf, err := exec.LookPath("getconf") if err != nil { return } @@ -25,7 +26,7 @@ func init() { if err == nil { i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) if err == nil { - CPUTick = i + ClocksPerSec = i } } } @@ -87,7 +88,7 @@ func finishCPUInfo(c *InfoStat) error { lines, err = common.ReadLines(sysCPUPath(c.CPU, "cpufreq/cpuinfo_max_freq")) // if we encounter errors below such as there are no cpuinfo_max_freq file, // we just ignore. so let Mhz is 0. - if err != nil { + if err != nil || len(lines) == 0 { return nil } value, err = strconv.ParseFloat(lines[0], 64) @@ -250,35 +251,125 @@ func parseStatLine(line string) (*TimesStat, error) { ct := &TimesStat{ CPU: cpu, - User: user / CPUTick, - Nice: nice / CPUTick, - System: system / CPUTick, - Idle: idle / CPUTick, - Iowait: iowait / CPUTick, - Irq: irq / CPUTick, - Softirq: softirq / CPUTick, + User: user / ClocksPerSec, + Nice: nice / ClocksPerSec, + System: system / ClocksPerSec, + Idle: idle / ClocksPerSec, + Iowait: iowait / ClocksPerSec, + Irq: irq / ClocksPerSec, + Softirq: softirq / ClocksPerSec, } if len(fields) > 8 { // Linux >= 2.6.11 steal, err := strconv.ParseFloat(fields[8], 64) if err != nil { return nil, err } - ct.Steal = steal / CPUTick + ct.Steal = steal / ClocksPerSec } if len(fields) > 9 { // Linux >= 2.6.24 guest, err := strconv.ParseFloat(fields[9], 64) if err != nil { return nil, err } - ct.Guest = guest / CPUTick + ct.Guest = guest / ClocksPerSec } if len(fields) > 10 { // Linux >= 3.2.0 guestNice, err := strconv.ParseFloat(fields[10], 64) if err != nil { return nil, err } - ct.GuestNice = guestNice / CPUTick + ct.GuestNice = guestNice / ClocksPerSec } return ct, nil } + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + if logical { + ret := 0 + // https://github.com/giampaolo/psutil/blob/d01a9eaa35a8aadf6c519839e987a49d8be2d891/psutil/_pslinux.py#L599 + procCpuinfo := common.HostProc("cpuinfo") + lines, err := common.ReadLines(procCpuinfo) + if err == nil { + for _, line := range lines { + line = strings.ToLower(line) + if strings.HasPrefix(line, "processor") { + ret++ + } + } + } + if ret == 0 { + procStat := common.HostProc("stat") + lines, err = common.ReadLines(procStat) + if err != nil { + return 0, err + } + for _, line := range lines { + if len(line) >= 4 && strings.HasPrefix(line, "cpu") && '0' <= line[3] && line[3] <= '9' { // `^cpu\d` regexp matching + ret++ + } + } + } + return ret, nil + } + // physical cores + // https://github.com/giampaolo/psutil/blob/8415355c8badc9c94418b19bdf26e622f06f0cce/psutil/_pslinux.py#L615-L628 + var threadSiblingsLists = make(map[string]bool) + // These 2 files are the same but */core_cpus_list is newer while */thread_siblings_list is deprecated and may disappear in the future. + // https://www.kernel.org/doc/Documentation/admin-guide/cputopology.rst + // https://github.com/giampaolo/psutil/pull/1727#issuecomment-707624964 + // https://lkml.org/lkml/2019/2/26/41 + for _, glob := range []string{"devices/system/cpu/cpu[0-9]*/topology/core_cpus_list", "devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list"} { + if files, err := filepath.Glob(common.HostSys(glob)); err == nil { + for _, file := range files { + lines, err := common.ReadLines(file) + if err != nil || len(lines) != 1 { + continue + } + threadSiblingsLists[lines[0]] = true + } + ret := len(threadSiblingsLists) + if ret != 0 { + return ret, nil + } + } + } + // https://github.com/giampaolo/psutil/blob/122174a10b75c9beebe15f6c07dcf3afbe3b120d/psutil/_pslinux.py#L631-L652 + filename := common.HostProc("cpuinfo") + lines, err := common.ReadLines(filename) + if err != nil { + return 0, err + } + mapping := make(map[int]int) + currentInfo := make(map[string]int) + for _, line := range lines { + line = strings.ToLower(strings.TrimSpace(line)) + if line == "" { + // new section + id, okID := currentInfo["physical id"] + cores, okCores := currentInfo["cpu cores"] + if okID && okCores { + mapping[id] = cores + } + currentInfo = make(map[string]int) + continue + } + fields := strings.Split(line, ":") + if len(fields) < 2 { + continue + } + fields[0] = strings.TrimSpace(fields[0]) + if fields[0] == "physical id" || fields[0] == "cpu cores" { + val, err := strconv.Atoi(strings.TrimSpace(fields[1])) + if err != nil { + continue + } + currentInfo[fields[0]] = val + } + } + ret := 0 + for _, v := range mapping { + ret += v + } + return ret, nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_openbsd.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_openbsd.go index 82b920f66..b54cf9ca6 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_openbsd.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_openbsd.go @@ -8,15 +8,17 @@ import ( "encoding/binary" "fmt" "os/exec" + "runtime" "strconv" "strings" + "syscall" "github.com/shirou/gopsutil/internal/common" "golang.org/x/sys/unix" ) // sys/sched.h -const ( +var ( CPUser = 0 CPNice = 1 CPSys = 2 @@ -28,6 +30,8 @@ const ( // sys/sysctl.h const ( CTLKern = 1 // "high kernel": proc, limits + CTLHw = 6 // CTL_HW + SMT = 24 // HW_SMT KernCptime = 40 // KERN_CPTIME KernCptime2 = 71 // KERN_CPTIME2 ) @@ -35,18 +39,52 @@ const ( var ClocksPerSec = float64(128) func init() { - getconf, err := exec.LookPath("/usr/bin/getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") - // ignore errors - if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) + func() { + getconf, err := exec.LookPath("getconf") + if err != nil { + return } + out, err := invoke.Command(getconf, "CLK_TCK") + // ignore errors + if err == nil { + i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) + if err == nil { + ClocksPerSec = float64(i) + } + } + }() + func() { + v, err := unix.Sysctl("kern.osrelease") // can't reuse host.PlatformInformation because of circular import + if err != nil { + return + } + v = strings.ToLower(v) + version, err := strconv.ParseFloat(v, 64) + if err != nil { + return + } + if version >= 6.4 { + CPIntr = 4 + CPIdle = 5 + CPUStates = 6 + } + }() +} + +func smt() (bool, error) { + mib := []int32{CTLHw, SMT} + buf, _, err := common.CallSyscall(mib) + if err != nil { + return false, err } + + var ret bool + br := bytes.NewReader(buf) + if err := binary.Read(br, binary.LittleEndian, &ret); err != nil { + return false, err + } + + return ret, nil } func Times(percpu bool) ([]TimesStat, error) { @@ -63,13 +101,27 @@ func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error) { ncpu = 1 } + smt, err := smt() + if err == syscall.EOPNOTSUPP { + // if hw.smt is not applicable for this platform (e.g. i386), + // pretend it's enabled + smt = true + } else if err != nil { + return nil, err + } + for i := 0; i < ncpu; i++ { - var cpuTimes [CPUStates]int64 + j := i + if !smt { + j *= 2 + } + + var cpuTimes = make([]int32, CPUStates) var mib []int32 if percpu { - mib = []int32{CTLKern, KernCptime} + mib = []int32{CTLKern, KernCptime2, int32(j)} } else { - mib = []int32{CTLKern, KernCptime2, int32(i)} + mib = []int32{CTLKern, KernCptime} } buf, _, err := common.CallSyscall(mib) if err != nil { @@ -88,10 +140,10 @@ func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error) { Idle: float64(cpuTimes[CPIdle]) / ClocksPerSec, Irq: float64(cpuTimes[CPIntr]) / ClocksPerSec, } - if !percpu { - c.CPU = "cpu-total" + if percpu { + c.CPU = fmt.Sprintf("cpu%d", j) } else { - c.CPU = fmt.Sprintf("cpu%d", i) + c.CPU = "cpu-total" } ret = append(ret, c) } @@ -106,14 +158,29 @@ func Info() ([]InfoStat, error) { func InfoWithContext(ctx context.Context) ([]InfoStat, error) { var ret []InfoStat + var err error c := InfoStat{} - v, err := unix.Sysctl("hw.model") + mhz, err := unix.SysctlUint32("hw.cpuspeed") if err != nil { return nil, err } - c.ModelName = v + c.Mhz = float64(mhz) + + ncpu, err := unix.SysctlUint32("hw.ncpuonline") + if err != nil { + return nil, err + } + c.Cores = int32(ncpu) + + if c.ModelName, err = unix.Sysctl("hw.model"); err != nil { + return nil, err + } return append(ret, c), nil } + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + return runtime.NumCPU(), nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_solaris.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_solaris.go index 117fd909d..3de098424 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_solaris.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_solaris.go @@ -6,17 +6,16 @@ import ( "fmt" "os/exec" "regexp" + "runtime" "sort" "strconv" "strings" - - "github.com/shirou/gopsutil/internal/common" ) var ClocksPerSec = float64(128) func init() { - getconf, err := exec.LookPath("/usr/bin/getconf") + getconf, err := exec.LookPath("getconf") if err != nil { return } @@ -30,12 +29,97 @@ func init() { } } +//sum all values in a float64 map with float64 keys +func msum(x map[float64]float64) float64 { + total := 0.0 + for _, y := range x { + total += y + } + return total +} + func Times(percpu bool) ([]TimesStat, error) { return TimesWithContext(context.Background(), percpu) } func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error) { - return []TimesStat{}, common.ErrNotImplementedError + kstatSys, err := exec.LookPath("kstat") + if err != nil { + return nil, fmt.Errorf("cannot find kstat: %s", err) + } + cpu := make(map[float64]float64) + idle := make(map[float64]float64) + user := make(map[float64]float64) + kern := make(map[float64]float64) + iowt := make(map[float64]float64) + //swap := make(map[float64]float64) + kstatSysOut, err := invoke.CommandWithContext(ctx, kstatSys, "-p", "cpu_stat:*:*:/^idle$|^user$|^kernel$|^iowait$|^swap$/") + if err != nil { + return nil, fmt.Errorf("cannot execute kstat: %s", err) + } + re := regexp.MustCompile(`[:\s]+`) + for _, line := range strings.Split(string(kstatSysOut), "\n") { + fields := re.Split(line, -1) + if fields[0] != "cpu_stat" { + continue + } + cpuNumber, err := strconv.ParseFloat(fields[1], 64) + if err != nil { + return nil, fmt.Errorf("cannot parse cpu number: %s", err) + } + cpu[cpuNumber] = cpuNumber + switch fields[3] { + case "idle": + idle[cpuNumber], err = strconv.ParseFloat(fields[4], 64) + if err != nil { + return nil, fmt.Errorf("cannot parse idle: %s", err) + } + case "user": + user[cpuNumber], err = strconv.ParseFloat(fields[4], 64) + if err != nil { + return nil, fmt.Errorf("cannot parse user: %s", err) + } + case "kernel": + kern[cpuNumber], err = strconv.ParseFloat(fields[4], 64) + if err != nil { + return nil, fmt.Errorf("cannot parse kernel: %s", err) + } + case "iowait": + iowt[cpuNumber], err = strconv.ParseFloat(fields[4], 64) + if err != nil { + return nil, fmt.Errorf("cannot parse iowait: %s", err) + } + //not sure how this translates, don't report, add to kernel, something else? + /*case "swap": + swap[cpuNumber], err = strconv.ParseFloat(fields[4], 64) + if err != nil { + return nil, fmt.Errorf("cannot parse swap: %s", err) + } */ + } + } + ret := make([]TimesStat, 0, len(cpu)) + if percpu { + for _, c := range cpu { + ct := &TimesStat{ + CPU: fmt.Sprintf("cpu%d", int(cpu[c])), + Idle: idle[c] / ClocksPerSec, + User: user[c] / ClocksPerSec, + System: kern[c] / ClocksPerSec, + Iowait: iowt[c] / ClocksPerSec, + } + ret = append(ret, *ct) + } + } else { + ct := &TimesStat{ + CPU: "cpu-total", + Idle: msum(idle) / ClocksPerSec, + User: msum(user) / ClocksPerSec, + System: msum(kern) / ClocksPerSec, + Iowait: msum(iowt) / ClocksPerSec, + } + ret = append(ret, *ct) + } + return ret, nil } func Info() ([]InfoStat, error) { @@ -43,7 +127,7 @@ func Info() ([]InfoStat, error) { } func InfoWithContext(ctx context.Context) ([]InfoStat, error) { - psrInfo, err := exec.LookPath("/usr/sbin/psrinfo") + psrInfo, err := exec.LookPath("psrinfo") if err != nil { return nil, fmt.Errorf("cannot find psrinfo: %s", err) } @@ -52,7 +136,7 @@ func InfoWithContext(ctx context.Context) ([]InfoStat, error) { return nil, fmt.Errorf("cannot execute psrinfo: %s", err) } - isaInfo, err := exec.LookPath("/usr/bin/isainfo") + isaInfo, err := exec.LookPath("isainfo") if err != nil { return nil, fmt.Errorf("cannot find isainfo: %s", err) } @@ -196,3 +280,7 @@ func parseProcessorInfo(cmdOutput string) ([]InfoStat, error) { } return result, nil } + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + return runtime.NumCPU(), nil +} diff --git a/vendor/github.com/shirou/gopsutil/cpu/cpu_windows.go b/vendor/github.com/shirou/gopsutil/cpu/cpu_windows.go index 3959212b1..ad1750b5c 100644 --- a/vendor/github.com/shirou/gopsutil/cpu/cpu_windows.go +++ b/vendor/github.com/shirou/gopsutil/cpu/cpu_windows.go @@ -12,29 +12,35 @@ import ( "golang.org/x/sys/windows" ) +var ( + procGetActiveProcessorCount = common.Modkernel32.NewProc("GetActiveProcessorCount") + procGetNativeSystemInfo = common.Modkernel32.NewProc("GetNativeSystemInfo") +) + type Win32_Processor struct { LoadPercentage *uint16 Family uint16 Manufacturer string Name string NumberOfLogicalProcessors uint32 + NumberOfCores uint32 ProcessorID *string Stepping *string MaxClockSpeed uint32 } -type win32_PerfRawData_Counters_ProcessorInformation struct { - Name string - PercentDPCTime uint64 - PercentIdleTime uint64 - PercentUserTime uint64 - PercentProcessorTime uint64 - PercentInterruptTime uint64 - PercentPriorityTime uint64 - PercentPrivilegedTime uint64 - InterruptsPerSec uint32 - ProcessorFrequency uint32 - DPCRate uint32 +// SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION +// defined in windows api doc with the following +// https://docs.microsoft.com/en-us/windows/desktop/api/winternl/nf-winternl-ntquerysysteminformation#system_processor_performance_information +// additional fields documented here +// https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/sysinfo/processor_performance.htm +type win32_SystemProcessorPerformanceInformation struct { + IdleTime int64 // idle time in 100ns (this is not a filetime). + KernelTime int64 // kernel time in 100ns. kernel time includes idle time. (this is not a filetime). + UserTime int64 // usertime in 100ns (this is not a filetime). + DpcTime int64 // dpc time in 100ns (this is not a filetime). + InterruptTime int64 // interrupt time in 100ns + InterruptCount uint32 } // Win32_PerfFormattedData_PerfOS_System struct to have count of processes and processor queue length @@ -44,7 +50,14 @@ type Win32_PerfFormattedData_PerfOS_System struct { } const ( - win32_TicksPerSecond = 10000000.0 + ClocksPerSec = 10000000.0 + + // systemProcessorPerformanceInformationClass information class to query with NTQuerySystemInformation + // https://processhacker.sourceforge.io/doc/ntexapi_8h.html#ad5d815b48e8f4da1ef2eb7a2f18a54e0 + win32_SystemProcessorPerformanceInformationClass = 8 + + // size of systemProcessorPerformanceInfoSize in memory + win32_SystemProcessorPerformanceInfoSize = uint32(unsafe.Sizeof(win32_SystemProcessorPerformanceInformation{})) ) // Times returns times stat per cpu and combined for all CPUs @@ -54,7 +67,7 @@ func Times(percpu bool) ([]TimesStat, error) { func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error) { if percpu { - return perCPUTimesWithContext(ctx) + return perCPUTimes() } var ret []TimesStat @@ -120,20 +133,6 @@ func InfoWithContext(ctx context.Context) ([]InfoStat, error) { return ret, nil } -// PerfInfo returns the performance counter's instance value for ProcessorInformation. -// Name property is the key by which overall, per cpu and per core metric is known. -func perfInfoWithContext(ctx context.Context) ([]win32_PerfRawData_Counters_ProcessorInformation, error) { - var ret []win32_PerfRawData_Counters_ProcessorInformation - - q := wmi.CreateQuery(&ret, "WHERE NOT Name LIKE '%_Total'") - err := common.WMIQueryWithContext(ctx, q, &ret) - if err != nil { - return []win32_PerfRawData_Counters_ProcessorInformation{}, err - } - - return ret, err -} - // ProcInfo returns processes count and processor queue length in the system. // There is a single queue for processor even on multiprocessors systems. func ProcInfo() ([]Win32_PerfFormattedData_PerfOS_System, error) { @@ -151,21 +150,106 @@ func ProcInfoWithContext(ctx context.Context) ([]Win32_PerfFormattedData_PerfOS_ } // perCPUTimes returns times stat per cpu, per core and overall for all CPUs -func perCPUTimesWithContext(ctx context.Context) ([]TimesStat, error) { +func perCPUTimes() ([]TimesStat, error) { var ret []TimesStat - stats, err := perfInfoWithContext(ctx) + stats, err := perfInfo() if err != nil { return nil, err } - for _, v := range stats { + for core, v := range stats { c := TimesStat{ - CPU: v.Name, - User: float64(v.PercentUserTime) / win32_TicksPerSecond, - System: float64(v.PercentPrivilegedTime) / win32_TicksPerSecond, - Idle: float64(v.PercentIdleTime) / win32_TicksPerSecond, - Irq: float64(v.PercentInterruptTime) / win32_TicksPerSecond, + CPU: fmt.Sprintf("cpu%d", core), + User: float64(v.UserTime) / ClocksPerSec, + System: float64(v.KernelTime-v.IdleTime) / ClocksPerSec, + Idle: float64(v.IdleTime) / ClocksPerSec, + Irq: float64(v.InterruptTime) / ClocksPerSec, } ret = append(ret, c) } return ret, nil } + +// makes call to Windows API function to retrieve performance information for each core +func perfInfo() ([]win32_SystemProcessorPerformanceInformation, error) { + // Make maxResults large for safety. + // We can't invoke the api call with a results array that's too small. + // If we have more than 2056 cores on a single host, then it's probably the future. + maxBuffer := 2056 + // buffer for results from the windows proc + resultBuffer := make([]win32_SystemProcessorPerformanceInformation, maxBuffer) + // size of the buffer in memory + bufferSize := uintptr(win32_SystemProcessorPerformanceInfoSize) * uintptr(maxBuffer) + // size of the returned response + var retSize uint32 + + // Invoke windows api proc. + // The returned err from the windows dll proc will always be non-nil even when successful. + // See https://godoc.org/golang.org/x/sys/windows#LazyProc.Call for more information + retCode, _, err := common.ProcNtQuerySystemInformation.Call( + win32_SystemProcessorPerformanceInformationClass, // System Information Class -> SystemProcessorPerformanceInformation + uintptr(unsafe.Pointer(&resultBuffer[0])), // pointer to first element in result buffer + bufferSize, // size of the buffer in memory + uintptr(unsafe.Pointer(&retSize)), // pointer to the size of the returned results the windows proc will set this + ) + + // check return code for errors + if retCode != 0 { + return nil, fmt.Errorf("call to NtQuerySystemInformation returned %d. err: %s", retCode, err.Error()) + } + + // calculate the number of returned elements based on the returned size + numReturnedElements := retSize / win32_SystemProcessorPerformanceInfoSize + + // trim results to the number of returned elements + resultBuffer = resultBuffer[:numReturnedElements] + + return resultBuffer, nil +} + +// SystemInfo is an equivalent representation of SYSTEM_INFO in the Windows API. +// https://msdn.microsoft.com/en-us/library/ms724958%28VS.85%29.aspx?f=255&MSPPError=-2147217396 +// https://github.com/elastic/go-windows/blob/bb1581babc04d5cb29a2bfa7a9ac6781c730c8dd/kernel32.go#L43 +type systemInfo struct { + wProcessorArchitecture uint16 + wReserved uint16 + dwPageSize uint32 + lpMinimumApplicationAddress uintptr + lpMaximumApplicationAddress uintptr + dwActiveProcessorMask uintptr + dwNumberOfProcessors uint32 + dwProcessorType uint32 + dwAllocationGranularity uint32 + wProcessorLevel uint16 + wProcessorRevision uint16 +} + +func CountsWithContext(ctx context.Context, logical bool) (int, error) { + if logical { + // https://github.com/giampaolo/psutil/blob/d01a9eaa35a8aadf6c519839e987a49d8be2d891/psutil/_psutil_windows.c#L97 + err := procGetActiveProcessorCount.Find() + if err == nil { // Win7+ + ret, _, _ := procGetActiveProcessorCount.Call(uintptr(0xffff)) // ALL_PROCESSOR_GROUPS is 0xffff according to Rust's winapi lib https://docs.rs/winapi/*/x86_64-pc-windows-msvc/src/winapi/shared/ntdef.rs.html#120 + if ret != 0 { + return int(ret), nil + } + } + var systemInfo systemInfo + _, _, err = procGetNativeSystemInfo.Call(uintptr(unsafe.Pointer(&systemInfo))) + if systemInfo.dwNumberOfProcessors == 0 { + return 0, err + } + return int(systemInfo.dwNumberOfProcessors), nil + } + // physical cores https://github.com/giampaolo/psutil/blob/d01a9eaa35a8aadf6c519839e987a49d8be2d891/psutil/_psutil_windows.c#L499 + // for the time being, try with unreliable and slow WMI call… + var dst []Win32_Processor + q := wmi.CreateQuery(&dst, "") + if err := common.WMIQueryWithContext(ctx, q, &dst); err != nil { + return 0, err + } + var count uint32 + for _, d := range dst { + count += d.NumberOfCores + } + return int(count), nil +} diff --git a/vendor/github.com/shirou/gopsutil/host/host.go b/vendor/github.com/shirou/gopsutil/host/host.go deleted file mode 100644 index 1e9e9bb68..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host.go +++ /dev/null @@ -1,53 +0,0 @@ -package host - -import ( - "encoding/json" - - "github.com/shirou/gopsutil/internal/common" -) - -var invoke common.Invoker = common.Invoke{} - -// A HostInfoStat describes the host status. -// This is not in the psutil but it useful. -type InfoStat struct { - Hostname string `json:"hostname"` - Uptime uint64 `json:"uptime"` - BootTime uint64 `json:"bootTime"` - Procs uint64 `json:"procs"` // number of processes - OS string `json:"os"` // ex: freebsd, linux - Platform string `json:"platform"` // ex: ubuntu, linuxmint - PlatformFamily string `json:"platformFamily"` // ex: debian, rhel - PlatformVersion string `json:"platformVersion"` // version of the complete OS - KernelVersion string `json:"kernelVersion"` // version of the OS kernel (if available) - VirtualizationSystem string `json:"virtualizationSystem"` - VirtualizationRole string `json:"virtualizationRole"` // guest or host - HostID string `json:"hostid"` // ex: uuid -} - -type UserStat struct { - User string `json:"user"` - Terminal string `json:"terminal"` - Host string `json:"host"` - Started int `json:"started"` -} - -type TemperatureStat struct { - SensorKey string `json:"sensorKey"` - Temperature float64 `json:"sensorTemperature"` -} - -func (h InfoStat) String() string { - s, _ := json.Marshal(h) - return string(s) -} - -func (u UserStat) String() string { - s, _ := json.Marshal(u) - return string(s) -} - -func (t TemperatureStat) String() string { - s, _ := json.Marshal(t) - return string(s) -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_darwin.go b/vendor/github.com/shirou/gopsutil/host/host_darwin.go deleted file mode 100644 index 8241fc08b..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_darwin.go +++ /dev/null @@ -1,232 +0,0 @@ -// +build darwin - -package host - -import ( - "bytes" - "context" - "encoding/binary" - "io/ioutil" - "os" - "os/exec" - "runtime" - "strconv" - "strings" - "sync/atomic" - "time" - "unsafe" - - "github.com/shirou/gopsutil/internal/common" - "github.com/shirou/gopsutil/process" -) - -// from utmpx.h -const USER_PROCESS = 7 - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - ret := &InfoStat{ - OS: runtime.GOOS, - PlatformFamily: "darwin", - } - - hostname, err := os.Hostname() - if err == nil { - ret.Hostname = hostname - } - - kernelVersion, err := KernelVersionWithContext(ctx) - if err == nil { - ret.KernelVersion = kernelVersion - } - - platform, family, pver, err := PlatformInformation() - if err == nil { - ret.Platform = platform - ret.PlatformFamily = family - ret.PlatformVersion = pver - } - - system, role, err := Virtualization() - if err == nil { - ret.VirtualizationSystem = system - ret.VirtualizationRole = role - } - - boot, err := BootTime() - if err == nil { - ret.BootTime = boot - ret.Uptime = uptime(boot) - } - - procs, err := process.Pids() - if err == nil { - ret.Procs = uint64(len(procs)) - } - - values, err := common.DoSysctrlWithContext(ctx, "kern.uuid") - if err == nil && len(values) == 1 && values[0] != "" { - ret.HostID = strings.ToLower(values[0]) - } - - return ret, nil -} - -// cachedBootTime must be accessed via atomic.Load/StoreUint64 -var cachedBootTime uint64 - -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - t := atomic.LoadUint64(&cachedBootTime) - if t != 0 { - return t, nil - } - values, err := common.DoSysctrlWithContext(ctx, "kern.boottime") - if err != nil { - return 0, err - } - // ex: { sec = 1392261637, usec = 627534 } Thu Feb 13 12:20:37 2014 - v := strings.Replace(values[2], ",", "", 1) - boottime, err := strconv.ParseInt(v, 10, 64) - if err != nil { - return 0, err - } - t = uint64(boottime) - atomic.StoreUint64(&cachedBootTime, t) - - return t, nil -} - -func uptime(boot uint64) uint64 { - return uint64(time.Now().Unix()) - boot -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - boot, err := BootTime() - if err != nil { - return 0, err - } - return uptime(boot), nil -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - utmpfile := "/var/run/utmpx" - var ret []UserStat - - file, err := os.Open(utmpfile) - if err != nil { - return ret, err - } - defer file.Close() - - buf, err := ioutil.ReadAll(file) - if err != nil { - return ret, err - } - - u := Utmpx{} - entrySize := int(unsafe.Sizeof(u)) - count := len(buf) / entrySize - - for i := 0; i < count; i++ { - b := buf[i*entrySize : i*entrySize+entrySize] - - var u Utmpx - br := bytes.NewReader(b) - err := binary.Read(br, binary.LittleEndian, &u) - if err != nil { - continue - } - if u.Type != USER_PROCESS { - continue - } - user := UserStat{ - User: common.IntToString(u.User[:]), - Terminal: common.IntToString(u.Line[:]), - Host: common.IntToString(u.Host[:]), - Started: int(u.Tv.Sec), - } - ret = append(ret, user) - } - - return ret, nil - -} - -func PlatformInformation() (string, string, string, error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (string, string, string, error) { - platform := "" - family := "" - pver := "" - - sw_vers, err := exec.LookPath("sw_vers") - if err != nil { - return "", "", "", err - } - uname, err := exec.LookPath("uname") - if err != nil { - return "", "", "", err - } - - out, err := invoke.CommandWithContext(ctx, uname, "-s") - if err == nil { - platform = strings.ToLower(strings.TrimSpace(string(out))) - } - - out, err = invoke.CommandWithContext(ctx, sw_vers, "-productVersion") - if err == nil { - pver = strings.ToLower(strings.TrimSpace(string(out))) - } - - return platform, family, pver, nil -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - return "", "", common.ErrNotImplementedError -} - -func KernelVersion() (string, error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (string, error) { - uname, err := exec.LookPath("uname") - if err != nil { - return "", err - } - out, err := invoke.CommandWithContext(ctx, uname, "-r") - if err != nil { - return "", err - } - version := strings.ToLower(strings.TrimSpace(string(out))) - return version, err -} - -func SensorsTemperatures() ([]TemperatureStat, error) { - return SensorsTemperaturesWithContext(context.Background()) -} - -func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) { - return []TemperatureStat{}, common.ErrNotImplementedError -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_darwin_386.go b/vendor/github.com/shirou/gopsutil/host/host_darwin_386.go deleted file mode 100644 index c3596f9f5..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_darwin_386.go +++ /dev/null @@ -1,19 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_darwin.go - -package host - -type Utmpx struct { - User [256]int8 - ID [4]int8 - Line [32]int8 - Pid int32 - Type int16 - Pad_cgo_0 [6]byte - Tv Timeval - Host [256]int8 - Pad [16]uint32 -} -type Timeval struct { - Sec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_darwin_amd64.go b/vendor/github.com/shirou/gopsutil/host/host_darwin_amd64.go deleted file mode 100644 index c3596f9f5..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_darwin_amd64.go +++ /dev/null @@ -1,19 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_darwin.go - -package host - -type Utmpx struct { - User [256]int8 - ID [4]int8 - Line [32]int8 - Pid int32 - Type int16 - Pad_cgo_0 [6]byte - Tv Timeval - Host [256]int8 - Pad [16]uint32 -} -type Timeval struct { - Sec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_fallback.go b/vendor/github.com/shirou/gopsutil/host/host_fallback.go deleted file mode 100644 index e80d7ea34..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_fallback.go +++ /dev/null @@ -1,65 +0,0 @@ -// +build !darwin,!linux,!freebsd,!openbsd,!solaris,!windows - -package host - -import ( - "context" - - "github.com/shirou/gopsutil/internal/common" -) - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - return nil, common.ErrNotImplementedError -} - -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - return 0, common.ErrNotImplementedError -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - return 0, common.ErrNotImplementedError -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - return []UserStat{}, common.ErrNotImplementedError -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - return "", "", common.ErrNotImplementedError -} - -func KernelVersion() (string, error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (string, error) { - return "", common.ErrNotImplementedError -} - -func PlatformInformation() (string, string, string, error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (string, string, string, error) { - return "", "", "", common.ErrNotImplementedError -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_freebsd.go b/vendor/github.com/shirou/gopsutil/host/host_freebsd.go deleted file mode 100644 index 00a851906..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_freebsd.go +++ /dev/null @@ -1,245 +0,0 @@ -// +build freebsd - -package host - -import ( - "bytes" - "context" - "encoding/binary" - "io/ioutil" - "os" - "runtime" - "strings" - "sync/atomic" - "syscall" - "time" - "unsafe" - - "github.com/shirou/gopsutil/internal/common" - "github.com/shirou/gopsutil/process" - "golang.org/x/sys/unix" -) - -const ( - UTNameSize = 16 /* see MAXLOGNAME in */ - UTLineSize = 8 - UTHostSize = 16 -) - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - ret := &InfoStat{ - OS: runtime.GOOS, - PlatformFamily: "freebsd", - } - - hostname, err := os.Hostname() - if err == nil { - ret.Hostname = hostname - } - - platform, family, version, err := PlatformInformation() - if err == nil { - ret.Platform = platform - ret.PlatformFamily = family - ret.PlatformVersion = version - ret.KernelVersion = version - } - - system, role, err := Virtualization() - if err == nil { - ret.VirtualizationSystem = system - ret.VirtualizationRole = role - } - - boot, err := BootTime() - if err == nil { - ret.BootTime = boot - ret.Uptime = uptime(boot) - } - - procs, err := process.Pids() - if err == nil { - ret.Procs = uint64(len(procs)) - } - - hostid, err := unix.Sysctl("kern.hostuuid") - if err == nil && hostid != "" { - ret.HostID = strings.ToLower(hostid) - } - - return ret, nil -} - -// cachedBootTime must be accessed via atomic.Load/StoreUint64 -var cachedBootTime uint64 - -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - t := atomic.LoadUint64(&cachedBootTime) - if t != 0 { - return t, nil - } - buf, err := unix.SysctlRaw("kern.boottime") - if err != nil { - return 0, err - } - - tv := *(*syscall.Timeval)(unsafe.Pointer((&buf[0]))) - atomic.StoreUint64(&cachedBootTime, uint64(tv.Sec)) - - return t, nil -} - -func uptime(boot uint64) uint64 { - return uint64(time.Now().Unix()) - boot -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - boot, err := BootTime() - if err != nil { - return 0, err - } - return uptime(boot), nil -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - utmpfile := "/var/run/utx.active" - if !common.PathExists(utmpfile) { - utmpfile = "/var/run/utmp" // before 9.0 - return getUsersFromUtmp(utmpfile) - } - - var ret []UserStat - file, err := os.Open(utmpfile) - if err != nil { - return ret, err - } - defer file.Close() - - buf, err := ioutil.ReadAll(file) - if err != nil { - return ret, err - } - - entrySize := sizeOfUtmpx - count := len(buf) / entrySize - - for i := 0; i < count; i++ { - b := buf[i*sizeOfUtmpx : (i+1)*sizeOfUtmpx] - var u Utmpx - br := bytes.NewReader(b) - err := binary.Read(br, binary.LittleEndian, &u) - if err != nil || u.Type != 4 { - continue - } - sec := (binary.LittleEndian.Uint32(u.Tv.Sec[:])) / 2 // TODO: - user := UserStat{ - User: common.IntToString(u.User[:]), - Terminal: common.IntToString(u.Line[:]), - Host: common.IntToString(u.Host[:]), - Started: int(sec), - } - - ret = append(ret, user) - } - - return ret, nil - -} - -func PlatformInformation() (string, string, string, error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (string, string, string, error) { - platform, err := unix.Sysctl("kern.ostype") - if err != nil { - return "", "", "", err - } - - version, err := unix.Sysctl("kern.osrelease") - if err != nil { - return "", "", "", err - } - - return strings.ToLower(platform), "", strings.ToLower(version), nil -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - return "", "", common.ErrNotImplementedError -} - -// before 9.0 -func getUsersFromUtmp(utmpfile string) ([]UserStat, error) { - var ret []UserStat - file, err := os.Open(utmpfile) - if err != nil { - return ret, err - } - defer file.Close() - - buf, err := ioutil.ReadAll(file) - if err != nil { - return ret, err - } - - u := Utmp{} - entrySize := int(unsafe.Sizeof(u)) - count := len(buf) / entrySize - - for i := 0; i < count; i++ { - b := buf[i*entrySize : i*entrySize+entrySize] - var u Utmp - br := bytes.NewReader(b) - err := binary.Read(br, binary.LittleEndian, &u) - if err != nil || u.Time == 0 { - continue - } - user := UserStat{ - User: common.IntToString(u.Name[:]), - Terminal: common.IntToString(u.Line[:]), - Host: common.IntToString(u.Host[:]), - Started: int(u.Time), - } - - ret = append(ret, user) - } - - return ret, nil -} - -func SensorsTemperatures() ([]TemperatureStat, error) { - return SensorsTemperaturesWithContext(context.Background()) -} - -func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) { - return []TemperatureStat{}, common.ErrNotImplementedError -} - -func KernelVersion() (string, error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (string, error) { - _, _, version, err := PlatformInformation() - return version, err -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_freebsd_386.go b/vendor/github.com/shirou/gopsutil/host/host_freebsd_386.go deleted file mode 100644 index 7f06d8f8e..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_freebsd_386.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmpx = 197 // TODO why should 197 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type Utmp struct { - Line [8]int8 - Name [16]int8 - Host [16]int8 - Time int32 -} - -type Utmpx struct { - Type int16 - Tv Timeval - Id [8]int8 - Pid int32 - User [32]int8 - Line [16]int8 - Host [125]int8 - // X__ut_spare [64]int8 -} - -type Timeval struct { - Sec [4]byte - Usec [3]byte -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_freebsd_amd64.go b/vendor/github.com/shirou/gopsutil/host/host_freebsd_amd64.go deleted file mode 100644 index 3f015f0fb..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_freebsd_amd64.go +++ /dev/null @@ -1,44 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package host - -const ( - sizeofPtr = 0x8 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmpx = 197 // TODO: why should 197, not 0x118 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int64 - _C_long_long int64 -) - -type Utmp struct { - Line [8]int8 - Name [16]int8 - Host [16]int8 - Time int32 -} - -type Utmpx struct { - Type int16 - Tv Timeval - Id [8]int8 - Pid int32 - User [32]int8 - Line [16]int8 - Host [125]int8 - // Host [128]int8 - // X__ut_spare [64]int8 -} - -type Timeval struct { - Sec [4]byte - Usec [3]byte -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_freebsd_arm.go b/vendor/github.com/shirou/gopsutil/host/host_freebsd_arm.go deleted file mode 100644 index ac74980ae..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_freebsd_arm.go +++ /dev/null @@ -1,44 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmpx = 197 // TODO: why should 197, not 0x118 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type Utmp struct { - Line [8]int8 - Name [16]int8 - Host [16]int8 - Time int32 -} - -type Utmpx struct { - Type int16 - Tv Timeval - Id [8]int8 - Pid int32 - User [32]int8 - Line [16]int8 - Host [125]int8 - // Host [128]int8 - // X__ut_spare [64]int8 -} - -type Timeval struct { - Sec [4]byte - Usec [3]byte -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux.go b/vendor/github.com/shirou/gopsutil/host/host_linux.go deleted file mode 100644 index 2c1ac6ba7..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux.go +++ /dev/null @@ -1,682 +0,0 @@ -// +build linux - -package host - -import ( - "bytes" - "context" - "encoding/binary" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "regexp" - "runtime" - "strconv" - "strings" - "sync/atomic" - "time" - - "github.com/shirou/gopsutil/internal/common" -) - -type LSB struct { - ID string - Release string - Codename string - Description string -} - -// from utmp.h -const USER_PROCESS = 7 - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - ret := &InfoStat{ - OS: runtime.GOOS, - } - - hostname, err := os.Hostname() - if err == nil { - ret.Hostname = hostname - } - - platform, family, version, err := PlatformInformation() - if err == nil { - ret.Platform = platform - ret.PlatformFamily = family - ret.PlatformVersion = version - } - kernelVersion, err := KernelVersion() - if err == nil { - ret.KernelVersion = kernelVersion - } - - system, role, err := Virtualization() - if err == nil { - ret.VirtualizationSystem = system - ret.VirtualizationRole = role - } - - boot, err := BootTime() - if err == nil { - ret.BootTime = boot - ret.Uptime = uptime(boot) - } - - if numProcs, err := common.NumProcs(); err == nil { - ret.Procs = numProcs - } - - sysProductUUID := common.HostSys("class/dmi/id/product_uuid") - machineID := common.HostEtc("machine-id") - switch { - // In order to read this file, needs to be supported by kernel/arch and run as root - // so having fallback is important - case common.PathExists(sysProductUUID): - lines, err := common.ReadLines(sysProductUUID) - if err == nil && len(lines) > 0 && lines[0] != "" { - ret.HostID = strings.ToLower(lines[0]) - break - } - fallthrough - // Fallback on GNU Linux systems with systemd, readable by everyone - case common.PathExists(machineID): - lines, err := common.ReadLines(machineID) - if err == nil && len(lines) > 0 && len(lines[0]) == 32 { - st := lines[0] - ret.HostID = fmt.Sprintf("%s-%s-%s-%s-%s", st[0:8], st[8:12], st[12:16], st[16:20], st[20:32]) - break - } - fallthrough - // Not stable between reboot, but better than nothing - default: - values, err := common.DoSysctrl("kernel.random.boot_id") - if err == nil && len(values) == 1 && values[0] != "" { - ret.HostID = strings.ToLower(values[0]) - } - } - - return ret, nil -} - -// cachedBootTime must be accessed via atomic.Load/StoreUint64 -var cachedBootTime uint64 - -// BootTime returns the system boot time expressed in seconds since the epoch. -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - t := atomic.LoadUint64(&cachedBootTime) - if t != 0 { - return t, nil - } - - system, role, err := Virtualization() - if err != nil { - return 0, err - } - - statFile := "stat" - if system == "lxc" && role == "guest" { - // if lxc, /proc/uptime is used. - statFile = "uptime" - } else if system == "docker" && role == "guest" { - // also docker, guest - statFile = "uptime" - } - - filename := common.HostProc(statFile) - lines, err := common.ReadLines(filename) - if err != nil { - return 0, err - } - - if statFile == "stat" { - for _, line := range lines { - if strings.HasPrefix(line, "btime") { - f := strings.Fields(line) - if len(f) != 2 { - return 0, fmt.Errorf("wrong btime format") - } - b, err := strconv.ParseInt(f[1], 10, 64) - if err != nil { - return 0, err - } - t = uint64(b) - atomic.StoreUint64(&cachedBootTime, t) - return t, nil - } - } - } else if statFile == "uptime" { - if len(lines) != 1 { - return 0, fmt.Errorf("wrong uptime format") - } - f := strings.Fields(lines[0]) - b, err := strconv.ParseFloat(f[0], 64) - if err != nil { - return 0, err - } - t = uint64(time.Now().Unix()) - uint64(b) - atomic.StoreUint64(&cachedBootTime, t) - return t, nil - } - - return 0, fmt.Errorf("could not find btime") -} - -func uptime(boot uint64) uint64 { - return uint64(time.Now().Unix()) - boot -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - boot, err := BootTime() - if err != nil { - return 0, err - } - return uptime(boot), nil -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - utmpfile := common.HostVar("run/utmp") - - file, err := os.Open(utmpfile) - if err != nil { - return nil, err - } - defer file.Close() - - buf, err := ioutil.ReadAll(file) - if err != nil { - return nil, err - } - - count := len(buf) / sizeOfUtmp - - ret := make([]UserStat, 0, count) - - for i := 0; i < count; i++ { - b := buf[i*sizeOfUtmp : (i+1)*sizeOfUtmp] - - var u utmp - br := bytes.NewReader(b) - err := binary.Read(br, binary.LittleEndian, &u) - if err != nil { - continue - } - if u.Type != USER_PROCESS { - continue - } - user := UserStat{ - User: common.IntToString(u.User[:]), - Terminal: common.IntToString(u.Line[:]), - Host: common.IntToString(u.Host[:]), - Started: int(u.Tv.Sec), - } - ret = append(ret, user) - } - - return ret, nil - -} - -func getOSRelease() (platform string, version string, err error) { - contents, err := common.ReadLines(common.HostEtc("os-release")) - if err != nil { - return "", "", nil // return empty - } - for _, line := range contents { - field := strings.Split(line, "=") - if len(field) < 2 { - continue - } - switch field[0] { - case "ID": // use ID for lowercase - platform = field[1] - case "VERSION": - version = field[1] - } - } - return platform, version, nil -} - -func getLSB() (*LSB, error) { - ret := &LSB{} - if common.PathExists(common.HostEtc("lsb-release")) { - contents, err := common.ReadLines(common.HostEtc("lsb-release")) - if err != nil { - return ret, err // return empty - } - for _, line := range contents { - field := strings.Split(line, "=") - if len(field) < 2 { - continue - } - switch field[0] { - case "DISTRIB_ID": - ret.ID = field[1] - case "DISTRIB_RELEASE": - ret.Release = field[1] - case "DISTRIB_CODENAME": - ret.Codename = field[1] - case "DISTRIB_DESCRIPTION": - ret.Description = field[1] - } - } - } else if common.PathExists("/usr/bin/lsb_release") { - lsb_release, err := exec.LookPath("/usr/bin/lsb_release") - if err != nil { - return ret, err - } - out, err := invoke.Command(lsb_release) - if err != nil { - return ret, err - } - for _, line := range strings.Split(string(out), "\n") { - field := strings.Split(line, ":") - if len(field) < 2 { - continue - } - switch field[0] { - case "Distributor ID": - ret.ID = field[1] - case "Release": - ret.Release = field[1] - case "Codename": - ret.Codename = field[1] - case "Description": - ret.Description = field[1] - } - } - - } - - return ret, nil -} - -func PlatformInformation() (platform string, family string, version string, err error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (platform string, family string, version string, err error) { - - lsb, err := getLSB() - if err != nil { - lsb = &LSB{} - } - - if common.PathExists(common.HostEtc("oracle-release")) { - platform = "oracle" - contents, err := common.ReadLines(common.HostEtc("oracle-release")) - if err == nil { - version = getRedhatishVersion(contents) - } - - } else if common.PathExists(common.HostEtc("enterprise-release")) { - platform = "oracle" - contents, err := common.ReadLines(common.HostEtc("enterprise-release")) - if err == nil { - version = getRedhatishVersion(contents) - } - } else if common.PathExists(common.HostEtc("slackware-version")) { - platform = "slackware" - contents, err := common.ReadLines(common.HostEtc("slackware-version")) - if err == nil { - version = getSlackwareVersion(contents) - } - } else if common.PathExists(common.HostEtc("debian_version")) { - if lsb.ID == "Ubuntu" { - platform = "ubuntu" - version = lsb.Release - } else if lsb.ID == "LinuxMint" { - platform = "linuxmint" - version = lsb.Release - } else { - if common.PathExists("/usr/bin/raspi-config") { - platform = "raspbian" - } else { - platform = "debian" - } - contents, err := common.ReadLines(common.HostEtc("debian_version")) - if err == nil { - version = contents[0] - } - } - } else if common.PathExists(common.HostEtc("redhat-release")) { - contents, err := common.ReadLines(common.HostEtc("redhat-release")) - if err == nil { - version = getRedhatishVersion(contents) - platform = getRedhatishPlatform(contents) - } - } else if common.PathExists(common.HostEtc("system-release")) { - contents, err := common.ReadLines(common.HostEtc("system-release")) - if err == nil { - version = getRedhatishVersion(contents) - platform = getRedhatishPlatform(contents) - } - } else if common.PathExists(common.HostEtc("gentoo-release")) { - platform = "gentoo" - contents, err := common.ReadLines(common.HostEtc("gentoo-release")) - if err == nil { - version = getRedhatishVersion(contents) - } - } else if common.PathExists(common.HostEtc("SuSE-release")) { - contents, err := common.ReadLines(common.HostEtc("SuSE-release")) - if err == nil { - version = getSuseVersion(contents) - platform = getSusePlatform(contents) - } - // TODO: slackware detecion - } else if common.PathExists(common.HostEtc("arch-release")) { - platform = "arch" - version = lsb.Release - } else if common.PathExists(common.HostEtc("alpine-release")) { - platform = "alpine" - contents, err := common.ReadLines(common.HostEtc("alpine-release")) - if err == nil && len(contents) > 0 { - version = contents[0] - } - } else if common.PathExists(common.HostEtc("os-release")) { - p, v, err := getOSRelease() - if err == nil { - platform = p - version = v - } - } else if lsb.ID == "RedHat" { - platform = "redhat" - version = lsb.Release - } else if lsb.ID == "Amazon" { - platform = "amazon" - version = lsb.Release - } else if lsb.ID == "ScientificSL" { - platform = "scientific" - version = lsb.Release - } else if lsb.ID == "XenServer" { - platform = "xenserver" - version = lsb.Release - } else if lsb.ID != "" { - platform = strings.ToLower(lsb.ID) - version = lsb.Release - } - - switch platform { - case "debian", "ubuntu", "linuxmint", "raspbian": - family = "debian" - case "fedora": - family = "fedora" - case "oracle", "centos", "redhat", "scientific", "enterpriseenterprise", "amazon", "xenserver", "cloudlinux", "ibm_powerkvm": - family = "rhel" - case "suse", "opensuse": - family = "suse" - case "gentoo": - family = "gentoo" - case "slackware": - family = "slackware" - case "arch": - family = "arch" - case "exherbo": - family = "exherbo" - case "alpine": - family = "alpine" - case "coreos": - family = "coreos" - } - - return platform, family, version, nil - -} - -func KernelVersion() (version string, err error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (version string, err error) { - filename := common.HostProc("sys/kernel/osrelease") - if common.PathExists(filename) { - contents, err := common.ReadLines(filename) - if err != nil { - return "", err - } - - if len(contents) > 0 { - version = contents[0] - } - } - - return version, nil -} - -func getSlackwareVersion(contents []string) string { - c := strings.ToLower(strings.Join(contents, "")) - c = strings.Replace(c, "slackware ", "", 1) - return c -} - -func getRedhatishVersion(contents []string) string { - c := strings.ToLower(strings.Join(contents, "")) - - if strings.Contains(c, "rawhide") { - return "rawhide" - } - if matches := regexp.MustCompile(`release (\d[\d.]*)`).FindStringSubmatch(c); matches != nil { - return matches[1] - } - return "" -} - -func getRedhatishPlatform(contents []string) string { - c := strings.ToLower(strings.Join(contents, "")) - - if strings.Contains(c, "red hat") { - return "redhat" - } - f := strings.Split(c, " ") - - return f[0] -} - -func getSuseVersion(contents []string) string { - version := "" - for _, line := range contents { - if matches := regexp.MustCompile(`VERSION = ([\d.]+)`).FindStringSubmatch(line); matches != nil { - version = matches[1] - } else if matches := regexp.MustCompile(`PATCHLEVEL = ([\d]+)`).FindStringSubmatch(line); matches != nil { - version = version + "." + matches[1] - } - } - return version -} - -func getSusePlatform(contents []string) string { - c := strings.ToLower(strings.Join(contents, "")) - if strings.Contains(c, "opensuse") { - return "opensuse" - } - return "suse" -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - var system string - var role string - - filename := common.HostProc("xen") - if common.PathExists(filename) { - system = "xen" - role = "guest" // assume guest - - if common.PathExists(filepath.Join(filename, "capabilities")) { - contents, err := common.ReadLines(filepath.Join(filename, "capabilities")) - if err == nil { - if common.StringsContains(contents, "control_d") { - role = "host" - } - } - } - } - - filename = common.HostProc("modules") - if common.PathExists(filename) { - contents, err := common.ReadLines(filename) - if err == nil { - if common.StringsContains(contents, "kvm") { - system = "kvm" - role = "host" - } else if common.StringsContains(contents, "vboxdrv") { - system = "vbox" - role = "host" - } else if common.StringsContains(contents, "vboxguest") { - system = "vbox" - role = "guest" - } else if common.StringsContains(contents, "vmware") { - system = "vmware" - role = "guest" - } - } - } - - filename = common.HostProc("cpuinfo") - if common.PathExists(filename) { - contents, err := common.ReadLines(filename) - if err == nil { - if common.StringsContains(contents, "QEMU Virtual CPU") || - common.StringsContains(contents, "Common KVM processor") || - common.StringsContains(contents, "Common 32-bit KVM processor") { - system = "kvm" - role = "guest" - } - } - } - - filename = common.HostProc() - if common.PathExists(filepath.Join(filename, "bc", "0")) { - system = "openvz" - role = "host" - } else if common.PathExists(filepath.Join(filename, "vz")) { - system = "openvz" - role = "guest" - } - - // not use dmidecode because it requires root - if common.PathExists(filepath.Join(filename, "self", "status")) { - contents, err := common.ReadLines(filepath.Join(filename, "self", "status")) - if err == nil { - - if common.StringsContains(contents, "s_context:") || - common.StringsContains(contents, "VxID:") { - system = "linux-vserver" - } - // TODO: guest or host - } - } - - if common.PathExists(filepath.Join(filename, "self", "cgroup")) { - contents, err := common.ReadLines(filepath.Join(filename, "self", "cgroup")) - if err == nil { - if common.StringsContains(contents, "lxc") { - system = "lxc" - role = "guest" - } else if common.StringsContains(contents, "docker") { - system = "docker" - role = "guest" - } else if common.StringsContains(contents, "machine-rkt") { - system = "rkt" - role = "guest" - } else if common.PathExists("/usr/bin/lxc-version") { - system = "lxc" - role = "host" - } - } - } - - if common.PathExists(common.HostEtc("os-release")) { - p, _, err := getOSRelease() - if err == nil && p == "coreos" { - system = "rkt" // Is it true? - role = "host" - } - } - return system, role, nil -} - -func SensorsTemperatures() ([]TemperatureStat, error) { - return SensorsTemperaturesWithContext(context.Background()) -} - -func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) { - var temperatures []TemperatureStat - files, err := filepath.Glob(common.HostSys("/class/hwmon/hwmon*/temp*_*")) - if err != nil { - return temperatures, err - } - if len(files) == 0 { - // CentOS has an intermediate /device directory: - // https://github.com/giampaolo/psutil/issues/971 - files, err = filepath.Glob(common.HostSys("/class/hwmon/hwmon*/device/temp*_*")) - if err != nil { - return temperatures, err - } - } - - // example directory - // device/ temp1_crit_alarm temp2_crit_alarm temp3_crit_alarm temp4_crit_alarm temp5_crit_alarm temp6_crit_alarm temp7_crit_alarm - // name temp1_input temp2_input temp3_input temp4_input temp5_input temp6_input temp7_input - // power/ temp1_label temp2_label temp3_label temp4_label temp5_label temp6_label temp7_label - // subsystem/ temp1_max temp2_max temp3_max temp4_max temp5_max temp6_max temp7_max - // temp1_crit temp2_crit temp3_crit temp4_crit temp5_crit temp6_crit temp7_crit uevent - for _, file := range files { - filename := strings.Split(filepath.Base(file), "_") - if filename[1] == "label" { - // Do not try to read the temperature of the label file - continue - } - - // Get the label of the temperature you are reading - var label string - c, _ := ioutil.ReadFile(filepath.Join(filepath.Dir(file), filename[0]+"_label")) - if c != nil { - //format the label from "Core 0" to "core0_" - label = fmt.Sprintf("%s_", strings.Join(strings.Split(strings.TrimSpace(strings.ToLower(string(c))), " "), "")) - } - - // Get the name of the tempearture you are reading - name, err := ioutil.ReadFile(filepath.Join(filepath.Dir(file), "name")) - if err != nil { - return temperatures, err - } - - // Get the temperature reading - current, err := ioutil.ReadFile(file) - if err != nil { - return temperatures, err - } - temperature, err := strconv.ParseFloat(strings.TrimSpace(string(current)), 64) - if err != nil { - continue - } - - tempName := strings.TrimSpace(strings.ToLower(string(strings.Join(filename[1:], "")))) - temperatures = append(temperatures, TemperatureStat{ - SensorKey: fmt.Sprintf("%s_%s%s", strings.TrimSpace(string(name)), label, tempName), - Temperature: temperature / 1000.0, - }) - } - return temperatures, nil -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_386.go b/vendor/github.com/shirou/gopsutil/host/host_linux_386.go deleted file mode 100644 index 79b5cb5d3..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_386.go +++ /dev/null @@ -1,45 +0,0 @@ -// ATTENTION - FILE MANUAL FIXED AFTER CGO. -// Fixed line: Tv _Ctype_struct_timeval -> Tv UtTv -// Created by cgo -godefs, MANUAL FIXED -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - ID [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv UtTv - Addr_v6 [4]int32 - X__unused [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type UtTv struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_amd64.go b/vendor/github.com/shirou/gopsutil/host/host_linux_amd64.go deleted file mode 100644 index 9a69652f5..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_amd64.go +++ /dev/null @@ -1,48 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x8 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int64 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv _Ctype_struct___0 - Addr_v6 [4]int32 - X__glibc_reserved [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int64 - Usec int64 -} - -type _Ctype_struct___0 struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_arm.go b/vendor/github.com/shirou/gopsutil/host/host_linux_arm.go deleted file mode 100644 index e2cf44850..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_arm.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go | sed "s/uint8/int8/g" - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__glibc_reserved [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_arm64.go b/vendor/github.com/shirou/gopsutil/host/host_linux_arm64.go deleted file mode 100644 index 37dbe5c8c..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_arm64.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x8 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int64 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__glibc_reserved [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int64 - Usec int64 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_mips.go b/vendor/github.com/shirou/gopsutil/host/host_linux_mips.go deleted file mode 100644 index b0fca0939..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_mips.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__unused [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_mips64.go b/vendor/github.com/shirou/gopsutil/host/host_linux_mips64.go deleted file mode 100644 index b0fca0939..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_mips64.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__unused [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_mips64le.go b/vendor/github.com/shirou/gopsutil/host/host_linux_mips64le.go deleted file mode 100644 index b0fca0939..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_mips64le.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__unused [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_mipsle.go b/vendor/github.com/shirou/gopsutil/host/host_linux_mipsle.go deleted file mode 100644 index b0fca0939..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_mipsle.go +++ /dev/null @@ -1,43 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x4 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x4 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int32 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__unused [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int32 - Usec int32 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_ppc64le.go b/vendor/github.com/shirou/gopsutil/host/host_linux_ppc64le.go deleted file mode 100644 index d081a0819..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_ppc64le.go +++ /dev/null @@ -1,45 +0,0 @@ -// +build linux -// +build ppc64le -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x8 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int64 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__glibc_reserved [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int64 - Usec int64 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_linux_s390x.go b/vendor/github.com/shirou/gopsutil/host/host_linux_s390x.go deleted file mode 100644 index 083fbf924..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_linux_s390x.go +++ /dev/null @@ -1,45 +0,0 @@ -// +build linux -// +build s390x -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_linux.go - -package host - -const ( - sizeofPtr = 0x8 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x180 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int64 - _C_long_long int64 -) - -type utmp struct { - Type int16 - Pad_cgo_0 [2]byte - Pid int32 - Line [32]int8 - Id [4]int8 - User [32]int8 - Host [256]int8 - Exit exit_status - Session int32 - Tv timeval - Addr_v6 [4]int32 - X__glibc_reserved [20]int8 -} -type exit_status struct { - Termination int16 - Exit int16 -} -type timeval struct { - Sec int64 - Usec int64 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_openbsd.go b/vendor/github.com/shirou/gopsutil/host/host_openbsd.go deleted file mode 100644 index 2ad64d77f..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_openbsd.go +++ /dev/null @@ -1,195 +0,0 @@ -// +build openbsd - -package host - -import ( - "bytes" - "context" - "encoding/binary" - "io/ioutil" - "os" - "os/exec" - "runtime" - "strconv" - "strings" - "time" - "unsafe" - - "github.com/shirou/gopsutil/internal/common" - "github.com/shirou/gopsutil/process" -) - -const ( - UTNameSize = 32 /* see MAXLOGNAME in */ - UTLineSize = 8 - UTHostSize = 16 -) - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - ret := &InfoStat{ - OS: runtime.GOOS, - PlatformFamily: "openbsd", - } - - hostname, err := os.Hostname() - if err == nil { - ret.Hostname = hostname - } - - platform, family, version, err := PlatformInformation() - if err == nil { - ret.Platform = platform - ret.PlatformFamily = family - ret.PlatformVersion = version - } - system, role, err := Virtualization() - if err == nil { - ret.VirtualizationSystem = system - ret.VirtualizationRole = role - } - - procs, err := process.Pids() - if err == nil { - ret.Procs = uint64(len(procs)) - } - - boot, err := BootTime() - if err == nil { - ret.BootTime = boot - ret.Uptime = uptime(boot) - } - - return ret, nil -} - -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - val, err := common.DoSysctrl("kern.boottime") - if err != nil { - return 0, err - } - - boottime, err := strconv.ParseUint(val[0], 10, 64) - if err != nil { - return 0, err - } - - return boottime, nil -} - -func uptime(boot uint64) uint64 { - return uint64(time.Now().Unix()) - boot -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - boot, err := BootTime() - if err != nil { - return 0, err - } - return uptime(boot), nil -} - -func PlatformInformation() (string, string, string, error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (string, string, string, error) { - platform := "" - family := "" - version := "" - uname, err := exec.LookPath("uname") - if err != nil { - return "", "", "", err - } - - out, err := invoke.CommandWithContext(ctx, uname, "-s") - if err == nil { - platform = strings.ToLower(strings.TrimSpace(string(out))) - } - - out, err = invoke.CommandWithContext(ctx, uname, "-r") - if err == nil { - version = strings.ToLower(strings.TrimSpace(string(out))) - } - - return platform, family, version, nil -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - return "", "", common.ErrNotImplementedError -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - var ret []UserStat - utmpfile := "/var/run/utmp" - file, err := os.Open(utmpfile) - if err != nil { - return ret, err - } - defer file.Close() - - buf, err := ioutil.ReadAll(file) - if err != nil { - return ret, err - } - - u := Utmp{} - entrySize := int(unsafe.Sizeof(u)) - count := len(buf) / entrySize - - for i := 0; i < count; i++ { - b := buf[i*entrySize : i*entrySize+entrySize] - var u Utmp - br := bytes.NewReader(b) - err := binary.Read(br, binary.LittleEndian, &u) - if err != nil || u.Time == 0 { - continue - } - user := UserStat{ - User: common.IntToString(u.Name[:]), - Terminal: common.IntToString(u.Line[:]), - Host: common.IntToString(u.Host[:]), - Started: int(u.Time), - } - - ret = append(ret, user) - } - - return ret, nil -} - -func SensorsTemperatures() ([]TemperatureStat, error) { - return SensorsTemperaturesWithContext(context.Background()) -} - -func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) { - return []TemperatureStat{}, common.ErrNotImplementedError -} - -func KernelVersion() (string, error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (string, error) { - _, _, version, err := PlatformInformation() - return version, err -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_openbsd_amd64.go b/vendor/github.com/shirou/gopsutil/host/host_openbsd_amd64.go deleted file mode 100644 index afe0943e7..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_openbsd_amd64.go +++ /dev/null @@ -1,31 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go - -package host - -const ( - sizeofPtr = 0x8 - sizeofShort = 0x2 - sizeofInt = 0x4 - sizeofLong = 0x8 - sizeofLongLong = 0x8 - sizeOfUtmp = 0x130 -) - -type ( - _C_short int16 - _C_int int32 - _C_long int64 - _C_long_long int64 -) - -type Utmp struct { - Line [8]int8 - Name [32]int8 - Host [256]int8 - Time int64 -} -type Timeval struct { - Sec int64 - Usec int64 -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_solaris.go b/vendor/github.com/shirou/gopsutil/host/host_solaris.go deleted file mode 100644 index bb83bfc9c..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_solaris.go +++ /dev/null @@ -1,248 +0,0 @@ -package host - -import ( - "bufio" - "bytes" - "context" - "fmt" - "io/ioutil" - "os" - "os/exec" - "regexp" - "runtime" - "strconv" - "strings" - "time" - - "github.com/shirou/gopsutil/internal/common" -) - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - result := &InfoStat{ - OS: runtime.GOOS, - } - - hostname, err := os.Hostname() - if err != nil { - return nil, err - } - result.Hostname = hostname - - // Parse versions from output of `uname(1)` - uname, err := exec.LookPath("/usr/bin/uname") - if err != nil { - return nil, err - } - - out, err := invoke.CommandWithContext(ctx, uname, "-srv") - if err != nil { - return nil, err - } - - fields := strings.Fields(string(out)) - if len(fields) >= 1 { - result.PlatformFamily = fields[0] - } - if len(fields) >= 2 { - result.KernelVersion = fields[1] - } - if len(fields) == 3 { - result.PlatformVersion = fields[2] - } - - // Find distribution name from /etc/release - fh, err := os.Open("/etc/release") - if err != nil { - return nil, err - } - defer fh.Close() - - sc := bufio.NewScanner(fh) - if sc.Scan() { - line := strings.TrimSpace(sc.Text()) - switch { - case strings.HasPrefix(line, "SmartOS"): - result.Platform = "SmartOS" - case strings.HasPrefix(line, "OpenIndiana"): - result.Platform = "OpenIndiana" - case strings.HasPrefix(line, "OmniOS"): - result.Platform = "OmniOS" - case strings.HasPrefix(line, "Open Storage"): - result.Platform = "NexentaStor" - case strings.HasPrefix(line, "Solaris"): - result.Platform = "Solaris" - case strings.HasPrefix(line, "Oracle Solaris"): - result.Platform = "Solaris" - default: - result.Platform = strings.Fields(line)[0] - } - } - - switch result.Platform { - case "SmartOS": - // If everything works, use the current zone ID as the HostID if present. - zonename, err := exec.LookPath("/usr/bin/zonename") - if err == nil { - out, err := invoke.CommandWithContext(ctx, zonename) - if err == nil { - sc := bufio.NewScanner(bytes.NewReader(out)) - for sc.Scan() { - line := sc.Text() - - // If we're in the global zone, rely on the hostname. - if line == "global" { - hostname, err := os.Hostname() - if err == nil { - result.HostID = hostname - } - } else { - result.HostID = strings.TrimSpace(line) - break - } - } - } - } - } - - // If HostID is still empty, use hostid(1), which can lie to callers but at - // this point there are no hardware facilities available. This behavior - // matches that of other supported OSes. - if result.HostID == "" { - hostID, err := exec.LookPath("/usr/bin/hostid") - if err == nil { - out, err := invoke.CommandWithContext(ctx, hostID) - if err == nil { - sc := bufio.NewScanner(bytes.NewReader(out)) - for sc.Scan() { - line := sc.Text() - result.HostID = strings.TrimSpace(line) - break - } - } - } - } - - // Find the boot time and calculate uptime relative to it - bootTime, err := BootTime() - if err != nil { - return nil, err - } - result.BootTime = bootTime - result.Uptime = uptimeSince(bootTime) - - // Count number of processes based on the number of entries in /proc - dirs, err := ioutil.ReadDir("/proc") - if err != nil { - return nil, err - } - result.Procs = uint64(len(dirs)) - - return result, nil -} - -var kstatMatch = regexp.MustCompile(`([^\s]+)[\s]+([^\s]*)`) - -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - kstat, err := exec.LookPath("/usr/bin/kstat") - if err != nil { - return 0, err - } - - out, err := invoke.CommandWithContext(ctx, kstat, "-p", "unix:0:system_misc:boot_time") - if err != nil { - return 0, err - } - - kstats := kstatMatch.FindAllStringSubmatch(string(out), -1) - if len(kstats) != 1 { - return 0, fmt.Errorf("expected 1 kstat, found %d", len(kstats)) - } - - return strconv.ParseUint(kstats[0][2], 10, 64) -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - bootTime, err := BootTime() - if err != nil { - return 0, err - } - return uptimeSince(bootTime), nil -} - -func uptimeSince(since uint64) uint64 { - return uint64(time.Now().Unix()) - since -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - return []UserStat{}, common.ErrNotImplementedError -} - -func SensorsTemperatures() ([]TemperatureStat, error) { - return SensorsTemperaturesWithContext(context.Background()) -} - -func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) { - return []TemperatureStat{}, common.ErrNotImplementedError -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - return "", "", common.ErrNotImplementedError -} - -func KernelVersion() (string, error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (string, error) { - // Parse versions from output of `uname(1)` - uname, err := exec.LookPath("/usr/bin/uname") - if err != nil { - return "", err - } - - out, err := invoke.CommandWithContext(ctx, uname, "-srv") - if err != nil { - return "", err - } - - fields := strings.Fields(string(out)) - if len(fields) >= 2 { - return fields[1], nil - } - return "", fmt.Errorf("could not get kernel version") -} - -func PlatformInformation() (platform string, family string, version string, err error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (platform string, family string, version string, err error) { - /* This is not finished yet at all. Please contribute! */ - - version, err = KernelVersion() - if err != nil { - return "", "", "", err - } - - return "solaris", "solaris", version, nil -} diff --git a/vendor/github.com/shirou/gopsutil/host/host_windows.go b/vendor/github.com/shirou/gopsutil/host/host_windows.go deleted file mode 100644 index d89e191b7..000000000 --- a/vendor/github.com/shirou/gopsutil/host/host_windows.go +++ /dev/null @@ -1,295 +0,0 @@ -// +build windows - -package host - -import ( - "context" - "fmt" - "math" - "os" - "runtime" - "strings" - "sync/atomic" - "syscall" - "time" - "unsafe" - - "github.com/StackExchange/wmi" - "github.com/shirou/gopsutil/internal/common" - process "github.com/shirou/gopsutil/process" - "golang.org/x/sys/windows" -) - -var ( - procGetSystemTimeAsFileTime = common.Modkernel32.NewProc("GetSystemTimeAsFileTime") - procGetTickCount32 = common.Modkernel32.NewProc("GetTickCount") - procGetTickCount64 = common.Modkernel32.NewProc("GetTickCount64") - procRtlGetVersion = common.ModNt.NewProc("RtlGetVersion") -) - -// https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/ns-wdm-_osversioninfoexw -type osVersionInfoExW struct { - dwOSVersionInfoSize uint32 - dwMajorVersion uint32 - dwMinorVersion uint32 - dwBuildNumber uint32 - dwPlatformId uint32 - szCSDVersion [128]uint16 - wServicePackMajor uint16 - wServicePackMinor uint16 - wSuiteMask uint16 - wProductType uint8 - wReserved uint8 -} - -type msAcpi_ThermalZoneTemperature struct { - Active bool - CriticalTripPoint uint32 - CurrentTemperature uint32 - InstanceName string -} - -func Info() (*InfoStat, error) { - return InfoWithContext(context.Background()) -} - -func InfoWithContext(ctx context.Context) (*InfoStat, error) { - ret := &InfoStat{ - OS: runtime.GOOS, - } - - { - hostname, err := os.Hostname() - if err == nil { - ret.Hostname = hostname - } - } - - { - platform, family, version, err := PlatformInformationWithContext(ctx) - if err == nil { - ret.Platform = platform - ret.PlatformFamily = family - ret.PlatformVersion = version - } else { - return ret, err - } - } - - { - boot, err := BootTime() - if err == nil { - ret.BootTime = boot - ret.Uptime, _ = Uptime() - } - } - - { - hostID, err := getMachineGuid() - if err == nil { - ret.HostID = strings.ToLower(hostID) - } - } - - { - procs, err := process.Pids() - if err == nil { - ret.Procs = uint64(len(procs)) - } - } - - return ret, nil -} - -func getMachineGuid() (string, error) { - // there has been reports of issues on 32bit using golang.org/x/sys/windows/registry, see https://github.com/shirou/gopsutil/pull/312#issuecomment-277422612 - // for rationale of using windows.RegOpenKeyEx/RegQueryValueEx instead of registry.OpenKey/GetStringValue - var h windows.Handle - err := windows.RegOpenKeyEx(windows.HKEY_LOCAL_MACHINE, windows.StringToUTF16Ptr(`SOFTWARE\Microsoft\Cryptography`), 0, windows.KEY_READ|windows.KEY_WOW64_64KEY, &h) - if err != nil { - return "", err - } - defer windows.RegCloseKey(h) - - const windowsRegBufLen = 74 // len(`{`) + len(`abcdefgh-1234-456789012-123345456671` * 2) + len(`}`) // 2 == bytes/UTF16 - const uuidLen = 36 - - var regBuf [windowsRegBufLen]uint16 - bufLen := uint32(windowsRegBufLen) - var valType uint32 - err = windows.RegQueryValueEx(h, windows.StringToUTF16Ptr(`MachineGuid`), nil, &valType, (*byte)(unsafe.Pointer(®Buf[0])), &bufLen) - if err != nil { - return "", err - } - - hostID := windows.UTF16ToString(regBuf[:]) - hostIDLen := len(hostID) - if hostIDLen != uuidLen { - return "", fmt.Errorf("HostID incorrect: %q\n", hostID) - } - - return hostID, nil -} - -func Uptime() (uint64, error) { - return UptimeWithContext(context.Background()) -} - -func UptimeWithContext(ctx context.Context) (uint64, error) { - procGetTickCount := procGetTickCount64 - err := procGetTickCount64.Find() - if err != nil { - procGetTickCount = procGetTickCount32 // handle WinXP, but keep in mind that "the time will wrap around to zero if the system is run continuously for 49.7 days." from MSDN - } - r1, _, lastErr := syscall.Syscall(procGetTickCount.Addr(), 0, 0, 0, 0) - if lastErr != 0 { - return 0, lastErr - } - return uint64((time.Duration(r1) * time.Millisecond).Seconds()), nil -} - -func bootTimeFromUptime(up uint64) uint64 { - return uint64(time.Now().Unix()) - up -} - -// cachedBootTime must be accessed via atomic.Load/StoreUint64 -var cachedBootTime uint64 - -func BootTime() (uint64, error) { - return BootTimeWithContext(context.Background()) -} - -func BootTimeWithContext(ctx context.Context) (uint64, error) { - t := atomic.LoadUint64(&cachedBootTime) - if t != 0 { - return t, nil - } - up, err := Uptime() - if err != nil { - return 0, err - } - t = bootTimeFromUptime(up) - atomic.StoreUint64(&cachedBootTime, t) - return t, nil -} - -func PlatformInformation() (platform string, family string, version string, err error) { - return PlatformInformationWithContext(context.Background()) -} - -func PlatformInformationWithContext(ctx context.Context) (platform string, family string, version string, err error) { - // GetVersionEx lies on Windows 8.1 and returns as Windows 8 if we don't declare compatibility in manifest - // RtlGetVersion bypasses this lying layer and returns the true Windows version - // https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-rtlgetversion - // https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/ns-wdm-_osversioninfoexw - var osInfo osVersionInfoExW - osInfo.dwOSVersionInfoSize = uint32(unsafe.Sizeof(osInfo)) - ret, _, err := procRtlGetVersion.Call(uintptr(unsafe.Pointer(&osInfo))) - if ret != 0 { - return - } - - // Platform - var h windows.Handle // like getMachineGuid(), we query the registry using the raw windows.RegOpenKeyEx/RegQueryValueEx - err = windows.RegOpenKeyEx(windows.HKEY_LOCAL_MACHINE, windows.StringToUTF16Ptr(`SOFTWARE\Microsoft\Windows NT\CurrentVersion`), 0, windows.KEY_READ|windows.KEY_WOW64_64KEY, &h) - if err != nil { - return - } - defer windows.RegCloseKey(h) - var bufLen uint32 - var valType uint32 - err = windows.RegQueryValueEx(h, windows.StringToUTF16Ptr(`ProductName`), nil, &valType, nil, &bufLen) - if err != nil { - return - } - regBuf := make([]uint16, bufLen/2+1) - err = windows.RegQueryValueEx(h, windows.StringToUTF16Ptr(`ProductName`), nil, &valType, (*byte)(unsafe.Pointer(®Buf[0])), &bufLen) - if err != nil { - return - } - platform = windows.UTF16ToString(regBuf[:]) - if !strings.HasPrefix(platform, "Microsoft") { - platform = "Microsoft " + platform - } - err = windows.RegQueryValueEx(h, windows.StringToUTF16Ptr(`CSDVersion`), nil, &valType, nil, &bufLen) // append Service Pack number, only on success - if err == nil { // don't return an error if only the Service Pack retrieval fails - regBuf = make([]uint16, bufLen/2+1) - err = windows.RegQueryValueEx(h, windows.StringToUTF16Ptr(`CSDVersion`), nil, &valType, (*byte)(unsafe.Pointer(®Buf[0])), &bufLen) - if err == nil { - platform += " " + windows.UTF16ToString(regBuf[:]) - } - } - - // PlatformFamily - switch osInfo.wProductType { - case 1: - family = "Standalone Workstation" - case 2: - family = "Server (Domain Controller)" - case 3: - family = "Server" - } - - // Platform Version - version = fmt.Sprintf("%d.%d.%d Build %d", osInfo.dwMajorVersion, osInfo.dwMinorVersion, osInfo.dwBuildNumber, osInfo.dwBuildNumber) - - return platform, family, version, nil -} - -func Users() ([]UserStat, error) { - return UsersWithContext(context.Background()) -} - -func UsersWithContext(ctx context.Context) ([]UserStat, error) { - var ret []UserStat - - return ret, nil -} - -func SensorsTemperatures() ([]TemperatureStat, error) { - return SensorsTemperaturesWithContext(context.Background()) -} - -func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, error) { - var ret []TemperatureStat - var dst []msAcpi_ThermalZoneTemperature - q := wmi.CreateQuery(&dst, "") - if err := common.WMIQueryWithContext(ctx, q, &dst, nil, "root/wmi"); err != nil { - return ret, err - } - - for _, v := range dst { - ts := TemperatureStat{ - SensorKey: v.InstanceName, - Temperature: kelvinToCelsius(v.CurrentTemperature, 2), - } - ret = append(ret, ts) - } - - return ret, nil -} - -func kelvinToCelsius(temp uint32, n int) float64 { - // wmi return temperature Kelvin * 10, so need to divide the result by 10, - // and then minus 273.15 to get °Celsius. - t := float64(temp/10) - 273.15 - n10 := math.Pow10(n) - return math.Trunc((t+0.5/n10)*n10) / n10 -} - -func Virtualization() (string, string, error) { - return VirtualizationWithContext(context.Background()) -} - -func VirtualizationWithContext(ctx context.Context) (string, string, error) { - return "", "", common.ErrNotImplementedError -} - -func KernelVersion() (string, error) { - return KernelVersionWithContext(context.Background()) -} - -func KernelVersionWithContext(ctx context.Context) (string, error) { - _, _, version, err := PlatformInformation() - return version, err -} diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common.go b/vendor/github.com/shirou/gopsutil/internal/common/common.go index 71c2257f0..ebf70ea0b 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common.go @@ -94,6 +94,17 @@ func (i FakeInvoke) CommandWithContext(ctx context.Context, name string, arg ... var ErrNotImplementedError = errors.New("not implemented yet") +// ReadFile reads contents from a file +func ReadFile(filename string) (string, error) { + content, err := ioutil.ReadFile(filename) + + if err != nil { + return "", err + } + + return string(content), nil +} + // ReadLines reads contents from a file and splits them by new lines. // A convenience wrapper to ReadLinesOffsetN(filename, 0, -1). func ReadLines(filename string) ([]string, error) { @@ -213,6 +224,12 @@ func ReadInts(filename string) ([]int64, error) { return ret, nil } +// Parse Hex to uint32 without error +func HexToUint32(hex string) uint32 { + vv, _ := strconv.ParseUint(hex, 16, 32) + return uint32(vv) +} + // Parse to int32 without error func mustParseInt32(val string) int32 { vv, _ := strconv.ParseInt(val, 10, 32) @@ -309,7 +326,6 @@ func GetEnv(key string, dfault string, combineWith ...string) string { copy(all[1:], combineWith) return filepath.Join(all...) } - panic("invalid switch case") } func HostProc(combineWith ...string) string { @@ -332,47 +348,8 @@ func HostRun(combineWith ...string) string { return GetEnv("HOST_RUN", "/run", combineWith...) } -// https://gist.github.com/kylelemons/1525278 -func Pipeline(cmds ...*exec.Cmd) ([]byte, []byte, error) { - // Require at least one command - if len(cmds) < 1 { - return nil, nil, nil - } - - // Collect the output from the command(s) - var output bytes.Buffer - var stderr bytes.Buffer - - last := len(cmds) - 1 - for i, cmd := range cmds[:last] { - var err error - // Connect each command's stdin to the previous command's stdout - if cmds[i+1].Stdin, err = cmd.StdoutPipe(); err != nil { - return nil, nil, err - } - // Connect each command's stderr to a buffer - cmd.Stderr = &stderr - } - - // Connect the output and error for the last command - cmds[last].Stdout, cmds[last].Stderr = &output, &stderr - - // Start each command - for _, cmd := range cmds { - if err := cmd.Start(); err != nil { - return output.Bytes(), stderr.Bytes(), err - } - } - - // Wait for each command to complete - for _, cmd := range cmds { - if err := cmd.Wait(); err != nil { - return output.Bytes(), stderr.Bytes(), err - } - } - - // Return the pipeline output and the collected standard error - return output.Bytes(), stderr.Bytes(), nil +func HostDev(combineWith ...string) string { + return GetEnv("HOST_DEV", "/dev", combineWith...) } // getSysctrlEnv sets LC_ALL=C in a list of env vars for use when running diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common_darwin.go b/vendor/github.com/shirou/gopsutil/internal/common/common_darwin.go index 3e85cc06b..be46af3d9 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common_darwin.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common_darwin.go @@ -13,7 +13,7 @@ import ( ) func DoSysctrlWithContext(ctx context.Context, mib string) ([]string, error) { - sysctl, err := exec.LookPath("/usr/sbin/sysctl") + sysctl, err := exec.LookPath("sysctl") if err != nil { return []string{}, err } @@ -36,7 +36,7 @@ func CallSyscall(mib []int32) ([]byte, uint64, error) { // get required buffer size length := uint64(0) _, _, err := unix.Syscall6( - unix.SYS___SYSCTL, + 202, // unix.SYS___SYSCTL https://github.com/golang/sys/blob/76b94024e4b621e672466e8db3d7f084e7ddcad2/unix/zsysnum_darwin_amd64.go#L146 uintptr(unsafe.Pointer(&mib[0])), uintptr(miblen), 0, @@ -54,7 +54,7 @@ func CallSyscall(mib []int32) ([]byte, uint64, error) { // get proc info itself buf := make([]byte, length) _, _, err = unix.Syscall6( - unix.SYS___SYSCTL, + 202, // unix.SYS___SYSCTL https://github.com/golang/sys/blob/76b94024e4b621e672466e8db3d7f084e7ddcad2/unix/zsysnum_darwin_amd64.go#L146 uintptr(unsafe.Pointer(&mib[0])), uintptr(miblen), uintptr(unsafe.Pointer(&buf[0])), diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common_freebsd.go b/vendor/github.com/shirou/gopsutil/internal/common/common_freebsd.go index 107e2c9cf..85bda0e22 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common_freebsd.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common_freebsd.go @@ -3,6 +3,7 @@ package common import ( + "fmt" "os" "os/exec" "strings" @@ -11,8 +12,23 @@ import ( "golang.org/x/sys/unix" ) +func SysctlUint(mib string) (uint64, error) { + buf, err := unix.SysctlRaw(mib) + if err != nil { + return 0, err + } + if len(buf) == 8 { // 64 bit + return *(*uint64)(unsafe.Pointer(&buf[0])), nil + } + if len(buf) == 4 { // 32bit + t := *(*uint32)(unsafe.Pointer(&buf[0])) + return uint64(t), nil + } + return 0, fmt.Errorf("unexpected size: %s, %d", mib, len(buf)) +} + func DoSysctrl(mib string) ([]string, error) { - sysctl, err := exec.LookPath("/sbin/sysctl") + sysctl, err := exec.LookPath("sysctl") if err != nil { return []string{}, err } diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common_linux.go b/vendor/github.com/shirou/gopsutil/internal/common/common_linux.go index 4e829e057..734998993 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common_linux.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common_linux.go @@ -3,13 +3,19 @@ package common import ( + "context" + "fmt" "os" "os/exec" + "path/filepath" + "strconv" "strings" + "sync" + "time" ) func DoSysctrl(mib string) ([]string, error) { - sysctl, err := exec.LookPath("/sbin/sysctl") + sysctl, err := exec.LookPath("sysctl") if err != nil { return []string{}, err } @@ -37,5 +43,250 @@ func NumProcs() (uint64, error) { if err != nil { return 0, err } - return uint64(len(list)), err + var cnt uint64 + + for _, v := range list { + if _, err = strconv.ParseUint(v, 10, 64); err == nil { + cnt++ + } + } + + return cnt, nil +} + +func BootTimeWithContext(ctx context.Context) (uint64, error) { + + system, role, err := Virtualization() + if err != nil { + return 0, err + } + + statFile := "stat" + if system == "lxc" && role == "guest" { + // if lxc, /proc/uptime is used. + statFile = "uptime" + } else if system == "docker" && role == "guest" { + // also docker, guest + statFile = "uptime" + } + + filename := HostProc(statFile) + lines, err := ReadLines(filename) + if err != nil { + return 0, err + } + + if statFile == "stat" { + for _, line := range lines { + if strings.HasPrefix(line, "btime") { + f := strings.Fields(line) + if len(f) != 2 { + return 0, fmt.Errorf("wrong btime format") + } + b, err := strconv.ParseInt(f[1], 10, 64) + if err != nil { + return 0, err + } + t := uint64(b) + return t, nil + } + } + } else if statFile == "uptime" { + if len(lines) != 1 { + return 0, fmt.Errorf("wrong uptime format") + } + f := strings.Fields(lines[0]) + b, err := strconv.ParseFloat(f[0], 64) + if err != nil { + return 0, err + } + t := uint64(time.Now().Unix()) - uint64(b) + return t, nil + } + + return 0, fmt.Errorf("could not find btime") +} + +func Virtualization() (string, string, error) { + return VirtualizationWithContext(context.Background()) +} + +// required variables for concurrency safe virtualization caching +var ( + cachedVirtMap map[string]string + cachedVirtMutex sync.RWMutex + cachedVirtOnce sync.Once +) + +func VirtualizationWithContext(ctx context.Context) (string, string, error) { + var system, role string + + // if cached already, return from cache + cachedVirtMutex.RLock() // unlock won't be deferred so concurrent reads don't wait for long + if cachedVirtMap != nil { + cachedSystem, cachedRole := cachedVirtMap["system"], cachedVirtMap["role"] + cachedVirtMutex.RUnlock() + return cachedSystem, cachedRole, nil + } + cachedVirtMutex.RUnlock() + + filename := HostProc("xen") + if PathExists(filename) { + system = "xen" + role = "guest" // assume guest + + if PathExists(filepath.Join(filename, "capabilities")) { + contents, err := ReadLines(filepath.Join(filename, "capabilities")) + if err == nil { + if StringsContains(contents, "control_d") { + role = "host" + } + } + } + } + + filename = HostProc("modules") + if PathExists(filename) { + contents, err := ReadLines(filename) + if err == nil { + if StringsContains(contents, "kvm") { + system = "kvm" + role = "host" + } else if StringsContains(contents, "vboxdrv") { + system = "vbox" + role = "host" + } else if StringsContains(contents, "vboxguest") { + system = "vbox" + role = "guest" + } else if StringsContains(contents, "vmware") { + system = "vmware" + role = "guest" + } + } + } + + filename = HostProc("cpuinfo") + if PathExists(filename) { + contents, err := ReadLines(filename) + if err == nil { + if StringsContains(contents, "QEMU Virtual CPU") || + StringsContains(contents, "Common KVM processor") || + StringsContains(contents, "Common 32-bit KVM processor") { + system = "kvm" + role = "guest" + } + } + } + + filename = HostProc("bus/pci/devices") + if PathExists(filename) { + contents, err := ReadLines(filename) + if err == nil { + if StringsContains(contents, "virtio-pci") { + role = "guest" + } + } + } + + filename = HostProc() + if PathExists(filepath.Join(filename, "bc", "0")) { + system = "openvz" + role = "host" + } else if PathExists(filepath.Join(filename, "vz")) { + system = "openvz" + role = "guest" + } + + // not use dmidecode because it requires root + if PathExists(filepath.Join(filename, "self", "status")) { + contents, err := ReadLines(filepath.Join(filename, "self", "status")) + if err == nil { + + if StringsContains(contents, "s_context:") || + StringsContains(contents, "VxID:") { + system = "linux-vserver" + } + // TODO: guest or host + } + } + + if PathExists(filepath.Join(filename, "1", "environ")) { + contents, err := ReadFile(filepath.Join(filename, "1", "environ")) + + if err == nil { + if strings.Contains(contents, "container=lxc") { + system = "lxc" + role = "guest" + } + } + } + + if PathExists(filepath.Join(filename, "self", "cgroup")) { + contents, err := ReadLines(filepath.Join(filename, "self", "cgroup")) + if err == nil { + if StringsContains(contents, "lxc") { + system = "lxc" + role = "guest" + } else if StringsContains(contents, "docker") { + system = "docker" + role = "guest" + } else if StringsContains(contents, "machine-rkt") { + system = "rkt" + role = "guest" + } else if PathExists("/usr/bin/lxc-version") { + system = "lxc" + role = "host" + } + } + } + + if PathExists(HostEtc("os-release")) { + p, _, err := GetOSRelease() + if err == nil && p == "coreos" { + system = "rkt" // Is it true? + role = "host" + } + } + + // before returning for the first time, cache the system and role + cachedVirtOnce.Do(func() { + cachedVirtMutex.Lock() + defer cachedVirtMutex.Unlock() + cachedVirtMap = map[string]string{ + "system": system, + "role": role, + } + }) + + return system, role, nil +} + +func GetOSRelease() (platform string, version string, err error) { + contents, err := ReadLines(HostEtc("os-release")) + if err != nil { + return "", "", nil // return empty + } + for _, line := range contents { + field := strings.Split(line, "=") + if len(field) < 2 { + continue + } + switch field[0] { + case "ID": // use ID for lowercase + platform = trimQuotes(field[1]) + case "VERSION": + version = trimQuotes(field[1]) + } + } + return platform, version, nil +} + +// Remove quotes of the source string +func trimQuotes(s string) string { + if len(s) >= 2 { + if s[0] == '"' && s[len(s)-1] == '"' { + return s[1 : len(s)-1] + } + } + return s } diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common_openbsd.go b/vendor/github.com/shirou/gopsutil/internal/common/common_openbsd.go index 398f78542..ba73a7eb5 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common_openbsd.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common_openbsd.go @@ -12,7 +12,7 @@ import ( ) func DoSysctrl(mib string) ([]string, error) { - sysctl, err := exec.LookPath("/sbin/sysctl") + sysctl, err := exec.LookPath("sysctl") if err != nil { return []string{}, err } diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common_unix.go b/vendor/github.com/shirou/gopsutil/internal/common/common_unix.go index 750a5926d..9e393bcfa 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common_unix.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common_unix.go @@ -23,7 +23,7 @@ func CallLsofWithContext(ctx context.Context, invoke Invoker, pid int32, args .. } out, err := invoke.CommandWithContext(ctx, lsof, cmd...) if err != nil { - // if no pid found, lsof returnes code 1. + // if no pid found, lsof returns code 1. if err.Error() == "exit status 1" && len(out) == 0 { return []string{}, nil } diff --git a/vendor/github.com/shirou/gopsutil/internal/common/common_windows.go b/vendor/github.com/shirou/gopsutil/internal/common/common_windows.go index 0997c9b8a..cbf4f06df 100644 --- a/vendor/github.com/shirou/gopsutil/internal/common/common_windows.go +++ b/vendor/github.com/shirou/gopsutil/internal/common/common_windows.go @@ -4,6 +4,10 @@ package common import ( "context" + "fmt" + "path/filepath" + "strings" + "syscall" "unsafe" "github.com/StackExchange/wmi" @@ -46,19 +50,33 @@ const ( PDH_NO_DATA = 0x800007d5 ) +const ( + ProcessBasicInformation = 0 + ProcessWow64Information = 26 +) + var ( Modkernel32 = windows.NewLazySystemDLL("kernel32.dll") ModNt = windows.NewLazySystemDLL("ntdll.dll") ModPdh = windows.NewLazySystemDLL("pdh.dll") ModPsapi = windows.NewLazySystemDLL("psapi.dll") - ProcGetSystemTimes = Modkernel32.NewProc("GetSystemTimes") - ProcNtQuerySystemInformation = ModNt.NewProc("NtQuerySystemInformation") - PdhOpenQuery = ModPdh.NewProc("PdhOpenQuery") - PdhAddCounter = ModPdh.NewProc("PdhAddCounterW") - PdhCollectQueryData = ModPdh.NewProc("PdhCollectQueryData") - PdhGetFormattedCounterValue = ModPdh.NewProc("PdhGetFormattedCounterValue") - PdhCloseQuery = ModPdh.NewProc("PdhCloseQuery") + ProcGetSystemTimes = Modkernel32.NewProc("GetSystemTimes") + ProcNtQuerySystemInformation = ModNt.NewProc("NtQuerySystemInformation") + ProcRtlGetNativeSystemInformation = ModNt.NewProc("RtlGetNativeSystemInformation") + ProcRtlNtStatusToDosError = ModNt.NewProc("RtlNtStatusToDosError") + ProcNtQueryInformationProcess = ModNt.NewProc("NtQueryInformationProcess") + ProcNtReadVirtualMemory = ModNt.NewProc("NtReadVirtualMemory") + ProcNtWow64QueryInformationProcess64 = ModNt.NewProc("NtWow64QueryInformationProcess64") + ProcNtWow64ReadVirtualMemory64 = ModNt.NewProc("NtWow64ReadVirtualMemory64") + + PdhOpenQuery = ModPdh.NewProc("PdhOpenQuery") + PdhAddCounter = ModPdh.NewProc("PdhAddCounterW") + PdhCollectQueryData = ModPdh.NewProc("PdhCollectQueryData") + PdhGetFormattedCounterValue = ModPdh.NewProc("PdhGetFormattedCounterValue") + PdhCloseQuery = ModPdh.NewProc("PdhCloseQuery") + + procQueryDosDeviceW = Modkernel32.NewProc("QueryDosDeviceW") ) type FILETIME struct { @@ -76,7 +94,7 @@ func BytePtrToString(p *uint8) string { return string(a[:i]) } -// CounterInfo +// CounterInfo struct is used to track a windows performance counter // copied from https://github.com/mackerelio/mackerel-agent/ type CounterInfo struct { PostName string @@ -84,7 +102,7 @@ type CounterInfo struct { Counter windows.Handle } -// CreateQuery XXX +// CreateQuery with a PdhOpenQuery call // copied from https://github.com/mackerelio/mackerel-agent/ func CreateQuery() (windows.Handle, error) { var query windows.Handle @@ -95,7 +113,7 @@ func CreateQuery() (windows.Handle, error) { return query, nil } -// CreateCounter XXX +// CreateCounter with a PdhAddCounter call func CreateCounter(query windows.Handle, pname, cname string) (*CounterInfo, error) { var counter windows.Handle r, _, err := PdhAddCounter.Call( @@ -113,6 +131,62 @@ func CreateCounter(query windows.Handle, pname, cname string) (*CounterInfo, err }, nil } +// GetCounterValue get counter value from handle +// adapted from https://github.com/mackerelio/mackerel-agent/ +func GetCounterValue(counter windows.Handle) (float64, error) { + var value PDH_FMT_COUNTERVALUE_DOUBLE + r, _, err := PdhGetFormattedCounterValue.Call(uintptr(counter), PDH_FMT_DOUBLE, uintptr(0), uintptr(unsafe.Pointer(&value))) + if r != 0 && r != PDH_INVALID_DATA { + return 0.0, err + } + return value.DoubleValue, nil +} + +type Win32PerformanceCounter struct { + PostName string + CounterName string + Query windows.Handle + Counter windows.Handle +} + +func NewWin32PerformanceCounter(postName, counterName string) (*Win32PerformanceCounter, error) { + query, err := CreateQuery() + if err != nil { + return nil, err + } + var counter = Win32PerformanceCounter{ + Query: query, + PostName: postName, + CounterName: counterName, + } + r, _, err := PdhAddCounter.Call( + uintptr(counter.Query), + uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(counter.CounterName))), + 0, + uintptr(unsafe.Pointer(&counter.Counter)), + ) + if r != 0 { + return nil, err + } + return &counter, nil +} + +func (w *Win32PerformanceCounter) GetValue() (float64, error) { + r, _, err := PdhCollectQueryData.Call(uintptr(w.Query)) + if r != 0 && err != nil { + if r == PDH_NO_DATA { + return 0.0, fmt.Errorf("%w: this counter has not data", err) + } + return 0.0, err + } + + return GetCounterValue(w.Counter) +} + +func ProcessorQueueLengthCounter() (*Win32PerformanceCounter, error) { + return NewWin32PerformanceCounter("processor_queue_length", `\System\Processor Queue Length`) +} + // WMIQueryWithContext - wraps wmi.Query with a timed-out context to avoid hanging func WMIQueryWithContext(ctx context.Context, query string, dst interface{}, connectServerArgs ...interface{}) error { if _, ok := ctx.Deadline(); !ok { @@ -133,3 +207,23 @@ func WMIQueryWithContext(ctx context.Context, query string, dst interface{}, con return err } } + +// Convert paths using native DOS format like: +// "\Device\HarddiskVolume1\Windows\systemew\file.txt" +// into: +// "C:\Windows\systemew\file.txt" +func ConvertDOSPath(p string) string { + rawDrive := strings.Join(strings.Split(p, `\`)[:3], `\`) + + for d := 'A'; d <= 'Z'; d++ { + szDeviceName := string(d) + ":" + szTarget := make([]uint16, 512) + ret, _, _ := procQueryDosDeviceW.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(szDeviceName))), + uintptr(unsafe.Pointer(&szTarget[0])), + uintptr(len(szTarget))) + if ret != 0 && windows.UTF16ToString(szTarget[:]) == rawDrive { + return filepath.Join(szDeviceName, p[len(rawDrive):]) + } + } + return p +} diff --git a/vendor/github.com/shirou/gopsutil/internal/common/sleep.go b/vendor/github.com/shirou/gopsutil/internal/common/sleep.go new file mode 100644 index 000000000..ee27e54d4 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/internal/common/sleep.go @@ -0,0 +1,18 @@ +package common + +import ( + "context" + "time" +) + +// Sleep awaits for provided interval. +// Can be interrupted by context cancelation. +func Sleep(ctx context.Context, interval time.Duration) error { + var timer = time.NewTimer(interval) + select { + case <-ctx.Done(): + return ctx.Err() + case <-timer.C: + return nil + } +} diff --git a/vendor/github.com/shirou/gopsutil/mem/mem.go b/vendor/github.com/shirou/gopsutil/mem/mem.go index 995364fb9..dc2aacb59 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem.go @@ -58,6 +58,7 @@ type VirtualMemoryStat struct { Shared uint64 `json:"shared"` Slab uint64 `json:"slab"` SReclaimable uint64 `json:"sreclaimable"` + SUnreclaim uint64 `json:"sunreclaim"` PageTables uint64 `json:"pagetables"` SwapCached uint64 `json:"swapcached"` CommitLimit uint64 `json:"commitlimit"` @@ -84,6 +85,13 @@ type SwapMemoryStat struct { UsedPercent float64 `json:"usedPercent"` Sin uint64 `json:"sin"` Sout uint64 `json:"sout"` + PgIn uint64 `json:"pgin"` + PgOut uint64 `json:"pgout"` + PgFault uint64 `json:"pgfault"` + + // Linux specific numbers + // https://www.kernel.org/doc/Documentation/cgroup-v2.txt + PgMajFault uint64 `json:"pgmajfault"` } func (m VirtualMemoryStat) String() string { diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_darwin.go b/vendor/github.com/shirou/gopsutil/mem/mem_darwin.go index 4fe7009b3..fac748151 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_darwin.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_darwin.go @@ -5,10 +5,9 @@ package mem import ( "context" "encoding/binary" - "strconv" - "strings" + "fmt" + "unsafe" - "github.com/shirou/gopsutil/internal/common" "golang.org/x/sys/unix" ) @@ -27,46 +26,42 @@ func getHwMemsize() (uint64, error) { return total, nil } +// xsw_usage in sys/sysctl.h +type swapUsage struct { + Total uint64 + Avail uint64 + Used uint64 + Pagesize int32 + Encrypted bool +} + // SwapMemory returns swapinfo. func SwapMemory() (*SwapMemoryStat, error) { return SwapMemoryWithContext(context.Background()) } func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { + // https://github.com/yanllearnn/go-osstat/blob/ae8a279d26f52ec946a03698c7f50a26cfb427e3/memory/memory_darwin.go var ret *SwapMemoryStat - swapUsage, err := common.DoSysctrlWithContext(ctx, "vm.swapusage") + value, err := unix.SysctlRaw("vm.swapusage") if err != nil { return ret, err } - - total := strings.Replace(swapUsage[2], "M", "", 1) - used := strings.Replace(swapUsage[5], "M", "", 1) - free := strings.Replace(swapUsage[8], "M", "", 1) - - total_v, err := strconv.ParseFloat(total, 64) - if err != nil { - return nil, err - } - used_v, err := strconv.ParseFloat(used, 64) - if err != nil { - return nil, err - } - free_v, err := strconv.ParseFloat(free, 64) - if err != nil { - return nil, err + if len(value) != 32 { + return ret, fmt.Errorf("unexpected output of sysctl vm.swapusage: %v (len: %d)", value, len(value)) } + swap := (*swapUsage)(unsafe.Pointer(&value[0])) u := float64(0) - if total_v != 0 { - u = ((total_v - free_v) / total_v) * 100.0 + if swap.Total != 0 { + u = ((float64(swap.Total) - float64(swap.Avail)) / float64(swap.Total)) * 100.0 } - // vm.swapusage shows "M", multiply 1024 * 1024 to convert bytes. ret = &SwapMemoryStat{ - Total: uint64(total_v * 1024 * 1024), - Used: uint64(used_v * 1024 * 1024), - Free: uint64(free_v * 1024 * 1024), + Total: swap.Total, + Used: swap.Used, + Free: swap.Avail, UsedPercent: u, } diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_freebsd.go b/vendor/github.com/shirou/gopsutil/mem/mem_freebsd.go index a792281a5..f91efc9e3 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_freebsd.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_freebsd.go @@ -8,6 +8,8 @@ import ( "unsafe" "golang.org/x/sys/unix" + + "github.com/shirou/gopsutil/internal/common" ) func VirtualMemory() (*VirtualMemoryStat, error) { @@ -15,58 +17,59 @@ func VirtualMemory() (*VirtualMemoryStat, error) { } func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { - pageSize, err := unix.SysctlUint32("vm.stats.vm.v_page_size") + pageSize, err := common.SysctlUint("vm.stats.vm.v_page_size") if err != nil { return nil, err } - physmem, err := unix.SysctlUint64("hw.physmem") + physmem, err := common.SysctlUint("hw.physmem") if err != nil { return nil, err } - free, err := unix.SysctlUint32("vm.stats.vm.v_free_count") + + free, err := common.SysctlUint("vm.stats.vm.v_free_count") if err != nil { return nil, err } - active, err := unix.SysctlUint32("vm.stats.vm.v_active_count") + active, err := common.SysctlUint("vm.stats.vm.v_active_count") if err != nil { return nil, err } - inactive, err := unix.SysctlUint32("vm.stats.vm.v_inactive_count") + inactive, err := common.SysctlUint("vm.stats.vm.v_inactive_count") if err != nil { return nil, err } - buffers, err := unix.SysctlUint64("vfs.bufspace") + buffers, err := common.SysctlUint("vfs.bufspace") if err != nil { return nil, err } - wired, err := unix.SysctlUint32("vm.stats.vm.v_wire_count") + wired, err := common.SysctlUint("vm.stats.vm.v_wire_count") if err != nil { return nil, err } - var cached, laundry uint32 - osreldate, _ := unix.SysctlUint32("kern.osreldate") + var cached, laundry uint64 + osreldate, _ := common.SysctlUint("kern.osreldate") if osreldate < 1102000 { - cached, err = unix.SysctlUint32("vm.stats.vm.v_cache_count") + cached, err = common.SysctlUint("vm.stats.vm.v_cache_count") if err != nil { return nil, err } } else { - laundry, err = unix.SysctlUint32("vm.stats.vm.v_laundry_count") + laundry, err = common.SysctlUint("vm.stats.vm.v_laundry_count") if err != nil { return nil, err } } - p := uint64(pageSize) + p := pageSize ret := &VirtualMemoryStat{ - Total: uint64(physmem), - Free: uint64(free) * p, - Active: uint64(active) * p, - Inactive: uint64(inactive) * p, - Cached: uint64(cached) * p, - Buffers: uint64(buffers), - Wired: uint64(wired) * p, - Laundry: uint64(laundry) * p, + Total: physmem, + Free: free * p, + Active: active * p, + Inactive: inactive * p, + Cached: cached * p, + Buffers: buffers, + Wired: wired * p, + Laundry: laundry * p, } ret.Available = ret.Inactive + ret.Cached + ret.Free + ret.Laundry @@ -84,11 +87,22 @@ func SwapMemory() (*SwapMemoryStat, error) { // Constants from vm/vm_param.h // nolint: golint const ( - XSWDEV_VERSION = 1 + XSWDEV_VERSION11 = 1 + XSWDEV_VERSION = 2 ) // Types from vm/vm_param.h type xswdev struct { + Version uint32 // Version is the version + Dev uint64 // Dev is the device identifier + Flags int32 // Flags is the swap flags applied to the device + NBlks int32 // NBlks is the total number of blocks + Used int32 // Used is the number of blocks used +} + +// xswdev11 is a compatibility for under FreeBSD 11 +// sys/vm/swap_pager.c +type xswdev11 struct { Version uint32 // Version is the version Dev uint32 // Dev is the device identifier Flags int32 // Flags is the swap flags applied to the device @@ -98,7 +112,7 @@ type xswdev struct { func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { // FreeBSD can have multiple swap devices so we total them up - i, err := unix.SysctlUint32("vm.nswapdev") + i, err := common.SysctlUint("vm.nswapdev") if err != nil { return nil, err } @@ -109,11 +123,11 @@ func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { c := int(i) - i, err = unix.SysctlUint32("vm.stats.vm.v_page_size") + i, err = common.SysctlUint("vm.stats.vm.v_page_size") if err != nil { return nil, err } - pageSize := uint64(i) + pageSize := i var buf []byte s := &SwapMemoryStat{} @@ -123,12 +137,23 @@ func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { return nil, err } + // first, try to parse with version 2 xsw := (*xswdev)(unsafe.Pointer(&buf[0])) - if xsw.Version != XSWDEV_VERSION { + if xsw.Version == XSWDEV_VERSION11 { + // this is version 1, so try to parse again + xsw := (*xswdev11)(unsafe.Pointer(&buf[0])) + if xsw.Version != XSWDEV_VERSION11 { + return nil, errors.New("xswdev version mismatch(11)") + } + s.Total += uint64(xsw.NBlks) + s.Used += uint64(xsw.Used) + } else if xsw.Version != XSWDEV_VERSION { return nil, errors.New("xswdev version mismatch") + } else { + s.Total += uint64(xsw.NBlks) + s.Used += uint64(xsw.Used) } - s.Total += uint64(xsw.NBlks) - s.Used += uint64(xsw.Used) + } if s.Total != 0 { diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_linux.go b/vendor/github.com/shirou/gopsutil/mem/mem_linux.go index a3425d705..f9cb8f260 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_linux.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_linux.go @@ -4,6 +4,9 @@ package mem import ( "context" + "encoding/json" + "math" + "os" "strconv" "strings" @@ -11,17 +14,56 @@ import ( "golang.org/x/sys/unix" ) +type VirtualMemoryExStat struct { + ActiveFile uint64 `json:"activefile"` + InactiveFile uint64 `json:"inactivefile"` + ActiveAnon uint64 `json:"activeanon"` + InactiveAnon uint64 `json:"inactiveanon"` + Unevictable uint64 `json:"unevictable"` +} + +func (v VirtualMemoryExStat) String() string { + s, _ := json.Marshal(v) + return string(s) +} + func VirtualMemory() (*VirtualMemoryStat, error) { return VirtualMemoryWithContext(context.Background()) } func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { + vm, _, err := fillFromMeminfoWithContext(ctx) + if err != nil { + return nil, err + } + return vm, nil +} + +func VirtualMemoryEx() (*VirtualMemoryExStat, error) { + return VirtualMemoryExWithContext(context.Background()) +} + +func VirtualMemoryExWithContext(ctx context.Context) (*VirtualMemoryExStat, error) { + _, vmEx, err := fillFromMeminfoWithContext(ctx) + if err != nil { + return nil, err + } + return vmEx, nil +} + +func fillFromMeminfoWithContext(ctx context.Context) (*VirtualMemoryStat, *VirtualMemoryExStat, error) { filename := common.HostProc("meminfo") lines, _ := common.ReadLines(filename) + // flag if MemAvailable is in /proc/meminfo (kernel 3.14+) memavail := false + activeFile := false // "Active(file)" not available: 2.6.28 / Dec 2008 + inactiveFile := false // "Inactive(file)" not available: 2.6.28 / Dec 2008 + sReclaimable := false // "SReclaimable:" not available: 2.6.19 / Nov 2006 ret := &VirtualMemoryStat{} + retEx := &VirtualMemoryExStat{} + for _, line := range lines { fields := strings.Split(line, ":") if len(fields) != 2 { @@ -31,71 +73,226 @@ func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { value := strings.TrimSpace(fields[1]) value = strings.Replace(value, " kB", "", -1) - t, err := strconv.ParseUint(value, 10, 64) - if err != nil { - return ret, err - } switch key { case "MemTotal": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Total = t * 1024 case "MemFree": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Free = t * 1024 case "MemAvailable": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } memavail = true ret.Available = t * 1024 case "Buffers": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Buffers = t * 1024 case "Cached": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Cached = t * 1024 case "Active": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Active = t * 1024 case "Inactive": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Inactive = t * 1024 + case "Active(anon)": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + retEx.ActiveAnon = t * 1024 + case "Inactive(anon)": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + retEx.InactiveAnon = t * 1024 + case "Active(file)": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + activeFile = true + retEx.ActiveFile = t * 1024 + case "Inactive(file)": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + inactiveFile = true + retEx.InactiveFile = t * 1024 + case "Unevictable": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + retEx.Unevictable = t * 1024 case "Writeback": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Writeback = t * 1024 case "WritebackTmp": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.WritebackTmp = t * 1024 case "Dirty": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Dirty = t * 1024 case "Shmem": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Shared = t * 1024 case "Slab": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Slab = t * 1024 case "SReclaimable": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + sReclaimable = true ret.SReclaimable = t * 1024 + case "SUnreclaim": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } + ret.SUnreclaim = t * 1024 case "PageTables": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.PageTables = t * 1024 case "SwapCached": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.SwapCached = t * 1024 case "CommitLimit": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.CommitLimit = t * 1024 case "Committed_AS": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.CommittedAS = t * 1024 case "HighTotal": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.HighTotal = t * 1024 case "HighFree": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.HighFree = t * 1024 case "LowTotal": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.LowTotal = t * 1024 case "LowFree": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.LowFree = t * 1024 case "SwapTotal": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.SwapTotal = t * 1024 case "SwapFree": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.SwapFree = t * 1024 case "Mapped": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.Mapped = t * 1024 case "VmallocTotal": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.VMallocTotal = t * 1024 case "VmallocUsed": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.VMallocUsed = t * 1024 case "VmallocChunk": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.VMallocChunk = t * 1024 case "HugePages_Total": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.HugePagesTotal = t case "HugePages_Free": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.HugePagesFree = t case "Hugepagesize": + t, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return ret, retEx, err + } ret.HugePageSize = t * 1024 } } @@ -103,12 +300,17 @@ func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { ret.Cached += ret.SReclaimable if !memavail { - ret.Available = ret.Free + ret.Buffers + ret.Cached + if activeFile && inactiveFile && sReclaimable { + ret.Available = calcuateAvailVmem(ret, retEx) + } else { + ret.Available = ret.Cached + ret.Free + } } + ret.Used = ret.Total - ret.Free - ret.Buffers - ret.Cached ret.UsedPercent = float64(ret.Used) / float64(ret.Total) * 100.0 - return ret, nil + return ret, retEx, nil } func SwapMemory() (*SwapMemoryStat, error) { @@ -152,7 +354,75 @@ func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { continue } ret.Sout = value * 4 * 1024 + case "pgpgin": + value, err := strconv.ParseUint(fields[1], 10, 64) + if err != nil { + continue + } + ret.PgIn = value * 4 * 1024 + case "pgpgout": + value, err := strconv.ParseUint(fields[1], 10, 64) + if err != nil { + continue + } + ret.PgOut = value * 4 * 1024 + case "pgfault": + value, err := strconv.ParseUint(fields[1], 10, 64) + if err != nil { + continue + } + ret.PgFault = value * 4 * 1024 + case "pgmajfault": + value, err := strconv.ParseUint(fields[1], 10, 64) + if err != nil { + continue + } + ret.PgMajFault = value * 4 * 1024 } } return ret, nil } + +// calcuateAvailVmem is a fallback under kernel 3.14 where /proc/meminfo does not provide +// "MemAvailable:" column. It reimplements an algorithm from the link below +// https://github.com/giampaolo/psutil/pull/890 +func calcuateAvailVmem(ret *VirtualMemoryStat, retEx *VirtualMemoryExStat) uint64 { + var watermarkLow uint64 + + fn := common.HostProc("zoneinfo") + lines, err := common.ReadLines(fn) + + if err != nil { + return ret.Free + ret.Cached // fallback under kernel 2.6.13 + } + + pagesize := uint64(os.Getpagesize()) + watermarkLow = 0 + + for _, line := range lines { + fields := strings.Fields(line) + + if strings.HasPrefix(fields[0], "low") { + lowValue, err := strconv.ParseUint(fields[1], 10, 64) + + if err != nil { + lowValue = 0 + } + watermarkLow += lowValue + } + } + + watermarkLow *= pagesize + + availMemory := ret.Free - watermarkLow + pageCache := retEx.ActiveFile + retEx.InactiveFile + pageCache -= uint64(math.Min(float64(pageCache/2), float64(watermarkLow))) + availMemory += pageCache + availMemory += ret.SReclaimable - uint64(math.Min(float64(ret.SReclaimable/2.0), float64(watermarkLow))) + + if availMemory < 0 { + availMemory = 0 + } + + return availMemory +} diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_openbsd.go b/vendor/github.com/shirou/gopsutil/mem/mem_openbsd.go index 35472a326..7ecdae9fd 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_openbsd.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_openbsd.go @@ -11,6 +11,7 @@ import ( "os/exec" "github.com/shirou/gopsutil/internal/common" + "golang.org/x/sys/unix" ) func GetPageSize() (uint64, error) { @@ -18,17 +19,7 @@ func GetPageSize() (uint64, error) { } func GetPageSizeWithContext(ctx context.Context) (uint64, error) { - mib := []int32{CTLVm, VmUvmexp} - buf, length, err := common.CallSyscall(mib) - if err != nil { - return 0, err - } - if length < sizeOfUvmexp { - return 0, fmt.Errorf("short syscall ret %d bytes", length) - } - var uvmexp Uvmexp - br := bytes.NewReader(buf) - err = common.Read(br, binary.LittleEndian, &uvmexp) + uvmexp, err := unix.SysctlUvmexp("vm.uvmexp") if err != nil { return 0, err } @@ -40,17 +31,7 @@ func VirtualMemory() (*VirtualMemoryStat, error) { } func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { - mib := []int32{CTLVm, VmUvmexp} - buf, length, err := common.CallSyscall(mib) - if err != nil { - return nil, err - } - if length < sizeOfUvmexp { - return nil, fmt.Errorf("short syscall ret %d bytes", length) - } - var uvmexp Uvmexp - br := bytes.NewReader(buf) - err = common.Read(br, binary.LittleEndian, &uvmexp) + uvmexp, err := unix.SysctlUvmexp("vm.uvmexp") if err != nil { return nil, err } @@ -69,8 +50,8 @@ func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { ret.Used = ret.Total - ret.Available ret.UsedPercent = float64(ret.Used) / float64(ret.Total) * 100.0 - mib = []int32{CTLVfs, VfsGeneric, VfsBcacheStat} - buf, length, err = common.CallSyscall(mib) + mib := []int32{CTLVfs, VfsGeneric, VfsBcacheStat} + buf, length, err := common.CallSyscall(mib) if err != nil { return nil, err } @@ -78,7 +59,7 @@ func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { return nil, fmt.Errorf("short syscall ret %d bytes", length) } var bcs Bcachestats - br = bytes.NewReader(buf) + br := bytes.NewReader(buf) err = common.Read(br, binary.LittleEndian, &bcs) if err != nil { return nil, err diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_386.go b/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_386.go new file mode 100644 index 000000000..aacd4f61e --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_386.go @@ -0,0 +1,37 @@ +// +build openbsd +// +build 386 +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs mem/types_openbsd.go + +package mem + +const ( + CTLVfs = 10 + VfsGeneric = 0 + VfsBcacheStat = 3 +) + +const ( + sizeOfBcachestats = 0x90 +) + +type Bcachestats struct { + Numbufs int64 + Numbufpages int64 + Numdirtypages int64 + Numcleanpages int64 + Pendingwrites int64 + Pendingreads int64 + Numwrites int64 + Numreads int64 + Cachehits int64 + Busymapped int64 + Dmapages int64 + Highpages int64 + Delwribufs int64 + Kvaslots int64 + Avail int64 + Highflips int64 + Highflops int64 + Dmaflips int64 +} diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_amd64.go b/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_amd64.go index e09b908e4..d187abf01 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_amd64.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_openbsd_amd64.go @@ -4,105 +4,15 @@ package mem const ( - CTLVm = 2 CTLVfs = 10 - VmUvmexp = 4 VfsGeneric = 0 VfsBcacheStat = 3 ) const ( - sizeOfUvmexp = 0x154 sizeOfBcachestats = 0x78 ) -type Uvmexp struct { - Pagesize int32 - Pagemask int32 - Pageshift int32 - Npages int32 - Free int32 - Active int32 - Inactive int32 - Paging int32 - Wired int32 - Zeropages int32 - Reserve_pagedaemon int32 - Reserve_kernel int32 - Anonpages int32 - Vnodepages int32 - Vtextpages int32 - Freemin int32 - Freetarg int32 - Inactarg int32 - Wiredmax int32 - Anonmin int32 - Vtextmin int32 - Vnodemin int32 - Anonminpct int32 - Vtextminpct int32 - Vnodeminpct int32 - Nswapdev int32 - Swpages int32 - Swpginuse int32 - Swpgonly int32 - Nswget int32 - Nanon int32 - Nanonneeded int32 - Nfreeanon int32 - Faults int32 - Traps int32 - Intrs int32 - Swtch int32 - Softs int32 - Syscalls int32 - Pageins int32 - Obsolete_swapins int32 - Obsolete_swapouts int32 - Pgswapin int32 - Pgswapout int32 - Forks int32 - Forks_ppwait int32 - Forks_sharevm int32 - Pga_zerohit int32 - Pga_zeromiss int32 - Zeroaborts int32 - Fltnoram int32 - Fltnoanon int32 - Fltpgwait int32 - Fltpgrele int32 - Fltrelck int32 - Fltrelckok int32 - Fltanget int32 - Fltanretry int32 - Fltamcopy int32 - Fltnamap int32 - Fltnomap int32 - Fltlget int32 - Fltget int32 - Flt_anon int32 - Flt_acow int32 - Flt_obj int32 - Flt_prcopy int32 - Flt_przero int32 - Pdwoke int32 - Pdrevs int32 - Pdswout int32 - Pdfreed int32 - Pdscans int32 - Pdanscan int32 - Pdobscan int32 - Pdreact int32 - Pdbusy int32 - Pdpageouts int32 - Pdpending int32 - Pddeact int32 - Pdreanon int32 - Pdrevnode int32 - Pdrevtext int32 - Fpswtch int32 - Kmapent int32 -} type Bcachestats struct { Numbufs int64 Numbufpages int64 diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_solaris.go b/vendor/github.com/shirou/gopsutil/mem/mem_solaris.go index 0736bc41c..08512733c 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_solaris.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_solaris.go @@ -52,7 +52,7 @@ func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { } func zoneName() (string, error) { - zonename, err := exec.LookPath("/usr/bin/zonename") + zonename, err := exec.LookPath("zonename") if err != nil { return "", err } @@ -69,7 +69,7 @@ func zoneName() (string, error) { var globalZoneMemoryCapacityMatch = regexp.MustCompile(`memory size: ([\d]+) Megabytes`) func globalZoneMemoryCapacity() (uint64, error) { - prtconf, err := exec.LookPath("/usr/sbin/prtconf") + prtconf, err := exec.LookPath("prtconf") if err != nil { return 0, err } @@ -96,7 +96,7 @@ func globalZoneMemoryCapacity() (uint64, error) { var kstatMatch = regexp.MustCompile(`([^\s]+)[\s]+([^\s]*)`) func nonGlobalZoneMemoryCapacity() (uint64, error) { - kstat, err := exec.LookPath("/usr/bin/kstat") + kstat, err := exec.LookPath("kstat") if err != nil { return 0, err } diff --git a/vendor/github.com/shirou/gopsutil/mem/mem_windows.go b/vendor/github.com/shirou/gopsutil/mem/mem_windows.go index cfdf8bd1d..a925faa25 100644 --- a/vendor/github.com/shirou/gopsutil/mem/mem_windows.go +++ b/vendor/github.com/shirou/gopsutil/mem/mem_windows.go @@ -42,6 +42,7 @@ func VirtualMemoryWithContext(ctx context.Context) (*VirtualMemoryStat, error) { ret := &VirtualMemoryStat{ Total: memInfo.ullTotalPhys, Available: memInfo.ullAvailPhys, + Free: memInfo.ullAvailPhys, UsedPercent: float64(memInfo.dwMemoryLoad), } @@ -84,7 +85,7 @@ func SwapMemoryWithContext(ctx context.Context) (*SwapMemoryStat, error) { if tot == 0 { usedPercent = 0 } else { - usedPercent = float64(used) / float64(tot) + usedPercent = float64(used) / float64(tot) * 100 } ret := &SwapMemoryStat{ Total: tot, diff --git a/vendor/github.com/shirou/gopsutil/net/net.go b/vendor/github.com/shirou/gopsutil/net/net.go index fce86c711..f1f99dc3a 100644 --- a/vendor/github.com/shirou/gopsutil/net/net.go +++ b/vendor/github.com/shirou/gopsutil/net/net.go @@ -3,11 +3,7 @@ package net import ( "context" "encoding/json" - "fmt" "net" - "strconv" - "strings" - "syscall" "github.com/shirou/gopsutil/internal/common" ) @@ -58,6 +54,7 @@ type InterfaceAddr struct { } type InterfaceStat struct { + Index int `json:"index"` MTU int `json:"mtu"` // maximum transmission unit Name string `json:"name"` // e.g., "en0", "lo0", "eth0.100" HardwareAddr string `json:"hardwareaddr"` // IEEE MAC-48, EUI-48 and EUI-64 form @@ -70,12 +67,94 @@ type FilterStat struct { ConnTrackMax int64 `json:"conntrackMax"` } -var constMap = map[string]int{ - "unix": syscall.AF_UNIX, - "TCP": syscall.SOCK_STREAM, - "UDP": syscall.SOCK_DGRAM, - "IPv4": syscall.AF_INET, - "IPv6": syscall.AF_INET6, +// ConntrackStat has conntrack summary info +type ConntrackStat struct { + Entries uint32 `json:"entries"` // Number of entries in the conntrack table + Searched uint32 `json:"searched"` // Number of conntrack table lookups performed + Found uint32 `json:"found"` // Number of searched entries which were successful + New uint32 `json:"new"` // Number of entries added which were not expected before + Invalid uint32 `json:"invalid"` // Number of packets seen which can not be tracked + Ignore uint32 `json:"ignore"` // Packets seen which are already connected to an entry + Delete uint32 `json:"delete"` // Number of entries which were removed + DeleteList uint32 `json:"delete_list"` // Number of entries which were put to dying list + Insert uint32 `json:"insert"` // Number of entries inserted into the list + InsertFailed uint32 `json:"insert_failed"` // # insertion attempted but failed (same entry exists) + Drop uint32 `json:"drop"` // Number of packets dropped due to conntrack failure. + EarlyDrop uint32 `json:"early_drop"` // Dropped entries to make room for new ones, if maxsize reached + IcmpError uint32 `json:"icmp_error"` // Subset of invalid. Packets that can't be tracked d/t error + ExpectNew uint32 `json:"expect_new"` // Entries added after an expectation was already present + ExpectCreate uint32 `json:"expect_create"` // Expectations added + ExpectDelete uint32 `json:"expect_delete"` // Expectations deleted + SearchRestart uint32 `json:"search_restart"` // Conntrack table lookups restarted due to hashtable resizes +} + +func NewConntrackStat(e uint32, s uint32, f uint32, n uint32, inv uint32, ign uint32, del uint32, dlst uint32, ins uint32, insfail uint32, drop uint32, edrop uint32, ie uint32, en uint32, ec uint32, ed uint32, sr uint32) *ConntrackStat { + return &ConntrackStat{ + Entries: e, + Searched: s, + Found: f, + New: n, + Invalid: inv, + Ignore: ign, + Delete: del, + DeleteList: dlst, + Insert: ins, + InsertFailed: insfail, + Drop: drop, + EarlyDrop: edrop, + IcmpError: ie, + ExpectNew: en, + ExpectCreate: ec, + ExpectDelete: ed, + SearchRestart: sr, + } +} + +type ConntrackStatList struct { + items []*ConntrackStat +} + +func NewConntrackStatList() *ConntrackStatList { + return &ConntrackStatList{ + items: []*ConntrackStat{}, + } +} + +func (l *ConntrackStatList) Append(c *ConntrackStat) { + l.items = append(l.items, c) +} + +func (l *ConntrackStatList) Items() []ConntrackStat { + items := make([]ConntrackStat, len(l.items), len(l.items)) + for i, el := range l.items { + items[i] = *el + } + return items +} + +// Summary returns a single-element list with totals from all list items. +func (l *ConntrackStatList) Summary() []ConntrackStat { + summary := NewConntrackStat(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + for _, cs := range l.items { + summary.Entries += cs.Entries + summary.Searched += cs.Searched + summary.Found += cs.Found + summary.New += cs.New + summary.Invalid += cs.Invalid + summary.Ignore += cs.Ignore + summary.Delete += cs.Delete + summary.DeleteList += cs.DeleteList + summary.Insert += cs.Insert + summary.InsertFailed += cs.InsertFailed + summary.Drop += cs.Drop + summary.EarlyDrop += cs.EarlyDrop + summary.IcmpError += cs.IcmpError + summary.ExpectNew += cs.ExpectNew + summary.ExpectCreate += cs.ExpectCreate + summary.ExpectDelete += cs.ExpectDelete + summary.SearchRestart += cs.SearchRestart + } + return []ConntrackStat{*summary} } func (n IOCountersStat) String() string { @@ -108,6 +187,11 @@ func (n InterfaceAddr) String() string { return string(s) } +func (n ConntrackStat) String() string { + s, _ := json.Marshal(n) + return string(s) +} + func Interfaces() ([]InterfaceStat, error) { return InterfacesWithContext(context.Background()) } @@ -138,6 +222,7 @@ func InterfacesWithContext(ctx context.Context) ([]InterfaceStat, error) { } r := InterfaceStat{ + Index: ifi.Index, Name: ifi.Name, MTU: ifi.MTU, HardwareAddr: ifi.HardwareAddr.String(), @@ -176,84 +261,3 @@ func getIOCountersAll(n []IOCountersStat) ([]IOCountersStat, error) { return []IOCountersStat{r}, nil } - -func parseNetLine(line string) (ConnectionStat, error) { - f := strings.Fields(line) - if len(f) < 8 { - return ConnectionStat{}, fmt.Errorf("wrong line,%s", line) - } - - if len(f) == 8 { - f = append(f, f[7]) - f[7] = "unix" - } - - pid, err := strconv.Atoi(f[1]) - if err != nil { - return ConnectionStat{}, err - } - fd, err := strconv.Atoi(strings.Trim(f[3], "u")) - if err != nil { - return ConnectionStat{}, fmt.Errorf("unknown fd, %s", f[3]) - } - netFamily, ok := constMap[f[4]] - if !ok { - return ConnectionStat{}, fmt.Errorf("unknown family, %s", f[4]) - } - netType, ok := constMap[f[7]] - if !ok { - return ConnectionStat{}, fmt.Errorf("unknown type, %s", f[7]) - } - - var laddr, raddr Addr - if f[7] == "unix" { - laddr.IP = f[8] - } else { - laddr, raddr, err = parseNetAddr(f[8]) - if err != nil { - return ConnectionStat{}, fmt.Errorf("failed to parse netaddr, %s", f[8]) - } - } - - n := ConnectionStat{ - Fd: uint32(fd), - Family: uint32(netFamily), - Type: uint32(netType), - Laddr: laddr, - Raddr: raddr, - Pid: int32(pid), - } - if len(f) == 10 { - n.Status = strings.Trim(f[9], "()") - } - - return n, nil -} - -func parseNetAddr(line string) (laddr Addr, raddr Addr, err error) { - parse := func(l string) (Addr, error) { - host, port, err := net.SplitHostPort(l) - if err != nil { - return Addr{}, fmt.Errorf("wrong addr, %s", l) - } - lport, err := strconv.Atoi(port) - if err != nil { - return Addr{}, err - } - return Addr{IP: host, Port: uint32(lport)}, nil - } - - addrs := strings.Split(line, "->") - if len(addrs) == 0 { - return laddr, raddr, fmt.Errorf("wrong netaddr, %s", line) - } - laddr, err = parse(addrs[0]) - if len(addrs) == 2 { // remote addr exists - raddr, err = parse(addrs[1]) - if err != nil { - return laddr, raddr, err - } - } - - return laddr, raddr, err -} diff --git a/vendor/github.com/shirou/gopsutil/net/net_aix.go b/vendor/github.com/shirou/gopsutil/net/net_aix.go new file mode 100644 index 000000000..4ac849701 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/net/net_aix.go @@ -0,0 +1,425 @@ +// +build aix + +package net + +import ( + "context" + "fmt" + "os/exec" + "regexp" + "strconv" + "strings" + "syscall" + + "github.com/shirou/gopsutil/internal/common" +) + +func parseNetstatI(output string) ([]IOCountersStat, error) { + lines := strings.Split(string(output), "\n") + ret := make([]IOCountersStat, 0, len(lines)-1) + exists := make([]string, 0, len(ret)) + + // Check first line is header + if len(lines) > 0 && strings.Fields(lines[0])[0] != "Name" { + return nil, fmt.Errorf("not a 'netstat -i' output") + } + + for _, line := range lines[1:] { + values := strings.Fields(line) + if len(values) < 1 || values[0] == "Name" { + continue + } + if common.StringsHas(exists, values[0]) { + // skip if already get + continue + } + exists = append(exists, values[0]) + + if len(values) < 9 { + continue + } + + base := 1 + // sometimes Address is omitted + if len(values) < 10 { + base = 0 + } + + parsed := make([]uint64, 0, 5) + vv := []string{ + values[base+3], // Ipkts == PacketsRecv + values[base+4], // Ierrs == Errin + values[base+5], // Opkts == PacketsSent + values[base+6], // Oerrs == Errout + values[base+8], // Drops == Dropout + } + + for _, target := range vv { + if target == "-" { + parsed = append(parsed, 0) + continue + } + + t, err := strconv.ParseUint(target, 10, 64) + if err != nil { + return nil, err + } + parsed = append(parsed, t) + } + + n := IOCountersStat{ + Name: values[0], + PacketsRecv: parsed[0], + Errin: parsed[1], + PacketsSent: parsed[2], + Errout: parsed[3], + Dropout: parsed[4], + } + ret = append(ret, n) + } + return ret, nil +} + +func IOCounters(pernic bool) ([]IOCountersStat, error) { + return IOCountersWithContext(context.Background(), pernic) +} + +func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, error) { + netstat, err := exec.LookPath("netstat") + if err != nil { + return nil, err + } + out, err := invoke.CommandWithContext(ctx, netstat, "-idn") + if err != nil { + return nil, err + } + + iocounters, err := parseNetstatI(string(out)) + if err != nil { + return nil, err + } + if pernic == false { + return getIOCountersAll(iocounters) + } + return iocounters, nil + +} + +// NetIOCountersByFile is an method which is added just a compatibility for linux. +func IOCountersByFile(pernic bool, filename string) ([]IOCountersStat, error) { + return IOCountersByFileWithContext(context.Background(), pernic, filename) +} + +func IOCountersByFileWithContext(ctx context.Context, pernic bool, filename string) ([]IOCountersStat, error) { + return IOCounters(pernic) +} + +func FilterCounters() ([]FilterStat, error) { + return FilterCountersWithContext(context.Background()) +} + +func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { + return nil, common.ErrNotImplementedError +} + +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return nil, common.ErrNotImplementedError +} + +func ProtoCounters(protocols []string) ([]ProtoCountersStat, error) { + return ProtoCountersWithContext(context.Background(), protocols) +} + +func ProtoCountersWithContext(ctx context.Context, protocols []string) ([]ProtoCountersStat, error) { + return nil, common.ErrNotImplementedError +} + +func parseNetstatNetLine(line string) (ConnectionStat, error) { + f := strings.Fields(line) + if len(f) < 5 { + return ConnectionStat{}, fmt.Errorf("wrong line,%s", line) + } + + var netType, netFamily uint32 + switch f[0] { + case "tcp", "tcp4": + netType = syscall.SOCK_STREAM + netFamily = syscall.AF_INET + case "udp", "udp4": + netType = syscall.SOCK_DGRAM + netFamily = syscall.AF_INET + case "tcp6": + netType = syscall.SOCK_STREAM + netFamily = syscall.AF_INET6 + case "udp6": + netType = syscall.SOCK_DGRAM + netFamily = syscall.AF_INET6 + default: + return ConnectionStat{}, fmt.Errorf("unknown type, %s", f[0]) + } + + laddr, raddr, err := parseNetstatAddr(f[3], f[4], netFamily) + if err != nil { + return ConnectionStat{}, fmt.Errorf("failed to parse netaddr, %s %s", f[3], f[4]) + } + + n := ConnectionStat{ + Fd: uint32(0), // not supported + Family: uint32(netFamily), + Type: uint32(netType), + Laddr: laddr, + Raddr: raddr, + Pid: int32(0), // not supported + } + if len(f) == 6 { + n.Status = f[5] + } + + return n, nil +} + +var portMatch = regexp.MustCompile(`(.*)\.(\d+)$`) + +// This function only works for netstat returning addresses with a "." +// before the port (0.0.0.0.22 instead of 0.0.0.0:22). +func parseNetstatAddr(local string, remote string, family uint32) (laddr Addr, raddr Addr, err error) { + parse := func(l string) (Addr, error) { + matches := portMatch.FindStringSubmatch(l) + if matches == nil { + return Addr{}, fmt.Errorf("wrong addr, %s", l) + } + host := matches[1] + port := matches[2] + if host == "*" { + switch family { + case syscall.AF_INET: + host = "0.0.0.0" + case syscall.AF_INET6: + host = "::" + default: + return Addr{}, fmt.Errorf("unknown family, %d", family) + } + } + lport, err := strconv.Atoi(port) + if err != nil { + return Addr{}, err + } + return Addr{IP: host, Port: uint32(lport)}, nil + } + + laddr, err = parse(local) + if remote != "*.*" { // remote addr exists + raddr, err = parse(remote) + if err != nil { + return laddr, raddr, err + } + } + + return laddr, raddr, err +} + +func parseNetstatUnixLine(f []string) (ConnectionStat, error) { + if len(f) < 8 { + return ConnectionStat{}, fmt.Errorf("wrong number of fields: expected >=8 got %d", len(f)) + } + + var netType uint32 + + switch f[1] { + case "dgram": + netType = syscall.SOCK_DGRAM + case "stream": + netType = syscall.SOCK_STREAM + default: + return ConnectionStat{}, fmt.Errorf("unknown type: %s", f[1]) + } + + // Some Unix Socket don't have any address associated + addr := "" + if len(f) == 9 { + addr = f[8] + } + + c := ConnectionStat{ + Fd: uint32(0), // not supported + Family: uint32(syscall.AF_UNIX), + Type: uint32(netType), + Laddr: Addr{ + IP: addr, + }, + Status: "NONE", + Pid: int32(0), // not supported + } + + return c, nil +} + +// Return true if proto is the corresponding to the kind parameter +// Only for Inet lines +func hasCorrectInetProto(kind, proto string) bool { + switch kind { + case "all", "inet": + return true + case "unix": + return false + case "inet4": + return !strings.HasSuffix(proto, "6") + case "inet6": + return strings.HasSuffix(proto, "6") + case "tcp": + return proto == "tcp" || proto == "tcp4" || proto == "tcp6" + case "tcp4": + return proto == "tcp" || proto == "tcp4" + case "tcp6": + return proto == "tcp6" + case "udp": + return proto == "udp" || proto == "udp4" || proto == "udp6" + case "udp4": + return proto == "udp" || proto == "udp4" + case "udp6": + return proto == "udp6" + } + return false +} + +func parseNetstatA(output string, kind string) ([]ConnectionStat, error) { + var ret []ConnectionStat + lines := strings.Split(string(output), "\n") + + for _, line := range lines { + fields := strings.Fields(line) + if len(fields) < 1 { + continue + } + + if strings.HasPrefix(fields[0], "f1") { + // Unix lines + if len(fields) < 2 { + // every unix connections have two lines + continue + } + + c, err := parseNetstatUnixLine(fields) + if err != nil { + return nil, fmt.Errorf("failed to parse Unix Address (%s): %s", line, err) + } + + ret = append(ret, c) + + } else if strings.HasPrefix(fields[0], "tcp") || strings.HasPrefix(fields[0], "udp") { + // Inet lines + if !hasCorrectInetProto(kind, fields[0]) { + continue + } + + // On AIX, netstat display some connections with "*.*" as local addresses + // Skip them as they aren't real connections. + if fields[3] == "*.*" { + continue + } + + c, err := parseNetstatNetLine(line) + if err != nil { + return nil, fmt.Errorf("failed to parse Inet Address (%s): %s", line, err) + } + + ret = append(ret, c) + } else { + // Header lines + continue + } + } + + return ret, nil + +} + +func Connections(kind string) ([]ConnectionStat, error) { + return ConnectionsWithContext(context.Background(), kind) +} + +func ConnectionsWithContext(ctx context.Context, kind string) ([]ConnectionStat, error) { + + args := []string{"-na"} + switch strings.ToLower(kind) { + default: + fallthrough + case "": + kind = "all" + case "all": + // nothing to add + case "inet", "inet4", "inet6": + args = append(args, "-finet") + case "tcp", "tcp4", "tcp6": + args = append(args, "-finet") + case "udp", "udp4", "udp6": + args = append(args, "-finet") + case "unix": + args = append(args, "-funix") + } + + netstat, err := exec.LookPath("netstat") + if err != nil { + return nil, err + } + out, err := invoke.CommandWithContext(ctx, netstat, args...) + + if err != nil { + return nil, err + } + + ret, err := parseNetstatA(string(out), kind) + if err != nil { + return nil, err + } + + return ret, nil + +} + +func ConnectionsMax(kind string, max int) ([]ConnectionStat, error) { + return ConnectionsMaxWithContext(context.Background(), kind, max) +} + +func ConnectionsMaxWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { + return []ConnectionStat{}, common.ErrNotImplementedError +} + +// Return a list of network connections opened, omitting `Uids`. +// WithoutUids functions are reliant on implementation details. They may be altered to be an alias for Connections or be +// removed from the API in the future. +func ConnectionsWithoutUids(kind string) ([]ConnectionStat, error) { + return ConnectionsWithoutUidsWithContext(context.Background(), kind) +} + +func ConnectionsWithoutUidsWithContext(ctx context.Context, kind string) ([]ConnectionStat, error) { + return ConnectionsMaxWithoutUidsWithContext(ctx, kind, 0) +} + +func ConnectionsMaxWithoutUidsWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, 0, max) +} + +func ConnectionsPidWithoutUids(kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidWithoutUidsWithContext(context.Background(), kind, pid) +} + +func ConnectionsPidWithoutUidsWithContext(ctx context.Context, kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, 0) +} + +func ConnectionsPidMaxWithoutUids(kind string, pid int32, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(context.Background(), kind, pid, max) +} + +func ConnectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return connectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, max) +} + +func connectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return []ConnectionStat{}, common.ErrNotImplementedError +} diff --git a/vendor/github.com/shirou/gopsutil/net/net_darwin.go b/vendor/github.com/shirou/gopsutil/net/net_darwin.go index 0d89280f9..8e6e7f953 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_darwin.go +++ b/vendor/github.com/shirou/gopsutil/net/net_darwin.go @@ -6,6 +6,7 @@ import ( "context" "errors" "fmt" + "github.com/shirou/gopsutil/internal/common" "os/exec" "regexp" "strconv" @@ -42,7 +43,7 @@ func parseNetstatLine(line string) (stat *IOCountersStat, linkID *uint, err erro base := 1 numberColumns := len(columns) - // sometimes Address is ommitted + // sometimes Address is omitted if numberColumns < 12 { base = 0 } @@ -174,7 +175,7 @@ func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, retIndex int ) - netstat, err := exec.LookPath("/usr/sbin/netstat") + netstat, err := exec.LookPath("netstat") if err != nil { return nil, err } @@ -204,7 +205,7 @@ func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, } } else { // duplicated interface, list all interfaces - ifconfig, err := exec.LookPath("/sbin/ifconfig") + ifconfig, err := exec.LookPath("ifconfig") if err != nil { return nil, err } @@ -268,7 +269,15 @@ func FilterCounters() ([]FilterStat, error) { } func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { - return nil, errors.New("NetFilterCounters not implemented for darwin") + return nil, common.ErrNotImplementedError +} + +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return nil, common.ErrNotImplementedError } // NetProtoCounters returns network statistics for the entire system @@ -280,5 +289,5 @@ func ProtoCounters(protocols []string) ([]ProtoCountersStat, error) { } func ProtoCountersWithContext(ctx context.Context, protocols []string) ([]ProtoCountersStat, error) { - return nil, errors.New("NetProtoCounters not implemented for darwin") + return nil, common.ErrNotImplementedError } diff --git a/vendor/github.com/shirou/gopsutil/net/net_fallback.go b/vendor/github.com/shirou/gopsutil/net/net_fallback.go index 7c5e632f8..7d9a26591 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_fallback.go +++ b/vendor/github.com/shirou/gopsutil/net/net_fallback.go @@ -1,4 +1,4 @@ -// +build !darwin,!linux,!freebsd,!openbsd,!windows +// +build !aix,!darwin,!linux,!freebsd,!openbsd,!windows package net @@ -24,6 +24,14 @@ func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { return []FilterStat{}, common.ErrNotImplementedError } +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return nil, common.ErrNotImplementedError +} + func ProtoCounters(protocols []string) ([]ProtoCountersStat, error) { return ProtoCountersWithContext(context.Background(), protocols) } @@ -47,3 +55,38 @@ func ConnectionsMax(kind string, max int) ([]ConnectionStat, error) { func ConnectionsMaxWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { return []ConnectionStat{}, common.ErrNotImplementedError } + +// Return a list of network connections opened, omitting `Uids`. +// WithoutUids functions are reliant on implementation details. They may be altered to be an alias for Connections or be +// removed from the API in the future. +func ConnectionsWithoutUids(kind string) ([]ConnectionStat, error) { + return ConnectionsWithoutUidsWithContext(context.Background(), kind) +} + +func ConnectionsWithoutUidsWithContext(ctx context.Context, kind string) ([]ConnectionStat, error) { + return ConnectionsMaxWithoutUidsWithContext(ctx, kind, 0) +} + +func ConnectionsMaxWithoutUidsWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, 0, max) +} + +func ConnectionsPidWithoutUids(kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidWithoutUidsWithContext(context.Background(), kind, pid) +} + +func ConnectionsPidWithoutUidsWithContext(ctx context.Context, kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, 0) +} + +func ConnectionsPidMaxWithoutUids(kind string, pid int32, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(context.Background(), kind, pid, max) +} + +func ConnectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return connectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, max) +} + +func connectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return []ConnectionStat{}, common.ErrNotImplementedError +} diff --git a/vendor/github.com/shirou/gopsutil/net/net_freebsd.go b/vendor/github.com/shirou/gopsutil/net/net_freebsd.go index ce0241576..1204f5977 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_freebsd.go +++ b/vendor/github.com/shirou/gopsutil/net/net_freebsd.go @@ -4,7 +4,6 @@ package net import ( "context" - "errors" "os/exec" "strconv" "strings" @@ -17,7 +16,7 @@ func IOCounters(pernic bool) ([]IOCountersStat, error) { } func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, error) { - netstat, err := exec.LookPath("/usr/bin/netstat") + netstat, err := exec.LookPath("netstat") if err != nil { return nil, err } @@ -45,7 +44,7 @@ func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, continue } base := 1 - // sometimes Address is ommitted + // sometimes Address is omitted if len(values) < 13 { base = 0 } @@ -109,7 +108,15 @@ func FilterCounters() ([]FilterStat, error) { } func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { - return nil, errors.New("NetFilterCounters not implemented for freebsd") + return nil, common.ErrNotImplementedError +} + +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return nil, common.ErrNotImplementedError } // NetProtoCounters returns network statistics for the entire system @@ -121,5 +128,5 @@ func ProtoCounters(protocols []string) ([]ProtoCountersStat, error) { } func ProtoCountersWithContext(ctx context.Context, protocols []string) ([]ProtoCountersStat, error) { - return nil, errors.New("NetProtoCounters not implemented for freebsd") + return nil, common.ErrNotImplementedError } diff --git a/vendor/github.com/shirou/gopsutil/net/net_linux.go b/vendor/github.com/shirou/gopsutil/net/net_linux.go index 71842fb4a..ed5d027b8 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_linux.go +++ b/vendor/github.com/shirou/gopsutil/net/net_linux.go @@ -8,6 +8,7 @@ import ( "encoding/hex" "errors" "fmt" + "io" "io/ioutil" "net" "os" @@ -18,6 +19,26 @@ import ( "github.com/shirou/gopsutil/internal/common" ) +const ( // Conntrack Column numbers + CT_ENTRIES = iota + CT_SEARCHED + CT_FOUND + CT_NEW + CT_INVALID + CT_IGNORE + CT_DELETE + CT_DELETE_LIST + CT_INSERT + CT_INSERT_FAILED + CT_DROP + CT_EARLY_DROP + CT_ICMP_ERROR + CT_EXPECT_NEW + CT_EXPECT_CREATE + CT_EXPECT_DELETE + CT_SEARCH_RESTART +) + // NetIOCounters returnes network I/O statistics for every network // interface installed on the system. If pernic argument is false, // return only sum of all information (which name is 'all'). If true, @@ -29,7 +50,7 @@ func IOCounters(pernic bool) ([]IOCountersStat, error) { func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, error) { filename := common.HostProc("net/dev") - return IOCountersByFile(pernic, filename) + return IOCountersByFileWithContext(ctx, pernic, filename) } func IOCountersByFile(pernic bool, filename string) ([]IOCountersStat, error) { @@ -232,6 +253,58 @@ func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { return stats, nil } +// ConntrackStats returns more detailed info about the conntrack table +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +// ConntrackStatsWithContext returns more detailed info about the conntrack table +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return conntrackStatsFromFile(common.HostProc("net/stat/nf_conntrack"), percpu) +} + +// conntrackStatsFromFile returns more detailed info about the conntrack table +// from `filename` +// If 'percpu' is false, the result will contain exactly one item with totals/summary +func conntrackStatsFromFile(filename string, percpu bool) ([]ConntrackStat, error) { + lines, err := common.ReadLines(filename) + if err != nil { + return nil, err + } + + statlist := NewConntrackStatList() + + for _, line := range lines { + fields := strings.Fields(line) + if len(fields) == 17 && fields[0] != "entries" { + statlist.Append(NewConntrackStat( + common.HexToUint32(fields[CT_ENTRIES]), + common.HexToUint32(fields[CT_SEARCHED]), + common.HexToUint32(fields[CT_FOUND]), + common.HexToUint32(fields[CT_NEW]), + common.HexToUint32(fields[CT_INVALID]), + common.HexToUint32(fields[CT_IGNORE]), + common.HexToUint32(fields[CT_DELETE]), + common.HexToUint32(fields[CT_DELETE_LIST]), + common.HexToUint32(fields[CT_INSERT]), + common.HexToUint32(fields[CT_INSERT_FAILED]), + common.HexToUint32(fields[CT_DROP]), + common.HexToUint32(fields[CT_EARLY_DROP]), + common.HexToUint32(fields[CT_ICMP_ERROR]), + common.HexToUint32(fields[CT_EXPECT_NEW]), + common.HexToUint32(fields[CT_EXPECT_CREATE]), + common.HexToUint32(fields[CT_EXPECT_DELETE]), + common.HexToUint32(fields[CT_SEARCH_RESTART]), + )) + } + } + + if percpu { + return statlist.Items(), nil + } + return statlist.Summary(), nil +} + // http://students.mimuw.edu.pl/lxr/source/include/net/tcp_states.h var TCPStatuses = map[string]string{ "01": "ESTABLISHED", @@ -328,32 +401,36 @@ func ConnectionsMaxWithContext(ctx context.Context, kind string, max int) ([]Con return ConnectionsPidMax(kind, 0, max) } +// Return a list of network connections opened, omitting `Uids`. +// WithoutUids functions are reliant on implementation details. They may be altered to be an alias for Connections or be +// removed from the API in the future. +func ConnectionsWithoutUids(kind string) ([]ConnectionStat, error) { + return ConnectionsWithoutUidsWithContext(context.Background(), kind) +} + +func ConnectionsWithoutUidsWithContext(ctx context.Context, kind string) ([]ConnectionStat, error) { + return ConnectionsMaxWithoutUidsWithContext(ctx, kind, 0) +} + +func ConnectionsMaxWithoutUidsWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, 0, max) +} + // Return a list of network connections opened by a process. func ConnectionsPid(kind string, pid int32) ([]ConnectionStat, error) { return ConnectionsPidWithContext(context.Background(), kind, pid) } +func ConnectionsPidWithoutUids(kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidWithoutUidsWithContext(context.Background(), kind, pid) +} + func ConnectionsPidWithContext(ctx context.Context, kind string, pid int32) ([]ConnectionStat, error) { - tmap, ok := netConnectionKindMap[kind] - if !ok { - return nil, fmt.Errorf("invalid kind, %s", kind) - } - root := common.HostProc() - var err error - var inodes map[string][]inodeMap - if pid == 0 { - inodes, err = getProcInodesAll(root, 0) - } else { - inodes, err = getProcInodes(root, pid, 0) - if len(inodes) == 0 { - // no connection for the pid - return []ConnectionStat{}, nil - } - } - if err != nil { - return nil, fmt.Errorf("cound not get pid(s), %d: %s", pid, err) - } - return statsFromInodes(root, pid, tmap, inodes) + return ConnectionsPidMaxWithContext(ctx, kind, pid, 0) +} + +func ConnectionsPidWithoutUidsWithContext(ctx context.Context, kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, 0) } // Return up to `max` network connections opened by a process. @@ -361,7 +438,19 @@ func ConnectionsPidMax(kind string, pid int32, max int) ([]ConnectionStat, error return ConnectionsPidMaxWithContext(context.Background(), kind, pid, max) } +func ConnectionsPidMaxWithoutUids(kind string, pid int32, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(context.Background(), kind, pid, max) +} + func ConnectionsPidMaxWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return connectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, max, false) +} + +func ConnectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return connectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, max, true) +} + +func connectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int, skipUids bool) ([]ConnectionStat, error) { tmap, ok := netConnectionKindMap[kind] if !ok { return nil, fmt.Errorf("invalid kind, %s", kind) @@ -379,12 +468,12 @@ func ConnectionsPidMaxWithContext(ctx context.Context, kind string, pid int32, m } } if err != nil { - return nil, fmt.Errorf("cound not get pid(s), %d", pid) + return nil, fmt.Errorf("cound not get pid(s), %d: %s", pid, err) } - return statsFromInodes(root, pid, tmap, inodes) + return statsFromInodes(root, pid, tmap, inodes, skipUids) } -func statsFromInodes(root string, pid int32, tmap []netConnectionKindType, inodes map[string][]inodeMap) ([]ConnectionStat, error) { +func statsFromInodes(root string, pid int32, tmap []netConnectionKindType, inodes map[string][]inodeMap, skipUids bool) ([]ConnectionStat, error) { dupCheckMap := make(map[string]struct{}) var ret []ConnectionStat @@ -431,9 +520,11 @@ func statsFromInodes(root string, pid int32, tmap []netConnectionKindType, inode conn.Pid = c.pid } - // fetch process owner Real, effective, saved set, and filesystem UIDs - proc := process{Pid: conn.Pid} - conn.Uids, _ = proc.getUids() + if !skipUids { + // fetch process owner Real, effective, saved set, and filesystem UIDs + proc := process{Pid: conn.Pid} + conn.Uids, _ = proc.getUids() + } ret = append(ret, conn) dupCheckMap[connKey] = struct{}{} @@ -581,7 +672,7 @@ func getProcInodesAll(root string, max int) (map[string][]inodeMap, error) { t, err := getProcInodes(root, pid, max) if err != nil { // skip if permission error or no longer exists - if os.IsPermission(err) || os.IsNotExist(err) { + if os.IsPermission(err) || os.IsNotExist(err) || err == io.EOF { continue } return ret, err @@ -605,7 +696,7 @@ func decodeAddress(family uint32, src string) (Addr, error) { return Addr{}, fmt.Errorf("does not contain port, %s", src) } addr := t[0] - port, err := strconv.ParseInt("0x"+t[1], 0, 64) + port, err := strconv.ParseUint(t[1], 16, 16) if err != nil { return Addr{}, fmt.Errorf("invalid port, %s", src) } diff --git a/vendor/github.com/shirou/gopsutil/net/net_openbsd.go b/vendor/github.com/shirou/gopsutil/net/net_openbsd.go index 3e74e8f3a..cfed2bee4 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_openbsd.go +++ b/vendor/github.com/shirou/gopsutil/net/net_openbsd.go @@ -4,7 +4,6 @@ package net import ( "context" - "errors" "fmt" "os/exec" "regexp" @@ -41,7 +40,7 @@ func ParseNetstat(output string, mode string, continue } base := 1 - // sometimes Address is ommitted + // sometimes Address is omitted if len(values) < columns { base = 0 } @@ -153,7 +152,15 @@ func FilterCounters() ([]FilterStat, error) { } func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { - return nil, errors.New("NetFilterCounters not implemented for openbsd") + return nil, common.ErrNotImplementedError +} + +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return nil, common.ErrNotImplementedError } // NetProtoCounters returns network statistics for the entire system @@ -165,7 +172,7 @@ func ProtoCounters(protocols []string) ([]ProtoCountersStat, error) { } func ProtoCountersWithContext(ctx context.Context, protocols []string) ([]ProtoCountersStat, error) { - return nil, errors.New("NetProtoCounters not implemented for openbsd") + return nil, common.ErrNotImplementedError } func parseNetstatLine(line string) (ConnectionStat, error) { diff --git a/vendor/github.com/shirou/gopsutil/net/net_unix.go b/vendor/github.com/shirou/gopsutil/net/net_unix.go index 4451b5457..abe25c4ed 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_unix.go +++ b/vendor/github.com/shirou/gopsutil/net/net_unix.go @@ -4,7 +4,11 @@ package net import ( "context" + "fmt" + "net" + "strconv" "strings" + "syscall" "github.com/shirou/gopsutil/internal/common" ) @@ -59,7 +63,7 @@ func ConnectionsPidWithContext(ctx context.Context, kind string, pid int32) ([]C case "udp": args = append(args, "udp") case "udp4": - args = append(args, "6udp") + args = append(args, "4udp") case "udp6": args = append(args, "6udp") case "unix": @@ -86,6 +90,95 @@ func ConnectionsPidWithContext(ctx context.Context, kind string, pid int32) ([]C return ret, nil } +var constMap = map[string]int{ + "unix": syscall.AF_UNIX, + "TCP": syscall.SOCK_STREAM, + "UDP": syscall.SOCK_DGRAM, + "IPv4": syscall.AF_INET, + "IPv6": syscall.AF_INET6, +} + +func parseNetLine(line string) (ConnectionStat, error) { + f := strings.Fields(line) + if len(f) < 8 { + return ConnectionStat{}, fmt.Errorf("wrong line,%s", line) + } + + if len(f) == 8 { + f = append(f, f[7]) + f[7] = "unix" + } + + pid, err := strconv.Atoi(f[1]) + if err != nil { + return ConnectionStat{}, err + } + fd, err := strconv.Atoi(strings.Trim(f[3], "u")) + if err != nil { + return ConnectionStat{}, fmt.Errorf("unknown fd, %s", f[3]) + } + netFamily, ok := constMap[f[4]] + if !ok { + return ConnectionStat{}, fmt.Errorf("unknown family, %s", f[4]) + } + netType, ok := constMap[f[7]] + if !ok { + return ConnectionStat{}, fmt.Errorf("unknown type, %s", f[7]) + } + + var laddr, raddr Addr + if f[7] == "unix" { + laddr.IP = f[8] + } else { + laddr, raddr, err = parseNetAddr(f[8]) + if err != nil { + return ConnectionStat{}, fmt.Errorf("failed to parse netaddr, %s", f[8]) + } + } + + n := ConnectionStat{ + Fd: uint32(fd), + Family: uint32(netFamily), + Type: uint32(netType), + Laddr: laddr, + Raddr: raddr, + Pid: int32(pid), + } + if len(f) == 10 { + n.Status = strings.Trim(f[9], "()") + } + + return n, nil +} + +func parseNetAddr(line string) (laddr Addr, raddr Addr, err error) { + parse := func(l string) (Addr, error) { + host, port, err := net.SplitHostPort(l) + if err != nil { + return Addr{}, fmt.Errorf("wrong addr, %s", l) + } + lport, err := strconv.Atoi(port) + if err != nil { + return Addr{}, err + } + return Addr{IP: host, Port: uint32(lport)}, nil + } + + addrs := strings.Split(line, "->") + if len(addrs) == 0 { + return laddr, raddr, fmt.Errorf("wrong netaddr, %s", line) + } + laddr, err = parse(addrs[0]) + if len(addrs) == 2 { // remote addr exists + raddr, err = parse(addrs[1]) + if err != nil { + return laddr, raddr, err + } + } + + return laddr, raddr, err +} + // Return up to `max` network connections opened by a process. func ConnectionsPidMax(kind string, pid int32, max int) ([]ConnectionStat, error) { return ConnectionsPidMaxWithContext(context.Background(), kind, pid, max) @@ -94,3 +187,38 @@ func ConnectionsPidMax(kind string, pid int32, max int) ([]ConnectionStat, error func ConnectionsPidMaxWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { return []ConnectionStat{}, common.ErrNotImplementedError } + +// Return a list of network connections opened, omitting `Uids`. +// WithoutUids functions are reliant on implementation details. They may be altered to be an alias for Connections or be +// removed from the API in the future. +func ConnectionsWithoutUids(kind string) ([]ConnectionStat, error) { + return ConnectionsWithoutUidsWithContext(context.Background(), kind) +} + +func ConnectionsWithoutUidsWithContext(ctx context.Context, kind string) ([]ConnectionStat, error) { + return ConnectionsMaxWithoutUidsWithContext(ctx, kind, 0) +} + +func ConnectionsMaxWithoutUidsWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, 0, max) +} + +func ConnectionsPidWithoutUids(kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidWithoutUidsWithContext(context.Background(), kind, pid) +} + +func ConnectionsPidWithoutUidsWithContext(ctx context.Context, kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, 0) +} + +func ConnectionsPidMaxWithoutUids(kind string, pid int32, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(context.Background(), kind, pid, max) +} + +func ConnectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return connectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, max) +} + +func connectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return []ConnectionStat{}, common.ErrNotImplementedError +} diff --git a/vendor/github.com/shirou/gopsutil/net/net_windows.go b/vendor/github.com/shirou/gopsutil/net/net_windows.go index 61eb6ec20..bdc928798 100644 --- a/vendor/github.com/shirou/gopsutil/net/net_windows.go +++ b/vendor/github.com/shirou/gopsutil/net/net_windows.go @@ -4,7 +4,6 @@ package net import ( "context" - "errors" "fmt" "net" "os" @@ -19,6 +18,7 @@ var ( modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll") procGetExtendedTCPTable = modiphlpapi.NewProc("GetExtendedTcpTable") procGetExtendedUDPTable = modiphlpapi.NewProc("GetExtendedUdpTable") + procGetIfEntry2 = modiphlpapi.NewProc("GetIfEntry2") ) const ( @@ -73,6 +73,65 @@ var netConnectionKindMap = map[string][]netConnectionKindType{ "inet6": {kindTCP6, kindUDP6}, } +// https://github.com/microsoft/ethr/blob/aecdaf923970e5a9b4c461b4e2e3963d781ad2cc/plt_windows.go#L114-L170 +type guid struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +const ( + maxStringSize = 256 + maxPhysAddressLength = 32 + pad0for64_4for32 = 0 +) + +type mibIfRow2 struct { + InterfaceLuid uint64 + InterfaceIndex uint32 + InterfaceGuid guid + Alias [maxStringSize + 1]uint16 + Description [maxStringSize + 1]uint16 + PhysicalAddressLength uint32 + PhysicalAddress [maxPhysAddressLength]uint8 + PermanentPhysicalAddress [maxPhysAddressLength]uint8 + Mtu uint32 + Type uint32 + TunnelType uint32 + MediaType uint32 + PhysicalMediumType uint32 + AccessType uint32 + DirectionType uint32 + InterfaceAndOperStatusFlags uint32 + OperStatus uint32 + AdminStatus uint32 + MediaConnectState uint32 + NetworkGuid guid + ConnectionType uint32 + padding1 [pad0for64_4for32]byte + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + InOctets uint64 + InUcastPkts uint64 + InNUcastPkts uint64 + InDiscards uint64 + InErrors uint64 + InUnknownProtos uint64 + InUcastOctets uint64 + InMulticastOctets uint64 + InBroadcastOctets uint64 + OutOctets uint64 + OutUcastPkts uint64 + OutNUcastPkts uint64 + OutDiscards uint64 + OutErrors uint64 + OutUcastOctets uint64 + OutMulticastOctets uint64 + OutBroadcastOctets uint64 + OutQLen uint64 +} + func IOCounters(pernic bool) ([]IOCountersStat, error) { return IOCountersWithContext(context.Background(), pernic) } @@ -82,34 +141,59 @@ func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat, if err != nil { return nil, err } - var ret []IOCountersStat + var counters []IOCountersStat - for _, ifi := range ifs { - c := IOCountersStat{ - Name: ifi.Name, + err = procGetIfEntry2.Find() + if err == nil { // Vista+, uint64 values (issue#693) + for _, ifi := range ifs { + c := IOCountersStat{ + Name: ifi.Name, + } + + row := mibIfRow2{InterfaceIndex: uint32(ifi.Index)} + ret, _, err := procGetIfEntry2.Call(uintptr(unsafe.Pointer(&row))) + if ret != 0 { + return nil, os.NewSyscallError("GetIfEntry2", err) + } + c.BytesSent = uint64(row.OutOctets) + c.BytesRecv = uint64(row.InOctets) + c.PacketsSent = uint64(row.OutUcastPkts) + c.PacketsRecv = uint64(row.InUcastPkts) + c.Errin = uint64(row.InErrors) + c.Errout = uint64(row.OutErrors) + c.Dropin = uint64(row.InDiscards) + c.Dropout = uint64(row.OutDiscards) + + counters = append(counters, c) } + } else { // WinXP fallback, uint32 values + for _, ifi := range ifs { + c := IOCountersStat{ + Name: ifi.Name, + } - row := windows.MibIfRow{Index: uint32(ifi.Index)} - e := windows.GetIfEntry(&row) - if e != nil { - return nil, os.NewSyscallError("GetIfEntry", e) + row := windows.MibIfRow{Index: uint32(ifi.Index)} + err = windows.GetIfEntry(&row) + if err != nil { + return nil, os.NewSyscallError("GetIfEntry", err) + } + c.BytesSent = uint64(row.OutOctets) + c.BytesRecv = uint64(row.InOctets) + c.PacketsSent = uint64(row.OutUcastPkts) + c.PacketsRecv = uint64(row.InUcastPkts) + c.Errin = uint64(row.InErrors) + c.Errout = uint64(row.OutErrors) + c.Dropin = uint64(row.InDiscards) + c.Dropout = uint64(row.OutDiscards) + + counters = append(counters, c) } - c.BytesSent = uint64(row.OutOctets) - c.BytesRecv = uint64(row.InOctets) - c.PacketsSent = uint64(row.OutUcastPkts) - c.PacketsRecv = uint64(row.InUcastPkts) - c.Errin = uint64(row.InErrors) - c.Errout = uint64(row.OutErrors) - c.Dropin = uint64(row.InDiscards) - c.Dropout = uint64(row.OutDiscards) - - ret = append(ret, c) } - if pernic == false { - return getIOCountersAll(ret) + if !pernic { + return getIOCountersAll(counters) } - return ret, nil + return counters, nil } // NetIOCountersByFile is an method which is added just a compatibility for linux. @@ -198,14 +282,58 @@ func ConnectionsMaxWithContext(ctx context.Context, kind string, max int) ([]Con return []ConnectionStat{}, common.ErrNotImplementedError } +// Return a list of network connections opened, omitting `Uids`. +// WithoutUids functions are reliant on implementation details. They may be altered to be an alias for Connections or be +// removed from the API in the future. +func ConnectionsWithoutUids(kind string) ([]ConnectionStat, error) { + return ConnectionsWithoutUidsWithContext(context.Background(), kind) +} + +func ConnectionsWithoutUidsWithContext(ctx context.Context, kind string) ([]ConnectionStat, error) { + return ConnectionsMaxWithoutUidsWithContext(ctx, kind, 0) +} + +func ConnectionsMaxWithoutUidsWithContext(ctx context.Context, kind string, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, 0, max) +} + +func ConnectionsPidWithoutUids(kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidWithoutUidsWithContext(context.Background(), kind, pid) +} + +func ConnectionsPidWithoutUidsWithContext(ctx context.Context, kind string, pid int32) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, 0) +} + +func ConnectionsPidMaxWithoutUids(kind string, pid int32, max int) ([]ConnectionStat, error) { + return ConnectionsPidMaxWithoutUidsWithContext(context.Background(), kind, pid, max) +} + +func ConnectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return connectionsPidMaxWithoutUidsWithContext(ctx, kind, pid, max) +} + +func connectionsPidMaxWithoutUidsWithContext(ctx context.Context, kind string, pid int32, max int) ([]ConnectionStat, error) { + return []ConnectionStat{}, common.ErrNotImplementedError +} + func FilterCounters() ([]FilterStat, error) { return FilterCountersWithContext(context.Background()) } func FilterCountersWithContext(ctx context.Context) ([]FilterStat, error) { - return nil, errors.New("NetFilterCounters not implemented for windows") + return nil, common.ErrNotImplementedError } +func ConntrackStats(percpu bool) ([]ConntrackStat, error) { + return ConntrackStatsWithContext(context.Background(), percpu) +} + +func ConntrackStatsWithContext(ctx context.Context, percpu bool) ([]ConntrackStat, error) { + return nil, common.ErrNotImplementedError +} + + // NetProtoCounters returns network statistics for the entire system // If protocols is empty then all protocols are returned, otherwise // just the protocols in the list are returned. @@ -215,7 +343,7 @@ func ProtoCounters(protocols []string) ([]ProtoCountersStat, error) { } func ProtoCountersWithContext(ctx context.Context, protocols []string) ([]ProtoCountersStat, error) { - return nil, errors.New("NetProtoCounters not implemented for windows") + return nil, common.ErrNotImplementedError } func getTableUintptr(family uint32, buf []byte) uintptr { @@ -419,7 +547,7 @@ func getUDPConnections(family uint32) ([]ConnectionStat, error) { mibs := (*mibUDPRowOwnerPid)(unsafe.Pointer(&buf[index])) ns := mibs.convertToConnectionStat() stats = append(stats, ns) - case kindUDP4.family: + case kindUDP6.family: mibs := (*mibUDP6RowOwnerPid)(unsafe.Pointer(&buf[index])) ns := mibs.convertToConnectionStat() stats = append(stats, ns) diff --git a/vendor/github.com/shirou/gopsutil/process/process.go b/vendor/github.com/shirou/gopsutil/process/process.go index 036ad917d..a50b4dc69 100644 --- a/vendor/github.com/shirou/gopsutil/process/process.go +++ b/vendor/github.com/shirou/gopsutil/process/process.go @@ -5,16 +5,21 @@ import ( "encoding/json" "errors" "runtime" + "sort" + "sync" + "syscall" "time" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/internal/common" "github.com/shirou/gopsutil/mem" + "github.com/shirou/gopsutil/net" ) var ( - invoke common.Invoker = common.Invoke{} - ErrorNoChildren = errors.New("process does not have children") + invoke common.Invoker = common.Invoke{} + ErrorNoChildren = errors.New("process does not have children") + ErrorProcessNotRunning = errors.New("process does not exist") ) type Process struct { @@ -22,12 +27,15 @@ type Process struct { name string status string parent int32 + parentMutex *sync.RWMutex // for windows ppid cache numCtxSwitches *NumCtxSwitchesStat uids []int32 gids []int32 + groups []int32 numThreads int32 memInfo *MemoryInfoStat sigInfo *SignalInfoStat + createTime int64 lastCPUTimes *cpu.TimesStat lastCPUTime time.Time @@ -43,6 +51,7 @@ type OpenFilesStat struct { type MemoryInfoStat struct { RSS uint64 `json:"rss"` // bytes VMS uint64 `json:"vms"` // bytes + HWM uint64 `json:"hwm"` // bytes Data uint64 `json:"data"` // bytes Stack uint64 `json:"stack"` // bytes Locked uint64 `json:"locked"` // bytes @@ -76,6 +85,13 @@ type NumCtxSwitchesStat struct { Involuntary int64 `json:"involuntary"` } +type PageFaultsStat struct { + MinorFaults uint64 `json:"minorFaults"` + MajorFaults uint64 `json:"majorFaults"` + ChildMinorFaults uint64 `json:"childMinorFaults"` + ChildMajorFaults uint64 `json:"childMajorFaults"` +} + // Resource limit constants are from /usr/include/x86_64-linux-gnu/bits/resource.h // from libc6-dev package in Ubuntu 16.10 const ( @@ -127,23 +143,50 @@ func (p NumCtxSwitchesStat) String() string { return string(s) } -func PidExists(pid int32) (bool, error) { - return PidExistsWithContext(context.Background(), pid) +// Pids returns a slice of process ID list which are running now. +func Pids() ([]int32, error) { + return PidsWithContext(context.Background()) } -func PidExistsWithContext(ctx context.Context, pid int32) (bool, error) { - pids, err := Pids() +func PidsWithContext(ctx context.Context) ([]int32, error) { + pids, err := pidsWithContext(ctx) + sort.Slice(pids, func(i, j int) bool { return pids[i] < pids[j] }) + return pids, err +} + +// Processes returns a slice of pointers to Process structs for all +// currently running processes. +func Processes() ([]*Process, error) { + return ProcessesWithContext(context.Background()) +} + +// NewProcess creates a new Process instance, it only stores the pid and +// checks that the process exists. Other method on Process can be used +// to get more information about the process. An error will be returned +// if the process does not exist. +func NewProcess(pid int32) (*Process, error) { + return NewProcessWithContext(context.Background(), pid) +} + +func NewProcessWithContext(ctx context.Context, pid int32) (*Process, error) { + p := &Process{ + Pid: pid, + parentMutex: new(sync.RWMutex), + } + + exists, err := PidExistsWithContext(ctx, pid) if err != nil { - return false, err + return p, err } - - for _, i := range pids { - if i == pid { - return true, err - } + if !exists { + return p, ErrorProcessNotRunning } + p.CreateTimeWithContext(ctx) + return p, nil +} - return false, err +func PidExists(pid int32) (bool, error) { + return PidExistsWithContext(context.Background(), pid) } // Background returns true if the process is in background, false otherwise. @@ -166,7 +209,7 @@ func (p *Process) Percent(interval time.Duration) (float64, error) { } func (p *Process) PercentWithContext(ctx context.Context, interval time.Duration) (float64, error) { - cpuTimes, err := p.Times() + cpuTimes, err := p.TimesWithContext(ctx) if err != nil { return 0, err } @@ -175,8 +218,10 @@ func (p *Process) PercentWithContext(ctx context.Context, interval time.Duration if interval > 0 { p.lastCPUTimes = cpuTimes p.lastCPUTime = now - time.Sleep(interval) - cpuTimes, err = p.Times() + if err := common.Sleep(ctx, interval); err != nil { + return 0, err + } + cpuTimes, err = p.TimesWithContext(ctx) now = time.Now() if err != nil { return 0, err @@ -198,6 +243,41 @@ func (p *Process) PercentWithContext(ctx context.Context, interval time.Duration return ret, nil } +// IsRunning returns whether the process is still running or not. +func (p *Process) IsRunning() (bool, error) { + return p.IsRunningWithContext(context.Background()) +} + +func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { + createTime, err := p.CreateTimeWithContext(ctx) + if err != nil { + return false, err + } + p2, err := NewProcessWithContext(ctx, p.Pid) + if err == ErrorProcessNotRunning { + return false, nil + } + createTime2, err := p2.CreateTimeWithContext(ctx) + if err != nil { + return false, err + } + return createTime == createTime2, nil +} + +// CreateTime returns created time of the process in milliseconds since the epoch, in UTC. +func (p *Process) CreateTime() (int64, error) { + return p.CreateTimeWithContext(context.Background()) +} + +func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { + if p.createTime != 0 { + return p.createTime, nil + } + createTime, err := p.createTimeWithContext(ctx) + p.createTime = createTime + return p.createTime, err +} + func calculatePercent(t1, t2 *cpu.TimesStat, delta float64, numcpu int) float64 { if delta == 0 { return 0 @@ -213,13 +293,13 @@ func (p *Process) MemoryPercent() (float32, error) { } func (p *Process) MemoryPercentWithContext(ctx context.Context) (float32, error) { - machineMemory, err := mem.VirtualMemory() + machineMemory, err := mem.VirtualMemoryWithContext(ctx) if err != nil { return 0, err } total := machineMemory.Total - processMemory, err := p.MemoryInfo() + processMemory, err := p.MemoryInfoWithContext(ctx) if err != nil { return 0, err } @@ -234,12 +314,12 @@ func (p *Process) CPUPercent() (float64, error) { } func (p *Process) CPUPercentWithContext(ctx context.Context) (float64, error) { - crt_time, err := p.CreateTime() + crt_time, err := p.createTimeWithContext(ctx) if err != nil { return 0, err } - cput, err := p.Times() + cput, err := p.TimesWithContext(ctx) if err != nil { return 0, err } @@ -252,3 +332,213 @@ func (p *Process) CPUPercentWithContext(ctx context.Context) (float64, error) { return 100 * cput.Total() / totalTime, nil } + +// Groups returns all group IDs(include supplementary groups) of the process as a slice of the int +func (p *Process) Groups() ([]int32, error) { + return p.GroupsWithContext(context.Background()) +} + +// Ppid returns Parent Process ID of the process. +func (p *Process) Ppid() (int32, error) { + return p.PpidWithContext(context.Background()) +} + +// Name returns name of the process. +func (p *Process) Name() (string, error) { + return p.NameWithContext(context.Background()) +} + +// Exe returns executable path of the process. +func (p *Process) Exe() (string, error) { + return p.ExeWithContext(context.Background()) +} + +// Cmdline returns the command line arguments of the process as a string with +// each argument separated by 0x20 ascii character. +func (p *Process) Cmdline() (string, error) { + return p.CmdlineWithContext(context.Background()) +} + +// CmdlineSlice returns the command line arguments of the process as a slice with each +// element being an argument. +func (p *Process) CmdlineSlice() ([]string, error) { + return p.CmdlineSliceWithContext(context.Background()) +} + +// Cwd returns current working directory of the process. +func (p *Process) Cwd() (string, error) { + return p.CwdWithContext(context.Background()) +} + +// Parent returns parent Process of the process. +func (p *Process) Parent() (*Process, error) { + return p.ParentWithContext(context.Background()) +} + +// Status returns the process status. +// Return value could be one of these. +// R: Running S: Sleep T: Stop I: Idle +// Z: Zombie W: Wait L: Lock +// The character is same within all supported platforms. +func (p *Process) Status() (string, error) { + return p.StatusWithContext(context.Background()) +} + +// Foreground returns true if the process is in foreground, false otherwise. +func (p *Process) Foreground() (bool, error) { + return p.ForegroundWithContext(context.Background()) +} + +// Uids returns user ids of the process as a slice of the int +func (p *Process) Uids() ([]int32, error) { + return p.UidsWithContext(context.Background()) +} + +// Gids returns group ids of the process as a slice of the int +func (p *Process) Gids() ([]int32, error) { + return p.GidsWithContext(context.Background()) +} + +// Terminal returns a terminal which is associated with the process. +func (p *Process) Terminal() (string, error) { + return p.TerminalWithContext(context.Background()) +} + +// Nice returns a nice value (priority). +func (p *Process) Nice() (int32, error) { + return p.NiceWithContext(context.Background()) +} + +// IOnice returns process I/O nice value (priority). +func (p *Process) IOnice() (int32, error) { + return p.IOniceWithContext(context.Background()) +} + +// Rlimit returns Resource Limits. +func (p *Process) Rlimit() ([]RlimitStat, error) { + return p.RlimitWithContext(context.Background()) +} + +// RlimitUsage returns Resource Limits. +// If gatherUsed is true, the currently used value will be gathered and added +// to the resulting RlimitStat. +func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { + return p.RlimitUsageWithContext(context.Background(), gatherUsed) +} + +// IOCounters returns IO Counters. +func (p *Process) IOCounters() (*IOCountersStat, error) { + return p.IOCountersWithContext(context.Background()) +} + +// NumCtxSwitches returns the number of the context switches of the process. +func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { + return p.NumCtxSwitchesWithContext(context.Background()) +} + +// NumFDs returns the number of File Descriptors used by the process. +func (p *Process) NumFDs() (int32, error) { + return p.NumFDsWithContext(context.Background()) +} + +// NumThreads returns the number of threads used by the process. +func (p *Process) NumThreads() (int32, error) { + return p.NumThreadsWithContext(context.Background()) +} + +func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { + return p.ThreadsWithContext(context.Background()) +} + +// Times returns CPU times of the process. +func (p *Process) Times() (*cpu.TimesStat, error) { + return p.TimesWithContext(context.Background()) +} + +// CPUAffinity returns CPU affinity of the process. +func (p *Process) CPUAffinity() ([]int32, error) { + return p.CPUAffinityWithContext(context.Background()) +} + +// MemoryInfo returns generic process memory information, +// such as RSS and VMS. +func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { + return p.MemoryInfoWithContext(context.Background()) +} + +// MemoryInfoEx returns platform-specific process memory information. +func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { + return p.MemoryInfoExWithContext(context.Background()) +} + +// PageFaultsInfo returns the process's page fault counters. +func (p *Process) PageFaults() (*PageFaultsStat, error) { + return p.PageFaultsWithContext(context.Background()) +} + +// Children returns a slice of Process of the process. +func (p *Process) Children() ([]*Process, error) { + return p.ChildrenWithContext(context.Background()) +} + +// OpenFiles returns a slice of OpenFilesStat opend by the process. +// OpenFilesStat includes a file path and file descriptor. +func (p *Process) OpenFiles() ([]OpenFilesStat, error) { + return p.OpenFilesWithContext(context.Background()) +} + +// Connections returns a slice of net.ConnectionStat used by the process. +// This returns all kind of the connection. This means TCP, UDP or UNIX. +func (p *Process) Connections() ([]net.ConnectionStat, error) { + return p.ConnectionsWithContext(context.Background()) +} + +// Connections returns a slice of net.ConnectionStat used by the process at most `max`. +func (p *Process) ConnectionsMax(max int) ([]net.ConnectionStat, error) { + return p.ConnectionsMaxWithContext(context.Background(), max) +} + +// NetIOCounters returns NetIOCounters of the process. +func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { + return p.NetIOCountersWithContext(context.Background(), pernic) +} + +// MemoryMaps get memory maps from /proc/(pid)/smaps +func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { + return p.MemoryMapsWithContext(context.Background(), grouped) +} + +// Tgid returns thread group id of the process. +func (p *Process) Tgid() (int32, error) { + return p.TgidWithContext(context.Background()) +} + +// SendSignal sends a unix.Signal to the process. +func (p *Process) SendSignal(sig syscall.Signal) error { + return p.SendSignalWithContext(context.Background(), sig) +} + +// Suspend sends SIGSTOP to the process. +func (p *Process) Suspend() error { + return p.SuspendWithContext(context.Background()) +} + +// Resume sends SIGCONT to the process. +func (p *Process) Resume() error { + return p.ResumeWithContext(context.Background()) +} + +// Terminate sends SIGTERM to the process. +func (p *Process) Terminate() error { + return p.TerminateWithContext(context.Background()) +} + +// Kill sends SIGKILL to the process. +func (p *Process) Kill() error { + return p.KillWithContext(context.Background()) +} + +// Username returns a username of the process. +func (p *Process) Username() (string, error) { + return p.UsernameWithContext(context.Background()) +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_bsd.go b/vendor/github.com/shirou/gopsutil/process/process_bsd.go new file mode 100644 index 000000000..ffb748164 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/process/process_bsd.go @@ -0,0 +1,80 @@ +// +build darwin freebsd openbsd + +package process + +import ( + "bytes" + "context" + "encoding/binary" + + "github.com/shirou/gopsutil/cpu" + "github.com/shirou/gopsutil/internal/common" + "github.com/shirou/gopsutil/net" +) + +type MemoryInfoExStat struct{} + +type MemoryMapsStat struct{} + +func (p *Process) TgidWithContext(ctx context.Context) (int32, error) { + return 0, common.ErrNotImplementedError +} + +func (p *Process) CwdWithContext(ctx context.Context) (string, error) { + return "", common.ErrNotImplementedError +} + +func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { + return 0, common.ErrNotImplementedError +} + +func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { + return 0, common.ErrNotImplementedError +} + +func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) PageFaultsWithContext(ctx context.Context) (*PageFaultsStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { + return nil, common.ErrNotImplementedError +} + +func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { + return nil, common.ErrNotImplementedError +} + +func parseKinfoProc(buf []byte) (KinfoProc, error) { + var k KinfoProc + br := bytes.NewReader(buf) + err := common.Read(br, binary.LittleEndian, &k) + return k, err +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_darwin.go b/vendor/github.com/shirou/gopsutil/process/process_darwin.go index ca0f18763..8b8b58a69 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_darwin.go +++ b/vendor/github.com/shirou/gopsutil/process/process_darwin.go @@ -3,15 +3,13 @@ package process import ( - "bytes" "context" - "encoding/binary" "fmt" "os/exec" + "path/filepath" "strconv" "strings" "time" - "unsafe" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/internal/common" @@ -37,18 +35,7 @@ type _Ctype_struct___0 struct { Pad uint64 } -// MemoryInfoExStat is different between OSes -type MemoryInfoExStat struct { -} - -type MemoryMapsStat struct { -} - -func Pids() ([]int32, error) { - return PidsWithContext(context.Background()) -} - -func PidsWithContext(ctx context.Context) ([]int32, error) { +func pidsWithContext(ctx context.Context) ([]int32, error) { var ret []int32 pids, err := callPsWithContext(ctx, "pid", 0, false) @@ -67,10 +54,6 @@ func PidsWithContext(ctx context.Context) ([]int32, error) { return ret, nil } -func (p *Process) Ppid() (int32, error) { - return p.PpidWithContext(context.Background()) -} - func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { r, err := callPsWithContext(ctx, "ppid", p.Pid, false) if err != nil { @@ -84,60 +67,30 @@ func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { return int32(v), err } -func (p *Process) Name() (string, error) { - return p.NameWithContext(context.Background()) -} func (p *Process) NameWithContext(ctx context.Context) (string, error) { k, err := p.getKProc() if err != nil { return "", err } + name := common.IntToString(k.Proc.P_comm[:]) - return common.IntToString(k.Proc.P_comm[:]), nil -} -func (p *Process) Tgid() (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) Exe() (string, error) { - return p.ExeWithContext(context.Background()) -} - -func (p *Process) ExeWithContext(ctx context.Context) (string, error) { - lsof_bin, err := exec.LookPath("lsof") - if err != nil { - return "", err + if len(name) >= 15 { + cmdlineSlice, err := p.CmdlineSliceWithContext(ctx) + if err != nil { + return "", err + } + if len(cmdlineSlice) > 0 { + extendedName := filepath.Base(cmdlineSlice[0]) + if strings.HasPrefix(extendedName, p.name) { + name = extendedName + } else { + name = cmdlineSlice[0] + } + } } - awk_bin, err := exec.LookPath("awk") - if err != nil { - return "", err - } - - sed_bin, err := exec.LookPath("sed") - if err != nil { - return "", err - } - - lsof := exec.CommandContext(ctx, lsof_bin, "-p", strconv.Itoa(int(p.Pid)), "-Fpfn") - awk := exec.CommandContext(ctx, awk_bin, "NR==5{print}") - sed := exec.CommandContext(ctx, sed_bin, "s/n\\//\\//") - - output, _, err := common.Pipeline(lsof, awk, sed) - - if err != nil { - return "", err - } - - ret := strings.TrimSpace(string(output)) - - return ret, nil -} - -// Cmdline returns the command line arguments of the process as a string with -// each argument separated by 0x20 ascii character. -func (p *Process) Cmdline() (string, error) { - return p.CmdlineWithContext(context.Background()) + return name, nil } func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { @@ -148,15 +101,11 @@ func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { return strings.Join(r[0], " "), err } -// CmdlineSlice returns the command line arguments of the process as a slice with each +// CmdlineSliceWithContext returns the command line arguments of the process as a slice with each // element being an argument. Because of current deficiencies in the way that the command // line arguments are found, single arguments that have spaces in the will actually be // reported as two separate items. In order to do something better CGO would be needed // to use the native darwin functions. -func (p *Process) CmdlineSlice() ([]string, error) { - return p.CmdlineSliceWithContext(context.Background()) -} - func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) { r, err := callPsWithContext(ctx, "command", p.Pid, false) if err != nil { @@ -164,11 +113,8 @@ func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) } return r[0], err } -func (p *Process) CreateTime() (int64, error) { - return p.CreateTimeWithContext(context.Background()) -} -func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { +func (p *Process) createTimeWithContext(ctx context.Context) (int64, error) { r, err := callPsWithContext(ctx, "etime", p.Pid, false) if err != nil { return 0, err @@ -198,38 +144,23 @@ func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { start := time.Now().Add(-elapsed) return start.Unix() * 1000, nil } -func (p *Process) Cwd() (string, error) { - return p.CwdWithContext(context.Background()) -} - -func (p *Process) CwdWithContext(ctx context.Context) (string, error) { - return "", common.ErrNotImplementedError -} -func (p *Process) Parent() (*Process, error) { - return p.ParentWithContext(context.Background()) -} func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { - rr, err := common.CallLsofWithContext(ctx, invoke, p.Pid, "-FR") + out, err := common.CallLsofWithContext(ctx, invoke, p.Pid, "-FR") if err != nil { return nil, err } - for _, r := range rr { - if strings.HasPrefix(r, "p") { // skip if process - continue + for _, line := range out { + if len(line) >= 1 && line[0] == 'R' { + v, err := strconv.Atoi(line[1:]) + if err != nil { + return nil, err + } + return NewProcessWithContext(ctx, int32(v)) } - l := string(r) - v, err := strconv.Atoi(strings.Replace(l, "R", "", 1)) - if err != nil { - return nil, err - } - return NewProcess(int32(v)) } return nil, fmt.Errorf("could not find parent line") } -func (p *Process) Status() (string, error) { - return p.StatusWithContext(context.Background()) -} func (p *Process) StatusWithContext(ctx context.Context) (string, error) { r, err := callPsWithContext(ctx, "state", p.Pid, false) @@ -237,11 +168,7 @@ func (p *Process) StatusWithContext(ctx context.Context) (string, error) { return "", err } - return r[0][0], err -} - -func (p *Process) Foreground() (bool, error) { - return p.ForegroundWithContext(context.Background()) + return r[0][0][0:1], err } func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { @@ -258,10 +185,6 @@ func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { return strings.IndexByte(string(out), '+') != -1, nil } -func (p *Process) Uids() ([]int32, error) { - return p.UidsWithContext(context.Background()) -} - func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { k, err := p.getKProc() if err != nil { @@ -273,9 +196,6 @@ func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { return []int32{userEffectiveUID}, nil } -func (p *Process) Gids() ([]int32, error) { - return p.GidsWithContext(context.Background()) -} func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { k, err := p.getKProc() @@ -288,8 +208,20 @@ func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { return gids, nil } -func (p *Process) Terminal() (string, error) { - return p.TerminalWithContext(context.Background()) + +func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error) { + return nil, common.ErrNotImplementedError + // k, err := p.getKProc() + // if err != nil { + // return nil, err + // } + + // groups := make([]int32, k.Eproc.Ucred.Ngroups) + // for i := int16(0); i < k.Eproc.Ucred.Ngroups; i++ { + // groups[i] = int32(k.Eproc.Ucred.Groups[i]) + // } + + // return groups, nil } func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { @@ -309,9 +241,6 @@ func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { return termmap[ttyNr], nil */ } -func (p *Process) Nice() (int32, error) { - return p.NiceWithContext(context.Background()) -} func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { k, err := p.getKProc() @@ -320,53 +249,10 @@ func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { } return int32(k.Proc.P_nice), nil } -func (p *Process) IOnice() (int32, error) { - return p.IOniceWithContext(context.Background()) -} - -func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) Rlimit() ([]RlimitStat, error) { - return p.RlimitWithContext(context.Background()) -} - -func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { - var rlimit []RlimitStat - return rlimit, common.ErrNotImplementedError -} -func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { - return p.RlimitUsageWithContext(context.Background(), gatherUsed) -} - -func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { - var rlimit []RlimitStat - return rlimit, common.ErrNotImplementedError -} -func (p *Process) IOCounters() (*IOCountersStat, error) { - return p.IOCountersWithContext(context.Background()) -} func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { - return p.NumCtxSwitchesWithContext(context.Background()) -} - -func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { - return nil, common.ErrNotImplementedError -} -func (p *Process) NumFDs() (int32, error) { - return p.NumFDsWithContext(context.Background()) -} - -func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) NumThreads() (int32, error) { - return p.NumThreadsWithContext(context.Background()) -} func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { r, err := callPsWithContext(ctx, "utime,stime", p.Pid, true) @@ -375,26 +261,38 @@ func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { } return int32(len(r)), nil } -func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { - return p.ThreadsWithContext(context.Background()) -} - -func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { - ret := make(map[int32]*cpu.TimesStat) - return ret, common.ErrNotImplementedError -} func convertCPUTimes(s string) (ret float64, err error) { var t int var _tmp string if strings.Contains(s, ":") { _t := strings.Split(s, ":") - hour, err := strconv.Atoi(_t[0]) - if err != nil { - return ret, err + switch len(_t) { + case 3: + hour, err := strconv.Atoi(_t[0]) + if err != nil { + return ret, err + } + t += hour * 60 * 60 * ClockTicks + + mins, err := strconv.Atoi(_t[1]) + if err != nil { + return ret, err + } + t += mins * 60 * ClockTicks + _tmp = _t[2] + case 2: + mins, err := strconv.Atoi(_t[0]) + if err != nil { + return ret, err + } + t += mins * 60 * ClockTicks + _tmp = _t[1] + case 1, 0: + _tmp = s + default: + return ret, fmt.Errorf("wrong cpu time string") } - t += hour * 60 * 100 - _tmp = _t[1] } else { _tmp = s } @@ -404,14 +302,11 @@ func convertCPUTimes(s string) (ret float64, err error) { return ret, err } h, err := strconv.Atoi(_t[0]) - t += h * 100 + t += h * ClockTicks h, err = strconv.Atoi(_t[1]) t += h return float64(t) / ClockTicks, nil } -func (p *Process) Times() (*cpu.TimesStat, error) { - return p.TimesWithContext(context.Background()) -} func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) { r, err := callPsWithContext(ctx, "utime,stime", p.Pid, false) @@ -436,16 +331,6 @@ func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) } return ret, nil } -func (p *Process) CPUAffinity() ([]int32, error) { - return p.CPUAffinityWithContext(context.Background()) -} - -func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { - return nil, common.ErrNotImplementedError -} -func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { - return p.MemoryInfoWithContext(context.Background()) -} func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error) { r, err := callPsWithContext(ctx, "rss,vsize,pagein", p.Pid, false) @@ -473,17 +358,6 @@ func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, e return ret, nil } -func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { - return p.MemoryInfoExWithContext(context.Background()) -} - -func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Children() ([]*Process, error) { - return p.ChildrenWithContext(context.Background()) -} func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { pids, err := common.CallPgrepWithContext(ctx, invoke, p.Pid) @@ -492,7 +366,7 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { } ret := make([]*Process, 0, len(pids)) for _, pid := range pids { - np, err := NewProcess(pid) + np, err := NewProcessWithContext(ctx, pid) if err != nil { return nil, err } @@ -501,48 +375,12 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { return ret, nil } -func (p *Process) OpenFiles() ([]OpenFilesStat, error) { - return p.OpenFilesWithContext(context.Background()) -} - -func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Connections() ([]net.ConnectionStat, error) { - return p.ConnectionsWithContext(context.Background()) -} - func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error) { - return net.ConnectionsPid("all", p.Pid) + return net.ConnectionsPidWithContext(ctx, "all", p.Pid) } -func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { - return p.NetIOCountersWithContext(context.Background(), pernic) -} - -func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) IsRunning() (bool, error) { - return p.IsRunningWithContext(context.Background()) -} - -func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { - return true, common.ErrNotImplementedError -} -func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { - return p.MemoryMapsWithContext(context.Background(), grouped) -} - -func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { - var ret []MemoryMapsStat - return &ret, common.ErrNotImplementedError -} - -func Processes() ([]*Process, error) { - return ProcessesWithContext(context.Background()) +func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error) { + return net.ConnectionsPidMaxWithContext(ctx, "all", p.Pid, max) } func ProcessesWithContext(ctx context.Context) ([]*Process, error) { @@ -554,7 +392,7 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { } for _, pid := range pids { - p, err := NewProcess(pid) + p, err := NewProcessWithContext(ctx, pid) if err != nil { continue } @@ -564,39 +402,12 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { return out, nil } -func parseKinfoProc(buf []byte) (KinfoProc, error) { - var k KinfoProc - br := bytes.NewReader(buf) - - err := common.Read(br, binary.LittleEndian, &k) - if err != nil { - return k, err - } - - return k, nil -} - // Returns a proc as defined here: // http://unix.superglobalmegacorp.com/Net2/newsrc/sys/kinfo_proc.h.html func (p *Process) getKProc() (*KinfoProc, error) { - return p.getKProcWithContext(context.Background()) -} - -func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { - mib := []int32{CTLKern, KernProc, KernProcPID, p.Pid} - procK := KinfoProc{} - length := uint64(unsafe.Sizeof(procK)) - buf := make([]byte, length) - _, _, syserr := unix.Syscall6( - unix.SYS___SYSCTL, - uintptr(unsafe.Pointer(&mib[0])), - uintptr(len(mib)), - uintptr(unsafe.Pointer(&buf[0])), - uintptr(unsafe.Pointer(&length)), - 0, - 0) - if syserr != 0 { - return nil, syserr + buf, err := unix.SysctlRaw("kern.proc.pid", int(p.Pid)) + if err != nil { + return nil, err } k, err := parseKinfoProc(buf) if err != nil { @@ -606,12 +417,6 @@ func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { return &k, nil } -func NewProcess(pid int32) (*Process, error) { - p := &Process{Pid: pid} - - return p, nil -} - // call ps command. // Return value deletes Header line(you must not input wrong arg). // And splited by Space. Caller have responsibility to manage. diff --git a/vendor/github.com/shirou/gopsutil/process/process_darwin_arm64.go b/vendor/github.com/shirou/gopsutil/process/process_darwin_arm64.go new file mode 100644 index 000000000..c0063e4e1 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/process/process_darwin_arm64.go @@ -0,0 +1,205 @@ +// +build darwin +// +build arm64 +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs process/types_darwin.go + +package process + +const ( + sizeofPtr = 0x8 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type UGid_t uint32 + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Eproc struct { + Paddr *Proc + Sess *Session + Pcred Upcred + Ucred Uucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess *Session + Wmesg [8]int8 + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]int8 + Spare [4]int32 + Pad_cgo_0 [4]byte +} + +type Proc struct{} + +type Session struct{} + +type ucred struct{} + +type Uucred struct { + Ref int32 + UID uint32 + Ngroups int16 + Groups [16]uint32 +} + +type Upcred struct { + Pc_lock [72]int8 + Pc_ucred *ucred + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + Pad_cgo_0 [4]byte +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Sigacts struct{} + +type ExternProc struct { + P_un [16]byte + P_vmspace *Vmspace + P_sigacts *Sigacts + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep *Vnode + P_siglist int32 + P_textvp *Vnode + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]int8 + P_pgrp *Pgrp + P_addr *UserStruct + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type Vnode struct{} + +type Pgrp struct{} + +type UserStruct struct{} + +type Au_session struct { + Aia_p *AuditinfoAddr + Mask AuMask +} + +type Posix_cred struct{} + +type Label struct{} + +type AuditinfoAddr struct { + Auid uint32 + Mask AuMask + Termid AuTidAddr + Asid int32 + Flags uint64 +} +type AuMask struct { + Success uint32 + Failure uint32 +} +type AuTidAddr struct { + Port int32 + Type uint32 + Addr [4]uint32 +} + +type UcredQueue struct { + Next *ucred + Prev **ucred +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_darwin_cgo.go b/vendor/github.com/shirou/gopsutil/process/process_darwin_cgo.go new file mode 100644 index 000000000..a80817755 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/process/process_darwin_cgo.go @@ -0,0 +1,30 @@ +// +build darwin +// +build cgo + +package process + +// #include +// #include +import "C" +import ( + "context" + "fmt" + "unsafe" +) + +func (p *Process) ExeWithContext(ctx context.Context) (string, error) { + var c C.char // need a var for unsafe.Sizeof need a var + const bufsize = C.PROC_PIDPATHINFO_MAXSIZE * unsafe.Sizeof(c) + buffer := (*C.char)(C.malloc(C.size_t(bufsize))) + defer C.free(unsafe.Pointer(buffer)) + + ret, err := C.proc_pidpath(C.int(p.Pid), unsafe.Pointer(buffer), C.uint32_t(bufsize)) + if err != nil { + return "", err + } + if ret <= 0 { + return "", fmt.Errorf("unknown error: proc_pidpath returned %d", ret) + } + + return C.GoString(buffer), nil +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_darwin_nocgo.go b/vendor/github.com/shirou/gopsutil/process/process_darwin_nocgo.go new file mode 100644 index 000000000..3583e1987 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/process/process_darwin_nocgo.go @@ -0,0 +1,34 @@ +// +build darwin +// +build !cgo + +package process + +import ( + "context" + "fmt" + "os/exec" + "strconv" + "strings" +) + +func (p *Process) ExeWithContext(ctx context.Context) (string, error) { + lsof_bin, err := exec.LookPath("lsof") + if err != nil { + return "", err + } + out, err := invoke.CommandWithContext(ctx, lsof_bin, "-p", strconv.Itoa(int(p.Pid)), "-Fpfn") + if err != nil { + return "", fmt.Errorf("bad call to lsof: %s", err) + } + txtFound := 0 + lines := strings.Split(string(out), "\n") + for i := 1; i < len(lines); i++ { + if lines[i] == "ftxt" { + txtFound++ + if txtFound == 2 { + return lines[i-1][1:], nil + } + } + } + return "", fmt.Errorf("missing txt data returned by lsof") +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_fallback.go b/vendor/github.com/shirou/gopsutil/process/process_fallback.go index 8772440df..14865efc2 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_fallback.go +++ b/vendor/github.com/shirou/gopsutil/process/process_fallback.go @@ -28,15 +28,7 @@ type MemoryMapsStat struct { type MemoryInfoExStat struct { } -func Pids() ([]int32, error) { - return PidsWithContext(context.Background()) -} - -func PidsWithContext(ctx context.Context) ([]int32, error) { - return []int32{}, common.ErrNotImplementedError -} - -func Processes() ([]*Process, error) { +func pidsWithContext(ctx context.Context) ([]int32, error) { return nil, common.ErrNotImplementedError } @@ -44,275 +36,169 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { return nil, common.ErrNotImplementedError } -func NewProcess(pid int32) (*Process, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Ppid() (int32, error) { - return p.PpidWithContext(context.Background()) +func PidExistsWithContext(ctx context.Context, pid int32) (bool, error) { + return false, common.ErrNotImplementedError } func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Name() (string, error) { - return p.NameWithContext(context.Background()) -} func (p *Process) NameWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Tgid() (int32, error) { + +func (p *Process) TgidWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Exe() (string, error) { - return p.ExeWithContext(context.Background()) -} func (p *Process) ExeWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Cmdline() (string, error) { - return p.CmdlineWithContext(context.Background()) -} func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) CmdlineSlice() ([]string, error) { - return p.CmdlineSliceWithContext(context.Background()) -} func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) { - return []string{}, common.ErrNotImplementedError -} -func (p *Process) CreateTime() (int64, error) { - return p.CreateTimeWithContext(context.Background()) + return nil, common.ErrNotImplementedError } -func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { +func (p *Process) createTimeWithContext(ctx context.Context) (int64, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Cwd() (string, error) { - return p.CwdWithContext(context.Background()) -} func (p *Process) CwdWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Parent() (*Process, error) { - return p.ParentWithContext(context.Background()) -} func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { return nil, common.ErrNotImplementedError } -func (p *Process) Status() (string, error) { - return p.StatusWithContext(context.Background()) -} func (p *Process) StatusWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Foreground() (bool, error) { - return p.ForegroundWithContext(context.Background()) -} func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { return false, common.ErrNotImplementedError } -func (p *Process) Uids() ([]int32, error) { - return p.UidsWithContext(context.Background()) -} func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { - return []int32{}, common.ErrNotImplementedError -} -func (p *Process) Gids() ([]int32, error) { - return p.GidsWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { - return []int32{}, common.ErrNotImplementedError + return nil, common.ErrNotImplementedError } -func (p *Process) Terminal() (string, error) { - return p.TerminalWithContext(context.Background()) + +func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error) { + return nil, common.ErrNotImplementedError } func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Nice() (int32, error) { - return p.NiceWithContext(context.Background()) -} func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) IOnice() (int32, error) { - return p.IOniceWithContext(context.Background()) -} func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Rlimit() ([]RlimitStat, error) { - return p.RlimitWithContext(context.Background()) -} func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { - return p.RlimitUsageWithContext(context.Background(), gatherUsed) -} func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) IOCounters() (*IOCountersStat, error) { - return p.IOCountersWithContext(context.Background()) -} func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { - return p.NumCtxSwitchesWithContext(context.Background()) -} func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) NumFDs() (int32, error) { - return p.NumFDsWithContext(context.Background()) -} func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) NumThreads() (int32, error) { - return p.NumThreadsWithContext(context.Background()) -} func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { - return p.ThreadsWithContext(context.Background()) -} func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) Times() (*cpu.TimesStat, error) { - return p.TimesWithContext(context.Background()) -} func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) CPUAffinity() ([]int32, error) { - return p.CPUAffinityWithContext(context.Background()) -} func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { return nil, common.ErrNotImplementedError } -func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { - return p.MemoryInfoWithContext(context.Background()) -} func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { - return p.MemoryInfoExWithContext(context.Background()) -} func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) Children() ([]*Process, error) { - return p.ChildrenWithContext(context.Background()) + +func (p *Process) PageFaultsWithContext(ctx context.Context) (*PageFaultsStat, error) { + return nil, common.ErrNotImplementedError } func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { return nil, common.ErrNotImplementedError } -func (p *Process) OpenFiles() ([]OpenFilesStat, error) { - return p.OpenFilesWithContext(context.Background()) -} func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { - return []OpenFilesStat{}, common.ErrNotImplementedError -} -func (p *Process) Connections() ([]net.ConnectionStat, error) { - return p.ConnectionsWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error) { - return []net.ConnectionStat{}, common.ErrNotImplementedError + return nil, common.ErrNotImplementedError } -func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { - return p.NetIOCountersWithContext(context.Background(), pernic) + +func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error) { + return nil, common.ErrNotImplementedError } func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { - return []net.IOCountersStat{}, common.ErrNotImplementedError -} -func (p *Process) IsRunning() (bool, error) { - return p.IsRunningWithContext(context.Background()) -} - -func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { - return true, common.ErrNotImplementedError -} -func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { - return p.MemoryMapsWithContext(context.Background(), grouped) + return nil, common.ErrNotImplementedError } func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) SendSignal(sig syscall.Signal) error { - return p.SendSignalWithContext(context.Background(), sig) -} func (p *Process) SendSignalWithContext(ctx context.Context, sig syscall.Signal) error { return common.ErrNotImplementedError } -func (p *Process) Suspend() error { - return p.SuspendWithContext(context.Background()) -} func (p *Process) SuspendWithContext(ctx context.Context) error { return common.ErrNotImplementedError } -func (p *Process) Resume() error { - return p.ResumeWithContext(context.Background()) -} func (p *Process) ResumeWithContext(ctx context.Context) error { return common.ErrNotImplementedError } -func (p *Process) Terminate() error { - return p.TerminateWithContext(context.Background()) -} func (p *Process) TerminateWithContext(ctx context.Context) error { return common.ErrNotImplementedError } -func (p *Process) Kill() error { - return p.KillWithContext(context.Background()) -} func (p *Process) KillWithContext(ctx context.Context) error { return common.ErrNotImplementedError } -func (p *Process) Username() (string, error) { - return p.UsernameWithContext(context.Background()) -} func (p *Process) UsernameWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError diff --git a/vendor/github.com/shirou/gopsutil/process/process_freebsd.go b/vendor/github.com/shirou/gopsutil/process/process_freebsd.go index fd98a8ca6..0666e7f42 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_freebsd.go +++ b/vendor/github.com/shirou/gopsutil/process/process_freebsd.go @@ -5,8 +5,8 @@ package process import ( "bytes" "context" - "encoding/binary" "os/exec" + "path/filepath" "strconv" "strings" @@ -16,20 +16,9 @@ import ( "golang.org/x/sys/unix" ) -// MemoryInfoExStat is different between OSes -type MemoryInfoExStat struct { -} - -type MemoryMapsStat struct { -} - -func Pids() ([]int32, error) { - return PidsWithContext(context.Background()) -} - -func PidsWithContext(ctx context.Context) ([]int32, error) { +func pidsWithContext(ctx context.Context) ([]int32, error) { var ret []int32 - procs, err := Processes() + procs, err := ProcessesWithContext(ctx) if err != nil { return ret, nil } @@ -41,10 +30,6 @@ func PidsWithContext(ctx context.Context) ([]int32, error) { return ret, nil } -func (p *Process) Ppid() (int32, error) { - return p.PpidWithContext(context.Background()) -} - func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { k, err := p.getKProc() if err != nil { @@ -53,33 +38,36 @@ func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { return k.Ppid, nil } -func (p *Process) Name() (string, error) { - return p.NameWithContext(context.Background()) -} func (p *Process) NameWithContext(ctx context.Context) (string, error) { k, err := p.getKProc() if err != nil { return "", err } + name := common.IntToString(k.Comm[:]) - return common.IntToString(k.Comm[:]), nil -} -func (p *Process) Tgid() (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) Exe() (string, error) { - return p.ExeWithContext(context.Background()) + if len(name) >= 15 { + cmdlineSlice, err := p.CmdlineSliceWithContext(ctx) + if err != nil { + return "", err + } + if len(cmdlineSlice) > 0 { + extendedName := filepath.Base(cmdlineSlice[0]) + if strings.HasPrefix(extendedName, p.name) { + name = extendedName + } else { + name = cmdlineSlice[0] + } + } + } + + return name, nil } func (p *Process) ExeWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Cmdline() (string, error) { - return p.CmdlineWithContext(context.Background()) -} - func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { mib := []int32{CTLKern, KernProc, KernProcArgs, p.Pid} buf, _, err := common.CallSyscall(mib) @@ -96,10 +84,6 @@ func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { return strings.Join(ret, " "), nil } -func (p *Process) CmdlineSlice() ([]string, error) { - return p.CmdlineSliceWithContext(context.Background()) -} - func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) { mib := []int32{CTLKern, KernProc, KernProcArgs, p.Pid} buf, _, err := common.CallSyscall(mib) @@ -120,29 +104,13 @@ func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) return strParts, nil } -func (p *Process) CreateTime() (int64, error) { - return p.CreateTimeWithContext(context.Background()) -} -func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { +func (p *Process) createTimeWithContext(ctx context.Context) (int64, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Cwd() (string, error) { - return p.CwdWithContext(context.Background()) -} - -func (p *Process) CwdWithContext(ctx context.Context) (string, error) { - return "", common.ErrNotImplementedError -} -func (p *Process) Parent() (*Process, error) { - return p.ParentWithContext(context.Background()) -} func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { - return p, common.ErrNotImplementedError -} -func (p *Process) Status() (string, error) { - return p.StatusWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) StatusWithContext(ctx context.Context) (string, error) { @@ -171,10 +139,6 @@ func (p *Process) StatusWithContext(ctx context.Context) (string, error) { return s, nil } -func (p *Process) Foreground() (bool, error) { - return p.ForegroundWithContext(context.Background()) -} - func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { // see https://github.com/shirou/gopsutil/issues/596#issuecomment-432707831 for implementation details pid := p.Pid @@ -189,10 +153,6 @@ func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { return strings.IndexByte(string(out), '+') != -1, nil } -func (p *Process) Uids() ([]int32, error) { - return p.UidsWithContext(context.Background()) -} - func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { k, err := p.getKProc() if err != nil { @@ -205,9 +165,6 @@ func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { return uids, nil } -func (p *Process) Gids() ([]int32, error) { - return p.GidsWithContext(context.Background()) -} func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { k, err := p.getKProc() @@ -220,8 +177,19 @@ func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { return gids, nil } -func (p *Process) Terminal() (string, error) { - return p.TerminalWithContext(context.Background()) + +func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error) { + k, err := p.getKProc() + if err != nil { + return nil, err + } + + groups := make([]int32, k.Ngroups) + for i := int16(0); i < k.Ngroups; i++ { + groups[i] = int32(k.Groups[i]) + } + + return groups, nil } func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { @@ -239,9 +207,6 @@ func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { return termmap[ttyNr], nil } -func (p *Process) Nice() (int32, error) { - return p.NiceWithContext(context.Background()) -} func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { k, err := p.getKProc() @@ -250,32 +215,6 @@ func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { } return int32(k.Nice), nil } -func (p *Process) IOnice() (int32, error) { - return p.IOniceWithContext(context.Background()) -} - -func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) Rlimit() ([]RlimitStat, error) { - return p.RlimitWithContext(context.Background()) -} - -func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { - var rlimit []RlimitStat - return rlimit, common.ErrNotImplementedError -} -func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { - return p.RlimitUsageWithContext(context.Background(), gatherUsed) -} - -func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { - var rlimit []RlimitStat - return rlimit, common.ErrNotImplementedError -} -func (p *Process) IOCounters() (*IOCountersStat, error) { - return p.IOCountersWithContext(context.Background()) -} func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error) { k, err := p.getKProc() @@ -287,23 +226,6 @@ func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, e WriteCount: uint64(k.Rusage.Oublock), }, nil } -func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { - return p.NumCtxSwitchesWithContext(context.Background()) -} - -func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { - return nil, common.ErrNotImplementedError -} -func (p *Process) NumFDs() (int32, error) { - return p.NumFDsWithContext(context.Background()) -} - -func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) NumThreads() (int32, error) { - return p.NumThreadsWithContext(context.Background()) -} func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { k, err := p.getKProc() @@ -313,17 +235,6 @@ func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { return k.Numthreads, nil } -func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { - return p.ThreadsWithContext(context.Background()) -} - -func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { - ret := make(map[int32]*cpu.TimesStat) - return ret, common.ErrNotImplementedError -} -func (p *Process) Times() (*cpu.TimesStat, error) { - return p.TimesWithContext(context.Background()) -} func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) { k, err := p.getKProc() @@ -336,16 +247,6 @@ func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) System: float64(k.Rusage.Stime.Sec) + float64(k.Rusage.Stime.Usec)/1000000, }, nil } -func (p *Process) CPUAffinity() ([]int32, error) { - return p.CPUAffinityWithContext(context.Background()) -} - -func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { - return nil, common.ErrNotImplementedError -} -func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { - return p.MemoryInfoWithContext(context.Background()) -} func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error) { k, err := p.getKProc() @@ -363,17 +264,6 @@ func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, e VMS: uint64(k.Size), }, nil } -func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { - return p.MemoryInfoExWithContext(context.Background()) -} - -func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Children() ([]*Process, error) { - return p.ChildrenWithContext(context.Background()) -} func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { pids, err := common.CallPgrepWithContext(ctx, invoke, p.Pid) @@ -382,7 +272,7 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { } ret := make([]*Process, 0, len(pids)) for _, pid := range pids { - np, err := NewProcess(pid) + np, err := NewProcessWithContext(ctx, pid) if err != nil { return nil, err } @@ -391,50 +281,14 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { return ret, nil } -func (p *Process) OpenFiles() ([]OpenFilesStat, error) { - return p.OpenFilesWithContext(context.Background()) -} - -func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Connections() ([]net.ConnectionStat, error) { - return p.ConnectionsWithContext(context.Background()) -} - func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { - return p.NetIOCountersWithContext(context.Background(), pernic) -} - -func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { +func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) IsRunning() (bool, error) { - return p.IsRunningWithContext(context.Background()) -} - -func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { - return true, common.ErrNotImplementedError -} -func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { - return p.MemoryMapsWithContext(context.Background(), grouped) -} - -func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { - var ret []MemoryMapsStat - return &ret, common.ErrNotImplementedError -} - -func Processes() ([]*Process, error) { - return ProcessesWithContext(context.Background()) -} - func ProcessesWithContext(ctx context.Context) ([]*Process, error) { results := []*Process{} @@ -454,7 +308,7 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { if err != nil { continue } - p, err := NewProcess(int32(k.Pid)) + p, err := NewProcessWithContext(ctx, int32(k.Pid)) if err != nil { continue } @@ -465,18 +319,7 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { return results, nil } -func parseKinfoProc(buf []byte) (KinfoProc, error) { - var k KinfoProc - br := bytes.NewReader(buf) - err := common.Read(br, binary.LittleEndian, &k) - return k, err -} - func (p *Process) getKProc() (*KinfoProc, error) { - return p.getKProcWithContext(context.Background()) -} - -func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { mib := []int32{CTLKern, KernProc, KernProcPID, p.Pid} buf, length, err := common.CallSyscall(mib) @@ -493,9 +336,3 @@ func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { } return &k, nil } - -func NewProcess(pid int32) (*Process, error) { - p := &Process{Pid: pid} - - return p, nil -} diff --git a/vendor/github.com/shirou/gopsutil/process/process_freebsd_arm64.go b/vendor/github.com/shirou/gopsutil/process/process_freebsd_arm64.go new file mode 100644 index 000000000..99781d1a2 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/process/process_freebsd_arm64.go @@ -0,0 +1,201 @@ +// +build freebsd +// +build arm64 +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs process/types_freebsd.go + +package process + +const ( + CTLKern = 1 + KernProc = 14 + KernProcPID = 1 + KernProcProc = 8 + KernProcPathname = 12 + KernProcArgs = 7 +) + +const ( + sizeofPtr = 0x8 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 +) + +const ( + sizeOfKinfoVmentry = 0x488 + sizeOfKinfoProc = 0x440 +) + +const ( + SIDL = 1 + SRUN = 2 + SSLEEP = 3 + SSTOP = 4 + SZOMB = 5 + SWAIT = 6 + SLOCK = 7 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type KinfoProc struct { + Structsize int32 + Layout int32 + Args *int64 /* pargs */ + Paddr *int64 /* proc */ + Addr *int64 /* user */ + Tracep *int64 /* vnode */ + Textvp *int64 /* vnode */ + Fd *int64 /* filedesc */ + Vmspace *int64 /* vmspace */ + Wchan *byte + Pid int32 + Ppid int32 + Pgid int32 + Tpgid int32 + Sid int32 + Tsid int32 + Jobc int16 + Spare_short1 int16 + Tdev_freebsd11 uint32 + Siglist [16]byte /* sigset */ + Sigmask [16]byte /* sigset */ + Sigignore [16]byte /* sigset */ + Sigcatch [16]byte /* sigset */ + Uid uint32 + Ruid uint32 + Svuid uint32 + Rgid uint32 + Svgid uint32 + Ngroups int16 + Spare_short2 int16 + Groups [16]uint32 + Size uint64 + Rssize int64 + Swrss int64 + Tsize int64 + Dsize int64 + Ssize int64 + Xstat uint16 + Acflag uint16 + Pctcpu uint32 + Estcpu uint32 + Slptime uint32 + Swtime uint32 + Cow uint32 + Runtime uint64 + Start Timeval + Childtime Timeval + Flag int64 + Kiflag int64 + Traceflag int32 + Stat uint8 + Nice int8 + Lock uint8 + Rqindex uint8 + Oncpu_old uint8 + Lastcpu_old uint8 + Tdname [17]uint8 + Wmesg [9]uint8 + Login [18]uint8 + Lockname [9]uint8 + Comm [20]int8 + Emul [17]uint8 + Loginclass [18]uint8 + Moretdname [4]uint8 + Sparestrings [46]uint8 + Spareints [2]int32 + Tdev uint64 + Oncpu int32 + Lastcpu int32 + Tracer int32 + Flag2 int32 + Fibnum int32 + Cr_flags uint32 + Jid int32 + Numthreads int32 + Tid int32 + Pri Priority + Rusage Rusage + Rusage_ch Rusage + Pcb *int64 /* pcb */ + Kstack *byte + Udata *byte + Tdaddr *int64 /* thread */ + Spareptrs [6]*byte + Sparelongs [12]int64 + Sflag int64 + Tdflags int64 +} + +type Priority struct { + Class uint8 + Level uint8 + Native uint8 + User uint8 +} + +type KinfoVmentry struct { + Structsize int32 + Type int32 + Start uint64 + End uint64 + Offset uint64 + Vn_fileid uint64 + Vn_fsid_freebsd11 uint32 + Flags int32 + Resident int32 + Private_resident int32 + Protection int32 + Ref_count int32 + Shadow_count int32 + Vn_type int32 + Vn_size uint64 + Vn_rdev_freebsd11 uint32 + Vn_mode uint16 + Status uint16 + Vn_fsid uint64 + Vn_rdev uint64 + X_kve_ispare [8]int32 + Path [1024]uint8 +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_linux.go b/vendor/github.com/shirou/gopsutil/process/process_linux.go index ecdd7b48b..669828d88 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_linux.go +++ b/vendor/github.com/shirou/gopsutil/process/process_linux.go @@ -16,7 +16,6 @@ import ( "strings" "github.com/shirou/gopsutil/cpu" - "github.com/shirou/gopsutil/host" "github.com/shirou/gopsutil/internal/common" "github.com/shirou/gopsutil/net" "golang.org/x/sys/unix" @@ -65,145 +64,75 @@ func (m MemoryMapsStat) String() string { return string(s) } -// NewProcess creates a new Process instance, it only stores the pid and -// checks that the process exists. Other method on Process can be used -// to get more information about the process. An error will be returned -// if the process does not exist. -func NewProcess(pid int32) (*Process, error) { - p := &Process{ - Pid: int32(pid), - } - file, err := os.Open(common.HostProc(strconv.Itoa(int(p.Pid)))) - defer file.Close() - return p, err -} - -// Ppid returns Parent Process ID of the process. -func (p *Process) Ppid() (int32, error) { - return p.PpidWithContext(context.Background()) -} - func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { - _, ppid, _, _, _, _, err := p.fillFromStat() + _, ppid, _, _, _, _, _, err := p.fillFromStatWithContext(ctx) if err != nil { return -1, err } return ppid, nil } -// Name returns name of the process. -func (p *Process) Name() (string, error) { - return p.NameWithContext(context.Background()) -} - func (p *Process) NameWithContext(ctx context.Context) (string, error) { if p.name == "" { - if err := p.fillFromStatus(); err != nil { + if err := p.fillFromStatusWithContext(ctx); err != nil { return "", err } } return p.name, nil } -// Tgid returns tgid, a Linux-synonym for user-space Pid -func (p *Process) Tgid() (int32, error) { +func (p *Process) TgidWithContext(ctx context.Context) (int32, error) { if p.tgid == 0 { - if err := p.fillFromStatus(); err != nil { + if err := p.fillFromStatusWithContext(ctx); err != nil { return 0, err } } return p.tgid, nil } -// Exe returns executable path of the process. -func (p *Process) Exe() (string, error) { - return p.ExeWithContext(context.Background()) -} - func (p *Process) ExeWithContext(ctx context.Context) (string, error) { - return p.fillFromExe() -} - -// Cmdline returns the command line arguments of the process as a string with -// each argument separated by 0x20 ascii character. -func (p *Process) Cmdline() (string, error) { - return p.CmdlineWithContext(context.Background()) + return p.fillFromExeWithContext(ctx) } func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { - return p.fillFromCmdline() -} - -// CmdlineSlice returns the command line arguments of the process as a slice with each -// element being an argument. -func (p *Process) CmdlineSlice() ([]string, error) { - return p.CmdlineSliceWithContext(context.Background()) + return p.fillFromCmdlineWithContext(ctx) } func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) { - return p.fillSliceFromCmdline() + return p.fillSliceFromCmdlineWithContext(ctx) } -// CreateTime returns created time of the process in milliseconds since the epoch, in UTC. -func (p *Process) CreateTime() (int64, error) { - return p.CreateTimeWithContext(context.Background()) -} - -func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { - _, _, _, createTime, _, _, err := p.fillFromStat() +func (p *Process) createTimeWithContext(ctx context.Context) (int64, error) { + _, _, _, createTime, _, _, _, err := p.fillFromStatWithContext(ctx) if err != nil { return 0, err } return createTime, nil } -// Cwd returns current working directory of the process. -func (p *Process) Cwd() (string, error) { - return p.CwdWithContext(context.Background()) -} - func (p *Process) CwdWithContext(ctx context.Context) (string, error) { - return p.fillFromCwd() -} - -// Parent returns parent Process of the process. -func (p *Process) Parent() (*Process, error) { - return p.ParentWithContext(context.Background()) + return p.fillFromCwdWithContext(ctx) } func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { - err := p.fillFromStatus() + err := p.fillFromStatusWithContext(ctx) if err != nil { return nil, err } if p.parent == 0 { return nil, fmt.Errorf("wrong number of parents") } - return NewProcess(p.parent) -} - -// Status returns the process status. -// Return value could be one of these. -// R: Running S: Sleep T: Stop I: Idle -// Z: Zombie W: Wait L: Lock -// The charactor is same within all supported platforms. -func (p *Process) Status() (string, error) { - return p.StatusWithContext(context.Background()) + return NewProcessWithContext(ctx, p.parent) } func (p *Process) StatusWithContext(ctx context.Context) (string, error) { - err := p.fillFromStatus() + err := p.fillFromStatusWithContext(ctx) if err != nil { return "", err } return p.status, nil } -// Foreground returns true if the process is in foreground, false otherwise. -func (p *Process) Foreground() (bool, error) { - return p.ForegroundWithContext(context.Background()) -} - func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { // see https://github.com/shirou/gopsutil/issues/596#issuecomment-432707831 for implementation details pid := p.Pid @@ -221,39 +150,32 @@ func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { return pgid == tpgid, nil } -// Uids returns user ids of the process as a slice of the int -func (p *Process) Uids() ([]int32, error) { - return p.UidsWithContext(context.Background()) -} - func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { - err := p.fillFromStatus() + err := p.fillFromStatusWithContext(ctx) if err != nil { return []int32{}, err } return p.uids, nil } -// Gids returns group ids of the process as a slice of the int -func (p *Process) Gids() ([]int32, error) { - return p.GidsWithContext(context.Background()) -} - func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { - err := p.fillFromStatus() + err := p.fillFromStatusWithContext(ctx) if err != nil { return []int32{}, err } return p.gids, nil } -// Terminal returns a terminal which is associated with the process. -func (p *Process) Terminal() (string, error) { - return p.TerminalWithContext(context.Background()) +func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error) { + err := p.fillFromStatusWithContext(ctx) + if err != nil { + return []int32{}, err + } + return p.groups, nil } func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { - t, _, _, _, _, _, err := p.fillFromStat() + t, _, _, _, _, _, _, err := p.fillFromStatWithContext(ctx) if err != nil { return "", err } @@ -265,56 +187,33 @@ func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { return terminal, nil } -// Nice returns a nice value (priority). -// Notice: gopsutil can not set nice value. -func (p *Process) Nice() (int32, error) { - return p.NiceWithContext(context.Background()) -} - func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { - _, _, _, _, _, nice, err := p.fillFromStat() + _, _, _, _, _, nice, _, err := p.fillFromStatWithContext(ctx) if err != nil { return 0, err } return nice, nil } -// IOnice returns process I/O nice value (priority). -func (p *Process) IOnice() (int32, error) { - return p.IOniceWithContext(context.Background()) -} - func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -// Rlimit returns Resource Limits. -func (p *Process) Rlimit() ([]RlimitStat, error) { - return p.RlimitWithContext(context.Background()) -} - func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { - return p.RlimitUsage(false) -} - -// RlimitUsage returns Resource Limits. -// If gatherUsed is true, the currently used value will be gathered and added -// to the resulting RlimitStat. -func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { - return p.RlimitUsageWithContext(context.Background(), gatherUsed) + return p.RlimitUsageWithContext(ctx, false) } func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { - rlimits, err := p.fillFromLimits() + rlimits, err := p.fillFromLimitsWithContext(ctx) if !gatherUsed || err != nil { return rlimits, err } - _, _, _, _, rtprio, nice, err := p.fillFromStat() + _, _, _, _, rtprio, nice, _, err := p.fillFromStatWithContext(ctx) if err != nil { return nil, err } - if err := p.fillFromStatus(); err != nil { + if err := p.fillFromStatusWithContext(ctx); err != nil { return nil, err } @@ -322,7 +221,7 @@ func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ( rs := &rlimits[i] switch rs.Resource { case RLIMIT_CPU: - times, err := p.Times() + times, err := p.TimesWithContext(ctx) if err != nil { return nil, err } @@ -334,7 +233,7 @@ func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ( case RLIMIT_RSS: rs.Used = uint64(p.memInfo.RSS) case RLIMIT_NOFILE: - n, err := p.NumFDs() + n, err := p.NumFDsWithContext(ctx) if err != nil { return nil, err } @@ -359,55 +258,31 @@ func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ( return rlimits, err } -// IOCounters returns IO Counters. -func (p *Process) IOCounters() (*IOCountersStat, error) { - return p.IOCountersWithContext(context.Background()) -} - func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error) { - return p.fillFromIO() -} - -// NumCtxSwitches returns the number of the context switches of the process. -func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { - return p.NumCtxSwitchesWithContext(context.Background()) + return p.fillFromIOWithContext(ctx) } func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { - err := p.fillFromStatus() + err := p.fillFromStatusWithContext(ctx) if err != nil { return nil, err } return p.numCtxSwitches, nil } -// NumFDs returns the number of File Descriptors used by the process. -func (p *Process) NumFDs() (int32, error) { - return p.NumFDsWithContext(context.Background()) -} - func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { - _, fnames, err := p.fillFromfdList() + _, fnames, err := p.fillFromfdListWithContext(ctx) return int32(len(fnames)), err } -// NumThreads returns the number of threads used by the process. -func (p *Process) NumThreads() (int32, error) { - return p.NumThreadsWithContext(context.Background()) -} - func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { - err := p.fillFromStatus() + err := p.fillFromStatusWithContext(ctx) if err != nil { return 0, err } return p.numThreads, nil } -func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { - return p.ThreadsWithContext(context.Background()) -} - func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { ret := make(map[int32]*cpu.TimesStat) taskPath := common.HostProc(strconv.Itoa(int(p.Pid)), "task") @@ -418,7 +293,7 @@ func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesS } for _, tid := range tids { - _, _, cpuTimes, _, _, _, err := p.fillFromTIDStat(tid) + _, _, cpuTimes, _, _, _, _, err := p.fillFromTIDStatWithContext(ctx, tid) if err != nil { return nil, err } @@ -428,59 +303,41 @@ func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesS return ret, nil } -// Times returns CPU times of the process. -func (p *Process) Times() (*cpu.TimesStat, error) { - return p.TimesWithContext(context.Background()) -} - func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) { - _, _, cpuTimes, _, _, _, err := p.fillFromStat() + _, _, cpuTimes, _, _, _, _, err := p.fillFromStatWithContext(ctx) if err != nil { return nil, err } return cpuTimes, nil } -// CPUAffinity returns CPU affinity of the process. -// -// Notice: Not implemented yet. -func (p *Process) CPUAffinity() ([]int32, error) { - return p.CPUAffinityWithContext(context.Background()) -} - func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { return nil, common.ErrNotImplementedError } -// MemoryInfo returns platform in-dependend memory information, such as RSS, VMS and Swap -func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { - return p.MemoryInfoWithContext(context.Background()) -} - func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error) { - meminfo, _, err := p.fillFromStatm() + meminfo, _, err := p.fillFromStatmWithContext(ctx) if err != nil { return nil, err } return meminfo, nil } -// MemoryInfoEx returns platform dependend memory information. -func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { - return p.MemoryInfoExWithContext(context.Background()) -} - func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { - _, memInfoEx, err := p.fillFromStatm() + _, memInfoEx, err := p.fillFromStatmWithContext(ctx) if err != nil { return nil, err } return memInfoEx, nil } -// Children returns a slice of Process of the process. -func (p *Process) Children() ([]*Process, error) { - return p.ChildrenWithContext(context.Background()) +func (p *Process) PageFaultsWithContext(ctx context.Context) (*PageFaultsStat, error) { + _, _, _, _, _, _, pageFaults, err := p.fillFromStatWithContext(ctx) + if err != nil { + return nil, err + } + return pageFaults, nil + } func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { @@ -493,7 +350,7 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { } ret := make([]*Process, 0, len(pids)) for _, pid := range pids { - np, err := NewProcess(pid) + np, err := NewProcessWithContext(ctx, pid) if err != nil { return nil, err } @@ -502,14 +359,8 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { return ret, nil } -// OpenFiles returns a slice of OpenFilesStat opend by the process. -// OpenFilesStat includes a file path and file descriptor. -func (p *Process) OpenFiles() ([]OpenFilesStat, error) { - return p.OpenFilesWithContext(context.Background()) -} - func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { - _, ofs, err := p.fillFromfd() + _, ofs, err := p.fillFromfdWithContext(ctx) if err != nil { return nil, err } @@ -521,44 +372,25 @@ func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, er return ret, nil } -// Connections returns a slice of net.ConnectionStat used by the process. -// This returns all kind of the connection. This measn TCP, UDP or UNIX. -func (p *Process) Connections() ([]net.ConnectionStat, error) { - return p.ConnectionsWithContext(context.Background()) -} - func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error) { - return net.ConnectionsPid("all", p.Pid) + return net.ConnectionsPidWithContext(ctx, "all", p.Pid) } -// NetIOCounters returns NetIOCounters of the process. -func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { - return p.NetIOCountersWithContext(context.Background(), pernic) +func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error) { + return net.ConnectionsPidMaxWithContext(ctx, "all", p.Pid, max) } func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { filename := common.HostProc(strconv.Itoa(int(p.Pid)), "net/dev") - return net.IOCountersByFile(pernic, filename) -} - -// IsRunning returns whether the process is running or not. -// Not implemented yet. -func (p *Process) IsRunning() (bool, error) { - return p.IsRunningWithContext(context.Background()) -} - -func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { - return true, common.ErrNotImplementedError -} - -// MemoryMaps get memory maps from /proc/(pid)/smaps -func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { - return p.MemoryMapsWithContext(context.Background(), grouped) + return net.IOCountersByFileWithContext(ctx, pernic, filename) } func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { pid := p.Pid var ret []MemoryMapsStat + if grouped { + ret = make([]MemoryMapsStat, 1) + } smapsPath := common.HostProc(strconv.Itoa(int(pid)), "smaps") contents, err := ioutil.ReadFile(smapsPath) if err != nil { @@ -567,9 +399,9 @@ func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]M lines := strings.Split(string(contents), "\n") // function of parsing a block - getBlock := func(first_line []string, block []string) (MemoryMapsStat, error) { + getBlock := func(firstLine []string, block []string) (MemoryMapsStat, error) { m := MemoryMapsStat{} - m.Path = first_line[len(first_line)-1] + m.Path = firstLine[len(firstLine)-1] for _, line := range block { if strings.Contains(line, "VmFlags") { @@ -579,7 +411,8 @@ func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]M if len(field) < 2 { continue } - v := strings.Trim(field[1], " kB") // remove last "kB" + v := strings.Trim(field[1], "kB") // remove last "kB" + v = strings.TrimSpace(v) t, err := strconv.ParseUint(v, 10, 64) if err != nil { return m, err @@ -611,20 +444,36 @@ func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]M return m, nil } - blocks := make([]string, 16) - for _, line := range lines { - field := strings.Split(line, " ") - if strings.HasSuffix(field[0], ":") == false { + var firstLine []string + blocks := make([]string, 0, 16) + for i, line := range lines { + fields := strings.Fields(line) + + if (len(fields) > 0 && !strings.HasSuffix(fields[0], ":")) || i == len(lines)-1 { // new block section - if len(blocks) > 0 { - g, err := getBlock(field, blocks) + if len(firstLine) > 0 && len(blocks) > 0 { + g, err := getBlock(firstLine, blocks) if err != nil { return &ret, err } - ret = append(ret, g) + if grouped { + ret[0].Size += g.Size + ret[0].Rss += g.Rss + ret[0].Pss += g.Pss + ret[0].SharedClean += g.SharedClean + ret[0].SharedDirty += g.SharedDirty + ret[0].PrivateClean += g.PrivateClean + ret[0].PrivateDirty += g.PrivateDirty + ret[0].Referenced += g.Referenced + ret[0].Anonymous += g.Anonymous + ret[0].Swap += g.Swap + } else { + ret = append(ret, g) + } } // starts new block - blocks = make([]string, 16) + blocks = make([]string, 0, 16) + firstLine = fields } else { blocks = append(blocks, line) } @@ -650,10 +499,6 @@ func limitToInt(val string) (int32, error) { } // Get num_fds from /proc/(pid)/limits -func (p *Process) fillFromLimits() ([]RlimitStat, error) { - return p.fillFromLimitsWithContext(context.Background()) -} - func (p *Process) fillFromLimitsWithContext(ctx context.Context) ([]RlimitStat, error) { pid := p.Pid limitsFile := common.HostProc(strconv.Itoa(int(pid)), "limits") @@ -747,10 +592,6 @@ func (p *Process) fillFromLimitsWithContext(ctx context.Context) ([]RlimitStat, } // Get list of /proc/(pid)/fd files -func (p *Process) fillFromfdList() (string, []string, error) { - return p.fillFromfdListWithContext(context.Background()) -} - func (p *Process) fillFromfdListWithContext(ctx context.Context) (string, []string, error) { pid := p.Pid statPath := common.HostProc(strconv.Itoa(int(pid)), "fd") @@ -764,12 +605,8 @@ func (p *Process) fillFromfdListWithContext(ctx context.Context) (string, []stri } // Get num_fds from /proc/(pid)/fd -func (p *Process) fillFromfd() (int32, []*OpenFilesStat, error) { - return p.fillFromfdWithContext(context.Background()) -} - func (p *Process) fillFromfdWithContext(ctx context.Context) (int32, []*OpenFilesStat, error) { - statPath, fnames, err := p.fillFromfdList() + statPath, fnames, err := p.fillFromfdListWithContext(ctx) if err != nil { return 0, nil, err } @@ -797,10 +634,6 @@ func (p *Process) fillFromfdWithContext(ctx context.Context) (int32, []*OpenFile } // Get cwd from /proc/(pid)/cwd -func (p *Process) fillFromCwd() (string, error) { - return p.fillFromCwdWithContext(context.Background()) -} - func (p *Process) fillFromCwdWithContext(ctx context.Context) (string, error) { pid := p.Pid cwdPath := common.HostProc(strconv.Itoa(int(pid)), "cwd") @@ -812,10 +645,6 @@ func (p *Process) fillFromCwdWithContext(ctx context.Context) (string, error) { } // Get exe from /proc/(pid)/exe -func (p *Process) fillFromExe() (string, error) { - return p.fillFromExeWithContext(context.Background()) -} - func (p *Process) fillFromExeWithContext(ctx context.Context) (string, error) { pid := p.Pid exePath := common.HostProc(strconv.Itoa(int(pid)), "exe") @@ -827,10 +656,6 @@ func (p *Process) fillFromExeWithContext(ctx context.Context) (string, error) { } // Get cmdline from /proc/(pid)/cmdline -func (p *Process) fillFromCmdline() (string, error) { - return p.fillFromCmdlineWithContext(context.Background()) -} - func (p *Process) fillFromCmdlineWithContext(ctx context.Context) (string, error) { pid := p.Pid cmdPath := common.HostProc(strconv.Itoa(int(pid)), "cmdline") @@ -848,10 +673,6 @@ func (p *Process) fillFromCmdlineWithContext(ctx context.Context) (string, error return strings.Join(ret, " "), nil } -func (p *Process) fillSliceFromCmdline() ([]string, error) { - return p.fillSliceFromCmdlineWithContext(context.Background()) -} - func (p *Process) fillSliceFromCmdlineWithContext(ctx context.Context) ([]string, error) { pid := p.Pid cmdPath := common.HostProc(strconv.Itoa(int(pid)), "cmdline") @@ -875,10 +696,6 @@ func (p *Process) fillSliceFromCmdlineWithContext(ctx context.Context) ([]string } // Get IO status from /proc/(pid)/io -func (p *Process) fillFromIO() (*IOCountersStat, error) { - return p.fillFromIOWithContext(context.Background()) -} - func (p *Process) fillFromIOWithContext(ctx context.Context) (*IOCountersStat, error) { pid := p.Pid ioPath := common.HostProc(strconv.Itoa(int(pid)), "io") @@ -918,10 +735,6 @@ func (p *Process) fillFromIOWithContext(ctx context.Context) (*IOCountersStat, e } // Get memory info from /proc/(pid)/statm -func (p *Process) fillFromStatm() (*MemoryInfoStat, *MemoryInfoExStat, error) { - return p.fillFromStatmWithContext(context.Background()) -} - func (p *Process) fillFromStatmWithContext(ctx context.Context) (*MemoryInfoStat, *MemoryInfoExStat, error) { pid := p.Pid memPath := common.HostProc(strconv.Itoa(int(pid)), "statm") @@ -974,10 +787,6 @@ func (p *Process) fillFromStatmWithContext(ctx context.Context) (*MemoryInfoStat } // Get various status from /proc/(pid)/status -func (p *Process) fillFromStatus() error { - return p.fillFromStatusWithContext(context.Background()) -} - func (p *Process) fillFromStatusWithContext(ctx context.Context) error { pid := p.Pid statPath := common.HostProc(strconv.Itoa(int(pid)), "status") @@ -1044,6 +853,16 @@ func (p *Process) fillFromStatusWithContext(ctx context.Context) error { } p.gids = append(p.gids, int32(v)) } + case "Groups": + groups := strings.Fields(value) + p.groups = make([]int32, 0, len(groups)) + for _, i := range groups { + v, err := strconv.ParseInt(i, 10, 32) + if err != nil { + return err + } + p.groups = append(p.groups, int32(v)) + } case "Threads": v, err := strconv.ParseInt(value, 10, 32) if err != nil { @@ -1083,6 +902,13 @@ func (p *Process) fillFromStatusWithContext(ctx context.Context) error { return err } p.memInfo.Swap = v * 1024 + case "VmHWM": + value := strings.Trim(value, " kB") // remove last "kB" + v, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return err + } + p.memInfo.HWM = v * 1024 case "VmData": value := strings.Trim(value, " kB") // remove last "kB" v, err := strconv.ParseUint(value, 10, 64) @@ -1140,11 +966,7 @@ func (p *Process) fillFromStatusWithContext(ctx context.Context) error { return nil } -func (p *Process) fillFromTIDStat(tid int32) (uint64, int32, *cpu.TimesStat, int64, uint32, int32, error) { - return p.fillFromTIDStatWithContext(context.Background(), tid) -} - -func (p *Process) fillFromTIDStatWithContext(ctx context.Context, tid int32) (uint64, int32, *cpu.TimesStat, int64, uint32, int32, error) { +func (p *Process) fillFromTIDStatWithContext(ctx context.Context, tid int32) (uint64, int32, *cpu.TimesStat, int64, uint32, int32, *PageFaultsStat, error) { pid := p.Pid var statPath string @@ -1156,7 +978,7 @@ func (p *Process) fillFromTIDStatWithContext(ctx context.Context, tid int32) (ui contents, err := ioutil.ReadFile(statPath) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err } fields := strings.Fields(string(contents)) @@ -1167,40 +989,49 @@ func (p *Process) fillFromTIDStatWithContext(ctx context.Context, tid int32) (ui terminal, err := strconv.ParseUint(fields[i+5], 10, 64) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err } ppid, err := strconv.ParseInt(fields[i+2], 10, 32) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err } utime, err := strconv.ParseFloat(fields[i+12], 64) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err } stime, err := strconv.ParseFloat(fields[i+13], 64) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err + } + + // There is no such thing as iotime in stat file. As an approximation, we + // will use delayacct_blkio_ticks (aggregated block I/O delays, as per Linux + // docs). Note: I am assuming at least Linux 2.6.18 + iotime, err := strconv.ParseFloat(fields[i+40], 64) + if err != nil { + iotime = 0 // Ancient linux version, most likely } cpuTimes := &cpu.TimesStat{ CPU: "cpu", User: float64(utime / ClockTicks), System: float64(stime / ClockTicks), + Iowait: float64(iotime / ClockTicks), } - bootTime, _ := host.BootTime() + bootTime, _ := common.BootTimeWithContext(ctx) t, err := strconv.ParseUint(fields[i+20], 10, 64) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err } ctime := (t / uint64(ClockTicks)) + uint64(bootTime) createTime := int64(ctime * 1000) rtpriority, err := strconv.ParseInt(fields[i+16], 10, 32) if err != nil { - return 0, 0, nil, 0, 0, 0, err + return 0, 0, nil, 0, 0, 0, nil, err } if rtpriority < 0 { rtpriority = rtpriority*-1 - 1 @@ -1213,32 +1044,41 @@ func (p *Process) fillFromTIDStatWithContext(ctx context.Context, tid int32) (ui snice, _ := unix.Getpriority(PrioProcess, int(pid)) nice := int32(snice) // FIXME: is this true? - return terminal, int32(ppid), cpuTimes, createTime, uint32(rtpriority), nice, nil + minFault, err := strconv.ParseUint(fields[i+8], 10, 64) + if err != nil { + return 0, 0, nil, 0, 0, 0, nil, err + } + cMinFault, err := strconv.ParseUint(fields[i+9], 10, 64) + if err != nil { + return 0, 0, nil, 0, 0, 0, nil, err + } + majFault, err := strconv.ParseUint(fields[i+10], 10, 64) + if err != nil { + return 0, 0, nil, 0, 0, 0, nil, err + } + cMajFault, err := strconv.ParseUint(fields[i+11], 10, 64) + if err != nil { + return 0, 0, nil, 0, 0, 0, nil, err + } + + faults := &PageFaultsStat{ + MinorFaults: minFault, + MajorFaults: majFault, + ChildMinorFaults: cMinFault, + ChildMajorFaults: cMajFault, + } + + return terminal, int32(ppid), cpuTimes, createTime, uint32(rtpriority), nice, faults, nil } -func (p *Process) fillFromStat() (uint64, int32, *cpu.TimesStat, int64, uint32, int32, error) { - return p.fillFromStatWithContext(context.Background()) +func (p *Process) fillFromStatWithContext(ctx context.Context) (uint64, int32, *cpu.TimesStat, int64, uint32, int32, *PageFaultsStat, error) { + return p.fillFromTIDStatWithContext(ctx, -1) } -func (p *Process) fillFromStatWithContext(ctx context.Context) (uint64, int32, *cpu.TimesStat, int64, uint32, int32, error) { - return p.fillFromTIDStat(-1) -} - -// Pids returns a slice of process ID list which are running now. -func Pids() ([]int32, error) { - return PidsWithContext(context.Background()) -} - -func PidsWithContext(ctx context.Context) ([]int32, error) { +func pidsWithContext(ctx context.Context) ([]int32, error) { return readPidsFromDir(common.HostProc()) } -// Process returns a slice of pointers to Process structs for all -// currently running processes. -func Processes() ([]*Process, error) { - return ProcessesWithContext(context.Background()) -} - func ProcessesWithContext(ctx context.Context) ([]*Process, error) { out := []*Process{} @@ -1248,7 +1088,7 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { } for _, pid := range pids { - p, err := NewProcess(pid) + p, err := NewProcessWithContext(ctx, pid) if err != nil { continue } diff --git a/vendor/github.com/shirou/gopsutil/process/process_openbsd.go b/vendor/github.com/shirou/gopsutil/process/process_openbsd.go index f9e0a0867..0404b4bae 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_openbsd.go +++ b/vendor/github.com/shirou/gopsutil/process/process_openbsd.go @@ -4,9 +4,10 @@ package process import ( "C" - "bytes" "context" - "encoding/binary" + "os/exec" + "path/filepath" + "strconv" "strings" "unsafe" @@ -17,20 +18,9 @@ import ( "golang.org/x/sys/unix" ) -// MemoryInfoExStat is different between OSes -type MemoryInfoExStat struct { -} - -type MemoryMapsStat struct { -} - -func Pids() ([]int32, error) { - return PidsWithContext(context.Background()) -} - -func PidsWithContext(ctx context.Context) ([]int32, error) { +func pidsWithContext(ctx context.Context) ([]int32, error) { var ret []int32 - procs, err := Processes() + procs, err := ProcessesWithContext(ctx) if err != nil { return ret, nil } @@ -42,10 +32,6 @@ func PidsWithContext(ctx context.Context) ([]int32, error) { return ret, nil } -func (p *Process) Ppid() (int32, error) { - return p.PpidWithContext(context.Background()) -} - func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { k, err := p.getKProc() if err != nil { @@ -54,33 +40,36 @@ func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { return k.Ppid, nil } -func (p *Process) Name() (string, error) { - return p.NameWithContext(context.Background()) -} func (p *Process) NameWithContext(ctx context.Context) (string, error) { k, err := p.getKProc() if err != nil { return "", err } + name := common.IntToString(k.Comm[:]) - return common.IntToString(k.Comm[:]), nil -} -func (p *Process) Tgid() (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) Exe() (string, error) { - return p.ExeWithContext(context.Background()) + if len(name) >= 15 { + cmdlineSlice, err := p.CmdlineSliceWithContext(ctx) + if err != nil { + return "", err + } + if len(cmdlineSlice) > 0 { + extendedName := filepath.Base(cmdlineSlice[0]) + if strings.HasPrefix(extendedName, p.name) { + name = extendedName + } else { + name = cmdlineSlice[0] + } + } + } + + return name, nil } func (p *Process) ExeWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) CmdlineSlice() ([]string, error) { - return p.CmdlineSliceWithContext(context.Background()) -} - func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) { mib := []int32{CTLKern, KernProcArgs, p.Pid, KernProcArgv} buf, _, err := common.CallSyscall(mib) @@ -104,41 +93,20 @@ func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) return strParts, nil } -func (p *Process) Cmdline() (string, error) { - return p.CmdlineWithContext(context.Background()) -} - func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { - argv, err := p.CmdlineSlice() + argv, err := p.CmdlineSliceWithContext(ctx) if err != nil { return "", err } return strings.Join(argv, " "), nil } -func (p *Process) CreateTime() (int64, error) { - return p.CreateTimeWithContext(context.Background()) -} - -func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { +func (p *Process) createTimeWithContext(ctx context.Context) (int64, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Cwd() (string, error) { - return p.CwdWithContext(context.Background()) -} - -func (p *Process) CwdWithContext(ctx context.Context) (string, error) { - return "", common.ErrNotImplementedError -} -func (p *Process) Parent() (*Process, error) { - return p.ParentWithContext(context.Background()) -} func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { - return p, common.ErrNotImplementedError -} -func (p *Process) Status() (string, error) { - return p.StatusWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) StatusWithContext(ctx context.Context) (string, error) { @@ -162,9 +130,6 @@ func (p *Process) StatusWithContext(ctx context.Context) (string, error) { return s, nil } -func (p *Process) Foreground() (bool, error) { - return p.ForegroundWithContext(context.Background()) -} func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { // see https://github.com/shirou/gopsutil/issues/596#issuecomment-432707831 for implementation details @@ -179,9 +144,6 @@ func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { } return strings.IndexByte(string(out), '+') != -1, nil } -func (p *Process) Uids() ([]int32, error) { - return p.UidsWithContext(context.Background()) -} func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { k, err := p.getKProc() @@ -195,9 +157,6 @@ func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { return uids, nil } -func (p *Process) Gids() ([]int32, error) { - return p.GidsWithContext(context.Background()) -} func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { k, err := p.getKProc() @@ -210,8 +169,19 @@ func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { return gids, nil } -func (p *Process) Terminal() (string, error) { - return p.TerminalWithContext(context.Background()) + +func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error) { + k, err := p.getKProc() + if err != nil { + return nil, err + } + + groups := make([]int32, k.Ngroups) + for i := int16(0); i < k.Ngroups; i++ { + groups[i] = int32(k.Groups[i]) + } + + return groups, nil } func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { @@ -229,9 +199,6 @@ func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { return termmap[ttyNr], nil } -func (p *Process) Nice() (int32, error) { - return p.NiceWithContext(context.Background()) -} func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { k, err := p.getKProc() @@ -240,32 +207,6 @@ func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { } return int32(k.Nice), nil } -func (p *Process) IOnice() (int32, error) { - return p.IOniceWithContext(context.Background()) -} - -func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) Rlimit() ([]RlimitStat, error) { - return p.RlimitWithContext(context.Background()) -} - -func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { - var rlimit []RlimitStat - return rlimit, common.ErrNotImplementedError -} -func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { - return p.RlimitUsageWithContext(context.Background(), gatherUsed) -} - -func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { - var rlimit []RlimitStat - return rlimit, common.ErrNotImplementedError -} -func (p *Process) IOCounters() (*IOCountersStat, error) { - return p.IOCountersWithContext(context.Background()) -} func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error) { k, err := p.getKProc() @@ -277,39 +218,11 @@ func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, e WriteCount: uint64(k.Uru_oublock), }, nil } -func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { - return p.NumCtxSwitchesWithContext(context.Background()) -} - -func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { - return nil, common.ErrNotImplementedError -} -func (p *Process) NumFDs() (int32, error) { - return p.NumFDsWithContext(context.Background()) -} - -func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { - return 0, common.ErrNotImplementedError -} -func (p *Process) NumThreads() (int32, error) { - return p.NumThreadsWithContext(context.Background()) -} func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { /* not supported, just return 1 */ return 1, nil } -func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { - return p.ThreadsWithContext(context.Background()) -} - -func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { - ret := make(map[int32]*cpu.TimesStat) - return ret, common.ErrNotImplementedError -} -func (p *Process) Times() (*cpu.TimesStat, error) { - return p.TimesWithContext(context.Background()) -} func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) { k, err := p.getKProc() @@ -322,23 +235,13 @@ func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) System: float64(k.Ustime_sec) + float64(k.Ustime_usec)/1000000, }, nil } -func (p *Process) CPUAffinity() ([]int32, error) { - return p.CPUAffinityWithContext(context.Background()) -} - -func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { - return nil, common.ErrNotImplementedError -} -func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { - return p.MemoryInfoWithContext(context.Background()) -} func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error) { k, err := p.getKProc() if err != nil { return nil, err } - pageSize, err := mem.GetPageSize() + pageSize, err := mem.GetPageSizeWithContext(ctx) if err != nil { return nil, err } @@ -349,17 +252,6 @@ func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, e uint64(k.Vm_ssize), }, nil } -func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { - return p.MemoryInfoExWithContext(context.Background()) -} - -func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Children() ([]*Process, error) { - return p.ChildrenWithContext(context.Background()) -} func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { pids, err := common.CallPgrepWithContext(ctx, invoke, p.Pid) @@ -368,7 +260,7 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { } ret := make([]*Process, 0, len(pids)) for _, pid := range pids { - np, err := NewProcess(pid) + np, err := NewProcessWithContext(ctx, pid) if err != nil { return nil, err } @@ -377,54 +269,18 @@ func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { return ret, nil } -func (p *Process) OpenFiles() ([]OpenFilesStat, error) { - return p.OpenFilesWithContext(context.Background()) -} - -func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { - return nil, common.ErrNotImplementedError -} - -func (p *Process) Connections() ([]net.ConnectionStat, error) { - return p.ConnectionsWithContext(context.Background()) -} - func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { - return p.NetIOCountersWithContext(context.Background(), pernic) -} - -func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { +func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) IsRunning() (bool, error) { - return p.IsRunningWithContext(context.Background()) -} - -func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { - return true, common.ErrNotImplementedError -} -func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { - return p.MemoryMapsWithContext(context.Background(), grouped) -} - -func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { - var ret []MemoryMapsStat - return &ret, common.ErrNotImplementedError -} - -func Processes() ([]*Process, error) { - return ProcessesWithContext(context.Background()) -} - func ProcessesWithContext(ctx context.Context) ([]*Process, error) { results := []*Process{} - buf, length, err := CallKernProcSyscall(KernProcAll, 0) + buf, length, err := callKernProcSyscall(KernProcAll, 0) if err != nil { return results, err @@ -440,7 +296,7 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { if err != nil { continue } - p, err := NewProcess(int32(k.Pid)) + p, err := NewProcessWithContext(ctx, int32(k.Pid)) if err != nil { continue } @@ -451,19 +307,8 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { return results, nil } -func parseKinfoProc(buf []byte) (KinfoProc, error) { - var k KinfoProc - br := bytes.NewReader(buf) - err := common.Read(br, binary.LittleEndian, &k) - return k, err -} - func (p *Process) getKProc() (*KinfoProc, error) { - return p.getKProcWithContext(context.Background()) -} - -func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { - buf, length, err := CallKernProcSyscall(KernProcPID, p.Pid) + buf, length, err := callKernProcSyscall(KernProcPID, p.Pid) if err != nil { return nil, err } @@ -478,17 +323,7 @@ func (p *Process) getKProcWithContext(ctx context.Context) (*KinfoProc, error) { return &k, nil } -func NewProcess(pid int32) (*Process, error) { - p := &Process{Pid: pid} - - return p, nil -} - -func CallKernProcSyscall(op int32, arg int32) ([]byte, uint64, error) { - return CallKernProcSyscallWithContext(context.Background(), op, arg) -} - -func CallKernProcSyscallWithContext(ctx context.Context, op int32, arg int32) ([]byte, uint64, error) { +func callKernProcSyscall(op int32, arg int32) ([]byte, uint64, error) { mib := []int32{CTLKern, KernProc, op, arg, sizeOfKinfoProc, 0} mibptr := unsafe.Pointer(&mib[0]) miblen := uint64(len(mib)) diff --git a/vendor/github.com/shirou/gopsutil/process/process_openbsd_386.go b/vendor/github.com/shirou/gopsutil/process/process_openbsd_386.go new file mode 100644 index 000000000..b89fb8dc2 --- /dev/null +++ b/vendor/github.com/shirou/gopsutil/process/process_openbsd_386.go @@ -0,0 +1,201 @@ +// +build openbsd +// +build 386 +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs process/types_openbsd.go + +package process + +const ( + CTLKern = 1 + KernProc = 66 + KernProcAll = 0 + KernProcPID = 1 + KernProcProc = 8 + KernProcPathname = 12 + KernProcArgs = 55 + KernProcArgv = 1 + KernProcEnv = 3 +) + +const ( + ArgMax = 256 * 1024 +) + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 +) + +const ( + sizeOfKinfoVmentry = 0x38 + sizeOfKinfoProc = 0x264 +) + +const ( + SIDL = 1 + SRUN = 2 + SSLEEP = 3 + SSTOP = 4 + SZOMB = 5 + SDEAD = 6 + SONPROC = 7 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type KinfoProc struct { + Forw uint64 + Back uint64 + Paddr uint64 + Addr uint64 + Fd uint64 + Stats uint64 + Limit uint64 + Vmspace uint64 + Sigacts uint64 + Sess uint64 + Tsess uint64 + Ru uint64 + Eflag int32 + Exitsig int32 + Flag int32 + Pid int32 + Ppid int32 + Sid int32 + X_pgid int32 + Tpgid int32 + Uid uint32 + Ruid uint32 + Gid uint32 + Rgid uint32 + Groups [16]uint32 + Ngroups int16 + Jobc int16 + Tdev uint32 + Estcpu uint32 + Rtime_sec uint32 + Rtime_usec uint32 + Cpticks int32 + Pctcpu uint32 + Swtime uint32 + Slptime uint32 + Schedflags int32 + Uticks uint64 + Sticks uint64 + Iticks uint64 + Tracep uint64 + Traceflag int32 + Holdcnt int32 + Siglist int32 + Sigmask uint32 + Sigignore uint32 + Sigcatch uint32 + Stat int8 + Priority uint8 + Usrpri uint8 + Nice uint8 + Xstat uint16 + Acflag uint16 + Comm [24]int8 + Wmesg [8]int8 + Wchan uint64 + Login [32]int8 + Vm_rssize int32 + Vm_tsize int32 + Vm_dsize int32 + Vm_ssize int32 + Uvalid int64 + Ustart_sec uint64 + Ustart_usec uint32 + Uutime_sec uint32 + Uutime_usec uint32 + Ustime_sec uint32 + Ustime_usec uint32 + Uru_maxrss uint64 + Uru_ixrss uint64 + Uru_idrss uint64 + Uru_isrss uint64 + Uru_minflt uint64 + Uru_majflt uint64 + Uru_nswap uint64 + Uru_inblock uint64 + Uru_oublock uint64 + Uru_msgsnd uint64 + Uru_msgrcv uint64 + Uru_nsignals uint64 + Uru_nvcsw uint64 + Uru_nivcsw uint64 + Uctime_sec uint32 + Uctime_usec uint32 + Psflags int32 + Spare int32 + Svuid uint32 + Svgid uint32 + Emul [8]int8 + Rlim_rss_cur uint64 + Cpuid uint64 + Vm_map_size uint64 + Tid int32 + Rtableid uint32 +} + +type Priority struct{} + +type KinfoVmentry struct { + Start uint32 + End uint32 + Guard uint32 + Fspace uint32 + Fspace_augment uint32 + Offset uint64 + Wired_count int32 + Etype int32 + Protection int32 + Max_protection int32 + Advice int32 + Inheritance int32 + Flags uint8 + Pad_cgo_0 [3]byte +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_posix.go b/vendor/github.com/shirou/gopsutil/process/process_posix.go index 8ffb6b797..0074c6b0f 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_posix.go +++ b/vendor/github.com/shirou/gopsutil/process/process_posix.go @@ -4,6 +4,7 @@ package process import ( "context" + "fmt" "os" "os/user" "path/filepath" @@ -11,6 +12,7 @@ import ( "strings" "syscall" + "github.com/shirou/gopsutil/internal/common" "golang.org/x/sys/unix" ) @@ -69,10 +71,47 @@ func getTerminalMap() (map[uint64]string, error) { return ret, nil } -// SendSignal sends a unix.Signal to the process. -// Currently, SIGSTOP, SIGCONT, SIGTERM and SIGKILL are supported. -func (p *Process) SendSignal(sig syscall.Signal) error { - return p.SendSignalWithContext(context.Background(), sig) +func PidExistsWithContext(ctx context.Context, pid int32) (bool, error) { + if pid <= 0 { + return false, fmt.Errorf("invalid pid %v", pid) + } + proc, err := os.FindProcess(int(pid)) + if err != nil { + return false, err + } + + if _, err := os.Stat(common.HostProc()); err == nil { //Means that proc filesystem exist + // Checking PID existence based on existence of //proc/ folder + // This covers the case when running inside container with a different process namespace (by default) + + _, err := os.Stat(common.HostProc(strconv.Itoa(int(pid)))) + if os.IsNotExist(err) { + return false, nil + } + return err == nil, err + } + + //'/proc' filesystem is not exist, checking of PID existence is done via signalling the process + //Make sense only if we run in the same process namespace + err = proc.Signal(syscall.Signal(0)) + if err == nil { + return true, nil + } + if err.Error() == "os: process already finished" { + return false, nil + } + errno, ok := err.(syscall.Errno) + if !ok { + return false, err + } + switch errno { + case syscall.ESRCH: + return false, nil + case syscall.EPERM: + return true, nil + } + + return false, err } func (p *Process) SendSignalWithContext(ctx context.Context, sig syscall.Signal) error { @@ -89,49 +128,24 @@ func (p *Process) SendSignalWithContext(ctx context.Context, sig syscall.Signal) return nil } -// Suspend sends SIGSTOP to the process. -func (p *Process) Suspend() error { - return p.SuspendWithContext(context.Background()) -} - func (p *Process) SuspendWithContext(ctx context.Context) error { - return p.SendSignal(unix.SIGSTOP) -} - -// Resume sends SIGCONT to the process. -func (p *Process) Resume() error { - return p.ResumeWithContext(context.Background()) + return p.SendSignalWithContext(ctx, unix.SIGSTOP) } func (p *Process) ResumeWithContext(ctx context.Context) error { - return p.SendSignal(unix.SIGCONT) -} - -// Terminate sends SIGTERM to the process. -func (p *Process) Terminate() error { - return p.TerminateWithContext(context.Background()) + return p.SendSignalWithContext(ctx, unix.SIGCONT) } func (p *Process) TerminateWithContext(ctx context.Context) error { - return p.SendSignal(unix.SIGTERM) -} - -// Kill sends SIGKILL to the process. -func (p *Process) Kill() error { - return p.KillWithContext(context.Background()) + return p.SendSignalWithContext(ctx, unix.SIGTERM) } func (p *Process) KillWithContext(ctx context.Context) error { - return p.SendSignal(unix.SIGKILL) -} - -// Username returns a username of the process. -func (p *Process) Username() (string, error) { - return p.UsernameWithContext(context.Background()) + return p.SendSignalWithContext(ctx, unix.SIGKILL) } func (p *Process) UsernameWithContext(ctx context.Context) (string, error) { - uids, err := p.Uids() + uids, err := p.UidsWithContext(ctx) if err != nil { return "", err } diff --git a/vendor/github.com/shirou/gopsutil/process/process_windows.go b/vendor/github.com/shirou/gopsutil/process/process_windows.go index 48a12133c..1501dff48 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_windows.go +++ b/vendor/github.com/shirou/gopsutil/process/process_windows.go @@ -4,33 +4,38 @@ package process import ( "context" + "errors" "fmt" "os" "strings" "syscall" - "time" "unsafe" - "github.com/StackExchange/wmi" cpu "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/internal/common" net "github.com/shirou/gopsutil/net" - "github.com/shirou/w32" "golang.org/x/sys/windows" ) -const ( - NoMoreFiles = 0x12 - MaxPathLength = 260 -) - var ( - modpsapi = windows.NewLazySystemDLL("psapi.dll") - procGetProcessMemoryInfo = modpsapi.NewProc("GetProcessMemoryInfo") + modntdll = windows.NewLazySystemDLL("ntdll.dll") + procNtResumeProcess = modntdll.NewProc("NtResumeProcess") + procNtSuspendProcess = modntdll.NewProc("NtSuspendProcess") + + modpsapi = windows.NewLazySystemDLL("psapi.dll") + procGetProcessMemoryInfo = modpsapi.NewProc("GetProcessMemoryInfo") + procGetProcessImageFileNameW = modpsapi.NewProc("GetProcessImageFileNameW") advapi32 = windows.NewLazySystemDLL("advapi32.dll") procLookupPrivilegeValue = advapi32.NewProc("LookupPrivilegeValueW") procAdjustTokenPrivileges = advapi32.NewProc("AdjustTokenPrivileges") + + procQueryFullProcessImageNameW = common.Modkernel32.NewProc("QueryFullProcessImageNameW") + procGetPriorityClass = common.Modkernel32.NewProc("GetPriorityClass") + procGetProcessIoCounters = common.Modkernel32.NewProc("GetProcessIoCounters") + procGetNativeSystemInfo = common.Modkernel32.NewProc("GetNativeSystemInfo") + + processorArchitecture uint ) type SystemProcessInformation struct { @@ -48,6 +53,28 @@ type SystemProcessInformation struct { Reserved6 [6]uint64 } +type systemProcessorInformation struct { + ProcessorArchitecture uint16 + ProcessorLevel uint16 + ProcessorRevision uint16 + Reserved uint16 + ProcessorFeatureBits uint16 +} + +type systemInfo struct { + wProcessorArchitecture uint16 + wReserved uint16 + dwPageSize uint32 + lpMinimumApplicationAddress uintptr + lpMaximumApplicationAddress uintptr + dwActiveProcessorMask uintptr + dwNumberOfProcessors uint32 + dwProcessorType uint32 + dwAllocationGranularity uint32 + wProcessorLevel uint16 + wProcessorRevision uint16 +} + // Memory_info_ex is different between OSes type MemoryInfoExStat struct { } @@ -55,43 +82,33 @@ type MemoryInfoExStat struct { type MemoryMapsStat struct { } -type Win32_Process struct { - Name string - ExecutablePath *string - CommandLine *string - Priority uint32 - CreationDate *time.Time - ProcessID uint32 - ThreadCount uint32 - Status *string - ReadOperationCount uint64 - ReadTransferCount uint64 - WriteOperationCount uint64 - WriteTransferCount uint64 - CSCreationClassName string - CSName string - Caption *string - CreationClassName string - Description *string - ExecutionState *uint16 - HandleCount uint32 - KernelModeTime uint64 - MaximumWorkingSetSize *uint32 - MinimumWorkingSetSize *uint32 - OSCreationClassName string - OSName string - OtherOperationCount uint64 - OtherTransferCount uint64 - PageFaults uint32 - PageFileUsage uint32 - ParentProcessID uint32 - PeakPageFileUsage uint32 - PeakVirtualSize uint64 - PeakWorkingSetSize uint32 - PrivatePageCount uint64 - TerminationDate *time.Time - UserModeTime uint64 - WorkingSetSize uint64 +// ioCounters is an equivalent representation of IO_COUNTERS in the Windows API. +// https://docs.microsoft.com/windows/win32/api/winnt/ns-winnt-io_counters +type ioCounters struct { + ReadOperationCount uint64 + WriteOperationCount uint64 + OtherOperationCount uint64 + ReadTransferCount uint64 + WriteTransferCount uint64 + OtherTransferCount uint64 +} + +type processBasicInformation32 struct { + Reserved1 uint32 + PebBaseAddress uint32 + Reserved2 uint32 + Reserved3 uint32 + UniqueProcessId uint32 + Reserved4 uint32 +} + +type processBasicInformation64 struct { + Reserved1 uint64 + PebBaseAddress uint64 + Reserved2 uint64 + Reserved3 uint64 + UniqueProcessId uint64 + Reserved4 uint64 } type winLUID struct { @@ -115,7 +132,10 @@ type winLong int32 type winDWord uint32 func init() { - wmi.DefaultClient.AllowMissingFields = true + var systemInfo systemInfo + + procGetNativeSystemInfo.Call(uintptr(unsafe.Pointer(&systemInfo))) + processorArchitecture = uint(systemInfo.wProcessorArchitecture) // enable SeDebugPrivilege https://github.com/midstar/proci/blob/6ec79f57b90ba3d9efa2a7b16ef9c9369d4be875/proci_windows.go#L80-L119 handle, err := syscall.GetCurrentProcess() @@ -151,11 +171,7 @@ func init() { 0) } -func Pids() ([]int32, error) { - return PidsWithContext(context.Background()) -} - -func PidsWithContext(ctx context.Context) ([]int32, error) { +func pidsWithContext(ctx context.Context) ([]int32, error) { // inspired by https://gist.github.com/henkman/3083408 // and https://github.com/giampaolo/psutil/blob/1c3a15f637521ba5c0031283da39c733fda53e4c/psutil/arch/windows/process_info.c#L315-L329 var ret []int32 @@ -165,8 +181,8 @@ func PidsWithContext(ctx context.Context) ([]int32, error) { for { ps := make([]uint32, psSize) - if !w32.EnumProcesses(ps, uint32(len(ps)), &read) { - return nil, fmt.Errorf("could not get w32.EnumProcesses") + if err := windows.EnumProcesses(ps, &read); err != nil { + return nil, err } if uint32(len(ps)) == read { // ps buffer was too small to host every results, retry with a bigger one psSize += 1024 @@ -181,96 +197,114 @@ func PidsWithContext(ctx context.Context) ([]int32, error) { } -func (p *Process) Ppid() (int32, error) { - return p.PpidWithContext(context.Background()) +func PidExistsWithContext(ctx context.Context, pid int32) (bool, error) { + if pid == 0 { // special case for pid 0 System Idle Process + return true, nil + } + if pid < 0 { + return false, fmt.Errorf("invalid pid %v", pid) + } + if pid%4 != 0 { + // OpenProcess will succeed even on non-existing pid here https://devblogs.microsoft.com/oldnewthing/20080606-00/?p=22043 + // so we list every pid just to be sure and be future-proof + pids, err := PidsWithContext(ctx) + if err != nil { + return false, err + } + for _, i := range pids { + if i == pid { + return true, err + } + } + return false, err + } + const STILL_ACTIVE = 259 // https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getexitcodeprocess + h, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(pid)) + if err == windows.ERROR_ACCESS_DENIED { + return true, nil + } + if err == windows.ERROR_INVALID_PARAMETER { + return false, nil + } + if err != nil { + return false, err + } + defer syscall.CloseHandle(syscall.Handle(h)) + var exitCode uint32 + err = windows.GetExitCodeProcess(h, &exitCode) + return exitCode == STILL_ACTIVE, err } func (p *Process) PpidWithContext(ctx context.Context) (int32, error) { + // if cached already, return from cache + cachedPpid := p.getPpid() + if cachedPpid != 0 { + return cachedPpid, nil + } + ppid, _, _, err := getFromSnapProcess(p.Pid) if err != nil { return 0, err } + + // no errors and not cached already, so cache it + p.setPpid(ppid) + return ppid, nil } -func GetWin32Proc(pid int32) ([]Win32_Process, error) { - return GetWin32ProcWithContext(context.Background(), pid) -} - -func GetWin32ProcWithContext(ctx context.Context, pid int32) ([]Win32_Process, error) { - var dst []Win32_Process - query := fmt.Sprintf("WHERE ProcessId = %d", pid) - q := wmi.CreateQuery(&dst, query) - err := common.WMIQueryWithContext(ctx, q, &dst) - if err != nil { - return []Win32_Process{}, fmt.Errorf("could not get win32Proc: %s", err) - } - - if len(dst) == 0 { - return []Win32_Process{}, fmt.Errorf("could not get win32Proc: empty") - } - - return dst, nil -} - -func (p *Process) Name() (string, error) { - return p.NameWithContext(context.Background()) -} - func (p *Process) NameWithContext(ctx context.Context) (string, error) { - _, _, name, err := getFromSnapProcess(p.Pid) + ppid, _, name, err := getFromSnapProcess(p.Pid) if err != nil { return "", fmt.Errorf("could not get Name: %s", err) } + + // if no errors and not cached already, cache ppid + p.parent = ppid + if 0 == p.getPpid() { + p.setPpid(ppid) + } + return name, nil } -func (p *Process) Tgid() (int32, error) { +func (p *Process) TgidWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Exe() (string, error) { - return p.ExeWithContext(context.Background()) -} - func (p *Process) ExeWithContext(ctx context.Context) (string, error) { - if p.Pid != 0 { // 0 or null is the current process for CreateToolhelp32Snapshot - snap := w32.CreateToolhelp32Snapshot(w32.TH32CS_SNAPMODULE|w32.TH32CS_SNAPMODULE32, uint32(p.Pid)) - if snap != 0 { // don't report errors here, fallback to WMI instead - defer w32.CloseHandle(snap) - var me32 w32.MODULEENTRY32 - me32.Size = uint32(unsafe.Sizeof(me32)) - - if w32.Module32First(snap, &me32) { - szexepath := windows.UTF16ToString(me32.SzExePath[:]) - return szexepath, nil - } - } - } - dst, err := GetWin32ProcWithContext(ctx, p.Pid) + c, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(p.Pid)) if err != nil { - return "", fmt.Errorf("could not get ExecutablePath: %s", err) + return "", err } - return *dst[0].ExecutablePath, nil + defer windows.CloseHandle(c) + buf := make([]uint16, syscall.MAX_LONG_PATH) + size := uint32(syscall.MAX_LONG_PATH) + if err := procQueryFullProcessImageNameW.Find(); err == nil { // Vista+ + ret, _, err := procQueryFullProcessImageNameW.Call( + uintptr(c), + uintptr(0), + uintptr(unsafe.Pointer(&buf[0])), + uintptr(unsafe.Pointer(&size))) + if ret == 0 { + return "", err + } + return windows.UTF16ToString(buf[:]), nil + } + // XP fallback + ret, _, err := procGetProcessImageFileNameW.Call(uintptr(c), uintptr(unsafe.Pointer(&buf[0])), uintptr(size)) + if ret == 0 { + return "", err + } + return common.ConvertDOSPath(windows.UTF16ToString(buf[:])), nil } -func (p *Process) Cmdline() (string, error) { - return p.CmdlineWithContext(context.Background()) -} - -func (p *Process) CmdlineWithContext(ctx context.Context) (string, error) { - dst, err := GetWin32ProcWithContext(ctx, p.Pid) +func (p *Process) CmdlineWithContext(_ context.Context) (string, error) { + cmdline, err := getProcessCommandLine(p.Pid) if err != nil { return "", fmt.Errorf("could not get CommandLine: %s", err) } - return *dst[0].CommandLine, nil -} - -// CmdlineSlice returns the command line arguments of the process as a slice with each -// element being an argument. This merely returns the CommandLine informations passed -// to the process split on the 0x20 ASCII character. -func (p *Process) CmdlineSlice() ([]string, error) { - return p.CmdlineSliceWithContext(context.Background()) + return cmdline, nil } func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) { @@ -281,11 +315,7 @@ func (p *Process) CmdlineSliceWithContext(ctx context.Context) ([]string, error) return strings.Split(cmdline, " "), nil } -func (p *Process) CreateTime() (int64, error) { - return p.CreateTimeWithContext(context.Background()) -} - -func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { +func (p *Process) createTimeWithContext(ctx context.Context) (int64, error) { ru, err := getRusage(p.Pid) if err != nil { return 0, fmt.Errorf("could not get CreationDate: %s", err) @@ -294,16 +324,9 @@ func (p *Process) CreateTimeWithContext(ctx context.Context) (int64, error) { return ru.CreationTime.Nanoseconds() / 1000000, nil } -func (p *Process) Cwd() (string, error) { - return p.CwdWithContext(context.Background()) -} - func (p *Process) CwdWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Parent() (*Process, error) { - return p.ParentWithContext(context.Background()) -} func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { ppid, err := p.PpidWithContext(ctx) @@ -311,39 +334,27 @@ func (p *Process) ParentWithContext(ctx context.Context) (*Process, error) { return nil, fmt.Errorf("could not get ParentProcessID: %s", err) } - return NewProcess(ppid) -} -func (p *Process) Status() (string, error) { - return p.StatusWithContext(context.Background()) + return NewProcessWithContext(ctx, ppid) } func (p *Process) StatusWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -func (p *Process) Foreground() (bool, error) { - return p.ForegroundWithContext(context.Background()) -} - func (p *Process) ForegroundWithContext(ctx context.Context) (bool, error) { return false, common.ErrNotImplementedError } -func (p *Process) Username() (string, error) { - return p.UsernameWithContext(context.Background()) -} - func (p *Process) UsernameWithContext(ctx context.Context) (string, error) { pid := p.Pid - // 0x1000 is PROCESS_QUERY_LIMITED_INFORMATION - c, err := syscall.OpenProcess(0x1000, false, uint32(pid)) + c, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(pid)) if err != nil { return "", err } - defer syscall.CloseHandle(c) + defer windows.CloseHandle(c) var token syscall.Token - err = syscall.OpenProcessToken(c, syscall.TOKEN_QUERY, &token) + err = syscall.OpenProcessToken(syscall.Handle(c), syscall.TOKEN_QUERY, &token) if err != nil { return "", err } @@ -357,122 +368,109 @@ func (p *Process) UsernameWithContext(ctx context.Context) (string, error) { return domain + "\\" + user, err } -func (p *Process) Uids() ([]int32, error) { - return p.UidsWithContext(context.Background()) -} - func (p *Process) UidsWithContext(ctx context.Context) ([]int32, error) { - var uids []int32 - - return uids, common.ErrNotImplementedError -} -func (p *Process) Gids() ([]int32, error) { - return p.GidsWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) GidsWithContext(ctx context.Context) ([]int32, error) { - var gids []int32 - return gids, common.ErrNotImplementedError + return nil, common.ErrNotImplementedError } -func (p *Process) Terminal() (string, error) { - return p.TerminalWithContext(context.Background()) + +func (p *Process) GroupsWithContext(ctx context.Context) ([]int32, error) { + return nil, common.ErrNotImplementedError } func (p *Process) TerminalWithContext(ctx context.Context) (string, error) { return "", common.ErrNotImplementedError } -// Nice returns priority in Windows -func (p *Process) Nice() (int32, error) { - return p.NiceWithContext(context.Background()) +// priorityClasses maps a win32 priority class to its WMI equivalent Win32_Process.Priority +// https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-getpriorityclass +// https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-process +var priorityClasses = map[int]int32{ + 0x00008000: 10, // ABOVE_NORMAL_PRIORITY_CLASS + 0x00004000: 6, // BELOW_NORMAL_PRIORITY_CLASS + 0x00000080: 13, // HIGH_PRIORITY_CLASS + 0x00000040: 4, // IDLE_PRIORITY_CLASS + 0x00000020: 8, // NORMAL_PRIORITY_CLASS + 0x00000100: 24, // REALTIME_PRIORITY_CLASS } func (p *Process) NiceWithContext(ctx context.Context) (int32, error) { - dst, err := GetWin32ProcWithContext(ctx, p.Pid) + c, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(p.Pid)) if err != nil { - return 0, fmt.Errorf("could not get Priority: %s", err) + return 0, err } - return int32(dst[0].Priority), nil -} -func (p *Process) IOnice() (int32, error) { - return p.IOniceWithContext(context.Background()) + defer windows.CloseHandle(c) + ret, _, err := procGetPriorityClass.Call(uintptr(c)) + if ret == 0 { + return 0, err + } + priority, ok := priorityClasses[int(ret)] + if !ok { + return 0, fmt.Errorf("unknown priority class %v", ret) + } + return priority, nil } func (p *Process) IOniceWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) Rlimit() ([]RlimitStat, error) { - return p.RlimitWithContext(context.Background()) -} func (p *Process) RlimitWithContext(ctx context.Context) ([]RlimitStat, error) { - var rlimit []RlimitStat - - return rlimit, common.ErrNotImplementedError -} -func (p *Process) RlimitUsage(gatherUsed bool) ([]RlimitStat, error) { - return p.RlimitUsageWithContext(context.Background(), gatherUsed) + return nil, common.ErrNotImplementedError } func (p *Process) RlimitUsageWithContext(ctx context.Context, gatherUsed bool) ([]RlimitStat, error) { - var rlimit []RlimitStat - - return rlimit, common.ErrNotImplementedError -} - -func (p *Process) IOCounters() (*IOCountersStat, error) { - return p.IOCountersWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) IOCountersWithContext(ctx context.Context) (*IOCountersStat, error) { - dst, err := GetWin32ProcWithContext(ctx, p.Pid) - if err != nil || len(dst) == 0 { - return nil, fmt.Errorf("could not get Win32Proc: %s", err) + c, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(p.Pid)) + if err != nil { + return nil, err } - ret := &IOCountersStat{ - ReadCount: uint64(dst[0].ReadOperationCount), - ReadBytes: uint64(dst[0].ReadTransferCount), - WriteCount: uint64(dst[0].WriteOperationCount), - WriteBytes: uint64(dst[0].WriteTransferCount), + defer windows.CloseHandle(c) + var ioCounters ioCounters + ret, _, err := procGetProcessIoCounters.Call(uintptr(c), uintptr(unsafe.Pointer(&ioCounters))) + if ret == 0 { + return nil, err + } + stats := &IOCountersStat{ + ReadCount: ioCounters.ReadOperationCount, + ReadBytes: ioCounters.ReadTransferCount, + WriteCount: ioCounters.WriteOperationCount, + WriteBytes: ioCounters.WriteTransferCount, } - return ret, nil -} -func (p *Process) NumCtxSwitches() (*NumCtxSwitchesStat, error) { - return p.NumCtxSwitchesWithContext(context.Background()) + return stats, nil } func (p *Process) NumCtxSwitchesWithContext(ctx context.Context) (*NumCtxSwitchesStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) NumFDs() (int32, error) { - return p.NumFDsWithContext(context.Background()) -} func (p *Process) NumFDsWithContext(ctx context.Context) (int32, error) { return 0, common.ErrNotImplementedError } -func (p *Process) NumThreads() (int32, error) { - return p.NumThreadsWithContext(context.Background()) -} func (p *Process) NumThreadsWithContext(ctx context.Context) (int32, error) { - dst, err := GetWin32ProcWithContext(ctx, p.Pid) + ppid, ret, _, err := getFromSnapProcess(p.Pid) if err != nil { - return 0, fmt.Errorf("could not get ThreadCount: %s", err) + return 0, err } - return int32(dst[0].ThreadCount), nil -} -func (p *Process) Threads() (map[int32]*cpu.TimesStat, error) { - return p.ThreadsWithContext(context.Background()) + + // if no errors and not cached already, cache ppid + p.parent = ppid + if 0 == p.getPpid() { + p.setPpid(ppid) + } + + return ret, nil } func (p *Process) ThreadsWithContext(ctx context.Context) (map[int32]*cpu.TimesStat, error) { - ret := make(map[int32]*cpu.TimesStat) - return ret, common.ErrNotImplementedError -} -func (p *Process) Times() (*cpu.TimesStat, error) { - return p.TimesWithContext(context.Background()) + return nil, common.ErrNotImplementedError } func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) { @@ -498,16 +496,10 @@ func (p *Process) TimesWithContext(ctx context.Context) (*cpu.TimesStat, error) System: kernel, }, nil } -func (p *Process) CPUAffinity() ([]int32, error) { - return p.CPUAffinityWithContext(context.Background()) -} func (p *Process) CPUAffinityWithContext(ctx context.Context) ([]int32, error) { return nil, common.ErrNotImplementedError } -func (p *Process) MemoryInfo() (*MemoryInfoStat, error) { - return p.MemoryInfoWithContext(context.Background()) -} func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, error) { mem, err := getMemoryInfo(p.Pid) @@ -522,138 +514,105 @@ func (p *Process) MemoryInfoWithContext(ctx context.Context) (*MemoryInfoStat, e return ret, nil } -func (p *Process) MemoryInfoEx() (*MemoryInfoExStat, error) { - return p.MemoryInfoExWithContext(context.Background()) -} func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) Children() ([]*Process, error) { - return p.ChildrenWithContext(context.Background()) +func (p *Process) PageFaultsWithContext(ctx context.Context) (*PageFaultsStat, error) { + return nil, common.ErrNotImplementedError } func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) { out := []*Process{} - snap := w32.CreateToolhelp32Snapshot(w32.TH32CS_SNAPPROCESS, uint32(0)) - if snap == 0 { - return out, windows.GetLastError() + snap, err := windows.CreateToolhelp32Snapshot(windows.TH32CS_SNAPPROCESS, uint32(0)) + if err != nil { + return out, err } - defer w32.CloseHandle(snap) - var pe32 w32.PROCESSENTRY32 - pe32.DwSize = uint32(unsafe.Sizeof(pe32)) - if w32.Process32First(snap, &pe32) == false { - return out, windows.GetLastError() + defer windows.CloseHandle(snap) + var pe32 windows.ProcessEntry32 + pe32.Size = uint32(unsafe.Sizeof(pe32)) + if err := windows.Process32First(snap, &pe32); err != nil { + return out, err } - - if pe32.Th32ParentProcessID == uint32(p.Pid) { - p, err := NewProcess(int32(pe32.Th32ProcessID)) - if err == nil { - out = append(out, p) - } - } - - for w32.Process32Next(snap, &pe32) { - if pe32.Th32ParentProcessID == uint32(p.Pid) { - p, err := NewProcess(int32(pe32.Th32ProcessID)) + for { + if pe32.ParentProcessID == uint32(p.Pid) { + p, err := NewProcessWithContext(ctx, int32(pe32.ProcessID)) if err == nil { out = append(out, p) } } + if err = windows.Process32Next(snap, &pe32); err != nil { + break + } } return out, nil } -func (p *Process) OpenFiles() ([]OpenFilesStat, error) { - return p.OpenFilesWithContext(context.Background()) -} - func (p *Process) OpenFilesWithContext(ctx context.Context) ([]OpenFilesStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) Connections() ([]net.ConnectionStat, error) { - return p.ConnectionsWithContext(context.Background()) -} - func (p *Process) ConnectionsWithContext(ctx context.Context) ([]net.ConnectionStat, error) { - return nil, common.ErrNotImplementedError + return net.ConnectionsPidWithContext(ctx, "all", p.Pid) } -func (p *Process) NetIOCounters(pernic bool) ([]net.IOCountersStat, error) { - return p.NetIOCountersWithContext(context.Background(), pernic) +func (p *Process) ConnectionsMaxWithContext(ctx context.Context, max int) ([]net.ConnectionStat, error) { + return nil, common.ErrNotImplementedError } func (p *Process) NetIOCountersWithContext(ctx context.Context, pernic bool) ([]net.IOCountersStat, error) { return nil, common.ErrNotImplementedError } -func (p *Process) IsRunning() (bool, error) { - return p.IsRunningWithContext(context.Background()) -} - -func (p *Process) IsRunningWithContext(ctx context.Context) (bool, error) { - return true, common.ErrNotImplementedError -} - -func (p *Process) MemoryMaps(grouped bool) (*[]MemoryMapsStat, error) { - return p.MemoryMapsWithContext(context.Background(), grouped) -} - func (p *Process) MemoryMapsWithContext(ctx context.Context, grouped bool) (*[]MemoryMapsStat, error) { - var ret []MemoryMapsStat - return &ret, common.ErrNotImplementedError + return nil, common.ErrNotImplementedError } -func NewProcess(pid int32) (*Process, error) { - p := &Process{Pid: pid} - - return p, nil -} - -func (p *Process) SendSignal(sig windows.Signal) error { - return p.SendSignalWithContext(context.Background(), sig) -} - -func (p *Process) SendSignalWithContext(ctx context.Context, sig windows.Signal) error { +func (p *Process) SendSignalWithContext(ctx context.Context, sig syscall.Signal) error { return common.ErrNotImplementedError } -func (p *Process) Suspend() error { - return p.SuspendWithContext(context.Background()) -} - func (p *Process) SuspendWithContext(ctx context.Context) error { - return common.ErrNotImplementedError -} -func (p *Process) Resume() error { - return p.ResumeWithContext(context.Background()) + c, err := windows.OpenProcess(windows.PROCESS_SUSPEND_RESUME, false, uint32(p.Pid)) + if err != nil { + return err + } + defer windows.CloseHandle(c) + + r1, _, _ := procNtSuspendProcess.Call(uintptr(c)) + if r1 != 0 { + // See https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55 + return fmt.Errorf("NtStatus='0x%.8X'", r1) + } + + return nil } func (p *Process) ResumeWithContext(ctx context.Context) error { - return common.ErrNotImplementedError -} + c, err := windows.OpenProcess(windows.PROCESS_SUSPEND_RESUME, false, uint32(p.Pid)) + if err != nil { + return err + } + defer windows.CloseHandle(c) -func (p *Process) Terminate() error { - return p.TerminateWithContext(context.Background()) + r1, _, _ := procNtResumeProcess.Call(uintptr(c)) + if r1 != 0 { + // See https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55 + return fmt.Errorf("NtStatus='0x%.8X'", r1) + } + + return nil } func (p *Process) TerminateWithContext(ctx context.Context) error { - // PROCESS_TERMINATE = 0x0001 - proc := w32.OpenProcess(0x0001, false, uint32(p.Pid)) - ret := w32.TerminateProcess(proc, 0) - w32.CloseHandle(proc) - - if ret == false { - return windows.GetLastError() - } else { - return nil + proc, err := windows.OpenProcess(windows.PROCESS_TERMINATE, false, uint32(p.Pid)) + if err != nil { + return err } -} - -func (p *Process) Kill() error { - return p.KillWithContext(context.Background()) + err = windows.TerminateProcess(proc, 0) + windows.CloseHandle(proc) + return err } func (p *Process) KillWithContext(ctx context.Context) error { @@ -661,35 +620,42 @@ func (p *Process) KillWithContext(ctx context.Context) error { return process.Kill() } -func getFromSnapProcess(pid int32) (int32, int32, string, error) { - snap := w32.CreateToolhelp32Snapshot(w32.TH32CS_SNAPPROCESS, uint32(pid)) - if snap == 0 { - return 0, 0, "", windows.GetLastError() - } - defer w32.CloseHandle(snap) - var pe32 w32.PROCESSENTRY32 - pe32.DwSize = uint32(unsafe.Sizeof(pe32)) - if w32.Process32First(snap, &pe32) == false { - return 0, 0, "", windows.GetLastError() - } - - if pe32.Th32ProcessID == uint32(pid) { - szexe := windows.UTF16ToString(pe32.SzExeFile[:]) - return int32(pe32.Th32ParentProcessID), int32(pe32.CntThreads), szexe, nil - } - - for w32.Process32Next(snap, &pe32) { - if pe32.Th32ProcessID == uint32(pid) { - szexe := windows.UTF16ToString(pe32.SzExeFile[:]) - return int32(pe32.Th32ParentProcessID), int32(pe32.CntThreads), szexe, nil - } - } - return 0, 0, "", fmt.Errorf("Couldn't find pid: %d", pid) +// retrieve Ppid in a thread-safe manner +func (p *Process) getPpid() int32 { + p.parentMutex.RLock() + defer p.parentMutex.RUnlock() + return p.parent } -// Get processes -func Processes() ([]*Process, error) { - return ProcessesWithContext(context.Background()) +// cache Ppid in a thread-safe manner (WINDOWS ONLY) +// see https://psutil.readthedocs.io/en/latest/#psutil.Process.ppid +func (p *Process) setPpid(ppid int32) { + p.parentMutex.Lock() + defer p.parentMutex.Unlock() + p.parent = ppid +} + +func getFromSnapProcess(pid int32) (int32, int32, string, error) { + snap, err := windows.CreateToolhelp32Snapshot(windows.TH32CS_SNAPPROCESS, uint32(pid)) + if err != nil { + return 0, 0, "", err + } + defer windows.CloseHandle(snap) + var pe32 windows.ProcessEntry32 + pe32.Size = uint32(unsafe.Sizeof(pe32)) + if err = windows.Process32First(snap, &pe32); err != nil { + return 0, 0, "", err + } + for { + if pe32.ProcessID == uint32(pid) { + szexe := windows.UTF16ToString(pe32.ExeFile[:]) + return int32(pe32.ParentProcessID), int32(pe32.Threads), szexe, nil + } + if err = windows.Process32Next(snap, &pe32); err != nil { + break + } + } + return 0, 0, "", fmt.Errorf("couldn't find pid: %d", pid) } func ProcessesWithContext(ctx context.Context) ([]*Process, error) { @@ -701,7 +667,7 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { } for _, pid := range pids { - p, err := NewProcess(pid) + p, err := NewProcessWithContext(ctx, pid) if err != nil { continue } @@ -711,28 +677,10 @@ func ProcessesWithContext(ctx context.Context) ([]*Process, error) { return out, nil } -func getProcInfo(pid int32) (*SystemProcessInformation, error) { - initialBufferSize := uint64(0x4000) - bufferSize := initialBufferSize - buffer := make([]byte, bufferSize) - - var sysProcInfo SystemProcessInformation - ret, _, _ := common.ProcNtQuerySystemInformation.Call( - uintptr(unsafe.Pointer(&sysProcInfo)), - uintptr(unsafe.Pointer(&buffer[0])), - uintptr(unsafe.Pointer(&bufferSize)), - uintptr(unsafe.Pointer(&bufferSize))) - if ret != 0 { - return nil, windows.GetLastError() - } - - return &sysProcInfo, nil -} - func getRusage(pid int32) (*windows.Rusage, error) { var CPU windows.Rusage - c, err := windows.OpenProcess(windows.PROCESS_QUERY_INFORMATION, false, uint32(pid)) + c, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(pid)) if err != nil { return nil, err } @@ -747,8 +695,7 @@ func getRusage(pid int32) (*windows.Rusage, error) { func getMemoryInfo(pid int32) (PROCESS_MEMORY_COUNTERS, error) { var mem PROCESS_MEMORY_COUNTERS - // PROCESS_QUERY_LIMITED_INFORMATION is 0x1000 - c, err := windows.OpenProcess(0x1000, false, uint32(pid)) + c, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(pid)) if err != nil { return mem, err } @@ -782,8 +729,7 @@ type SYSTEM_TIMES struct { func getProcessCPUTimes(pid int32) (SYSTEM_TIMES, error) { var times SYSTEM_TIMES - // PROCESS_QUERY_LIMITED_INFORMATION is 0x1000 - h, err := windows.OpenProcess(0x1000, false, uint32(pid)) + h, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, uint32(pid)) if err != nil { return times, err } @@ -799,3 +745,148 @@ func getProcessCPUTimes(pid int32) (SYSTEM_TIMES, error) { return times, err } + +func is32BitProcess(procHandle syscall.Handle) bool { + var wow64 uint + + ret, _, _ := common.ProcNtQueryInformationProcess.Call( + uintptr(procHandle), + uintptr(common.ProcessWow64Information), + uintptr(unsafe.Pointer(&wow64)), + uintptr(unsafe.Sizeof(wow64)), + uintptr(0), + ) + if int(ret) >= 0 { + if wow64 != 0 { + return true + } + } else { + //if the OS does not support the call, we fallback into the bitness of the app + if unsafe.Sizeof(wow64) == 4 { + return true + } + } + return false +} + +func getProcessCommandLine(pid int32) (string, error) { + h, err := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION|windows.PROCESS_VM_READ, false, uint32(pid)) + if err == windows.ERROR_ACCESS_DENIED || err == windows.ERROR_INVALID_PARAMETER { + return "", nil + } + if err != nil { + return "", err + } + defer syscall.CloseHandle(syscall.Handle(h)) + + const ( + PROCESSOR_ARCHITECTURE_INTEL = 0 + PROCESSOR_ARCHITECTURE_ARM = 5 + PROCESSOR_ARCHITECTURE_ARM64 = 12 + PROCESSOR_ARCHITECTURE_IA64 = 6 + PROCESSOR_ARCHITECTURE_AMD64 = 9 + ) + + procIs32Bits := true + switch processorArchitecture { + case PROCESSOR_ARCHITECTURE_INTEL: + fallthrough + case PROCESSOR_ARCHITECTURE_ARM: + procIs32Bits = true + + case PROCESSOR_ARCHITECTURE_ARM64: + fallthrough + case PROCESSOR_ARCHITECTURE_IA64: + fallthrough + case PROCESSOR_ARCHITECTURE_AMD64: + procIs32Bits = is32BitProcess(syscall.Handle(h)) + + default: + //for other unknown platforms, we rely on process platform + if unsafe.Sizeof(processorArchitecture) == 8 { + procIs32Bits = false + } + } + + pebAddress := queryPebAddress(syscall.Handle(h), procIs32Bits) + if pebAddress == 0 { + return "", errors.New("cannot locate process PEB") + } + + if procIs32Bits { + buf := readProcessMemory(syscall.Handle(h), procIs32Bits, pebAddress+uint64(16), 4) + if len(buf) != 4 { + return "", errors.New("cannot locate process user parameters") + } + userProcParams := uint64(buf[0]) | (uint64(buf[1]) << 8) | (uint64(buf[2]) << 16) | (uint64(buf[3]) << 24) + + //read CommandLine field from PRTL_USER_PROCESS_PARAMETERS + remoteCmdLine := readProcessMemory(syscall.Handle(h), procIs32Bits, userProcParams+uint64(64), 8) + if len(remoteCmdLine) != 8 { + return "", errors.New("cannot read cmdline field") + } + + //remoteCmdLine is actually a UNICODE_STRING32 + //the first two bytes has the length + cmdLineLength := uint(remoteCmdLine[0]) | (uint(remoteCmdLine[1]) << 8) + if cmdLineLength > 0 { + //and, at offset 4, is the pointer to the buffer + bufferAddress := uint32(remoteCmdLine[4]) | (uint32(remoteCmdLine[5]) << 8) | + (uint32(remoteCmdLine[6]) << 16) | (uint32(remoteCmdLine[7]) << 24) + + cmdLine := readProcessMemory(syscall.Handle(h), procIs32Bits, uint64(bufferAddress), cmdLineLength) + if len(cmdLine) != int(cmdLineLength) { + return "", errors.New("cannot read cmdline") + } + + return convertUTF16ToString(cmdLine), nil + } + } else { + buf := readProcessMemory(syscall.Handle(h), procIs32Bits, pebAddress+uint64(32), 8) + if len(buf) != 8 { + return "", errors.New("cannot locate process user parameters") + } + userProcParams := uint64(buf[0]) | (uint64(buf[1]) << 8) | (uint64(buf[2]) << 16) | (uint64(buf[3]) << 24) | + (uint64(buf[4]) << 32) | (uint64(buf[5]) << 40) | (uint64(buf[6]) << 48) | (uint64(buf[7]) << 56) + + //read CommandLine field from PRTL_USER_PROCESS_PARAMETERS + remoteCmdLine := readProcessMemory(syscall.Handle(h), procIs32Bits, userProcParams+uint64(112), 16) + if len(remoteCmdLine) != 16 { + return "", errors.New("cannot read cmdline field") + } + + //remoteCmdLine is actually a UNICODE_STRING64 + //the first two bytes has the length + cmdLineLength := uint(remoteCmdLine[0]) | (uint(remoteCmdLine[1]) << 8) + if cmdLineLength > 0 { + //and, at offset 8, is the pointer to the buffer + bufferAddress := uint64(remoteCmdLine[8]) | (uint64(remoteCmdLine[9]) << 8) | + (uint64(remoteCmdLine[10]) << 16) | (uint64(remoteCmdLine[11]) << 24) | + (uint64(remoteCmdLine[12]) << 32) | (uint64(remoteCmdLine[13]) << 40) | + (uint64(remoteCmdLine[14]) << 48) | (uint64(remoteCmdLine[15]) << 56) + + cmdLine := readProcessMemory(syscall.Handle(h), procIs32Bits, bufferAddress, cmdLineLength) + if len(cmdLine) != int(cmdLineLength) { + return "", errors.New("cannot read cmdline") + } + + return convertUTF16ToString(cmdLine), nil + } + } + + //if we reach here, we have no command line + return "", nil +} + +func convertUTF16ToString(src []byte) string { + srcLen := len(src) / 2 + + codePoints := make([]uint16, srcLen) + + srcIdx := 0 + for i := 0; i < srcLen; i++ { + codePoints[i] = uint16(src[srcIdx]) | uint16(src[srcIdx+1])<<8 + srcIdx += 2 + } + return syscall.UTF16ToString(codePoints) +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_windows_386.go b/vendor/github.com/shirou/gopsutil/process/process_windows_386.go index 68f3153dc..cd884968e 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_windows_386.go +++ b/vendor/github.com/shirou/gopsutil/process/process_windows_386.go @@ -2,6 +2,13 @@ package process +import ( + "syscall" + "unsafe" + + "github.com/shirou/gopsutil/internal/common" +) + type PROCESS_MEMORY_COUNTERS struct { CB uint32 PageFaultCount uint32 @@ -14,3 +21,82 @@ type PROCESS_MEMORY_COUNTERS struct { PagefileUsage uint32 PeakPagefileUsage uint32 } + +func queryPebAddress(procHandle syscall.Handle, is32BitProcess bool) uint64 { + if is32BitProcess { + //we are on a 32-bit process reading an external 32-bit process + var info processBasicInformation32 + + ret, _, _ := common.ProcNtQueryInformationProcess.Call( + uintptr(procHandle), + uintptr(common.ProcessBasicInformation), + uintptr(unsafe.Pointer(&info)), + uintptr(unsafe.Sizeof(info)), + uintptr(0), + ) + if int(ret) >= 0 { + return uint64(info.PebBaseAddress) + } + } else { + //we are on a 32-bit process reading an external 64-bit process + if common.ProcNtWow64QueryInformationProcess64.Find() == nil { //avoid panic + var info processBasicInformation64 + + ret, _, _ := common.ProcNtWow64QueryInformationProcess64.Call( + uintptr(procHandle), + uintptr(common.ProcessBasicInformation), + uintptr(unsafe.Pointer(&info)), + uintptr(unsafe.Sizeof(info)), + uintptr(0), + ) + if int(ret) >= 0 { + return info.PebBaseAddress + } + } + } + + //return 0 on error + return 0 +} + +func readProcessMemory(h syscall.Handle, is32BitProcess bool, address uint64, size uint) []byte { + if is32BitProcess { + var read uint + + buffer := make([]byte, size) + + ret, _, _ := common.ProcNtReadVirtualMemory.Call( + uintptr(h), + uintptr(address), + uintptr(unsafe.Pointer(&buffer[0])), + uintptr(size), + uintptr(unsafe.Pointer(&read)), + ) + if int(ret) >= 0 && read > 0 { + return buffer[:read] + } + } else { + //reading a 64-bit process from a 32-bit one + if common.ProcNtWow64ReadVirtualMemory64.Find() == nil { //avoid panic + var read uint64 + + buffer := make([]byte, size) + + ret, _, _ := common.ProcNtWow64ReadVirtualMemory64.Call( + uintptr(h), + uintptr(address & 0xFFFFFFFF), //the call expects a 64-bit value + uintptr(address >> 32), + uintptr(unsafe.Pointer(&buffer[0])), + uintptr(size), //the call expects a 64-bit value + uintptr(0), //but size is 32-bit so pass zero as the high dword + uintptr(unsafe.Pointer(&read)), + ) + if int(ret) >= 0 && read > 0 { + return buffer[:uint(read)] + } + } + } + + //if we reach here, an error happened + return nil +} diff --git a/vendor/github.com/shirou/gopsutil/process/process_windows_amd64.go b/vendor/github.com/shirou/gopsutil/process/process_windows_amd64.go index df286dfff..3ee5be449 100644 --- a/vendor/github.com/shirou/gopsutil/process/process_windows_amd64.go +++ b/vendor/github.com/shirou/gopsutil/process/process_windows_amd64.go @@ -2,6 +2,13 @@ package process +import ( + "syscall" + "unsafe" + + "github.com/shirou/gopsutil/internal/common" +) + type PROCESS_MEMORY_COUNTERS struct { CB uint32 PageFaultCount uint32 @@ -14,3 +21,56 @@ type PROCESS_MEMORY_COUNTERS struct { PagefileUsage uint64 PeakPagefileUsage uint64 } + +func queryPebAddress(procHandle syscall.Handle, is32BitProcess bool) uint64 { + if is32BitProcess { + //we are on a 64-bit process reading an external 32-bit process + var wow64 uint + + ret, _, _ := common.ProcNtQueryInformationProcess.Call( + uintptr(procHandle), + uintptr(common.ProcessWow64Information), + uintptr(unsafe.Pointer(&wow64)), + uintptr(unsafe.Sizeof(wow64)), + uintptr(0), + ) + if int(ret) >= 0 { + return uint64(wow64) + } + } else { + //we are on a 64-bit process reading an external 64-bit process + var info processBasicInformation64 + + ret, _, _ := common.ProcNtQueryInformationProcess.Call( + uintptr(procHandle), + uintptr(common.ProcessBasicInformation), + uintptr(unsafe.Pointer(&info)), + uintptr(unsafe.Sizeof(info)), + uintptr(0), + ) + if int(ret) >= 0 { + return info.PebBaseAddress + } + } + + //return 0 on error + return 0 +} + +func readProcessMemory(procHandle syscall.Handle, _ bool, address uint64, size uint) []byte { + var read uint + + buffer := make([]byte, size) + + ret, _, _ := common.ProcNtReadVirtualMemory.Call( + uintptr(procHandle), + uintptr(address), + uintptr(unsafe.Pointer(&buffer[0])), + uintptr(size), + uintptr(unsafe.Pointer(&read)), + ) + if int(ret) >= 0 && read > 0 { + return buffer[:read] + } + return nil +} diff --git a/vendor/github.com/shirou/w32/AUTHORS b/vendor/github.com/shirou/w32/AUTHORS deleted file mode 100644 index c0785e820..000000000 --- a/vendor/github.com/shirou/w32/AUTHORS +++ /dev/null @@ -1,16 +0,0 @@ -# This is the official list of 'w32' authors for copyright purposes. - -# Names should be added to this file as -# Name or Organization -# The email address is not required for organizations. - -# Please keep the list sorted. - -# Contributors -# ============ - -Allen Dang -Benny Siegert -Bruno Bigras -Gerald Rosenberg -Michael Henke \ No newline at end of file diff --git a/vendor/github.com/shirou/w32/LICENSE b/vendor/github.com/shirou/w32/LICENSE deleted file mode 100644 index 9f36608c8..000000000 --- a/vendor/github.com/shirou/w32/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2010-2012 The w32 Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/shirou/w32/README.md b/vendor/github.com/shirou/w32/README.md deleted file mode 100644 index ed196e766..000000000 --- a/vendor/github.com/shirou/w32/README.md +++ /dev/null @@ -1,33 +0,0 @@ -About w32 -========== - -w32 is a wrapper of windows apis for the Go Programming Language. - -It wraps win32 apis to "Go style" to make them easier to use. - -Setup -===== - -1. Make sure you have a working Go installation and build environment, - see this go-nuts post for details: - http://groups.google.com/group/golang-nuts/msg/5c87630a84f4fd0c - - Updated versions of the Windows Go build are available here: - http://code.google.com/p/gomingw/downloads/list - -2. Create a "gopath" directory if you do not have one yet and set the - GOPATH variable accordingly. For example: - mkdir -p go-externals/src - export GOPATH=${PWD}/go-externals - -3. go get github.com/AllenDang/w32 - -4. go install github.com/AllenDang/w32... - -Contribute -========== - -Contributions in form of design, code, documentation, bug reporting or other -ways you see fit are very welcome. - -Thank You! diff --git a/vendor/github.com/shirou/w32/advapi32.go b/vendor/github.com/shirou/w32/advapi32.go deleted file mode 100644 index 35fd35a67..000000000 --- a/vendor/github.com/shirou/w32/advapi32.go +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "errors" - "fmt" - "syscall" - "unsafe" -) - -var ( - modadvapi32 = syscall.NewLazyDLL("advapi32.dll") - - procRegCreateKeyEx = modadvapi32.NewProc("RegCreateKeyExW") - procRegOpenKeyEx = modadvapi32.NewProc("RegOpenKeyExW") - procRegCloseKey = modadvapi32.NewProc("RegCloseKey") - procRegGetValue = modadvapi32.NewProc("RegGetValueW") - procRegEnumKeyEx = modadvapi32.NewProc("RegEnumKeyExW") - // procRegSetKeyValue = modadvapi32.NewProc("RegSetKeyValueW") - procRegSetValueEx = modadvapi32.NewProc("RegSetValueExW") - procOpenEventLog = modadvapi32.NewProc("OpenEventLogW") - procReadEventLog = modadvapi32.NewProc("ReadEventLogW") - procCloseEventLog = modadvapi32.NewProc("CloseEventLog") - procOpenSCManager = modadvapi32.NewProc("OpenSCManagerW") - procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") - procOpenService = modadvapi32.NewProc("OpenServiceW") - procStartService = modadvapi32.NewProc("StartServiceW") - procControlService = modadvapi32.NewProc("ControlService") -) - -func RegCreateKey(hKey HKEY, subKey string) HKEY { - var result HKEY - ret, _, _ := procRegCreateKeyEx.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(0), - uintptr(0), - uintptr(0), - uintptr(KEY_ALL_ACCESS), - uintptr(0), - uintptr(unsafe.Pointer(&result)), - uintptr(0)) - _ = ret - return result -} - -func RegOpenKeyEx(hKey HKEY, subKey string, samDesired uint32) HKEY { - var result HKEY - ret, _, _ := procRegOpenKeyEx.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(0), - uintptr(samDesired), - uintptr(unsafe.Pointer(&result))) - - if ret != ERROR_SUCCESS { - panic(fmt.Sprintf("RegOpenKeyEx(%d, %s, %d) failed", hKey, subKey, samDesired)) - } - return result -} - -func RegCloseKey(hKey HKEY) error { - var err error - ret, _, _ := procRegCloseKey.Call( - uintptr(hKey)) - - if ret != ERROR_SUCCESS { - err = errors.New("RegCloseKey failed") - } - return err -} - -func RegGetRaw(hKey HKEY, subKey string, value string) []byte { - var bufLen uint32 - var valptr unsafe.Pointer - if len(value) > 0 { - valptr = unsafe.Pointer(syscall.StringToUTF16Ptr(value)) - } - procRegGetValue.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(valptr), - uintptr(RRF_RT_ANY), - 0, - 0, - uintptr(unsafe.Pointer(&bufLen))) - - if bufLen == 0 { - return nil - } - - buf := make([]byte, bufLen) - ret, _, _ := procRegGetValue.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(valptr), - uintptr(RRF_RT_ANY), - 0, - uintptr(unsafe.Pointer(&buf[0])), - uintptr(unsafe.Pointer(&bufLen))) - - if ret != ERROR_SUCCESS { - return nil - } - - return buf -} - -func RegSetBinary(hKey HKEY, subKey string, value []byte) (errno int) { - var lptr, vptr unsafe.Pointer - if len(subKey) > 0 { - lptr = unsafe.Pointer(syscall.StringToUTF16Ptr(subKey)) - } - if len(value) > 0 { - vptr = unsafe.Pointer(&value[0]) - } - ret, _, _ := procRegSetValueEx.Call( - uintptr(hKey), - uintptr(lptr), - uintptr(0), - uintptr(REG_BINARY), - uintptr(vptr), - uintptr(len(value))) - - return int(ret) -} - -func RegGetString(hKey HKEY, subKey string, value string) string { - var bufLen uint32 - procRegGetValue.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(value))), - uintptr(RRF_RT_REG_SZ), - 0, - 0, - uintptr(unsafe.Pointer(&bufLen))) - - if bufLen == 0 { - return "" - } - - buf := make([]uint16, bufLen) - ret, _, _ := procRegGetValue.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(value))), - uintptr(RRF_RT_REG_SZ), - 0, - uintptr(unsafe.Pointer(&buf[0])), - uintptr(unsafe.Pointer(&bufLen))) - - if ret != ERROR_SUCCESS { - return "" - } - - return syscall.UTF16ToString(buf) -} - -/* -func RegSetKeyValue(hKey HKEY, subKey string, valueName string, dwType uint32, data uintptr, cbData uint16) (errno int) { - ret, _, _ := procRegSetKeyValue.Call( - uintptr(hKey), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(subKey))), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(valueName))), - uintptr(dwType), - data, - uintptr(cbData)) - - return int(ret) -} -*/ - -func RegEnumKeyEx(hKey HKEY, index uint32) string { - var bufLen uint32 = 255 - buf := make([]uint16, bufLen) - procRegEnumKeyEx.Call( - uintptr(hKey), - uintptr(index), - uintptr(unsafe.Pointer(&buf[0])), - uintptr(unsafe.Pointer(&bufLen)), - 0, - 0, - 0, - 0) - return syscall.UTF16ToString(buf) -} - -func OpenEventLog(servername string, sourcename string) HANDLE { - ret, _, _ := procOpenEventLog.Call( - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(servername))), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(sourcename)))) - - return HANDLE(ret) -} - -func ReadEventLog(eventlog HANDLE, readflags, recordoffset uint32, buffer []byte, numberofbytestoread uint32, bytesread, minnumberofbytesneeded *uint32) bool { - ret, _, _ := procReadEventLog.Call( - uintptr(eventlog), - uintptr(readflags), - uintptr(recordoffset), - uintptr(unsafe.Pointer(&buffer[0])), - uintptr(numberofbytestoread), - uintptr(unsafe.Pointer(bytesread)), - uintptr(unsafe.Pointer(minnumberofbytesneeded))) - - return ret != 0 -} - -func CloseEventLog(eventlog HANDLE) bool { - ret, _, _ := procCloseEventLog.Call( - uintptr(eventlog)) - - return ret != 0 -} - -func OpenSCManager(lpMachineName, lpDatabaseName string, dwDesiredAccess uint32) (HANDLE, error) { - var p1, p2 uintptr - if len(lpMachineName) > 0 { - p1 = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpMachineName))) - } - if len(lpDatabaseName) > 0 { - p2 = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpDatabaseName))) - } - ret, _, _ := procOpenSCManager.Call( - p1, - p2, - uintptr(dwDesiredAccess)) - - if ret == 0 { - return 0, syscall.GetLastError() - } - - return HANDLE(ret), nil -} - -func CloseServiceHandle(hSCObject HANDLE) error { - ret, _, _ := procCloseServiceHandle.Call(uintptr(hSCObject)) - if ret == 0 { - return syscall.GetLastError() - } - return nil -} - -func OpenService(hSCManager HANDLE, lpServiceName string, dwDesiredAccess uint32) (HANDLE, error) { - ret, _, _ := procOpenService.Call( - uintptr(hSCManager), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpServiceName))), - uintptr(dwDesiredAccess)) - - if ret == 0 { - return 0, syscall.GetLastError() - } - - return HANDLE(ret), nil -} - -func StartService(hService HANDLE, lpServiceArgVectors []string) error { - l := len(lpServiceArgVectors) - var ret uintptr - if l == 0 { - ret, _, _ = procStartService.Call( - uintptr(hService), - 0, - 0) - } else { - lpArgs := make([]uintptr, l) - for i := 0; i < l; i++ { - lpArgs[i] = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpServiceArgVectors[i]))) - } - - ret, _, _ = procStartService.Call( - uintptr(hService), - uintptr(l), - uintptr(unsafe.Pointer(&lpArgs[0]))) - } - - if ret == 0 { - return syscall.GetLastError() - } - - return nil -} - -func ControlService(hService HANDLE, dwControl uint32, lpServiceStatus *SERVICE_STATUS) bool { - if lpServiceStatus == nil { - panic("ControlService:lpServiceStatus cannot be nil") - } - - ret, _, _ := procControlService.Call( - uintptr(hService), - uintptr(dwControl), - uintptr(unsafe.Pointer(lpServiceStatus))) - - return ret != 0 -} diff --git a/vendor/github.com/shirou/w32/comctl32.go b/vendor/github.com/shirou/w32/comctl32.go deleted file mode 100644 index 51395580e..000000000 --- a/vendor/github.com/shirou/w32/comctl32.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modcomctl32 = syscall.NewLazyDLL("comctl32.dll") - - procInitCommonControlsEx = modcomctl32.NewProc("InitCommonControlsEx") - procImageList_Create = modcomctl32.NewProc("ImageList_Create") - procImageList_Destroy = modcomctl32.NewProc("ImageList_Destroy") - procImageList_GetImageCount = modcomctl32.NewProc("ImageList_GetImageCount") - procImageList_SetImageCount = modcomctl32.NewProc("ImageList_SetImageCount") - procImageList_Add = modcomctl32.NewProc("ImageList_Add") - procImageList_ReplaceIcon = modcomctl32.NewProc("ImageList_ReplaceIcon") - procImageList_Remove = modcomctl32.NewProc("ImageList_Remove") - procTrackMouseEvent = modcomctl32.NewProc("_TrackMouseEvent") -) - -func InitCommonControlsEx(lpInitCtrls *INITCOMMONCONTROLSEX) bool { - ret, _, _ := procInitCommonControlsEx.Call( - uintptr(unsafe.Pointer(lpInitCtrls))) - - return ret != 0 -} - -func ImageList_Create(cx, cy int, flags uint, cInitial, cGrow int) HIMAGELIST { - ret, _, _ := procImageList_Create.Call( - uintptr(cx), - uintptr(cy), - uintptr(flags), - uintptr(cInitial), - uintptr(cGrow)) - - if ret == 0 { - panic("Create image list failed") - } - - return HIMAGELIST(ret) -} - -func ImageList_Destroy(himl HIMAGELIST) bool { - ret, _, _ := procImageList_Destroy.Call( - uintptr(himl)) - - return ret != 0 -} - -func ImageList_GetImageCount(himl HIMAGELIST) int { - ret, _, _ := procImageList_GetImageCount.Call( - uintptr(himl)) - - return int(ret) -} - -func ImageList_SetImageCount(himl HIMAGELIST, uNewCount uint) bool { - ret, _, _ := procImageList_SetImageCount.Call( - uintptr(himl), - uintptr(uNewCount)) - - return ret != 0 -} - -func ImageList_Add(himl HIMAGELIST, hbmImage, hbmMask HBITMAP) int { - ret, _, _ := procImageList_Add.Call( - uintptr(himl), - uintptr(hbmImage), - uintptr(hbmMask)) - - return int(ret) -} - -func ImageList_ReplaceIcon(himl HIMAGELIST, i int, hicon HICON) int { - ret, _, _ := procImageList_ReplaceIcon.Call( - uintptr(himl), - uintptr(i), - uintptr(hicon)) - - return int(ret) -} - -func ImageList_AddIcon(himl HIMAGELIST, hicon HICON) int { - return ImageList_ReplaceIcon(himl, -1, hicon) -} - -func ImageList_Remove(himl HIMAGELIST, i int) bool { - ret, _, _ := procImageList_Remove.Call( - uintptr(himl), - uintptr(i)) - - return ret != 0 -} - -func ImageList_RemoveAll(himl HIMAGELIST) bool { - return ImageList_Remove(himl, -1) -} - -func TrackMouseEvent(tme *TRACKMOUSEEVENT) bool { - ret, _, _ := procTrackMouseEvent.Call( - uintptr(unsafe.Pointer(tme))) - - return ret != 0 -} diff --git a/vendor/github.com/shirou/w32/comdlg32.go b/vendor/github.com/shirou/w32/comdlg32.go deleted file mode 100644 index ad9f7762f..000000000 --- a/vendor/github.com/shirou/w32/comdlg32.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modcomdlg32 = syscall.NewLazyDLL("comdlg32.dll") - - procGetSaveFileName = modcomdlg32.NewProc("GetSaveFileNameW") - procGetOpenFileName = modcomdlg32.NewProc("GetOpenFileNameW") - procCommDlgExtendedError = modcomdlg32.NewProc("CommDlgExtendedError") -) - -func GetOpenFileName(ofn *OPENFILENAME) bool { - ret, _, _ := procGetOpenFileName.Call( - uintptr(unsafe.Pointer(ofn))) - - return ret != 0 -} - -func GetSaveFileName(ofn *OPENFILENAME) bool { - ret, _, _ := procGetSaveFileName.Call( - uintptr(unsafe.Pointer(ofn))) - - return ret != 0 -} - -func CommDlgExtendedError() uint { - ret, _, _ := procCommDlgExtendedError.Call() - - return uint(ret) -} diff --git a/vendor/github.com/shirou/w32/constants.go b/vendor/github.com/shirou/w32/constants.go deleted file mode 100644 index 62d2d4b31..000000000 --- a/vendor/github.com/shirou/w32/constants.go +++ /dev/null @@ -1,2661 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package w32 - -const ( - FALSE = 0 - TRUE = 1 -) - -const ( - NO_ERROR = 0 - ERROR_SUCCESS = 0 - ERROR_FILE_NOT_FOUND = 2 - ERROR_PATH_NOT_FOUND = 3 - ERROR_ACCESS_DENIED = 5 - ERROR_INVALID_HANDLE = 6 - ERROR_BAD_FORMAT = 11 - ERROR_INVALID_NAME = 123 - ERROR_MORE_DATA = 234 - ERROR_NO_MORE_ITEMS = 259 - ERROR_INVALID_SERVICE_CONTROL = 1052 - ERROR_SERVICE_REQUEST_TIMEOUT = 1053 - ERROR_SERVICE_NO_THREAD = 1054 - ERROR_SERVICE_DATABASE_LOCKED = 1055 - ERROR_SERVICE_ALREADY_RUNNING = 1056 - ERROR_SERVICE_DISABLED = 1058 - ERROR_SERVICE_DOES_NOT_EXIST = 1060 - ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061 - ERROR_SERVICE_NOT_ACTIVE = 1062 - ERROR_DATABASE_DOES_NOT_EXIST = 1065 - ERROR_SERVICE_DEPENDENCY_FAIL = 1068 - ERROR_SERVICE_LOGON_FAILED = 1069 - ERROR_SERVICE_MARKED_FOR_DELETE = 1072 - ERROR_SERVICE_DEPENDENCY_DELETED = 1075 -) - -const ( - SE_ERR_FNF = 2 - SE_ERR_PNF = 3 - SE_ERR_ACCESSDENIED = 5 - SE_ERR_OOM = 8 - SE_ERR_DLLNOTFOUND = 32 - SE_ERR_SHARE = 26 - SE_ERR_ASSOCINCOMPLETE = 27 - SE_ERR_DDETIMEOUT = 28 - SE_ERR_DDEFAIL = 29 - SE_ERR_DDEBUSY = 30 - SE_ERR_NOASSOC = 31 -) - -const ( - CW_USEDEFAULT = ^0x7fffffff -) - -// ShowWindow constants -const ( - SW_HIDE = 0 - SW_NORMAL = 1 - SW_SHOWNORMAL = 1 - SW_SHOWMINIMIZED = 2 - SW_MAXIMIZE = 3 - SW_SHOWMAXIMIZED = 3 - SW_SHOWNOACTIVATE = 4 - SW_SHOW = 5 - SW_MINIMIZE = 6 - SW_SHOWMINNOACTIVE = 7 - SW_SHOWNA = 8 - SW_RESTORE = 9 - SW_SHOWDEFAULT = 10 - SW_FORCEMINIMIZE = 11 -) - -// Window class styles -const ( - CS_VREDRAW = 0x00000001 - CS_HREDRAW = 0x00000002 - CS_KEYCVTWINDOW = 0x00000004 - CS_DBLCLKS = 0x00000008 - CS_OWNDC = 0x00000020 - CS_CLASSDC = 0x00000040 - CS_PARENTDC = 0x00000080 - CS_NOKEYCVT = 0x00000100 - CS_NOCLOSE = 0x00000200 - CS_SAVEBITS = 0x00000800 - CS_BYTEALIGNCLIENT = 0x00001000 - CS_BYTEALIGNWINDOW = 0x00002000 - CS_GLOBALCLASS = 0x00004000 - CS_IME = 0x00010000 - CS_DROPSHADOW = 0x00020000 -) - -// Predefined cursor constants -const ( - IDC_ARROW = 32512 - IDC_IBEAM = 32513 - IDC_WAIT = 32514 - IDC_CROSS = 32515 - IDC_UPARROW = 32516 - IDC_SIZENWSE = 32642 - IDC_SIZENESW = 32643 - IDC_SIZEWE = 32644 - IDC_SIZENS = 32645 - IDC_SIZEALL = 32646 - IDC_NO = 32648 - IDC_HAND = 32649 - IDC_APPSTARTING = 32650 - IDC_HELP = 32651 - IDC_ICON = 32641 - IDC_SIZE = 32640 -) - -// Predefined icon constants -const ( - IDI_APPLICATION = 32512 - IDI_HAND = 32513 - IDI_QUESTION = 32514 - IDI_EXCLAMATION = 32515 - IDI_ASTERISK = 32516 - IDI_WINLOGO = 32517 - IDI_WARNING = IDI_EXCLAMATION - IDI_ERROR = IDI_HAND - IDI_INFORMATION = IDI_ASTERISK -) - -// Button style constants -const ( - BS_3STATE = 5 - BS_AUTO3STATE = 6 - BS_AUTOCHECKBOX = 3 - BS_AUTORADIOBUTTON = 9 - BS_BITMAP = 128 - BS_BOTTOM = 0X800 - BS_CENTER = 0X300 - BS_CHECKBOX = 2 - BS_DEFPUSHBUTTON = 1 - BS_GROUPBOX = 7 - BS_ICON = 64 - BS_LEFT = 256 - BS_LEFTTEXT = 32 - BS_MULTILINE = 0X2000 - BS_NOTIFY = 0X4000 - BS_OWNERDRAW = 0XB - BS_PUSHBUTTON = 0 - BS_PUSHLIKE = 4096 - BS_RADIOBUTTON = 4 - BS_RIGHT = 512 - BS_RIGHTBUTTON = 32 - BS_TEXT = 0 - BS_TOP = 0X400 - BS_USERBUTTON = 8 - BS_VCENTER = 0XC00 - BS_FLAT = 0X8000 -) - -// Button state constants -const ( - BST_CHECKED = 1 - BST_INDETERMINATE = 2 - BST_UNCHECKED = 0 - BST_FOCUS = 8 - BST_PUSHED = 4 -) - -// Predefined brushes constants -const ( - COLOR_3DDKSHADOW = 21 - COLOR_3DFACE = 15 - COLOR_3DHILIGHT = 20 - COLOR_3DHIGHLIGHT = 20 - COLOR_3DLIGHT = 22 - COLOR_BTNHILIGHT = 20 - COLOR_3DSHADOW = 16 - COLOR_ACTIVEBORDER = 10 - COLOR_ACTIVECAPTION = 2 - COLOR_APPWORKSPACE = 12 - COLOR_BACKGROUND = 1 - COLOR_DESKTOP = 1 - COLOR_BTNFACE = 15 - COLOR_BTNHIGHLIGHT = 20 - COLOR_BTNSHADOW = 16 - COLOR_BTNTEXT = 18 - COLOR_CAPTIONTEXT = 9 - COLOR_GRAYTEXT = 17 - COLOR_HIGHLIGHT = 13 - COLOR_HIGHLIGHTTEXT = 14 - COLOR_INACTIVEBORDER = 11 - COLOR_INACTIVECAPTION = 3 - COLOR_INACTIVECAPTIONTEXT = 19 - COLOR_INFOBK = 24 - COLOR_INFOTEXT = 23 - COLOR_MENU = 4 - COLOR_MENUTEXT = 7 - COLOR_SCROLLBAR = 0 - COLOR_WINDOW = 5 - COLOR_WINDOWFRAME = 6 - COLOR_WINDOWTEXT = 8 - COLOR_HOTLIGHT = 26 - COLOR_GRADIENTACTIVECAPTION = 27 - COLOR_GRADIENTINACTIVECAPTION = 28 -) - -// Button message constants -const ( - BM_CLICK = 245 - BM_GETCHECK = 240 - BM_GETIMAGE = 246 - BM_GETSTATE = 242 - BM_SETCHECK = 241 - BM_SETIMAGE = 247 - BM_SETSTATE = 243 - BM_SETSTYLE = 244 -) - -// Button notifications -const ( - BN_CLICKED = 0 - BN_PAINT = 1 - BN_HILITE = 2 - BN_PUSHED = BN_HILITE - BN_UNHILITE = 3 - BN_UNPUSHED = BN_UNHILITE - BN_DISABLE = 4 - BN_DOUBLECLICKED = 5 - BN_DBLCLK = BN_DOUBLECLICKED - BN_SETFOCUS = 6 - BN_KILLFOCUS = 7 -) - -// GetWindowLong and GetWindowLongPtr constants -const ( - GWL_EXSTYLE = -20 - GWL_STYLE = -16 - GWL_WNDPROC = -4 - GWLP_WNDPROC = -4 - GWL_HINSTANCE = -6 - GWLP_HINSTANCE = -6 - GWL_HWNDPARENT = -8 - GWLP_HWNDPARENT = -8 - GWL_ID = -12 - GWLP_ID = -12 - GWL_USERDATA = -21 - GWLP_USERDATA = -21 -) - -// Window style constants -const ( - WS_OVERLAPPED = 0X00000000 - WS_POPUP = 0X80000000 - WS_CHILD = 0X40000000 - WS_MINIMIZE = 0X20000000 - WS_VISIBLE = 0X10000000 - WS_DISABLED = 0X08000000 - WS_CLIPSIBLINGS = 0X04000000 - WS_CLIPCHILDREN = 0X02000000 - WS_MAXIMIZE = 0X01000000 - WS_CAPTION = 0X00C00000 - WS_BORDER = 0X00800000 - WS_DLGFRAME = 0X00400000 - WS_VSCROLL = 0X00200000 - WS_HSCROLL = 0X00100000 - WS_SYSMENU = 0X00080000 - WS_THICKFRAME = 0X00040000 - WS_GROUP = 0X00020000 - WS_TABSTOP = 0X00010000 - WS_MINIMIZEBOX = 0X00020000 - WS_MAXIMIZEBOX = 0X00010000 - WS_TILED = 0X00000000 - WS_ICONIC = 0X20000000 - WS_SIZEBOX = 0X00040000 - WS_OVERLAPPEDWINDOW = 0X00000000 | 0X00C00000 | 0X00080000 | 0X00040000 | 0X00020000 | 0X00010000 - WS_POPUPWINDOW = 0X80000000 | 0X00800000 | 0X00080000 - WS_CHILDWINDOW = 0X40000000 -) - -// Extended window style constants -const ( - WS_EX_DLGMODALFRAME = 0X00000001 - WS_EX_NOPARENTNOTIFY = 0X00000004 - WS_EX_TOPMOST = 0X00000008 - WS_EX_ACCEPTFILES = 0X00000010 - WS_EX_TRANSPARENT = 0X00000020 - WS_EX_MDICHILD = 0X00000040 - WS_EX_TOOLWINDOW = 0X00000080 - WS_EX_WINDOWEDGE = 0X00000100 - WS_EX_CLIENTEDGE = 0X00000200 - WS_EX_CONTEXTHELP = 0X00000400 - WS_EX_RIGHT = 0X00001000 - WS_EX_LEFT = 0X00000000 - WS_EX_RTLREADING = 0X00002000 - WS_EX_LTRREADING = 0X00000000 - WS_EX_LEFTSCROLLBAR = 0X00004000 - WS_EX_RIGHTSCROLLBAR = 0X00000000 - WS_EX_CONTROLPARENT = 0X00010000 - WS_EX_STATICEDGE = 0X00020000 - WS_EX_APPWINDOW = 0X00040000 - WS_EX_OVERLAPPEDWINDOW = 0X00000100 | 0X00000200 - WS_EX_PALETTEWINDOW = 0X00000100 | 0X00000080 | 0X00000008 - WS_EX_LAYERED = 0X00080000 - WS_EX_NOINHERITLAYOUT = 0X00100000 - WS_EX_LAYOUTRTL = 0X00400000 - WS_EX_NOACTIVATE = 0X08000000 -) - -// Window message constants -const ( - WM_APP = 32768 - WM_ACTIVATE = 6 - WM_ACTIVATEAPP = 28 - WM_AFXFIRST = 864 - WM_AFXLAST = 895 - WM_ASKCBFORMATNAME = 780 - WM_CANCELJOURNAL = 75 - WM_CANCELMODE = 31 - WM_CAPTURECHANGED = 533 - WM_CHANGECBCHAIN = 781 - WM_CHAR = 258 - WM_CHARTOITEM = 47 - WM_CHILDACTIVATE = 34 - WM_CLEAR = 771 - WM_CLOSE = 16 - WM_COMMAND = 273 - WM_COMMNOTIFY = 68 /* OBSOLETE */ - WM_COMPACTING = 65 - WM_COMPAREITEM = 57 - WM_CONTEXTMENU = 123 - WM_COPY = 769 - WM_COPYDATA = 74 - WM_CREATE = 1 - WM_CTLCOLORBTN = 309 - WM_CTLCOLORDLG = 310 - WM_CTLCOLOREDIT = 307 - WM_CTLCOLORLISTBOX = 308 - WM_CTLCOLORMSGBOX = 306 - WM_CTLCOLORSCROLLBAR = 311 - WM_CTLCOLORSTATIC = 312 - WM_CUT = 768 - WM_DEADCHAR = 259 - WM_DELETEITEM = 45 - WM_DESTROY = 2 - WM_DESTROYCLIPBOARD = 775 - WM_DEVICECHANGE = 537 - WM_DEVMODECHANGE = 27 - WM_DISPLAYCHANGE = 126 - WM_DRAWCLIPBOARD = 776 - WM_DRAWITEM = 43 - WM_DROPFILES = 563 - WM_ENABLE = 10 - WM_ENDSESSION = 22 - WM_ENTERIDLE = 289 - WM_ENTERMENULOOP = 529 - WM_ENTERSIZEMOVE = 561 - WM_ERASEBKGND = 20 - WM_EXITMENULOOP = 530 - WM_EXITSIZEMOVE = 562 - WM_FONTCHANGE = 29 - WM_GETDLGCODE = 135 - WM_GETFONT = 49 - WM_GETHOTKEY = 51 - WM_GETICON = 127 - WM_GETMINMAXINFO = 36 - WM_GETTEXT = 13 - WM_GETTEXTLENGTH = 14 - WM_HANDHELDFIRST = 856 - WM_HANDHELDLAST = 863 - WM_HELP = 83 - WM_HOTKEY = 786 - WM_HSCROLL = 276 - WM_HSCROLLCLIPBOARD = 782 - WM_ICONERASEBKGND = 39 - WM_INITDIALOG = 272 - WM_INITMENU = 278 - WM_INITMENUPOPUP = 279 - WM_INPUT = 0X00FF - WM_INPUTLANGCHANGE = 81 - WM_INPUTLANGCHANGEREQUEST = 80 - WM_KEYDOWN = 256 - WM_KEYUP = 257 - WM_KILLFOCUS = 8 - WM_MDIACTIVATE = 546 - WM_MDICASCADE = 551 - WM_MDICREATE = 544 - WM_MDIDESTROY = 545 - WM_MDIGETACTIVE = 553 - WM_MDIICONARRANGE = 552 - WM_MDIMAXIMIZE = 549 - WM_MDINEXT = 548 - WM_MDIREFRESHMENU = 564 - WM_MDIRESTORE = 547 - WM_MDISETMENU = 560 - WM_MDITILE = 550 - WM_MEASUREITEM = 44 - WM_GETOBJECT = 0X003D - WM_CHANGEUISTATE = 0X0127 - WM_UPDATEUISTATE = 0X0128 - WM_QUERYUISTATE = 0X0129 - WM_UNINITMENUPOPUP = 0X0125 - WM_MENURBUTTONUP = 290 - WM_MENUCOMMAND = 0X0126 - WM_MENUGETOBJECT = 0X0124 - WM_MENUDRAG = 0X0123 - WM_APPCOMMAND = 0X0319 - WM_MENUCHAR = 288 - WM_MENUSELECT = 287 - WM_MOVE = 3 - WM_MOVING = 534 - WM_NCACTIVATE = 134 - WM_NCCALCSIZE = 131 - WM_NCCREATE = 129 - WM_NCDESTROY = 130 - WM_NCHITTEST = 132 - WM_NCLBUTTONDBLCLK = 163 - WM_NCLBUTTONDOWN = 161 - WM_NCLBUTTONUP = 162 - WM_NCMBUTTONDBLCLK = 169 - WM_NCMBUTTONDOWN = 167 - WM_NCMBUTTONUP = 168 - WM_NCXBUTTONDOWN = 171 - WM_NCXBUTTONUP = 172 - WM_NCXBUTTONDBLCLK = 173 - WM_NCMOUSEHOVER = 0X02A0 - WM_NCMOUSELEAVE = 0X02A2 - WM_NCMOUSEMOVE = 160 - WM_NCPAINT = 133 - WM_NCRBUTTONDBLCLK = 166 - WM_NCRBUTTONDOWN = 164 - WM_NCRBUTTONUP = 165 - WM_NEXTDLGCTL = 40 - WM_NEXTMENU = 531 - WM_NOTIFY = 78 - WM_NOTIFYFORMAT = 85 - WM_NULL = 0 - WM_PAINT = 15 - WM_PAINTCLIPBOARD = 777 - WM_PAINTICON = 38 - WM_PALETTECHANGED = 785 - WM_PALETTEISCHANGING = 784 - WM_PARENTNOTIFY = 528 - WM_PASTE = 770 - WM_PENWINFIRST = 896 - WM_PENWINLAST = 911 - WM_POWER = 72 - WM_POWERBROADCAST = 536 - WM_PRINT = 791 - WM_PRINTCLIENT = 792 - WM_QUERYDRAGICON = 55 - WM_QUERYENDSESSION = 17 - WM_QUERYNEWPALETTE = 783 - WM_QUERYOPEN = 19 - WM_QUEUESYNC = 35 - WM_QUIT = 18 - WM_RENDERALLFORMATS = 774 - WM_RENDERFORMAT = 773 - WM_SETCURSOR = 32 - WM_SETFOCUS = 7 - WM_SETFONT = 48 - WM_SETHOTKEY = 50 - WM_SETICON = 128 - WM_SETREDRAW = 11 - WM_SETTEXT = 12 - WM_SETTINGCHANGE = 26 - WM_SHOWWINDOW = 24 - WM_SIZE = 5 - WM_SIZECLIPBOARD = 779 - WM_SIZING = 532 - WM_SPOOLERSTATUS = 42 - WM_STYLECHANGED = 125 - WM_STYLECHANGING = 124 - WM_SYSCHAR = 262 - WM_SYSCOLORCHANGE = 21 - WM_SYSCOMMAND = 274 - WM_SYSDEADCHAR = 263 - WM_SYSKEYDOWN = 260 - WM_SYSKEYUP = 261 - WM_TCARD = 82 - WM_THEMECHANGED = 794 - WM_TIMECHANGE = 30 - WM_TIMER = 275 - WM_UNDO = 772 - WM_USER = 1024 - WM_USERCHANGED = 84 - WM_VKEYTOITEM = 46 - WM_VSCROLL = 277 - WM_VSCROLLCLIPBOARD = 778 - WM_WINDOWPOSCHANGED = 71 - WM_WINDOWPOSCHANGING = 70 - WM_WININICHANGE = 26 - WM_KEYFIRST = 256 - WM_KEYLAST = 264 - WM_SYNCPAINT = 136 - WM_MOUSEACTIVATE = 33 - WM_MOUSEMOVE = 512 - WM_LBUTTONDOWN = 513 - WM_LBUTTONUP = 514 - WM_LBUTTONDBLCLK = 515 - WM_RBUTTONDOWN = 516 - WM_RBUTTONUP = 517 - WM_RBUTTONDBLCLK = 518 - WM_MBUTTONDOWN = 519 - WM_MBUTTONUP = 520 - WM_MBUTTONDBLCLK = 521 - WM_MOUSEWHEEL = 522 - WM_MOUSEFIRST = 512 - WM_XBUTTONDOWN = 523 - WM_XBUTTONUP = 524 - WM_XBUTTONDBLCLK = 525 - WM_MOUSELAST = 525 - WM_MOUSEHOVER = 0X2A1 - WM_MOUSELEAVE = 0X2A3 - WM_CLIPBOARDUPDATE = 0x031D -) - -// WM_ACTIVATE -const ( - WA_INACTIVE = 0 - WA_ACTIVE = 1 - WA_CLICKACTIVE = 2 -) - -const LF_FACESIZE = 32 - -// Font weight constants -const ( - FW_DONTCARE = 0 - FW_THIN = 100 - FW_EXTRALIGHT = 200 - FW_ULTRALIGHT = FW_EXTRALIGHT - FW_LIGHT = 300 - FW_NORMAL = 400 - FW_REGULAR = 400 - FW_MEDIUM = 500 - FW_SEMIBOLD = 600 - FW_DEMIBOLD = FW_SEMIBOLD - FW_BOLD = 700 - FW_EXTRABOLD = 800 - FW_ULTRABOLD = FW_EXTRABOLD - FW_HEAVY = 900 - FW_BLACK = FW_HEAVY -) - -// Charset constants -const ( - ANSI_CHARSET = 0 - DEFAULT_CHARSET = 1 - SYMBOL_CHARSET = 2 - SHIFTJIS_CHARSET = 128 - HANGEUL_CHARSET = 129 - HANGUL_CHARSET = 129 - GB2312_CHARSET = 134 - CHINESEBIG5_CHARSET = 136 - GREEK_CHARSET = 161 - TURKISH_CHARSET = 162 - HEBREW_CHARSET = 177 - ARABIC_CHARSET = 178 - BALTIC_CHARSET = 186 - RUSSIAN_CHARSET = 204 - THAI_CHARSET = 222 - EASTEUROPE_CHARSET = 238 - OEM_CHARSET = 255 - JOHAB_CHARSET = 130 - VIETNAMESE_CHARSET = 163 - MAC_CHARSET = 77 -) - -// Font output precision constants -const ( - OUT_DEFAULT_PRECIS = 0 - OUT_STRING_PRECIS = 1 - OUT_CHARACTER_PRECIS = 2 - OUT_STROKE_PRECIS = 3 - OUT_TT_PRECIS = 4 - OUT_DEVICE_PRECIS = 5 - OUT_RASTER_PRECIS = 6 - OUT_TT_ONLY_PRECIS = 7 - OUT_OUTLINE_PRECIS = 8 - OUT_PS_ONLY_PRECIS = 10 -) - -// Font clipping precision constants -const ( - CLIP_DEFAULT_PRECIS = 0 - CLIP_CHARACTER_PRECIS = 1 - CLIP_STROKE_PRECIS = 2 - CLIP_MASK = 15 - CLIP_LH_ANGLES = 16 - CLIP_TT_ALWAYS = 32 - CLIP_EMBEDDED = 128 -) - -// Font output quality constants -const ( - DEFAULT_QUALITY = 0 - DRAFT_QUALITY = 1 - PROOF_QUALITY = 2 - NONANTIALIASED_QUALITY = 3 - ANTIALIASED_QUALITY = 4 - CLEARTYPE_QUALITY = 5 -) - -// Font pitch constants -const ( - DEFAULT_PITCH = 0 - FIXED_PITCH = 1 - VARIABLE_PITCH = 2 -) - -// Font family constants -const ( - FF_DECORATIVE = 80 - FF_DONTCARE = 0 - FF_MODERN = 48 - FF_ROMAN = 16 - FF_SCRIPT = 64 - FF_SWISS = 32 -) - -// DeviceCapabilities capabilities -const ( - DC_FIELDS = 1 - DC_PAPERS = 2 - DC_PAPERSIZE = 3 - DC_MINEXTENT = 4 - DC_MAXEXTENT = 5 - DC_BINS = 6 - DC_DUPLEX = 7 - DC_SIZE = 8 - DC_EXTRA = 9 - DC_VERSION = 10 - DC_DRIVER = 11 - DC_BINNAMES = 12 - DC_ENUMRESOLUTIONS = 13 - DC_FILEDEPENDENCIES = 14 - DC_TRUETYPE = 15 - DC_PAPERNAMES = 16 - DC_ORIENTATION = 17 - DC_COPIES = 18 - DC_BINADJUST = 19 - DC_EMF_COMPLIANT = 20 - DC_DATATYPE_PRODUCED = 21 - DC_COLLATE = 22 - DC_MANUFACTURER = 23 - DC_MODEL = 24 - DC_PERSONALITY = 25 - DC_PRINTRATE = 26 - DC_PRINTRATEUNIT = 27 - DC_PRINTERMEM = 28 - DC_MEDIAREADY = 29 - DC_STAPLE = 30 - DC_PRINTRATEPPM = 31 - DC_COLORDEVICE = 32 - DC_NUP = 33 - DC_MEDIATYPENAMES = 34 - DC_MEDIATYPES = 35 -) - -// GetDeviceCaps index constants -const ( - DRIVERVERSION = 0 - TECHNOLOGY = 2 - HORZSIZE = 4 - VERTSIZE = 6 - HORZRES = 8 - VERTRES = 10 - LOGPIXELSX = 88 - LOGPIXELSY = 90 - BITSPIXEL = 12 - PLANES = 14 - NUMBRUSHES = 16 - NUMPENS = 18 - NUMFONTS = 22 - NUMCOLORS = 24 - NUMMARKERS = 20 - ASPECTX = 40 - ASPECTY = 42 - ASPECTXY = 44 - PDEVICESIZE = 26 - CLIPCAPS = 36 - SIZEPALETTE = 104 - NUMRESERVED = 106 - COLORRES = 108 - PHYSICALWIDTH = 110 - PHYSICALHEIGHT = 111 - PHYSICALOFFSETX = 112 - PHYSICALOFFSETY = 113 - SCALINGFACTORX = 114 - SCALINGFACTORY = 115 - VREFRESH = 116 - DESKTOPHORZRES = 118 - DESKTOPVERTRES = 117 - BLTALIGNMENT = 119 - SHADEBLENDCAPS = 120 - COLORMGMTCAPS = 121 - RASTERCAPS = 38 - CURVECAPS = 28 - LINECAPS = 30 - POLYGONALCAPS = 32 - TEXTCAPS = 34 -) - -// GetDeviceCaps TECHNOLOGY constants -const ( - DT_PLOTTER = 0 - DT_RASDISPLAY = 1 - DT_RASPRINTER = 2 - DT_RASCAMERA = 3 - DT_CHARSTREAM = 4 - DT_METAFILE = 5 - DT_DISPFILE = 6 -) - -// GetDeviceCaps SHADEBLENDCAPS constants -const ( - SB_NONE = 0x00 - SB_CONST_ALPHA = 0x01 - SB_PIXEL_ALPHA = 0x02 - SB_PREMULT_ALPHA = 0x04 - SB_GRAD_RECT = 0x10 - SB_GRAD_TRI = 0x20 -) - -// GetDeviceCaps COLORMGMTCAPS constants -const ( - CM_NONE = 0x00 - CM_DEVICE_ICM = 0x01 - CM_GAMMA_RAMP = 0x02 - CM_CMYK_COLOR = 0x04 -) - -// GetDeviceCaps RASTERCAPS constants -const ( - RC_BANDING = 2 - RC_BITBLT = 1 - RC_BITMAP64 = 8 - RC_DI_BITMAP = 128 - RC_DIBTODEV = 512 - RC_FLOODFILL = 4096 - RC_GDI20_OUTPUT = 16 - RC_PALETTE = 256 - RC_SCALING = 4 - RC_STRETCHBLT = 2048 - RC_STRETCHDIB = 8192 - RC_DEVBITS = 0x8000 - RC_OP_DX_OUTPUT = 0x4000 -) - -// GetDeviceCaps CURVECAPS constants -const ( - CC_NONE = 0 - CC_CIRCLES = 1 - CC_PIE = 2 - CC_CHORD = 4 - CC_ELLIPSES = 8 - CC_WIDE = 16 - CC_STYLED = 32 - CC_WIDESTYLED = 64 - CC_INTERIORS = 128 - CC_ROUNDRECT = 256 -) - -// GetDeviceCaps LINECAPS constants -const ( - LC_NONE = 0 - LC_POLYLINE = 2 - LC_MARKER = 4 - LC_POLYMARKER = 8 - LC_WIDE = 16 - LC_STYLED = 32 - LC_WIDESTYLED = 64 - LC_INTERIORS = 128 -) - -// GetDeviceCaps POLYGONALCAPS constants -const ( - PC_NONE = 0 - PC_POLYGON = 1 - PC_POLYPOLYGON = 256 - PC_PATHS = 512 - PC_RECTANGLE = 2 - PC_WINDPOLYGON = 4 - PC_SCANLINE = 8 - PC_TRAPEZOID = 4 - PC_WIDE = 16 - PC_STYLED = 32 - PC_WIDESTYLED = 64 - PC_INTERIORS = 128 -) - -// GetDeviceCaps TEXTCAPS constants -const ( - TC_OP_CHARACTER = 1 - TC_OP_STROKE = 2 - TC_CP_STROKE = 4 - TC_CR_90 = 8 - TC_CR_ANY = 16 - TC_SF_X_YINDEP = 32 - TC_SA_DOUBLE = 64 - TC_SA_INTEGER = 128 - TC_SA_CONTIN = 256 - TC_EA_DOUBLE = 512 - TC_IA_ABLE = 1024 - TC_UA_ABLE = 2048 - TC_SO_ABLE = 4096 - TC_RA_ABLE = 8192 - TC_VA_ABLE = 16384 - TC_RESERVED = 32768 - TC_SCROLLBLT = 65536 -) - -// Static control styles -const ( - SS_BITMAP = 14 - SS_BLACKFRAME = 7 - SS_BLACKRECT = 4 - SS_CENTER = 1 - SS_CENTERIMAGE = 512 - SS_EDITCONTROL = 0x2000 - SS_ENHMETAFILE = 15 - SS_ETCHEDFRAME = 18 - SS_ETCHEDHORZ = 16 - SS_ETCHEDVERT = 17 - SS_GRAYFRAME = 8 - SS_GRAYRECT = 5 - SS_ICON = 3 - SS_LEFT = 0 - SS_LEFTNOWORDWRAP = 0xc - SS_NOPREFIX = 128 - SS_NOTIFY = 256 - SS_OWNERDRAW = 0xd - SS_REALSIZECONTROL = 0x040 - SS_REALSIZEIMAGE = 0x800 - SS_RIGHT = 2 - SS_RIGHTJUST = 0x400 - SS_SIMPLE = 11 - SS_SUNKEN = 4096 - SS_WHITEFRAME = 9 - SS_WHITERECT = 6 - SS_USERITEM = 10 - SS_TYPEMASK = 0x0000001F - SS_ENDELLIPSIS = 0x00004000 - SS_PATHELLIPSIS = 0x00008000 - SS_WORDELLIPSIS = 0x0000C000 - SS_ELLIPSISMASK = 0x0000C000 -) - -// Edit styles -const ( - ES_LEFT = 0x0000 - ES_CENTER = 0x0001 - ES_RIGHT = 0x0002 - ES_MULTILINE = 0x0004 - ES_UPPERCASE = 0x0008 - ES_LOWERCASE = 0x0010 - ES_PASSWORD = 0x0020 - ES_AUTOVSCROLL = 0x0040 - ES_AUTOHSCROLL = 0x0080 - ES_NOHIDESEL = 0x0100 - ES_OEMCONVERT = 0x0400 - ES_READONLY = 0x0800 - ES_WANTRETURN = 0x1000 - ES_NUMBER = 0x2000 -) - -// Edit notifications -const ( - EN_SETFOCUS = 0x0100 - EN_KILLFOCUS = 0x0200 - EN_CHANGE = 0x0300 - EN_UPDATE = 0x0400 - EN_ERRSPACE = 0x0500 - EN_MAXTEXT = 0x0501 - EN_HSCROLL = 0x0601 - EN_VSCROLL = 0x0602 - EN_ALIGN_LTR_EC = 0x0700 - EN_ALIGN_RTL_EC = 0x0701 -) - -// Edit messages -const ( - EM_GETSEL = 0x00B0 - EM_SETSEL = 0x00B1 - EM_GETRECT = 0x00B2 - EM_SETRECT = 0x00B3 - EM_SETRECTNP = 0x00B4 - EM_SCROLL = 0x00B5 - EM_LINESCROLL = 0x00B6 - EM_SCROLLCARET = 0x00B7 - EM_GETMODIFY = 0x00B8 - EM_SETMODIFY = 0x00B9 - EM_GETLINECOUNT = 0x00BA - EM_LINEINDEX = 0x00BB - EM_SETHANDLE = 0x00BC - EM_GETHANDLE = 0x00BD - EM_GETTHUMB = 0x00BE - EM_LINELENGTH = 0x00C1 - EM_REPLACESEL = 0x00C2 - EM_GETLINE = 0x00C4 - EM_LIMITTEXT = 0x00C5 - EM_CANUNDO = 0x00C6 - EM_UNDO = 0x00C7 - EM_FMTLINES = 0x00C8 - EM_LINEFROMCHAR = 0x00C9 - EM_SETTABSTOPS = 0x00CB - EM_SETPASSWORDCHAR = 0x00CC - EM_EMPTYUNDOBUFFER = 0x00CD - EM_GETFIRSTVISIBLELINE = 0x00CE - EM_SETREADONLY = 0x00CF - EM_SETWORDBREAKPROC = 0x00D0 - EM_GETWORDBREAKPROC = 0x00D1 - EM_GETPASSWORDCHAR = 0x00D2 - EM_SETMARGINS = 0x00D3 - EM_GETMARGINS = 0x00D4 - EM_SETLIMITTEXT = EM_LIMITTEXT - EM_GETLIMITTEXT = 0x00D5 - EM_POSFROMCHAR = 0x00D6 - EM_CHARFROMPOS = 0x00D7 - EM_SETIMESTATUS = 0x00D8 - EM_GETIMESTATUS = 0x00D9 - EM_SETCUEBANNER = 0x1501 - EM_GETCUEBANNER = 0x1502 -) - -const ( - CCM_FIRST = 0x2000 - CCM_LAST = CCM_FIRST + 0x200 - CCM_SETBKCOLOR = 8193 - CCM_SETCOLORSCHEME = 8194 - CCM_GETCOLORSCHEME = 8195 - CCM_GETDROPTARGET = 8196 - CCM_SETUNICODEFORMAT = 8197 - CCM_GETUNICODEFORMAT = 8198 - CCM_SETVERSION = 0x2007 - CCM_GETVERSION = 0x2008 - CCM_SETNOTIFYWINDOW = 0x2009 - CCM_SETWINDOWTHEME = 0x200b - CCM_DPISCALE = 0x200c -) - -// Common controls styles -const ( - CCS_TOP = 1 - CCS_NOMOVEY = 2 - CCS_BOTTOM = 3 - CCS_NORESIZE = 4 - CCS_NOPARENTALIGN = 8 - CCS_ADJUSTABLE = 32 - CCS_NODIVIDER = 64 - CCS_VERT = 128 - CCS_LEFT = 129 - CCS_NOMOVEX = 130 - CCS_RIGHT = 131 -) - -// ProgressBar messages -const ( - PROGRESS_CLASS = "msctls_progress32" - PBM_SETPOS = WM_USER + 2 - PBM_DELTAPOS = WM_USER + 3 - PBM_SETSTEP = WM_USER + 4 - PBM_STEPIT = WM_USER + 5 - PBM_SETRANGE32 = 1030 - PBM_GETRANGE = 1031 - PBM_GETPOS = 1032 - PBM_SETBARCOLOR = 1033 - PBM_SETBKCOLOR = CCM_SETBKCOLOR - PBS_SMOOTH = 1 - PBS_VERTICAL = 4 -) - -// GetOpenFileName and GetSaveFileName extended flags -const ( - OFN_EX_NOPLACESBAR = 0x00000001 -) - -// GetOpenFileName and GetSaveFileName flags -const ( - OFN_ALLOWMULTISELECT = 0x00000200 - OFN_CREATEPROMPT = 0x00002000 - OFN_DONTADDTORECENT = 0x02000000 - OFN_ENABLEHOOK = 0x00000020 - OFN_ENABLEINCLUDENOTIFY = 0x00400000 - OFN_ENABLESIZING = 0x00800000 - OFN_ENABLETEMPLATE = 0x00000040 - OFN_ENABLETEMPLATEHANDLE = 0x00000080 - OFN_EXPLORER = 0x00080000 - OFN_EXTENSIONDIFFERENT = 0x00000400 - OFN_FILEMUSTEXIST = 0x00001000 - OFN_FORCESHOWHIDDEN = 0x10000000 - OFN_HIDEREADONLY = 0x00000004 - OFN_LONGNAMES = 0x00200000 - OFN_NOCHANGEDIR = 0x00000008 - OFN_NODEREFERENCELINKS = 0x00100000 - OFN_NOLONGNAMES = 0x00040000 - OFN_NONETWORKBUTTON = 0x00020000 - OFN_NOREADONLYRETURN = 0x00008000 - OFN_NOTESTFILECREATE = 0x00010000 - OFN_NOVALIDATE = 0x00000100 - OFN_OVERWRITEPROMPT = 0x00000002 - OFN_PATHMUSTEXIST = 0x00000800 - OFN_READONLY = 0x00000001 - OFN_SHAREAWARE = 0x00004000 - OFN_SHOWHELP = 0x00000010 -) - -//SHBrowseForFolder flags -const ( - BIF_RETURNONLYFSDIRS = 0x00000001 - BIF_DONTGOBELOWDOMAIN = 0x00000002 - BIF_STATUSTEXT = 0x00000004 - BIF_RETURNFSANCESTORS = 0x00000008 - BIF_EDITBOX = 0x00000010 - BIF_VALIDATE = 0x00000020 - BIF_NEWDIALOGSTYLE = 0x00000040 - BIF_BROWSEINCLUDEURLS = 0x00000080 - BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE - BIF_UAHINT = 0x00000100 - BIF_NONEWFOLDERBUTTON = 0x00000200 - BIF_NOTRANSLATETARGETS = 0x00000400 - BIF_BROWSEFORCOMPUTER = 0x00001000 - BIF_BROWSEFORPRINTER = 0x00002000 - BIF_BROWSEINCLUDEFILES = 0x00004000 - BIF_SHAREABLE = 0x00008000 - BIF_BROWSEFILEJUNCTIONS = 0x00010000 -) - -//MessageBox flags -const ( - MB_OK = 0x00000000 - MB_OKCANCEL = 0x00000001 - MB_ABORTRETRYIGNORE = 0x00000002 - MB_YESNOCANCEL = 0x00000003 - MB_YESNO = 0x00000004 - MB_RETRYCANCEL = 0x00000005 - MB_CANCELTRYCONTINUE = 0x00000006 - MB_ICONHAND = 0x00000010 - MB_ICONQUESTION = 0x00000020 - MB_ICONEXCLAMATION = 0x00000030 - MB_ICONASTERISK = 0x00000040 - MB_USERICON = 0x00000080 - MB_ICONWARNING = MB_ICONEXCLAMATION - MB_ICONERROR = MB_ICONHAND - MB_ICONINFORMATION = MB_ICONASTERISK - MB_ICONSTOP = MB_ICONHAND - MB_DEFBUTTON1 = 0x00000000 - MB_DEFBUTTON2 = 0x00000100 - MB_DEFBUTTON3 = 0x00000200 - MB_DEFBUTTON4 = 0x00000300 -) - -//COM -const ( - E_INVALIDARG = 0x80070057 - E_OUTOFMEMORY = 0x8007000E - E_UNEXPECTED = 0x8000FFFF -) - -const ( - S_OK = 0 - S_FALSE = 0x0001 - RPC_E_CHANGED_MODE = 0x80010106 -) - -// GetSystemMetrics constants -const ( - SM_CXSCREEN = 0 - SM_CYSCREEN = 1 - SM_CXVSCROLL = 2 - SM_CYHSCROLL = 3 - SM_CYCAPTION = 4 - SM_CXBORDER = 5 - SM_CYBORDER = 6 - SM_CXDLGFRAME = 7 - SM_CYDLGFRAME = 8 - SM_CYVTHUMB = 9 - SM_CXHTHUMB = 10 - SM_CXICON = 11 - SM_CYICON = 12 - SM_CXCURSOR = 13 - SM_CYCURSOR = 14 - SM_CYMENU = 15 - SM_CXFULLSCREEN = 16 - SM_CYFULLSCREEN = 17 - SM_CYKANJIWINDOW = 18 - SM_MOUSEPRESENT = 19 - SM_CYVSCROLL = 20 - SM_CXHSCROLL = 21 - SM_DEBUG = 22 - SM_SWAPBUTTON = 23 - SM_RESERVED1 = 24 - SM_RESERVED2 = 25 - SM_RESERVED3 = 26 - SM_RESERVED4 = 27 - SM_CXMIN = 28 - SM_CYMIN = 29 - SM_CXSIZE = 30 - SM_CYSIZE = 31 - SM_CXFRAME = 32 - SM_CYFRAME = 33 - SM_CXMINTRACK = 34 - SM_CYMINTRACK = 35 - SM_CXDOUBLECLK = 36 - SM_CYDOUBLECLK = 37 - SM_CXICONSPACING = 38 - SM_CYICONSPACING = 39 - SM_MENUDROPALIGNMENT = 40 - SM_PENWINDOWS = 41 - SM_DBCSENABLED = 42 - SM_CMOUSEBUTTONS = 43 - SM_CXFIXEDFRAME = SM_CXDLGFRAME - SM_CYFIXEDFRAME = SM_CYDLGFRAME - SM_CXSIZEFRAME = SM_CXFRAME - SM_CYSIZEFRAME = SM_CYFRAME - SM_SECURE = 44 - SM_CXEDGE = 45 - SM_CYEDGE = 46 - SM_CXMINSPACING = 47 - SM_CYMINSPACING = 48 - SM_CXSMICON = 49 - SM_CYSMICON = 50 - SM_CYSMCAPTION = 51 - SM_CXSMSIZE = 52 - SM_CYSMSIZE = 53 - SM_CXMENUSIZE = 54 - SM_CYMENUSIZE = 55 - SM_ARRANGE = 56 - SM_CXMINIMIZED = 57 - SM_CYMINIMIZED = 58 - SM_CXMAXTRACK = 59 - SM_CYMAXTRACK = 60 - SM_CXMAXIMIZED = 61 - SM_CYMAXIMIZED = 62 - SM_NETWORK = 63 - SM_CLEANBOOT = 67 - SM_CXDRAG = 68 - SM_CYDRAG = 69 - SM_SHOWSOUNDS = 70 - SM_CXMENUCHECK = 71 - SM_CYMENUCHECK = 72 - SM_SLOWMACHINE = 73 - SM_MIDEASTENABLED = 74 - SM_MOUSEWHEELPRESENT = 75 - SM_XVIRTUALSCREEN = 76 - SM_YVIRTUALSCREEN = 77 - SM_CXVIRTUALSCREEN = 78 - SM_CYVIRTUALSCREEN = 79 - SM_CMONITORS = 80 - SM_SAMEDISPLAYFORMAT = 81 - SM_IMMENABLED = 82 - SM_CXFOCUSBORDER = 83 - SM_CYFOCUSBORDER = 84 - SM_TABLETPC = 86 - SM_MEDIACENTER = 87 - SM_STARTER = 88 - SM_SERVERR2 = 89 - SM_CMETRICS = 91 - SM_REMOTESESSION = 0x1000 - SM_SHUTTINGDOWN = 0x2000 - SM_REMOTECONTROL = 0x2001 - SM_CARETBLINKINGENABLED = 0x2002 -) - -const ( - CLSCTX_INPROC_SERVER = 1 - CLSCTX_INPROC_HANDLER = 2 - CLSCTX_LOCAL_SERVER = 4 - CLSCTX_INPROC_SERVER16 = 8 - CLSCTX_REMOTE_SERVER = 16 - CLSCTX_ALL = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER - CLSCTX_INPROC = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER - CLSCTX_SERVER = CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER -) - -const ( - COINIT_APARTMENTTHREADED = 0x2 - COINIT_MULTITHREADED = 0x0 - COINIT_DISABLE_OLE1DDE = 0x4 - COINIT_SPEED_OVER_MEMORY = 0x8 -) - -const ( - DISPATCH_METHOD = 1 - DISPATCH_PROPERTYGET = 2 - DISPATCH_PROPERTYPUT = 4 - DISPATCH_PROPERTYPUTREF = 8 -) - -const ( - CC_FASTCALL = iota - CC_CDECL - CC_MSCPASCAL - CC_PASCAL = CC_MSCPASCAL - CC_MACPASCAL - CC_STDCALL - CC_FPFASTCALL - CC_SYSCALL - CC_MPWCDECL - CC_MPWPASCAL - CC_MAX = CC_MPWPASCAL -) - -const ( - VT_EMPTY = 0x0 - VT_NULL = 0x1 - VT_I2 = 0x2 - VT_I4 = 0x3 - VT_R4 = 0x4 - VT_R8 = 0x5 - VT_CY = 0x6 - VT_DATE = 0x7 - VT_BSTR = 0x8 - VT_DISPATCH = 0x9 - VT_ERROR = 0xa - VT_BOOL = 0xb - VT_VARIANT = 0xc - VT_UNKNOWN = 0xd - VT_DECIMAL = 0xe - VT_I1 = 0x10 - VT_UI1 = 0x11 - VT_UI2 = 0x12 - VT_UI4 = 0x13 - VT_I8 = 0x14 - VT_UI8 = 0x15 - VT_INT = 0x16 - VT_UINT = 0x17 - VT_VOID = 0x18 - VT_HRESULT = 0x19 - VT_PTR = 0x1a - VT_SAFEARRAY = 0x1b - VT_CARRAY = 0x1c - VT_USERDEFINED = 0x1d - VT_LPSTR = 0x1e - VT_LPWSTR = 0x1f - VT_RECORD = 0x24 - VT_INT_PTR = 0x25 - VT_UINT_PTR = 0x26 - VT_FILETIME = 0x40 - VT_BLOB = 0x41 - VT_STREAM = 0x42 - VT_STORAGE = 0x43 - VT_STREAMED_OBJECT = 0x44 - VT_STORED_OBJECT = 0x45 - VT_BLOB_OBJECT = 0x46 - VT_CF = 0x47 - VT_CLSID = 0x48 - VT_BSTR_BLOB = 0xfff - VT_VECTOR = 0x1000 - VT_ARRAY = 0x2000 - VT_BYREF = 0x4000 - VT_RESERVED = 0x8000 - VT_ILLEGAL = 0xffff - VT_ILLEGALMASKED = 0xfff - VT_TYPEMASK = 0xfff -) - -const ( - DISPID_UNKNOWN = -1 - DISPID_VALUE = 0 - DISPID_PROPERTYPUT = -3 - DISPID_NEWENUM = -4 - DISPID_EVALUATE = -5 - DISPID_CONSTRUCTOR = -6 - DISPID_DESTRUCTOR = -7 - DISPID_COLLECT = -8 -) - -const ( - MONITOR_DEFAULTTONULL = 0x00000000 - MONITOR_DEFAULTTOPRIMARY = 0x00000001 - MONITOR_DEFAULTTONEAREST = 0x00000002 - - MONITORINFOF_PRIMARY = 0x00000001 -) - -const ( - CCHDEVICENAME = 32 - CCHFORMNAME = 32 -) - -const ( - IDOK = 1 - IDCANCEL = 2 - IDABORT = 3 - IDRETRY = 4 - IDIGNORE = 5 - IDYES = 6 - IDNO = 7 - IDCLOSE = 8 - IDHELP = 9 - IDTRYAGAIN = 10 - IDCONTINUE = 11 - IDTIMEOUT = 32000 -) - -// Generic WM_NOTIFY notification codes -const ( - NM_FIRST = 0 - NM_OUTOFMEMORY = NM_FIRST - 1 - NM_CLICK = NM_FIRST - 2 - NM_DBLCLK = NM_FIRST - 3 - NM_RETURN = NM_FIRST - 4 - NM_RCLICK = NM_FIRST - 5 - NM_RDBLCLK = NM_FIRST - 6 - NM_SETFOCUS = NM_FIRST - 7 - NM_KILLFOCUS = NM_FIRST - 8 - NM_CUSTOMDRAW = NM_FIRST - 12 - NM_HOVER = NM_FIRST - 13 - NM_NCHITTEST = NM_FIRST - 14 - NM_KEYDOWN = NM_FIRST - 15 - NM_RELEASEDCAPTURE = NM_FIRST - 16 - NM_SETCURSOR = NM_FIRST - 17 - NM_CHAR = NM_FIRST - 18 - NM_TOOLTIPSCREATED = NM_FIRST - 19 - NM_LAST = NM_FIRST - 99 -) - -// ListView messages -const ( - LVM_FIRST = 0x1000 - LVM_GETITEMCOUNT = LVM_FIRST + 4 - LVM_SETIMAGELIST = LVM_FIRST + 3 - LVM_GETIMAGELIST = LVM_FIRST + 2 - LVM_GETITEM = LVM_FIRST + 75 - LVM_SETITEM = LVM_FIRST + 76 - LVM_INSERTITEM = LVM_FIRST + 77 - LVM_DELETEITEM = LVM_FIRST + 8 - LVM_DELETEALLITEMS = LVM_FIRST + 9 - LVM_GETCALLBACKMASK = LVM_FIRST + 10 - LVM_SETCALLBACKMASK = LVM_FIRST + 11 - LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT - LVM_GETNEXTITEM = LVM_FIRST + 12 - LVM_FINDITEM = LVM_FIRST + 83 - LVM_GETITEMRECT = LVM_FIRST + 14 - LVM_GETSTRINGWIDTH = LVM_FIRST + 87 - LVM_HITTEST = LVM_FIRST + 18 - LVM_ENSUREVISIBLE = LVM_FIRST + 19 - LVM_SCROLL = LVM_FIRST + 20 - LVM_REDRAWITEMS = LVM_FIRST + 21 - LVM_ARRANGE = LVM_FIRST + 22 - LVM_EDITLABEL = LVM_FIRST + 118 - LVM_GETEDITCONTROL = LVM_FIRST + 24 - LVM_GETCOLUMN = LVM_FIRST + 95 - LVM_SETCOLUMN = LVM_FIRST + 96 - LVM_INSERTCOLUMN = LVM_FIRST + 97 - LVM_DELETECOLUMN = LVM_FIRST + 28 - LVM_GETCOLUMNWIDTH = LVM_FIRST + 29 - LVM_SETCOLUMNWIDTH = LVM_FIRST + 30 - LVM_GETHEADER = LVM_FIRST + 31 - LVM_CREATEDRAGIMAGE = LVM_FIRST + 33 - LVM_GETVIEWRECT = LVM_FIRST + 34 - LVM_GETTEXTCOLOR = LVM_FIRST + 35 - LVM_SETTEXTCOLOR = LVM_FIRST + 36 - LVM_GETTEXTBKCOLOR = LVM_FIRST + 37 - LVM_SETTEXTBKCOLOR = LVM_FIRST + 38 - LVM_GETTOPINDEX = LVM_FIRST + 39 - LVM_GETCOUNTPERPAGE = LVM_FIRST + 40 - LVM_GETORIGIN = LVM_FIRST + 41 - LVM_UPDATE = LVM_FIRST + 42 - LVM_SETITEMSTATE = LVM_FIRST + 43 - LVM_GETITEMSTATE = LVM_FIRST + 44 - LVM_GETITEMTEXT = LVM_FIRST + 115 - LVM_SETITEMTEXT = LVM_FIRST + 116 - LVM_SETITEMCOUNT = LVM_FIRST + 47 - LVM_SORTITEMS = LVM_FIRST + 48 - LVM_SETITEMPOSITION32 = LVM_FIRST + 49 - LVM_GETSELECTEDCOUNT = LVM_FIRST + 50 - LVM_GETITEMSPACING = LVM_FIRST + 51 - LVM_GETISEARCHSTRING = LVM_FIRST + 117 - LVM_SETICONSPACING = LVM_FIRST + 53 - LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54 - LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55 - LVM_GETSUBITEMRECT = LVM_FIRST + 56 - LVM_SUBITEMHITTEST = LVM_FIRST + 57 - LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58 - LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59 - LVM_SETHOTITEM = LVM_FIRST + 60 - LVM_GETHOTITEM = LVM_FIRST + 61 - LVM_SETHOTCURSOR = LVM_FIRST + 62 - LVM_GETHOTCURSOR = LVM_FIRST + 63 - LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64 - LVM_SETWORKAREAS = LVM_FIRST + 65 - LVM_GETWORKAREAS = LVM_FIRST + 70 - LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73 - LVM_GETSELECTIONMARK = LVM_FIRST + 66 - LVM_SETSELECTIONMARK = LVM_FIRST + 67 - LVM_SETHOVERTIME = LVM_FIRST + 71 - LVM_GETHOVERTIME = LVM_FIRST + 72 - LVM_SETTOOLTIPS = LVM_FIRST + 74 - LVM_GETTOOLTIPS = LVM_FIRST + 78 - LVM_SORTITEMSEX = LVM_FIRST + 81 - LVM_SETBKIMAGE = LVM_FIRST + 138 - LVM_GETBKIMAGE = LVM_FIRST + 139 - LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 - LVM_SETVIEW = LVM_FIRST + 142 - LVM_GETVIEW = LVM_FIRST + 143 - LVM_INSERTGROUP = LVM_FIRST + 145 - LVM_SETGROUPINFO = LVM_FIRST + 147 - LVM_GETGROUPINFO = LVM_FIRST + 149 - LVM_REMOVEGROUP = LVM_FIRST + 150 - LVM_MOVEGROUP = LVM_FIRST + 151 - LVM_GETGROUPCOUNT = LVM_FIRST + 152 - LVM_GETGROUPINFOBYINDEX = LVM_FIRST + 153 - LVM_MOVEITEMTOGROUP = LVM_FIRST + 154 - LVM_GETGROUPRECT = LVM_FIRST + 98 - LVM_SETGROUPMETRICS = LVM_FIRST + 155 - LVM_GETGROUPMETRICS = LVM_FIRST + 156 - LVM_ENABLEGROUPVIEW = LVM_FIRST + 157 - LVM_SORTGROUPS = LVM_FIRST + 158 - LVM_INSERTGROUPSORTED = LVM_FIRST + 159 - LVM_REMOVEALLGROUPS = LVM_FIRST + 160 - LVM_HASGROUP = LVM_FIRST + 161 - LVM_GETGROUPSTATE = LVM_FIRST + 92 - LVM_GETFOCUSEDGROUP = LVM_FIRST + 93 - LVM_SETTILEVIEWINFO = LVM_FIRST + 162 - LVM_GETTILEVIEWINFO = LVM_FIRST + 163 - LVM_SETTILEINFO = LVM_FIRST + 164 - LVM_GETTILEINFO = LVM_FIRST + 165 - LVM_SETINSERTMARK = LVM_FIRST + 166 - LVM_GETINSERTMARK = LVM_FIRST + 167 - LVM_INSERTMARKHITTEST = LVM_FIRST + 168 - LVM_GETINSERTMARKRECT = LVM_FIRST + 169 - LVM_SETINSERTMARKCOLOR = LVM_FIRST + 170 - LVM_GETINSERTMARKCOLOR = LVM_FIRST + 171 - LVM_SETINFOTIP = LVM_FIRST + 173 - LVM_GETSELECTEDCOLUMN = LVM_FIRST + 174 - LVM_ISGROUPVIEWENABLED = LVM_FIRST + 175 - LVM_GETOUTLINECOLOR = LVM_FIRST + 176 - LVM_SETOUTLINECOLOR = LVM_FIRST + 177 - LVM_CANCELEDITLABEL = LVM_FIRST + 179 - LVM_MAPINDEXTOID = LVM_FIRST + 180 - LVM_MAPIDTOINDEX = LVM_FIRST + 181 - LVM_ISITEMVISIBLE = LVM_FIRST + 182 - LVM_GETNEXTITEMINDEX = LVM_FIRST + 211 -) - -// ListView notifications -const ( - LVN_FIRST = -100 - - LVN_ITEMCHANGING = LVN_FIRST - 0 - LVN_ITEMCHANGED = LVN_FIRST - 1 - LVN_INSERTITEM = LVN_FIRST - 2 - LVN_DELETEITEM = LVN_FIRST - 3 - LVN_DELETEALLITEMS = LVN_FIRST - 4 - LVN_BEGINLABELEDITA = LVN_FIRST - 5 - LVN_BEGINLABELEDITW = LVN_FIRST - 75 - LVN_ENDLABELEDITA = LVN_FIRST - 6 - LVN_ENDLABELEDITW = LVN_FIRST - 76 - LVN_COLUMNCLICK = LVN_FIRST - 8 - LVN_BEGINDRAG = LVN_FIRST - 9 - LVN_BEGINRDRAG = LVN_FIRST - 11 - LVN_ODCACHEHINT = LVN_FIRST - 13 - LVN_ODFINDITEMA = LVN_FIRST - 52 - LVN_ODFINDITEMW = LVN_FIRST - 79 - LVN_ITEMACTIVATE = LVN_FIRST - 14 - LVN_ODSTATECHANGED = LVN_FIRST - 15 - LVN_HOTTRACK = LVN_FIRST - 21 - LVN_GETDISPINFO = LVN_FIRST - 77 - LVN_SETDISPINFO = LVN_FIRST - 78 - LVN_KEYDOWN = LVN_FIRST - 55 - LVN_MARQUEEBEGIN = LVN_FIRST - 56 - LVN_GETINFOTIP = LVN_FIRST - 58 - LVN_INCREMENTALSEARCH = LVN_FIRST - 63 - LVN_BEGINSCROLL = LVN_FIRST - 80 - LVN_ENDSCROLL = LVN_FIRST - 81 -) - -// ListView LVNI constants -const ( - LVNI_ALL = 0 - LVNI_FOCUSED = 1 - LVNI_SELECTED = 2 - LVNI_CUT = 4 - LVNI_DROPHILITED = 8 - LVNI_ABOVE = 256 - LVNI_BELOW = 512 - LVNI_TOLEFT = 1024 - LVNI_TORIGHT = 2048 -) - -// ListView styles -const ( - LVS_ICON = 0x0000 - LVS_REPORT = 0x0001 - LVS_SMALLICON = 0x0002 - LVS_LIST = 0x0003 - LVS_TYPEMASK = 0x0003 - LVS_SINGLESEL = 0x0004 - LVS_SHOWSELALWAYS = 0x0008 - LVS_SORTASCENDING = 0x0010 - LVS_SORTDESCENDING = 0x0020 - LVS_SHAREIMAGELISTS = 0x0040 - LVS_NOLABELWRAP = 0x0080 - LVS_AUTOARRANGE = 0x0100 - LVS_EDITLABELS = 0x0200 - LVS_OWNERDATA = 0x1000 - LVS_NOSCROLL = 0x2000 - LVS_TYPESTYLEMASK = 0xfc00 - LVS_ALIGNTOP = 0x0000 - LVS_ALIGNLEFT = 0x0800 - LVS_ALIGNMASK = 0x0c00 - LVS_OWNERDRAWFIXED = 0x0400 - LVS_NOCOLUMNHEADER = 0x4000 - LVS_NOSORTHEADER = 0x8000 -) - -// ListView extended styles -const ( - LVS_EX_GRIDLINES = 0x00000001 - LVS_EX_SUBITEMIMAGES = 0x00000002 - LVS_EX_CHECKBOXES = 0x00000004 - LVS_EX_TRACKSELECT = 0x00000008 - LVS_EX_HEADERDRAGDROP = 0x00000010 - LVS_EX_FULLROWSELECT = 0x00000020 - LVS_EX_ONECLICKACTIVATE = 0x00000040 - LVS_EX_TWOCLICKACTIVATE = 0x00000080 - LVS_EX_FLATSB = 0x00000100 - LVS_EX_REGIONAL = 0x00000200 - LVS_EX_INFOTIP = 0x00000400 - LVS_EX_UNDERLINEHOT = 0x00000800 - LVS_EX_UNDERLINECOLD = 0x00001000 - LVS_EX_MULTIWORKAREAS = 0x00002000 - LVS_EX_LABELTIP = 0x00004000 - LVS_EX_BORDERSELECT = 0x00008000 - LVS_EX_DOUBLEBUFFER = 0x00010000 - LVS_EX_HIDELABELS = 0x00020000 - LVS_EX_SINGLEROW = 0x00040000 - LVS_EX_SNAPTOGRID = 0x00080000 - LVS_EX_SIMPLESELECT = 0x00100000 -) - -// ListView column flags -const ( - LVCF_FMT = 0x0001 - LVCF_WIDTH = 0x0002 - LVCF_TEXT = 0x0004 - LVCF_SUBITEM = 0x0008 - LVCF_IMAGE = 0x0010 - LVCF_ORDER = 0x0020 -) - -// ListView column format constants -const ( - LVCFMT_LEFT = 0x0000 - LVCFMT_RIGHT = 0x0001 - LVCFMT_CENTER = 0x0002 - LVCFMT_JUSTIFYMASK = 0x0003 - LVCFMT_IMAGE = 0x0800 - LVCFMT_BITMAP_ON_RIGHT = 0x1000 - LVCFMT_COL_HAS_IMAGES = 0x8000 -) - -// ListView item flags -const ( - LVIF_TEXT = 0x00000001 - LVIF_IMAGE = 0x00000002 - LVIF_PARAM = 0x00000004 - LVIF_STATE = 0x00000008 - LVIF_INDENT = 0x00000010 - LVIF_NORECOMPUTE = 0x00000800 - LVIF_GROUPID = 0x00000100 - LVIF_COLUMNS = 0x00000200 -) - -// ListView item states -const ( - LVIS_FOCUSED = 1 - LVIS_SELECTED = 2 - LVIS_CUT = 4 - LVIS_DROPHILITED = 8 - LVIS_OVERLAYMASK = 0xF00 - LVIS_STATEIMAGEMASK = 0xF000 -) - -// ListView hit test constants -const ( - LVHT_NOWHERE = 0x00000001 - LVHT_ONITEMICON = 0x00000002 - LVHT_ONITEMLABEL = 0x00000004 - LVHT_ONITEMSTATEICON = 0x00000008 - LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON - - LVHT_ABOVE = 0x00000008 - LVHT_BELOW = 0x00000010 - LVHT_TORIGHT = 0x00000020 - LVHT_TOLEFT = 0x00000040 -) - -// ListView image list types -const ( - LVSIL_NORMAL = 0 - LVSIL_SMALL = 1 - LVSIL_STATE = 2 - LVSIL_GROUPHEADER = 3 -) - -// InitCommonControlsEx flags -const ( - ICC_LISTVIEW_CLASSES = 1 - ICC_TREEVIEW_CLASSES = 2 - ICC_BAR_CLASSES = 4 - ICC_TAB_CLASSES = 8 - ICC_UPDOWN_CLASS = 16 - ICC_PROGRESS_CLASS = 32 - ICC_HOTKEY_CLASS = 64 - ICC_ANIMATE_CLASS = 128 - ICC_WIN95_CLASSES = 255 - ICC_DATE_CLASSES = 256 - ICC_USEREX_CLASSES = 512 - ICC_COOL_CLASSES = 1024 - ICC_INTERNET_CLASSES = 2048 - ICC_PAGESCROLLER_CLASS = 4096 - ICC_NATIVEFNTCTL_CLASS = 8192 - INFOTIPSIZE = 1024 - ICC_STANDARD_CLASSES = 0x00004000 - ICC_LINK_CLASS = 0x00008000 -) - -// Dialog Codes -const ( - DLGC_WANTARROWS = 0x0001 - DLGC_WANTTAB = 0x0002 - DLGC_WANTALLKEYS = 0x0004 - DLGC_WANTMESSAGE = 0x0004 - DLGC_HASSETSEL = 0x0008 - DLGC_DEFPUSHBUTTON = 0x0010 - DLGC_UNDEFPUSHBUTTON = 0x0020 - DLGC_RADIOBUTTON = 0x0040 - DLGC_WANTCHARS = 0x0080 - DLGC_STATIC = 0x0100 - DLGC_BUTTON = 0x2000 -) - -// Get/SetWindowWord/Long offsets for use with WC_DIALOG windows -const ( - DWL_MSGRESULT = 0 - DWL_DLGPROC = 4 - DWL_USER = 8 -) - -// Registry predefined keys -const ( - HKEY_CLASSES_ROOT HKEY = 0x80000000 - HKEY_CURRENT_USER HKEY = 0x80000001 - HKEY_LOCAL_MACHINE HKEY = 0x80000002 - HKEY_USERS HKEY = 0x80000003 - HKEY_PERFORMANCE_DATA HKEY = 0x80000004 - HKEY_CURRENT_CONFIG HKEY = 0x80000005 - HKEY_DYN_DATA HKEY = 0x80000006 -) - -// Registry Key Security and Access Rights -const ( - KEY_ALL_ACCESS = 0xF003F - KEY_CREATE_SUB_KEY = 0x0004 - KEY_ENUMERATE_SUB_KEYS = 0x0008 - KEY_NOTIFY = 0x0010 - KEY_QUERY_VALUE = 0x0001 - KEY_SET_VALUE = 0x0002 - KEY_READ = 0x20019 - KEY_WRITE = 0x20006 -) - -const ( - NFR_ANSI = 1 - NFR_UNICODE = 2 - NF_QUERY = 3 - NF_REQUERY = 4 -) - -// Registry value types -const ( - RRF_RT_REG_NONE = 0x00000001 - RRF_RT_REG_SZ = 0x00000002 - RRF_RT_REG_EXPAND_SZ = 0x00000004 - RRF_RT_REG_BINARY = 0x00000008 - RRF_RT_REG_DWORD = 0x00000010 - RRF_RT_REG_MULTI_SZ = 0x00000020 - RRF_RT_REG_QWORD = 0x00000040 - RRF_RT_DWORD = (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD) - RRF_RT_QWORD = (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD) - RRF_RT_ANY = 0x0000ffff - RRF_NOEXPAND = 0x10000000 - RRF_ZEROONFAILURE = 0x20000000 - REG_PROCESS_APPKEY = 0x00000001 - REG_MUI_STRING_TRUNCATE = 0x00000001 -) - -// PeekMessage wRemoveMsg value -const ( - PM_NOREMOVE = 0x000 - PM_REMOVE = 0x001 - PM_NOYIELD = 0x002 -) - -// ImageList flags -const ( - ILC_MASK = 0x00000001 - ILC_COLOR = 0x00000000 - ILC_COLORDDB = 0x000000FE - ILC_COLOR4 = 0x00000004 - ILC_COLOR8 = 0x00000008 - ILC_COLOR16 = 0x00000010 - ILC_COLOR24 = 0x00000018 - ILC_COLOR32 = 0x00000020 - ILC_PALETTE = 0x00000800 - ILC_MIRROR = 0x00002000 - ILC_PERITEMMIRROR = 0x00008000 - ILC_ORIGINALSIZE = 0x00010000 - ILC_HIGHQUALITYSCALE = 0x00020000 -) - -// Keystroke Message Flags -const ( - KF_EXTENDED = 0x0100 - KF_DLGMODE = 0x0800 - KF_MENUMODE = 0x1000 - KF_ALTDOWN = 0x2000 - KF_REPEAT = 0x4000 - KF_UP = 0x8000 -) - -// Virtual-Key Codes -const ( - VK_LBUTTON = 0x01 - VK_RBUTTON = 0x02 - VK_CANCEL = 0x03 - VK_MBUTTON = 0x04 - VK_XBUTTON1 = 0x05 - VK_XBUTTON2 = 0x06 - VK_BACK = 0x08 - VK_TAB = 0x09 - VK_CLEAR = 0x0C - VK_RETURN = 0x0D - VK_SHIFT = 0x10 - VK_CONTROL = 0x11 - VK_MENU = 0x12 - VK_PAUSE = 0x13 - VK_CAPITAL = 0x14 - VK_KANA = 0x15 - VK_HANGEUL = 0x15 - VK_HANGUL = 0x15 - VK_JUNJA = 0x17 - VK_FINAL = 0x18 - VK_HANJA = 0x19 - VK_KANJI = 0x19 - VK_ESCAPE = 0x1B - VK_CONVERT = 0x1C - VK_NONCONVERT = 0x1D - VK_ACCEPT = 0x1E - VK_MODECHANGE = 0x1F - VK_SPACE = 0x20 - VK_PRIOR = 0x21 - VK_NEXT = 0x22 - VK_END = 0x23 - VK_HOME = 0x24 - VK_LEFT = 0x25 - VK_UP = 0x26 - VK_RIGHT = 0x27 - VK_DOWN = 0x28 - VK_SELECT = 0x29 - VK_PRINT = 0x2A - VK_EXECUTE = 0x2B - VK_SNAPSHOT = 0x2C - VK_INSERT = 0x2D - VK_DELETE = 0x2E - VK_HELP = 0x2F - VK_LWIN = 0x5B - VK_RWIN = 0x5C - VK_APPS = 0x5D - VK_SLEEP = 0x5F - VK_NUMPAD0 = 0x60 - VK_NUMPAD1 = 0x61 - VK_NUMPAD2 = 0x62 - VK_NUMPAD3 = 0x63 - VK_NUMPAD4 = 0x64 - VK_NUMPAD5 = 0x65 - VK_NUMPAD6 = 0x66 - VK_NUMPAD7 = 0x67 - VK_NUMPAD8 = 0x68 - VK_NUMPAD9 = 0x69 - VK_MULTIPLY = 0x6A - VK_ADD = 0x6B - VK_SEPARATOR = 0x6C - VK_SUBTRACT = 0x6D - VK_DECIMAL = 0x6E - VK_DIVIDE = 0x6F - VK_F1 = 0x70 - VK_F2 = 0x71 - VK_F3 = 0x72 - VK_F4 = 0x73 - VK_F5 = 0x74 - VK_F6 = 0x75 - VK_F7 = 0x76 - VK_F8 = 0x77 - VK_F9 = 0x78 - VK_F10 = 0x79 - VK_F11 = 0x7A - VK_F12 = 0x7B - VK_F13 = 0x7C - VK_F14 = 0x7D - VK_F15 = 0x7E - VK_F16 = 0x7F - VK_F17 = 0x80 - VK_F18 = 0x81 - VK_F19 = 0x82 - VK_F20 = 0x83 - VK_F21 = 0x84 - VK_F22 = 0x85 - VK_F23 = 0x86 - VK_F24 = 0x87 - VK_NUMLOCK = 0x90 - VK_SCROLL = 0x91 - VK_OEM_NEC_EQUAL = 0x92 - VK_OEM_FJ_JISHO = 0x92 - VK_OEM_FJ_MASSHOU = 0x93 - VK_OEM_FJ_TOUROKU = 0x94 - VK_OEM_FJ_LOYA = 0x95 - VK_OEM_FJ_ROYA = 0x96 - VK_LSHIFT = 0xA0 - VK_RSHIFT = 0xA1 - VK_LCONTROL = 0xA2 - VK_RCONTROL = 0xA3 - VK_LMENU = 0xA4 - VK_RMENU = 0xA5 - VK_BROWSER_BACK = 0xA6 - VK_BROWSER_FORWARD = 0xA7 - VK_BROWSER_REFRESH = 0xA8 - VK_BROWSER_STOP = 0xA9 - VK_BROWSER_SEARCH = 0xAA - VK_BROWSER_FAVORITES = 0xAB - VK_BROWSER_HOME = 0xAC - VK_VOLUME_MUTE = 0xAD - VK_VOLUME_DOWN = 0xAE - VK_VOLUME_UP = 0xAF - VK_MEDIA_NEXT_TRACK = 0xB0 - VK_MEDIA_PREV_TRACK = 0xB1 - VK_MEDIA_STOP = 0xB2 - VK_MEDIA_PLAY_PAUSE = 0xB3 - VK_LAUNCH_MAIL = 0xB4 - VK_LAUNCH_MEDIA_SELECT = 0xB5 - VK_LAUNCH_APP1 = 0xB6 - VK_LAUNCH_APP2 = 0xB7 - VK_OEM_1 = 0xBA - VK_OEM_PLUS = 0xBB - VK_OEM_COMMA = 0xBC - VK_OEM_MINUS = 0xBD - VK_OEM_PERIOD = 0xBE - VK_OEM_2 = 0xBF - VK_OEM_3 = 0xC0 - VK_OEM_4 = 0xDB - VK_OEM_5 = 0xDC - VK_OEM_6 = 0xDD - VK_OEM_7 = 0xDE - VK_OEM_8 = 0xDF - VK_OEM_AX = 0xE1 - VK_OEM_102 = 0xE2 - VK_ICO_HELP = 0xE3 - VK_ICO_00 = 0xE4 - VK_PROCESSKEY = 0xE5 - VK_ICO_CLEAR = 0xE6 - VK_OEM_RESET = 0xE9 - VK_OEM_JUMP = 0xEA - VK_OEM_PA1 = 0xEB - VK_OEM_PA2 = 0xEC - VK_OEM_PA3 = 0xED - VK_OEM_WSCTRL = 0xEE - VK_OEM_CUSEL = 0xEF - VK_OEM_ATTN = 0xF0 - VK_OEM_FINISH = 0xF1 - VK_OEM_COPY = 0xF2 - VK_OEM_AUTO = 0xF3 - VK_OEM_ENLW = 0xF4 - VK_OEM_BACKTAB = 0xF5 - VK_ATTN = 0xF6 - VK_CRSEL = 0xF7 - VK_EXSEL = 0xF8 - VK_EREOF = 0xF9 - VK_PLAY = 0xFA - VK_ZOOM = 0xFB - VK_NONAME = 0xFC - VK_PA1 = 0xFD - VK_OEM_CLEAR = 0xFE -) - -// Registry Value Types -const ( - REG_NONE = 0 - REG_SZ = 1 - REG_EXPAND_SZ = 2 - REG_BINARY = 3 - REG_DWORD = 4 - REG_DWORD_LITTLE_ENDIAN = 4 - REG_DWORD_BIG_ENDIAN = 5 - REG_LINK = 6 - REG_MULTI_SZ = 7 - REG_RESOURCE_LIST = 8 - REG_FULL_RESOURCE_DESCRIPTOR = 9 - REG_RESOURCE_REQUIREMENTS_LIST = 10 - REG_QWORD = 11 - REG_QWORD_LITTLE_ENDIAN = 11 -) - -// Tooltip styles -const ( - TTS_ALWAYSTIP = 0x01 - TTS_NOPREFIX = 0x02 - TTS_NOANIMATE = 0x10 - TTS_NOFADE = 0x20 - TTS_BALLOON = 0x40 - TTS_CLOSE = 0x80 - TTS_USEVISUALSTYLE = 0x100 -) - -// Tooltip messages -const ( - TTM_ACTIVATE = (WM_USER + 1) - TTM_SETDELAYTIME = (WM_USER + 3) - TTM_ADDTOOL = (WM_USER + 50) - TTM_DELTOOL = (WM_USER + 51) - TTM_NEWTOOLRECT = (WM_USER + 52) - TTM_RELAYEVENT = (WM_USER + 7) - TTM_GETTOOLINFO = (WM_USER + 53) - TTM_SETTOOLINFO = (WM_USER + 54) - TTM_HITTEST = (WM_USER + 55) - TTM_GETTEXT = (WM_USER + 56) - TTM_UPDATETIPTEXT = (WM_USER + 57) - TTM_GETTOOLCOUNT = (WM_USER + 13) - TTM_ENUMTOOLS = (WM_USER + 58) - TTM_GETCURRENTTOOL = (WM_USER + 59) - TTM_WINDOWFROMPOINT = (WM_USER + 16) - TTM_TRACKACTIVATE = (WM_USER + 17) - TTM_TRACKPOSITION = (WM_USER + 18) - TTM_SETTIPBKCOLOR = (WM_USER + 19) - TTM_SETTIPTEXTCOLOR = (WM_USER + 20) - TTM_GETDELAYTIME = (WM_USER + 21) - TTM_GETTIPBKCOLOR = (WM_USER + 22) - TTM_GETTIPTEXTCOLOR = (WM_USER + 23) - TTM_SETMAXTIPWIDTH = (WM_USER + 24) - TTM_GETMAXTIPWIDTH = (WM_USER + 25) - TTM_SETMARGIN = (WM_USER + 26) - TTM_GETMARGIN = (WM_USER + 27) - TTM_POP = (WM_USER + 28) - TTM_UPDATE = (WM_USER + 29) - TTM_GETBUBBLESIZE = (WM_USER + 30) - TTM_ADJUSTRECT = (WM_USER + 31) - TTM_SETTITLE = (WM_USER + 33) - TTM_POPUP = (WM_USER + 34) - TTM_GETTITLE = (WM_USER + 35) -) - -// Tooltip icons -const ( - TTI_NONE = 0 - TTI_INFO = 1 - TTI_WARNING = 2 - TTI_ERROR = 3 - TTI_INFO_LARGE = 4 - TTI_WARNING_LARGE = 5 - TTI_ERROR_LARGE = 6 -) - -// Tooltip notifications -const ( - TTN_FIRST = -520 - TTN_LAST = -549 - TTN_GETDISPINFO = (TTN_FIRST - 10) - TTN_SHOW = (TTN_FIRST - 1) - TTN_POP = (TTN_FIRST - 2) - TTN_LINKCLICK = (TTN_FIRST - 3) - TTN_NEEDTEXT = TTN_GETDISPINFO -) - -const ( - TTF_IDISHWND = 0x0001 - TTF_CENTERTIP = 0x0002 - TTF_RTLREADING = 0x0004 - TTF_SUBCLASS = 0x0010 - TTF_TRACK = 0x0020 - TTF_ABSOLUTE = 0x0080 - TTF_TRANSPARENT = 0x0100 - TTF_PARSELINKS = 0x1000 - TTF_DI_SETITEM = 0x8000 -) - -const ( - SWP_NOSIZE = 0x0001 - SWP_NOMOVE = 0x0002 - SWP_NOZORDER = 0x0004 - SWP_NOREDRAW = 0x0008 - SWP_NOACTIVATE = 0x0010 - SWP_FRAMECHANGED = 0x0020 - SWP_SHOWWINDOW = 0x0040 - SWP_HIDEWINDOW = 0x0080 - SWP_NOCOPYBITS = 0x0100 - SWP_NOOWNERZORDER = 0x0200 - SWP_NOSENDCHANGING = 0x0400 - SWP_DRAWFRAME = SWP_FRAMECHANGED - SWP_NOREPOSITION = SWP_NOOWNERZORDER - SWP_DEFERERASE = 0x2000 - SWP_ASYNCWINDOWPOS = 0x4000 -) - -// Predefined window handles -const ( - HWND_BROADCAST = HWND(0xFFFF) - HWND_BOTTOM = HWND(1) - HWND_NOTOPMOST = ^HWND(1) // -2 - HWND_TOP = HWND(0) - HWND_TOPMOST = ^HWND(0) // -1 - HWND_DESKTOP = HWND(0) - HWND_MESSAGE = ^HWND(2) // -3 -) - -// Pen types -const ( - PS_COSMETIC = 0x00000000 - PS_GEOMETRIC = 0x00010000 - PS_TYPE_MASK = 0x000F0000 -) - -// Pen styles -const ( - PS_SOLID = 0 - PS_DASH = 1 - PS_DOT = 2 - PS_DASHDOT = 3 - PS_DASHDOTDOT = 4 - PS_NULL = 5 - PS_INSIDEFRAME = 6 - PS_USERSTYLE = 7 - PS_ALTERNATE = 8 - PS_STYLE_MASK = 0x0000000F -) - -// Pen cap types -const ( - PS_ENDCAP_ROUND = 0x00000000 - PS_ENDCAP_SQUARE = 0x00000100 - PS_ENDCAP_FLAT = 0x00000200 - PS_ENDCAP_MASK = 0x00000F00 -) - -// Pen join types -const ( - PS_JOIN_ROUND = 0x00000000 - PS_JOIN_BEVEL = 0x00001000 - PS_JOIN_MITER = 0x00002000 - PS_JOIN_MASK = 0x0000F000 -) - -// Hatch styles -const ( - HS_HORIZONTAL = 0 - HS_VERTICAL = 1 - HS_FDIAGONAL = 2 - HS_BDIAGONAL = 3 - HS_CROSS = 4 - HS_DIAGCROSS = 5 -) - -// Stock Logical Objects -const ( - WHITE_BRUSH = 0 - LTGRAY_BRUSH = 1 - GRAY_BRUSH = 2 - DKGRAY_BRUSH = 3 - BLACK_BRUSH = 4 - NULL_BRUSH = 5 - HOLLOW_BRUSH = NULL_BRUSH - WHITE_PEN = 6 - BLACK_PEN = 7 - NULL_PEN = 8 - OEM_FIXED_FONT = 10 - ANSI_FIXED_FONT = 11 - ANSI_VAR_FONT = 12 - SYSTEM_FONT = 13 - DEVICE_DEFAULT_FONT = 14 - DEFAULT_PALETTE = 15 - SYSTEM_FIXED_FONT = 16 - DEFAULT_GUI_FONT = 17 - DC_BRUSH = 18 - DC_PEN = 19 -) - -// Brush styles -const ( - BS_SOLID = 0 - BS_NULL = 1 - BS_HOLLOW = BS_NULL - BS_HATCHED = 2 - BS_PATTERN = 3 - BS_INDEXED = 4 - BS_DIBPATTERN = 5 - BS_DIBPATTERNPT = 6 - BS_PATTERN8X8 = 7 - BS_DIBPATTERN8X8 = 8 - BS_MONOPATTERN = 9 -) - -// TRACKMOUSEEVENT flags -const ( - TME_HOVER = 0x00000001 - TME_LEAVE = 0x00000002 - TME_NONCLIENT = 0x00000010 - TME_QUERY = 0x40000000 - TME_CANCEL = 0x80000000 - - HOVER_DEFAULT = 0xFFFFFFFF -) - -// WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes -const ( - HTERROR = (-2) - HTTRANSPARENT = (-1) - HTNOWHERE = 0 - HTCLIENT = 1 - HTCAPTION = 2 - HTSYSMENU = 3 - HTGROWBOX = 4 - HTSIZE = HTGROWBOX - HTMENU = 5 - HTHSCROLL = 6 - HTVSCROLL = 7 - HTMINBUTTON = 8 - HTMAXBUTTON = 9 - HTLEFT = 10 - HTRIGHT = 11 - HTTOP = 12 - HTTOPLEFT = 13 - HTTOPRIGHT = 14 - HTBOTTOM = 15 - HTBOTTOMLEFT = 16 - HTBOTTOMRIGHT = 17 - HTBORDER = 18 - HTREDUCE = HTMINBUTTON - HTZOOM = HTMAXBUTTON - HTSIZEFIRST = HTLEFT - HTSIZELAST = HTBOTTOMRIGHT - HTOBJECT = 19 - HTCLOSE = 20 - HTHELP = 21 -) - -// DrawText[Ex] format flags -const ( - DT_TOP = 0x00000000 - DT_LEFT = 0x00000000 - DT_CENTER = 0x00000001 - DT_RIGHT = 0x00000002 - DT_VCENTER = 0x00000004 - DT_BOTTOM = 0x00000008 - DT_WORDBREAK = 0x00000010 - DT_SINGLELINE = 0x00000020 - DT_EXPANDTABS = 0x00000040 - DT_TABSTOP = 0x00000080 - DT_NOCLIP = 0x00000100 - DT_EXTERNALLEADING = 0x00000200 - DT_CALCRECT = 0x00000400 - DT_NOPREFIX = 0x00000800 - DT_INTERNAL = 0x00001000 - DT_EDITCONTROL = 0x00002000 - DT_PATH_ELLIPSIS = 0x00004000 - DT_END_ELLIPSIS = 0x00008000 - DT_MODIFYSTRING = 0x00010000 - DT_RTLREADING = 0x00020000 - DT_WORD_ELLIPSIS = 0x00040000 - DT_NOFULLWIDTHCHARBREAK = 0x00080000 - DT_HIDEPREFIX = 0x00100000 - DT_PREFIXONLY = 0x00200000 -) - -const CLR_INVALID = 0xFFFFFFFF - -// Background Modes -const ( - TRANSPARENT = 1 - OPAQUE = 2 - BKMODE_LAST = 2 -) - -// Global Memory Flags -const ( - GMEM_FIXED = 0x0000 - GMEM_MOVEABLE = 0x0002 - GMEM_NOCOMPACT = 0x0010 - GMEM_NODISCARD = 0x0020 - GMEM_ZEROINIT = 0x0040 - GMEM_MODIFY = 0x0080 - GMEM_DISCARDABLE = 0x0100 - GMEM_NOT_BANKED = 0x1000 - GMEM_SHARE = 0x2000 - GMEM_DDESHARE = 0x2000 - GMEM_NOTIFY = 0x4000 - GMEM_LOWER = GMEM_NOT_BANKED - GMEM_VALID_FLAGS = 0x7F72 - GMEM_INVALID_HANDLE = 0x8000 - GHND = (GMEM_MOVEABLE | GMEM_ZEROINIT) - GPTR = (GMEM_FIXED | GMEM_ZEROINIT) -) - -// Ternary raster operations -const ( - SRCCOPY = 0x00CC0020 - SRCPAINT = 0x00EE0086 - SRCAND = 0x008800C6 - SRCINVERT = 0x00660046 - SRCERASE = 0x00440328 - NOTSRCCOPY = 0x00330008 - NOTSRCERASE = 0x001100A6 - MERGECOPY = 0x00C000CA - MERGEPAINT = 0x00BB0226 - PATCOPY = 0x00F00021 - PATPAINT = 0x00FB0A09 - PATINVERT = 0x005A0049 - DSTINVERT = 0x00550009 - BLACKNESS = 0x00000042 - WHITENESS = 0x00FF0062 - NOMIRRORBITMAP = 0x80000000 - CAPTUREBLT = 0x40000000 -) - -// Clipboard formats -const ( - CF_TEXT = 1 - CF_BITMAP = 2 - CF_METAFILEPICT = 3 - CF_SYLK = 4 - CF_DIF = 5 - CF_TIFF = 6 - CF_OEMTEXT = 7 - CF_DIB = 8 - CF_PALETTE = 9 - CF_PENDATA = 10 - CF_RIFF = 11 - CF_WAVE = 12 - CF_UNICODETEXT = 13 - CF_ENHMETAFILE = 14 - CF_HDROP = 15 - CF_LOCALE = 16 - CF_DIBV5 = 17 - CF_MAX = 18 - CF_OWNERDISPLAY = 0x0080 - CF_DSPTEXT = 0x0081 - CF_DSPBITMAP = 0x0082 - CF_DSPMETAFILEPICT = 0x0083 - CF_DSPENHMETAFILE = 0x008E - CF_PRIVATEFIRST = 0x0200 - CF_PRIVATELAST = 0x02FF - CF_GDIOBJFIRST = 0x0300 - CF_GDIOBJLAST = 0x03FF -) - -// Bitmap compression formats -const ( - BI_RGB = 0 - BI_RLE8 = 1 - BI_RLE4 = 2 - BI_BITFIELDS = 3 - BI_JPEG = 4 - BI_PNG = 5 -) - -// SetDIBitsToDevice fuColorUse -const ( - DIB_PAL_COLORS = 1 - DIB_RGB_COLORS = 0 -) - -const ( - STANDARD_RIGHTS_REQUIRED = 0x000F -) - -// Service Control Manager object specific access types -const ( - SC_MANAGER_CONNECT = 0x0001 - SC_MANAGER_CREATE_SERVICE = 0x0002 - SC_MANAGER_ENUMERATE_SERVICE = 0x0004 - SC_MANAGER_LOCK = 0x0008 - SC_MANAGER_QUERY_LOCK_STATUS = 0x0010 - SC_MANAGER_MODIFY_BOOT_CONFIG = 0x0020 - SC_MANAGER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG -) - -// Service Types (Bit Mask) -const ( - SERVICE_KERNEL_DRIVER = 0x00000001 - SERVICE_FILE_SYSTEM_DRIVER = 0x00000002 - SERVICE_ADAPTER = 0x00000004 - SERVICE_RECOGNIZER_DRIVER = 0x00000008 - SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER - SERVICE_WIN32_OWN_PROCESS = 0x00000010 - SERVICE_WIN32_SHARE_PROCESS = 0x00000020 - SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS - SERVICE_INTERACTIVE_PROCESS = 0x00000100 - SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS -) - -// Service State -- for CurrentState -const ( - SERVICE_STOPPED = 0x00000001 - SERVICE_START_PENDING = 0x00000002 - SERVICE_STOP_PENDING = 0x00000003 - SERVICE_RUNNING = 0x00000004 - SERVICE_CONTINUE_PENDING = 0x00000005 - SERVICE_PAUSE_PENDING = 0x00000006 - SERVICE_PAUSED = 0x00000007 -) - -// Controls Accepted (Bit Mask) -const ( - SERVICE_ACCEPT_STOP = 0x00000001 - SERVICE_ACCEPT_PAUSE_CONTINUE = 0x00000002 - SERVICE_ACCEPT_SHUTDOWN = 0x00000004 - SERVICE_ACCEPT_PARAMCHANGE = 0x00000008 - SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010 - SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020 - SERVICE_ACCEPT_POWEREVENT = 0x00000040 - SERVICE_ACCEPT_SESSIONCHANGE = 0x00000080 - SERVICE_ACCEPT_PRESHUTDOWN = 0x00000100 - SERVICE_ACCEPT_TIMECHANGE = 0x00000200 - SERVICE_ACCEPT_TRIGGEREVENT = 0x00000400 -) - -// Service object specific access type -const ( - SERVICE_QUERY_CONFIG = 0x0001 - SERVICE_CHANGE_CONFIG = 0x0002 - SERVICE_QUERY_STATUS = 0x0004 - SERVICE_ENUMERATE_DEPENDENTS = 0x0008 - SERVICE_START = 0x0010 - SERVICE_STOP = 0x0020 - SERVICE_PAUSE_CONTINUE = 0x0040 - SERVICE_INTERROGATE = 0x0080 - SERVICE_USER_DEFINED_CONTROL = 0x0100 - - SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | - SERVICE_QUERY_CONFIG | - SERVICE_CHANGE_CONFIG | - SERVICE_QUERY_STATUS | - SERVICE_ENUMERATE_DEPENDENTS | - SERVICE_START | - SERVICE_STOP | - SERVICE_PAUSE_CONTINUE | - SERVICE_INTERROGATE | - SERVICE_USER_DEFINED_CONTROL -) - -// MapVirtualKey maptypes -const ( - MAPVK_VK_TO_CHAR = 2 - MAPVK_VK_TO_VSC = 0 - MAPVK_VSC_TO_VK = 1 - MAPVK_VSC_TO_VK_EX = 3 -) - -// ReadEventLog Flags -const ( - EVENTLOG_SEEK_READ = 0x0002 - EVENTLOG_SEQUENTIAL_READ = 0x0001 - EVENTLOG_FORWARDS_READ = 0x0004 - EVENTLOG_BACKWARDS_READ = 0x0008 -) - -// CreateToolhelp32Snapshot flags -const ( - TH32CS_SNAPHEAPLIST = 0x00000001 - TH32CS_SNAPPROCESS = 0x00000002 - TH32CS_SNAPTHREAD = 0x00000004 - TH32CS_SNAPMODULE = 0x00000008 - TH32CS_SNAPMODULE32 = 0x00000010 - TH32CS_INHERIT = 0x80000000 - TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD -) - -const ( - MAX_MODULE_NAME32 = 255 - MAX_PATH = 260 -) - -const ( - FOREGROUND_BLUE = 0x0001 - FOREGROUND_GREEN = 0x0002 - FOREGROUND_RED = 0x0004 - FOREGROUND_INTENSITY = 0x0008 - BACKGROUND_BLUE = 0x0010 - BACKGROUND_GREEN = 0x0020 - BACKGROUND_RED = 0x0040 - BACKGROUND_INTENSITY = 0x0080 - COMMON_LVB_LEADING_BYTE = 0x0100 - COMMON_LVB_TRAILING_BYTE = 0x0200 - COMMON_LVB_GRID_HORIZONTAL = 0x0400 - COMMON_LVB_GRID_LVERTICAL = 0x0800 - COMMON_LVB_GRID_RVERTICAL = 0x1000 - COMMON_LVB_REVERSE_VIDEO = 0x4000 - COMMON_LVB_UNDERSCORE = 0x8000 -) - -// Flags used by the DWM_BLURBEHIND structure to indicate -// which of its members contain valid information. -const ( - DWM_BB_ENABLE = 0x00000001 // A value for the fEnable member has been specified. - DWM_BB_BLURREGION = 0x00000002 // A value for the hRgnBlur member has been specified. - DWM_BB_TRANSITIONONMAXIMIZED = 0x00000004 // A value for the fTransitionOnMaximized member has been specified. -) - -// Flags used by the DwmEnableComposition function -// to change the state of Desktop Window Manager (DWM) composition. -const ( - DWM_EC_DISABLECOMPOSITION = 0 // Disable composition - DWM_EC_ENABLECOMPOSITION = 1 // Enable composition -) - -// enum-lite implementation for the following constant structure -type DWM_SHOWCONTACT int32 - -const ( - DWMSC_DOWN = 0x00000001 - DWMSC_UP = 0x00000002 - DWMSC_DRAG = 0x00000004 - DWMSC_HOLD = 0x00000008 - DWMSC_PENBARREL = 0x00000010 - DWMSC_NONE = 0x00000000 - DWMSC_ALL = 0xFFFFFFFF -) - -// enum-lite implementation for the following constant structure -type DWM_SOURCE_FRAME_SAMPLING int32 - -// TODO: need to verify this construction -// Flags used by the DwmSetPresentParameters function -// to specify the frame sampling type -const ( - DWM_SOURCE_FRAME_SAMPLING_POINT = iota + 1 - DWM_SOURCE_FRAME_SAMPLING_COVERAGE - DWM_SOURCE_FRAME_SAMPLING_LAST -) - -// Flags used by the DWM_THUMBNAIL_PROPERTIES structure to -// indicate which of its members contain valid information. -const ( - DWM_TNP_RECTDESTINATION = 0x00000001 // A value for the rcDestination member has been specified - DWM_TNP_RECTSOURCE = 0x00000002 // A value for the rcSource member has been specified - DWM_TNP_OPACITY = 0x00000004 // A value for the opacity member has been specified - DWM_TNP_VISIBLE = 0x00000008 // A value for the fVisible member has been specified - DWM_TNP_SOURCECLIENTAREAONLY = 0x00000010 // A value for the fSourceClientAreaOnly member has been specified -) - -// enum-lite implementation for the following constant structure -type DWMFLIP3DWINDOWPOLICY int32 - -// TODO: need to verify this construction -// Flags used by the DwmSetWindowAttribute function -// to specify the Flip3D window policy -const ( - DWMFLIP3D_DEFAULT = iota + 1 - DWMFLIP3D_EXCLUDEBELOW - DWMFLIP3D_EXCLUDEABOVE - DWMFLIP3D_LAST -) - -// enum-lite implementation for the following constant structure -type DWMNCRENDERINGPOLICY int32 - -// TODO: need to verify this construction -// Flags used by the DwmSetWindowAttribute function -// to specify the non-client area rendering policy -const ( - DWMNCRP_USEWINDOWSTYLE = iota + 1 - DWMNCRP_DISABLED - DWMNCRP_ENABLED - DWMNCRP_LAST -) - -// enum-lite implementation for the following constant structure -type DWMTRANSITION_OWNEDWINDOW_TARGET int32 - -const ( - DWMTRANSITION_OWNEDWINDOW_NULL = -1 - DWMTRANSITION_OWNEDWINDOW_REPOSITION = 0 -) - -// enum-lite implementation for the following constant structure -type DWMWINDOWATTRIBUTE int32 - -// TODO: need to verify this construction -// Flags used by the DwmGetWindowAttribute and DwmSetWindowAttribute functions -// to specify window attributes for non-client rendering -const ( - DWMWA_NCRENDERING_ENABLED = iota + 1 - DWMWA_NCRENDERING_POLICY - DWMWA_TRANSITIONS_FORCEDISABLED - DWMWA_ALLOW_NCPAINT - DWMWA_CAPTION_BUTTON_BOUNDS - DWMWA_NONCLIENT_RTL_LAYOUT - DWMWA_FORCE_ICONIC_REPRESENTATION - DWMWA_FLIP3D_POLICY - DWMWA_EXTENDED_FRAME_BOUNDS - DWMWA_HAS_ICONIC_BITMAP - DWMWA_DISALLOW_PEEK - DWMWA_EXCLUDED_FROM_PEEK - DWMWA_CLOAK - DWMWA_CLOAKED - DWMWA_FREEZE_REPRESENTATION - DWMWA_LAST -) - -// enum-lite implementation for the following constant structure -type GESTURE_TYPE int32 - -// TODO: use iota? -// Identifies the gesture type -const ( - GT_PEN_TAP = 0 - GT_PEN_DOUBLETAP = 1 - GT_PEN_RIGHTTAP = 2 - GT_PEN_PRESSANDHOLD = 3 - GT_PEN_PRESSANDHOLDABORT = 4 - GT_TOUCH_TAP = 5 - GT_TOUCH_DOUBLETAP = 6 - GT_TOUCH_RIGHTTAP = 7 - GT_TOUCH_PRESSANDHOLD = 8 - GT_TOUCH_PRESSANDHOLDABORT = 9 - GT_TOUCH_PRESSANDTAP = 10 -) - -// Icons -const ( - ICON_SMALL = 0 - ICON_BIG = 1 - ICON_SMALL2 = 2 -) - -const ( - SIZE_RESTORED = 0 - SIZE_MINIMIZED = 1 - SIZE_MAXIMIZED = 2 - SIZE_MAXSHOW = 3 - SIZE_MAXHIDE = 4 -) - -// XButton values -const ( - XBUTTON1 = 1 - XBUTTON2 = 2 -) - -// Devmode -const ( - DM_SPECVERSION = 0x0401 - - DM_ORIENTATION = 0x00000001 - DM_PAPERSIZE = 0x00000002 - DM_PAPERLENGTH = 0x00000004 - DM_PAPERWIDTH = 0x00000008 - DM_SCALE = 0x00000010 - DM_POSITION = 0x00000020 - DM_NUP = 0x00000040 - DM_DISPLAYORIENTATION = 0x00000080 - DM_COPIES = 0x00000100 - DM_DEFAULTSOURCE = 0x00000200 - DM_PRINTQUALITY = 0x00000400 - DM_COLOR = 0x00000800 - DM_DUPLEX = 0x00001000 - DM_YRESOLUTION = 0x00002000 - DM_TTOPTION = 0x00004000 - DM_COLLATE = 0x00008000 - DM_FORMNAME = 0x00010000 - DM_LOGPIXELS = 0x00020000 - DM_BITSPERPEL = 0x00040000 - DM_PELSWIDTH = 0x00080000 - DM_PELSHEIGHT = 0x00100000 - DM_DISPLAYFLAGS = 0x00200000 - DM_DISPLAYFREQUENCY = 0x00400000 - DM_ICMMETHOD = 0x00800000 - DM_ICMINTENT = 0x01000000 - DM_MEDIATYPE = 0x02000000 - DM_DITHERTYPE = 0x04000000 - DM_PANNINGWIDTH = 0x08000000 - DM_PANNINGHEIGHT = 0x10000000 - DM_DISPLAYFIXEDOUTPUT = 0x20000000 -) - -// ChangeDisplaySettings -const ( - CDS_UPDATEREGISTRY = 0x00000001 - CDS_TEST = 0x00000002 - CDS_FULLSCREEN = 0x00000004 - CDS_GLOBAL = 0x00000008 - CDS_SET_PRIMARY = 0x00000010 - CDS_VIDEOPARAMETERS = 0x00000020 - CDS_RESET = 0x40000000 - CDS_NORESET = 0x10000000 - - DISP_CHANGE_SUCCESSFUL = 0 - DISP_CHANGE_RESTART = 1 - DISP_CHANGE_FAILED = -1 - DISP_CHANGE_BADMODE = -2 - DISP_CHANGE_NOTUPDATED = -3 - DISP_CHANGE_BADFLAGS = -4 - DISP_CHANGE_BADPARAM = -5 - DISP_CHANGE_BADDUALVIEW = -6 -) - -const ( - ENUM_CURRENT_SETTINGS = 0xFFFFFFFF - ENUM_REGISTRY_SETTINGS = 0xFFFFFFFE -) - -// PIXELFORMATDESCRIPTOR -const ( - PFD_TYPE_RGBA = 0 - PFD_TYPE_COLORINDEX = 1 - - PFD_MAIN_PLANE = 0 - PFD_OVERLAY_PLANE = 1 - PFD_UNDERLAY_PLANE = -1 - - PFD_DOUBLEBUFFER = 0x00000001 - PFD_STEREO = 0x00000002 - PFD_DRAW_TO_WINDOW = 0x00000004 - PFD_DRAW_TO_BITMAP = 0x00000008 - PFD_SUPPORT_GDI = 0x00000010 - PFD_SUPPORT_OPENGL = 0x00000020 - PFD_GENERIC_FORMAT = 0x00000040 - PFD_NEED_PALETTE = 0x00000080 - PFD_NEED_SYSTEM_PALETTE = 0x00000100 - PFD_SWAP_EXCHANGE = 0x00000200 - PFD_SWAP_COPY = 0x00000400 - PFD_SWAP_LAYER_BUFFERS = 0x00000800 - PFD_GENERIC_ACCELERATED = 0x00001000 - PFD_SUPPORT_DIRECTDRAW = 0x00002000 - PFD_DIRECT3D_ACCELERATED = 0x00004000 - PFD_SUPPORT_COMPOSITION = 0x00008000 - - PFD_DEPTH_DONTCARE = 0x20000000 - PFD_DOUBLEBUFFER_DONTCARE = 0x40000000 - PFD_STEREO_DONTCARE = 0x80000000 -) - -const ( - INPUT_MOUSE = 0 - INPUT_KEYBOARD = 1 - INPUT_HARDWARE = 2 -) - -const ( - MOUSEEVENTF_ABSOLUTE = 0x8000 - MOUSEEVENTF_HWHEEL = 0x01000 - MOUSEEVENTF_MOVE = 0x0001 - MOUSEEVENTF_MOVE_NOCOALESCE = 0x2000 - MOUSEEVENTF_LEFTDOWN = 0x0002 - MOUSEEVENTF_LEFTUP = 0x0004 - MOUSEEVENTF_RIGHTDOWN = 0x0008 - MOUSEEVENTF_RIGHTUP = 0x0010 - MOUSEEVENTF_MIDDLEDOWN = 0x0020 - MOUSEEVENTF_MIDDLEUP = 0x0040 - MOUSEEVENTF_VIRTUALDESK = 0x4000 - MOUSEEVENTF_WHEEL = 0x0800 - MOUSEEVENTF_XDOWN = 0x0080 - MOUSEEVENTF_XUP = 0x0100 -) diff --git a/vendor/github.com/shirou/w32/dwmapi.go b/vendor/github.com/shirou/w32/dwmapi.go deleted file mode 100644 index 139b93745..000000000 --- a/vendor/github.com/shirou/w32/dwmapi.go +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "fmt" - "syscall" - "unsafe" -) - -// DEFINED IN THE DWM API BUT NOT IMPLEMENTED BY MS: -// DwmAttachMilContent -// DwmDetachMilContent -// DwmEnableComposition -// DwmGetGraphicsStreamClient -// DwmGetGraphicsStreamTransformHint - -var ( - moddwmapi = syscall.NewLazyDLL("dwmapi.dll") - - procDwmDefWindowProc = moddwmapi.NewProc("DwmDefWindowProc") - procDwmEnableBlurBehindWindow = moddwmapi.NewProc("DwmEnableBlurBehindWindow") - procDwmEnableMMCSS = moddwmapi.NewProc("DwmEnableMMCSS") - procDwmExtendFrameIntoClientArea = moddwmapi.NewProc("DwmExtendFrameIntoClientArea") - procDwmFlush = moddwmapi.NewProc("DwmFlush") - procDwmGetColorizationColor = moddwmapi.NewProc("DwmGetColorizationColor") - procDwmGetCompositionTimingInfo = moddwmapi.NewProc("DwmGetCompositionTimingInfo") - procDwmGetTransportAttributes = moddwmapi.NewProc("DwmGetTransportAttributes") - procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") - procDwmInvalidateIconicBitmaps = moddwmapi.NewProc("DwmInvalidateIconicBitmaps") - procDwmIsCompositionEnabled = moddwmapi.NewProc("DwmIsCompositionEnabled") - procDwmModifyPreviousDxFrameDuration = moddwmapi.NewProc("DwmModifyPreviousDxFrameDuration") - procDwmQueryThumbnailSourceSize = moddwmapi.NewProc("DwmQueryThumbnailSourceSize") - procDwmRegisterThumbnail = moddwmapi.NewProc("DwmRegisterThumbnail") - procDwmRenderGesture = moddwmapi.NewProc("DwmRenderGesture") - procDwmSetDxFrameDuration = moddwmapi.NewProc("DwmSetDxFrameDuration") - procDwmSetIconicLivePreviewBitmap = moddwmapi.NewProc("DwmSetIconicLivePreviewBitmap") - procDwmSetIconicThumbnail = moddwmapi.NewProc("DwmSetIconicThumbnail") - procDwmSetPresentParameters = moddwmapi.NewProc("DwmSetPresentParameters") - procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") - procDwmShowContact = moddwmapi.NewProc("DwmShowContact") - procDwmTetherContact = moddwmapi.NewProc("DwmTetherContact") - procDwmTransitionOwnedWindow = moddwmapi.NewProc("DwmTransitionOwnedWindow") - procDwmUnregisterThumbnail = moddwmapi.NewProc("DwmUnregisterThumbnail") - procDwmUpdateThumbnailProperties = moddwmapi.NewProc("DwmUpdateThumbnailProperties") -) - -func DwmDefWindowProc(hWnd HWND, msg uint, wParam, lParam uintptr) (bool, uint) { - var result uint - ret, _, _ := procDwmDefWindowProc.Call( - uintptr(hWnd), - uintptr(msg), - wParam, - lParam, - uintptr(unsafe.Pointer(&result))) - return ret != 0, result -} - -func DwmEnableBlurBehindWindow(hWnd HWND, pBlurBehind *DWM_BLURBEHIND) HRESULT { - ret, _, _ := procDwmEnableBlurBehindWindow.Call( - uintptr(hWnd), - uintptr(unsafe.Pointer(pBlurBehind))) - return HRESULT(ret) -} - -func DwmEnableMMCSS(fEnableMMCSS bool) HRESULT { - ret, _, _ := procDwmEnableMMCSS.Call( - uintptr(BoolToBOOL(fEnableMMCSS))) - return HRESULT(ret) -} - -func DwmExtendFrameIntoClientArea(hWnd HWND, pMarInset *MARGINS) HRESULT { - ret, _, _ := procDwmExtendFrameIntoClientArea.Call( - uintptr(hWnd), - uintptr(unsafe.Pointer(pMarInset))) - return HRESULT(ret) -} - -func DwmFlush() HRESULT { - ret, _, _ := procDwmFlush.Call() - return HRESULT(ret) -} - -func DwmGetColorizationColor(pcrColorization *uint32, pfOpaqueBlend *BOOL) HRESULT { - ret, _, _ := procDwmGetColorizationColor.Call( - uintptr(unsafe.Pointer(pcrColorization)), - uintptr(unsafe.Pointer(pfOpaqueBlend))) - return HRESULT(ret) -} - -func DwmGetCompositionTimingInfo(hWnd HWND, pTimingInfo *DWM_TIMING_INFO) HRESULT { - ret, _, _ := procDwmGetCompositionTimingInfo.Call( - uintptr(hWnd), - uintptr(unsafe.Pointer(pTimingInfo))) - return HRESULT(ret) -} - -func DwmGetTransportAttributes(pfIsRemoting *BOOL, pfIsConnected *BOOL, pDwGeneration *uint32) HRESULT { - ret, _, _ := procDwmGetTransportAttributes.Call( - uintptr(unsafe.Pointer(pfIsRemoting)), - uintptr(unsafe.Pointer(pfIsConnected)), - uintptr(unsafe.Pointer(pDwGeneration))) - return HRESULT(ret) -} - -// TODO: verify handling of variable arguments -func DwmGetWindowAttribute(hWnd HWND, dwAttribute uint32) (pAttribute interface{}, result HRESULT) { - var pvAttribute, pvAttrSize uintptr - switch dwAttribute { - case DWMWA_NCRENDERING_ENABLED: - v := new(BOOL) - pAttribute = v - pvAttribute = uintptr(unsafe.Pointer(v)) - pvAttrSize = unsafe.Sizeof(*v) - case DWMWA_CAPTION_BUTTON_BOUNDS, DWMWA_EXTENDED_FRAME_BOUNDS: - v := new(RECT) - pAttribute = v - pvAttribute = uintptr(unsafe.Pointer(v)) - pvAttrSize = unsafe.Sizeof(*v) - case DWMWA_CLOAKED: - panic(fmt.Sprintf("DwmGetWindowAttribute(%d) is not currently supported.", dwAttribute)) - default: - panic(fmt.Sprintf("DwmGetWindowAttribute(%d) is not valid.", dwAttribute)) - } - - ret, _, _ := procDwmGetWindowAttribute.Call( - uintptr(hWnd), - uintptr(dwAttribute), - pvAttribute, - pvAttrSize) - result = HRESULT(ret) - return -} - -func DwmInvalidateIconicBitmaps(hWnd HWND) HRESULT { - ret, _, _ := procDwmInvalidateIconicBitmaps.Call( - uintptr(hWnd)) - return HRESULT(ret) -} - -func DwmIsCompositionEnabled(pfEnabled *BOOL) HRESULT { - ret, _, _ := procDwmIsCompositionEnabled.Call( - uintptr(unsafe.Pointer(pfEnabled))) - return HRESULT(ret) -} - -func DwmModifyPreviousDxFrameDuration(hWnd HWND, cRefreshes int, fRelative bool) HRESULT { - ret, _, _ := procDwmModifyPreviousDxFrameDuration.Call( - uintptr(hWnd), - uintptr(cRefreshes), - uintptr(BoolToBOOL(fRelative))) - return HRESULT(ret) -} - -func DwmQueryThumbnailSourceSize(hThumbnail HTHUMBNAIL, pSize *SIZE) HRESULT { - ret, _, _ := procDwmQueryThumbnailSourceSize.Call( - uintptr(hThumbnail), - uintptr(unsafe.Pointer(pSize))) - return HRESULT(ret) -} - -func DwmRegisterThumbnail(hWndDestination HWND, hWndSource HWND, phThumbnailId *HTHUMBNAIL) HRESULT { - ret, _, _ := procDwmRegisterThumbnail.Call( - uintptr(hWndDestination), - uintptr(hWndSource), - uintptr(unsafe.Pointer(phThumbnailId))) - return HRESULT(ret) -} - -func DwmRenderGesture(gt GESTURE_TYPE, cContacts uint, pdwPointerID *uint32, pPoints *POINT) { - procDwmRenderGesture.Call( - uintptr(gt), - uintptr(cContacts), - uintptr(unsafe.Pointer(pdwPointerID)), - uintptr(unsafe.Pointer(pPoints))) - return -} - -func DwmSetDxFrameDuration(hWnd HWND, cRefreshes int) HRESULT { - ret, _, _ := procDwmSetDxFrameDuration.Call( - uintptr(hWnd), - uintptr(cRefreshes)) - return HRESULT(ret) -} - -func DwmSetIconicLivePreviewBitmap(hWnd HWND, hbmp HBITMAP, pptClient *POINT, dwSITFlags uint32) HRESULT { - ret, _, _ := procDwmSetIconicLivePreviewBitmap.Call( - uintptr(hWnd), - uintptr(hbmp), - uintptr(unsafe.Pointer(pptClient)), - uintptr(dwSITFlags)) - return HRESULT(ret) -} - -func DwmSetIconicThumbnail(hWnd HWND, hbmp HBITMAP, dwSITFlags uint32) HRESULT { - ret, _, _ := procDwmSetIconicThumbnail.Call( - uintptr(hWnd), - uintptr(hbmp), - uintptr(dwSITFlags)) - return HRESULT(ret) -} - -func DwmSetPresentParameters(hWnd HWND, pPresentParams *DWM_PRESENT_PARAMETERS) HRESULT { - ret, _, _ := procDwmSetPresentParameters.Call( - uintptr(hWnd), - uintptr(unsafe.Pointer(pPresentParams))) - return HRESULT(ret) -} - -func DwmSetWindowAttribute(hWnd HWND, dwAttribute uint32, pvAttribute LPCVOID, cbAttribute uint32) HRESULT { - ret, _, _ := procDwmSetWindowAttribute.Call( - uintptr(hWnd), - uintptr(dwAttribute), - uintptr(pvAttribute), - uintptr(cbAttribute)) - return HRESULT(ret) -} - -func DwmShowContact(dwPointerID uint32, eShowContact DWM_SHOWCONTACT) { - procDwmShowContact.Call( - uintptr(dwPointerID), - uintptr(eShowContact)) - return -} - -func DwmTetherContact(dwPointerID uint32, fEnable bool, ptTether POINT) { - procDwmTetherContact.Call( - uintptr(dwPointerID), - uintptr(BoolToBOOL(fEnable)), - uintptr(unsafe.Pointer(&ptTether))) - return -} - -func DwmTransitionOwnedWindow(hWnd HWND, target DWMTRANSITION_OWNEDWINDOW_TARGET) { - procDwmTransitionOwnedWindow.Call( - uintptr(hWnd), - uintptr(target)) - return -} - -func DwmUnregisterThumbnail(hThumbnailId HTHUMBNAIL) HRESULT { - ret, _, _ := procDwmUnregisterThumbnail.Call( - uintptr(hThumbnailId)) - return HRESULT(ret) -} - -func DwmUpdateThumbnailProperties(hThumbnailId HTHUMBNAIL, ptnProperties *DWM_THUMBNAIL_PROPERTIES) HRESULT { - ret, _, _ := procDwmUpdateThumbnailProperties.Call( - uintptr(hThumbnailId), - uintptr(unsafe.Pointer(ptnProperties))) - return HRESULT(ret) -} diff --git a/vendor/github.com/shirou/w32/gdi32.go b/vendor/github.com/shirou/w32/gdi32.go deleted file mode 100644 index 34f032c7b..000000000 --- a/vendor/github.com/shirou/w32/gdi32.go +++ /dev/null @@ -1,511 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modgdi32 = syscall.NewLazyDLL("gdi32.dll") - - procGetDeviceCaps = modgdi32.NewProc("GetDeviceCaps") - procDeleteObject = modgdi32.NewProc("DeleteObject") - procCreateFontIndirect = modgdi32.NewProc("CreateFontIndirectW") - procAbortDoc = modgdi32.NewProc("AbortDoc") - procBitBlt = modgdi32.NewProc("BitBlt") - procCloseEnhMetaFile = modgdi32.NewProc("CloseEnhMetaFile") - procCopyEnhMetaFile = modgdi32.NewProc("CopyEnhMetaFileW") - procCreateBrushIndirect = modgdi32.NewProc("CreateBrushIndirect") - procCreateCompatibleDC = modgdi32.NewProc("CreateCompatibleDC") - procCreateDC = modgdi32.NewProc("CreateDCW") - procCreateDIBSection = modgdi32.NewProc("CreateDIBSection") - procCreateEnhMetaFile = modgdi32.NewProc("CreateEnhMetaFileW") - procCreateIC = modgdi32.NewProc("CreateICW") - procDeleteDC = modgdi32.NewProc("DeleteDC") - procDeleteEnhMetaFile = modgdi32.NewProc("DeleteEnhMetaFile") - procEllipse = modgdi32.NewProc("Ellipse") - procEndDoc = modgdi32.NewProc("EndDoc") - procEndPage = modgdi32.NewProc("EndPage") - procExtCreatePen = modgdi32.NewProc("ExtCreatePen") - procGetEnhMetaFile = modgdi32.NewProc("GetEnhMetaFileW") - procGetEnhMetaFileHeader = modgdi32.NewProc("GetEnhMetaFileHeader") - procGetObject = modgdi32.NewProc("GetObjectW") - procGetStockObject = modgdi32.NewProc("GetStockObject") - procGetTextExtentExPoint = modgdi32.NewProc("GetTextExtentExPointW") - procGetTextExtentPoint32 = modgdi32.NewProc("GetTextExtentPoint32W") - procGetTextMetrics = modgdi32.NewProc("GetTextMetricsW") - procLineTo = modgdi32.NewProc("LineTo") - procMoveToEx = modgdi32.NewProc("MoveToEx") - procPlayEnhMetaFile = modgdi32.NewProc("PlayEnhMetaFile") - procRectangle = modgdi32.NewProc("Rectangle") - procResetDC = modgdi32.NewProc("ResetDCW") - procSelectObject = modgdi32.NewProc("SelectObject") - procSetBkMode = modgdi32.NewProc("SetBkMode") - procSetBrushOrgEx = modgdi32.NewProc("SetBrushOrgEx") - procSetStretchBltMode = modgdi32.NewProc("SetStretchBltMode") - procSetTextColor = modgdi32.NewProc("SetTextColor") - procSetBkColor = modgdi32.NewProc("SetBkColor") - procStartDoc = modgdi32.NewProc("StartDocW") - procStartPage = modgdi32.NewProc("StartPage") - procStretchBlt = modgdi32.NewProc("StretchBlt") - procSetDIBitsToDevice = modgdi32.NewProc("SetDIBitsToDevice") - procChoosePixelFormat = modgdi32.NewProc("ChoosePixelFormat") - procDescribePixelFormat = modgdi32.NewProc("DescribePixelFormat") - procGetEnhMetaFilePixelFormat = modgdi32.NewProc("GetEnhMetaFilePixelFormat") - procGetPixelFormat = modgdi32.NewProc("GetPixelFormat") - procSetPixelFormat = modgdi32.NewProc("SetPixelFormat") - procSwapBuffers = modgdi32.NewProc("SwapBuffers") -) - -func GetDeviceCaps(hdc HDC, index int) int { - ret, _, _ := procGetDeviceCaps.Call( - uintptr(hdc), - uintptr(index)) - - return int(ret) -} - -func DeleteObject(hObject HGDIOBJ) bool { - ret, _, _ := procDeleteObject.Call( - uintptr(hObject)) - - return ret != 0 -} - -func CreateFontIndirect(logFont *LOGFONT) HFONT { - ret, _, _ := procCreateFontIndirect.Call( - uintptr(unsafe.Pointer(logFont))) - - return HFONT(ret) -} - -func AbortDoc(hdc HDC) int { - ret, _, _ := procAbortDoc.Call( - uintptr(hdc)) - - return int(ret) -} - -func BitBlt(hdcDest HDC, nXDest, nYDest, nWidth, nHeight int, hdcSrc HDC, nXSrc, nYSrc int, dwRop uint) { - ret, _, _ := procBitBlt.Call( - uintptr(hdcDest), - uintptr(nXDest), - uintptr(nYDest), - uintptr(nWidth), - uintptr(nHeight), - uintptr(hdcSrc), - uintptr(nXSrc), - uintptr(nYSrc), - uintptr(dwRop)) - - if ret == 0 { - panic("BitBlt failed") - } -} - -func CloseEnhMetaFile(hdc HDC) HENHMETAFILE { - ret, _, _ := procCloseEnhMetaFile.Call( - uintptr(hdc)) - - return HENHMETAFILE(ret) -} - -func CopyEnhMetaFile(hemfSrc HENHMETAFILE, lpszFile *uint16) HENHMETAFILE { - ret, _, _ := procCopyEnhMetaFile.Call( - uintptr(hemfSrc), - uintptr(unsafe.Pointer(lpszFile))) - - return HENHMETAFILE(ret) -} - -func CreateBrushIndirect(lplb *LOGBRUSH) HBRUSH { - ret, _, _ := procCreateBrushIndirect.Call( - uintptr(unsafe.Pointer(lplb))) - - return HBRUSH(ret) -} - -func CreateCompatibleDC(hdc HDC) HDC { - ret, _, _ := procCreateCompatibleDC.Call( - uintptr(hdc)) - - if ret == 0 { - panic("Create compatible DC failed") - } - - return HDC(ret) -} - -func CreateDC(lpszDriver, lpszDevice, lpszOutput *uint16, lpInitData *DEVMODE) HDC { - ret, _, _ := procCreateDC.Call( - uintptr(unsafe.Pointer(lpszDriver)), - uintptr(unsafe.Pointer(lpszDevice)), - uintptr(unsafe.Pointer(lpszOutput)), - uintptr(unsafe.Pointer(lpInitData))) - - return HDC(ret) -} - -func CreateDIBSection(hdc HDC, pbmi *BITMAPINFO, iUsage uint, ppvBits *unsafe.Pointer, hSection HANDLE, dwOffset uint) HBITMAP { - ret, _, _ := procCreateDIBSection.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(pbmi)), - uintptr(iUsage), - uintptr(unsafe.Pointer(ppvBits)), - uintptr(hSection), - uintptr(dwOffset)) - - return HBITMAP(ret) -} - -func CreateEnhMetaFile(hdcRef HDC, lpFilename *uint16, lpRect *RECT, lpDescription *uint16) HDC { - ret, _, _ := procCreateEnhMetaFile.Call( - uintptr(hdcRef), - uintptr(unsafe.Pointer(lpFilename)), - uintptr(unsafe.Pointer(lpRect)), - uintptr(unsafe.Pointer(lpDescription))) - - return HDC(ret) -} - -func CreateIC(lpszDriver, lpszDevice, lpszOutput *uint16, lpdvmInit *DEVMODE) HDC { - ret, _, _ := procCreateIC.Call( - uintptr(unsafe.Pointer(lpszDriver)), - uintptr(unsafe.Pointer(lpszDevice)), - uintptr(unsafe.Pointer(lpszOutput)), - uintptr(unsafe.Pointer(lpdvmInit))) - - return HDC(ret) -} - -func DeleteDC(hdc HDC) bool { - ret, _, _ := procDeleteDC.Call( - uintptr(hdc)) - - return ret != 0 -} - -func DeleteEnhMetaFile(hemf HENHMETAFILE) bool { - ret, _, _ := procDeleteEnhMetaFile.Call( - uintptr(hemf)) - - return ret != 0 -} - -func Ellipse(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect int) bool { - ret, _, _ := procEllipse.Call( - uintptr(hdc), - uintptr(nLeftRect), - uintptr(nTopRect), - uintptr(nRightRect), - uintptr(nBottomRect)) - - return ret != 0 -} - -func EndDoc(hdc HDC) int { - ret, _, _ := procEndDoc.Call( - uintptr(hdc)) - - return int(ret) -} - -func EndPage(hdc HDC) int { - ret, _, _ := procEndPage.Call( - uintptr(hdc)) - - return int(ret) -} - -func ExtCreatePen(dwPenStyle, dwWidth uint, lplb *LOGBRUSH, dwStyleCount uint, lpStyle *uint) HPEN { - ret, _, _ := procExtCreatePen.Call( - uintptr(dwPenStyle), - uintptr(dwWidth), - uintptr(unsafe.Pointer(lplb)), - uintptr(dwStyleCount), - uintptr(unsafe.Pointer(lpStyle))) - - return HPEN(ret) -} - -func GetEnhMetaFile(lpszMetaFile *uint16) HENHMETAFILE { - ret, _, _ := procGetEnhMetaFile.Call( - uintptr(unsafe.Pointer(lpszMetaFile))) - - return HENHMETAFILE(ret) -} - -func GetEnhMetaFileHeader(hemf HENHMETAFILE, cbBuffer uint, lpemh *ENHMETAHEADER) uint { - ret, _, _ := procGetEnhMetaFileHeader.Call( - uintptr(hemf), - uintptr(cbBuffer), - uintptr(unsafe.Pointer(lpemh))) - - return uint(ret) -} - -func GetObject(hgdiobj HGDIOBJ, cbBuffer uintptr, lpvObject unsafe.Pointer) int { - ret, _, _ := procGetObject.Call( - uintptr(hgdiobj), - uintptr(cbBuffer), - uintptr(lpvObject)) - - return int(ret) -} - -func GetStockObject(fnObject int) HGDIOBJ { - ret, _, _ := procGetDeviceCaps.Call( - uintptr(fnObject)) - - return HGDIOBJ(ret) -} - -func GetTextExtentExPoint(hdc HDC, lpszStr *uint16, cchString, nMaxExtent int, lpnFit, alpDx *int, lpSize *SIZE) bool { - ret, _, _ := procGetTextExtentExPoint.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(lpszStr)), - uintptr(cchString), - uintptr(nMaxExtent), - uintptr(unsafe.Pointer(lpnFit)), - uintptr(unsafe.Pointer(alpDx)), - uintptr(unsafe.Pointer(lpSize))) - - return ret != 0 -} - -func GetTextExtentPoint32(hdc HDC, lpString *uint16, c int, lpSize *SIZE) bool { - ret, _, _ := procGetTextExtentPoint32.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(lpString)), - uintptr(c), - uintptr(unsafe.Pointer(lpSize))) - - return ret != 0 -} - -func GetTextMetrics(hdc HDC, lptm *TEXTMETRIC) bool { - ret, _, _ := procGetTextMetrics.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(lptm))) - - return ret != 0 -} - -func LineTo(hdc HDC, nXEnd, nYEnd int) bool { - ret, _, _ := procLineTo.Call( - uintptr(hdc), - uintptr(nXEnd), - uintptr(nYEnd)) - - return ret != 0 -} - -func MoveToEx(hdc HDC, x, y int, lpPoint *POINT) bool { - ret, _, _ := procMoveToEx.Call( - uintptr(hdc), - uintptr(x), - uintptr(y), - uintptr(unsafe.Pointer(lpPoint))) - - return ret != 0 -} - -func PlayEnhMetaFile(hdc HDC, hemf HENHMETAFILE, lpRect *RECT) bool { - ret, _, _ := procPlayEnhMetaFile.Call( - uintptr(hdc), - uintptr(hemf), - uintptr(unsafe.Pointer(lpRect))) - - return ret != 0 -} - -func Rectangle(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect int) bool { - ret, _, _ := procRectangle.Call( - uintptr(hdc), - uintptr(nLeftRect), - uintptr(nTopRect), - uintptr(nRightRect), - uintptr(nBottomRect)) - - return ret != 0 -} - -func ResetDC(hdc HDC, lpInitData *DEVMODE) HDC { - ret, _, _ := procResetDC.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(lpInitData))) - - return HDC(ret) -} - -func SelectObject(hdc HDC, hgdiobj HGDIOBJ) HGDIOBJ { - ret, _, _ := procSelectObject.Call( - uintptr(hdc), - uintptr(hgdiobj)) - - if ret == 0 { - panic("SelectObject failed") - } - - return HGDIOBJ(ret) -} - -func SetBkMode(hdc HDC, iBkMode int) int { - ret, _, _ := procSetBkMode.Call( - uintptr(hdc), - uintptr(iBkMode)) - - if ret == 0 { - panic("SetBkMode failed") - } - - return int(ret) -} - -func SetBrushOrgEx(hdc HDC, nXOrg, nYOrg int, lppt *POINT) bool { - ret, _, _ := procSetBrushOrgEx.Call( - uintptr(hdc), - uintptr(nXOrg), - uintptr(nYOrg), - uintptr(unsafe.Pointer(lppt))) - - return ret != 0 -} - -func SetStretchBltMode(hdc HDC, iStretchMode int) int { - ret, _, _ := procSetStretchBltMode.Call( - uintptr(hdc), - uintptr(iStretchMode)) - - return int(ret) -} - -func SetTextColor(hdc HDC, crColor COLORREF) COLORREF { - ret, _, _ := procSetTextColor.Call( - uintptr(hdc), - uintptr(crColor)) - - if ret == CLR_INVALID { - panic("SetTextColor failed") - } - - return COLORREF(ret) -} - -func SetBkColor(hdc HDC, crColor COLORREF) COLORREF { - ret, _, _ := procSetBkColor.Call( - uintptr(hdc), - uintptr(crColor)) - - if ret == CLR_INVALID { - panic("SetBkColor failed") - } - - return COLORREF(ret) -} - -func StartDoc(hdc HDC, lpdi *DOCINFO) int { - ret, _, _ := procStartDoc.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(lpdi))) - - return int(ret) -} - -func StartPage(hdc HDC) int { - ret, _, _ := procStartPage.Call( - uintptr(hdc)) - - return int(ret) -} - -func StretchBlt(hdcDest HDC, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest int, hdcSrc HDC, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc int, dwRop uint) { - ret, _, _ := procStretchBlt.Call( - uintptr(hdcDest), - uintptr(nXOriginDest), - uintptr(nYOriginDest), - uintptr(nWidthDest), - uintptr(nHeightDest), - uintptr(hdcSrc), - uintptr(nXOriginSrc), - uintptr(nYOriginSrc), - uintptr(nWidthSrc), - uintptr(nHeightSrc), - uintptr(dwRop)) - - if ret == 0 { - panic("StretchBlt failed") - } -} - -func SetDIBitsToDevice(hdc HDC, xDest, yDest, dwWidth, dwHeight, xSrc, ySrc int, uStartScan, cScanLines uint, lpvBits []byte, lpbmi *BITMAPINFO, fuColorUse uint) int { - ret, _, _ := procSetDIBitsToDevice.Call( - uintptr(hdc), - uintptr(xDest), - uintptr(yDest), - uintptr(dwWidth), - uintptr(dwHeight), - uintptr(xSrc), - uintptr(ySrc), - uintptr(uStartScan), - uintptr(cScanLines), - uintptr(unsafe.Pointer(&lpvBits[0])), - uintptr(unsafe.Pointer(lpbmi)), - uintptr(fuColorUse)) - - return int(ret) -} - -func ChoosePixelFormat(hdc HDC, pfd *PIXELFORMATDESCRIPTOR) int { - ret, _, _ := procChoosePixelFormat.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(pfd)), - ) - return int(ret) -} - -func DescribePixelFormat(hdc HDC, iPixelFormat int, nBytes uint, pfd *PIXELFORMATDESCRIPTOR) int { - ret, _, _ := procDescribePixelFormat.Call( - uintptr(hdc), - uintptr(iPixelFormat), - uintptr(nBytes), - uintptr(unsafe.Pointer(pfd)), - ) - return int(ret) -} - -func GetEnhMetaFilePixelFormat(hemf HENHMETAFILE, cbBuffer uint32, pfd *PIXELFORMATDESCRIPTOR) uint { - ret, _, _ := procGetEnhMetaFilePixelFormat.Call( - uintptr(hemf), - uintptr(cbBuffer), - uintptr(unsafe.Pointer(pfd)), - ) - return uint(ret) -} - -func GetPixelFormat(hdc HDC) int { - ret, _, _ := procGetPixelFormat.Call( - uintptr(hdc), - ) - return int(ret) -} - -func SetPixelFormat(hdc HDC, iPixelFormat int, pfd *PIXELFORMATDESCRIPTOR) bool { - ret, _, _ := procSetPixelFormat.Call( - uintptr(hdc), - uintptr(iPixelFormat), - uintptr(unsafe.Pointer(pfd)), - ) - return ret == TRUE -} - -func SwapBuffers(hdc HDC) bool { - ret, _, _ := procSwapBuffers.Call(uintptr(hdc)) - return ret == TRUE -} diff --git a/vendor/github.com/shirou/w32/gdiplus.go b/vendor/github.com/shirou/w32/gdiplus.go deleted file mode 100644 index 443334b0b..000000000 --- a/vendor/github.com/shirou/w32/gdiplus.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "errors" - "fmt" - "syscall" - "unsafe" -) - -const ( - Ok = 0 - GenericError = 1 - InvalidParameter = 2 - OutOfMemory = 3 - ObjectBusy = 4 - InsufficientBuffer = 5 - NotImplemented = 6 - Win32Error = 7 - WrongState = 8 - Aborted = 9 - FileNotFound = 10 - ValueOverflow = 11 - AccessDenied = 12 - UnknownImageFormat = 13 - FontFamilyNotFound = 14 - FontStyleNotFound = 15 - NotTrueTypeFont = 16 - UnsupportedGdiplusVersion = 17 - GdiplusNotInitialized = 18 - PropertyNotFound = 19 - PropertyNotSupported = 20 - ProfileNotFound = 21 -) - -func GetGpStatus(s int32) string { - switch s { - case Ok: - return "Ok" - case GenericError: - return "GenericError" - case InvalidParameter: - return "InvalidParameter" - case OutOfMemory: - return "OutOfMemory" - case ObjectBusy: - return "ObjectBusy" - case InsufficientBuffer: - return "InsufficientBuffer" - case NotImplemented: - return "NotImplemented" - case Win32Error: - return "Win32Error" - case WrongState: - return "WrongState" - case Aborted: - return "Aborted" - case FileNotFound: - return "FileNotFound" - case ValueOverflow: - return "ValueOverflow" - case AccessDenied: - return "AccessDenied" - case UnknownImageFormat: - return "UnknownImageFormat" - case FontFamilyNotFound: - return "FontFamilyNotFound" - case FontStyleNotFound: - return "FontStyleNotFound" - case NotTrueTypeFont: - return "NotTrueTypeFont" - case UnsupportedGdiplusVersion: - return "UnsupportedGdiplusVersion" - case GdiplusNotInitialized: - return "GdiplusNotInitialized" - case PropertyNotFound: - return "PropertyNotFound" - case PropertyNotSupported: - return "PropertyNotSupported" - case ProfileNotFound: - return "ProfileNotFound" - } - return "Unknown Status Value" -} - -var ( - token uintptr - - modgdiplus = syscall.NewLazyDLL("gdiplus.dll") - - procGdipCreateBitmapFromFile = modgdiplus.NewProc("GdipCreateBitmapFromFile") - procGdipCreateBitmapFromHBITMAP = modgdiplus.NewProc("GdipCreateBitmapFromHBITMAP") - procGdipCreateHBITMAPFromBitmap = modgdiplus.NewProc("GdipCreateHBITMAPFromBitmap") - procGdipCreateBitmapFromResource = modgdiplus.NewProc("GdipCreateBitmapFromResource") - procGdipCreateBitmapFromStream = modgdiplus.NewProc("GdipCreateBitmapFromStream") - procGdipDisposeImage = modgdiplus.NewProc("GdipDisposeImage") - procGdiplusShutdown = modgdiplus.NewProc("GdiplusShutdown") - procGdiplusStartup = modgdiplus.NewProc("GdiplusStartup") -) - -func GdipCreateBitmapFromFile(filename string) (*uintptr, error) { - var bitmap *uintptr - ret, _, _ := procGdipCreateBitmapFromFile.Call( - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(filename))), - uintptr(unsafe.Pointer(&bitmap))) - - if ret != Ok { - return nil, errors.New(fmt.Sprintf("GdipCreateBitmapFromFile failed with status '%s' for file '%s'", GetGpStatus(int32(ret)), filename)) - } - - return bitmap, nil -} - -func GdipCreateBitmapFromResource(instance HINSTANCE, resId *uint16) (*uintptr, error) { - var bitmap *uintptr - ret, _, _ := procGdipCreateBitmapFromResource.Call( - uintptr(instance), - uintptr(unsafe.Pointer(resId)), - uintptr(unsafe.Pointer(&bitmap))) - - if ret != Ok { - return nil, errors.New(fmt.Sprintf("GdiCreateBitmapFromResource failed with status '%s'", GetGpStatus(int32(ret)))) - } - - return bitmap, nil -} - -func GdipCreateBitmapFromStream(stream *IStream) (*uintptr, error) { - var bitmap *uintptr - ret, _, _ := procGdipCreateBitmapFromStream.Call( - uintptr(unsafe.Pointer(stream)), - uintptr(unsafe.Pointer(&bitmap))) - - if ret != Ok { - return nil, errors.New(fmt.Sprintf("GdipCreateBitmapFromStream failed with status '%s'", GetGpStatus(int32(ret)))) - } - - return bitmap, nil -} - -func GdipCreateHBITMAPFromBitmap(bitmap *uintptr, background uint32) (HBITMAP, error) { - var hbitmap HBITMAP - ret, _, _ := procGdipCreateHBITMAPFromBitmap.Call( - uintptr(unsafe.Pointer(bitmap)), - uintptr(unsafe.Pointer(&hbitmap)), - uintptr(background)) - - if ret != Ok { - return 0, errors.New(fmt.Sprintf("GdipCreateHBITMAPFromBitmap failed with status '%s'", GetGpStatus(int32(ret)))) - } - - return hbitmap, nil -} - -func GdipDisposeImage(image *uintptr) { - procGdipDisposeImage.Call(uintptr(unsafe.Pointer(image))) -} - -func GdiplusShutdown() { - procGdiplusShutdown.Call(token) -} - -func GdiplusStartup(input *GdiplusStartupInput, output *GdiplusStartupOutput) { - ret, _, _ := procGdiplusStartup.Call( - uintptr(unsafe.Pointer(&token)), - uintptr(unsafe.Pointer(input)), - uintptr(unsafe.Pointer(output))) - - if ret != Ok { - panic("GdiplusStartup failed with status " + GetGpStatus(int32(ret))) - } -} diff --git a/vendor/github.com/shirou/w32/idispatch.go b/vendor/github.com/shirou/w32/idispatch.go deleted file mode 100644 index d6c2504d8..000000000 --- a/vendor/github.com/shirou/w32/idispatch.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "unsafe" -) - -type pIDispatchVtbl struct { - pQueryInterface uintptr - pAddRef uintptr - pRelease uintptr - pGetTypeInfoCount uintptr - pGetTypeInfo uintptr - pGetIDsOfNames uintptr - pInvoke uintptr -} - -type IDispatch struct { - lpVtbl *pIDispatchVtbl -} - -func (this *IDispatch) QueryInterface(id *GUID) *IDispatch { - return ComQueryInterface((*IUnknown)(unsafe.Pointer(this)), id) -} - -func (this *IDispatch) AddRef() int32 { - return ComAddRef((*IUnknown)(unsafe.Pointer(this))) -} - -func (this *IDispatch) Release() int32 { - return ComRelease((*IUnknown)(unsafe.Pointer(this))) -} - -func (this *IDispatch) GetIDsOfName(names []string) []int32 { - return ComGetIDsOfName(this, names) -} - -func (this *IDispatch) Invoke(dispid int32, dispatch int16, params ...interface{}) *VARIANT { - return ComInvoke(this, dispid, dispatch, params...) -} diff --git a/vendor/github.com/shirou/w32/istream.go b/vendor/github.com/shirou/w32/istream.go deleted file mode 100644 index 0bb282222..000000000 --- a/vendor/github.com/shirou/w32/istream.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "unsafe" -) - -type pIStreamVtbl struct { - pQueryInterface uintptr - pAddRef uintptr - pRelease uintptr -} - -type IStream struct { - lpVtbl *pIStreamVtbl -} - -func (this *IStream) QueryInterface(id *GUID) *IDispatch { - return ComQueryInterface((*IUnknown)(unsafe.Pointer(this)), id) -} - -func (this *IStream) AddRef() int32 { - return ComAddRef((*IUnknown)(unsafe.Pointer(this))) -} - -func (this *IStream) Release() int32 { - return ComRelease((*IUnknown)(unsafe.Pointer(this))) -} diff --git a/vendor/github.com/shirou/w32/iunknown.go b/vendor/github.com/shirou/w32/iunknown.go deleted file mode 100644 index 847fba7ec..000000000 --- a/vendor/github.com/shirou/w32/iunknown.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -type pIUnknownVtbl struct { - pQueryInterface uintptr - pAddRef uintptr - pRelease uintptr -} - -type IUnknown struct { - lpVtbl *pIUnknownVtbl -} - -func (this *IUnknown) QueryInterface(id *GUID) *IDispatch { - return ComQueryInterface(this, id) -} - -func (this *IUnknown) AddRef() int32 { - return ComAddRef(this) -} - -func (this *IUnknown) Release() int32 { - return ComRelease(this) -} diff --git a/vendor/github.com/shirou/w32/kernel32.go b/vendor/github.com/shirou/w32/kernel32.go deleted file mode 100644 index 5d5b4d8aa..000000000 --- a/vendor/github.com/shirou/w32/kernel32.go +++ /dev/null @@ -1,316 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modkernel32 = syscall.NewLazyDLL("kernel32.dll") - - procGetModuleHandle = modkernel32.NewProc("GetModuleHandleW") - procMulDiv = modkernel32.NewProc("MulDiv") - procGetConsoleWindow = modkernel32.NewProc("GetConsoleWindow") - procGetCurrentThread = modkernel32.NewProc("GetCurrentThread") - procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") - procGetUserDefaultLCID = modkernel32.NewProc("GetUserDefaultLCID") - procLstrlen = modkernel32.NewProc("lstrlenW") - procLstrcpy = modkernel32.NewProc("lstrcpyW") - procGlobalAlloc = modkernel32.NewProc("GlobalAlloc") - procGlobalFree = modkernel32.NewProc("GlobalFree") - procGlobalLock = modkernel32.NewProc("GlobalLock") - procGlobalUnlock = modkernel32.NewProc("GlobalUnlock") - procMoveMemory = modkernel32.NewProc("RtlMoveMemory") - procFindResource = modkernel32.NewProc("FindResourceW") - procSizeofResource = modkernel32.NewProc("SizeofResource") - procLockResource = modkernel32.NewProc("LockResource") - procLoadResource = modkernel32.NewProc("LoadResource") - procGetLastError = modkernel32.NewProc("GetLastError") - procOpenProcess = modkernel32.NewProc("OpenProcess") - procTerminateProcess = modkernel32.NewProc("TerminateProcess") - procCloseHandle = modkernel32.NewProc("CloseHandle") - procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") - procModule32First = modkernel32.NewProc("Module32FirstW") - procModule32Next = modkernel32.NewProc("Module32NextW") - procProcess32First = modkernel32.NewProc("Process32FirstW") - procProcess32Next = modkernel32.NewProc("Process32NextW") - procGetSystemTimes = modkernel32.NewProc("GetSystemTimes") - procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") - procSetConsoleTextAttribute = modkernel32.NewProc("SetConsoleTextAttribute") - procGetDiskFreeSpaceEx = modkernel32.NewProc("GetDiskFreeSpaceExW") - procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") -) - -func GetModuleHandle(modulename string) HINSTANCE { - var mn uintptr - if modulename == "" { - mn = 0 - } else { - mn = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(modulename))) - } - ret, _, _ := procGetModuleHandle.Call(mn) - return HINSTANCE(ret) -} - -func MulDiv(number, numerator, denominator int) int { - ret, _, _ := procMulDiv.Call( - uintptr(number), - uintptr(numerator), - uintptr(denominator)) - - return int(ret) -} - -func GetConsoleWindow() HWND { - ret, _, _ := procGetConsoleWindow.Call() - - return HWND(ret) -} - -func GetCurrentThread() HANDLE { - ret, _, _ := procGetCurrentThread.Call() - - return HANDLE(ret) -} - -func GetLogicalDrives() uint32 { - ret, _, _ := procGetLogicalDrives.Call() - - return uint32(ret) -} - -func GetUserDefaultLCID() uint32 { - ret, _, _ := procGetUserDefaultLCID.Call() - - return uint32(ret) -} - -func Lstrlen(lpString *uint16) int { - ret, _, _ := procLstrlen.Call(uintptr(unsafe.Pointer(lpString))) - - return int(ret) -} - -func Lstrcpy(buf []uint16, lpString *uint16) { - procLstrcpy.Call( - uintptr(unsafe.Pointer(&buf[0])), - uintptr(unsafe.Pointer(lpString))) -} - -func GlobalAlloc(uFlags uint, dwBytes uint32) HGLOBAL { - ret, _, _ := procGlobalAlloc.Call( - uintptr(uFlags), - uintptr(dwBytes)) - - if ret == 0 { - panic("GlobalAlloc failed") - } - - return HGLOBAL(ret) -} - -func GlobalFree(hMem HGLOBAL) { - ret, _, _ := procGlobalFree.Call(uintptr(hMem)) - - if ret != 0 { - panic("GlobalFree failed") - } -} - -func GlobalLock(hMem HGLOBAL) unsafe.Pointer { - ret, _, _ := procGlobalLock.Call(uintptr(hMem)) - - if ret == 0 { - panic("GlobalLock failed") - } - - return unsafe.Pointer(ret) -} - -func GlobalUnlock(hMem HGLOBAL) bool { - ret, _, _ := procGlobalUnlock.Call(uintptr(hMem)) - - return ret != 0 -} - -func MoveMemory(destination, source unsafe.Pointer, length uint32) { - procMoveMemory.Call( - uintptr(unsafe.Pointer(destination)), - uintptr(source), - uintptr(length)) -} - -func FindResource(hModule HMODULE, lpName, lpType *uint16) (HRSRC, error) { - ret, _, _ := procFindResource.Call( - uintptr(hModule), - uintptr(unsafe.Pointer(lpName)), - uintptr(unsafe.Pointer(lpType))) - - if ret == 0 { - return 0, syscall.GetLastError() - } - - return HRSRC(ret), nil -} - -func SizeofResource(hModule HMODULE, hResInfo HRSRC) uint32 { - ret, _, _ := procSizeofResource.Call( - uintptr(hModule), - uintptr(hResInfo)) - - if ret == 0 { - panic("SizeofResource failed") - } - - return uint32(ret) -} - -func LockResource(hResData HGLOBAL) unsafe.Pointer { - ret, _, _ := procLockResource.Call(uintptr(hResData)) - - if ret == 0 { - panic("LockResource failed") - } - - return unsafe.Pointer(ret) -} - -func LoadResource(hModule HMODULE, hResInfo HRSRC) HGLOBAL { - ret, _, _ := procLoadResource.Call( - uintptr(hModule), - uintptr(hResInfo)) - - if ret == 0 { - panic("LoadResource failed") - } - - return HGLOBAL(ret) -} - -func GetLastError() uint32 { - ret, _, _ := procGetLastError.Call() - return uint32(ret) -} - -func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) HANDLE { - inherit := 0 - if inheritHandle { - inherit = 1 - } - - ret, _, _ := procOpenProcess.Call( - uintptr(desiredAccess), - uintptr(inherit), - uintptr(processId)) - return HANDLE(ret) -} - -func TerminateProcess(hProcess HANDLE, uExitCode uint) bool { - ret, _, _ := procTerminateProcess.Call( - uintptr(hProcess), - uintptr(uExitCode)) - return ret != 0 -} - -func CloseHandle(object HANDLE) bool { - ret, _, _ := procCloseHandle.Call( - uintptr(object)) - return ret != 0 -} - -func CreateToolhelp32Snapshot(flags, processId uint32) HANDLE { - ret, _, _ := procCreateToolhelp32Snapshot.Call( - uintptr(flags), - uintptr(processId)) - - if ret <= 0 { - return HANDLE(0) - } - - return HANDLE(ret) -} - -func Module32First(snapshot HANDLE, me *MODULEENTRY32) bool { - ret, _, _ := procModule32First.Call( - uintptr(snapshot), - uintptr(unsafe.Pointer(me))) - - return ret != 0 -} - -func Module32Next(snapshot HANDLE, me *MODULEENTRY32) bool { - ret, _, _ := procModule32Next.Call( - uintptr(snapshot), - uintptr(unsafe.Pointer(me))) - - return ret != 0 -} -func Process32First(snapshot HANDLE, pe *PROCESSENTRY32) bool { - ret, _, _ := procProcess32First.Call( - uintptr(snapshot), - uintptr(unsafe.Pointer(pe))) - - return ret != 0 -} - -func Process32Next(snapshot HANDLE, pe *PROCESSENTRY32) bool { - ret, _, _ := procProcess32Next.Call( - uintptr(snapshot), - uintptr(unsafe.Pointer(pe))) - - return ret != 0 -} -func GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime *FILETIME) bool { - ret, _, _ := procGetSystemTimes.Call( - uintptr(unsafe.Pointer(lpIdleTime)), - uintptr(unsafe.Pointer(lpKernelTime)), - uintptr(unsafe.Pointer(lpUserTime))) - - return ret != 0 -} - -func GetProcessTimes(hProcess HANDLE, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime *FILETIME) bool { - ret, _, _ := procGetProcessTimes.Call( - uintptr(hProcess), - uintptr(unsafe.Pointer(lpCreationTime)), - uintptr(unsafe.Pointer(lpExitTime)), - uintptr(unsafe.Pointer(lpKernelTime)), - uintptr(unsafe.Pointer(lpUserTime))) - - return ret != 0 -} - -func GetConsoleScreenBufferInfo(hConsoleOutput HANDLE) *CONSOLE_SCREEN_BUFFER_INFO { - var csbi CONSOLE_SCREEN_BUFFER_INFO - ret, _, _ := procGetConsoleScreenBufferInfo.Call( - uintptr(hConsoleOutput), - uintptr(unsafe.Pointer(&csbi))) - if ret == 0 { - return nil - } - return &csbi -} - -func SetConsoleTextAttribute(hConsoleOutput HANDLE, wAttributes uint16) bool { - ret, _, _ := procSetConsoleTextAttribute.Call( - uintptr(hConsoleOutput), - uintptr(wAttributes)) - return ret != 0 -} - -func GetDiskFreeSpaceEx(dirName string) (r bool, - freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes uint64) { - ret, _, _ := procGetDiskFreeSpaceEx.Call( - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(dirName))), - uintptr(unsafe.Pointer(&freeBytesAvailable)), - uintptr(unsafe.Pointer(&totalNumberOfBytes)), - uintptr(unsafe.Pointer(&totalNumberOfFreeBytes))) - return ret != 0, - freeBytesAvailable, totalNumberOfBytes, totalNumberOfFreeBytes -} diff --git a/vendor/github.com/shirou/w32/ole32.go b/vendor/github.com/shirou/w32/ole32.go deleted file mode 100644 index 48589848c..000000000 --- a/vendor/github.com/shirou/w32/ole32.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modole32 = syscall.NewLazyDLL("ole32.dll") - - procCoInitializeEx = modole32.NewProc("CoInitializeEx") - procCoInitialize = modole32.NewProc("CoInitialize") - procCoUninitialize = modole32.NewProc("CoUninitialize") - procCreateStreamOnHGlobal = modole32.NewProc("CreateStreamOnHGlobal") -) - -func CoInitializeEx(coInit uintptr) HRESULT { - ret, _, _ := procCoInitializeEx.Call( - 0, - coInit) - - switch uint32(ret) { - case E_INVALIDARG: - panic("CoInitializeEx failed with E_INVALIDARG") - case E_OUTOFMEMORY: - panic("CoInitializeEx failed with E_OUTOFMEMORY") - case E_UNEXPECTED: - panic("CoInitializeEx failed with E_UNEXPECTED") - } - - return HRESULT(ret) -} - -func CoInitialize() { - procCoInitialize.Call(0) -} - -func CoUninitialize() { - procCoUninitialize.Call() -} - -func CreateStreamOnHGlobal(hGlobal HGLOBAL, fDeleteOnRelease bool) *IStream { - stream := new(IStream) - ret, _, _ := procCreateStreamOnHGlobal.Call( - uintptr(hGlobal), - uintptr(BoolToBOOL(fDeleteOnRelease)), - uintptr(unsafe.Pointer(&stream))) - - switch uint32(ret) { - case E_INVALIDARG: - panic("CreateStreamOnHGlobal failed with E_INVALIDARG") - case E_OUTOFMEMORY: - panic("CreateStreamOnHGlobal failed with E_OUTOFMEMORY") - case E_UNEXPECTED: - panic("CreateStreamOnHGlobal failed with E_UNEXPECTED") - } - - return stream -} diff --git a/vendor/github.com/shirou/w32/oleaut32.go b/vendor/github.com/shirou/w32/oleaut32.go deleted file mode 100644 index cdfcb0038..000000000 --- a/vendor/github.com/shirou/w32/oleaut32.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modoleaut32 = syscall.NewLazyDLL("oleaut32") - - procVariantInit = modoleaut32.NewProc("VariantInit") - procSysAllocString = modoleaut32.NewProc("SysAllocString") - procSysFreeString = modoleaut32.NewProc("SysFreeString") - procSysStringLen = modoleaut32.NewProc("SysStringLen") - procCreateDispTypeInfo = modoleaut32.NewProc("CreateDispTypeInfo") - procCreateStdDispatch = modoleaut32.NewProc("CreateStdDispatch") -) - -func VariantInit(v *VARIANT) { - hr, _, _ := procVariantInit.Call(uintptr(unsafe.Pointer(v))) - if hr != 0 { - panic("Invoke VariantInit error.") - } - return -} - -func SysAllocString(v string) (ss *int16) { - pss, _, _ := procSysAllocString.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(v)))) - ss = (*int16)(unsafe.Pointer(pss)) - return -} - -func SysFreeString(v *int16) { - hr, _, _ := procSysFreeString.Call(uintptr(unsafe.Pointer(v))) - if hr != 0 { - panic("Invoke SysFreeString error.") - } - return -} - -func SysStringLen(v *int16) uint { - l, _, _ := procSysStringLen.Call(uintptr(unsafe.Pointer(v))) - return uint(l) -} diff --git a/vendor/github.com/shirou/w32/opengl32.go b/vendor/github.com/shirou/w32/opengl32.go deleted file mode 100644 index 4f35f19ef..000000000 --- a/vendor/github.com/shirou/w32/opengl32.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modopengl32 = syscall.NewLazyDLL("opengl32.dll") - - procwglCreateContext = modopengl32.NewProc("wglCreateContext") - procwglCreateLayerContext = modopengl32.NewProc("wglCreateLayerContext") - procwglDeleteContext = modopengl32.NewProc("wglDeleteContext") - procwglGetProcAddress = modopengl32.NewProc("wglGetProcAddress") - procwglMakeCurrent = modopengl32.NewProc("wglMakeCurrent") - procwglShareLists = modopengl32.NewProc("wglShareLists") -) - -func WglCreateContext(hdc HDC) HGLRC { - ret, _, _ := procwglCreateContext.Call( - uintptr(hdc), - ) - - return HGLRC(ret) -} - -func WglCreateLayerContext(hdc HDC, iLayerPlane int) HGLRC { - ret, _, _ := procwglCreateLayerContext.Call( - uintptr(hdc), - uintptr(iLayerPlane), - ) - - return HGLRC(ret) -} - -func WglDeleteContext(hglrc HGLRC) bool { - ret, _, _ := procwglDeleteContext.Call( - uintptr(hglrc), - ) - - return ret == TRUE -} - -func WglGetProcAddress(szProc string) uintptr { - ret, _, _ := procwglGetProcAddress.Call( - uintptr(unsafe.Pointer(syscall.StringBytePtr(szProc))), - ) - - return ret -} - -func WglMakeCurrent(hdc HDC, hglrc HGLRC) bool { - ret, _, _ := procwglMakeCurrent.Call( - uintptr(hdc), - uintptr(hglrc), - ) - - return ret == TRUE -} - -func WglShareLists(hglrc1, hglrc2 HGLRC) bool { - ret, _, _ := procwglShareLists.Call( - uintptr(hglrc1), - uintptr(hglrc2), - ) - - return ret == TRUE -} diff --git a/vendor/github.com/shirou/w32/psapi.go b/vendor/github.com/shirou/w32/psapi.go deleted file mode 100644 index ab7858cb5..000000000 --- a/vendor/github.com/shirou/w32/psapi.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unsafe" -) - -var ( - modpsapi = syscall.NewLazyDLL("psapi.dll") - - procEnumProcesses = modpsapi.NewProc("EnumProcesses") -) - -func EnumProcesses(processIds []uint32, cb uint32, bytesReturned *uint32) bool { - ret, _, _ := procEnumProcesses.Call( - uintptr(unsafe.Pointer(&processIds[0])), - uintptr(cb), - uintptr(unsafe.Pointer(bytesReturned))) - - return ret != 0 -} diff --git a/vendor/github.com/shirou/w32/shell32.go b/vendor/github.com/shirou/w32/shell32.go deleted file mode 100644 index 0f5ce8cbd..000000000 --- a/vendor/github.com/shirou/w32/shell32.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "errors" - "fmt" - "syscall" - "unsafe" -) - -var ( - modshell32 = syscall.NewLazyDLL("shell32.dll") - - procSHBrowseForFolder = modshell32.NewProc("SHBrowseForFolderW") - procSHGetPathFromIDList = modshell32.NewProc("SHGetPathFromIDListW") - procDragAcceptFiles = modshell32.NewProc("DragAcceptFiles") - procDragQueryFile = modshell32.NewProc("DragQueryFileW") - procDragQueryPoint = modshell32.NewProc("DragQueryPoint") - procDragFinish = modshell32.NewProc("DragFinish") - procShellExecute = modshell32.NewProc("ShellExecuteW") - procExtractIcon = modshell32.NewProc("ExtractIconW") -) - -func SHBrowseForFolder(bi *BROWSEINFO) uintptr { - ret, _, _ := procSHBrowseForFolder.Call(uintptr(unsafe.Pointer(bi))) - - return ret -} - -func SHGetPathFromIDList(idl uintptr) string { - buf := make([]uint16, 1024) - procSHGetPathFromIDList.Call( - idl, - uintptr(unsafe.Pointer(&buf[0]))) - - return syscall.UTF16ToString(buf) -} - -func DragAcceptFiles(hwnd HWND, accept bool) { - procDragAcceptFiles.Call( - uintptr(hwnd), - uintptr(BoolToBOOL(accept))) -} - -func DragQueryFile(hDrop HDROP, iFile uint) (fileName string, fileCount uint) { - ret, _, _ := procDragQueryFile.Call( - uintptr(hDrop), - uintptr(iFile), - 0, - 0) - - fileCount = uint(ret) - - if iFile != 0xFFFFFFFF { - buf := make([]uint16, fileCount+1) - - ret, _, _ := procDragQueryFile.Call( - uintptr(hDrop), - uintptr(iFile), - uintptr(unsafe.Pointer(&buf[0])), - uintptr(fileCount+1)) - - if ret == 0 { - panic("Invoke DragQueryFile error.") - } - - fileName = syscall.UTF16ToString(buf) - } - - return -} - -func DragQueryPoint(hDrop HDROP) (x, y int, isClientArea bool) { - var pt POINT - ret, _, _ := procDragQueryPoint.Call( - uintptr(hDrop), - uintptr(unsafe.Pointer(&pt))) - - return int(pt.X), int(pt.Y), (ret == 1) -} - -func DragFinish(hDrop HDROP) { - procDragFinish.Call(uintptr(hDrop)) -} - -func ShellExecute(hwnd HWND, lpOperation, lpFile, lpParameters, lpDirectory string, nShowCmd int) error { - var op, param, directory uintptr - if len(lpOperation) != 0 { - op = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpOperation))) - } - if len(lpParameters) != 0 { - param = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpParameters))) - } - if len(lpDirectory) != 0 { - directory = uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpDirectory))) - } - - ret, _, _ := procShellExecute.Call( - uintptr(hwnd), - op, - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpFile))), - param, - directory, - uintptr(nShowCmd)) - - errorMsg := "" - if ret != 0 && ret <= 32 { - switch int(ret) { - case ERROR_FILE_NOT_FOUND: - errorMsg = "The specified file was not found." - case ERROR_PATH_NOT_FOUND: - errorMsg = "The specified path was not found." - case ERROR_BAD_FORMAT: - errorMsg = "The .exe file is invalid (non-Win32 .exe or error in .exe image)." - case SE_ERR_ACCESSDENIED: - errorMsg = "The operating system denied access to the specified file." - case SE_ERR_ASSOCINCOMPLETE: - errorMsg = "The file name association is incomplete or invalid." - case SE_ERR_DDEBUSY: - errorMsg = "The DDE transaction could not be completed because other DDE transactions were being processed." - case SE_ERR_DDEFAIL: - errorMsg = "The DDE transaction failed." - case SE_ERR_DDETIMEOUT: - errorMsg = "The DDE transaction could not be completed because the request timed out." - case SE_ERR_DLLNOTFOUND: - errorMsg = "The specified DLL was not found." - case SE_ERR_NOASSOC: - errorMsg = "There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable." - case SE_ERR_OOM: - errorMsg = "There was not enough memory to complete the operation." - case SE_ERR_SHARE: - errorMsg = "A sharing violation occurred." - default: - errorMsg = fmt.Sprintf("Unknown error occurred with error code %v", ret) - } - } else { - return nil - } - - return errors.New(errorMsg) -} - -func ExtractIcon(lpszExeFileName string, nIconIndex int) HICON { - ret, _, _ := procExtractIcon.Call( - 0, - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpszExeFileName))), - uintptr(nIconIndex)) - - return HICON(ret) -} diff --git a/vendor/github.com/shirou/w32/typedef.go b/vendor/github.com/shirou/w32/typedef.go deleted file mode 100644 index 65f511129..000000000 --- a/vendor/github.com/shirou/w32/typedef.go +++ /dev/null @@ -1,901 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package w32 - -import ( - "unsafe" -) - -// From MSDN: Windows Data Types -// http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751.aspx -// ATOM WORD -// BOOL int32 -// BOOLEAN byte -// BYTE byte -// CCHAR int8 -// CHAR int8 -// COLORREF DWORD -// DWORD uint32 -// DWORDLONG ULONGLONG -// DWORD_PTR ULONG_PTR -// DWORD32 uint32 -// DWORD64 uint64 -// FLOAT float32 -// HACCEL HANDLE -// HALF_PTR struct{} // ??? -// HANDLE PVOID -// HBITMAP HANDLE -// HBRUSH HANDLE -// HCOLORSPACE HANDLE -// HCONV HANDLE -// HCONVLIST HANDLE -// HCURSOR HANDLE -// HDC HANDLE -// HDDEDATA HANDLE -// HDESK HANDLE -// HDROP HANDLE -// HDWP HANDLE -// HENHMETAFILE HANDLE -// HFILE HANDLE -// HFONT HANDLE -// HGDIOBJ HANDLE -// HGLOBAL HANDLE -// HHOOK HANDLE -// HICON HANDLE -// HINSTANCE HANDLE -// HKEY HANDLE -// HKL HANDLE -// HLOCAL HANDLE -// HMENU HANDLE -// HMETAFILE HANDLE -// HMODULE HANDLE -// HPALETTE HANDLE -// HPEN HANDLE -// HRESULT int32 -// HRGN HANDLE -// HSZ HANDLE -// HWINSTA HANDLE -// HWND HANDLE -// INT int32 -// INT_PTR uintptr -// INT8 int8 -// INT16 int16 -// INT32 int32 -// INT64 int64 -// LANGID WORD -// LCID DWORD -// LCTYPE DWORD -// LGRPID DWORD -// LONG int32 -// LONGLONG int64 -// LONG_PTR uintptr -// LONG32 int32 -// LONG64 int64 -// LPARAM LONG_PTR -// LPBOOL *BOOL -// LPBYTE *BYTE -// LPCOLORREF *COLORREF -// LPCSTR *int8 -// LPCTSTR LPCWSTR -// LPCVOID unsafe.Pointer -// LPCWSTR *WCHAR -// LPDWORD *DWORD -// LPHANDLE *HANDLE -// LPINT *INT -// LPLONG *LONG -// LPSTR *CHAR -// LPTSTR LPWSTR -// LPVOID unsafe.Pointer -// LPWORD *WORD -// LPWSTR *WCHAR -// LRESULT LONG_PTR -// PBOOL *BOOL -// PBOOLEAN *BOOLEAN -// PBYTE *BYTE -// PCHAR *CHAR -// PCSTR *CHAR -// PCTSTR PCWSTR -// PCWSTR *WCHAR -// PDWORD *DWORD -// PDWORDLONG *DWORDLONG -// PDWORD_PTR *DWORD_PTR -// PDWORD32 *DWORD32 -// PDWORD64 *DWORD64 -// PFLOAT *FLOAT -// PHALF_PTR *HALF_PTR -// PHANDLE *HANDLE -// PHKEY *HKEY -// PINT_PTR *INT_PTR -// PINT8 *INT8 -// PINT16 *INT16 -// PINT32 *INT32 -// PINT64 *INT64 -// PLCID *LCID -// PLONG *LONG -// PLONGLONG *LONGLONG -// PLONG_PTR *LONG_PTR -// PLONG32 *LONG32 -// PLONG64 *LONG64 -// POINTER_32 struct{} // ??? -// POINTER_64 struct{} // ??? -// POINTER_SIGNED uintptr -// POINTER_UNSIGNED uintptr -// PSHORT *SHORT -// PSIZE_T *SIZE_T -// PSSIZE_T *SSIZE_T -// PSTR *CHAR -// PTBYTE *TBYTE -// PTCHAR *TCHAR -// PTSTR PWSTR -// PUCHAR *UCHAR -// PUHALF_PTR *UHALF_PTR -// PUINT *UINT -// PUINT_PTR *UINT_PTR -// PUINT8 *UINT8 -// PUINT16 *UINT16 -// PUINT32 *UINT32 -// PUINT64 *UINT64 -// PULONG *ULONG -// PULONGLONG *ULONGLONG -// PULONG_PTR *ULONG_PTR -// PULONG32 *ULONG32 -// PULONG64 *ULONG64 -// PUSHORT *USHORT -// PVOID unsafe.Pointer -// PWCHAR *WCHAR -// PWORD *WORD -// PWSTR *WCHAR -// QWORD uint64 -// SC_HANDLE HANDLE -// SC_LOCK LPVOID -// SERVICE_STATUS_HANDLE HANDLE -// SHORT int16 -// SIZE_T ULONG_PTR -// SSIZE_T LONG_PTR -// TBYTE WCHAR -// TCHAR WCHAR -// UCHAR uint8 -// UHALF_PTR struct{} // ??? -// UINT uint32 -// UINT_PTR uintptr -// UINT8 uint8 -// UINT16 uint16 -// UINT32 uint32 -// UINT64 uint64 -// ULONG uint32 -// ULONGLONG uint64 -// ULONG_PTR uintptr -// ULONG32 uint32 -// ULONG64 uint64 -// USHORT uint16 -// USN LONGLONG -// WCHAR uint16 -// WORD uint16 -// WPARAM UINT_PTR -type ( - ATOM uint16 - BOOL int32 - COLORREF uint32 - DWM_FRAME_COUNT uint64 - HACCEL HANDLE - HANDLE uintptr - HBITMAP HANDLE - HBRUSH HANDLE - HCURSOR HANDLE - HDC HANDLE - HDROP HANDLE - HDWP HANDLE - HENHMETAFILE HANDLE - HFONT HANDLE - HGDIOBJ HANDLE - HGLOBAL HANDLE - HGLRC HANDLE - HICON HANDLE - HIMAGELIST HANDLE - HINSTANCE HANDLE - HKEY HANDLE - HKL HANDLE - HMENU HANDLE - HMODULE HANDLE - HMONITOR HANDLE - HPEN HANDLE - HRESULT int32 - HRGN HANDLE - HRSRC HANDLE - HTHUMBNAIL HANDLE - HWND HANDLE - LPCVOID unsafe.Pointer - PVOID unsafe.Pointer - QPC_TIME uint64 -) - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd162805.aspx -type POINT struct { - X, Y int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd162897.aspx -type RECT struct { - Left, Top, Right, Bottom int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms633577.aspx -type WNDCLASSEX struct { - Size uint32 - Style uint32 - WndProc uintptr - ClsExtra int32 - WndExtra int32 - Instance HINSTANCE - Icon HICON - Cursor HCURSOR - Background HBRUSH - MenuName *uint16 - ClassName *uint16 - IconSm HICON -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms644958.aspx -type MSG struct { - Hwnd HWND - Message uint32 - WParam uintptr - LParam uintptr - Time uint32 - Pt POINT -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd145037.aspx -type LOGFONT struct { - Height int32 - Width int32 - Escapement int32 - Orientation int32 - Weight int32 - Italic byte - Underline byte - StrikeOut byte - CharSet byte - OutPrecision byte - ClipPrecision byte - Quality byte - PitchAndFamily byte - FaceName [LF_FACESIZE]uint16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646839.aspx -type OPENFILENAME struct { - StructSize uint32 - Owner HWND - Instance HINSTANCE - Filter *uint16 - CustomFilter *uint16 - MaxCustomFilter uint32 - FilterIndex uint32 - File *uint16 - MaxFile uint32 - FileTitle *uint16 - MaxFileTitle uint32 - InitialDir *uint16 - Title *uint16 - Flags uint32 - FileOffset uint16 - FileExtension uint16 - DefExt *uint16 - CustData uintptr - FnHook uintptr - TemplateName *uint16 - PvReserved unsafe.Pointer - DwReserved uint32 - FlagsEx uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb773205.aspx -type BROWSEINFO struct { - Owner HWND - Root *uint16 - DisplayName *uint16 - Title *uint16 - Flags uint32 - CallbackFunc uintptr - LParam uintptr - Image int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa373931.aspx -type GUID struct { - Data1 uint32 - Data2 uint16 - Data3 uint16 - Data4 [8]byte -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms221627.aspx -type VARIANT struct { - VT uint16 // 2 - WReserved1 uint16 // 4 - WReserved2 uint16 // 6 - WReserved3 uint16 // 8 - Val int64 // 16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms221416.aspx -type DISPPARAMS struct { - Rgvarg uintptr - RgdispidNamedArgs uintptr - CArgs uint32 - CNamedArgs uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms221133.aspx -type EXCEPINFO struct { - WCode uint16 - WReserved uint16 - BstrSource *uint16 - BstrDescription *uint16 - BstrHelpFile *uint16 - DwHelpContext uint32 - PvReserved uintptr - PfnDeferredFillIn uintptr - Scode int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd145035.aspx -type LOGBRUSH struct { - LbStyle uint32 - LbColor COLORREF - LbHatch uintptr -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183565.aspx -type DEVMODE struct { - DmDeviceName [CCHDEVICENAME]uint16 - DmSpecVersion uint16 - DmDriverVersion uint16 - DmSize uint16 - DmDriverExtra uint16 - DmFields uint32 - DmOrientation int16 - DmPaperSize int16 - DmPaperLength int16 - DmPaperWidth int16 - DmScale int16 - DmCopies int16 - DmDefaultSource int16 - DmPrintQuality int16 - DmColor int16 - DmDuplex int16 - DmYResolution int16 - DmTTOption int16 - DmCollate int16 - DmFormName [CCHFORMNAME]uint16 - DmLogPixels uint16 - DmBitsPerPel uint32 - DmPelsWidth uint32 - DmPelsHeight uint32 - DmDisplayFlags uint32 - DmDisplayFrequency uint32 - DmICMMethod uint32 - DmICMIntent uint32 - DmMediaType uint32 - DmDitherType uint32 - DmReserved1 uint32 - DmReserved2 uint32 - DmPanningWidth uint32 - DmPanningHeight uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183376.aspx -type BITMAPINFOHEADER struct { - BiSize uint32 - BiWidth int32 - BiHeight int32 - BiPlanes uint16 - BiBitCount uint16 - BiCompression uint32 - BiSizeImage uint32 - BiXPelsPerMeter int32 - BiYPelsPerMeter int32 - BiClrUsed uint32 - BiClrImportant uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd162938.aspx -type RGBQUAD struct { - RgbBlue byte - RgbGreen byte - RgbRed byte - RgbReserved byte -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183375.aspx -type BITMAPINFO struct { - BmiHeader BITMAPINFOHEADER - BmiColors *RGBQUAD -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183371.aspx -type BITMAP struct { - BmType int32 - BmWidth int32 - BmHeight int32 - BmWidthBytes int32 - BmPlanes uint16 - BmBitsPixel uint16 - BmBits unsafe.Pointer -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183567.aspx -type DIBSECTION struct { - DsBm BITMAP - DsBmih BITMAPINFOHEADER - DsBitfields [3]uint32 - DshSection HANDLE - DsOffset uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd162607.aspx -type ENHMETAHEADER struct { - IType uint32 - NSize uint32 - RclBounds RECT - RclFrame RECT - DSignature uint32 - NVersion uint32 - NBytes uint32 - NRecords uint32 - NHandles uint16 - SReserved uint16 - NDescription uint32 - OffDescription uint32 - NPalEntries uint32 - SzlDevice SIZE - SzlMillimeters SIZE - CbPixelFormat uint32 - OffPixelFormat uint32 - BOpenGL uint32 - SzlMicrometers SIZE -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd145106.aspx -type SIZE struct { - CX, CY int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd145132.aspx -type TEXTMETRIC struct { - TmHeight int32 - TmAscent int32 - TmDescent int32 - TmInternalLeading int32 - TmExternalLeading int32 - TmAveCharWidth int32 - TmMaxCharWidth int32 - TmWeight int32 - TmOverhang int32 - TmDigitizedAspectX int32 - TmDigitizedAspectY int32 - TmFirstChar uint16 - TmLastChar uint16 - TmDefaultChar uint16 - TmBreakChar uint16 - TmItalic byte - TmUnderlined byte - TmStruckOut byte - TmPitchAndFamily byte - TmCharSet byte -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd183574.aspx -type DOCINFO struct { - CbSize int32 - LpszDocName *uint16 - LpszOutput *uint16 - LpszDatatype *uint16 - FwType uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb775514.aspx -type NMHDR struct { - HwndFrom HWND - IdFrom uintptr - Code uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb774743.aspx -type LVCOLUMN struct { - Mask uint32 - Fmt int32 - Cx int32 - PszText *uint16 - CchTextMax int32 - ISubItem int32 - IImage int32 - IOrder int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb774760.aspx -type LVITEM struct { - Mask uint32 - IItem int32 - ISubItem int32 - State uint32 - StateMask uint32 - PszText *uint16 - CchTextMax int32 - IImage int32 - LParam uintptr - IIndent int32 - IGroupId int32 - CColumns uint32 - PuColumns uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb774754.aspx -type LVHITTESTINFO struct { - Pt POINT - Flags uint32 - IItem int32 - ISubItem int32 - IGroup int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb774771.aspx -type NMITEMACTIVATE struct { - Hdr NMHDR - IItem int32 - ISubItem int32 - UNewState uint32 - UOldState uint32 - UChanged uint32 - PtAction POINT - LParam uintptr - UKeyFlags uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb774773.aspx -type NMLISTVIEW struct { - Hdr NMHDR - IItem int32 - ISubItem int32 - UNewState uint32 - UOldState uint32 - UChanged uint32 - PtAction POINT - LParam uintptr -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb774780.aspx -type NMLVDISPINFO struct { - Hdr NMHDR - Item LVITEM -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb775507.aspx -type INITCOMMONCONTROLSEX struct { - DwSize uint32 - DwICC uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb760256.aspx -type TOOLINFO struct { - CbSize uint32 - UFlags uint32 - Hwnd HWND - UId uintptr - Rect RECT - Hinst HINSTANCE - LpszText *uint16 - LParam uintptr - LpReserved unsafe.Pointer -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms645604.aspx -type TRACKMOUSEEVENT struct { - CbSize uint32 - DwFlags uint32 - HwndTrack HWND - DwHoverTime uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms534067.aspx -type GdiplusStartupInput struct { - GdiplusVersion uint32 - DebugEventCallback uintptr - SuppressBackgroundThread BOOL - SuppressExternalCodecs BOOL -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms534068.aspx -type GdiplusStartupOutput struct { - NotificationHook uintptr - NotificationUnhook uintptr -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd162768.aspx -type PAINTSTRUCT struct { - Hdc HDC - FErase BOOL - RcPaint RECT - FRestore BOOL - FIncUpdate BOOL - RgbReserved [32]byte -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa363646.aspx -type EVENTLOGRECORD struct { - Length uint32 - Reserved uint32 - RecordNumber uint32 - TimeGenerated uint32 - TimeWritten uint32 - EventID uint32 - EventType uint16 - NumStrings uint16 - EventCategory uint16 - ReservedFlags uint16 - ClosingRecordNumber uint32 - StringOffset uint32 - UserSidLength uint32 - UserSidOffset uint32 - DataLength uint32 - DataOffset uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms685996.aspx -type SERVICE_STATUS struct { - DwServiceType uint32 - DwCurrentState uint32 - DwControlsAccepted uint32 - DwWin32ExitCode uint32 - DwServiceSpecificExitCode uint32 - DwCheckPoint uint32 - DwWaitHint uint32 -} -type PROCESSENTRY32 struct { - DwSize uint32 - CntUsage uint32 - Th32ProcessID uint32 - Th32DefaultHeapID uintptr - Th32ModuleID uint32 - CntThreads uint32 - Th32ParentProcessID uint32 - PcPriClassBase int32 - DwFlags uint32 - SzExeFile [MAX_PATH]uint16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms684225.aspx -type MODULEENTRY32 struct { - Size uint32 - ModuleID uint32 - ProcessID uint32 - GlblcntUsage uint32 - ProccntUsage uint32 - ModBaseAddr *uint8 - ModBaseSize uint32 - HModule HMODULE - SzModule [MAX_MODULE_NAME32 + 1]uint16 - SzExePath [MAX_PATH]uint16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms724284.aspx -type FILETIME struct { - DwLowDateTime uint32 - DwHighDateTime uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms682119.aspx -type COORD struct { - X, Y int16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms686311.aspx -type SMALL_RECT struct { - Left, Top, Right, Bottom int16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms682093.aspx -type CONSOLE_SCREEN_BUFFER_INFO struct { - DwSize COORD - DwCursorPosition COORD - WAttributes uint16 - SrWindow SMALL_RECT - DwMaximumWindowSize COORD -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/bb773244.aspx -type MARGINS struct { - CxLeftWidth, CxRightWidth, CyTopHeight, CyBottomHeight int32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa969500.aspx -type DWM_BLURBEHIND struct { - DwFlags uint32 - fEnable BOOL - hRgnBlur HRGN - fTransitionOnMaximized BOOL -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa969501.aspx -type DWM_PRESENT_PARAMETERS struct { - cbSize uint32 - fQueue BOOL - cRefreshStart DWM_FRAME_COUNT - cBuffer uint32 - fUseSourceRate BOOL - rateSource UNSIGNED_RATIO - cRefreshesPerFrame uint32 - eSampling DWM_SOURCE_FRAME_SAMPLING -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa969502.aspx -type DWM_THUMBNAIL_PROPERTIES struct { - dwFlags uint32 - rcDestination RECT - rcSource RECT - opacity byte - fVisible BOOL - fSourceClientAreaOnly BOOL -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa969503.aspx -type DWM_TIMING_INFO struct { - cbSize uint32 - rateRefresh UNSIGNED_RATIO - qpcRefreshPeriod QPC_TIME - rateCompose UNSIGNED_RATIO - qpcVBlank QPC_TIME - cRefresh DWM_FRAME_COUNT - cDXRefresh uint32 - qpcCompose QPC_TIME - cFrame DWM_FRAME_COUNT - cDXPresent uint32 - cRefreshFrame DWM_FRAME_COUNT - cFrameSubmitted DWM_FRAME_COUNT - cDXPresentSubmitted uint32 - cFrameConfirmed DWM_FRAME_COUNT - cDXPresentConfirmed uint32 - cRefreshConfirmed DWM_FRAME_COUNT - cDXRefreshConfirmed uint32 - cFramesLate DWM_FRAME_COUNT - cFramesOutstanding uint32 - cFrameDisplayed DWM_FRAME_COUNT - qpcFrameDisplayed QPC_TIME - cRefreshFrameDisplayed DWM_FRAME_COUNT - cFrameComplete DWM_FRAME_COUNT - qpcFrameComplete QPC_TIME - cFramePending DWM_FRAME_COUNT - qpcFramePending QPC_TIME - cFramesDisplayed DWM_FRAME_COUNT - cFramesComplete DWM_FRAME_COUNT - cFramesPending DWM_FRAME_COUNT - cFramesAvailable DWM_FRAME_COUNT - cFramesDropped DWM_FRAME_COUNT - cFramesMissed DWM_FRAME_COUNT - cRefreshNextDisplayed DWM_FRAME_COUNT - cRefreshNextPresented DWM_FRAME_COUNT - cRefreshesDisplayed DWM_FRAME_COUNT - cRefreshesPresented DWM_FRAME_COUNT - cRefreshStarted DWM_FRAME_COUNT - cPixelsReceived uint64 - cPixelsDrawn uint64 - cBuffersEmpty DWM_FRAME_COUNT -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd389402.aspx -type MilMatrix3x2D struct { - S_11, S_12, S_21, S_22 float64 - DX, DY float64 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/aa969505.aspx -type UNSIGNED_RATIO struct { - uiNumerator uint32 - uiDenominator uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms632603.aspx -type CREATESTRUCT struct { - CreateParams uintptr - Instance HINSTANCE - Menu HMENU - Parent HWND - Cy, Cx int32 - Y, X int32 - Style int32 - Name *uint16 - Class *uint16 - dwExStyle uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd145065.aspx -type MONITORINFO struct { - CbSize uint32 - RcMonitor RECT - RcWork RECT - DwFlags uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd145066.aspx -type MONITORINFOEX struct { - MONITORINFO - SzDevice [CCHDEVICENAME]uint16 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/dd368826.aspx -type PIXELFORMATDESCRIPTOR struct { - Size uint16 - Version uint16 - DwFlags uint32 - IPixelType byte - ColorBits byte - RedBits, RedShift byte - GreenBits, GreenShift byte - BlueBits, BlueShift byte - AlphaBits, AlphaShift byte - AccumBits byte - AccumRedBits byte - AccumGreenBits byte - AccumBlueBits byte - AccumAlphaBits byte - DepthBits, StencilBits byte - AuxBuffers byte - ILayerType byte - Reserved byte - DwLayerMask uint32 - DwVisibleMask uint32 - DwDamageMask uint32 -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx -type INPUT struct { - Type uint32 - Mi MOUSEINPUT - Ki KEYBDINPUT - Hi HARDWAREINPUT -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646273(v=vs.85).aspx -type MOUSEINPUT struct { - Dx int32 - Dy int32 - MouseData uint32 - DwFlags uint32 - Time uint32 - DwExtraInfo uintptr -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646271(v=vs.85).aspx -type KEYBDINPUT struct { - WVk uint16 - WScan uint16 - DwFlags uint32 - Time uint32 - DwExtraInfo uintptr -} - -// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646269(v=vs.85).aspx -type HARDWAREINPUT struct { - UMsg uint32 - WParamL uint16 - WParamH uint16 -} - -type KbdInput struct { - typ uint32 - ki KEYBDINPUT -} - -type MouseInput struct { - typ uint32 - mi MOUSEINPUT -} - -type HardwareInput struct { - typ uint32 - hi HARDWAREINPUT -} diff --git a/vendor/github.com/shirou/w32/user32.go b/vendor/github.com/shirou/w32/user32.go deleted file mode 100644 index 6aa7cd705..000000000 --- a/vendor/github.com/shirou/w32/user32.go +++ /dev/null @@ -1,950 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "fmt" - "syscall" - "unsafe" -) - -var ( - moduser32 = syscall.NewLazyDLL("user32.dll") - - procRegisterClassEx = moduser32.NewProc("RegisterClassExW") - procLoadIcon = moduser32.NewProc("LoadIconW") - procLoadCursor = moduser32.NewProc("LoadCursorW") - procShowWindow = moduser32.NewProc("ShowWindow") - procUpdateWindow = moduser32.NewProc("UpdateWindow") - procCreateWindowEx = moduser32.NewProc("CreateWindowExW") - procAdjustWindowRect = moduser32.NewProc("AdjustWindowRect") - procAdjustWindowRectEx = moduser32.NewProc("AdjustWindowRectEx") - procDestroyWindow = moduser32.NewProc("DestroyWindow") - procDefWindowProc = moduser32.NewProc("DefWindowProcW") - procDefDlgProc = moduser32.NewProc("DefDlgProcW") - procPostQuitMessage = moduser32.NewProc("PostQuitMessage") - procGetMessage = moduser32.NewProc("GetMessageW") - procTranslateMessage = moduser32.NewProc("TranslateMessage") - procDispatchMessage = moduser32.NewProc("DispatchMessageW") - procSendMessage = moduser32.NewProc("SendMessageW") - procPostMessage = moduser32.NewProc("PostMessageW") - procWaitMessage = moduser32.NewProc("WaitMessage") - procSetWindowText = moduser32.NewProc("SetWindowTextW") - procGetWindowTextLength = moduser32.NewProc("GetWindowTextLengthW") - procGetWindowText = moduser32.NewProc("GetWindowTextW") - procGetWindowRect = moduser32.NewProc("GetWindowRect") - procMoveWindow = moduser32.NewProc("MoveWindow") - procScreenToClient = moduser32.NewProc("ScreenToClient") - procCallWindowProc = moduser32.NewProc("CallWindowProcW") - procSetWindowLong = moduser32.NewProc("SetWindowLongW") - procSetWindowLongPtr = moduser32.NewProc("SetWindowLongW") - procGetWindowLong = moduser32.NewProc("GetWindowLongW") - procGetWindowLongPtr = moduser32.NewProc("GetWindowLongW") - procEnableWindow = moduser32.NewProc("EnableWindow") - procIsWindowEnabled = moduser32.NewProc("IsWindowEnabled") - procIsWindowVisible = moduser32.NewProc("IsWindowVisible") - procSetFocus = moduser32.NewProc("SetFocus") - procInvalidateRect = moduser32.NewProc("InvalidateRect") - procGetClientRect = moduser32.NewProc("GetClientRect") - procGetDC = moduser32.NewProc("GetDC") - procReleaseDC = moduser32.NewProc("ReleaseDC") - procSetCapture = moduser32.NewProc("SetCapture") - procReleaseCapture = moduser32.NewProc("ReleaseCapture") - procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") - procMessageBox = moduser32.NewProc("MessageBoxW") - procGetSystemMetrics = moduser32.NewProc("GetSystemMetrics") - procCopyRect = moduser32.NewProc("CopyRect") - procEqualRect = moduser32.NewProc("EqualRect") - procInflateRect = moduser32.NewProc("InflateRect") - procIntersectRect = moduser32.NewProc("IntersectRect") - procIsRectEmpty = moduser32.NewProc("IsRectEmpty") - procOffsetRect = moduser32.NewProc("OffsetRect") - procPtInRect = moduser32.NewProc("PtInRect") - procSetRect = moduser32.NewProc("SetRect") - procSetRectEmpty = moduser32.NewProc("SetRectEmpty") - procSubtractRect = moduser32.NewProc("SubtractRect") - procUnionRect = moduser32.NewProc("UnionRect") - procCreateDialogParam = moduser32.NewProc("CreateDialogParamW") - procDialogBoxParam = moduser32.NewProc("DialogBoxParamW") - procGetDlgItem = moduser32.NewProc("GetDlgItem") - procDrawIcon = moduser32.NewProc("DrawIcon") - procClientToScreen = moduser32.NewProc("ClientToScreen") - procIsDialogMessage = moduser32.NewProc("IsDialogMessageW") - procIsWindow = moduser32.NewProc("IsWindow") - procEndDialog = moduser32.NewProc("EndDialog") - procPeekMessage = moduser32.NewProc("PeekMessageW") - procTranslateAccelerator = moduser32.NewProc("TranslateAcceleratorW") - procSetWindowPos = moduser32.NewProc("SetWindowPos") - procFillRect = moduser32.NewProc("FillRect") - procDrawText = moduser32.NewProc("DrawTextW") - procAddClipboardFormatListener = moduser32.NewProc("AddClipboardFormatListener") - procRemoveClipboardFormatListener = moduser32.NewProc("RemoveClipboardFormatListener") - procOpenClipboard = moduser32.NewProc("OpenClipboard") - procCloseClipboard = moduser32.NewProc("CloseClipboard") - procEnumClipboardFormats = moduser32.NewProc("EnumClipboardFormats") - procGetClipboardData = moduser32.NewProc("GetClipboardData") - procSetClipboardData = moduser32.NewProc("SetClipboardData") - procEmptyClipboard = moduser32.NewProc("EmptyClipboard") - procGetClipboardFormatName = moduser32.NewProc("GetClipboardFormatNameW") - procIsClipboardFormatAvailable = moduser32.NewProc("IsClipboardFormatAvailable") - procBeginPaint = moduser32.NewProc("BeginPaint") - procEndPaint = moduser32.NewProc("EndPaint") - procGetKeyboardState = moduser32.NewProc("GetKeyboardState") - procMapVirtualKey = moduser32.NewProc("MapVirtualKeyExW") - procGetAsyncKeyState = moduser32.NewProc("GetAsyncKeyState") - procToAscii = moduser32.NewProc("ToAscii") - procSwapMouseButton = moduser32.NewProc("SwapMouseButton") - procGetCursorPos = moduser32.NewProc("GetCursorPos") - procSetCursorPos = moduser32.NewProc("SetCursorPos") - procSetCursor = moduser32.NewProc("SetCursor") - procCreateIcon = moduser32.NewProc("CreateIcon") - procDestroyIcon = moduser32.NewProc("DestroyIcon") - procMonitorFromPoint = moduser32.NewProc("MonitorFromPoint") - procMonitorFromRect = moduser32.NewProc("MonitorFromRect") - procMonitorFromWindow = moduser32.NewProc("MonitorFromWindow") - procGetMonitorInfo = moduser32.NewProc("GetMonitorInfoW") - procEnumDisplayMonitors = moduser32.NewProc("EnumDisplayMonitors") - procEnumDisplaySettingsEx = moduser32.NewProc("EnumDisplaySettingsExW") - procChangeDisplaySettingsEx = moduser32.NewProc("ChangeDisplaySettingsExW") - procSendInput = moduser32.NewProc("SendInput") -) - -func RegisterClassEx(wndClassEx *WNDCLASSEX) ATOM { - ret, _, _ := procRegisterClassEx.Call(uintptr(unsafe.Pointer(wndClassEx))) - return ATOM(ret) -} - -func LoadIcon(instance HINSTANCE, iconName *uint16) HICON { - ret, _, _ := procLoadIcon.Call( - uintptr(instance), - uintptr(unsafe.Pointer(iconName))) - - return HICON(ret) - -} - -func LoadCursor(instance HINSTANCE, cursorName *uint16) HCURSOR { - ret, _, _ := procLoadCursor.Call( - uintptr(instance), - uintptr(unsafe.Pointer(cursorName))) - - return HCURSOR(ret) - -} - -func ShowWindow(hwnd HWND, cmdshow int) bool { - ret, _, _ := procShowWindow.Call( - uintptr(hwnd), - uintptr(cmdshow)) - - return ret != 0 - -} - -func UpdateWindow(hwnd HWND) bool { - ret, _, _ := procUpdateWindow.Call( - uintptr(hwnd)) - return ret != 0 -} - -func CreateWindowEx(exStyle uint, className, windowName *uint16, - style uint, x, y, width, height int, parent HWND, menu HMENU, - instance HINSTANCE, param unsafe.Pointer) HWND { - ret, _, _ := procCreateWindowEx.Call( - uintptr(exStyle), - uintptr(unsafe.Pointer(className)), - uintptr(unsafe.Pointer(windowName)), - uintptr(style), - uintptr(x), - uintptr(y), - uintptr(width), - uintptr(height), - uintptr(parent), - uintptr(menu), - uintptr(instance), - uintptr(param)) - - return HWND(ret) -} - -func AdjustWindowRectEx(rect *RECT, style uint, menu bool, exStyle uint) bool { - ret, _, _ := procAdjustWindowRectEx.Call( - uintptr(unsafe.Pointer(rect)), - uintptr(style), - uintptr(BoolToBOOL(menu)), - uintptr(exStyle)) - - return ret != 0 -} - -func AdjustWindowRect(rect *RECT, style uint, menu bool) bool { - ret, _, _ := procAdjustWindowRect.Call( - uintptr(unsafe.Pointer(rect)), - uintptr(style), - uintptr(BoolToBOOL(menu))) - - return ret != 0 -} - -func DestroyWindow(hwnd HWND) bool { - ret, _, _ := procDestroyWindow.Call( - uintptr(hwnd)) - - return ret != 0 -} - -func DefWindowProc(hwnd HWND, msg uint32, wParam, lParam uintptr) uintptr { - ret, _, _ := procDefWindowProc.Call( - uintptr(hwnd), - uintptr(msg), - wParam, - lParam) - - return ret -} - -func DefDlgProc(hwnd HWND, msg uint32, wParam, lParam uintptr) uintptr { - ret, _, _ := procDefDlgProc.Call( - uintptr(hwnd), - uintptr(msg), - wParam, - lParam) - - return ret -} - -func PostQuitMessage(exitCode int) { - procPostQuitMessage.Call( - uintptr(exitCode)) -} - -func GetMessage(msg *MSG, hwnd HWND, msgFilterMin, msgFilterMax uint32) int { - ret, _, _ := procGetMessage.Call( - uintptr(unsafe.Pointer(msg)), - uintptr(hwnd), - uintptr(msgFilterMin), - uintptr(msgFilterMax)) - - return int(ret) -} - -func TranslateMessage(msg *MSG) bool { - ret, _, _ := procTranslateMessage.Call( - uintptr(unsafe.Pointer(msg))) - - return ret != 0 - -} - -func DispatchMessage(msg *MSG) uintptr { - ret, _, _ := procDispatchMessage.Call( - uintptr(unsafe.Pointer(msg))) - - return ret - -} - -func SendMessage(hwnd HWND, msg uint32, wParam, lParam uintptr) uintptr { - ret, _, _ := procSendMessage.Call( - uintptr(hwnd), - uintptr(msg), - wParam, - lParam) - - return ret -} - -func PostMessage(hwnd HWND, msg uint32, wParam, lParam uintptr) bool { - ret, _, _ := procPostMessage.Call( - uintptr(hwnd), - uintptr(msg), - wParam, - lParam) - - return ret != 0 -} - -func WaitMessage() bool { - ret, _, _ := procWaitMessage.Call() - return ret != 0 -} - -func SetWindowText(hwnd HWND, text string) { - procSetWindowText.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text)))) -} - -func GetWindowTextLength(hwnd HWND) int { - ret, _, _ := procGetWindowTextLength.Call( - uintptr(hwnd)) - - return int(ret) -} - -func GetWindowText(hwnd HWND) string { - textLen := GetWindowTextLength(hwnd) + 1 - - buf := make([]uint16, textLen) - procGetWindowText.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(&buf[0])), - uintptr(textLen)) - - return syscall.UTF16ToString(buf) -} - -func GetWindowRect(hwnd HWND) *RECT { - var rect RECT - procGetWindowRect.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(&rect))) - - return &rect -} - -func MoveWindow(hwnd HWND, x, y, width, height int, repaint bool) bool { - ret, _, _ := procMoveWindow.Call( - uintptr(hwnd), - uintptr(x), - uintptr(y), - uintptr(width), - uintptr(height), - uintptr(BoolToBOOL(repaint))) - - return ret != 0 - -} - -func ScreenToClient(hwnd HWND, x, y int) (X, Y int, ok bool) { - pt := POINT{X: int32(x), Y: int32(y)} - ret, _, _ := procScreenToClient.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(&pt))) - - return int(pt.X), int(pt.Y), ret != 0 -} - -func CallWindowProc(preWndProc uintptr, hwnd HWND, msg uint32, wParam, lParam uintptr) uintptr { - ret, _, _ := procCallWindowProc.Call( - preWndProc, - uintptr(hwnd), - uintptr(msg), - wParam, - lParam) - - return ret -} - -func SetWindowLong(hwnd HWND, index int, value uint32) uint32 { - ret, _, _ := procSetWindowLong.Call( - uintptr(hwnd), - uintptr(index), - uintptr(value)) - - return uint32(ret) -} - -func SetWindowLongPtr(hwnd HWND, index int, value uintptr) uintptr { - ret, _, _ := procSetWindowLongPtr.Call( - uintptr(hwnd), - uintptr(index), - value) - - return ret -} - -func GetWindowLong(hwnd HWND, index int) int32 { - ret, _, _ := procGetWindowLong.Call( - uintptr(hwnd), - uintptr(index)) - - return int32(ret) -} - -func GetWindowLongPtr(hwnd HWND, index int) uintptr { - ret, _, _ := procGetWindowLongPtr.Call( - uintptr(hwnd), - uintptr(index)) - - return ret -} - -func EnableWindow(hwnd HWND, b bool) bool { - ret, _, _ := procEnableWindow.Call( - uintptr(hwnd), - uintptr(BoolToBOOL(b))) - return ret != 0 -} - -func IsWindowEnabled(hwnd HWND) bool { - ret, _, _ := procIsWindowEnabled.Call( - uintptr(hwnd)) - - return ret != 0 -} - -func IsWindowVisible(hwnd HWND) bool { - ret, _, _ := procIsWindowVisible.Call( - uintptr(hwnd)) - - return ret != 0 -} - -func SetFocus(hwnd HWND) HWND { - ret, _, _ := procSetFocus.Call( - uintptr(hwnd)) - - return HWND(ret) -} - -func InvalidateRect(hwnd HWND, rect *RECT, erase bool) bool { - ret, _, _ := procInvalidateRect.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(rect)), - uintptr(BoolToBOOL(erase))) - - return ret != 0 -} - -func GetClientRect(hwnd HWND) *RECT { - var rect RECT - ret, _, _ := procGetClientRect.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(&rect))) - - if ret == 0 { - panic(fmt.Sprintf("GetClientRect(%d) failed", hwnd)) - } - - return &rect -} - -func GetDC(hwnd HWND) HDC { - ret, _, _ := procGetDC.Call( - uintptr(hwnd)) - - return HDC(ret) -} - -func ReleaseDC(hwnd HWND, hDC HDC) bool { - ret, _, _ := procReleaseDC.Call( - uintptr(hwnd), - uintptr(hDC)) - - return ret != 0 -} - -func SetCapture(hwnd HWND) HWND { - ret, _, _ := procSetCapture.Call( - uintptr(hwnd)) - - return HWND(ret) -} - -func ReleaseCapture() bool { - ret, _, _ := procReleaseCapture.Call() - - return ret != 0 -} - -func GetWindowThreadProcessId(hwnd HWND) (HANDLE, int) { - var processId int - ret, _, _ := procGetWindowThreadProcessId.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(&processId))) - - return HANDLE(ret), processId -} - -func MessageBox(hwnd HWND, title, caption string, flags uint) int { - ret, _, _ := procMessageBox.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(title))), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(caption))), - uintptr(flags)) - - return int(ret) -} - -func GetSystemMetrics(index int) int { - ret, _, _ := procGetSystemMetrics.Call( - uintptr(index)) - - return int(ret) -} - -func CopyRect(dst, src *RECT) bool { - ret, _, _ := procCopyRect.Call( - uintptr(unsafe.Pointer(dst)), - uintptr(unsafe.Pointer(src))) - - return ret != 0 -} - -func EqualRect(rect1, rect2 *RECT) bool { - ret, _, _ := procEqualRect.Call( - uintptr(unsafe.Pointer(rect1)), - uintptr(unsafe.Pointer(rect2))) - - return ret != 0 -} - -func InflateRect(rect *RECT, dx, dy int) bool { - ret, _, _ := procInflateRect.Call( - uintptr(unsafe.Pointer(rect)), - uintptr(dx), - uintptr(dy)) - - return ret != 0 -} - -func IntersectRect(dst, src1, src2 *RECT) bool { - ret, _, _ := procIntersectRect.Call( - uintptr(unsafe.Pointer(dst)), - uintptr(unsafe.Pointer(src1)), - uintptr(unsafe.Pointer(src2))) - - return ret != 0 -} - -func IsRectEmpty(rect *RECT) bool { - ret, _, _ := procIsRectEmpty.Call( - uintptr(unsafe.Pointer(rect))) - - return ret != 0 -} - -func OffsetRect(rect *RECT, dx, dy int) bool { - ret, _, _ := procOffsetRect.Call( - uintptr(unsafe.Pointer(rect)), - uintptr(dx), - uintptr(dy)) - - return ret != 0 -} - -func PtInRect(rect *RECT, x, y int) bool { - pt := POINT{X: int32(x), Y: int32(y)} - ret, _, _ := procPtInRect.Call( - uintptr(unsafe.Pointer(rect)), - uintptr(unsafe.Pointer(&pt))) - - return ret != 0 -} - -func SetRect(rect *RECT, left, top, right, bottom int) bool { - ret, _, _ := procSetRect.Call( - uintptr(unsafe.Pointer(rect)), - uintptr(left), - uintptr(top), - uintptr(right), - uintptr(bottom)) - - return ret != 0 -} - -func SetRectEmpty(rect *RECT) bool { - ret, _, _ := procSetRectEmpty.Call( - uintptr(unsafe.Pointer(rect))) - - return ret != 0 -} - -func SubtractRect(dst, src1, src2 *RECT) bool { - ret, _, _ := procSubtractRect.Call( - uintptr(unsafe.Pointer(dst)), - uintptr(unsafe.Pointer(src1)), - uintptr(unsafe.Pointer(src2))) - - return ret != 0 -} - -func UnionRect(dst, src1, src2 *RECT) bool { - ret, _, _ := procUnionRect.Call( - uintptr(unsafe.Pointer(dst)), - uintptr(unsafe.Pointer(src1)), - uintptr(unsafe.Pointer(src2))) - - return ret != 0 -} - -func CreateDialog(hInstance HINSTANCE, lpTemplate *uint16, hWndParent HWND, lpDialogProc uintptr) HWND { - ret, _, _ := procCreateDialogParam.Call( - uintptr(hInstance), - uintptr(unsafe.Pointer(lpTemplate)), - uintptr(hWndParent), - lpDialogProc, - 0) - - return HWND(ret) -} - -func DialogBox(hInstance HINSTANCE, lpTemplateName *uint16, hWndParent HWND, lpDialogProc uintptr) int { - ret, _, _ := procDialogBoxParam.Call( - uintptr(hInstance), - uintptr(unsafe.Pointer(lpTemplateName)), - uintptr(hWndParent), - lpDialogProc, - 0) - - return int(ret) -} - -func GetDlgItem(hDlg HWND, nIDDlgItem int) HWND { - ret, _, _ := procGetDlgItem.Call( - uintptr(unsafe.Pointer(hDlg)), - uintptr(nIDDlgItem)) - - return HWND(ret) -} - -func DrawIcon(hDC HDC, x, y int, hIcon HICON) bool { - ret, _, _ := procDrawIcon.Call( - uintptr(unsafe.Pointer(hDC)), - uintptr(x), - uintptr(y), - uintptr(unsafe.Pointer(hIcon))) - - return ret != 0 -} - -func ClientToScreen(hwnd HWND, x, y int) (int, int) { - pt := POINT{X: int32(x), Y: int32(y)} - - procClientToScreen.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(&pt))) - - return int(pt.X), int(pt.Y) -} - -func IsDialogMessage(hwnd HWND, msg *MSG) bool { - ret, _, _ := procIsDialogMessage.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(msg))) - - return ret != 0 -} - -func IsWindow(hwnd HWND) bool { - ret, _, _ := procIsWindow.Call( - uintptr(hwnd)) - - return ret != 0 -} - -func EndDialog(hwnd HWND, nResult uintptr) bool { - ret, _, _ := procEndDialog.Call( - uintptr(hwnd), - nResult) - - return ret != 0 -} - -func PeekMessage(lpMsg *MSG, hwnd HWND, wMsgFilterMin, wMsgFilterMax, wRemoveMsg uint32) bool { - ret, _, _ := procPeekMessage.Call( - uintptr(unsafe.Pointer(lpMsg)), - uintptr(hwnd), - uintptr(wMsgFilterMin), - uintptr(wMsgFilterMax), - uintptr(wRemoveMsg)) - - return ret != 0 -} - -func TranslateAccelerator(hwnd HWND, hAccTable HACCEL, lpMsg *MSG) bool { - ret, _, _ := procTranslateMessage.Call( - uintptr(hwnd), - uintptr(hAccTable), - uintptr(unsafe.Pointer(lpMsg))) - - return ret != 0 -} - -func SetWindowPos(hwnd, hWndInsertAfter HWND, x, y, cx, cy int, uFlags uint) bool { - ret, _, _ := procSetWindowPos.Call( - uintptr(hwnd), - uintptr(hWndInsertAfter), - uintptr(x), - uintptr(y), - uintptr(cx), - uintptr(cy), - uintptr(uFlags)) - - return ret != 0 -} - -func FillRect(hDC HDC, lprc *RECT, hbr HBRUSH) bool { - ret, _, _ := procFillRect.Call( - uintptr(hDC), - uintptr(unsafe.Pointer(lprc)), - uintptr(hbr)) - - return ret != 0 -} - -func DrawText(hDC HDC, text string, uCount int, lpRect *RECT, uFormat uint) int { - ret, _, _ := procDrawText.Call( - uintptr(hDC), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text))), - uintptr(uCount), - uintptr(unsafe.Pointer(lpRect)), - uintptr(uFormat)) - - return int(ret) -} - -func AddClipboardFormatListener(hwnd HWND) bool { - ret, _, _ := procAddClipboardFormatListener.Call( - uintptr(hwnd)) - return ret != 0 -} - -func RemoveClipboardFormatListener(hwnd HWND) bool { - ret, _, _ := procRemoveClipboardFormatListener.Call( - uintptr(hwnd)) - return ret != 0 -} - -func OpenClipboard(hWndNewOwner HWND) bool { - ret, _, _ := procOpenClipboard.Call( - uintptr(hWndNewOwner)) - return ret != 0 -} - -func CloseClipboard() bool { - ret, _, _ := procCloseClipboard.Call() - return ret != 0 -} - -func EnumClipboardFormats(format uint) uint { - ret, _, _ := procEnumClipboardFormats.Call( - uintptr(format)) - return uint(ret) -} - -func GetClipboardData(uFormat uint) HANDLE { - ret, _, _ := procGetClipboardData.Call( - uintptr(uFormat)) - return HANDLE(ret) -} - -func SetClipboardData(uFormat uint, hMem HANDLE) HANDLE { - ret, _, _ := procSetClipboardData.Call( - uintptr(uFormat), - uintptr(hMem)) - return HANDLE(ret) -} - -func EmptyClipboard() bool { - ret, _, _ := procEmptyClipboard.Call() - return ret != 0 -} - -func GetClipboardFormatName(format uint) (string, bool) { - cchMaxCount := 255 - buf := make([]uint16, cchMaxCount) - ret, _, _ := procGetClipboardFormatName.Call( - uintptr(format), - uintptr(unsafe.Pointer(&buf[0])), - uintptr(cchMaxCount)) - - if ret > 0 { - return syscall.UTF16ToString(buf), true - } - - return "Requested format does not exist or is predefined", false -} - -func IsClipboardFormatAvailable(format uint) bool { - ret, _, _ := procIsClipboardFormatAvailable.Call(uintptr(format)) - return ret != 0 -} - -func BeginPaint(hwnd HWND, paint *PAINTSTRUCT) HDC { - ret, _, _ := procBeginPaint.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(paint))) - return HDC(ret) -} - -func EndPaint(hwnd HWND, paint *PAINTSTRUCT) { - procBeginPaint.Call( - uintptr(hwnd), - uintptr(unsafe.Pointer(paint))) -} - -func GetKeyboardState(lpKeyState *[]byte) bool { - ret, _, _ := procGetKeyboardState.Call( - uintptr(unsafe.Pointer(&(*lpKeyState)[0]))) - return ret != 0 -} - -func MapVirtualKeyEx(uCode, uMapType uint, dwhkl HKL) uint { - ret, _, _ := procMapVirtualKey.Call( - uintptr(uCode), - uintptr(uMapType), - uintptr(dwhkl)) - return uint(ret) -} - -func GetAsyncKeyState(vKey int) uint16 { - ret, _, _ := procGetAsyncKeyState.Call(uintptr(vKey)) - return uint16(ret) -} - -func ToAscii(uVirtKey, uScanCode uint, lpKeyState *byte, lpChar *uint16, uFlags uint) int { - ret, _, _ := procToAscii.Call( - uintptr(uVirtKey), - uintptr(uScanCode), - uintptr(unsafe.Pointer(lpKeyState)), - uintptr(unsafe.Pointer(lpChar)), - uintptr(uFlags)) - return int(ret) -} - -func SwapMouseButton(fSwap bool) bool { - ret, _, _ := procSwapMouseButton.Call( - uintptr(BoolToBOOL(fSwap))) - return ret != 0 -} - -func GetCursorPos() (x, y int, ok bool) { - pt := POINT{} - ret, _, _ := procGetCursorPos.Call(uintptr(unsafe.Pointer(&pt))) - return int(pt.X), int(pt.Y), ret != 0 -} - -func SetCursorPos(x, y int) bool { - ret, _, _ := procSetCursorPos.Call( - uintptr(x), - uintptr(y), - ) - return ret != 0 -} - -func SetCursor(cursor HCURSOR) HCURSOR { - ret, _, _ := procSetCursor.Call( - uintptr(cursor), - ) - return HCURSOR(ret) -} - -func CreateIcon(instance HINSTANCE, nWidth, nHeight int, cPlanes, cBitsPerPixel byte, ANDbits, XORbits *byte) HICON { - ret, _, _ := procCreateIcon.Call( - uintptr(instance), - uintptr(nWidth), - uintptr(nHeight), - uintptr(cPlanes), - uintptr(cBitsPerPixel), - uintptr(unsafe.Pointer(ANDbits)), - uintptr(unsafe.Pointer(XORbits)), - ) - return HICON(ret) -} - -func DestroyIcon(icon HICON) bool { - ret, _, _ := procDestroyIcon.Call( - uintptr(icon), - ) - return ret != 0 -} - -func MonitorFromPoint(x, y int, dwFlags uint32) HMONITOR { - ret, _, _ := procMonitorFromPoint.Call( - uintptr(x), - uintptr(y), - uintptr(dwFlags), - ) - return HMONITOR(ret) -} - -func MonitorFromRect(rc *RECT, dwFlags uint32) HMONITOR { - ret, _, _ := procMonitorFromRect.Call( - uintptr(unsafe.Pointer(rc)), - uintptr(dwFlags), - ) - return HMONITOR(ret) -} - -func MonitorFromWindow(hwnd HWND, dwFlags uint32) HMONITOR { - ret, _, _ := procMonitorFromWindow.Call( - uintptr(hwnd), - uintptr(dwFlags), - ) - return HMONITOR(ret) -} - -func GetMonitorInfo(hMonitor HMONITOR, lmpi *MONITORINFO) bool { - ret, _, _ := procGetMonitorInfo.Call( - uintptr(hMonitor), - uintptr(unsafe.Pointer(lmpi)), - ) - return ret != 0 -} - -func EnumDisplayMonitors(hdc HDC, clip *RECT, fnEnum, dwData uintptr) bool { - ret, _, _ := procEnumDisplayMonitors.Call( - uintptr(hdc), - uintptr(unsafe.Pointer(clip)), - fnEnum, - dwData, - ) - return ret != 0 -} - -func EnumDisplaySettingsEx(szDeviceName *uint16, iModeNum uint32, devMode *DEVMODE, dwFlags uint32) bool { - ret, _, _ := procEnumDisplaySettingsEx.Call( - uintptr(unsafe.Pointer(szDeviceName)), - uintptr(iModeNum), - uintptr(unsafe.Pointer(devMode)), - uintptr(dwFlags), - ) - return ret != 0 -} - -func ChangeDisplaySettingsEx(szDeviceName *uint16, devMode *DEVMODE, hwnd HWND, dwFlags uint32, lParam uintptr) int32 { - ret, _, _ := procChangeDisplaySettingsEx.Call( - uintptr(unsafe.Pointer(szDeviceName)), - uintptr(unsafe.Pointer(devMode)), - uintptr(hwnd), - uintptr(dwFlags), - lParam, - ) - return int32(ret) -} - -/* remove to build without cgo -func SendInput(inputs []INPUT) uint32 { - var validInputs []C.INPUT - - for _, oneInput := range inputs { - input := C.INPUT{_type: C.DWORD(oneInput.Type)} - - switch oneInput.Type { - case INPUT_MOUSE: - (*MouseInput)(unsafe.Pointer(&input)).mi = oneInput.Mi - case INPUT_KEYBOARD: - (*KbdInput)(unsafe.Pointer(&input)).ki = oneInput.Ki - case INPUT_HARDWARE: - (*HardwareInput)(unsafe.Pointer(&input)).hi = oneInput.Hi - default: - panic("unkown type") - } - - validInputs = append(validInputs, input) - } - - ret, _, _ := procSendInput.Call( - uintptr(len(validInputs)), - uintptr(unsafe.Pointer(&validInputs[0])), - uintptr(unsafe.Sizeof(C.INPUT{})), - ) - return uint32(ret) -} -*/ diff --git a/vendor/github.com/shirou/w32/utils.go b/vendor/github.com/shirou/w32/utils.go deleted file mode 100644 index 69aa31a46..000000000 --- a/vendor/github.com/shirou/w32/utils.go +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package w32 - -import ( - "syscall" - "unicode/utf16" - "unsafe" -) - -func MakeIntResource(id uint16) *uint16 { - return (*uint16)(unsafe.Pointer(uintptr(id))) -} - -func LOWORD(dw uint32) uint16 { - return uint16(dw) -} - -func HIWORD(dw uint32) uint16 { - return uint16(dw >> 16 & 0xffff) -} - -func BoolToBOOL(value bool) BOOL { - if value { - return 1 - } - - return 0 -} - -func UTF16PtrToString(cstr *uint16) string { - if cstr != nil { - us := make([]uint16, 0, 256) - for p := uintptr(unsafe.Pointer(cstr)); ; p += 2 { - u := *(*uint16)(unsafe.Pointer(p)) - if u == 0 { - return string(utf16.Decode(us)) - } - us = append(us, u) - } - } - - return "" -} - -func ComAddRef(unknown *IUnknown) int32 { - ret, _, _ := syscall.Syscall(unknown.lpVtbl.pAddRef, 1, - uintptr(unsafe.Pointer(unknown)), - 0, - 0) - return int32(ret) -} - -func ComRelease(unknown *IUnknown) int32 { - ret, _, _ := syscall.Syscall(unknown.lpVtbl.pRelease, 1, - uintptr(unsafe.Pointer(unknown)), - 0, - 0) - return int32(ret) -} - -func ComQueryInterface(unknown *IUnknown, id *GUID) *IDispatch { - var disp *IDispatch - hr, _, _ := syscall.Syscall(unknown.lpVtbl.pQueryInterface, 3, - uintptr(unsafe.Pointer(unknown)), - uintptr(unsafe.Pointer(id)), - uintptr(unsafe.Pointer(&disp))) - if hr != 0 { - panic("Invoke QieryInterface error.") - } - return disp -} - -func ComGetIDsOfName(disp *IDispatch, names []string) []int32 { - wnames := make([]*uint16, len(names)) - dispid := make([]int32, len(names)) - for i := 0; i < len(names); i++ { - wnames[i] = syscall.StringToUTF16Ptr(names[i]) - } - hr, _, _ := syscall.Syscall6(disp.lpVtbl.pGetIDsOfNames, 6, - uintptr(unsafe.Pointer(disp)), - uintptr(unsafe.Pointer(IID_NULL)), - uintptr(unsafe.Pointer(&wnames[0])), - uintptr(len(names)), - uintptr(GetUserDefaultLCID()), - uintptr(unsafe.Pointer(&dispid[0]))) - if hr != 0 { - panic("Invoke GetIDsOfName error.") - } - return dispid -} - -func ComInvoke(disp *IDispatch, dispid int32, dispatch int16, params ...interface{}) (result *VARIANT) { - var dispparams DISPPARAMS - - if dispatch&DISPATCH_PROPERTYPUT != 0 { - dispnames := [1]int32{DISPID_PROPERTYPUT} - dispparams.RgdispidNamedArgs = uintptr(unsafe.Pointer(&dispnames[0])) - dispparams.CNamedArgs = 1 - } - var vargs []VARIANT - if len(params) > 0 { - vargs = make([]VARIANT, len(params)) - for i, v := range params { - //n := len(params)-i-1 - n := len(params) - i - 1 - VariantInit(&vargs[n]) - switch v.(type) { - case bool: - if v.(bool) { - vargs[n] = VARIANT{VT_BOOL, 0, 0, 0, 0xffff} - } else { - vargs[n] = VARIANT{VT_BOOL, 0, 0, 0, 0} - } - case *bool: - vargs[n] = VARIANT{VT_BOOL | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*bool))))} - case byte: - vargs[n] = VARIANT{VT_I1, 0, 0, 0, int64(v.(byte))} - case *byte: - vargs[n] = VARIANT{VT_I1 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*byte))))} - case int16: - vargs[n] = VARIANT{VT_I2, 0, 0, 0, int64(v.(int16))} - case *int16: - vargs[n] = VARIANT{VT_I2 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*int16))))} - case uint16: - vargs[n] = VARIANT{VT_UI2, 0, 0, 0, int64(v.(int16))} - case *uint16: - vargs[n] = VARIANT{VT_UI2 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*uint16))))} - case int, int32: - vargs[n] = VARIANT{VT_UI4, 0, 0, 0, int64(v.(int))} - case *int, *int32: - vargs[n] = VARIANT{VT_I4 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*int))))} - case uint, uint32: - vargs[n] = VARIANT{VT_UI4, 0, 0, 0, int64(v.(uint))} - case *uint, *uint32: - vargs[n] = VARIANT{VT_UI4 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*uint))))} - case int64: - vargs[n] = VARIANT{VT_I8, 0, 0, 0, v.(int64)} - case *int64: - vargs[n] = VARIANT{VT_I8 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*int64))))} - case uint64: - vargs[n] = VARIANT{VT_UI8, 0, 0, 0, int64(v.(uint64))} - case *uint64: - vargs[n] = VARIANT{VT_UI8 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*uint64))))} - case float32: - vargs[n] = VARIANT{VT_R4, 0, 0, 0, int64(v.(float32))} - case *float32: - vargs[n] = VARIANT{VT_R4 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*float32))))} - case float64: - vargs[n] = VARIANT{VT_R8, 0, 0, 0, int64(v.(float64))} - case *float64: - vargs[n] = VARIANT{VT_R8 | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*float64))))} - case string: - vargs[n] = VARIANT{VT_BSTR, 0, 0, 0, int64(uintptr(unsafe.Pointer(SysAllocString(v.(string)))))} - case *string: - vargs[n] = VARIANT{VT_BSTR | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*string))))} - case *IDispatch: - vargs[n] = VARIANT{VT_DISPATCH, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*IDispatch))))} - case **IDispatch: - vargs[n] = VARIANT{VT_DISPATCH | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(**IDispatch))))} - case nil: - vargs[n] = VARIANT{VT_NULL, 0, 0, 0, 0} - case *VARIANT: - vargs[n] = VARIANT{VT_VARIANT | VT_BYREF, 0, 0, 0, int64(uintptr(unsafe.Pointer(v.(*VARIANT))))} - default: - panic("unknown type") - } - } - dispparams.Rgvarg = uintptr(unsafe.Pointer(&vargs[0])) - dispparams.CArgs = uint32(len(params)) - } - - var ret VARIANT - var excepInfo EXCEPINFO - VariantInit(&ret) - hr, _, _ := syscall.Syscall9(disp.lpVtbl.pInvoke, 8, - uintptr(unsafe.Pointer(disp)), - uintptr(dispid), - uintptr(unsafe.Pointer(IID_NULL)), - uintptr(GetUserDefaultLCID()), - uintptr(dispatch), - uintptr(unsafe.Pointer(&dispparams)), - uintptr(unsafe.Pointer(&ret)), - uintptr(unsafe.Pointer(&excepInfo)), - 0) - if hr != 0 { - if excepInfo.BstrDescription != nil { - bs := UTF16PtrToString(excepInfo.BstrDescription) - panic(bs) - } - } - for _, varg := range vargs { - if varg.VT == VT_BSTR && varg.Val != 0 { - SysFreeString(((*int16)(unsafe.Pointer(uintptr(varg.Val))))) - } - } - result = &ret - return -} diff --git a/vendor/github.com/shirou/w32/vars.go b/vendor/github.com/shirou/w32/vars.go deleted file mode 100644 index 2dab2e396..000000000 --- a/vendor/github.com/shirou/w32/vars.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2010-2012 The W32 Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package w32 - -var ( - IID_NULL = &GUID{0x00000000, 0x0000, 0x0000, [8]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} - IID_IUnknown = &GUID{0x00000000, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}} - IID_IDispatch = &GUID{0x00020400, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}} - IID_IConnectionPointContainer = &GUID{0xB196B284, 0xBAB4, 0x101A, [8]byte{0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07}} - IID_IConnectionPoint = &GUID{0xB196B286, 0xBAB4, 0x101A, [8]byte{0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07}} -) diff --git a/vendor/modules.txt b/vendor/modules.txt index e20feaac3..3824c03df 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -552,6 +552,8 @@ github.com/mitchellh/go-testing-interface github.com/mitchellh/go-vnc # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap +# github.com/mitchellh/gox v1.0.1 +## explicit # github.com/mitchellh/iochan v1.0.0 github.com/mitchellh/iochan # github.com/mitchellh/mapstructure v1.4.0 @@ -623,16 +625,13 @@ github.com/scaleway/scaleway-sdk-go/logger github.com/scaleway/scaleway-sdk-go/namegenerator github.com/scaleway/scaleway-sdk-go/scw github.com/scaleway/scaleway-sdk-go/validation -# github.com/shirou/gopsutil v2.18.12+incompatible +# github.com/shirou/gopsutil v3.21.1+incompatible ## explicit github.com/shirou/gopsutil/cpu -github.com/shirou/gopsutil/host github.com/shirou/gopsutil/internal/common github.com/shirou/gopsutil/mem github.com/shirou/gopsutil/net github.com/shirou/gopsutil/process -# github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 -github.com/shirou/w32 # github.com/sirupsen/logrus v1.4.2 github.com/sirupsen/logrus # github.com/stretchr/testify v1.6.1 From 6ff6916429ef7860ddc96192b65e682e8cc47371 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Tue, 2 Mar 2021 12:21:45 +0100 Subject: [PATCH 055/212] Update README.md (#10710) --- README.md | 69 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index de3007a4e..9a6fa37f3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Packer [![Build Status][circleci-badge]][circleci] -[![Windows Build Status][appveyor-badge]][appveyor] +[![Discuss](https://img.shields.io/badge/discuss-packer-3d89ff?style=flat)](https://discuss.hashicorp.com/c/packer) [![PkgGoDev](https://pkg.go.dev/badge/github.com/hashicorp/packer)](https://pkg.go.dev/github.com/hashicorp/packer) [![GoReportCard][report-badge]][report] [![codecov](https://codecov.io/gh/hashicorp/packer/branch/master/graph/badge.svg)](https://codecov.io/gh/hashicorp/packer) @@ -9,15 +9,16 @@ [circleci-badge]: https://circleci.com/gh/hashicorp/packer.svg?style=svg [circleci]: https://app.circleci.com/pipelines/github/hashicorp/packer [appveyor-badge]: https://ci.appveyor.com/api/projects/status/miavlgnp989e5obc/branch/master?svg=true -[appveyor]: https://ci.appveyor.com/project/hashicorp/packer [godoc-badge]: https://godoc.org/github.com/hashicorp/packer?status.svg -[godoc]: https://godoc.org/github.com/hashicorp/packer -[report-badge]: https://goreportcard.com/badge/github.com/hashicorp/packer +[godoc]: https://godoc.org/github.com/hashicorp/packer +[report-badge]: https://goreportcard.com/badge/github.com/hashicorp/packer [report]: https://goreportcard.com/report/github.com/hashicorp/packer -* Website: https://www.packer.io -* IRC: `#packer-tool` on Freenode -* Mailing list: [Google Groups](https://groups.google.com/forum/#!forum/packer-tool) +

+ + HashiCorp Packer logo + +

Packer is a tool for building identical machine images for multiple platforms from a single source configuration. @@ -47,33 +48,43 @@ yourself](https://github.com/hashicorp/packer/blob/master/.github/CONTRIBUTING.m After Packer is installed, create your first template, which tells Packer what platforms to build images for and how you want to build them. In our -case, we'll create a simple AMI that has Redis pre-installed. Save this -file as `quick-start.json`. Export your AWS credentials as the +case, we'll create a simple AMI that has Redis pre-installed. + +Save this file as `quick-start.pkr.hcl`. Export your AWS credentials as the `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables. -```json -{ - "variables": { - "access_key": "{{env `AWS_ACCESS_KEY_ID`}}", - "secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}" - }, - "builders": [{ - "type": "amazon-ebs", - "access_key": "{{user `access_key`}}", - "secret_key": "{{user `secret_key`}}", - "region": "us-east-1", - "source_ami": "ami-af22d9b9", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer-example {{timestamp}}" - }] +```hcl +variable "access_key" { + type = string + default = "${env("AWS_ACCESS_KEY_ID")}" +} + +variable "secret_key" { + type = string + default = "${env("AWS_SECRET_ACCESS_KEY")}" +} + +locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } + +source "amazon-ebs" "quick-start" { + access_key = "${var.access_key}" + ami_name = "packer-example ${local.timestamp}" + instance_type = "t2.micro" + region = "us-east-1" + secret_key = "${var.secret_key}" + source_ami = "ami-af22d9b9" + ssh_username = "ubuntu" +} + +build { + sources = ["source.amazon-ebs.quick-start"] } ``` Next, tell Packer to build the image: ``` -$ packer build quick-start.json +$ packer build quick-start.pkr.hcl ... ``` @@ -85,11 +96,9 @@ they're run, etc., is up to you. ## Documentation -Comprehensive documentation is viewable on the Packer website: +Comprehensive documentation is viewable on the Packer website at https://www.packer.io/docs. -https://www.packer.io/docs - -## Developing Packer +## Contributing to Packer See [CONTRIBUTING.md](https://github.com/hashicorp/packer/blob/master/.github/CONTRIBUTING.md) From 447a5b0286c6ef6d7417d583d00f7aed51363f05 Mon Sep 17 00:00:00 2001 From: Kyle MacDonald Date: Wed, 3 Mar 2021 03:55:35 -0500 Subject: [PATCH 056/212] readme: add white bg to packer logo in reamde.md (#10712) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - for better legibility when displaying in github’s dark-mode --- README.md | 2 +- website/public/img/logo-packer-padded.svg | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 website/public/img/logo-packer-padded.svg diff --git a/README.md b/README.md index 9a6fa37f3..d20e35413 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@

- HashiCorp Packer logo + HashiCorp Packer logo

diff --git a/website/public/img/logo-packer-padded.svg b/website/public/img/logo-packer-padded.svg new file mode 100644 index 000000000..6230639b7 --- /dev/null +++ b/website/public/img/logo-packer-padded.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + From 16ccb8f685331285a4691f5c95e3044307f91b15 Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Wed, 3 Mar 2021 10:07:34 -0500 Subject: [PATCH 057/212] Update readme logo for matched system + github appearances (#10715) --- website/public/img/logo-packer-padded.svg | 35 ++++++++++++++++------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/website/public/img/logo-packer-padded.svg b/website/public/img/logo-packer-padded.svg index 6230639b7..cbafec1f9 100644 --- a/website/public/img/logo-packer-padded.svg +++ b/website/public/img/logo-packer-padded.svg @@ -1,14 +1,27 @@ - - - + + + - - - - - - - - + + From a906a1b4265bc181c91aa9cf88b9cd3d1d5db5c5 Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Wed, 3 Mar 2021 10:13:50 -0500 Subject: [PATCH 058/212] docs: Enable docs from remote plugin (#10656) * Add local components to build on new DocsPage functionality. * Add new nav-data format, and placeholder remote-plugins config * Bump to pre-release components and implement remote loading - Migrates /docs to new DocsPage API, and adds remote plugin loading functionality - Migrates /guides and /intro to new DocsPage API * Remove now unused JS nav config * Cut empty comment line --- website/components/dev-alert/index.js | 11 + website/components/dev-alert/style.module.css | 14 + website/components/plugin-tier-label/index.js | 22 + .../plugin-tier-label/ribbon-icon.svg | 3 + .../plugin-tier-label/style.module.css | 48 + .../components/remote-plugin-docs/server.js | 88 ++ .../utils/fetch-github-file.js | 71 + .../utils/merge-remote-plugins.js | 166 +++ website/data/docs-nav-data.json | 1224 +++++++++++++++++ website/data/docs-navigation.js | 336 ----- website/data/docs-remote-plugins.json | 1 + website/data/guides-nav-data.json | 98 ++ website/data/guides-navigation.js | 37 - website/data/intro-nav-data.json | 39 + website/data/intro-navigation.js | 41 - website/package-lock.json | 498 +++++-- website/package.json | 5 +- website/pages/docs/[[...page]].jsx | 74 +- website/pages/guides/[[...page]].jsx | 22 +- website/pages/intro/[[...page]].jsx | 22 +- website/pages/style.css | 1 - 21 files changed, 2239 insertions(+), 582 deletions(-) create mode 100644 website/components/dev-alert/index.js create mode 100644 website/components/dev-alert/style.module.css create mode 100644 website/components/plugin-tier-label/index.js create mode 100644 website/components/plugin-tier-label/ribbon-icon.svg create mode 100644 website/components/plugin-tier-label/style.module.css create mode 100644 website/components/remote-plugin-docs/server.js create mode 100644 website/components/remote-plugin-docs/utils/fetch-github-file.js create mode 100644 website/components/remote-plugin-docs/utils/merge-remote-plugins.js create mode 100644 website/data/docs-nav-data.json delete mode 100644 website/data/docs-navigation.js create mode 100644 website/data/docs-remote-plugins.json create mode 100644 website/data/guides-nav-data.json delete mode 100644 website/data/guides-navigation.js create mode 100644 website/data/intro-nav-data.json delete mode 100644 website/data/intro-navigation.js diff --git a/website/components/dev-alert/index.js b/website/components/dev-alert/index.js new file mode 100644 index 000000000..836a42d1e --- /dev/null +++ b/website/components/dev-alert/index.js @@ -0,0 +1,11 @@ +import s from './style.module.css' + +function DevAlert({ children }) { + return ( +
+
{children}
+
+ ) +} + +export default DevAlert diff --git a/website/components/dev-alert/style.module.css b/website/components/dev-alert/style.module.css new file mode 100644 index 000000000..1e58465ca --- /dev/null +++ b/website/components/dev-alert/style.module.css @@ -0,0 +1,14 @@ +.root { + border-top: 1px solid; + border-bottom: 1px solid; + border-color: var(--danger-d1); + padding: 1rem; + font-size: 1rem; + background: var(--danger-l2); + font-family: var(--font-monospace); + color: var(--danger-d1); +} + +.inner { + composes: g-grid-container from global; +} diff --git a/website/components/plugin-tier-label/index.js b/website/components/plugin-tier-label/index.js new file mode 100644 index 000000000..21c71dd02 --- /dev/null +++ b/website/components/plugin-tier-label/index.js @@ -0,0 +1,22 @@ +import React from 'react' +import InlineSvg from '@hashicorp/react-inline-svg' +import svgRibbonIcon from './ribbon-icon.svg?include' +import s from './style.module.css' + +const tierNames = { + official: 'Official', + community: 'Community', +} + +function PluginTierLabel({ tier }) { + return ( +
+ {tier === 'official' ? ( + + ) : null} + {tierNames[tier]} +
+ ) +} + +export default PluginTierLabel diff --git a/website/components/plugin-tier-label/ribbon-icon.svg b/website/components/plugin-tier-label/ribbon-icon.svg new file mode 100644 index 000000000..60fb00901 --- /dev/null +++ b/website/components/plugin-tier-label/ribbon-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/components/plugin-tier-label/style.module.css b/website/components/plugin-tier-label/style.module.css new file mode 100644 index 000000000..fe4e19381 --- /dev/null +++ b/website/components/plugin-tier-label/style.module.css @@ -0,0 +1,48 @@ +/* +Note: colours have been hard-coded +to match Terraform Registry tier labels. +*/ +.root { + --background-color: #8f96a2; + --text-color: #fff; + + align-items: center; + background: var(--background-color); + border-radius: 3px; + display: inline-flex; + margin: 40px 8px 8px 0; + padding: 1px 8px 2px 8px; + vertical-align: baseline; + + /* variations */ + &[data-tier='official'] { + --background-color: #f8e397; + --text-color: #975b06; + } + + /* subsequent page titles should get cozy, + otherwise the label doesn't look associated */ + & + h1 { + margin-top: 16px; + } +} + +.text { + /* composes */ + composes: g-type-body-small-strong from global; + + /* additional properties */ + color: var(--text-color); + line-height: 21px; +} + +.icon { + margin-right: 4px; + + & svg { + display: block; + & [fill] { + fill: var(--text-color); + } + } +} diff --git a/website/components/remote-plugin-docs/server.js b/website/components/remote-plugin-docs/server.js new file mode 100644 index 000000000..a7d699e57 --- /dev/null +++ b/website/components/remote-plugin-docs/server.js @@ -0,0 +1,88 @@ +import fs from 'fs' +import path from 'path' +import { + getNodeFromPath, + getPathsFromNavData, + validateNavData, +} from '@hashicorp/react-docs-page/server' +import renderPageMdx from '@hashicorp/react-docs-page/render-page-mdx' +import fetchGithubFile from './utils/fetch-github-file' +import mergeRemotePlugins from './utils/merge-remote-plugins' + +const IS_DEV = process.env.VERCEL_ENV !== 'production' + +async function generateStaticPaths(navDataFile, contentDir, options = {}) { + const navData = await resolveNavData(navDataFile, contentDir, options) + const paths = await getPathsFromNavData(navData) + return paths +} + +async function generateStaticProps( + navDataFile, + localContentDir, + params, + { productName, remotePluginsFile, additionalComponents } = {} +) { + const navData = await resolveNavData(navDataFile, localContentDir, { + remotePluginsFile, + }) + const pathToMatch = params.page ? params.page.join('/') : '' + const navNode = getNodeFromPath(pathToMatch, navData, localContentDir) + const { filePath, remoteFile, pluginTier } = navNode + // Fetch the MDX file content + const [err, mdxString] = filePath + ? // Read local content from the filesystem + [null, fs.readFileSync(path.join(process.cwd(), filePath), 'utf8')] + : // Fetch remote content using GitHub's API + await fetchGithubFile(remoteFile) + if (err) throw new Error(err) + // For plugin pages, prefix the MDX content with a + // label that reflects the plugin tier + // (current options are "Official" or "Community") + function mdxContentHook(mdxContent) { + if (pluginTier) { + const tierMdx = `\n\n` + mdxContent = tierMdx + mdxContent + } + return mdxContent + } + const { mdxSource, frontMatter } = await renderPageMdx(mdxString, { + additionalComponents, + productName, + mdxContentHook, + }) + // Build the currentPath from page parameters + const currentPath = !params.page ? '' : params.page.join('/') + // In development, set a flag if there is no GITHUB_API_TOKEN, + // as this means dev is seeing only local content, and we want to flag that + const isDevMissingRemotePlugins = IS_DEV && !process.env.GITHUB_API_TOKEN + return { + currentPath, + frontMatter, + isDevMissingRemotePlugins, + mdxSource, + mdxString, + navData, + navNode, + } +} + +async function resolveNavData(navDataFile, localContentDir, options = {}) { + const { remotePluginsFile } = options + // Read in files + const navDataPath = path.join(process.cwd(), navDataFile) + const navData = JSON.parse(fs.readFileSync(navDataPath, 'utf8')) + const remotePluginsPath = path.join(process.cwd(), remotePluginsFile) + const remotePlugins = JSON.parse(fs.readFileSync(remotePluginsPath, 'utf-8')) + // Resolve plugins, this yields branches with NavLeafRemote nodes + const withPlugins = await mergeRemotePlugins(remotePlugins, navData, IS_DEV) + // Resolve local filePaths for NavLeaf nodes + const withFilePaths = await validateNavData(withPlugins, localContentDir) + // Return the nav data with: + // 1. Plugins merged, transformed into navData structures with NavLeafRemote nodes + // 2. filePaths added to all local NavLeaf nodes + return withFilePaths +} + +export default { generateStaticPaths, generateStaticProps } +export { generateStaticPaths, generateStaticProps } diff --git a/website/components/remote-plugin-docs/utils/fetch-github-file.js b/website/components/remote-plugin-docs/utils/fetch-github-file.js new file mode 100644 index 000000000..e12a2738d --- /dev/null +++ b/website/components/remote-plugin-docs/utils/fetch-github-file.js @@ -0,0 +1,71 @@ +const fetch = require('isomorphic-unfetch') + +const GITHUB_API_TOKEN = process.env.GITHUB_API_TOKEN + +async function githubQuery(body, token) { + const result = await fetch('https://api.github.com/graphql', { + method: 'POST', + headers: { + Authorization: `bearer ${token}`, + ContentType: 'application/json', + }, + body: JSON.stringify(body), + }) + return await result.json() +} + +// Fetch a file from GitHub using the GraphQL API +async function getGithubFile({ repo, branch, filePath }) { + const [repo_owner, repo_name] = repo.split('/') + // Set up the GraphQL query + // (usually we can keep this in a separate file, and rely on a + // plaintext loader we've set up in our NextJS config, but we need + // to fetch remote content when indexing it, which happens outside + // NextJS, so unfortunately it seems this has to be inlined) + const query = ` +query($repo_name: String!, $repo_owner: String!, $object_expression: String!) { + repository(name: $repo_name, owner: $repo_owner) { + object(expression: $object_expression) { + ... on Blob { + text + } + } + } +} +` + // Set variables + const variables = { + repo_name, + repo_owner, + object_expression: `${branch}:${filePath}`, + } + // Query the GitHub API, and parse the navigation data + const result = await githubQuery({ query, variables }, GITHUB_API_TOKEN) + try { + const fileText = result.data.repository.object.text + return [null, fileText] + } catch (e) { + const errorMsg = `Could not fetch remote file text from "${ + variables.object_expression + }" in "${repo_owner}/${repo_name}". Received instead:\n\n${JSON.stringify( + result, + null, + 2 + )}` + return [errorMsg, null] + } +} + +function memoize(method) { + let cache = {} + + return async function () { + let args = JSON.stringify(arguments[0]) + if (!cache[args]) { + cache[args] = method.apply(this, arguments) + } + return cache[args] + } +} + +module.exports = memoize(getGithubFile) diff --git a/website/components/remote-plugin-docs/utils/merge-remote-plugins.js b/website/components/remote-plugin-docs/utils/merge-remote-plugins.js new file mode 100644 index 000000000..41d0d7139 --- /dev/null +++ b/website/components/remote-plugin-docs/utils/merge-remote-plugins.js @@ -0,0 +1,166 @@ +const path = require('path') +const fetchGithubFile = require('./fetch-github-file') + +const COMPONENT_TYPES = [ + 'builders', + 'datasources', + 'post-processors', + 'provisioners', +] + +async function gatherRemotePlugins(pluginsData, navData, isDev = true) { + const allPluginData = await Promise.all( + pluginsData.map(async (pluginEntry) => { + const componentEntries = await Promise.all( + COMPONENT_TYPES.map(async (type) => { + const routes = await gatherPluginBranch(pluginEntry, type) + if (!routes) return false + const isSingleLeaf = + routes.length === 1 && typeof routes[0].path !== 'undefined' + const navData = isSingleLeaf + ? { ...routes[0], path: path.join(type, pluginEntry.path) } + : { title: pluginEntry.title, routes } + return { type, navData } + }) + ) + const validComponents = componentEntries.filter(Boolean) + if (validComponents.length === 0) { + const errMsg = `Could not fetch any component documentation for remote plugin from ${pluginEntry.repo}. This may be a GitHub credential issue at build time, or it may be an issue with missing docs in the source repository. Please ensure you have a valid GITHUB_API_TOKEN set in .env.local at the root of the project.` + if (isDev) { + console.warn(errMsg) + } else { + throw new Error(errMsg) + } + } + return validComponents + }) + ) + + const allPluginsByType = allPluginData.reduce((acc, pluginData) => { + pluginData.forEach((p) => { + const { type, navData } = p + if (!acc[type]) acc[type] = [] + acc[type].push(navData) + }) + return acc + }, {}) + + const navDataWithPlugins = navData.slice().map((n) => { + // we only care about top-level NavBranch nodes + if (!n.routes) return n + // for each component type, check if this NavBranch + // is the parent route for that type + for (var i = 0; i < COMPONENT_TYPES.length; i++) { + const type = COMPONENT_TYPES[i] + const isTypeRoute = n.routes.filter((nn) => nn.path === type).length > 0 + if (isTypeRoute) { + const pluginsOfType = allPluginsByType[type] + if (!pluginsOfType || pluginsOfType.length == 0) return n + // if this NavBranch is the parent route for the type, + // then append all remote plugins of this type to the + // NavBranch's child routes + const routesWithPlugins = n.routes.slice().concat(pluginsOfType) + // console.log(JSON.stringify(routesWithPlugins, null, 2)) + // Also, sort the child routes so the order is alphabetical + routesWithPlugins.sort((a, b) => { + // (exception: "Overview" comes first) + if (a.title == 'Overview') return -1 + if (b.title === 'Overview') return 1 + // (exception: "Community-Supported" comes last) + if (a.title == 'Community-Supported') return 1 + if (b.title === 'Community-Supported') return -1 + // (exception: "Custom" comes second-last) + if (a.title == 'Custom') return 1 + if (b.title === 'Custom') return -1 + return a.title < b.title ? -1 : a.title > b.title ? 1 : 0 + }) + // return n + return { ...n, routes: routesWithPlugins } + } + } + return n + }) + + return navDataWithPlugins +} + +async function gatherPluginBranch(pluginEntry, component) { + const artifactDir = pluginEntry.artifactDir || '.docs-artifacts' + const branch = pluginEntry.branch || 'main' + const navDataFilePath = `${artifactDir}/${component}/nav-data.json` + const [err, fileResult] = await fetchGithubFile({ + repo: pluginEntry.repo, + branch, + filePath: navDataFilePath, + }) + // If one component errors, that's expected - we try all components. + // We'll check one level up to see if ALL components fail. + if (err) return false + const navData = JSON.parse(fileResult) + const withPrefixedPath = await prefixNavDataPath( + navData, + { + repo: pluginEntry.repo, + branch, + componentArtifactsDir: path.join('.docs-artifacts', component), + }, + path.join(component, pluginEntry.path) + ) + // Add plugin tier + // Parse the plugin tier + const pluginOwner = pluginEntry.repo.split('/')[0] + const pluginTier = pluginOwner === 'hashicorp' ? 'official' : 'community' + const withPluginTier = addPluginTier(withPrefixedPath, pluginTier) + // Return the augmented navData + return withPluginTier +} + +function addPluginTier(navData, pluginTier) { + return navData.slice().map((navNode) => { + if (typeof navNode.path !== 'undefined') { + return { ...navNode, pluginTier } + } + if (navNode.routes) { + return { ...navNode, routes: addPluginTier(navNode.routes, pluginTier) } + } + return navNode + }) +} + +async function prefixNavDataPath( + navData, + { repo, branch, componentArtifactsDir }, + parentPath +) { + return await Promise.all( + navData.slice().map(async (navNode) => { + if (typeof navNode.path !== 'undefined') { + const prefixedPath = path.join(parentPath, navNode.path) + const remoteFile = { + repo, + branch, + filePath: path.join(componentArtifactsDir, navNode.filePath), + } + const withPrefixedRoute = { + ...navNode, + path: prefixedPath, + remoteFile: remoteFile, + } + delete withPrefixedRoute.filePath + return withPrefixedRoute + } + if (navNode.routes) { + const prefixedRoutes = await prefixNavDataPath( + navNode.routes, + { repo, branch, componentArtifactsDir }, + parentPath + ) + const withPrefixedRoutes = { ...navNode, routes: prefixedRoutes } + return withPrefixedRoutes + } + return navNode + }) + ) +} + +module.exports = gatherRemotePlugins diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json new file mode 100644 index 000000000..d416fc8f1 --- /dev/null +++ b/website/data/docs-nav-data.json @@ -0,0 +1,1224 @@ +[ + { + "divider": true + }, + { + "title": "Terminology", + "path": "terminology" + }, + { + "title": "Commands (CLI)", + "routes": [ + { + "title": "Overview", + "path": "commands" + }, + { + "title": "init", + "path": "commands/init" + }, + { + "title": "build", + "path": "commands/build" + }, + { + "title": "console", + "path": "commands/console" + }, + { + "title": "fix", + "path": "commands/fix" + }, + { + "title": "fmt", + "path": "commands/fmt" + }, + { + "title": "inspect", + "path": "commands/inspect" + }, + { + "title": "validate", + "path": "commands/validate" + }, + { + "title": "hcl2_upgrade", + "path": "commands/hcl2_upgrade" + } + ] + }, + { + "title": "Templates", + "routes": [ + { + "title": "Overview", + "path": "templates" + }, + { + "title": "HCL Templates", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates" + }, + { + "title": "Blocks", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/blocks" + }, + { + "title": "build", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/blocks/build" + }, + { + "title": "source", + "path": "templates/hcl_templates/blocks/build/source" + }, + { + "title": "provisioner", + "path": "templates/hcl_templates/blocks/build/provisioner" + }, + { + "title": "post-processor", + "path": "templates/hcl_templates/blocks/build/post-processor" + }, + { + "title": "post-processors", + "path": "templates/hcl_templates/blocks/build/post-processors" + } + ] + }, + { + "title": "locals", + "path": "templates/hcl_templates/blocks/locals" + }, + { + "title": "source", + "path": "templates/hcl_templates/blocks/source" + }, + { + "title": "variable", + "path": "templates/hcl_templates/blocks/variable" + }, + { + "title": "packer", + "path": "templates/hcl_templates/blocks/packer" + }, + { + "title": "data", + "path": "templates/hcl_templates/blocks/data" + } + ] + }, + { + "title": "Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions" + }, + { + "title": "Contextual Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/contextual" + }, + { + "title": "aws_secretsmanager", + "path": "templates/hcl_templates/functions/contextual/aws_secretsmanager" + }, + { + "title": "consul", + "path": "templates/hcl_templates/functions/contextual/consul" + }, + { + "title": "env", + "path": "templates/hcl_templates/functions/contextual/env" + }, + { + "title": "vault", + "path": "templates/hcl_templates/functions/contextual/vault" + } + ] + }, + { + "title": "Numeric Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/numeric" + }, + { + "title": "abs", + "path": "templates/hcl_templates/functions/numeric/abs" + }, + { + "title": "ceil", + "path": "templates/hcl_templates/functions/numeric/ceil" + }, + { + "title": "floor", + "path": "templates/hcl_templates/functions/numeric/floor" + }, + { + "title": "log", + "path": "templates/hcl_templates/functions/numeric/log" + }, + { + "title": "max", + "path": "templates/hcl_templates/functions/numeric/max" + }, + { + "title": "min", + "path": "templates/hcl_templates/functions/numeric/min" + }, + { + "title": "parseint", + "path": "templates/hcl_templates/functions/numeric/parseint" + }, + { + "title": "pow", + "path": "templates/hcl_templates/functions/numeric/pow" + }, + { + "title": "signum", + "path": "templates/hcl_templates/functions/numeric/signum" + } + ] + }, + { + "title": "String Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/string" + }, + { + "title": "chomp", + "path": "templates/hcl_templates/functions/string/chomp" + }, + { + "title": "format", + "path": "templates/hcl_templates/functions/string/format" + }, + { + "title": "formatlist", + "path": "templates/hcl_templates/functions/string/formatlist" + }, + { + "title": "indent", + "path": "templates/hcl_templates/functions/string/indent" + }, + { + "title": "join", + "path": "templates/hcl_templates/functions/string/join" + }, + { + "title": "lower", + "path": "templates/hcl_templates/functions/string/lower" + }, + { + "title": "replace", + "path": "templates/hcl_templates/functions/string/replace" + }, + { + "title": "regex_replace", + "path": "templates/hcl_templates/functions/string/regex_replace" + }, + { + "title": "regex", + "path": "templates/hcl_templates/functions/string/regex" + }, + { + "title": "regexall", + "path": "templates/hcl_templates/functions/string/regexall" + }, + { + "title": "split", + "path": "templates/hcl_templates/functions/string/split" + }, + { + "title": "strrev", + "path": "templates/hcl_templates/functions/string/strrev" + }, + { + "title": "substr", + "path": "templates/hcl_templates/functions/string/substr" + }, + { + "title": "title", + "path": "templates/hcl_templates/functions/string/title" + }, + { + "title": "trim", + "path": "templates/hcl_templates/functions/string/trim" + }, + { + "title": "trimprefix", + "path": "templates/hcl_templates/functions/string/trimprefix" + }, + { + "title": "trimsuffix", + "path": "templates/hcl_templates/functions/string/trimsuffix" + }, + { + "title": "trimspace", + "path": "templates/hcl_templates/functions/string/trimspace" + }, + { + "title": "upper", + "path": "templates/hcl_templates/functions/string/upper" + } + ] + }, + { + "title": "Collection Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/collection" + }, + { + "title": "chunklist", + "path": "templates/hcl_templates/functions/collection/chunklist" + }, + { + "title": "coalesce", + "path": "templates/hcl_templates/functions/collection/coalesce" + }, + { + "title": "coalescelist", + "path": "templates/hcl_templates/functions/collection/coalescelist" + }, + { + "title": "compact", + "path": "templates/hcl_templates/functions/collection/compact" + }, + { + "title": "concat", + "path": "templates/hcl_templates/functions/collection/concat" + }, + { + "title": "contains", + "path": "templates/hcl_templates/functions/collection/contains" + }, + { + "title": "distinct", + "path": "templates/hcl_templates/functions/collection/distinct" + }, + { + "title": "element", + "path": "templates/hcl_templates/functions/collection/element" + }, + { + "title": "flatten", + "path": "templates/hcl_templates/functions/collection/flatten" + }, + { + "title": "keys", + "path": "templates/hcl_templates/functions/collection/keys" + }, + { + "title": "length", + "path": "templates/hcl_templates/functions/collection/length" + }, + { + "title": "lookup", + "path": "templates/hcl_templates/functions/collection/lookup" + }, + { + "title": "merge", + "path": "templates/hcl_templates/functions/collection/merge" + }, + { + "title": "range", + "path": "templates/hcl_templates/functions/collection/range" + }, + { + "title": "reverse", + "path": "templates/hcl_templates/functions/collection/reverse" + }, + { + "title": "setintersection", + "path": "templates/hcl_templates/functions/collection/setintersection" + }, + { + "title": "setproduct", + "path": "templates/hcl_templates/functions/collection/setproduct" + }, + { + "title": "setunion", + "path": "templates/hcl_templates/functions/collection/setunion" + }, + { + "title": "slice", + "path": "templates/hcl_templates/functions/collection/slice" + }, + { + "title": "sort", + "path": "templates/hcl_templates/functions/collection/sort" + }, + { + "title": "values", + "path": "templates/hcl_templates/functions/collection/values" + }, + { + "title": "zipmap", + "path": "templates/hcl_templates/functions/collection/zipmap" + } + ] + }, + { + "title": "Encoding Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/encoding" + }, + { + "title": "base64decode", + "path": "templates/hcl_templates/functions/encoding/base64decode" + }, + { + "title": "base64encode", + "path": "templates/hcl_templates/functions/encoding/base64encode" + }, + { + "title": "csvdecode", + "path": "templates/hcl_templates/functions/encoding/csvdecode" + }, + { + "title": "jsondecode", + "path": "templates/hcl_templates/functions/encoding/jsondecode" + }, + { + "title": "jsonencode", + "path": "templates/hcl_templates/functions/encoding/jsonencode" + }, + { + "title": "urlencode", + "path": "templates/hcl_templates/functions/encoding/urlencode" + }, + { + "title": "yamldecode", + "path": "templates/hcl_templates/functions/encoding/yamldecode" + }, + { + "title": "yamlencode", + "path": "templates/hcl_templates/functions/encoding/yamlencode" + } + ] + }, + { + "title": "Filesystem Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/file" + }, + { + "title": "abspath", + "path": "templates/hcl_templates/functions/file/abspath" + }, + { + "title": "basename", + "path": "templates/hcl_templates/functions/file/basename" + }, + { + "title": "dirname", + "path": "templates/hcl_templates/functions/file/dirname" + }, + { + "title": "file", + "path": "templates/hcl_templates/functions/file/file" + }, + { + "title": "fileexists", + "path": "templates/hcl_templates/functions/file/fileexists" + }, + { + "title": "fileset", + "path": "templates/hcl_templates/functions/file/fileset" + }, + { + "title": "pathexpand", + "path": "templates/hcl_templates/functions/file/pathexpand" + } + ] + }, + { + "title": "Date and Time Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/datetime" + }, + { + "title": "formatdate", + "path": "templates/hcl_templates/functions/datetime/formatdate" + }, + { + "title": "timeadd", + "path": "templates/hcl_templates/functions/datetime/timeadd" + }, + { + "title": "timestamp", + "path": "templates/hcl_templates/functions/datetime/timestamp" + } + ] + }, + { + "title": "Hash and Crypto Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/crypto" + }, + { + "title": "bcrypt", + "path": "templates/hcl_templates/functions/crypto/bcrypt" + }, + { + "title": "md5", + "path": "templates/hcl_templates/functions/crypto/md5" + }, + { + "title": "rsadecrypt", + "path": "templates/hcl_templates/functions/crypto/rsadecrypt" + }, + { + "title": "sha1", + "path": "templates/hcl_templates/functions/crypto/sha1" + }, + { + "title": "sha256", + "path": "templates/hcl_templates/functions/crypto/sha256" + }, + { + "title": "sha512", + "path": "templates/hcl_templates/functions/crypto/sha512" + } + ] + }, + { + "title": "UUID Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/uuid" + }, + { + "title": "uuidv4", + "path": "templates/hcl_templates/functions/uuid/uuidv4" + }, + { + "title": "uuidv5", + "path": "templates/hcl_templates/functions/uuid/uuidv5" + } + ] + }, + { + "title": "IP Network Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/ipnet" + }, + { + "title": "cidrhost", + "path": "templates/hcl_templates/functions/ipnet/cidrhost" + }, + { + "title": "cidrnetmask", + "path": "templates/hcl_templates/functions/ipnet/cidrnetmask" + }, + { + "title": "cidrsubnet", + "path": "templates/hcl_templates/functions/ipnet/cidrsubnet" + } + ] + }, + { + "title": "Type Conversion Functions", + "routes": [ + { + "title": "Overview", + "path": "templates/hcl_templates/functions/conversion" + }, + { + "title": "can", + "path": "templates/hcl_templates/functions/conversion/can" + }, + { + "title": "convert", + "path": "templates/hcl_templates/functions/conversion/convert" + }, + { + "title": "try", + "path": "templates/hcl_templates/functions/conversion/try" + } + ] + } + ] + }, + { + "title": "Variables", + "path": "templates/hcl_templates/variables" + }, + { + "title": "Locals", + "path": "templates/hcl_templates/locals" + }, + { + "title": "Contextual Variables", + "path": "templates/hcl_templates/contextual-variables" + }, + { + "title": "Data Sources", + "path": "templates/hcl_templates/datasources" + }, + { + "title": "Path Variables", + "path": "templates/hcl_templates/path-variables" + }, + { + "title": "Syntax", + "path": "templates/hcl_templates/syntax" + }, + { + "title": "Only Except", + "path": "templates/hcl_templates/onlyexcept" + }, + { + "title": "Expressions", + "path": "templates/hcl_templates/expressions" + }, + { + "title": "JSON Syntax", + "path": "templates/hcl_templates/syntax-json" + } + ] + }, + { + "title": "JSON Templates", + "routes": [ + { + "title": "Overview", + "path": "templates/legacy_json_templates" + }, + { + "title": "Builders", + "path": "templates/legacy_json_templates/builders" + }, + { + "title": "Communicators", + "path": "templates/legacy_json_templates/communicator" + }, + { + "title": "Engine", + "path": "templates/legacy_json_templates/engine" + }, + { + "title": "Post-Processors", + "path": "templates/legacy_json_templates/post-processors" + }, + { + "title": "Provisioners", + "path": "templates/legacy_json_templates/provisioners" + }, + { + "title": "User Variables", + "path": "templates/legacy_json_templates/user-variables" + } + ] + } + ] + }, + { + "divider": true + }, + { + "title": "Communicators", + "routes": [ + { + "title": "Overview", + "path": "communicators" + }, + { + "title": "SSH", + "path": "communicators/ssh" + }, + { + "title": "WINRM", + "path": "communicators/winrm" + } + ] + }, + { + "title": "Builders", + "routes": [ + { + "title": "Overview", + "path": "builders" + }, + { + "title": "Alicloud ECS", + "path": "builders/alicloud-ecs" + }, + { + "title": "Amazon EC2", + "routes": [ + { + "title": "Overview", + "path": "builders/amazon" + }, + { + "title": "chroot", + "path": "builders/amazon/chroot" + }, + { + "title": "EBS", + "path": "builders/amazon/ebs" + }, + { + "title": "EBS Surrogate", + "path": "builders/amazon/ebssurrogate" + }, + { + "title": "EBS Volume", + "path": "builders/amazon/ebsvolume" + }, + { + "title": "Instance", + "path": "builders/amazon/instance" + } + ] + }, + { + "title": "Azure", + "routes": [ + { + "title": "Overview", + "path": "builders/azure" + }, + { + "title": "ARM", + "path": "builders/azure/arm" + }, + { + "title": "chroot", + "path": "builders/azure/chroot" + } + ] + }, + { + "title": "CloudStack", + "path": "builders/cloudstack" + }, + { + "title": "DigitalOcean", + "path": "builders/digitalocean" + }, + { + "title": "Docker", + "path": "builders/docker" + }, + { + "title": "File", + "path": "builders/file" + }, + { + "title": "Google Cloud", + "path": "builders/googlecompute" + }, + { + "title": "Hetzner Cloud", + "path": "builders/hetzner-cloud" + }, + { + "title": "HyperOne", + "path": "builders/hyperone" + }, + { + "title": "Hyper-V", + "routes": [ + { + "title": "Overview", + "path": "builders/hyperv" + }, + { + "title": "ISO", + "path": "builders/hyperv/iso" + }, + { + "title": "VMCX", + "path": "builders/hyperv/vmcx" + } + ] + }, + { + "title": "Linode", + "path": "builders/linode" + }, + { + "title": "LXC", + "path": "builders/lxc" + }, + { + "title": "LXD", + "path": "builders/lxd" + }, + { + "title": "NAVER Cloud", + "path": "builders/ncloud" + }, + { + "title": "Null", + "path": "builders/null" + }, + { + "title": "1&1", + "path": "builders/oneandone" + }, + { + "title": "OpenStack", + "path": "builders/openstack" + }, + { + "title": "Oracle", + "routes": [ + { + "title": "Overview", + "path": "builders/oracle" + }, + { + "title": "Oracle Classic", + "path": "builders/oracle/classic" + }, + { + "title": "Oracle OCI", + "path": "builders/oracle/oci" + } + ] + }, + { + "title": "Outscale", + "routes": [ + { + "title": "Overview", + "path": "builders/outscale" + }, + { + "title": "chroot", + "path": "builders/outscale/chroot" + }, + { + "title": "BSU", + "path": "builders/outscale/bsu" + }, + { + "title": "BSU Surrogate", + "path": "builders/outscale/bsusurrogate" + }, + { + "title": "BSU Volume", + "path": "builders/outscale/bsuvolume" + } + ] + }, + { + "title": "Parallels", + "routes": [ + { + "title": "Overview", + "path": "builders/parallels" + }, + { + "title": "ISO", + "path": "builders/parallels/iso" + }, + { + "title": "PVM", + "path": "builders/parallels/pvm" + } + ] + }, + { + "title": "ProfitBricks", + "path": "builders/profitbricks" + }, + { + "title": "Proxmox", + "routes": [ + { + "title": "Overview", + "path": "builders/proxmox" + }, + { + "title": "ISO", + "path": "builders/proxmox/iso" + }, + { + "title": "Clone", + "path": "builders/proxmox/clone" + } + ] + }, + { + "title": "QEMU", + "path": "builders/qemu" + }, + { + "title": "Scaleway", + "path": "builders/scaleway" + }, + { + "title": "Tencent Cloud", + "path": "builders/tencentcloud-cvm" + }, + { + "title": "JDCloud", + "path": "builders/jdcloud" + }, + { + "title": "Triton", + "path": "builders/triton" + }, + { + "title": "UCloud", + "path": "builders/ucloud-uhost" + }, + { + "title": "Vagrant", + "path": "builders/vagrant" + }, + { + "title": "VirtualBox", + "routes": [ + { + "title": "Overview", + "path": "builders/virtualbox" + }, + { + "title": "ISO", + "path": "builders/virtualbox/iso" + }, + { + "title": "OVF", + "path": "builders/virtualbox/ovf" + }, + { + "title": "VM", + "path": "builders/virtualbox/vm" + } + ] + }, + { + "title": "VMware", + "routes": [ + { + "title": "Overview", + "path": "builders/vmware" + }, + { + "title": "VMWare ISO", + "path": "builders/vmware/iso" + }, + { + "title": "VMWare VMX", + "path": "builders/vmware/vmx" + }, + { + "title": "VSphere ISO", + "path": "builders/vmware/vsphere-iso" + }, + { + "title": "VSphere Clone", + "path": "builders/vmware/vsphere-clone" + } + ] + }, + { + "title": "Yandex.Cloud", + "path": "builders/yandex" + }, + { + "title": "Custom", + "path": "builders/custom" + }, + { + "title": "Community-Supported", + "path": "builders/community-supported" + } + ] + }, + { + "title": "Data Sources", + "routes": [ + { + "title": "Overview", + "path": "datasources" + }, + { + "title": "Amazon", + "routes": [ + { + "title": "Overview", + "path": "datasources/amazon" + }, + { + "title": "Amazon AMI", + "path": "datasources/amazon/ami" + }, + { + "title": "Secrets Manager", + "path": "datasources/amazon/secretsmanager" + } + ] + } + ] + }, + { + "title": "Provisioners", + "routes": [ + { + "title": "Overview", + "path": "provisioners" + }, + { + "title": "Ansible Local", + "path": "provisioners/ansible-local" + }, + { + "title": "Ansible (Remote)", + "path": "provisioners/ansible" + }, + { + "title": "Breakpoint", + "path": "provisioners/breakpoint" + }, + { + "title": "Chef Client", + "path": "provisioners/chef-client" + }, + { + "title": "Chef Solo", + "path": "provisioners/chef-solo" + }, + { + "title": "Converge", + "path": "provisioners/converge" + }, + { + "title": "File", + "path": "provisioners/file" + }, + { + "title": "InSpec", + "path": "provisioners/inspec" + }, + { + "title": "PowerShell", + "path": "provisioners/powershell" + }, + { + "title": "Puppet Masterless", + "path": "provisioners/puppet-masterless" + }, + { + "title": "Puppet Server", + "path": "provisioners/puppet-server" + }, + { + "title": "Salt Masterless", + "path": "provisioners/salt-masterless" + }, + { + "title": "Shell", + "path": "provisioners/shell" + }, + { + "title": "Shell (Local)", + "path": "provisioners/shell-local" + }, + { + "title": "Windows Shell", + "path": "provisioners/windows-shell" + }, + { + "title": "Windows Restart", + "path": "provisioners/windows-restart" + }, + { + "title": "Custom", + "path": "provisioners/custom" + }, + { + "title": "Community-Supported", + "path": "provisioners/community-supported" + } + ] + }, + { + "title": "Post-Processors", + "routes": [ + { + "title": "Overview", + "path": "post-processors" + }, + { + "title": "Alicloud Import", + "path": "post-processors/alicloud-import" + }, + { + "title": "Amazon Import", + "path": "post-processors/amazon-import" + }, + { + "title": "Artifice", + "path": "post-processors/artifice" + }, + { + "title": "Compress", + "path": "post-processors/compress" + }, + { + "title": "Checksum", + "path": "post-processors/checksum" + }, + { + "title": "DigitalOcean Import", + "path": "post-processors/digitalocean-import" + }, + { + "title": "Docker Import", + "path": "post-processors/docker-import" + }, + { + "title": "Docker Push", + "path": "post-processors/docker-push" + }, + { + "title": "Docker Save", + "path": "post-processors/docker-save" + }, + { + "title": "Docker Tag", + "path": "post-processors/docker-tag" + }, + { + "title": "Exoscale Import", + "path": "post-processors/exoscale-import" + }, + { + "title": "Google Compute Export", + "path": "post-processors/googlecompute-export" + }, + { + "title": "Google Compute Import", + "path": "post-processors/googlecompute-import" + }, + { + "title": "Manifest", + "path": "post-processors/manifest" + }, + { + "title": "Shell (Local)", + "path": "post-processors/shell-local" + }, + { + "title": "UCloud Import", + "path": "post-processors/ucloud-import" + }, + { + "title": "Vagrant", + "path": "post-processors/vagrant" + }, + { + "title": "Vagrant Cloud", + "path": "post-processors/vagrant-cloud" + }, + { + "title": "vSphere", + "path": "post-processors/vsphere" + }, + { + "title": "vSphere Template", + "path": "post-processors/vsphere-template" + }, + { + "title": "Yandex.Cloud Compute Export", + "path": "post-processors/yandex-export" + }, + { + "title": "Yandex.Cloud Compute Import", + "path": "post-processors/yandex-import" + }, + { + "title": "Community-Supported", + "path": "post-processors/community-supported" + } + ] + }, + { + "divider": true + }, + { + "title": "Installing Packer", + "path": "install" + }, + { + "title": "Configuring Packer", + "path": "configure" + }, + { + "divider": true + }, + { + "title": "Packer Plugins", + "routes": [ + { + "title": "Overview", + "path": "plugins" + }, + { + "title": "Extending Packer", + "routes": [ + { + "title": "Overview", + "path": "plugins/creation" + }, + { + "title": "Custom Builders", + "path": "plugins/creation/custom-builders" + }, + { + "title": "Custom Post-Processors", + "path": "plugins/creation/custom-post-processors" + }, + { + "title": "Custom Provisioners", + "path": "plugins/creation/custom-provisioners" + }, + { + "title": "Custom Data Sources", + "path": "plugins/creation/custom-datasources" + } + ] + } + ] + }, + { + "divider": true + }, + { + "title": "Debugging", + "path": "debugging" + } +] diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js deleted file mode 100644 index f97685c4c..000000000 --- a/website/data/docs-navigation.js +++ /dev/null @@ -1,336 +0,0 @@ -// The root folder for this documentation category is `pages/docs` -// -// - A string refers to the name of a file -// - A "category" value refers to the name of a directory -// - All directories must have an "index.mdx" file to serve as -// the landing page for the category - -export default [ - '--------', - 'terminology', - { - category: 'commands', - content: ['init', 'build', 'console', 'fix', 'fmt', 'inspect', 'validate', 'hcl2_upgrade'], - }, - { - category: 'templates', - content: [ - { - category: 'hcl_templates', - content: [ - { - category: 'blocks', - content: [ - { - category: 'build', - content: [ - 'source', - 'provisioner', - 'post-processor', - 'post-processors', - ], - }, - 'locals', - 'source', - 'variable', - 'packer', - 'data' - ], - }, - { - category: 'functions', - content: [ - { - category: 'contextual', - content: [ - 'aws_secretsmanager', - 'consul', - 'env', - 'vault', - ], - }, - { - category: 'numeric', - content: [ - 'abs', - 'ceil', - 'floor', - 'log', - 'max', - 'min', - 'parseint', - 'pow', - 'signum', - ], - }, - { - category: 'string', - content: [ - 'chomp', - 'format', - 'formatlist', - 'indent', - 'join', - 'lower', - 'replace', - 'regex_replace', - 'regex', - 'regexall', - 'split', - 'strrev', - 'substr', - 'title', - 'trim', - 'trimprefix', - 'trimsuffix', - 'trimspace', - 'upper', - ], - }, - { - category: 'collection', - content: [ - 'chunklist', - 'coalesce', - 'coalescelist', - 'compact', - 'concat', - 'contains', - 'distinct', - 'element', - 'flatten', - 'keys', - 'length', - 'lookup', - 'merge', - 'range', - 'reverse', - 'setintersection', - 'setproduct', - 'setunion', - 'slice', - 'sort', - 'values', - 'zipmap', - ], - }, - { - category: 'encoding', - content: [ - 'base64decode', - 'base64encode', - 'csvdecode', - 'jsondecode', - 'jsonencode', - 'urlencode', - 'yamldecode', - 'yamlencode', - ], - }, - { - category: 'file', - content: [ - 'abspath', - 'basename', - 'dirname', - 'file', - 'fileexists', - 'fileset', - 'pathexpand', - ], - }, - { - category: 'datetime', - content: ['formatdate', 'timeadd', 'timestamp'], - }, - { - category: 'crypto', - content: [ - 'bcrypt', - 'md5', - 'rsadecrypt', - 'sha1', - 'sha256', - 'sha512', - ], - }, - { - category: 'uuid', - content: ['uuidv4', 'uuidv5'], - }, - { - category: 'ipnet', - content: ['cidrhost', 'cidrnetmask', 'cidrsubnet'], - }, - { - category: 'conversion', - content: ['can', 'convert', 'try'], - }, - ], - }, - 'variables', - 'locals', - 'contextual-variables', - 'datasources', - 'path-variables', - 'syntax', - 'onlyexcept', - 'expressions', - 'syntax-json', - ], - }, - { - category: "legacy_json_templates", - content: [ - 'builders', - 'communicator', - 'engine', - 'post-processors', - 'provisioners', - 'user-variables', - ] - }, - ], - }, - '----------', - {category: 'communicators', content: ['ssh', 'winrm']}, - { - category: 'builders', - content: [ - 'alicloud-ecs', - { - category: 'amazon', - content: ['chroot', 'ebs', 'ebssurrogate', 'ebsvolume', 'instance'], - }, - { - category: 'azure', - content: ['arm', 'chroot'], - }, - 'cloudstack', - 'digitalocean', - 'docker', - 'file', - 'googlecompute', - 'hetzner-cloud', - 'hyperone', - {category: 'hyperv', content: ['iso', 'vmcx']}, - 'linode', - 'lxc', - 'lxd', - 'ncloud', - 'null', - 'oneandone', - 'openstack', - {category: 'oracle', content: ['classic', 'oci']}, - { - category: 'outscale', - content: ['chroot', 'bsu', 'bsusurrogate', 'bsuvolume'], - }, - {category: 'parallels', content: ['iso', 'pvm']}, - 'profitbricks', - {category: 'proxmox', content: ['iso', 'clone']}, - 'qemu', - 'scaleway', - 'tencentcloud-cvm', - 'jdcloud', - 'triton', - 'ucloud-uhost', - 'vagrant', - { - category: 'virtualbox', - content: ['iso', 'ovf', 'vm'], - }, - { - category: 'vmware', - content: ['iso', 'vmx', 'vsphere-iso', 'vsphere-clone'], - }, - 'yandex', - 'custom', - 'community-supported', - ], - }, - { - category: 'datasources', - content: [ - { - category: 'amazon', - content: [ - 'ami', - 'secretsmanager' - ], - }, - ] - }, - { - category: 'provisioners', - content: [ - 'ansible-local', - 'ansible', - 'breakpoint', - 'chef-client', - 'chef-solo', - 'converge', - 'file', - 'inspec', - 'powershell', - 'puppet-masterless', - 'puppet-server', - 'salt-masterless', - 'shell', - 'shell-local', - 'windows-shell', - 'windows-restart', - 'custom', - 'community-supported', - ], - }, - { - category: 'post-processors', - content: [ - 'alicloud-import', - 'amazon-import', - 'artifice', - 'compress', - 'checksum', - 'digitalocean-import', - 'docker-import', - 'docker-push', - 'docker-save', - 'docker-tag', - 'exoscale-import', - 'googlecompute-export', - 'googlecompute-import', - 'manifest', - 'shell-local', - 'ucloud-import', - 'vagrant', - 'vagrant-cloud', - 'vsphere', - 'vsphere-template', - 'yandex-export', - 'yandex-import', - 'community-supported', - ], - }, - '----------', - 'install', - 'configure', - '----------', - { - category: 'plugins', - content: [ - { - category: 'creation', - content: [ - 'custom-builders', - 'custom-post-processors', - 'custom-provisioners', - 'custom-datasources', - ], - }, - ], - }, - - '---------', - 'debugging', -] diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/website/data/docs-remote-plugins.json @@ -0,0 +1 @@ +[] diff --git a/website/data/guides-nav-data.json b/website/data/guides-nav-data.json new file mode 100644 index 000000000..0fb10491a --- /dev/null +++ b/website/data/guides-nav-data.json @@ -0,0 +1,98 @@ +[ + { + "title": "Upgrade Your Plugin to use the Packer plugin sdk", + "path": "1.7-plugin-upgrade" + }, + { + "title": "Upgrade Your Template to use Packer init", + "path": "1.7-template-upgrade" + }, + { + "title": "HCL guides", + "routes": [ + { + "title": "Overview", + "path": "hcl" + }, + { + "title": "From JSON v1", + "path": "hcl/from-json-v1" + }, + { + "title": "Variables", + "path": "hcl/variables" + }, + { + "title": "Making a plugin HCL2 enabled", + "path": "hcl/component-object-spec" + } + ] + }, + { + "title": "Automatic OS Installs", + "routes": [ + { + "title": "Overview", + "path": "automatic-operating-system-installs" + }, + { + "title": "Unattended Installation for Windows", + "path": "automatic-operating-system-installs/autounattend_windows" + }, + { + "title": "Unattended Installation for Debian", + "path": "automatic-operating-system-installs/preseed_ubuntu" + } + ] + }, + { + "title": "Workflow Tips and Tricks", + "routes": [ + { + "title": "Overview", + "path": "workflow-tips-and-tricks" + }, + { + "title": "Isotime Template Function", + "path": "workflow-tips-and-tricks/isotime-template-function" + }, + { + "title": "Veewee to Packer", + "path": "workflow-tips-and-tricks/veewee-to-packer" + }, + { + "title": "Use jq to strip comments from a Packer template", + "path": "workflow-tips-and-tricks/use-packer-with-comment" + } + ] + }, + { + "title": "Build Immutable Infrastructure with Packer in CI/CD", + "routes": [ + { + "title": "Overview", + "path": "packer-on-cicd" + }, + { + "title": "Build Images in CI/CD", + "path": "packer-on-cicd/build-image-in-cicd" + }, + { + "title": "Build a VirtualBox Image with Packer in TeamCity", + "path": "packer-on-cicd/build-virtualbox-image" + }, + { + "title": "Pipelineing Builds", + "path": "packer-on-cicd/pipelineing-builds" + }, + { + "title": "Trigger Terraform Enterprise runs", + "path": "packer-on-cicd/trigger-tfe" + }, + { + "title": "Upload a VirtualBox Image to S3", + "path": "packer-on-cicd/upload-images-to-artifact" + } + ] + } +] diff --git a/website/data/guides-navigation.js b/website/data/guides-navigation.js deleted file mode 100644 index 1afc29a32..000000000 --- a/website/data/guides-navigation.js +++ /dev/null @@ -1,37 +0,0 @@ -// The root folder for this documentation category is `pages/guides` -// -// - A string refers to the name of a file -// - A "category" value refers to the name of a directory -// - All directories must have an "index.mdx" file to serve as -// the landing page for the category - -export default [ - '1.7-plugin-upgrade', - '1.7-template-upgrade', - { - category: 'hcl', - content: ['from-json-v1', 'variables', 'component-object-spec'], - }, - { - category: 'automatic-operating-system-installs', - content: ['autounattend_windows', 'preseed_ubuntu'], - }, - { - category: 'workflow-tips-and-tricks', - content: [ - 'isotime-template-function', - 'veewee-to-packer', - 'use-packer-with-comment', - ], - }, - { - category: 'packer-on-cicd', - content: [ - 'build-image-in-cicd', - 'build-virtualbox-image', - 'pipelineing-builds', - 'trigger-tfe', - 'upload-images-to-artifact', - ], - }, -] diff --git a/website/data/intro-nav-data.json b/website/data/intro-nav-data.json new file mode 100644 index 000000000..c9bed76a7 --- /dev/null +++ b/website/data/intro-nav-data.json @@ -0,0 +1,39 @@ +[ + { + "title": "Why Use Packer?", + "path": "why" + }, + { + "title": "Use Cases", + "path": "use-cases" + }, + { + "title": "Getting Started", + "routes": [ + { + "title": "Install", + "href": "/intro/getting-started/install" + }, + { + "title": "Build An Image", + "href": "/intro/getting-started/build-image" + }, + { + "title": "Provision", + "href": "/intro/getting-started/provision" + }, + { + "title": "Parallel Builds", + "href": "/intro/getting-started/parallel-builds" + }, + { + "title": "Vagrant Boxes", + "href": "/intro/getting-started/vagrant" + }, + { + "title": "Next Steps", + "href": "/intro/getting-started/next" + } + ] + } +] diff --git a/website/data/intro-navigation.js b/website/data/intro-navigation.js deleted file mode 100644 index cf39f135d..000000000 --- a/website/data/intro-navigation.js +++ /dev/null @@ -1,41 +0,0 @@ -// The root folder for this documentation category is `pages/intro` -// -// - A string refers to the name of a file -// - A "category" value refers to the name of a directory -// - All directories must have an "index.mdx" file to serve as -// the landing page for the category - -export default [ - 'why', - 'use-cases', - { - category: 'getting-started', - name: 'Getting Started', - content: [ - { - title: 'Install', - href: '/intro/getting-started/install', - }, - { - title: 'Build An Image', - href: '/intro/getting-started/build-image', - }, - { - title: 'Provision', - href: '/intro/getting-started/provision', - }, - { - title: 'Parallel Builds', - href: '/intro/getting-started/parallel-builds', - }, - { - title: 'Vagrant Boxes', - href: '/intro/getting-started/vagrant', - }, - { - title: 'Next Steps', - href: '/intro/getting-started/next', - }, - ], - }, -] diff --git a/website/package-lock.json b/website/package-lock.json index 008fe7daf..1a542e882 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -2416,9 +2416,9 @@ } }, "@babel/runtime-corejs3": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.13.tgz", - "integrity": "sha512-8fSpqYRETHATtNitsCXq8QQbKJP31/KnDl2Wz2Vtui9nKzjss2ysuZtyVsWjBtvkeEFo346gkwjYPab1hvrXkQ==", + "version": "7.13.7", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.7.tgz", + "integrity": "sha512-zkDsGGSRU2YyYTXkPfcxuYuCVc6xBOeH1ZMh72ywBvmrDs+kSmoMuCUXZJUPbXZafrPivDHS2Oq7wI37gaTvqw==", "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -2551,17 +2551,17 @@ } }, "@bugsnag/browser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.6.0.tgz", - "integrity": "sha512-8sth20TM8BVfebkqxqJQOCM2P2L4foOgFH2QA3ruG0iknDKZDhE7XcoWgmUP9zVSNJqkCyiIzcBOuiwZW8JaSQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.7.0.tgz", + "integrity": "sha512-o3Y/8ZINTCyCiDid01xF4RwAfRCtt4Ak65sbEUjuen90Lf62LcqNIrguRotum5/5GrXl/ktm8gk6Tp8XBiS79A==", "requires": { - "@bugsnag/core": "^7.6.0" + "@bugsnag/core": "^7.7.0" } }, "@bugsnag/core": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.6.0.tgz", - "integrity": "sha512-hBYAZJw4ScqoyM1jA1x/m2e4iS2EqYEs0I2hdzBCZFv2ls17ILmU58eRSyVdUfyzbv0J7Hi6DwwBGC4Yb6ROZA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.7.0.tgz", + "integrity": "sha512-y6xY/ZjHRSD3h1ADdkgH4sUJeJ9TUjNjkui+pjdmQkG4asjA8lBNmjnqirGeAxgL00lg5xvbfLSq9iHdqFW9oQ==", "requires": { "@bugsnag/cuid": "^3.0.0", "@bugsnag/safe-json-stringify": "^6.0.0", @@ -2585,11 +2585,11 @@ } }, "@bugsnag/node": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.6.0.tgz", - "integrity": "sha512-n3BVb04bq4z16nOM4gbWoXsi6k8R9bryWS/NAYi/jQg6tgyBkNYzmK0ojf3fYJ7uAgCjUJNMX6S9UHSJy/MMcQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.8.0.tgz", + "integrity": "sha512-2ZkXP5gmTE4LcPu2TB350BUmClbwsPZ1ZjYMiHqHDb2Xjoico0PNt6F9tBLjDRy9jS/pFGbjt/iOpyfr4GFm8A==", "requires": { - "@bugsnag/core": "^7.6.0", + "@bugsnag/core": "^7.7.0", "byline": "^5.0.0", "error-stack-parser": "^2.0.2", "iserror": "^0.0.2", @@ -2682,9 +2682,9 @@ "integrity": "sha512-REr07tPJDKpyTh/u9tUS3sf29LnkDrWFVgY7FTvDJfbJ60IJ/R1TYNmcE7QKREGJ8j0p43QWEDabqVWOWvOXFA==" }, "@hashicorp/nextjs-scripts": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@hashicorp/nextjs-scripts/-/nextjs-scripts-16.0.1.tgz", - "integrity": "sha512-k29n91PSqVeneBwsZ8botPA/fK5oheWiqoFqZxSYSmMPS4rfmC0HUW05RIXhkSEl7KvTuYGzt8BfsciSPvDPtw==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@hashicorp/nextjs-scripts/-/nextjs-scripts-16.2.0.tgz", + "integrity": "sha512-CpqCaBji51EKp+1yoIKx1J2OLLunueVASgPMnnVgNkUokbt5PGFLbujgpC/hP9OroPtc7HlsXmvI6zEN/MWXYg==", "requires": { "@bugsnag/js": "7.5.4", "@bugsnag/plugin-react": "7.5.4", @@ -2807,6 +2807,11 @@ "slugify": "1.3.6" }, "dependencies": { + "@hashicorp/react-inline-svg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", + "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" + }, "slugify": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.6.tgz", @@ -2832,6 +2837,13 @@ "requires": { "@hashicorp/react-inline-svg": "^1.0.0", "slugify": "^1.3.6" + }, + "dependencies": { + "@hashicorp/react-inline-svg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", + "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" + } } } } @@ -2842,42 +2854,234 @@ "integrity": "sha512-AYIe6tcOxlKPe5Sq89o/Vk0rGE6Z1dCzf+N3ynECTh5L2A1zusf9xeM659QEh/edE/Ll9EBBLmq49sQXLNDxTw==" }, "@hashicorp/react-docs-page": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-10.3.2.tgz", - "integrity": "sha512-gTOBF7MqOQdH2tYw3npUYwLMF8d9d1Rugp0Rk2QdjIzTRbKT3nO1CRyD+YfZTe2HPNdc+rKI2iM39Tc1TT39DA==", + "version": "10.9.4-alpha.18", + "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-10.9.4-alpha.18.tgz", + "integrity": "sha512-+eRKJ2PX9s4Is0ZT2O8ZBcBWuDt7OGxwBrqKF1ulo/DcZunj7pODCQQulb+jAtQyq7YzikWdFmQ/pcvwaVHK6Q==", "requires": { - "@hashicorp/react-content": "^6.1.1", - "@hashicorp/react-docs-sidenav": "^6.0.1", - "@hashicorp/react-head": "^1.1.6", - "@hashicorp/react-search": "^3.0.0", + "@hashicorp/react-content": "^6.3.0", + "@hashicorp/react-docs-sidenav": "6.1.1-alpha.16", + "@hashicorp/react-head": "^1.2.0", + "@hashicorp/react-search": "^4.1.0", "fs-exists-sync": "0.1.0", "gray-matter": "4.0.2", "js-yaml": "3.14.0", "line-reader": "0.4.0", + "moize": "^5.4.7", "readdirp": "3.5.0" }, "dependencies": { - "@hashicorp/react-content": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@hashicorp/react-content/-/react-content-6.1.1.tgz", - "integrity": "sha512-X6BauLEsv6VOi+iGnDBxC6nzvx06WKM7s8K/VqJHQ5PTmCaPrgaaRZh99qQcnIXpuHcmScs85wq8yAfD8zpOUQ==" - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "@algolia/cache-browser-local-storage": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.8.5.tgz", + "integrity": "sha512-9rs/Yi82ilgifweJamOy4DlJ4xPGsCN/zg+RKy4vjytNhOrkEHLRQC8vPZ3OhD8KVlw9lRQIZTlgjgFl8iMeeA==", "requires": { - "picomatch": "^2.2.1" + "@algolia/cache-common": "4.8.5" + } + }, + "@algolia/cache-common": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.8.5.tgz", + "integrity": "sha512-4SvRWnagKtwBFAy8Rsfmv0/Uk53fZL+6dy2idwdx6SjMGKSs0y1Qv+thb4h/k/H5MONisAoT9C2rgZ/mqwh5yw==" + }, + "@algolia/cache-in-memory": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.8.5.tgz", + "integrity": "sha512-XBBfqs28FbjwLboY3sxvuzBgYsuXdFsj2mUvkgxfb0GVEzwW4I0NM7KzSPwT+iht55WS1PgIOnynjmhPsrubCw==", + "requires": { + "@algolia/cache-common": "4.8.5" + } + }, + "@algolia/client-account": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.8.5.tgz", + "integrity": "sha512-DjXMpeCdY4J4IDBfowiG6Xl9ec/FhG1NpPQM0Uv4xXsc/TeeZ1JgbgNDhWe9jW0jBEALy+a/RmPrZ0vsxcadsg==", + "requires": { + "@algolia/client-common": "4.8.5", + "@algolia/client-search": "4.8.5", + "@algolia/transporter": "4.8.5" + } + }, + "@algolia/client-analytics": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.8.5.tgz", + "integrity": "sha512-PQEY+chbHmZnRJdaWsvUYzDpEPr60az0EPUexdouvXGZId15/SnDaXjnf89F7tYmCzkHdUtG4bSvPzAupQ4AFA==", + "requires": { + "@algolia/client-common": "4.8.5", + "@algolia/client-search": "4.8.5", + "@algolia/requester-common": "4.8.5", + "@algolia/transporter": "4.8.5" + } + }, + "@algolia/client-common": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.8.5.tgz", + "integrity": "sha512-Dn8vog2VrGsJeOcBMcSAEIjBtPyogzUBGlh1DtVd0m8GN6q+cImCESl6DY846M2PTYWsLBKBksq37eUfSe9FxQ==", + "requires": { + "@algolia/requester-common": "4.8.5", + "@algolia/transporter": "4.8.5" + } + }, + "@algolia/client-recommendation": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.8.5.tgz", + "integrity": "sha512-ffawCC1C25rCa8/JU2niRZgwr8aV9b2qsLVMo73GXFzi2lceXPAe9K68mt/BGHU+w7PFUwVHsV2VmB+G/HQRVw==", + "requires": { + "@algolia/client-common": "4.8.5", + "@algolia/requester-common": "4.8.5", + "@algolia/transporter": "4.8.5" + } + }, + "@algolia/client-search": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.8.5.tgz", + "integrity": "sha512-Ru2MljGZWrSQ0CVsDla11oGEPL/RinmVkLJfBtQ+/pk1868VfpAQFGKtOS/b8/xLrMA0Vm4EfC3Mgclk/p3KJA==", + "requires": { + "@algolia/client-common": "4.8.5", + "@algolia/requester-common": "4.8.5", + "@algolia/transporter": "4.8.5" + } + }, + "@algolia/logger-common": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.8.5.tgz", + "integrity": "sha512-PS6NS6bpED0rAxgCPGhjZJg9why0PnoVEE7ZoCbPq6lsAOc6FPlQLri4OiLyU7wx8RWDoVtOadyzulqAAsfPSQ==" + }, + "@algolia/logger-console": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.8.5.tgz", + "integrity": "sha512-3+4gLSbwzuGmrb5go3IZNcFIYVMSbB4c8UMtWEJ/gDBtgGZIvT6f/KlvVSOHIhthSxaM3Y13V6Qile/SpGqc6A==", + "requires": { + "@algolia/logger-common": "4.8.5" + } + }, + "@algolia/requester-browser-xhr": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.8.5.tgz", + "integrity": "sha512-M/Gf2vv/fU4+CqDW+wok7HPpEcLym3NtDzU9zaPzGYI/9X7o36581oyfnzt2pNfsXSQVj5a2pZVUWC3Z4SO27w==", + "requires": { + "@algolia/requester-common": "4.8.5" + } + }, + "@algolia/requester-common": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.8.5.tgz", + "integrity": "sha512-OIhsdwIrJVAlVlP7cwlt+RoR5AmxAoTGrFokOY9imVmgqXUUljdKO/DjhRL8vwYGFEidZ9efIjAIQ2B3XOhT9A==" + }, + "@algolia/requester-node-http": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.8.5.tgz", + "integrity": "sha512-viHAjfo53A3VSE7Bb/nzgpSMZ3prPp2qti7Wg8w7qxhntppKp3Fln6t4Vp+BoPOqruLsj139xXhheAKeRcYa0w==", + "requires": { + "@algolia/requester-common": "4.8.5" + } + }, + "@algolia/transporter": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.8.5.tgz", + "integrity": "sha512-Rb3cMlh/GoJK0+g+49GNA3IvR/EXsDEBwpyM+FOotSwxgiGt1wGBHM0K2v0GHwIEcuww02pl6KMDVlilA+qh0g==", + "requires": { + "@algolia/cache-common": "4.8.5", + "@algolia/logger-common": "4.8.5", + "@algolia/requester-common": "4.8.5" + } + }, + "@hashicorp/react-content": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-content/-/react-content-6.3.0.tgz", + "integrity": "sha512-B+QMlkMGryeNx3dGON4ExbzNvvll2ZXN3x+TkX80tUGClMI80MKjfSXiXIoVixlp22DMNG6wrnL42LC4WzZOxg==" + }, + "@hashicorp/react-head": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-head/-/react-head-1.2.0.tgz", + "integrity": "sha512-6BNmhsrzVwJFOAcT3WhSeDlCdtlD3d7vzhXOGfkpPYVnYRaIpLLC6seemAr/wqZhYB87W+KvFilz8vZcpDAZzQ==" + }, + "@hashicorp/react-inline-svg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", + "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" + }, + "@hashicorp/react-search": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-search/-/react-search-4.1.0.tgz", + "integrity": "sha512-TZChez9q/4bn/flQXRo0h/9B0kDMvin759hd8+vRrt1M3Qhz2C1TKpfZRKrX6dFZI8w4obGm1EzUzR130gdFfQ==", + "requires": { + "@hashicorp/react-inline-svg": "^1.0.2", + "@hashicorp/remark-plugins": "^3.0.0", + "algoliasearch": "^4.8.4", + "dotenv": "^8.2.0", + "glob": "^7.1.6", + "gray-matter": "^4.0.2", + "react-instantsearch-dom": "^6.9.0", + "remark": "^12.0.1", + "search-insights": "^1.6.0", + "unist-util-visit": "^2.0.3" + } + }, + "algoliasearch": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.8.5.tgz", + "integrity": "sha512-GjKjpeevpePEJYinGokASNtIkl1t5EseNMlqDNAc+sXE8+iyyeqTyiJsN7bwlRG2BIremuslE/NlwdEfUuBLJw==", + "requires": { + "@algolia/cache-browser-local-storage": "4.8.5", + "@algolia/cache-common": "4.8.5", + "@algolia/cache-in-memory": "4.8.5", + "@algolia/client-account": "4.8.5", + "@algolia/client-analytics": "4.8.5", + "@algolia/client-common": "4.8.5", + "@algolia/client-recommendation": "4.8.5", + "@algolia/client-search": "4.8.5", + "@algolia/logger-common": "4.8.5", + "@algolia/logger-console": "4.8.5", + "@algolia/requester-browser-xhr": "4.8.5", + "@algolia/requester-common": "4.8.5", + "@algolia/requester-node-http": "4.8.5", + "@algolia/transporter": "4.8.5" + } + }, + "algoliasearch-helper": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.4.4.tgz", + "integrity": "sha512-OjyVLjykaYKCMxxRMZNiwLp8CS310E0qAeIY2NaublcmLAh8/SL19+zYHp7XCLtMem2ZXwl3ywMiA32O9jszuw==", + "requires": { + "events": "^1.1.1" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "react-instantsearch-core": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.10.0.tgz", + "integrity": "sha512-bn8rh/od4nw43caOiAsArA2Pw/JXX/7jL+nYe0n/Se66P7VR7UIA1i1ycthOrJzXCn9iNVFJFNMfyAN0HYVaWg==", + "requires": { + "@babel/runtime": "^7.1.2", + "algoliasearch-helper": "^3.4.3", + "prop-types": "^15.6.2", + "react-fast-compare": "^3.0.0" + } + }, + "react-instantsearch-dom": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.10.0.tgz", + "integrity": "sha512-t1IGn1i4btp9a8wNNV/OCYwfJwCx5CuCP6WNwBxYY1QeL27RKGaWPxvz6FjfRFCfrOvD2556STyvVriyGhDoeg==", + "requires": { + "@babel/runtime": "^7.1.2", + "algoliasearch-helper": "^3.4.3", + "classnames": "^2.2.5", + "prop-types": "^15.6.2", + "react-fast-compare": "^3.0.0", + "react-instantsearch-core": "^6.10.0" } } } }, "@hashicorp/react-docs-sidenav": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-sidenav/-/react-docs-sidenav-6.0.1.tgz", - "integrity": "sha512-M1G9iehFrNCaBj0v9l9gAi6nRSc43wdkIf6OUeQS82I3QkIKzrBw3hx1PJpElkqoq+CJKk45yZv9jFFjEF3yxg==", + "version": "6.1.1-alpha.16", + "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-sidenav/-/react-docs-sidenav-6.1.1-alpha.16.tgz", + "integrity": "sha512-RpPjNwMNe5L2LA1vvgp496CauVJ8wLnKge1lPBZKL5931jR1SFEMwuWLB8R6Pe2HmkIC55nPB/c43GrmPN4FFw==", "requires": { - "@hashicorp/react-link-wrap": "^0.0.3", "fuzzysearch": "1.0.3" } }, @@ -2930,9 +3134,9 @@ } }, "@hashicorp/react-inline-svg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.0.tgz", - "integrity": "sha512-xzo9ubozATeW+irl93rkmtQulNNctgYzxUXxFn1Lcy9Y8L7bkLz7CROotv7TiUohkTCHPMzP4aBC8JPfTS1crw==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-5.0.0.tgz", + "integrity": "sha512-Nivb1ye+gquXeTaxhu5s0GBRGBoEptqJVaYC8F+77firw+e6D6VlOKSn6VLqTU9hVkEKFhOJUA+gUNAXGEcfXg==" }, "@hashicorp/react-link-wrap": { "version": "0.0.3", @@ -2967,6 +3171,13 @@ "requires": { "@hashicorp/react-inline-svg": "^1.0.0", "slugify": "^1.3.6" + }, + "dependencies": { + "@hashicorp/react-inline-svg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", + "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" + } } } } @@ -3037,9 +3248,9 @@ } }, "@hashicorp/react-tabs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@hashicorp/react-tabs/-/react-tabs-3.0.0.tgz", - "integrity": "sha512-SsLMqUuntkMufnW1jrfhRGyxOZ46+7fHzh2G4v8cMODN8TsR3bTZdimXNA5vNi3p0/v4Mslp+F83f9+NKSNELg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hashicorp/react-tabs/-/react-tabs-3.0.1.tgz", + "integrity": "sha512-utidkiSZ9o9ewMSH7DD9AMBw+XRjOjNB/JU4P9g4F855DVquTIbzOQD1U+/5m/VTbeQvsPyWOWwkFLM6boEr0g==", "requires": { "@hashicorp/react-global-styles": "^4.5.0", "@hashicorp/react-inline-svg": "^1.0.2", @@ -3529,9 +3740,9 @@ } }, "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", + "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", "requires": { "bail": "^1.0.0", "extend": "^3.0.0", @@ -3923,14 +4134,14 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "array-includes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", - "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", "is-string": "^1.0.5" } }, @@ -4067,9 +4278,9 @@ } }, "axe-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", - "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==" + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz", + "integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg==" }, "axobject-query": { "version": "2.2.0", @@ -5418,9 +5629,9 @@ } }, "core-js-pure": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.3.tgz", - "integrity": "sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA==" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.0.tgz", + "integrity": "sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg==" }, "core-util-is": { "version": "1.0.2", @@ -6358,11 +6569,11 @@ } }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } } @@ -6822,6 +7033,11 @@ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" }, + "fast-equals": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-1.6.3.tgz", + "integrity": "sha512-4WKW0AL5+WEqO0zWavAfYGY1qwLsBgE//DN4TTcVEN2UlINgkv9b3vm2iHicoenWKSX9mKWmGOsU/iI5IST7pQ==" + }, "fast-glob": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", @@ -6845,15 +7061,20 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fast-stringify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-stringify/-/fast-stringify-1.1.2.tgz", + "integrity": "sha512-SfslXjiH8km0WnRiuPfpUKwlZjW5I878qsOm+2x8x3TgqmElOOLh1rgJFb+PolNdNRK3r8urEefqx0wt7vx1dA==" + }, "fastest-levenshtein": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" }, "fastq": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", - "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "requires": { "reusify": "^1.0.4" } @@ -6876,9 +7097,9 @@ } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "requires": { "flat-cache": "^3.0.4" } @@ -7024,9 +7245,9 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -8852,9 +9073,9 @@ } }, "listr2": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.1.tgz", - "integrity": "sha512-8Zoxe7s/8nNr4bJ8bdAduHD8uJce+exmMmUWTXlq0WuUdffnH3muisHPHPFtW2vvOfohIsq7FGCaguUxN/h3Iw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.3.tgz", + "integrity": "sha512-CeQrTeot/OQTrd2loXEBMfwlOjlPeHu/9alA8UyEoiEyncpj/mv2zRLgx32JzO62wbJIBSKgGM2L23XeOwrRlg==", "requires": { "chalk": "^4.1.0", "cli-truncate": "^2.1.0", @@ -9313,6 +9534,11 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, + "micro-memoize": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-2.1.2.tgz", + "integrity": "sha512-COjNutiFgnDHXZEIM/jYuZPwq2h8zMUeScf6Sh6so98a+REqdlpaNS7Cb2ffGfK5I+xfgoA3Rx49NGuNJTJq3w==" + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -9462,6 +9688,16 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "optional": true }, + "moize": { + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/moize/-/moize-5.4.7.tgz", + "integrity": "sha512-7PZH8QFJ51cIVtDv7wfUREBd3gL59JB0v/ARA3RI9zkSRa9LyGjS1Bdldii2J1/NQXRQ/3OOVOSdnZrCcVaZlw==", + "requires": { + "fast-equals": "^1.6.0", + "fast-stringify": "^1.1.0", + "micro-memoize": "^2.1.1" + } + }, "mozjpeg": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.0.0.tgz", @@ -10138,24 +10374,24 @@ } }, "object.fromentries": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", - "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", + "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.18.0-next.2" } }, "object.pick": { @@ -10167,13 +10403,13 @@ } }, "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -11307,6 +11543,11 @@ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, + "queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" + }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -11653,9 +11894,9 @@ }, "dependencies": { "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", + "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", "requires": { "bail": "^1.0.0", "extend": "^3.0.0", @@ -11941,14 +12182,17 @@ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "run-parallel": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", - "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } }, "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", "requires": { "tslib": "^1.9.0" } @@ -12722,34 +12966,34 @@ } }, "string.prototype.matchall": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz", - "integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", + "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", + "es-abstract": "^1.18.0-next.2", "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3" + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" } }, "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, @@ -12965,9 +13209,9 @@ }, "dependencies": { "ajv": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz", - "integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -13554,9 +13798,9 @@ } }, "tlds": { - "version": "1.216.0", - "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.216.0.tgz", - "integrity": "sha512-y9A+eMRKLdAOclcFRTk3durpvCWiEdWcQhCOopCO654pckH9+o5Z5VgBsTTAFqtyxB8yFRXSG1q7BCCeHyrm0w==" + "version": "1.218.0", + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.218.0.tgz", + "integrity": "sha512-JpD3eSrYaIFlU/OvtI5WTEK+v5qXZSeUifz4hT2bJsJKx5ykjZvg6i5yXVBJNjoN3XbTCtryc7H5v8B16yHfMg==" }, "tmp": { "version": "0.0.33", @@ -14017,9 +14261,9 @@ }, "dependencies": { "mime": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", - "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" } } }, @@ -14395,9 +14639,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + "version": "20.2.6", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", + "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==" }, "yauzl": { "version": "2.10.0", diff --git a/website/package.json b/website/package.json index b006a289e..572621182 100644 --- a/website/package.json +++ b/website/package.json @@ -5,11 +5,12 @@ "author": "HashiCorp", "dependencies": { "@hashicorp/mktg-global-styles": "2.1.0", - "@hashicorp/nextjs-scripts": "16.0.1", + "@hashicorp/nextjs-scripts": "16.2.0", "@hashicorp/react-button": "4.0.0", - "@hashicorp/react-docs-page": "^10.3.2", + "@hashicorp/react-docs-page": "10.9.4-alpha.18", "@hashicorp/react-hashi-stack-menu": "^1.1.0", "@hashicorp/react-head": "1.1.6", + "@hashicorp/react-inline-svg": "5.0.0", "@hashicorp/react-markdown-page": "^0.1.0", "@hashicorp/react-product-downloader": "4.0.2", "@hashicorp/react-search": "^3.0.0", diff --git a/website/pages/docs/[[...page]].jsx b/website/pages/docs/[[...page]].jsx index ec5008ce8..fe7d637f4 100644 --- a/website/pages/docs/[[...page]].jsx +++ b/website/pages/docs/[[...page]].jsx @@ -1,33 +1,75 @@ import { productName, productSlug } from 'data/metadata' -import order from 'data/docs-navigation.js' import DocsPage from '@hashicorp/react-docs-page' +import PluginTierLabel from 'components/plugin-tier-label' +import DevAlert from 'components/dev-alert' +// Imports below are only used server-side import { generateStaticPaths, generateStaticProps, -} from '@hashicorp/react-docs-page/server' +} from 'components/remote-plugin-docs/server' -const subpath = 'docs' +// Configure the docs path +const BASE_ROUTE = 'docs' +const NAV_DATA = 'data/docs-nav-data.json' +const CONTENT_DIR = 'content/docs' +// override default "main" value for branch for "edit on this page" +const MAIN_BRANCH = 'master' +// add remote plugin docs loading +const OPTIONS = { + remotePluginsFile: 'data/docs-remote-plugins.json', + additionalComponents: { PluginTierLabel }, +} -export default function DocsLayout(props) { +function DocsLayout({ isDevMissingRemotePlugins, ...props }) { return ( - + <> + {isDevMissingRemotePlugins ? ( + + + Note for local development + +

+ + 🚨 + {' '} + This preview is missing plugin docs pulled from + remote repos. +

+ +

+ + 🛠 + {' '} + To preview docs pulled from plugin repos, please + include a GITHUB_API_TOKEN in{' '} + website/.env.local. +

+
+ ) : null} + + ) } export async function getStaticPaths() { - return generateStaticPaths(subpath) + const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR, OPTIONS) + return { paths, fallback: false } } export async function getStaticProps({ params }) { - return generateStaticProps({ - subpath, - productName, + const props = await generateStaticProps( + NAV_DATA, + CONTENT_DIR, params, - }) + OPTIONS + ) + return { props } } + +export default DocsLayout diff --git a/website/pages/guides/[[...page]].jsx b/website/pages/guides/[[...page]].jsx index cc5222ddd..3eef1397e 100644 --- a/website/pages/guides/[[...page]].jsx +++ b/website/pages/guides/[[...page]].jsx @@ -1,33 +1,33 @@ import { productName, productSlug } from 'data/metadata' -import order from 'data/guides-navigation.js' import DocsPage from '@hashicorp/react-docs-page' +// Imports below are only used server-side import { generateStaticPaths, generateStaticProps, } from '@hashicorp/react-docs-page/server' -const subpath = 'guides' +// Configure the docs path +const BASE_ROUTE = 'guides' +const NAV_DATA = 'data/guides-nav-data.json' +const CONTENT_DIR = 'content/guides' export default function GuidesLayout(props) { return ( ) } export async function getStaticPaths() { - return generateStaticPaths(subpath) + const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR) + return { paths, fallback: false } } export async function getStaticProps({ params }) { - return generateStaticProps({ - subpath, - productName, - params, - }) + const props = await generateStaticProps(NAV_DATA, CONTENT_DIR, params) + return { props } } diff --git a/website/pages/intro/[[...page]].jsx b/website/pages/intro/[[...page]].jsx index 87b6efa99..7d45b949a 100644 --- a/website/pages/intro/[[...page]].jsx +++ b/website/pages/intro/[[...page]].jsx @@ -1,33 +1,33 @@ import { productName, productSlug } from 'data/metadata' -import order from 'data/intro-navigation.js' import DocsPage from '@hashicorp/react-docs-page' +// Imports below are only used server-side import { generateStaticPaths, generateStaticProps, } from '@hashicorp/react-docs-page/server' -const subpath = 'intro' +// Configure the docs path +const BASE_ROUTE = 'intro' +const NAV_DATA = 'data/intro-nav-data.json' +const CONTENT_DIR = 'content/intro' export default function IntroLayout(props) { return ( ) } export async function getStaticPaths() { - return generateStaticPaths(subpath) + const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR) + return { paths, fallback: false } } export async function getStaticProps({ params }) { - return generateStaticProps({ - subpath, - productName, - params, - }) + const props = await generateStaticProps(NAV_DATA, CONTENT_DIR, params) + return { props } } diff --git a/website/pages/style.css b/website/pages/style.css index eb1e05b89..5cc72072b 100644 --- a/website/pages/style.css +++ b/website/pages/style.css @@ -12,7 +12,6 @@ @import '~@hashicorp/react-consent-manager/style.css'; @import '~@hashicorp/react-content/style.css'; @import '~@hashicorp/react-docs-page/style.css'; -@import '~@hashicorp/react-docs-sidenav/style.css'; @import '~@hashicorp/react-product-downloader/dist/style.css'; @import '~@hashicorp/react-search/style.css'; @import '~@hashicorp/react-subnav/style.css'; From 10a5b0e7d833de1d294d3fb36bc99424cda92920 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 3 Mar 2021 16:15:54 -0500 Subject: [PATCH 059/212] Update HCL source example block (#10720) --- builder/amazon/common/access_config.go | 2 +- .../content/partials/builder/amazon/common/AssumeRoleConfig.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/amazon/common/access_config.go b/builder/amazon/common/access_config.go index befbb6be6..2103aa83b 100644 --- a/builder/amazon/common/access_config.go +++ b/builder/amazon/common/access_config.go @@ -29,7 +29,7 @@ import ( // HCL config example: // // ```HCL -// source "example" "amazon-ebs"{ +// source "amazon-ebs" "example" { // assume_role { // role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" // session_name = "SESSION_NAME" diff --git a/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx b/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx index 6eb7bb362..bacfe40a1 100644 --- a/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx +++ b/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx @@ -8,7 +8,7 @@ Usage example: HCL config example: ```HCL -source "example" "amazon-ebs"{ +source "amazon-ebs" "example" { assume_role { role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" session_name = "SESSION_NAME" From 22cb31cb7be401ff9e4aef61eb671c257673c11d Mon Sep 17 00:00:00 2001 From: Jiankun Lu Date: Wed, 3 Mar 2021 16:12:25 -0800 Subject: [PATCH 060/212] Update public GCP image project as gce-uefi-images is be deprecated --- builder/googlecompute/driver_gce.go | 1 - 1 file changed, 1 deletion(-) diff --git a/builder/googlecompute/driver_gce.go b/builder/googlecompute/driver_gce.go index dfd1c9c06..16a415cfc 100644 --- a/builder/googlecompute/driver_gce.go +++ b/builder/googlecompute/driver_gce.go @@ -253,7 +253,6 @@ func (d *driverGCE) GetImage(name string, fromFamily bool) (*Image, error) { "ubuntu-os-cloud", "windows-cloud", "windows-sql-cloud", - "gce-uefi-images", "gce-nvme", // misc "google-containers", From 9df637d1f31da2ebdd03e09eb3f1301750426236 Mon Sep 17 00:00:00 2001 From: "Forrest C. Shields II" Date: Thu, 4 Mar 2021 08:33:42 -0700 Subject: [PATCH 061/212] Fix syntax in BlockDevice JSON example (#10719) * Fix syntax in BlockDevice JSON example Keys must be quoted in JSON. * Update comment to match generated docs Co-authored-by: Wilken Rivera --- builder/amazon/common/block_device.go | 2 +- website/content/partials/builder/amazon/common/BlockDevice.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/amazon/common/block_device.go b/builder/amazon/common/block_device.go index c8e5fcc31..43d9135fe 100644 --- a/builder/amazon/common/block_device.go +++ b/builder/amazon/common/block_device.go @@ -42,7 +42,7 @@ const ( // // JSON example: // ```json -// launch_block_device_mappings: [ +// "launch_block_device_mappings": [ // { // "device_name": "/dev/sda1", // "encrypted": true, diff --git a/website/content/partials/builder/amazon/common/BlockDevice.mdx b/website/content/partials/builder/amazon/common/BlockDevice.mdx index 2046e4e37..29c68b441 100644 --- a/website/content/partials/builder/amazon/common/BlockDevice.mdx +++ b/website/content/partials/builder/amazon/common/BlockDevice.mdx @@ -20,7 +20,7 @@ launch_block_device_mappings { JSON example: ```json -launch_block_device_mappings: [ +"launch_block_device_mappings": [ { "device_name": "/dev/sda1", "encrypted": true, From 610dde7f02327b6c37a480b7074e07cc09e64814 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Fri, 5 Mar 2021 11:10:00 +0100 Subject: [PATCH 062/212] check for nil config map (#10730) --- command/hcl2_upgrade.go | 9 +++++++++ .../hcl2_upgrade/complete/expected.pkr.hcl | 7 +++++++ command/test-fixtures/hcl2_upgrade/complete/input.json | 10 ++++++++++ 3 files changed, 26 insertions(+) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index b0647a23e..bcc90a6cd 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -1033,7 +1033,12 @@ func writeProvisioner(typeName string, provisioner *template.Provisioner) []byte provisionerContent := hclwrite.NewEmptyFile() body := provisionerContent.Body() block := body.AppendNewBlock(typeName, []string{provisioner.Type}) + cfg := provisioner.Config + if cfg == nil { + cfg = map[string]interface{}{} + } + if len(provisioner.Except) > 0 { cfg["except"] = provisioner.Except } @@ -1086,6 +1091,10 @@ func (p *PostProcessorParser) Parse(tpl *template.Template) error { ppBody.SetAttributeValue("keep_input_artifact", cty.BoolVal(*pp.KeepInputArtifact)) } cfg := pp.Config + if cfg == nil { + cfg = map[string]interface{}{} + } + if len(pp.Except) > 0 { cfg["except"] = pp.Except } diff --git a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl index 4293048e5..67e127138 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl @@ -172,6 +172,11 @@ source "amazon-ebs" "named_builder" { build { sources = ["source.amazon-ebs.autogenerated_1", "source.amazon-ebs.named_builder"] + provisioner "breakpoint" { + only = ["amazon-ebs"] + pause_before = "5s" + } + provisioner "shell" { except = ["amazon-ebs"] inline = ["echo ${var.secret_account}", "echo ${build.ID}", "echo ${build.SSHPublicKey} | head -c 14", "echo ${path.root} is not ${path.cwd}", "echo ${packer.version}", "echo ${uuidv4()}"] @@ -277,5 +282,7 @@ build { Description = "packer amazon-import ${local.timestamp}" } } + post-processor "compress" { + } } } diff --git a/command/test-fixtures/hcl2_upgrade/complete/input.json b/command/test-fixtures/hcl2_upgrade/complete/input.json index 3c7461ed6..9d7af97eb 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/input.json +++ b/command/test-fixtures/hcl2_upgrade/complete/input.json @@ -116,6 +116,13 @@ } ], "provisioners": [ + { + "type": "breakpoint", + "only": [ + "amazon-ebs" + ], + "pause_before": "5s" + }, { "type": "shell", "except": [ @@ -230,6 +237,9 @@ "tags": { "Description": "packer amazon-import {{timestamp}}" } + }, + { + "type": "compress" } ] ] From 6b5a3dacd44ff90b91848083889076340d9d2917 Mon Sep 17 00:00:00 2001 From: Hosh Date: Fri, 5 Mar 2021 17:06:47 +0000 Subject: [PATCH 063/212] Fix multiple files downloading overwrites same file (#10711) --- provisioner/file/provisioner.go | 4 +- provisioner/file/provisioner_test.go | 63 ++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/provisioner/file/provisioner.go b/provisioner/file/provisioner.go index fe16d7590..fedbae922 100644 --- a/provisioner/file/provisioner.go +++ b/provisioner/file/provisioner.go @@ -138,12 +138,12 @@ func (p *Provisioner) ProvisionDownload(ui packersdk.Ui, comm packersdk.Communic return fmt.Errorf("Error interpolating destination: %s", err) } for _, src := range p.config.Sources { + dst := dst src, err := interpolate.Render(src, &p.config.ctx) if err != nil { return fmt.Errorf("Error interpolating source: %s", err) } - ui.Say(fmt.Sprintf("Downloading %s => %s", src, dst)) // ensure destination dir exists. p.config.Destination may either be a file or a dir. dir := dst // if it doesn't end with a /, set dir as the parent dir @@ -152,6 +152,8 @@ func (p *Provisioner) ProvisionDownload(ui packersdk.Ui, comm packersdk.Communic } else if !strings.HasSuffix(src, "/") && !strings.HasSuffix(src, "*") { dst = filepath.Join(dst, filepath.Base(src)) } + ui.Say(fmt.Sprintf("Downloading %s => %s", src, dst)) + if dir != "" { err := os.MkdirAll(dir, os.FileMode(0755)) if err != nil { diff --git a/provisioner/file/provisioner_test.go b/provisioner/file/provisioner_test.go index 0e6f8061e..0df7680a6 100644 --- a/provisioner/file/provisioner_test.go +++ b/provisioner/file/provisioner_test.go @@ -272,6 +272,69 @@ func TestProvisionerProvision_SendsFileMultipleDirs(t *testing.T) { } } +func TestProvisionerProvision_DownloadsMultipleFilesToFolder(t *testing.T) { + var p Provisioner + + tf1, err := ioutil.TempFile("", "packer") + if err != nil { + t.Fatalf("error tempfile: %s", err) + } + defer os.Remove(tf1.Name()) + + if _, err = tf1.Write([]byte("hello")); err != nil { + t.Fatalf("error writing tempfile: %s", err) + } + + tf2, err := ioutil.TempFile("", "packer") + if err != nil { + t.Fatalf("error tempfile: %s", err) + } + defer os.Remove(tf2.Name()) + + if _, err = tf2.Write([]byte("hello")); err != nil { + t.Fatalf("error writing tempfile: %s", err) + } + + config := map[string]interface{}{ + "sources": []string{tf1.Name(), tf2.Name()}, + "destination": "something/", + "direction": "download", + } + + if err := p.Prepare(config); err != nil { + t.Fatalf("err: %s", err) + } + + b := bytes.NewBuffer(nil) + ui := &packersdk.BasicUi{ + Writer: b, + PB: &packersdk.NoopProgressTracker{}, + } + comm := &packersdk.MockCommunicator{} + err = p.Provision(context.Background(), ui, comm, make(map[string]interface{})) + if err != nil { + t.Fatalf("should successfully provision: %s", err) + } + + if !strings.Contains(b.String(), tf1.Name()) { + t.Errorf("should print source filenam '%s'e; output: \n%s", tf1.Name(), b.String()) + } + + if !strings.Contains(b.String(), tf2.Name()) { + t.Errorf("should second source filename '%s'; output: \n%s", tf2.Name(), b.String()) + } + + dst1 := filepath.Join("something", filepath.Base(tf1.Name())) + if !strings.Contains(b.String(), dst1) { + t.Errorf("should print destination filename '%s'; output: \n%s", dst1, b.String()) + } + + dst2 := filepath.Join("something", filepath.Base(tf2.Name())) + if !strings.Contains(b.String(), dst2) { + t.Errorf("should print destination filename '%s'; output: \n%s", dst2, b.String()) + } +} + func TestProvisionerProvision_SendsFileMultipleFilesToFolder(t *testing.T) { var p Provisioner From a5b0e37d7ea17762b0e99bd5fcf5d976cb00be84 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 24 Feb 2021 16:32:27 -0800 Subject: [PATCH 064/212] docker extraction POC --- builder/docker/artifact_export_test.go | 11 - builder/docker/artifact_import_test.go | 58 ----- builder/docker/builder_test.go | 11 - builder/docker/communicator_test.go | 239 ------------------ builder/docker/config_test.go | 147 ----------- builder/docker/driver_docker_test.go | 7 - builder/docker/driver_mock_test.go | 7 - builder/docker/step_commit_test.go | 68 ----- builder/docker/step_export_test.go | 101 -------- builder/docker/step_pull_test.go | 104 -------- builder/docker/step_run_test.go | 97 ------- .../docker/step_set_generated_data_test.go | 51 ---- builder/docker/step_temp_dir_test.go | 52 ---- builder/docker/step_test.go | 21 -- .../docker/test-fixtures/manycakes/chocolate | 1 - .../docker/test-fixtures/manycakes/vanilla | 1 - .../docker/test-fixtures/onecakes/strawberry | 1 - builder/docker/version/version.go | 13 - command/plugin.go | 10 - go.mod | 1 + go.sum | 53 +--- .../docker-import/post-processor_test.go | 11 - .../docker-import/version/version.go | 13 - .../docker-push/post-processor_test.go | 121 --------- post-processor/docker-push/version/version.go | 13 - .../docker-save/post-processor_test.go | 11 - post-processor/docker-save/version/version.go | 13 - .../docker-tag/post-processor_test.go | 196 -------------- post-processor/docker-tag/version/version.go | 13 - provisioner/ansible-local/provisioner_test.go | 2 +- .../builder}/docker/artifact_export.go | 0 .../builder}/docker/artifact_import.go | 0 .../builder}/docker/builder.go | 0 .../builder}/docker/comm.go | 0 .../builder}/docker/communicator.go | 0 .../builder}/docker/config.go | 0 .../builder}/docker/config.hcl2spec.go | 0 .../builder}/docker/driver.go | 0 .../builder}/docker/driver_docker.go | 0 .../builder}/docker/driver_mock.go | 0 .../builder}/docker/ecr_login.go | 69 ++++- .../builder}/docker/exec.go | 0 .../builder}/docker/step_commit.go | 0 .../builder}/docker/step_connect_docker.go | 0 .../builder}/docker/step_export.go | 0 .../builder}/docker/step_pull.go | 0 .../builder}/docker/step_run.go | 0 .../docker/step_set_generated_data.go | 0 .../builder}/docker/step_temp_dir.go | 0 .../docker/windows_container_communicator.go | 0 .../docker-import/post-processor.go | 5 +- .../docker-import/post-processor.hcl2spec.go | 0 .../docker-push/post-processor.go | 6 +- .../docker-push/post-processor.hcl2spec.go | 0 .../docker-save/post-processor.go | 6 +- .../docker-save/post-processor.hcl2spec.go | 0 .../docker-tag/post-processor.go | 4 +- .../docker-tag/post-processor.hcl2spec.go | 0 vendor/modules.txt | 6 + 59 files changed, 79 insertions(+), 1464 deletions(-) delete mode 100644 builder/docker/artifact_export_test.go delete mode 100644 builder/docker/artifact_import_test.go delete mode 100644 builder/docker/builder_test.go delete mode 100644 builder/docker/communicator_test.go delete mode 100644 builder/docker/config_test.go delete mode 100644 builder/docker/driver_docker_test.go delete mode 100644 builder/docker/driver_mock_test.go delete mode 100644 builder/docker/step_commit_test.go delete mode 100644 builder/docker/step_export_test.go delete mode 100644 builder/docker/step_pull_test.go delete mode 100644 builder/docker/step_run_test.go delete mode 100644 builder/docker/step_set_generated_data_test.go delete mode 100644 builder/docker/step_temp_dir_test.go delete mode 100644 builder/docker/step_test.go delete mode 100644 builder/docker/test-fixtures/manycakes/chocolate delete mode 100644 builder/docker/test-fixtures/manycakes/vanilla delete mode 100644 builder/docker/test-fixtures/onecakes/strawberry delete mode 100644 builder/docker/version/version.go delete mode 100644 post-processor/docker-import/post-processor_test.go delete mode 100644 post-processor/docker-import/version/version.go delete mode 100644 post-processor/docker-push/post-processor_test.go delete mode 100644 post-processor/docker-push/version/version.go delete mode 100644 post-processor/docker-save/post-processor_test.go delete mode 100644 post-processor/docker-save/version/version.go delete mode 100644 post-processor/docker-tag/post-processor_test.go delete mode 100644 post-processor/docker-tag/version/version.go rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/artifact_export.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/artifact_import.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/builder.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/comm.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/communicator.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/config.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/config.hcl2spec.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/driver.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/driver_docker.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/driver_mock.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/ecr_login.go (53%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/exec.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_commit.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_connect_docker.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_export.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_pull.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_run.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_set_generated_data.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/step_temp_dir.go (100%) rename {builder => vendor/github.com/hashicorp/packer-plugin-docker/builder}/docker/windows_container_communicator.go (100%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-import/post-processor.go (94%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-import/post-processor.hcl2spec.go (100%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-push/post-processor.go (93%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-push/post-processor.hcl2spec.go (100%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-save/post-processor.go (90%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-save/post-processor.hcl2spec.go (100%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-tag/post-processor.go (95%) rename {post-processor => vendor/github.com/hashicorp/packer-plugin-docker/post-processor}/docker-tag/post-processor.hcl2spec.go (100%) diff --git a/builder/docker/artifact_export_test.go b/builder/docker/artifact_export_test.go deleted file mode 100644 index d8514b9a2..000000000 --- a/builder/docker/artifact_export_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package docker - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func TestExportArtifact_impl(t *testing.T) { - var _ packersdk.Artifact = new(ExportArtifact) -} diff --git a/builder/docker/artifact_import_test.go b/builder/docker/artifact_import_test.go deleted file mode 100644 index 648290262..000000000 --- a/builder/docker/artifact_import_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package docker - -import ( - "errors" - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func TestImportArtifact_impl(t *testing.T) { - var _ packersdk.Artifact = new(ImportArtifact) -} - -func TestImportArtifactBuilderId(t *testing.T) { - a := &ImportArtifact{BuilderIdValue: "foo"} - if a.BuilderId() != "foo" { - t.Fatalf("bad: %#v", a.BuilderId()) - } -} - -func TestImportArtifactFiles(t *testing.T) { - a := &ImportArtifact{} - if a.Files() != nil { - t.Fatalf("bad: %#v", a.Files()) - } -} - -func TestImportArtifactId(t *testing.T) { - a := &ImportArtifact{IdValue: "foo"} - if a.Id() != "foo" { - t.Fatalf("bad: %#v", a.Id()) - } -} - -func TestImportArtifactDestroy(t *testing.T) { - d := new(MockDriver) - a := &ImportArtifact{ - Driver: d, - IdValue: "foo", - } - - // No error - if err := a.Destroy(); err != nil { - t.Fatalf("err: %s", err) - } - if !d.DeleteImageCalled { - t.Fatal("delete image should be called") - } - if d.DeleteImageId != "foo" { - t.Fatalf("bad: %#v", d.DeleteImageId) - } - - // With an error - d.DeleteImageErr = errors.New("foo") - if err := a.Destroy(); err != d.DeleteImageErr { - t.Fatalf("err: %#v", err) - } -} diff --git a/builder/docker/builder_test.go b/builder/docker/builder_test.go deleted file mode 100644 index 377483148..000000000 --- a/builder/docker/builder_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package docker - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func TestBuilder_implBuilder(t *testing.T) { - var _ packersdk.Builder = new(Builder) -} diff --git a/builder/docker/communicator_test.go b/builder/docker/communicator_test.go deleted file mode 100644 index 275751c0c..000000000 --- a/builder/docker/communicator_test.go +++ /dev/null @@ -1,239 +0,0 @@ -package docker - -import ( - "crypto/sha256" - "encoding/json" - "fmt" - "io/ioutil" - "os" - "os/exec" - "testing" - - builderT "github.com/hashicorp/packer-plugin-sdk/acctest" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -// RenderConfig helps create dynamic packer template configs for parsing by -// builderT without having to write the config to a file. -func RenderConfig(builderConfig map[string]interface{}, provisionerConfig []map[string]interface{}) string { - // set up basic build template - t := map[string][]map[string]interface{}{ - "builders": { - // Setup basic docker config - map[string]interface{}{ - "type": "test", - "image": "ubuntu", - "discard": true, - }, - }, - "provisioners": []map[string]interface{}{}, - } - // apply special builder overrides - for k, v := range builderConfig { - t["builders"][0][k] = v - } - // Apply special provisioner overrides - t["provisioners"] = append(t["provisioners"], provisionerConfig...) - - j, _ := json.Marshal(t) - return string(j) -} - -// TestUploadDownload verifies that basic upload / download functionality works -func TestUploadDownload(t *testing.T) { - if os.Getenv("PACKER_ACC") == "" { - t.Skip("This test is only run with PACKER_ACC=1") - } - - dockerBuilderExtraConfig := map[string]interface{}{ - "run_command": []string{"-d", "-i", "-t", "{{.Image}}", "/bin/sh"}, - } - - dockerProvisionerConfig := []map[string]interface{}{ - { - "type": "file", - "source": "test-fixtures/onecakes/strawberry", - "destination": "/strawberry-cake", - }, - { - "type": "file", - "source": "/strawberry-cake", - "destination": "my-strawberry-cake", - "direction": "download", - }, - } - - configString := RenderConfig(dockerBuilderExtraConfig, dockerProvisionerConfig) - - // this should be a precheck - cmd := exec.Command("docker", "-v") - err := cmd.Run() - if err != nil { - t.Error("docker command not found; please make sure docker is installed") - } - - builderT.Test(t, builderT.TestCase{ - Builder: &Builder{}, - Template: configString, - Check: func(a []packersdk.Artifact) error { - // Verify that the thing we downloaded is the same thing we sent up. - // Complain loudly if it isn't. - inputFile, err := ioutil.ReadFile("test-fixtures/onecakes/strawberry") - if err != nil { - return fmt.Errorf("Unable to read input file: %s", err) - } - outputFile, err := ioutil.ReadFile("my-strawberry-cake") - if err != nil { - return fmt.Errorf("Unable to read output file: %s", err) - } - if sha256.Sum256(inputFile) != sha256.Sum256(outputFile) { - return fmt.Errorf("Input and output files do not match\n"+ - "Input:\n%s\nOutput:\n%s\n", inputFile, outputFile) - } - return nil - }, - Teardown: func() error { - // Cleanup. Honestly I don't know why you would want to get rid - // of my strawberry cake. It's so tasty! Do you not like cake? Are you a - // cake-hater? Or are you keeping all the cake all for yourself? So selfish! - os.Remove("my-strawberry-cake") - return nil - }, - }) -} - -// TestLargeDownload verifies that files are the appropriate size after being -// downloaded. This is to identify and fix the race condition in #2793. You may -// need to use github.com/cbednarski/rerun to verify since this problem occurs -// only intermittently. -func TestLargeDownload(t *testing.T) { - if os.Getenv("PACKER_ACC") == "" { - t.Skip("This test is only run with PACKER_ACC=1") - } - - dockerProvisionerConfig := []map[string]interface{}{ - { - "type": "shell", - "inline": []string{ - "dd if=/dev/urandom of=/tmp/cupcake bs=1M count=2", - "dd if=/dev/urandom of=/tmp/bigcake bs=1M count=100", - "sync", - "md5sum /tmp/cupcake /tmp/bigcake", - }, - }, - { - "type": "file", - "source": "/tmp/cupcake", - "destination": "cupcake", - "direction": "download", - }, - { - "type": "file", - "source": "/tmp/bigcake", - "destination": "bigcake", - "direction": "download", - }, - } - - configString := RenderConfig(map[string]interface{}{}, dockerProvisionerConfig) - - // this should be a precheck - cmd := exec.Command("docker", "-v") - err := cmd.Run() - if err != nil { - t.Error("docker command not found; please make sure docker is installed") - } - - builderT.Test(t, builderT.TestCase{ - Builder: &Builder{}, - Template: configString, - Check: func(a []packersdk.Artifact) error { - // Verify that the things we downloaded are the right size. Complain loudly - // if they are not. - // - // cupcake should be 2097152 bytes - // bigcake should be 104857600 bytes - cupcake, err := os.Stat("cupcake") - if err != nil { - t.Fatalf("Unable to stat cupcake file: %s", err) - } - cupcakeExpected := int64(2097152) - if cupcake.Size() != cupcakeExpected { - t.Errorf("Expected cupcake to be %d bytes; found %d", cupcakeExpected, cupcake.Size()) - } - - bigcake, err := os.Stat("bigcake") - if err != nil { - t.Fatalf("Unable to stat bigcake file: %s", err) - } - bigcakeExpected := int64(104857600) - if bigcake.Size() != bigcakeExpected { - t.Errorf("Expected bigcake to be %d bytes; found %d", bigcakeExpected, bigcake.Size()) - } - - // TODO if we can, calculate a sha inside the container and compare to the - // one we get after we pull it down. We will probably have to parse the log - // or ui output to do this because we use /dev/urandom to create the file. - - // if sha256.Sum256(inputFile) != sha256.Sum256(outputFile) { - // t.Fatalf("Input and output files do not match\n"+ - // "Input:\n%s\nOutput:\n%s\n", inputFile, outputFile) - // } - return nil - }, - Teardown: func() error { - os.Remove("cupcake") - os.Remove("bigcake") - return nil - }, - }) - -} - -// TestFixUploadOwner verifies that owner of uploaded files is the user the container is running as. -func TestFixUploadOwner(t *testing.T) { - if os.Getenv("PACKER_ACC") == "" { - t.Skip("This test is only run with PACKER_ACC=1") - } - - cmd := exec.Command("docker", "-v") - err := cmd.Run() - if err != nil { - t.Error("docker command not found; please make sure docker is installed") - } - - dockerBuilderExtraConfig := map[string]interface{}{ - "run_command": []string{"-d", "-i", "-t", "-u", "42", "{{.Image}}", "/bin/sh"}, - } - - testFixUploadOwnerProvisionersTemplate := []map[string]interface{}{ - { - "type": "file", - "source": "test-fixtures/onecakes/strawberry", - "destination": "/tmp/strawberry-cake", - }, - { - "type": "file", - "source": "test-fixtures/manycakes", - "destination": "/tmp/", - }, - { - "type": "shell", - "inline": "touch /tmp/testUploadOwner", - }, - { - "type": "shell", - "inline": []string{ - "[ $(stat -c %u /tmp/strawberry-cake) -eq 42 ] || (echo 'Invalid owner of /tmp/strawberry-cake' && exit 1)", - "[ $(stat -c %u /tmp/testUploadOwner) -eq 42 ] || (echo 'Invalid owner of /tmp/testUploadOwner' && exit 1)", - "find /tmp/manycakes | xargs -n1 -IFILE /bin/sh -c '[ $(stat -c %u FILE) -eq 42 ] || (echo \"Invalid owner of FILE\" && exit 1)'", - }, - }, - } - - configString := RenderConfig(dockerBuilderExtraConfig, testFixUploadOwnerProvisionersTemplate) - builderT.Test(t, builderT.TestCase{ - Builder: &Builder{}, - Template: configString, - }) -} diff --git a/builder/docker/config_test.go b/builder/docker/config_test.go deleted file mode 100644 index cf66e1a7d..000000000 --- a/builder/docker/config_test.go +++ /dev/null @@ -1,147 +0,0 @@ -package docker - -import ( - "io/ioutil" - "os" - "testing" -) - -func testConfig() map[string]interface{} { - return map[string]interface{}{ - "export_path": "foo", - "image": "bar", - } -} - -func testConfigStruct(t *testing.T) *Config { - var c Config - warns, errs := c.Prepare(testConfig()) - if len(warns) > 0 { - t.Fatalf("bad: %#v", len(warns)) - } - if errs != nil { - t.Fatalf("bad: %#v", errs) - } - - return &c -} - -func testConfigErr(t *testing.T, warns []string, err error) { - if len(warns) > 0 { - t.Fatalf("bad: %#v", warns) - } - if err == nil { - t.Fatal("should error") - } -} - -func testConfigOk(t *testing.T, warns []string, err error) { - if len(warns) > 0 { - t.Fatalf("bad: %#v", warns) - } - if err != nil { - t.Fatalf("bad: %s", err) - } -} - -func TestConfigPrepare_exportPath(t *testing.T) { - td, err := ioutil.TempDir("", "packer") - if err != nil { - t.Fatalf("err: %s", err) - } - defer os.RemoveAll(td) - - raw := testConfig() - - // No export path. This is invalid. Previously this would not error during - // validation and as a result the failure would happen at build time. - delete(raw, "export_path") - var c Config - warns, errs := c.Prepare(raw) - testConfigErr(t, warns, errs) - - // Good export path - raw["export_path"] = "good" - warns, errs = c.Prepare(raw) - testConfigOk(t, warns, errs) - - // Bad export path (directory) - raw["export_path"] = td - warns, errs = c.Prepare(raw) - testConfigErr(t, warns, errs) -} - -func TestConfigPrepare_exportPathAndCommit(t *testing.T) { - raw := testConfig() - - // Export but no commit (explicit default) - raw["commit"] = false - warns, errs := (&Config{}).Prepare(raw) - testConfigOk(t, warns, errs) - - // Commit AND export specified (invalid) - raw["commit"] = true - warns, errs = (&Config{}).Prepare(raw) - testConfigErr(t, warns, errs) - - // Commit but no export - delete(raw, "export_path") - warns, errs = (&Config{}).Prepare(raw) - testConfigOk(t, warns, errs) -} - -func TestConfigPrepare_exportDiscard(t *testing.T) { - raw := testConfig() - - // Export but no discard (explicit default) - raw["discard"] = false - warns, errs := (&Config{}).Prepare(raw) - testConfigOk(t, warns, errs) - - // Discard AND export (invalid) - raw["discard"] = true - warns, errs = (&Config{}).Prepare(raw) - testConfigErr(t, warns, errs) - - // Discard but no export - raw["discard"] = true - delete(raw, "export_path") - warns, errs = (&Config{}).Prepare(raw) - testConfigOk(t, warns, errs) -} - -func TestConfigPrepare_image(t *testing.T) { - raw := testConfig() - - // No image - delete(raw, "image") - var c Config - warns, errs := c.Prepare(raw) - testConfigErr(t, warns, errs) - - // Good image - raw["image"] = "path" - warns, errs = c.Prepare(raw) - testConfigOk(t, warns, errs) -} - -func TestConfigPrepare_pull(t *testing.T) { - raw := testConfig() - - // No pull set - delete(raw, "pull") - var c Config - warns, errs := c.Prepare(raw) - testConfigOk(t, warns, errs) - if !c.Pull { - t.Fatal("should pull by default") - } - - // Pull set - raw["pull"] = false - warns, errs = c.Prepare(raw) - testConfigOk(t, warns, errs) - if c.Pull { - t.Fatal("should not pull") - } -} diff --git a/builder/docker/driver_docker_test.go b/builder/docker/driver_docker_test.go deleted file mode 100644 index dbc0ebc11..000000000 --- a/builder/docker/driver_docker_test.go +++ /dev/null @@ -1,7 +0,0 @@ -package docker - -import "testing" - -func TestDockerDriver_impl(t *testing.T) { - var _ Driver = new(DockerDriver) -} diff --git a/builder/docker/driver_mock_test.go b/builder/docker/driver_mock_test.go deleted file mode 100644 index b7d144813..000000000 --- a/builder/docker/driver_mock_test.go +++ /dev/null @@ -1,7 +0,0 @@ -package docker - -import "testing" - -func TestMockDriver_impl(t *testing.T) { - var _ Driver = new(MockDriver) -} diff --git a/builder/docker/step_commit_test.go b/builder/docker/step_commit_test.go deleted file mode 100644 index 80030a315..000000000 --- a/builder/docker/step_commit_test.go +++ /dev/null @@ -1,68 +0,0 @@ -package docker - -import ( - "context" - "errors" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" -) - -func testStepCommitState(t *testing.T) multistep.StateBag { - state := testState(t) - state.Put("container_id", "foo") - return state -} - -func TestStepCommit_impl(t *testing.T) { - var _ multistep.Step = new(StepCommit) -} - -func TestStepCommit(t *testing.T) { - state := testStepCommitState(t) - step := new(StepCommit) - defer step.Cleanup(state) - - driver := state.Get("driver").(*MockDriver) - driver.CommitImageId = "bar" - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // verify we did the right thing - if !driver.CommitCalled { - t.Fatal("should've called") - } - - // verify the ID is saved - idRaw, ok := state.GetOk("image_id") - if !ok { - t.Fatal("should've saved ID") - } - - id := idRaw.(string) - if id != driver.CommitImageId { - t.Fatalf("bad: %#v", id) - } -} - -func TestStepCommit_error(t *testing.T) { - state := testStepCommitState(t) - step := new(StepCommit) - defer step.Cleanup(state) - - driver := state.Get("driver").(*MockDriver) - driver.CommitErr = errors.New("foo") - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionHalt { - t.Fatalf("bad action: %#v", action) - } - - // verify the ID is not saved - if _, ok := state.GetOk("image_id"); ok { - t.Fatal("shouldn't save image ID") - } -} diff --git a/builder/docker/step_export_test.go b/builder/docker/step_export_test.go deleted file mode 100644 index 30246cc91..000000000 --- a/builder/docker/step_export_test.go +++ /dev/null @@ -1,101 +0,0 @@ -package docker - -import ( - "bytes" - "context" - "errors" - "io/ioutil" - "os" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" -) - -func testStepExportState(t *testing.T) multistep.StateBag { - state := testState(t) - state.Put("container_id", "foo") - return state -} - -func TestStepExport_impl(t *testing.T) { - var _ multistep.Step = new(StepExport) -} - -func TestStepExport(t *testing.T) { - state := testStepExportState(t) - step := new(StepExport) - defer step.Cleanup(state) - - // Create a tempfile for our output path - tf, err := ioutil.TempFile("", "packer") - if err != nil { - t.Fatalf("err: %s", err) - } - tf.Close() - defer os.Remove(tf.Name()) - - config := state.Get("config").(*Config) - config.ExportPath = tf.Name() - driver := state.Get("driver").(*MockDriver) - driver.ExportReader = bytes.NewReader([]byte("data!")) - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // verify we did the right thing - if !driver.ExportCalled { - t.Fatal("should've exported") - } - if driver.ExportID != "foo" { - t.Fatalf("bad: %#v", driver.ExportID) - } - - // verify the data exported to the file - contents, err := ioutil.ReadFile(tf.Name()) - if err != nil { - t.Fatalf("err: %s", err) - } - - if string(contents) != "data!" { - t.Fatalf("bad: %#v", string(contents)) - } -} - -func TestStepExport_error(t *testing.T) { - state := testStepExportState(t) - step := new(StepExport) - defer step.Cleanup(state) - - // Create a tempfile for our output path - tf, err := ioutil.TempFile("", "packer") - if err != nil { - t.Fatalf("err: %s", err) - } - tf.Close() - - if err := os.Remove(tf.Name()); err != nil { - t.Fatalf("err: %s", err) - } - - config := state.Get("config").(*Config) - config.ExportPath = tf.Name() - driver := state.Get("driver").(*MockDriver) - driver.ExportError = errors.New("foo") - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionHalt { - t.Fatalf("bad action: %#v", action) - } - - // verify we have an error - if _, ok := state.GetOk("error"); !ok { - t.Fatal("should have error") - } - - // verify we didn't make that file - if _, err := os.Stat(tf.Name()); err == nil { - t.Fatal("export path shouldn't exist") - } -} diff --git a/builder/docker/step_pull_test.go b/builder/docker/step_pull_test.go deleted file mode 100644 index 234058f57..000000000 --- a/builder/docker/step_pull_test.go +++ /dev/null @@ -1,104 +0,0 @@ -package docker - -import ( - "context" - "errors" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" -) - -func TestStepPull_impl(t *testing.T) { - var _ multistep.Step = new(StepPull) -} - -func TestStepPull(t *testing.T) { - state := testState(t) - step := new(StepPull) - defer step.Cleanup(state) - - config := state.Get("config").(*Config) - driver := state.Get("driver").(*MockDriver) - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // verify we did the right thing - if !driver.PullCalled { - t.Fatal("should've pulled") - } - if driver.PullImage != config.Image { - t.Fatalf("bad: %#v", driver.PullImage) - } -} - -func TestStepPull_error(t *testing.T) { - state := testState(t) - step := new(StepPull) - defer step.Cleanup(state) - - driver := state.Get("driver").(*MockDriver) - driver.PullError = errors.New("foo") - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionHalt { - t.Fatalf("bad action: %#v", action) - } - - // verify we have an error - if _, ok := state.GetOk("error"); !ok { - t.Fatal("should have error") - } -} - -func TestStepPull_login(t *testing.T) { - state := testState(t) - step := new(StepPull) - defer step.Cleanup(state) - - config := state.Get("config").(*Config) - driver := state.Get("driver").(*MockDriver) - - config.Login = true - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // verify we pulled - if !driver.PullCalled { - t.Fatal("should've pulled") - } - - // verify we logged in - if !driver.LoginCalled { - t.Fatal("should've logged in") - } - if !driver.LogoutCalled { - t.Fatal("should've logged out") - } -} - -func TestStepPull_noPull(t *testing.T) { - state := testState(t) - step := new(StepPull) - defer step.Cleanup(state) - - config := state.Get("config").(*Config) - config.Pull = false - - driver := state.Get("driver").(*MockDriver) - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // verify we did the right thing - if driver.PullCalled { - t.Fatal("shouldn't have pulled") - } -} diff --git a/builder/docker/step_run_test.go b/builder/docker/step_run_test.go deleted file mode 100644 index f1d5a065f..000000000 --- a/builder/docker/step_run_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package docker - -import ( - "context" - "errors" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" -) - -func testStepRunState(t *testing.T) multistep.StateBag { - state := testState(t) - state.Put("temp_dir", "/foo") - return state -} - -func TestStepRun_impl(t *testing.T) { - var _ multistep.Step = new(StepRun) -} - -func TestStepRun(t *testing.T) { - state := testStepRunState(t) - step := new(StepRun) - defer step.Cleanup(state) - - config := state.Get("config").(*Config) - driver := state.Get("driver").(*MockDriver) - driver.StartID = "foo" - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // verify we did the right thing - if !driver.StartCalled { - t.Fatal("should've called") - } - if driver.StartConfig.Image != config.Image { - t.Fatalf("bad: %#v", driver.StartConfig.Image) - } - - // verify the ID is saved - idRaw, ok := state.GetOk("container_id") - if !ok { - t.Fatal("should've saved ID") - } - - id := idRaw.(string) - if id != "foo" { - t.Fatalf("bad: %#v", id) - } - - // Verify we haven't called stop yet - if driver.KillCalled { - t.Fatal("should not have stopped") - } - - // Cleanup - step.Cleanup(state) - if !driver.KillCalled { - t.Fatal("should've stopped") - } - if driver.KillID != id { - t.Fatalf("bad: %#v", driver.StopID) - } -} - -func TestStepRun_error(t *testing.T) { - state := testStepRunState(t) - step := new(StepRun) - defer step.Cleanup(state) - - driver := state.Get("driver").(*MockDriver) - driver.StartError = errors.New("foo") - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionHalt { - t.Fatalf("bad action: %#v", action) - } - - // verify the ID is not saved - if _, ok := state.GetOk("container_id"); ok { - t.Fatal("shouldn't save container ID") - } - - // Verify we haven't called stop yet - if driver.KillCalled { - t.Fatal("should not have stopped") - } - - // Cleanup - step.Cleanup(state) - if driver.KillCalled { - t.Fatal("should not have stopped") - } -} diff --git a/builder/docker/step_set_generated_data_test.go b/builder/docker/step_set_generated_data_test.go deleted file mode 100644 index dc3eec02f..000000000 --- a/builder/docker/step_set_generated_data_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package docker - -import ( - "context" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" -) - -func TestStepSetGeneratedData_Run(t *testing.T) { - state := testState(t) - step := new(StepSetGeneratedData) - step.GeneratedData = &packerbuilderdata.GeneratedData{State: state} - driver := state.Get("driver").(*MockDriver) - driver.Sha256Result = "80B3BB1B1696E73A9B19DEEF92F664F8979F948DF348088B61F9A3477655AF64" - state.Put("image_id", "12345") - - if action := step.Run(context.TODO(), state); action != multistep.ActionContinue { - t.Fatalf("Should not halt") - } - if !driver.Sha256Called { - t.Fatalf("driver.SHA256 should be called") - } - if driver.Sha256Id != "12345" { - t.Fatalf("driver.SHA256 got wrong image it: %s", driver.Sha256Id) - } - genData := state.Get("generated_data").(map[string]interface{}) - imgSha256 := genData["ImageSha256"].(string) - if imgSha256 != driver.Sha256Result { - t.Fatalf("Expected ImageSha256 to be %s but was %s", driver.Sha256Result, imgSha256) - } - - // Image ID not implement - state = testState(t) - step.GeneratedData = &packerbuilderdata.GeneratedData{State: state} - driver = state.Get("driver").(*MockDriver) - notImplementedMsg := "ERR_IMAGE_SHA256_NOT_FOUND" - - if action := step.Run(context.TODO(), state); action != multistep.ActionContinue { - t.Fatalf("Should not halt") - } - if driver.Sha256Called { - t.Fatalf("driver.SHA256 should not be called") - } - genData = state.Get("generated_data").(map[string]interface{}) - imgSha256 = genData["ImageSha256"].(string) - if imgSha256 != notImplementedMsg { - t.Fatalf("Expected ImageSha256 to be %s but was %s", notImplementedMsg, imgSha256) - } -} diff --git a/builder/docker/step_temp_dir_test.go b/builder/docker/step_temp_dir_test.go deleted file mode 100644 index b6f8afe3c..000000000 --- a/builder/docker/step_temp_dir_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package docker - -import ( - "context" - "os" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" -) - -func TestStepTempDir_impl(t *testing.T) { - var _ multistep.Step = new(StepTempDir) -} - -func testStepTempDir_impl(t *testing.T) string { - state := testState(t) - step := new(StepTempDir) - defer step.Cleanup(state) - - // sanity test - if _, ok := state.GetOk("temp_dir"); ok { - t.Fatalf("temp_dir should not be in state yet") - } - - // run the step - if action := step.Run(context.Background(), state); action != multistep.ActionContinue { - t.Fatalf("bad action: %#v", action) - } - - // Verify that we got the temp dir - dirRaw, ok := state.GetOk("temp_dir") - if !ok { - t.Fatalf("should've made temp_dir") - } - dir := dirRaw.(string) - - if _, err := os.Stat(dir); err != nil { - t.Fatalf("Stat for %s failed: err: %s", err, dir) - } - - // Cleanup - step.Cleanup(state) - if _, err := os.Stat(dir); err == nil { - t.Fatalf("dir should be gone") - } - - return dir -} - -func TestStepTempDir(t *testing.T) { - testStepTempDir_impl(t) -} diff --git a/builder/docker/step_test.go b/builder/docker/step_test.go deleted file mode 100644 index e12b7a6ab..000000000 --- a/builder/docker/step_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package docker - -import ( - "bytes" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/multistep" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func testState(t *testing.T) multistep.StateBag { - state := new(multistep.BasicStateBag) - state.Put("config", testConfigStruct(t)) - state.Put("driver", &MockDriver{}) - state.Put("hook", &packersdk.MockHook{}) - state.Put("ui", &packersdk.BasicUi{ - Reader: new(bytes.Buffer), - Writer: new(bytes.Buffer), - }) - return state -} diff --git a/builder/docker/test-fixtures/manycakes/chocolate b/builder/docker/test-fixtures/manycakes/chocolate deleted file mode 100644 index a2286c928..000000000 --- a/builder/docker/test-fixtures/manycakes/chocolate +++ /dev/null @@ -1 +0,0 @@ -chocolate! diff --git a/builder/docker/test-fixtures/manycakes/vanilla b/builder/docker/test-fixtures/manycakes/vanilla deleted file mode 100644 index 000a45578..000000000 --- a/builder/docker/test-fixtures/manycakes/vanilla +++ /dev/null @@ -1 +0,0 @@ -vanilla! diff --git a/builder/docker/test-fixtures/onecakes/strawberry b/builder/docker/test-fixtures/onecakes/strawberry deleted file mode 100644 index b663de3a9..000000000 --- a/builder/docker/test-fixtures/onecakes/strawberry +++ /dev/null @@ -1 +0,0 @@ -strawberry! diff --git a/builder/docker/version/version.go b/builder/docker/version/version.go deleted file mode 100644 index f71ac2cac..000000000 --- a/builder/docker/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var DigitalOceanPluginVersion *version.PluginVersion - -func init() { - DigitalOceanPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/command/plugin.go b/command/plugin.go index b5be6a4fa..2e039ed6c 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -24,7 +24,6 @@ import ( azuredtlbuilder "github.com/hashicorp/packer/builder/azure/dtl" cloudstackbuilder "github.com/hashicorp/packer/builder/cloudstack" digitaloceanbuilder "github.com/hashicorp/packer/builder/digitalocean" - dockerbuilder "github.com/hashicorp/packer/builder/docker" filebuilder "github.com/hashicorp/packer/builder/file" googlecomputebuilder "github.com/hashicorp/packer/builder/googlecompute" hcloudbuilder "github.com/hashicorp/packer/builder/hcloud" @@ -73,10 +72,6 @@ import ( checksumpostprocessor "github.com/hashicorp/packer/post-processor/checksum" compresspostprocessor "github.com/hashicorp/packer/post-processor/compress" digitaloceanimportpostprocessor "github.com/hashicorp/packer/post-processor/digitalocean-import" - dockerimportpostprocessor "github.com/hashicorp/packer/post-processor/docker-import" - dockerpushpostprocessor "github.com/hashicorp/packer/post-processor/docker-push" - dockersavepostprocessor "github.com/hashicorp/packer/post-processor/docker-save" - dockertagpostprocessor "github.com/hashicorp/packer/post-processor/docker-tag" exoscaleimportpostprocessor "github.com/hashicorp/packer/post-processor/exoscale-import" googlecomputeexportpostprocessor "github.com/hashicorp/packer/post-processor/googlecompute-export" googlecomputeimportpostprocessor "github.com/hashicorp/packer/post-processor/googlecompute-import" @@ -125,7 +120,6 @@ var Builders = map[string]packersdk.Builder{ "azure-dtl": new(azuredtlbuilder.Builder), "cloudstack": new(cloudstackbuilder.Builder), "digitalocean": new(digitaloceanbuilder.Builder), - "docker": new(dockerbuilder.Builder), "file": new(filebuilder.Builder), "googlecompute": new(googlecomputebuilder.Builder), "hcloud": new(hcloudbuilder.Builder), @@ -196,10 +190,6 @@ var PostProcessors = map[string]packersdk.PostProcessor{ "checksum": new(checksumpostprocessor.PostProcessor), "compress": new(compresspostprocessor.PostProcessor), "digitalocean-import": new(digitaloceanimportpostprocessor.PostProcessor), - "docker-import": new(dockerimportpostprocessor.PostProcessor), - "docker-push": new(dockerpushpostprocessor.PostProcessor), - "docker-save": new(dockersavepostprocessor.PostProcessor), - "docker-tag": new(dockertagpostprocessor.PostProcessor), "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), "googlecompute-export": new(googlecomputeexportpostprocessor.PostProcessor), "googlecompute-import": new(googlecomputeimportpostprocessor.PostProcessor), diff --git a/go.mod b/go.mod index 000b31cfa..17e938235 100644 --- a/go.mod +++ b/go.mod @@ -50,6 +50,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.2.0 github.com/hashicorp/hcl/v2 v2.8.0 + github.com/hashicorp/packer-plugin-docker v0.0.2 github.com/hashicorp/packer-plugin-sdk v0.0.14 github.com/hashicorp/vault/api v1.0.4 github.com/hetznercloud/hcloud-go v1.15.1 diff --git a/go.sum b/go.sum index 070e3f889..fecf30140 100644 --- a/go.sum +++ b/go.sum @@ -62,7 +62,6 @@ github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtO github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/autorest/to v0.3.0 h1:zebkZaadz7+wIQYgC7GXaz3Wb28yKYfVkkBKwc38VF8= github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/validation v0.2.0 h1:15vMO4y76dehZSq7pAaOLQxC6dZYsSrj2GQpflyM/L4= github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= @@ -70,7 +69,6 @@ github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1Gn github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4 h1:pSm8mp0T2OH2CPmPDPtwHPr3VAQaOwVF/JbllOPP4xA= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20191115201650-bad6df29494a h1:3FwiePtHk5YJrooV799oo5jIfsgRdES25VdngJM03dU= github.com/Azure/go-ntlmssp v0.0.0-20191115201650-bad6df29494a/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= @@ -93,11 +91,9 @@ github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190418113227-25233c783f4e h1:/8w github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190418113227-25233c783f4e/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f h1:jI4DIE5Vf4oRaHfthB0oRhU+yuYuoOTurDzwAlskP00= github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd h1:S3Fr6QnkpW9VRjiEY4psQHhhbbahASuNVj52YIce7lI= github.com/antchfx/xpath v0.0.0-20170728053731-b5c552e1acbd/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= github.com/antchfx/xpath v1.1.11/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= -github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607 h1:BFFG6KP8ASFBg2ptWsJn8p8RDufBjBDKIxLU7BTYGOM= github.com/antchfx/xquery v0.0.0-20170730121040-eb8c3c172607/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0 h1:JaCC8jz0zdMLk2m+qCCVLLLM/PL93p84w4pK3aJWj60= github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= @@ -114,11 +110,9 @@ github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJE github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43 h1:ePCAQPf5tUc5IMcUvu6euhSGna7jzs7eiXtJXHig6Zc= github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43/go.mod h1:S6puKjZ9ZeqUPBv2hEBnMZGcM2J6mOsDRQcmxkMAND0= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878 h1:EFSB7Zo9Eg91v7MJPVsifUysc/wPdN+NOnVe6bWbdBM= github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -127,7 +121,6 @@ github.com/aws/aws-sdk-go v1.26.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.30.8/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.36.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.36.5 h1:SouM2ar1A8f+3DYWW622sDdqkkZAO3ha4j8GQjiPLFg= github.com/aws/aws-sdk-go v1.36.5/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.37.15 h1:W7l7gLLMcYRlg6a+uvf3Zz4jYwdqYzhe5ymqwWoOhp4= github.com/aws/aws-sdk-go v1.37.15/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= @@ -161,15 +154,11 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/digitalocean/go-libvirt v0.0.0-20190626172931-4d226dd6c437 h1:phR13shVFOIpa1pnLBmewI9p16NEladLPvVylLPeexo= github.com/digitalocean/go-libvirt v0.0.0-20190626172931-4d226dd6c437/go.mod h1:PRcPVAAma6zcLpFd4GZrjR/MRpood3TamjKI2m/z/Uw= -github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 h1:j6vGflaQ2T7yOWqVgPdiRF73j/U2Zmpbbzab8nyDCRQ= github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1/go.mod h1:QS1XzqZLcDniNYrN7EZefq3wIyb/M2WmJbql4ZKoc1Q= -github.com/digitalocean/go-libvirt v0.0.0-20210108193637-3a8ae49ba8cd h1:+96Lbk3f8glkOcsRdy3Nubga8pE40kor2OgxDzVGNZM= github.com/digitalocean/go-libvirt v0.0.0-20210108193637-3a8ae49ba8cd/go.mod h1:gtar3MgGsIO64GgphCHw1cbyxSI6qEuTIm9+izMmlfk= github.com/digitalocean/go-libvirt v0.0.0-20210112203132-25518eb2c840 h1:F3RVNV8SLLNhkNFcbDTgD3wAPMcrMJW6xjjI0JXy9z8= github.com/digitalocean/go-libvirt v0.0.0-20210112203132-25518eb2c840/go.mod h1:gtar3MgGsIO64GgphCHw1cbyxSI6qEuTIm9+izMmlfk= -github.com/digitalocean/go-qemu v0.0.0-20181112162955-dd7bb9c771b8 h1:N7nH2py78LcMqYY3rZjjrsX6N7uCN7sjvaosgpXN9Ow= github.com/digitalocean/go-qemu v0.0.0-20181112162955-dd7bb9c771b8/go.mod h1:/YnlngP1PARC0SKAZx6kaAEMOp8bNTQGqS+Ka3MctNI= github.com/digitalocean/go-qemu v0.0.0-20201211181942-d361e7b4965f h1:BYkBJhHxUJJn27mhqfqWycWaEOWv9JQqLgQ2pOFJMqE= github.com/digitalocean/go-qemu v0.0.0-20201211181942-d361e7b4965f/go.mod h1:y4Eq3ZfZQFWQwVyW0qvgo5seXUIq2C7BlHsdE+xtXL4= @@ -191,7 +180,6 @@ github.com/exoscale/egoscale v0.18.1 h1:1FNZVk8jHUx0AvWhOZxLEDNlacTU0chMXUUNkm9E github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -206,7 +194,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-ini/ini v1.25.4 h1:Mujh4R/dH6YL8bxuISne3xX2+qcQ9p0IxKAP6ExWoUo= github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -300,7 +287,6 @@ github.com/gophercloud/gophercloud v0.12.0 h1:mZrie07npp6ODiwHZolTicr5jV8Ogn43Av github.com/gophercloud/gophercloud v0.12.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c h1:iawx2ojEQA7c+GmkaVO5sN+k8YONibXyDO8RlsC+1bs= github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c/go.mod h1:ehWUbLQJPqS0Ep+CxeD559hsm9pthPXadJNKwZkp43w= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -336,11 +322,9 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0 h1:d4QkX8FRTYaKaCZBoXYY8zJX2BXjWxurN/GA2tkrmZM= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.1.0 h1:vN9wG1D6KG6YHRTWr8512cxGOVgTMEfgEdSj/hr8MPc= github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= @@ -353,7 +337,6 @@ github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4 h1:1BZvpawXoJCWX6pNtow9+rpEj+3itIlutiqnntI6jOE= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.1 h1:DMo4fmknnz0E0evoNYnV48RjWndOsmd6OW+09R3cEP8= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= @@ -373,7 +356,6 @@ github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+d github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -385,7 +367,6 @@ github.com/hashicorp/hcl/v2 v2.8.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yI github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= @@ -397,23 +378,18 @@ github.com/hashicorp/packer v1.6.7-0.20210125170305-539638b0f951/go.mod h1:Z3eun github.com/hashicorp/packer v1.6.7-0.20210126105722-aef4ced967ec/go.mod h1:2+Vo/c/fA+TD9yFc/h9jQMFm4yG+IymQIr0OdJJOPiE= github.com/hashicorp/packer v1.6.7-0.20210208125835-f616955ebcb6/go.mod h1:7f5ZpTTRG53rQ58BcTADuTnpiBcB3wapuxl4sF2sGMM= github.com/hashicorp/packer v1.6.7-0.20210217093213-201869d627bf/go.mod h1:+EWPPcqee4h8S/y913Dnta1eJkgiqsGXBQgB75A2qV0= -github.com/hashicorp/packer-plugin-sdk v0.0.6 h1:BN2G4APXSMvDURFdnk+6DspwsU83pZeMsbEur7NmGsA= +github.com/hashicorp/packer-plugin-docker v0.0.2 h1:j/hQTogaN2pZfZohlZTRu5YvNZg2/qtYYHkxPBxv2Oo= +github.com/hashicorp/packer-plugin-docker v0.0.2/go.mod h1:A2p9qztS4n88KsNF+qBM7BWw2HndW636GpFIjNSvbKM= github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0/go.mod h1:YdWTt5w6cYfaQG7IOi5iorL+3SXnz8hI0gJCi8Db/LI= -github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210120105339-f6fd68d2570a h1:QbS+UBmK9DZuEDPodi1pCiS66dLYI3rmUX/cowNopsk= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210120105339-f6fd68d2570a/go.mod h1:exN0C+Pe+3zu18l4nxueNjX5cfmslxUX/m/xk4IVmZQ= -github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210122130548-45a6ca0a9365 h1:u7DeYY9ukhSZpLE11qCFU8pxnO+YM2/85wwVXHJZdRE= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210122130548-45a6ca0a9365/go.mod h1:K7VsU0lfJBDyiUrSNnS/j+zMxSRwwH9WC9QvHv32KsU= -github.com/hashicorp/packer-plugin-sdk v0.0.10-0.20210126105622-8e1648006d93 h1:3wFACjFiBkF5sZrai0zvcWv2fHIgLa4g6ZXxbqngBhs= github.com/hashicorp/packer-plugin-sdk v0.0.10-0.20210126105622-8e1648006d93/go.mod h1:AtWQLNfpn7cgH2SmZ1PTedwqNOhiPvzcuKfH5sDvIQ0= -github.com/hashicorp/packer-plugin-sdk v0.0.11 h1:nUurEGaJtpVDyg94bKC2xOXWf1TqQ+++GovFUnP5REI= github.com/hashicorp/packer-plugin-sdk v0.0.11/go.mod h1:GNb0WNs7zibb8vzUZce1As64z2AW0FEMwhe2J7/NW5I= -github.com/hashicorp/packer-plugin-sdk v0.0.12 h1:eagxsrborfhc0E8zvDVCiRE9pQkjBw/6jm23jp0D8RU= github.com/hashicorp/packer-plugin-sdk v0.0.12/go.mod h1:hs82OYeufirGG6KRENMpjBWomnIlte99X6wXAPThJ5I= github.com/hashicorp/packer-plugin-sdk v0.0.14 h1:42WOZLmIbAYYC1WXxtlrQZN+fFdysVvTmj3jtoI6gOU= github.com/hashicorp/packer-plugin-sdk v0.0.14/go.mod h1:tNb3XzJPnjMl3QuUdKmF47B5ImerdTakalHzUAvW0aw= -github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0= github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= @@ -442,28 +418,22 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62 h1:JHCT6xuyPUrbbgAPE/3dqlvUKzRHMNuTBKKUb6OeR/k= github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v0.0.0-20160131094358-f86d2e6d8a77 h1:rJnR80lkojFgjdg/oQPhbZoY8t8uM51XMz8DrJrjabk= github.com/klauspost/compress v0.0.0-20160131094358-f86d2e6d8a77/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.11.6 h1:EgWPCW6O3n1D5n99Zq3xXBt9uCwRGvpwGOusOLNBRSQ= github.com/klauspost/compress v1.11.6/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/cpuid v0.0.0-20160106104451-349c67577817 h1:/7pPahIC+GoCm/euDCi2Pm29bAj9tc6TcK4Zcc8D3WI= github.com/klauspost/cpuid v0.0.0-20160106104451-349c67577817/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/crc32 v0.0.0-20160114101742-999f3125931f h1:UD9YLTi2aBhdOOThzatodQ/pGd9nd5255swS+UzHZj4= github.com/klauspost/crc32 v0.0.0-20160114101742-999f3125931f/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/crc32 v1.2.0 h1:0VuyqOCruD33/lJ/ojXNvzVyl8Zr5zdTmj9l9qLZ86I= github.com/klauspost/crc32 v1.2.0/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= @@ -471,11 +441,9 @@ github.com/klauspost/pgzip v0.0.0-20151221113845-47f36e165cec h1:PYqF3Tiz2W2Ag0e github.com/klauspost/pgzip v0.0.0-20151221113845-47f36e165cec/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169 h1:YUrU1/jxRqnt0PSrKj1Uj/wEjk/fjnE80QFfi2Zlj7Q= github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -486,20 +454,16 @@ github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3v github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/linode/linodego v0.14.0 h1:0APKMjiVGyry2TTUVDiok72H6cWpFNMMrFWBFn14aFU= github.com/linode/linodego v0.14.0/go.mod h1:2ce3S00NrDqJfp4i55ZuSlT0U3cKNELNYACWBPI8Tnw= -github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9 h1:SmVbOZFWAlyQshuMfOkiAx1f5oUTsOGG5IXplAEYeeM= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 h1:2ZKn+w/BJeL43sCxI2jhPLRv73oVVOjEKZjKkflyqxg= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20200615185753-c42b5136ff88/go.mod h1:a2HXwefeat3evJHxFXSayvRHpYEPJYtErl4uIzfaUqY= github.com/masterzen/winrm v0.0.0-20201030141608-56ca5c5f2380 h1:uKhPH5dYpx3Z8ZAnaTGfGZUiHOWa5p5mdG8wZlh+tLo= github.com/masterzen/winrm v0.0.0-20201030141608-56ca5c5f2380/go.mod h1:a2HXwefeat3evJHxFXSayvRHpYEPJYtErl4uIzfaUqY= -github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -507,14 +471,12 @@ github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcME github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08 h1:8YAWbq7rJqfbc6IaAvA2eCQuOQvf6Bs4vHKcOyWw//E= github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26 h1:gPxPSwALAeHJSjarOs00QjVdV9QoBvc1D2ujQUr5BzU= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= @@ -528,7 +490,6 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.3 h1:gqwbsGvc0jbhAPW/26WfEoSiPANAVlR49AAVdvaTjI4= github.com/mitchellh/go-testing-interface v1.0.3/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= @@ -538,7 +499,6 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI= github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= @@ -553,11 +513,9 @@ github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 h1:+DAetXqxv/ github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -567,7 +525,6 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b h1:LGItPaClbzopugAomw5VFKnG3h1dUr9QW5KOU+m8gu0= github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/oracle/oci-go-sdk v18.0.0+incompatible h1:FLV4KixsVfF3rwyVTMI6Ryp/Q+OSb9sR5TawbfjFLN4= github.com/oracle/oci-go-sdk v18.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/oracle/oci-go-sdk v24.3.0+incompatible h1:x4mcfb4agelf1O4/1/auGlZ1lr97jXRSSN5MxTgG/zU= github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= @@ -624,14 +581,12 @@ github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -648,7 +603,6 @@ github.com/ucloud/ucloud-sdk-go v0.16.3 h1:DCh4A5vSxFr3EvtvJL+g0Ehy4hSlEkMpQmEvx github.com/ucloud/ucloud-sdk-go v0.16.3/go.mod h1:dyLmFHmUfgb4RZKYQP9IArlvQ2pxzFthfhwxRzOEPIw= github.com/ufilesdk-dev/ufile-gosdk v0.0.0-20190830075812-b4dbc4ef43a6 h1:FAWNiqocJ04wC4Znj7Ax4PGWstZijayO6ifuHHvb+vI= github.com/ufilesdk-dev/ufile-gosdk v0.0.0-20190830075812-b4dbc4ef43a6/go.mod h1:R5FMQxkQ+QK/9Vz+jfnJP4rZIktYrRcWmuAnbOSkROI= -github.com/ugorji/go v0.0.0-20151218193438-646ae4a518c1 h1:U6ufy3mLDgg9RYupntOvAF7xCmNNquyKaYaaVHo1Nnk= github.com/ugorji/go v0.0.0-20151218193438-646ae4a518c1/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= github.com/ugorji/go v1.2.4 h1:cTciPbZ/VSOzCLKclmssnfQ/jyoVyOcJ3aoJyUV1Urc= github.com/ugorji/go v1.2.4/go.mod h1:EuaSCk8iZMdIspsu6HXH7X2UGKw1ezO4wCfGszGmmo4= @@ -972,7 +926,6 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200914193844-75d14daec038 h1:SnvTpXhVDJGFxzZiHbMUZTh3VjU2Vx2feJ7Zfl5+OIY= google.golang.org/genproto v0.0.0-20200914193844-75d14daec038/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200918140846-d0d605568037 h1:ujwz1DPMeHwCvo36rK5shXhAzc4GMRecrqQFaMZJBKQ= google.golang.org/genproto v0.0.0-20200918140846-d0d605568037/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1012,7 +965,6 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/cheggaaa/pb.v1 v1.0.27 h1:kJdccidYzt3CaHD1crCFTS1hxyhSi059NhOFUf03YFo= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.42.0 h1:7N3gPTt50s8GuLortA00n8AqRTk75qOP98+mTPpgzRk= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -1024,7 +976,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/post-processor/docker-import/post-processor_test.go b/post-processor/docker-import/post-processor_test.go deleted file mode 100644 index d83b9e3a4..000000000 --- a/post-processor/docker-import/post-processor_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package dockerimport - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func TestPostProcessor_ImplementsPostProcessor(t *testing.T) { - var _ packersdk.PostProcessor = new(PostProcessor) -} diff --git a/post-processor/docker-import/version/version.go b/post-processor/docker-import/version/version.go deleted file mode 100644 index cd350064b..000000000 --- a/post-processor/docker-import/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var DockerImportPluginVersion *version.PluginVersion - -func init() { - DockerImportPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/post-processor/docker-push/post-processor_test.go b/post-processor/docker-push/post-processor_test.go deleted file mode 100644 index 5f85c3d41..000000000 --- a/post-processor/docker-push/post-processor_test.go +++ /dev/null @@ -1,121 +0,0 @@ -package dockerpush - -import ( - "bytes" - "context" - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/docker" - dockerimport "github.com/hashicorp/packer/post-processor/docker-import" -) - -func testUi() *packersdk.BasicUi { - return &packersdk.BasicUi{ - Reader: new(bytes.Buffer), - Writer: new(bytes.Buffer), - } -} - -func TestPostProcessor_ImplementsPostProcessor(t *testing.T) { - var _ packersdk.PostProcessor = new(PostProcessor) -} - -func TestPostProcessor_PostProcess(t *testing.T) { - driver := &docker.MockDriver{} - p := &PostProcessor{Driver: driver} - artifact := &packersdk.MockArtifact{ - BuilderIdValue: dockerimport.BuilderId, - IdValue: "foo/bar", - } - - result, keep, forceOverride, err := p.PostProcess(context.Background(), testUi(), artifact) - if _, ok := result.(packersdk.Artifact); !ok { - t.Fatal("should be instance of Artifact") - } - if !keep { - t.Fatal("should keep") - } - if forceOverride { - t.Fatal("Should default to keep, but not override user wishes") - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if !driver.PushCalled { - t.Fatal("should call push") - } - if driver.PushName != "foo/bar" { - t.Fatal("bad name") - } - if result.Id() != "foo/bar" { - t.Fatal("bad image id") - } -} - -func TestPostProcessor_PostProcess_portInName(t *testing.T) { - driver := &docker.MockDriver{} - p := &PostProcessor{Driver: driver} - artifact := &packersdk.MockArtifact{ - BuilderIdValue: dockerimport.BuilderId, - IdValue: "localhost:5000/foo/bar", - } - - result, keep, forceOverride, err := p.PostProcess(context.Background(), testUi(), artifact) - if _, ok := result.(packersdk.Artifact); !ok { - t.Fatal("should be instance of Artifact") - } - if !keep { - t.Fatal("should keep") - } - if forceOverride { - t.Fatal("Should default to keep, but not override user wishes") - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if !driver.PushCalled { - t.Fatal("should call push") - } - if driver.PushName != "localhost:5000/foo/bar" { - t.Fatal("bad name") - } - if result.Id() != "localhost:5000/foo/bar" { - t.Fatal("bad image id") - } -} - -func TestPostProcessor_PostProcess_tags(t *testing.T) { - driver := &docker.MockDriver{} - p := &PostProcessor{Driver: driver} - artifact := &packersdk.MockArtifact{ - BuilderIdValue: dockerimport.BuilderId, - IdValue: "hashicorp/ubuntu:precise", - } - - result, keep, forceOverride, err := p.PostProcess(context.Background(), testUi(), artifact) - if _, ok := result.(packersdk.Artifact); !ok { - t.Fatal("should be instance of Artifact") - } - if !keep { - t.Fatal("should keep") - } - if forceOverride { - t.Fatal("Should default to keep, but not override user wishes") - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if !driver.PushCalled { - t.Fatal("should call push") - } - if driver.PushName != "hashicorp/ubuntu:precise" { - t.Fatalf("bad name: %s", driver.PushName) - } - if result.Id() != "hashicorp/ubuntu:precise" { - t.Fatal("bad image id") - } -} diff --git a/post-processor/docker-push/version/version.go b/post-processor/docker-push/version/version.go deleted file mode 100644 index 4771f65cc..000000000 --- a/post-processor/docker-push/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var DockerPushPluginVersion *version.PluginVersion - -func init() { - DockerPushPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/post-processor/docker-save/post-processor_test.go b/post-processor/docker-save/post-processor_test.go deleted file mode 100644 index 7a7ffbe90..000000000 --- a/post-processor/docker-save/post-processor_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package dockersave - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func TestPostProcessor_ImplementsPostProcessor(t *testing.T) { - var _ packersdk.PostProcessor = new(PostProcessor) -} diff --git a/post-processor/docker-save/version/version.go b/post-processor/docker-save/version/version.go deleted file mode 100644 index b561d49ee..000000000 --- a/post-processor/docker-save/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var DockerSavePluginVersion *version.PluginVersion - -func init() { - DockerSavePluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/post-processor/docker-tag/post-processor_test.go b/post-processor/docker-tag/post-processor_test.go deleted file mode 100644 index f9fe4aa74..000000000 --- a/post-processor/docker-tag/post-processor_test.go +++ /dev/null @@ -1,196 +0,0 @@ -package dockertag - -import ( - "bytes" - "context" - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/docker" - dockerimport "github.com/hashicorp/packer/post-processor/docker-import" - "github.com/stretchr/testify/assert" -) - -func testConfig() map[string]interface{} { - return map[string]interface{}{ - "repository": "foo", - "tag": "bar,buzz", - } -} - -func testPP(t *testing.T) *PostProcessor { - var p PostProcessor - if err := p.Configure(testConfig()); err != nil { - t.Fatalf("err: %s", err) - } - - return &p -} - -func testUi() *packersdk.BasicUi { - return &packersdk.BasicUi{ - Reader: new(bytes.Buffer), - Writer: new(bytes.Buffer), - } -} - -func TestPostProcessor_ImplementsPostProcessor(t *testing.T) { - var _ packersdk.PostProcessor = new(PostProcessor) -} - -func TestPostProcessor_PostProcess(t *testing.T) { - driver := &docker.MockDriver{} - p := &PostProcessor{Driver: driver} - if err := p.Configure(testConfig()); err != nil { - t.Fatalf("err: %s", err) - } - - artifact := &packersdk.MockArtifact{ - BuilderIdValue: dockerimport.BuilderId, - IdValue: "1234567890abcdef", - } - - result, keep, forceOverride, err := p.PostProcess(context.Background(), testUi(), artifact) - if _, ok := result.(packersdk.Artifact); !ok { - t.Fatal("should be instance of Artifact") - } - if !keep { - t.Fatal("should keep") - } - if !forceOverride { - t.Fatal("Should force keep no matter what user sets.") - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if driver.TagImageCalled != 2 { - t.Fatal("should call TagImage") - } - if driver.TagImageImageId != "1234567890abcdef" { - t.Fatal("bad image id") - } - - if driver.TagImageRepo[0] != "foo:bar" { - t.Fatal("bad repo") - } - - if driver.TagImageRepo[1] != "foo:buzz" { - t.Fatal("bad repo") - } - - if driver.TagImageForce { - t.Fatal("bad force. force=false in default") - } -} - -func TestPostProcessor_PostProcess_Force(t *testing.T) { - driver := &docker.MockDriver{} - p := &PostProcessor{Driver: driver} - c := testConfig() - c["force"] = true - if err := p.Configure(c); err != nil { - t.Fatalf("err: %s", err) - } - - artifact := &packersdk.MockArtifact{ - BuilderIdValue: dockerimport.BuilderId, - IdValue: "1234567890abcdef", - } - - result, keep, forceOverride, err := p.PostProcess(context.Background(), testUi(), artifact) - if _, ok := result.(packersdk.Artifact); !ok { - t.Fatal("should be instance of Artifact") - } - if !keep { - t.Fatal("should keep") - } - if !forceOverride { - t.Fatal("Should force keep no matter what user sets.") - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if driver.TagImageCalled != 2 { - t.Fatal("should call TagImage") - } - if driver.TagImageImageId != "1234567890abcdef" { - t.Fatal("bad image id") - } - if driver.TagImageRepo[0] != "foo:bar" { - t.Fatal("bad repo") - } - if driver.TagImageRepo[1] != "foo:buzz" { - t.Fatal("bad repo") - } - if !driver.TagImageForce { - t.Fatal("bad force") - } -} - -func TestPostProcessor_PostProcess_NoTag(t *testing.T) { - driver := &docker.MockDriver{} - p := &PostProcessor{Driver: driver} - c := testConfig() - delete(c, "tag") - if err := p.Configure(c); err != nil { - t.Fatalf("err %s", err) - } - - artifact := &packersdk.MockArtifact{BuilderIdValue: dockerimport.BuilderId, IdValue: "1234567890abcdef"} - - result, keep, forceOverride, err := p.PostProcess(context.Background(), testUi(), artifact) - if _, ok := result.(packersdk.Artifact); !ok { - t.Fatal("should be instance of Artifact") - } - if !keep { - t.Fatal("should keep") - } - if !forceOverride { - t.Fatal("Should force keep no matter what user sets.") - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if driver.TagImageCalled != 1 { - t.Fatal("should call TagImage") - } - if driver.TagImageImageId != "1234567890abcdef" { - t.Fatal("bad image id") - } - if driver.TagImageRepo[0] != "foo" { - t.Fatal("bad repo") - } - if driver.TagImageForce { - t.Fatal("bad force") - } -} - -func TestPostProcessor_PostProcess_Tag_vs_Tags(t *testing.T) { - testCases := []map[string]interface{}{ - { - "tag": "bar,buzz", - "tags": []string{"bang"}, - }, - { - "tag": []string{"bar", "buzz"}, - "tags": []string{"bang"}, - }, - { - "tag": []string{"bar"}, - "tags": []string{"buzz", "bang"}, - }, - } - - for _, tc := range testCases { - var p PostProcessor - if err := p.Configure(tc); err != nil { - t.Fatalf("err: %s", err) - } - assert.ElementsMatchf(t, p.config.Tags, []string{"bar", "buzz", "bang"}, - "tag and tags fields should be combined into tags fields. Recieved: %#v", - p.config.Tags) - } -} diff --git a/post-processor/docker-tag/version/version.go b/post-processor/docker-tag/version/version.go deleted file mode 100644 index c7506f136..000000000 --- a/post-processor/docker-tag/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var DockerTagPluginVersion *version.PluginVersion - -func init() { - DockerTagPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/provisioner/ansible-local/provisioner_test.go b/provisioner/ansible-local/provisioner_test.go index 0fdf81bfa..1dde309d2 100644 --- a/provisioner/ansible-local/provisioner_test.go +++ b/provisioner/ansible-local/provisioner_test.go @@ -11,9 +11,9 @@ import ( "fmt" "os/exec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" builderT "github.com/hashicorp/packer-plugin-sdk/acctest" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/docker" "github.com/hashicorp/packer/provisioner/file" ) diff --git a/builder/docker/artifact_export.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/artifact_export.go similarity index 100% rename from builder/docker/artifact_export.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/artifact_export.go diff --git a/builder/docker/artifact_import.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/artifact_import.go similarity index 100% rename from builder/docker/artifact_import.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/artifact_import.go diff --git a/builder/docker/builder.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/builder.go similarity index 100% rename from builder/docker/builder.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/builder.go diff --git a/builder/docker/comm.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/comm.go similarity index 100% rename from builder/docker/comm.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/comm.go diff --git a/builder/docker/communicator.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/communicator.go similarity index 100% rename from builder/docker/communicator.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/communicator.go diff --git a/builder/docker/config.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/config.go similarity index 100% rename from builder/docker/config.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/config.go diff --git a/builder/docker/config.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/config.hcl2spec.go similarity index 100% rename from builder/docker/config.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/config.hcl2spec.go diff --git a/builder/docker/driver.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/driver.go similarity index 100% rename from builder/docker/driver.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/driver.go diff --git a/builder/docker/driver_docker.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/driver_docker.go similarity index 100% rename from builder/docker/driver_docker.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/driver_docker.go diff --git a/builder/docker/driver_mock.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/driver_mock.go similarity index 100% rename from builder/docker/driver_mock.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/driver_mock.go diff --git a/builder/docker/ecr_login.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/ecr_login.go similarity index 53% rename from builder/docker/ecr_login.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/ecr_login.go index f553d6021..9ea40b158 100644 --- a/builder/docker/ecr_login.go +++ b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/ecr_login.go @@ -6,12 +6,16 @@ import ( "encoding/base64" "fmt" "log" + "net/http" "regexp" "strings" "github.com/aws/aws-sdk-go/aws" + awsCredentials "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ecr" - "github.com/hashicorp/packer/builder/amazon/common" + awsbase "github.com/hashicorp/aws-sdk-go-base" + "github.com/hashicorp/go-cleanhttp" ) type AwsAccessConfig struct { @@ -32,7 +36,7 @@ type AwsAccessConfig struct { // communicate with AWS. Learn how to set // this. Profile string `mapstructure:"aws_profile" required:"false"` - cfg *common.AccessConfig + cfg *awsbase.Config } // Get a login token for Amazon AWS ECR. Returns username and password @@ -49,21 +53,49 @@ func (c *AwsAccessConfig) EcrGetLogin(ecrUrl string) (string, string, error) { log.Println(fmt.Sprintf("Getting ECR token for account: %s in %s..", accountId, region)) - c.cfg = &common.AccessConfig{ - AccessKey: c.AccessKey, - ProfileName: c.Profile, - RawRegion: region, - SecretKey: c.SecretKey, - Token: c.Token, + // Create new AWS config + config := aws.NewConfig().WithCredentialsChainVerboseErrors(true) + config = config.WithRegion(region) + + config = config.WithHTTPClient(cleanhttp.DefaultClient()) + transport := config.HTTPClient.Transport.(*http.Transport) + transport.Proxy = http.ProxyFromEnvironment + + // Figure out which possible credential providers are valid; test that we + // can get credentials via the selected providers, and set the providers in + // the config. + creds, err := c.GetCredentials(config) + if err != nil { + return "", "", fmt.Errorf(err.Error()) + } + config.WithCredentials(creds) + + // Create session options based on our AWS config + opts := session.Options{ + SharedConfigState: session.SharedConfigEnable, + Config: *config, } - session, err := c.cfg.Session() + if c.Profile != "" { + opts.Profile = c.Profile + } + + sess, err := session.NewSessionWithOptions(opts) + if err != nil { + return "", "", err + } + log.Printf("Found region %s", *sess.Config.Region) + session := sess + + cp, err := session.Config.Credentials.Get() + if err != nil { return "", "", fmt.Errorf("failed to create session: %s", err) } - service := ecr.New(session) + log.Printf("[INFO] AWS authentication used: %q", cp.ProviderName) + service := ecr.New(session) params := &ecr.GetAuthorizationTokenInput{ RegistryIds: []*string{ aws.String(accountId), @@ -84,3 +116,20 @@ func (c *AwsAccessConfig) EcrGetLogin(ecrUrl string) (string, string, error) { return authParts[0], authParts[1], nil } + +// GetCredentials gets credentials from the environment, shared credentials, +// the session (which may include a credential process), or ECS/EC2 metadata +// endpoints. GetCredentials also validates the credentials and the ability to +// assume a role or will return an error if unsuccessful. +func (c *AwsAccessConfig) GetCredentials(config *aws.Config) (*awsCredentials.Credentials, error) { + // Reload values into the config used by the Packer-Terraform shared SDK + awsbaseConfig := &awsbase.Config{ + AccessKey: c.AccessKey, + DebugLogging: false, + Profile: c.Profile, + SecretKey: c.SecretKey, + Token: c.Token, + } + + return awsbase.GetCredentials(awsbaseConfig) +} diff --git a/builder/docker/exec.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/exec.go similarity index 100% rename from builder/docker/exec.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/exec.go diff --git a/builder/docker/step_commit.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_commit.go similarity index 100% rename from builder/docker/step_commit.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_commit.go diff --git a/builder/docker/step_connect_docker.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_connect_docker.go similarity index 100% rename from builder/docker/step_connect_docker.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_connect_docker.go diff --git a/builder/docker/step_export.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_export.go similarity index 100% rename from builder/docker/step_export.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_export.go diff --git a/builder/docker/step_pull.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_pull.go similarity index 100% rename from builder/docker/step_pull.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_pull.go diff --git a/builder/docker/step_run.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_run.go similarity index 100% rename from builder/docker/step_run.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_run.go diff --git a/builder/docker/step_set_generated_data.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_set_generated_data.go similarity index 100% rename from builder/docker/step_set_generated_data.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_set_generated_data.go diff --git a/builder/docker/step_temp_dir.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_temp_dir.go similarity index 100% rename from builder/docker/step_temp_dir.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/step_temp_dir.go diff --git a/builder/docker/windows_container_communicator.go b/vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/windows_container_communicator.go similarity index 100% rename from builder/docker/windows_container_communicator.go rename to vendor/github.com/hashicorp/packer-plugin-docker/builder/docker/windows_container_communicator.go diff --git a/post-processor/docker-import/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go similarity index 94% rename from post-processor/docker-import/post-processor.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go index c5fe3d496..16fcd161a 100644 --- a/post-processor/docker-import/post-processor.go +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go @@ -7,12 +7,11 @@ import ( "fmt" "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" "github.com/hashicorp/packer-plugin-sdk/common" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/docker" - "github.com/hashicorp/packer/post-processor/artifice" ) const BuilderId = "packer.post-processor.docker-import" @@ -52,7 +51,7 @@ func (p *PostProcessor) Configure(raws ...interface{}) error { func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { switch artifact.BuilderId() { - case docker.BuilderId, artifice.BuilderId: + case docker.BuilderId, "packer.post-processor.artifice": break default: err := fmt.Errorf( diff --git a/post-processor/docker-import/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go similarity index 100% rename from post-processor/docker-import/post-processor.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go diff --git a/post-processor/docker-push/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go similarity index 93% rename from post-processor/docker-push/post-processor.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go index 8bb0763f3..fee6db49e 100644 --- a/post-processor/docker-push/post-processor.go +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go @@ -7,13 +7,13 @@ import ( "fmt" "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + dockertag "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" "github.com/hashicorp/packer-plugin-sdk/common" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/docker" - dockerimport "github.com/hashicorp/packer/post-processor/docker-import" - dockertag "github.com/hashicorp/packer/post-processor/docker-tag" ) const BuilderIdImport = "packer.post-processor.docker-import" diff --git a/post-processor/docker-push/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go similarity index 100% rename from post-processor/docker-push/post-processor.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go diff --git a/post-processor/docker-save/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go similarity index 90% rename from post-processor/docker-save/post-processor.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go index f1a1b49e9..a540f4d96 100644 --- a/post-processor/docker-save/post-processor.go +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go @@ -8,13 +8,13 @@ import ( "os" "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + dockertag "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" "github.com/hashicorp/packer-plugin-sdk/common" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/docker" - dockerimport "github.com/hashicorp/packer/post-processor/docker-import" - dockertag "github.com/hashicorp/packer/post-processor/docker-tag" ) const BuilderId = "packer.post-processor.docker-save" diff --git a/post-processor/docker-save/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go similarity index 100% rename from post-processor/docker-save/post-processor.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go diff --git a/post-processor/docker-tag/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go similarity index 95% rename from post-processor/docker-tag/post-processor.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go index d29769d56..14f1d5683 100644 --- a/post-processor/docker-tag/post-processor.go +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go @@ -7,12 +7,12 @@ import ( "fmt" "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" "github.com/hashicorp/packer-plugin-sdk/common" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/docker" - dockerimport "github.com/hashicorp/packer/post-processor/docker-import" ) const BuilderId = "packer.post-processor.docker-tag" diff --git a/post-processor/docker-tag/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go similarity index 100% rename from post-processor/docker-tag/post-processor.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go diff --git a/vendor/modules.txt b/vendor/modules.txt index 3824c03df..4065c44a5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -413,6 +413,12 @@ github.com/hashicorp/hcl/v2/hclparse github.com/hashicorp/hcl/v2/hclsyntax github.com/hashicorp/hcl/v2/hclwrite github.com/hashicorp/hcl/v2/json +# github.com/hashicorp/packer-plugin-docker v0.0.2 +github.com/hashicorp/packer-plugin-docker/builder/docker +github.com/hashicorp/packer-plugin-docker/post-processor/docker-import +github.com/hashicorp/packer-plugin-docker/post-processor/docker-push +github.com/hashicorp/packer-plugin-docker/post-processor/docker-save +github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag # github.com/hashicorp/packer-plugin-sdk v0.0.14 ## explicit github.com/hashicorp/packer-plugin-sdk/acctest From 9331afcf80420336d8225f9ab9a6ff128c80cc24 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 24 Feb 2021 16:39:56 -0800 Subject: [PATCH 065/212] revendor --- .../docker-import/post-processor.go | 91 ------------ .../docker-import/post-processor.hcl2spec.go | 51 ------- .../docker-push/post-processor.go | 138 ------------------ .../docker-push/post-processor.hcl2spec.go | 63 -------- .../docker-save/post-processor.go | 92 ------------ .../docker-save/post-processor.hcl2spec.go | 47 ------ .../docker-tag/post-processor.go | 122 ---------------- .../docker-tag/post-processor.hcl2spec.go | 53 ------- vendor/modules.txt | 4 - 9 files changed, 661 deletions(-) delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go delete mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go deleted file mode 100644 index 16fcd161a..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go +++ /dev/null @@ -1,91 +0,0 @@ -//go:generate mapstructure-to-hcl2 -type Config - -package dockerimport - -import ( - "context" - "fmt" - - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer-plugin-docker/builder/docker" - "github.com/hashicorp/packer-plugin-sdk/common" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer-plugin-sdk/template/interpolate" -) - -const BuilderId = "packer.post-processor.docker-import" - -type Config struct { - common.PackerConfig `mapstructure:",squash"` - - Repository string `mapstructure:"repository"` - Tag string `mapstructure:"tag"` - Changes []string `mapstructure:"changes"` - - ctx interpolate.Context -} - -type PostProcessor struct { - config Config -} - -func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } - -func (p *PostProcessor) Configure(raws ...interface{}) error { - err := config.Decode(&p.config, &config.DecodeOpts{ - PluginType: BuilderId, - Interpolate: true, - InterpolateContext: &p.config.ctx, - InterpolateFilter: &interpolate.RenderFilter{ - Exclude: []string{}, - }, - }, raws...) - if err != nil { - return err - } - - return nil - -} - -func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { - switch artifact.BuilderId() { - case docker.BuilderId, "packer.post-processor.artifice": - break - default: - err := fmt.Errorf( - "Unknown artifact type: %s\nCan only import from Docker builder "+ - "and Artifice post-processor artifacts. If you are getting this "+ - "error after having run the docker builder, it may be because you "+ - "set commit: true in your Docker builder, so the image is "+ - "already imported. ", - artifact.BuilderId()) - return nil, false, false, err - } - - importRepo := p.config.Repository - if p.config.Tag != "" { - importRepo += ":" + p.config.Tag - } - - driver := &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} - - ui.Message("Importing image: " + artifact.Id()) - ui.Message("Repository: " + importRepo) - id, err := driver.Import(artifact.Files()[0], p.config.Changes, importRepo) - if err != nil { - return nil, false, false, err - } - - ui.Message("Imported ID: " + id) - - // Build the artifact - artifact = &docker.ImportArtifact{ - BuilderIdValue: BuilderId, - Driver: driver, - IdValue: importRepo, - } - - return artifact, false, false, nil -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go deleted file mode 100644 index 02d0f0e13..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. - -package dockerimport - -import ( - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/zclconf/go-cty/cty" -) - -// FlatConfig is an auto-generated flat version of Config. -// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. -type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - Repository *string `mapstructure:"repository" cty:"repository" hcl:"repository"` - Tag *string `mapstructure:"tag" cty:"tag" hcl:"tag"` - Changes []string `mapstructure:"changes" cty:"changes" hcl:"changes"` -} - -// FlatMapstructure returns a new FlatConfig. -// FlatConfig is an auto-generated flat version of Config. -// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. -func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) -} - -// HCL2Spec returns the hcl spec of a Config. -// This spec is used by HCL to read the fields of Config. -// The decoded values from this spec will then be applied to a FlatConfig. -func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "repository": &hcldec.AttrSpec{Name: "repository", Type: cty.String, Required: false}, - "tag": &hcldec.AttrSpec{Name: "tag", Type: cty.String, Required: false}, - "changes": &hcldec.AttrSpec{Name: "changes", Type: cty.List(cty.String), Required: false}, - } - return s -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go deleted file mode 100644 index fee6db49e..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go +++ /dev/null @@ -1,138 +0,0 @@ -//go:generate mapstructure-to-hcl2 -type Config - -package dockerpush - -import ( - "context" - "fmt" - - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer-plugin-docker/builder/docker" - dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" - dockertag "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" - "github.com/hashicorp/packer-plugin-sdk/common" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer-plugin-sdk/template/interpolate" -) - -const BuilderIdImport = "packer.post-processor.docker-import" - -type Config struct { - common.PackerConfig `mapstructure:",squash"` - - Login bool - LoginUsername string `mapstructure:"login_username"` - LoginPassword string `mapstructure:"login_password"` - LoginServer string `mapstructure:"login_server"` - EcrLogin bool `mapstructure:"ecr_login"` - docker.AwsAccessConfig `mapstructure:",squash"` - - ctx interpolate.Context -} - -type PostProcessor struct { - Driver docker.Driver - - config Config -} - -func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } - -func (p *PostProcessor) Configure(raws ...interface{}) error { - err := config.Decode(&p.config, &config.DecodeOpts{ - PluginType: BuilderIdImport, - Interpolate: true, - InterpolateContext: &p.config.ctx, - InterpolateFilter: &interpolate.RenderFilter{ - Exclude: []string{}, - }, - }, raws...) - if err != nil { - return err - } - - if p.config.EcrLogin && p.config.LoginServer == "" { - return fmt.Errorf("ECR login requires login server to be provided.") - } - return nil -} - -func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { - if artifact.BuilderId() != dockerimport.BuilderId && - artifact.BuilderId() != dockertag.BuilderId { - err := fmt.Errorf( - "Unknown artifact type: %s\nCan only import from docker-import and docker-tag artifacts.", - artifact.BuilderId()) - return nil, false, false, err - } - - driver := p.Driver - if driver == nil { - // If no driver is set, then we use the real driver - driver = &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} - } - - if p.config.EcrLogin { - ui.Message("Fetching ECR credentials...") - - username, password, err := p.config.EcrGetLogin(p.config.LoginServer) - if err != nil { - return nil, false, false, err - } - - p.config.LoginUsername = username - p.config.LoginPassword = password - } - - if p.config.Login || p.config.EcrLogin { - ui.Message("Logging in...") - err := driver.Login( - p.config.LoginServer, - p.config.LoginUsername, - p.config.LoginPassword) - if err != nil { - return nil, false, false, fmt.Errorf( - "Error logging in to Docker: %s", err) - } - - defer func() { - ui.Message("Logging out...") - if err := driver.Logout(p.config.LoginServer); err != nil { - ui.Error(fmt.Sprintf("Error logging out: %s", err)) - } - }() - } - - var tags []string - switch t := artifact.State("docker_tags").(type) { - case []string: - tags = t - case []interface{}: - for _, name := range t { - if n, ok := name.(string); ok { - tags = append(tags, n) - } - } - } - - names := []string{artifact.Id()} - names = append(names, tags...) - - // Get the name. - for _, name := range names { - ui.Message("Pushing: " + name) - if err := driver.Push(name); err != nil { - return nil, false, false, err - } - } - - artifact = &docker.ImportArtifact{ - BuilderIdValue: BuilderIdImport, - Driver: driver, - IdValue: names[0], - StateData: map[string]interface{}{"docker_tags": tags}, - } - - return artifact, true, false, nil -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go deleted file mode 100644 index 9ff9fd0c3..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go +++ /dev/null @@ -1,63 +0,0 @@ -// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. - -package dockerpush - -import ( - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/zclconf/go-cty/cty" -) - -// FlatConfig is an auto-generated flat version of Config. -// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. -type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - Login *bool `cty:"login" hcl:"login"` - LoginUsername *string `mapstructure:"login_username" cty:"login_username" hcl:"login_username"` - LoginPassword *string `mapstructure:"login_password" cty:"login_password" hcl:"login_password"` - LoginServer *string `mapstructure:"login_server" cty:"login_server" hcl:"login_server"` - EcrLogin *bool `mapstructure:"ecr_login" cty:"ecr_login" hcl:"ecr_login"` - AccessKey *string `mapstructure:"aws_access_key" required:"false" cty:"aws_access_key" hcl:"aws_access_key"` - SecretKey *string `mapstructure:"aws_secret_key" required:"false" cty:"aws_secret_key" hcl:"aws_secret_key"` - Token *string `mapstructure:"aws_token" required:"false" cty:"aws_token" hcl:"aws_token"` - Profile *string `mapstructure:"aws_profile" required:"false" cty:"aws_profile" hcl:"aws_profile"` -} - -// FlatMapstructure returns a new FlatConfig. -// FlatConfig is an auto-generated flat version of Config. -// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. -func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) -} - -// HCL2Spec returns the hcl spec of a Config. -// This spec is used by HCL to read the fields of Config. -// The decoded values from this spec will then be applied to a FlatConfig. -func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "login": &hcldec.AttrSpec{Name: "login", Type: cty.Bool, Required: false}, - "login_username": &hcldec.AttrSpec{Name: "login_username", Type: cty.String, Required: false}, - "login_password": &hcldec.AttrSpec{Name: "login_password", Type: cty.String, Required: false}, - "login_server": &hcldec.AttrSpec{Name: "login_server", Type: cty.String, Required: false}, - "ecr_login": &hcldec.AttrSpec{Name: "ecr_login", Type: cty.Bool, Required: false}, - "aws_access_key": &hcldec.AttrSpec{Name: "aws_access_key", Type: cty.String, Required: false}, - "aws_secret_key": &hcldec.AttrSpec{Name: "aws_secret_key", Type: cty.String, Required: false}, - "aws_token": &hcldec.AttrSpec{Name: "aws_token", Type: cty.String, Required: false}, - "aws_profile": &hcldec.AttrSpec{Name: "aws_profile", Type: cty.String, Required: false}, - } - return s -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go deleted file mode 100644 index a540f4d96..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go +++ /dev/null @@ -1,92 +0,0 @@ -//go:generate mapstructure-to-hcl2 -type Config - -package dockersave - -import ( - "context" - "fmt" - "os" - - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer-plugin-docker/builder/docker" - dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" - dockertag "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" - "github.com/hashicorp/packer-plugin-sdk/common" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer-plugin-sdk/template/interpolate" -) - -const BuilderId = "packer.post-processor.docker-save" - -type Config struct { - common.PackerConfig `mapstructure:",squash"` - - Path string `mapstructure:"path"` - - ctx interpolate.Context -} - -type PostProcessor struct { - Driver docker.Driver - - config Config -} - -func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } - -func (p *PostProcessor) Configure(raws ...interface{}) error { - err := config.Decode(&p.config, &config.DecodeOpts{ - PluginType: BuilderId, - Interpolate: true, - InterpolateContext: &p.config.ctx, - InterpolateFilter: &interpolate.RenderFilter{ - Exclude: []string{}, - }, - }, raws...) - if err != nil { - return err - } - - return nil - -} - -func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { - if artifact.BuilderId() != dockerimport.BuilderId && - artifact.BuilderId() != dockertag.BuilderId { - err := fmt.Errorf( - "Unknown artifact type: %s\nCan only save Docker builder artifacts.", - artifact.BuilderId()) - return nil, false, false, err - } - - path := p.config.Path - - // Open the file that we're going to write to - f, err := os.Create(path) - if err != nil { - err := fmt.Errorf("Error creating output file: %s", err) - return nil, false, false, err - } - - driver := p.Driver - if driver == nil { - // If no driver is set, then we use the real driver - driver = &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} - } - - ui.Message("Saving image: " + artifact.Id()) - - if err := driver.SaveImage(artifact.Id(), f); err != nil { - f.Close() - os.Remove(f.Name()) - - return nil, false, false, err - } - - f.Close() - ui.Message("Saved to: " + path) - - return artifact, true, false, nil -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go deleted file mode 100644 index 5abf3e78c..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go +++ /dev/null @@ -1,47 +0,0 @@ -// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. - -package dockersave - -import ( - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/zclconf/go-cty/cty" -) - -// FlatConfig is an auto-generated flat version of Config. -// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. -type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - Path *string `mapstructure:"path" cty:"path" hcl:"path"` -} - -// FlatMapstructure returns a new FlatConfig. -// FlatConfig is an auto-generated flat version of Config. -// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. -func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) -} - -// HCL2Spec returns the hcl spec of a Config. -// This spec is used by HCL to read the fields of Config. -// The decoded values from this spec will then be applied to a FlatConfig. -func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "path": &hcldec.AttrSpec{Name: "path", Type: cty.String, Required: false}, - } - return s -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go deleted file mode 100644 index 14f1d5683..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go +++ /dev/null @@ -1,122 +0,0 @@ -//go:generate mapstructure-to-hcl2 -type Config - -package dockertag - -import ( - "context" - "fmt" - - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer-plugin-docker/builder/docker" - dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" - "github.com/hashicorp/packer-plugin-sdk/common" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer-plugin-sdk/template/interpolate" -) - -const BuilderId = "packer.post-processor.docker-tag" - -type Config struct { - common.PackerConfig `mapstructure:",squash"` - - Repository string `mapstructure:"repository"` - // Kept for backwards compatability - Tag []string `mapstructure:"tag"` - Tags []string `mapstructure:"tags"` - Force bool - - ctx interpolate.Context -} - -type PostProcessor struct { - Driver docker.Driver - - config Config -} - -func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } - -func (p *PostProcessor) Configure(raws ...interface{}) error { - err := config.Decode(&p.config, &config.DecodeOpts{ - PluginType: BuilderId, - Interpolate: true, - InterpolateContext: &p.config.ctx, - InterpolateFilter: &interpolate.RenderFilter{ - Exclude: []string{}, - }, - }, raws...) - if err != nil { - return err - } - - // combine Tag and Tags fields - allTags := p.config.Tags - allTags = append(allTags, p.config.Tag...) - - p.config.Tags = allTags - - return nil - -} - -func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { - if len(p.config.Tag) > 0 { - ui.Say("Deprecation warning: \"tag\" option has been replaced with " + - "\"tags\". In future versions of Packer, this configuration may " + - "not work. Please call `packer fix` on your template to update.") - } - - if artifact.BuilderId() != BuilderId && - artifact.BuilderId() != dockerimport.BuilderId { - err := fmt.Errorf( - "Unknown artifact type: %s\nCan only tag from Docker builder artifacts.", - artifact.BuilderId()) - return nil, false, true, err - } - - driver := p.Driver - if driver == nil { - // If no driver is set, then we use the real driver - driver = &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} - } - - importRepo := p.config.Repository - var lastTaggedRepo = importRepo - RepoTags := []string{} - - if len(p.config.Tags) > 0 { - for _, tag := range p.config.Tags { - local := importRepo + ":" + tag - ui.Message("Tagging image: " + artifact.Id()) - ui.Message("Repository: " + local) - - err := driver.TagImage(artifact.Id(), local, p.config.Force) - if err != nil { - return nil, false, true, err - } - - RepoTags = append(RepoTags, local) - lastTaggedRepo = local - } - } else { - ui.Message("Tagging image: " + artifact.Id()) - ui.Message("Repository: " + importRepo) - err := driver.TagImage(artifact.Id(), importRepo, p.config.Force) - if err != nil { - return nil, false, true, err - } - } - - // Build the artifact - artifact = &docker.ImportArtifact{ - BuilderIdValue: BuilderId, - Driver: driver, - IdValue: lastTaggedRepo, - StateData: map[string]interface{}{"docker_tags": RepoTags}, - } - - // If we tag an image and then delete it, there was no point in creating the - // tag. Override users to force us to always keep the input artifact. - return artifact, true, true, nil -} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go deleted file mode 100644 index 3f2a092be..000000000 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. - -package dockertag - -import ( - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/zclconf/go-cty/cty" -) - -// FlatConfig is an auto-generated flat version of Config. -// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. -type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - Repository *string `mapstructure:"repository" cty:"repository" hcl:"repository"` - Tag []string `mapstructure:"tag" cty:"tag" hcl:"tag"` - Tags []string `mapstructure:"tags" cty:"tags" hcl:"tags"` - Force *bool `cty:"force" hcl:"force"` -} - -// FlatMapstructure returns a new FlatConfig. -// FlatConfig is an auto-generated flat version of Config. -// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. -func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) -} - -// HCL2Spec returns the hcl spec of a Config. -// This spec is used by HCL to read the fields of Config. -// The decoded values from this spec will then be applied to a FlatConfig. -func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "repository": &hcldec.AttrSpec{Name: "repository", Type: cty.String, Required: false}, - "tag": &hcldec.AttrSpec{Name: "tag", Type: cty.List(cty.String), Required: false}, - "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.List(cty.String), Required: false}, - "force": &hcldec.AttrSpec{Name: "force", Type: cty.Bool, Required: false}, - } - return s -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 4065c44a5..e3d447884 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -415,10 +415,6 @@ github.com/hashicorp/hcl/v2/hclwrite github.com/hashicorp/hcl/v2/json # github.com/hashicorp/packer-plugin-docker v0.0.2 github.com/hashicorp/packer-plugin-docker/builder/docker -github.com/hashicorp/packer-plugin-docker/post-processor/docker-import -github.com/hashicorp/packer-plugin-docker/post-processor/docker-push -github.com/hashicorp/packer-plugin-docker/post-processor/docker-save -github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag # github.com/hashicorp/packer-plugin-sdk v0.0.14 ## explicit github.com/hashicorp/packer-plugin-sdk/acctest From 1c3c1f17d95b2c0743993c30b8431c4a64439cc7 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 25 Feb 2021 12:45:39 -0800 Subject: [PATCH 066/212] stop generating plugins file to make it possible to vendor plugins --- command/plugin.go | 19 +++++++++++++++---- main.go | 1 - 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/command/plugin.go b/command/plugin.go index 2e039ed6c..cb378dec3 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -1,7 +1,3 @@ -// -// This file is automatically generated by scripts/generate-plugins.go -- Do not edit! -// - package command import ( @@ -13,6 +9,16 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/plugin" + // Previously core-bundled components, split into their own plugins but + // still vendored with Packer for now. Importing as library instead of + // forcing use of packer init, until packer v1.8.0 + dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" + dockersavepostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-save" + dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" + + // These components are still built into the packer core repo alicloudecsbuilder "github.com/hashicorp/packer/builder/alicloud/ecs" amazonchrootbuilder "github.com/hashicorp/packer/builder/amazon/chroot" amazonebsbuilder "github.com/hashicorp/packer/builder/amazon/ebs" @@ -120,6 +126,7 @@ var Builders = map[string]packersdk.Builder{ "azure-dtl": new(azuredtlbuilder.Builder), "cloudstack": new(cloudstackbuilder.Builder), "digitalocean": new(digitaloceanbuilder.Builder), + "docker": new(dockerbuilder.Builder), "file": new(filebuilder.Builder), "googlecompute": new(googlecomputebuilder.Builder), "hcloud": new(hcloudbuilder.Builder), @@ -190,6 +197,10 @@ var PostProcessors = map[string]packersdk.PostProcessor{ "checksum": new(checksumpostprocessor.PostProcessor), "compress": new(compresspostprocessor.PostProcessor), "digitalocean-import": new(digitaloceanimportpostprocessor.PostProcessor), + "docker-import": new(dockerimportpostprocessor.PostProcessor), + "docker-push": new(dockerpushpostprocessor.PostProcessor), + "docker-save": new(dockersavepostprocessor.PostProcessor), + "docker-tag": new(dockertagpostprocessor.PostProcessor), "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), "googlecompute-export": new(googlecomputeexportpostprocessor.PostProcessor), "googlecompute-import": new(googlecomputeimportpostprocessor.PostProcessor), diff --git a/main.go b/main.go index f7806b0bc..f358c2f05 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,5 @@ // This is the main package for the `packer` application. -//go:generate go run ./scripts/generate-plugins.go package main import ( From 04cbcd7ae91bdb2e1522a340a264e07dc07e98c9 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 25 Feb 2021 12:57:27 -0800 Subject: [PATCH 067/212] add docker vendoring to modules.txt --- vendor/modules.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vendor/modules.txt b/vendor/modules.txt index e3d447884..4065c44a5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -415,6 +415,10 @@ github.com/hashicorp/hcl/v2/hclwrite github.com/hashicorp/hcl/v2/json # github.com/hashicorp/packer-plugin-docker v0.0.2 github.com/hashicorp/packer-plugin-docker/builder/docker +github.com/hashicorp/packer-plugin-docker/post-processor/docker-import +github.com/hashicorp/packer-plugin-docker/post-processor/docker-push +github.com/hashicorp/packer-plugin-docker/post-processor/docker-save +github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag # github.com/hashicorp/packer-plugin-sdk v0.0.14 ## explicit github.com/hashicorp/packer-plugin-sdk/acctest From c3e48ebb71f3030014a90a1ac923c39f03c3d099 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 25 Feb 2021 12:57:47 -0800 Subject: [PATCH 068/212] add vendored files --- .../docker-import/post-processor.go | 91 ++++++++++++ .../docker-import/post-processor.hcl2spec.go | 51 +++++++ .../docker-push/post-processor.go | 138 ++++++++++++++++++ .../docker-push/post-processor.hcl2spec.go | 63 ++++++++ .../docker-save/post-processor.go | 92 ++++++++++++ .../docker-save/post-processor.hcl2spec.go | 47 ++++++ .../docker-tag/post-processor.go | 122 ++++++++++++++++ .../docker-tag/post-processor.hcl2spec.go | 53 +++++++ 8 files changed, 657 insertions(+) create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go create mode 100644 vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go new file mode 100644 index 000000000..16fcd161a --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.go @@ -0,0 +1,91 @@ +//go:generate mapstructure-to-hcl2 -type Config + +package dockerimport + +import ( + "context" + "fmt" + + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + "github.com/hashicorp/packer-plugin-sdk/common" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/config" + "github.com/hashicorp/packer-plugin-sdk/template/interpolate" +) + +const BuilderId = "packer.post-processor.docker-import" + +type Config struct { + common.PackerConfig `mapstructure:",squash"` + + Repository string `mapstructure:"repository"` + Tag string `mapstructure:"tag"` + Changes []string `mapstructure:"changes"` + + ctx interpolate.Context +} + +type PostProcessor struct { + config Config +} + +func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } + +func (p *PostProcessor) Configure(raws ...interface{}) error { + err := config.Decode(&p.config, &config.DecodeOpts{ + PluginType: BuilderId, + Interpolate: true, + InterpolateContext: &p.config.ctx, + InterpolateFilter: &interpolate.RenderFilter{ + Exclude: []string{}, + }, + }, raws...) + if err != nil { + return err + } + + return nil + +} + +func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { + switch artifact.BuilderId() { + case docker.BuilderId, "packer.post-processor.artifice": + break + default: + err := fmt.Errorf( + "Unknown artifact type: %s\nCan only import from Docker builder "+ + "and Artifice post-processor artifacts. If you are getting this "+ + "error after having run the docker builder, it may be because you "+ + "set commit: true in your Docker builder, so the image is "+ + "already imported. ", + artifact.BuilderId()) + return nil, false, false, err + } + + importRepo := p.config.Repository + if p.config.Tag != "" { + importRepo += ":" + p.config.Tag + } + + driver := &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} + + ui.Message("Importing image: " + artifact.Id()) + ui.Message("Repository: " + importRepo) + id, err := driver.Import(artifact.Files()[0], p.config.Changes, importRepo) + if err != nil { + return nil, false, false, err + } + + ui.Message("Imported ID: " + id) + + // Build the artifact + artifact = &docker.ImportArtifact{ + BuilderIdValue: BuilderId, + Driver: driver, + IdValue: importRepo, + } + + return artifact, false, false, nil +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go new file mode 100644 index 000000000..02d0f0e13 --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-import/post-processor.hcl2spec.go @@ -0,0 +1,51 @@ +// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. + +package dockerimport + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + Repository *string `mapstructure:"repository" cty:"repository" hcl:"repository"` + Tag *string `mapstructure:"tag" cty:"tag" hcl:"tag"` + Changes []string `mapstructure:"changes" cty:"changes" hcl:"changes"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "repository": &hcldec.AttrSpec{Name: "repository", Type: cty.String, Required: false}, + "tag": &hcldec.AttrSpec{Name: "tag", Type: cty.String, Required: false}, + "changes": &hcldec.AttrSpec{Name: "changes", Type: cty.List(cty.String), Required: false}, + } + return s +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go new file mode 100644 index 000000000..fee6db49e --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.go @@ -0,0 +1,138 @@ +//go:generate mapstructure-to-hcl2 -type Config + +package dockerpush + +import ( + "context" + "fmt" + + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + dockertag "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" + "github.com/hashicorp/packer-plugin-sdk/common" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/config" + "github.com/hashicorp/packer-plugin-sdk/template/interpolate" +) + +const BuilderIdImport = "packer.post-processor.docker-import" + +type Config struct { + common.PackerConfig `mapstructure:",squash"` + + Login bool + LoginUsername string `mapstructure:"login_username"` + LoginPassword string `mapstructure:"login_password"` + LoginServer string `mapstructure:"login_server"` + EcrLogin bool `mapstructure:"ecr_login"` + docker.AwsAccessConfig `mapstructure:",squash"` + + ctx interpolate.Context +} + +type PostProcessor struct { + Driver docker.Driver + + config Config +} + +func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } + +func (p *PostProcessor) Configure(raws ...interface{}) error { + err := config.Decode(&p.config, &config.DecodeOpts{ + PluginType: BuilderIdImport, + Interpolate: true, + InterpolateContext: &p.config.ctx, + InterpolateFilter: &interpolate.RenderFilter{ + Exclude: []string{}, + }, + }, raws...) + if err != nil { + return err + } + + if p.config.EcrLogin && p.config.LoginServer == "" { + return fmt.Errorf("ECR login requires login server to be provided.") + } + return nil +} + +func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { + if artifact.BuilderId() != dockerimport.BuilderId && + artifact.BuilderId() != dockertag.BuilderId { + err := fmt.Errorf( + "Unknown artifact type: %s\nCan only import from docker-import and docker-tag artifacts.", + artifact.BuilderId()) + return nil, false, false, err + } + + driver := p.Driver + if driver == nil { + // If no driver is set, then we use the real driver + driver = &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} + } + + if p.config.EcrLogin { + ui.Message("Fetching ECR credentials...") + + username, password, err := p.config.EcrGetLogin(p.config.LoginServer) + if err != nil { + return nil, false, false, err + } + + p.config.LoginUsername = username + p.config.LoginPassword = password + } + + if p.config.Login || p.config.EcrLogin { + ui.Message("Logging in...") + err := driver.Login( + p.config.LoginServer, + p.config.LoginUsername, + p.config.LoginPassword) + if err != nil { + return nil, false, false, fmt.Errorf( + "Error logging in to Docker: %s", err) + } + + defer func() { + ui.Message("Logging out...") + if err := driver.Logout(p.config.LoginServer); err != nil { + ui.Error(fmt.Sprintf("Error logging out: %s", err)) + } + }() + } + + var tags []string + switch t := artifact.State("docker_tags").(type) { + case []string: + tags = t + case []interface{}: + for _, name := range t { + if n, ok := name.(string); ok { + tags = append(tags, n) + } + } + } + + names := []string{artifact.Id()} + names = append(names, tags...) + + // Get the name. + for _, name := range names { + ui.Message("Pushing: " + name) + if err := driver.Push(name); err != nil { + return nil, false, false, err + } + } + + artifact = &docker.ImportArtifact{ + BuilderIdValue: BuilderIdImport, + Driver: driver, + IdValue: names[0], + StateData: map[string]interface{}{"docker_tags": tags}, + } + + return artifact, true, false, nil +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go new file mode 100644 index 000000000..9ff9fd0c3 --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-push/post-processor.hcl2spec.go @@ -0,0 +1,63 @@ +// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. + +package dockerpush + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + Login *bool `cty:"login" hcl:"login"` + LoginUsername *string `mapstructure:"login_username" cty:"login_username" hcl:"login_username"` + LoginPassword *string `mapstructure:"login_password" cty:"login_password" hcl:"login_password"` + LoginServer *string `mapstructure:"login_server" cty:"login_server" hcl:"login_server"` + EcrLogin *bool `mapstructure:"ecr_login" cty:"ecr_login" hcl:"ecr_login"` + AccessKey *string `mapstructure:"aws_access_key" required:"false" cty:"aws_access_key" hcl:"aws_access_key"` + SecretKey *string `mapstructure:"aws_secret_key" required:"false" cty:"aws_secret_key" hcl:"aws_secret_key"` + Token *string `mapstructure:"aws_token" required:"false" cty:"aws_token" hcl:"aws_token"` + Profile *string `mapstructure:"aws_profile" required:"false" cty:"aws_profile" hcl:"aws_profile"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "login": &hcldec.AttrSpec{Name: "login", Type: cty.Bool, Required: false}, + "login_username": &hcldec.AttrSpec{Name: "login_username", Type: cty.String, Required: false}, + "login_password": &hcldec.AttrSpec{Name: "login_password", Type: cty.String, Required: false}, + "login_server": &hcldec.AttrSpec{Name: "login_server", Type: cty.String, Required: false}, + "ecr_login": &hcldec.AttrSpec{Name: "ecr_login", Type: cty.Bool, Required: false}, + "aws_access_key": &hcldec.AttrSpec{Name: "aws_access_key", Type: cty.String, Required: false}, + "aws_secret_key": &hcldec.AttrSpec{Name: "aws_secret_key", Type: cty.String, Required: false}, + "aws_token": &hcldec.AttrSpec{Name: "aws_token", Type: cty.String, Required: false}, + "aws_profile": &hcldec.AttrSpec{Name: "aws_profile", Type: cty.String, Required: false}, + } + return s +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go new file mode 100644 index 000000000..a540f4d96 --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.go @@ -0,0 +1,92 @@ +//go:generate mapstructure-to-hcl2 -type Config + +package dockersave + +import ( + "context" + "fmt" + "os" + + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + dockertag "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" + "github.com/hashicorp/packer-plugin-sdk/common" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/config" + "github.com/hashicorp/packer-plugin-sdk/template/interpolate" +) + +const BuilderId = "packer.post-processor.docker-save" + +type Config struct { + common.PackerConfig `mapstructure:",squash"` + + Path string `mapstructure:"path"` + + ctx interpolate.Context +} + +type PostProcessor struct { + Driver docker.Driver + + config Config +} + +func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } + +func (p *PostProcessor) Configure(raws ...interface{}) error { + err := config.Decode(&p.config, &config.DecodeOpts{ + PluginType: BuilderId, + Interpolate: true, + InterpolateContext: &p.config.ctx, + InterpolateFilter: &interpolate.RenderFilter{ + Exclude: []string{}, + }, + }, raws...) + if err != nil { + return err + } + + return nil + +} + +func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { + if artifact.BuilderId() != dockerimport.BuilderId && + artifact.BuilderId() != dockertag.BuilderId { + err := fmt.Errorf( + "Unknown artifact type: %s\nCan only save Docker builder artifacts.", + artifact.BuilderId()) + return nil, false, false, err + } + + path := p.config.Path + + // Open the file that we're going to write to + f, err := os.Create(path) + if err != nil { + err := fmt.Errorf("Error creating output file: %s", err) + return nil, false, false, err + } + + driver := p.Driver + if driver == nil { + // If no driver is set, then we use the real driver + driver = &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} + } + + ui.Message("Saving image: " + artifact.Id()) + + if err := driver.SaveImage(artifact.Id(), f); err != nil { + f.Close() + os.Remove(f.Name()) + + return nil, false, false, err + } + + f.Close() + ui.Message("Saved to: " + path) + + return artifact, true, false, nil +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go new file mode 100644 index 000000000..5abf3e78c --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-save/post-processor.hcl2spec.go @@ -0,0 +1,47 @@ +// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. + +package dockersave + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + Path *string `mapstructure:"path" cty:"path" hcl:"path"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "path": &hcldec.AttrSpec{Name: "path", Type: cty.String, Required: false}, + } + return s +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go new file mode 100644 index 000000000..14f1d5683 --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go @@ -0,0 +1,122 @@ +//go:generate mapstructure-to-hcl2 -type Config + +package dockertag + +import ( + "context" + "fmt" + + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimport "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + "github.com/hashicorp/packer-plugin-sdk/common" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/config" + "github.com/hashicorp/packer-plugin-sdk/template/interpolate" +) + +const BuilderId = "packer.post-processor.docker-tag" + +type Config struct { + common.PackerConfig `mapstructure:",squash"` + + Repository string `mapstructure:"repository"` + // Kept for backwards compatability + Tag []string `mapstructure:"tag"` + Tags []string `mapstructure:"tags"` + Force bool + + ctx interpolate.Context +} + +type PostProcessor struct { + Driver docker.Driver + + config Config +} + +func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } + +func (p *PostProcessor) Configure(raws ...interface{}) error { + err := config.Decode(&p.config, &config.DecodeOpts{ + PluginType: BuilderId, + Interpolate: true, + InterpolateContext: &p.config.ctx, + InterpolateFilter: &interpolate.RenderFilter{ + Exclude: []string{}, + }, + }, raws...) + if err != nil { + return err + } + + // combine Tag and Tags fields + allTags := p.config.Tags + allTags = append(allTags, p.config.Tag...) + + p.config.Tags = allTags + + return nil + +} + +func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifact packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { + if len(p.config.Tag) > 0 { + ui.Say("Deprecation warning: \"tag\" option has been replaced with " + + "\"tags\". In future versions of Packer, this configuration may " + + "not work. Please call `packer fix` on your template to update.") + } + + if artifact.BuilderId() != BuilderId && + artifact.BuilderId() != dockerimport.BuilderId { + err := fmt.Errorf( + "Unknown artifact type: %s\nCan only tag from Docker builder artifacts.", + artifact.BuilderId()) + return nil, false, true, err + } + + driver := p.Driver + if driver == nil { + // If no driver is set, then we use the real driver + driver = &docker.DockerDriver{Ctx: &p.config.ctx, Ui: ui} + } + + importRepo := p.config.Repository + var lastTaggedRepo = importRepo + RepoTags := []string{} + + if len(p.config.Tags) > 0 { + for _, tag := range p.config.Tags { + local := importRepo + ":" + tag + ui.Message("Tagging image: " + artifact.Id()) + ui.Message("Repository: " + local) + + err := driver.TagImage(artifact.Id(), local, p.config.Force) + if err != nil { + return nil, false, true, err + } + + RepoTags = append(RepoTags, local) + lastTaggedRepo = local + } + } else { + ui.Message("Tagging image: " + artifact.Id()) + ui.Message("Repository: " + importRepo) + err := driver.TagImage(artifact.Id(), importRepo, p.config.Force) + if err != nil { + return nil, false, true, err + } + } + + // Build the artifact + artifact = &docker.ImportArtifact{ + BuilderIdValue: BuilderId, + Driver: driver, + IdValue: lastTaggedRepo, + StateData: map[string]interface{}{"docker_tags": RepoTags}, + } + + // If we tag an image and then delete it, there was no point in creating the + // tag. Override users to force us to always keep the input artifact. + return artifact, true, true, nil +} diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go new file mode 100644 index 000000000..3f2a092be --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.hcl2spec.go @@ -0,0 +1,53 @@ +// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. + +package dockertag + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + Repository *string `mapstructure:"repository" cty:"repository" hcl:"repository"` + Tag []string `mapstructure:"tag" cty:"tag" hcl:"tag"` + Tags []string `mapstructure:"tags" cty:"tags" hcl:"tags"` + Force *bool `cty:"force" hcl:"force"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "repository": &hcldec.AttrSpec{Name: "repository", Type: cty.String, Required: false}, + "tag": &hcldec.AttrSpec{Name: "tag", Type: cty.List(cty.String), Required: false}, + "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.List(cty.String), Required: false}, + "force": &hcldec.AttrSpec{Name: "force", Type: cty.Bool, Required: false}, + } + return s +} From 10e157393009e3f8f825a0430415b7bf65103f37 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 Feb 2021 17:26:51 -0500 Subject: [PATCH 069/212] Remove docker documentation from website --- website/content/docs/builders/docker.mdx | 529 ------------------ .../docs/post-processors/docker-import.mdx | 217 ------- .../docs/post-processors/docker-push.mdx | 69 --- .../docs/post-processors/docker-save.mdx | 66 --- .../docs/post-processors/docker-tag.mdx | 83 --- .../docker/AwsAccessConfig-not-required.mdx | 18 - .../builder/docker/Config-not-required.mdx | 74 --- .../builder/docker/Config-required.mdx | 14 - 8 files changed, 1070 deletions(-) delete mode 100644 website/content/docs/builders/docker.mdx delete mode 100644 website/content/docs/post-processors/docker-import.mdx delete mode 100644 website/content/docs/post-processors/docker-push.mdx delete mode 100644 website/content/docs/post-processors/docker-save.mdx delete mode 100644 website/content/docs/post-processors/docker-tag.mdx delete mode 100644 website/content/partials/builder/docker/AwsAccessConfig-not-required.mdx delete mode 100644 website/content/partials/builder/docker/Config-not-required.mdx delete mode 100644 website/content/partials/builder/docker/Config-required.mdx diff --git a/website/content/docs/builders/docker.mdx b/website/content/docs/builders/docker.mdx deleted file mode 100644 index 7172857c6..000000000 --- a/website/content/docs/builders/docker.mdx +++ /dev/null @@ -1,529 +0,0 @@ ---- -description: > - The docker Packer builder builds Docker images using Docker. The builder - starts - - a Docker container, runs provisioners within this container, then exports the - - container for reuse or commits the image. -page_title: Docker - Builders -sidebar_title: Docker ---- - -# Docker Builder - -Type: `docker` -Artifact BuilderId: `packer.docker` - -The `docker` Packer builder builds [Docker](https://www.docker.io) images using -Docker. The builder starts a Docker container, runs provisioners within this -container, then exports the container for reuse or commits the image. - -Packer builds Docker containers _without_ the use of -[Dockerfiles](https://docs.docker.com/engine/reference/builder/). By not using -`Dockerfiles`, Packer is able to provision containers with portable scripts or -configuration management systems that are not tied to Docker in any way. It -also has a simple mental model: you provision containers much the same way you -provision a normal virtualized or dedicated server. For more information, read -the section on [Dockerfiles](#dockerfiles). - -The Docker builder must run on a machine that has Docker Engine installed. -Therefore the builder only works on machines that support Docker and _does not -support running on a Docker remote host_. You can learn about what [platforms -Docker supports and how to install onto -them](https://docs.docker.com/engine/installation/) in the Docker -documentation. - -## Basic Example: Export - -Below is a fully functioning example. It doesn't do anything useful, since no -provisioners are defined, but it will effectively repackage an image. - - - - -```json -{ - "type": "docker", - "image": "ubuntu", - "export_path": "image.tar" -} -``` - - - - -```hcl -source "docker" "example" { - image = "ubuntu" - export_path = "image.tar" -} - -build { - sources = ["source.docker.example"] -} -``` - - - - -## Basic Example: Commit - -Below is another example, the same as above but instead of exporting the -running container, this one commits the container to an image. The image can -then be more easily tagged, pushed, etc. - - - - -```json -{ - "type": "docker", - "image": "ubuntu", - "commit": true -} -``` - - - - -```hcl -source "docker" "example" { - image = "ubuntu" - commit = true -} - -build { - sources = ["source.docker.example"] -} -``` - - - - -## Basic Example: Changes to Metadata - -Below is an example using the changes argument of the builder. This feature -allows the source images metadata to be changed when committed back into the -Docker environment. It is derived from the `docker commit --change` command -line [option to -Docker](https://docs.docker.com/engine/reference/commandline/commit/). - -Example uses of all of the options, assuming one is building an NGINX image -from ubuntu as an simple example: - - - - -```json -{ - "type": "docker", - "image": "ubuntu", - "commit": true, - "changes": [ - "USER www-data", - "WORKDIR /var/www", - "ENV HOSTNAME www.example.com", - "VOLUME /test1 /test2", - "EXPOSE 80 443", - "LABEL version=1.0", - "ONBUILD RUN date", - "CMD [\"nginx\", \"-g\", \"daemon off;\"]", - "ENTRYPOINT /var/www/start.sh" - ] -} -``` - - - - -```hcl -source "docker" "example" { - image = "ubuntu" - commit = true - changes = [ - "USER www-data", - "WORKDIR /var/www", - "ENV HOSTNAME www.example.com", - "VOLUME /test1 /test2", - "EXPOSE 80 443", - "LABEL version=1.0", - "ONBUILD RUN date", - "CMD [\"nginx\", \"-g\", \"daemon off;\"]", - "ENTRYPOINT /var/www/start.sh" - ] -} -``` - - - - -Allowed metadata fields that can be changed are: - -- CMD - - String, supports both array (escaped) and string form - - EX: `"CMD [\"nginx\", \"-g\", \"daemon off;\"]"` corresponds to Docker exec form - - EX: `"CMD nginx -g daemon off;"` corresponds to Docker shell form, invokes a command shell first -- ENTRYPOINT - - String, supports both array (escaped) and string form - - EX: `"ENTRYPOINT [\"/bin/sh\", \"-c\", \"/var/www/start.sh\"]"` corresponds to Docker exec form - - EX: `"ENTRYPOINT /var/www/start.sh"` corresponds to Docker shell form, invokes a command shell first -- ENV - - String, note there is no equal sign: - - EX: `"ENV HOSTNAME www.example.com"` not - `"ENV HOSTNAME=www.example.com"` -- EXPOSE - - String, space separated ports - - EX: `"EXPOSE 80 443"` -- LABEL - - String, space separated key=value pairs - - EX: `"LABEL version=1.0"` -- ONBUILD - - String - - EX: `"ONBUILD RUN date"` -- MAINTAINER - - String, deprecated in Docker version 1.13.0 - - EX: `"MAINTAINER NAME"` -- USER - - String - - EX: `"USER USERNAME"` -- VOLUME - - String - - EX: `"VOLUME FROM TO"` -- WORKDIR - - String - - EX: `"WORKDIR PATH"` - -## Configuration Reference - -Configuration options are organized below into two categories: required and -optional. Within each category, the available options are alphabetized and -described. - -The Docker builder uses a special Docker communicator _and will not use_ the -standard [communicators](/docs/templates/legacy_json_templates/communicator). - -### Required: - -You must specify (only) one of `commit`, `discard`, or `export_path`. - -@include 'builder/docker/Config-required.mdx' - -### Optional: - -@include 'builder/docker/AwsAccessConfig-not-required.mdx' - -@include 'builder/docker/Config-not-required.mdx' - -## Build Shared Information Variables - -This build shares generated data with provisioners and post-processors via [template engines](/docs/templates/legacy_json_templates/engine) -for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - -The generated variable available for this builder is: - -- `ImageSha256` - When committing a container to an image, this will give the image SHA256. Because the image is not available at the provision step, - this variable is only available for post-processors. - -## Using the Artifact: Export - -Once the tar artifact has been generated, you will likely want to import, tag, -and push it to a container repository. Packer can do this for you automatically -with the [docker-import](/docs/post-processors/docker-import) and -[docker-push](/docs/post-processors/docker-push) post-processors. - -**Note:** This section is covering how to use an artifact that has been -_exported_. More specifically, if you set `export_path` in your configuration. -If you set `commit`, see the next section. - -The example below shows a full configuration that would import and push the -created image. This is accomplished using a sequence definition (a collection -of post-processors that are treated as as single pipeline, see -[Post-Processors](/docs/templates/legacy_json_templates/post-processors) for more information): - - - - -```json -{ - "post-processors": [ - [ - { - "type": "docker-import", - "repository": "myrepo/myimage", - "tag": "0.7" - }, - { - "type": "docker-push" - } - ] - ] -} -``` - - - - -```hcl - post-processors { - post-processor "docker-import" { - repository = "myrepo/myimage" - tag = ["0.7"] - } - post-processor "docker-push" {} - } -} -``` - - - - -In the above example, the result of each builder is passed through the defined -sequence of post-processors starting first with the `docker-import` -post-processor which will import the artifact as a docker image. The resulting -docker image is then passed on to the `docker-push` post-processor which -handles pushing the image to a container repository. - -If you want to do this manually, however, perhaps from a script, you can import -the image using the process below: - -```shell-session -$ docker import - registry.mydomain.com/mycontainer:latest < artifact.tar -``` - -You can then add additional tags and push the image as usual with `docker tag` -and `docker push`, respectively. - -## Using the Artifact: Committed - -If you committed your container to an image, you probably want to tag, save, -push, etc. Packer can do this automatically for you. An example is shown below -which tags and pushes an image. This is accomplished using a sequence -definition (a collection of post-processors that are treated as as single -pipeline, see [Post-Processors](/docs/templates/legacy_json_templates/post-processors) for more -information): - - - - -```json -{ - "post-processors": [ - [ - { - "type": "docker-tag", - "repository": "myrepo/myimage", - "tag": "0.7" - }, - { - "type": "docker-push" - } - ] - ] -} -``` - - - - -```hcl - post-processors { - post-processor "docker-tag" { - repository = "myrepo/myimage" - tag = ["0.7"] - } - post-processor "docker-push" {} - } -} -``` - - - - -In the above example, the result of each builder is passed through the defined -sequence of post-processors starting first with the `docker-tag` post-processor -which tags the committed image with the supplied repository and tag -information. Once tagged, the resulting artifact is then passed on to the -`docker-push` post-processor which handles pushing the image to a container -repository. - -Going a step further, if you wanted to tag and push an image to multiple -container repositories, this could be accomplished by defining two, -nearly-identical sequence definitions, as demonstrated by the example below: - - - - -```json -{ - "post-processors": [ - [ - { - "type": "docker-tag", - "repository": "myrepo/myimage1", - "tag": "0.7" - }, - "docker-push" - ], - [ - { - "type": "docker-tag", - "repository": "myrepo/myimage2", - "tag": "0.7" - }, - "docker-push" - ] - ] -} -``` - - - - -```hcl - post-processors { - post-processor "docker-tag" { - repository = "myrepo/myimage1" - tag = ["0.7"] - } - post-processor "docker-push" {} - } - post-processors { - post-processor "docker-tag" { - repository = "myrepo/myimage2" - tag = ["0.7"] - } - post-processor "docker-push" {} - } -} -``` - - - - - - -## Docker For Windows - -You should be able to run docker builds against both linux and Windows -containers. Windows containers use a different communicator than linux -containers, because Windows containers cannot use `docker cp`. - -If you are building a Windows container, you must set the template option -`"windows_container": true`. Please note that docker cannot export Windows -containers, so you must either commit or discard them. - -The following is a fully functional template for building a Windows -container. - - - - -```json -{ - "builders": [ - { - "type": "docker", - "image": "microsoft/windowsservercore:1709", - "container_dir": "c:/app", - "windows_container": true, - "commit": true - } - ] -} -``` - - - - -```hcl -source "docker" "windows" { - image = "ubuntu" - container_dir = "c:/app" - windows_container = true - commit = true -} - -build { - sources = ["source.docker.example"] -} -``` - - - - -## Amazon EC2 Container Registry - -Packer can tag and push images for use in [Amazon EC2 Container -Registry](https://aws.amazon.com/ecr/). The post processors work as described -above and example configuration properties are shown below: - - - - -```json -{ - "post-processors": [ - [ - { - "type": "docker-tag", - "repository": "12345.dkr.ecr.us-east-1.amazonaws.com/packer", - "tag": "0.7" - }, - { - "type": "docker-push", - "ecr_login": true, - "aws_access_key": "YOUR KEY HERE", - "aws_secret_key": "YOUR SECRET KEY HERE", - "login_server": "https://12345.dkr.ecr.us-east-1.amazonaws.com/" - } - ] - ] -} -``` - - - - -```hcl -post-processors { - post-processor "docker-tag" { - repository = "12345.dkr.ecr.us-east-1.amazonaws.com/packer" - tag = ["0.7"] - } - post-processor "docker-push" { - ecr_login = true - aws_access_key = "YOUR KEY HERE" - aws_secret_key = "YOUR SECRET KEY HERE" - login_server = "https://12345.dkr.ecr.us-east-1.amazonaws.com/" - } -} -``` - - - - -[Learn how to set Amazon AWS -credentials.](/docs/builders/amazon#specifying-amazon-credentials) - -## Dockerfiles - -This builder allows you to build Docker images _without_ Dockerfiles. - -With this builder, you can repeatedly create Docker images without the use of a -Dockerfile. You don't need to know the syntax or semantics of Dockerfiles. -Instead, you can just provide shell scripts, Chef recipes, Puppet manifests, -etc. to provision your Docker container just like you would a regular -virtualized or dedicated machine. - -While Docker has many features, Packer views Docker simply as a container -runner. To that end, Packer is able to repeatedly build these containers using -portable provisioning scripts. - -## Overriding the host directory - -By default, Packer creates a temporary folder under your home directory, and -uses that to stage files for uploading into the container. If you would like to -change the path to this temporary folder, you can set the `PACKER_TMP_DIR`. -This can be useful, for example, if you have your home directory permissions -set up to disallow access from the docker daemon. diff --git a/website/content/docs/post-processors/docker-import.mdx b/website/content/docs/post-processors/docker-import.mdx deleted file mode 100644 index 78ed0358e..000000000 --- a/website/content/docs/post-processors/docker-import.mdx +++ /dev/null @@ -1,217 +0,0 @@ ---- -description: | - The Packer Docker import post-processor takes an artifact from the docker - builder and imports it with Docker locally. This allows you to apply a - repository and tag to the image and lets you use the other Docker - post-processors such as docker-push to push the image to a registry. -page_title: Docker Import - Post-Processors -sidebar_title: Docker Import ---- - -# Docker Import Post-Processor - -Type: `docker-import` -Artifact BuilderId: `packer.post-processor.docker-import` - -The Packer Docker import post-processor takes an artifact from the [docker -builder](/docs/builders/docker) and imports it with Docker locally. This -allows you to apply a repository and tag to the image and lets you use the -other Docker post-processors such as -[docker-push](/docs/post-processors/docker-push) to push the image to a -registry. - -## Basic Example - - - - -```json -{ - "builders": [ - { - "type": "docker", - "image": "ubuntu:18.04", - "export_path": "party_parrot.tar" - } - ], - "post-processors": [ - { - "type": "docker-import", - "repository": "local/ubuntu", - "tag": "latest" - } - ] -} -``` - - - - -```hcl -source "docker" "example" { - image = "ubuntu:18.04" - export_path = "party_parrot.tar" -} - -build { - sources = [ - "source.docker.example" - ] - - post-processor "docker-import" { - repository = "local/ubuntu" - tag = "latest" - } -} -``` - - - - -## Configuration - -The configuration for this post-processor only requires a `repository`, a `tag` -is optional. - -### Required: - -- `repository` (string) - The repository of the imported image. - -### Optional: - -- `tag` (string) - The tag for the imported image. By default this is not - set. - -- `changes` (array of strings) - Dockerfile instructions to add to the - commit. Example of instructions are `CMD`, `ENTRYPOINT`, `ENV`, and - `EXPOSE`. Example: `[ "USER ubuntu", "WORKDIR /app", "EXPOSE 8080" ]` - -- `keep_input_artifact` (boolean) - if true, do not delete the source tar - after importing it to docker. Defaults to false. - -## Example - -An example is shown below, showing only the post-processor configuration: - - - - -```json -{ - "type": "docker-import", - "repository": "hashicorp/packer", - "tag": "0.7" -} -``` - - - - -```hcl -post-processor "docker-import" { - repository = "hashicorp/packer" - tag = "0.7" -} -``` - - - - -This example would take the image created by the Docker builder and import it -into the local Docker process with a name of `hashicorp/packer:0.7`. - -Following this, you can use the -[docker-push](/docs/post-processors/docker-push) post-processor to push it -to a registry, if you want. - -## Changing Metadata - -Below is an example using the changes argument of the post-processor. This -feature allows the tarball metadata to be changed when imported into the Docker -environment. It is derived from the `docker import --change` command line -[option to -Docker](https://docs.docker.com/engine/reference/commandline/import/). - -Example uses of all of the options, assuming one is building an NGINX image -from ubuntu as an simple example: - - - - -```json -{ - "type": "docker-import", - "repository": "local/centos6", - "tag": "latest", - "changes": [ - "USER www-data", - "WORKDIR /var/www", - "ENV HOSTNAME www.example.com", - "VOLUME /test1 /test2", - "EXPOSE 80 443", - "LABEL version=1.0", - "ONBUILD RUN date", - "CMD [\"nginx\", \"-g\", \"daemon off;\"]", - "ENTRYPOINT /var/www/start.sh" - ] -} -``` - - - - -```hcl -post-processor "docker-import" { - repository = "local/centos6" - tag = "latest" - changes = [ - "USER www-data", - "WORKDIR /var/www", - "ENV HOSTNAME www.example.com", - "VOLUME /test1 /test2", - "EXPOSE 80 443", - "LABEL version=1.0", - "ONBUILD RUN date", - "CMD [\"nginx\", \"-g\", \"daemon off;\"]", - "ENTRYPOINT /var/www/start.sh", - ] -} -``` - - - - -Allowed metadata fields that can be changed are: - -- CMD - - String, supports both array (escaped) and string form - - EX: `"CMD [\"nginx\", \"-g\", \"daemon off;\"]"` - - EX: `"CMD nginx -g daemon off;"` -- ENTRYPOINT - - String - - EX: `"ENTRYPOINT /var/www/start.sh"` -- ENV - - String, note there is no equal sign: - - EX: `"ENV HOSTNAME www.example.com"` not - `"ENV HOSTNAME=www.example.com"` -- EXPOSE - - String, space separated ports - - EX: `"EXPOSE 80 443"` -- LABEL - - String, space separated key=value pairs - - EX: `"LABEL version=1.0"` -- ONBUILD - - String - - EX: `"ONBUILD RUN date"` -- MAINTAINER - - String, deprecated in Docker version 1.13.0 - - EX: `"MAINTAINER NAME"` -- USER - - String - - EX: `"USER USERNAME"` -- VOLUME - - String - - EX: `"VOLUME FROM TO"` -- WORKDIR - - String - - EX: `"WORKDIR PATH"` diff --git a/website/content/docs/post-processors/docker-push.mdx b/website/content/docs/post-processors/docker-push.mdx deleted file mode 100644 index 43305f09c..000000000 --- a/website/content/docs/post-processors/docker-push.mdx +++ /dev/null @@ -1,69 +0,0 @@ ---- -description: | - The Packer Docker push post-processor takes an artifact from the docker-import - post-processor and pushes it to a Docker registry. -page_title: Docker Push - Post-Processors -sidebar_title: Docker Push ---- - -# Docker Push Post-Processor - -Type: `docker-push` -Artifact BuilderId: `packer.post-processor.docker-import` - -The Packer Docker push post-processor takes an artifact from the -[docker-import](/docs/post-processors/docker-import) post-processor and -pushes it to a Docker registry. - -## Configuration - -This post-processor has only optional configuration: - -- `aws_access_key` (string) - The AWS access key used to communicate with - AWS. [Learn how to set - this.](/docs/builders/amazon#specifying-amazon-credentials) - -- `aws_secret_key` (string) - The AWS secret key used to communicate with - AWS. [Learn how to set - this.](/docs/builders/amazon#specifying-amazon-credentials) - -- `aws_token` (string) - The AWS access token to use. This is different from - the access key and secret key. If you're not sure what this is, then you - probably don't need it. This will also be read from the `AWS_SESSION_TOKEN` - environmental variable. - -- `aws_profile` (string) - The AWS shared credentials profile used to - communicate with AWS. [Learn how to set - this.](/docs/builders/amazon#specifying-amazon-credentials) - -- `ecr_login` (boolean) - Defaults to false. If true, the post-processor will - login in order to push the image to [Amazon EC2 Container Registry - (ECR)](https://aws.amazon.com/ecr/). The post-processor only logs in for - the duration of the push. If true `login_server` is required and `login`, - `login_username`, and `login_password` will be ignored. - -- `keep_input_artifact` (boolean) - if true, do not delete the docker image - after pushing it to the cloud. Defaults to true, but can be set to false if - you do not need to save your local copy of the docker container. - -- `login` (boolean) - Defaults to false. If true, the post-processor will - login prior to pushing. For log into ECR see `ecr_login`. - -- `login_username` (string) - The username to use to authenticate to login. - -- `login_password` (string) - The password to use to authenticate to login. - -- `login_server` (string) - The server address to login to. - --> **Note:** When using _Docker Hub_ or _Quay_ registry servers, `login` -must to be set to `true` and `login_username`, **and** `login_password` must to -be set to your registry credentials. When using Docker Hub, `login_server` can -be omitted. - --> **Note:** If you login using the credentials above, the post-processor -will automatically log you out afterwards (just the server specified). - -## Example - -For an example of using docker-push, see the section on using generated -artifacts from the [docker builder](/docs/builders/docker). diff --git a/website/content/docs/post-processors/docker-save.mdx b/website/content/docs/post-processors/docker-save.mdx deleted file mode 100644 index 3f4fbdfca..000000000 --- a/website/content/docs/post-processors/docker-save.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -description: > - The Packer Docker Save post-processor takes an artifact from the docker - builder - - that was committed and saves it to a file. This is similar to exporting the - - Docker image directly from the builder, except that it preserves the hierarchy - - of images and metadata. -page_title: Docker Save - Post-Processors -sidebar_title: Docker Save ---- - -# Docker Save Post-Processor - -Type: `docker-save` -Artifact BuilderId: `packer.post-processor.docker-save` - -The Packer Docker Save post-processor takes an artifact from the [docker -builder](/docs/builders/docker) that was committed and saves it to a file. -This is similar to exporting the Docker image directly from the builder, except -that it preserves the hierarchy of images and metadata. - -We understand the terminology can be a bit confusing, but we've adopted the -terminology from Docker, so if you're familiar with that, then you'll be -familiar with this and vice versa. - -## Configuration - -### Required - -The configuration for this post-processor only requires one option. - -- `path` (string) - The path to save the image. - -### Optional - -- `keep_input_artifact` (boolean) - if true, do not delete the docker - container, and only save the .tar created by docker save. Defaults to true. - -## Example - -An example is shown below, showing only the post-processor configuration: - - - - -```json -{ - "type": "docker-save", - "path": "foo.tar" -} -``` - - - - -```hcl -post-processors "docker-save" { - path = "foo.tar" -} -``` - - - diff --git a/website/content/docs/post-processors/docker-tag.mdx b/website/content/docs/post-processors/docker-tag.mdx deleted file mode 100644 index 1536e56f1..000000000 --- a/website/content/docs/post-processors/docker-tag.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -description: | - The Packer Docker Tag post-processor takes an artifact from the docker builder - that was committed and tags it into a repository. This allows you to use the - other Docker post-processors such as docker-push to push the image to a - registry. -page_title: Docker Tag - Post-Processors -sidebar_title: Docker Tag ---- - -# Docker Tag Post-Processor - -Type: `docker-tag` -Artifact BuilderId: `packer.post-processor.docker-tag` - -The Packer Docker Tag post-processor takes an artifact from the [docker -builder](/docs/builders/docker) that was committed and tags it into a -repository. This allows you to use the other Docker post-processors such as -[docker-push](/docs/post-processors/docker-push) to push the image to a -registry. - -This is very similar to the -[docker-import](/docs/post-processors/docker-import) post-processor except -that this works with committed resources, rather than exported. - -## Configuration - -The configuration for this post-processor requires `repository`, all other -settings are optional. - -- `repository` (string) - The repository of the image. - -- `tags` (array of strings) - A list of tags for the image. By default this is - not set. Valid examples include: `"tags": "mytag"` or - `"tags": ["mytag-1", "mytag-2"]` - -- `force` (boolean) - If true, this post-processor forcibly tag the image - even if tag name is collided. Default to `false`. But it will be ignored if - Docker >= 1.12.0 was detected, since the `force` option was removed - after 1.12.0. - [reference](https://docs.docker.com/engine/deprecated/#/f-flag-on-docker-tag) - -- `keep_input_artifact` (boolean) - Unlike most other post-processors, the - keep_input_artifact option will have no effect for the docker-tag - post-processor. We will always retain the input artifact for docker-tag, - since deleting the image we just tagged is not a behavior anyone should ever - expect. `keep_input_artifact will` therefore always be evaluated as true, - regardless of the value you enter into this field. - -## Example - -An example is shown below, showing only the post-processor configuration: - - - - -```json -{ - "type": "docker-tag", - "repository": "hashicorp/packer", - "tag": "0.7,anothertag" -} -``` - - - - -```hcl -post-processors "docker-tag" { - repository = "hashicorp/packer" - tag = "0.7,anothertag" -} -``` - - - - -This example would take the image created by the Docker builder and tag it into -the local Docker process with a name of `hashicorp/packer:0.7`. - -Following this, you can use the -[docker-push](/docs/post-processors/docker-push) post-processor to push it -to a registry, if you want. diff --git a/website/content/partials/builder/docker/AwsAccessConfig-not-required.mdx b/website/content/partials/builder/docker/AwsAccessConfig-not-required.mdx deleted file mode 100644 index db9a8bfa3..000000000 --- a/website/content/partials/builder/docker/AwsAccessConfig-not-required.mdx +++ /dev/null @@ -1,18 +0,0 @@ - - -- `aws_access_key` (string) - The AWS access key used to communicate with - AWS. Learn how to set - this. - -- `aws_secret_key` (string) - The AWS secret key used to communicate with - AWS. Learn how to set - this. - -- `aws_token` (string) - The AWS access token to use. This is different from - the access key and secret key. If you're not sure what this is, then you - probably don't need it. This will also be read from the AWS_SESSION_TOKEN - environmental variable. - -- `aws_profile` (string) - The AWS shared credentials profile used to - communicate with AWS. Learn how to set - this. diff --git a/website/content/partials/builder/docker/Config-not-required.mdx b/website/content/partials/builder/docker/Config-not-required.mdx deleted file mode 100644 index e56587dc5..000000000 --- a/website/content/partials/builder/docker/Config-not-required.mdx +++ /dev/null @@ -1,74 +0,0 @@ - - -- `author` (string) - Set the author (e-mail) of a commit. - -- `changes` ([]string) - Dockerfile instructions to add to the commit. Example of instructions - are CMD, ENTRYPOINT, ENV, and EXPOSE. Example: [ "USER ubuntu", "WORKDIR - /app", "EXPOSE 8080" ] - -- `container_dir` (string) - The directory inside container to mount temp directory from host server - for work [file provisioner](/docs/provisioners/file). This defaults - to c:/packer-files on windows and /packer-files on other systems. - -- `device` ([]string) - An array of devices which will be accessible in container when it's run - without `--privileged` flag. - -- `cap_add` ([]string) - An array of additional [Linux - capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) - to grant to the container. - -- `cap_drop` ([]string) - An array of [Linux - capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) - to drop from the container. - -- `exec_user` (string) - Username (UID) to run remote commands with. You can also set the group - name/ID if you want: (UID or UID:GID). You may need this if you get - permission errors trying to run the shell or other provisioners. - -- `privileged` (bool) - If true, run the docker container with the `--privileged` flag. This - defaults to false if not set. - -- `pull` (bool) - If true, the configured image will be pulled using `docker pull` prior - to use. Otherwise, it is assumed the image already exists and can be - used. This defaults to true if not set. - -- `run_command` ([]string) - An array of arguments to pass to docker run in order to run the - container. By default this is set to `["-d", "-i", "-t", - "--entrypoint=/bin/sh", "--", "{{.Image}}"]` if you are using a linux - container, and `["-d", "-i", "-t", "--entrypoint=powershell", "--", - "{{.Image}}"]` if you are running a windows container. `{{.Image}}` is a - template variable that corresponds to the image template option. Passing - the entrypoint option this way will make it the default entrypoint of - the resulting image, so running docker run -it --rm will start the - docker image from the /bin/sh shell interpreter; you could run a script - or another shell by running docker run -it --rm -c /bin/bash. If your - docker image embeds a binary intended to be run often, you should - consider changing the default entrypoint to point to it. - -- `tmpfs` ([]string) - An array of additional tmpfs volumes to mount into this container. - -- `volumes` (map[string]string) - A mapping of additional volumes to mount into this container. The key of - the object is the host path, the value is the container path. - -- `fix_upload_owner` (bool) - If true, files uploaded to the container will be owned by the user the - container is running as. If false, the owner will depend on the version - of docker installed in the system. Defaults to true. - -- `windows_container` (bool) - If "true", tells Packer that you are building a Windows container - running on a windows host. This is necessary for building Windows - containers, because our normal docker bindings do not work for them. - -- `login` (bool) - This is used to login to dockerhub to pull a private base container. For - pushing to dockerhub, see the docker post-processors - -- `login_password` (string) - The password to use to authenticate to login. - -- `login_server` (string) - The server address to login to. - -- `login_username` (string) - The username to use to authenticate to login. - -- `ecr_login` (bool) - Defaults to false. If true, the builder will login in order to pull the - image from Amazon EC2 Container Registry (ECR). The builder only logs in - for the duration of the pull. If true login_server is required and - login, login_username, and login_password will be ignored. For more - information see the section on ECR. diff --git a/website/content/partials/builder/docker/Config-required.mdx b/website/content/partials/builder/docker/Config-required.mdx deleted file mode 100644 index 0ce9b639a..000000000 --- a/website/content/partials/builder/docker/Config-required.mdx +++ /dev/null @@ -1,14 +0,0 @@ - - -- `commit` (bool) - If true, the container will be committed to an image rather than exported. - -- `discard` (bool) - Throw away the container when the build is complete. This is useful for - the [artifice - post-processor](/docs/post-processors/artifice). - -- `export_path` (string) - The path where the final container will be exported as a tar file. - -- `image` (string) - The base image for the Docker container that will be started. This image - will be pulled from the Docker registry if it doesn't already exist. - -- `message` (string) - Set a message for the commit. From 3058c437a360a905a8240b407a19eee7d5432ef9 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 Feb 2021 17:34:30 -0500 Subject: [PATCH 070/212] Register remote plugins docs with https://packer.io --- website/data/docs-nav-data.json | 20 -------------------- website/data/docs-remote-plugins.json | 8 +++++++- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index d416fc8f1..1f93cc5a8 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -725,10 +725,6 @@ "title": "DigitalOcean", "path": "builders/digitalocean" }, - { - "title": "Docker", - "path": "builders/docker" - }, { "title": "File", "path": "builders/file" @@ -1096,22 +1092,6 @@ "title": "DigitalOcean Import", "path": "post-processors/digitalocean-import" }, - { - "title": "Docker Import", - "path": "post-processors/docker-import" - }, - { - "title": "Docker Push", - "path": "post-processors/docker-push" - }, - { - "title": "Docker Save", - "path": "post-processors/docker-save" - }, - { - "title": "Docker Tag", - "path": "post-processors/docker-tag" - }, { "title": "Exoscale Import", "path": "post-processors/exoscale-import" diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index fe51488c7..8c247cfab 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -1 +1,7 @@ -[] +[ + { + "title": "Docker", + "path": "docker", + "repo": "hashicorp/packer-plugin-docker" + } +] From a101d465890ac3955c81baacea9538351451e888 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 3 Mar 2021 10:21:35 -0500 Subject: [PATCH 071/212] update modules.txt --- vendor/modules.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/vendor/modules.txt b/vendor/modules.txt index 4065c44a5..2150e74c8 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -414,6 +414,7 @@ github.com/hashicorp/hcl/v2/hclsyntax github.com/hashicorp/hcl/v2/hclwrite github.com/hashicorp/hcl/v2/json # github.com/hashicorp/packer-plugin-docker v0.0.2 +## explicit github.com/hashicorp/packer-plugin-docker/builder/docker github.com/hashicorp/packer-plugin-docker/post-processor/docker-import github.com/hashicorp/packer-plugin-docker/post-processor/docker-push From 79481ed7ecb085a66600e06fd75f9cd3b800bd48 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 5 Mar 2021 15:44:04 -0500 Subject: [PATCH 072/212] Add vendored components map as opposed to removing code generation for command/plugin.go --- command/plugin.go | 19 +++---------- command/vendored_plugins.go | 55 +++++++++++++++++++++++++++++++++++++ go.mod | 1 - go.sum | 2 -- main.go | 1 + vendor/modules.txt | 2 -- 6 files changed, 60 insertions(+), 20 deletions(-) create mode 100644 command/vendored_plugins.go diff --git a/command/plugin.go b/command/plugin.go index cb378dec3..2e039ed6c 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -1,3 +1,7 @@ +// +// This file is automatically generated by scripts/generate-plugins.go -- Do not edit! +// + package command import ( @@ -9,16 +13,6 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/plugin" - // Previously core-bundled components, split into their own plugins but - // still vendored with Packer for now. Importing as library instead of - // forcing use of packer init, until packer v1.8.0 - dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" - dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" - dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" - dockersavepostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-save" - dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" - - // These components are still built into the packer core repo alicloudecsbuilder "github.com/hashicorp/packer/builder/alicloud/ecs" amazonchrootbuilder "github.com/hashicorp/packer/builder/amazon/chroot" amazonebsbuilder "github.com/hashicorp/packer/builder/amazon/ebs" @@ -126,7 +120,6 @@ var Builders = map[string]packersdk.Builder{ "azure-dtl": new(azuredtlbuilder.Builder), "cloudstack": new(cloudstackbuilder.Builder), "digitalocean": new(digitaloceanbuilder.Builder), - "docker": new(dockerbuilder.Builder), "file": new(filebuilder.Builder), "googlecompute": new(googlecomputebuilder.Builder), "hcloud": new(hcloudbuilder.Builder), @@ -197,10 +190,6 @@ var PostProcessors = map[string]packersdk.PostProcessor{ "checksum": new(checksumpostprocessor.PostProcessor), "compress": new(compresspostprocessor.PostProcessor), "digitalocean-import": new(digitaloceanimportpostprocessor.PostProcessor), - "docker-import": new(dockerimportpostprocessor.PostProcessor), - "docker-push": new(dockerpushpostprocessor.PostProcessor), - "docker-save": new(dockersavepostprocessor.PostProcessor), - "docker-tag": new(dockertagpostprocessor.PostProcessor), "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), "googlecompute-export": new(googlecomputeexportpostprocessor.PostProcessor), "googlecompute-import": new(googlecomputeimportpostprocessor.PostProcessor), diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go new file mode 100644 index 000000000..57427ba81 --- /dev/null +++ b/command/vendored_plugins.go @@ -0,0 +1,55 @@ +package command + +import ( + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + + // Previously core-bundled components, split into their own plugins but + // still vendored with Packer for now. Importing as library instead of + // forcing use of packer init, until packer v1.8.0 + dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" + dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" + dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" + dockersavepostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-save" + dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" +) + +// VendoredBuilders are builder components that were once bundle with Packer core, but are now being shim with there multi-component counterparts. +var VendoredBuilders = map[string]packersdk.Builder{ + "docker": new(dockerbuilder.Builder), +} + +// VendoredProvisioners are components that were once bundle with Packer core, but are now being shim with there multi-component counterparts. +var VendoredProvisioners = map[string]packersdk.Provisioner{} + +// VendoredPostProcessors are components that were once bundle with Packer core, but are now being shim with there multi-component counterparts. +var VendoredPostProcessors = map[string]packersdk.PostProcessor{ + "docker-import": new(dockerimportpostprocessor.PostProcessor), + "docker-push": new(dockerpushpostprocessor.PostProcessor), + "docker-save": new(dockersavepostprocessor.PostProcessor), + "docker-tag": new(dockertagpostprocessor.PostProcessor), +} + +// Upon init lets load up any plugins that were vendored manually into the default +// set of plugins. +func init() { + for k, v := range VendoredBuilders { + if _, ok := Builders[k]; ok { + continue + } + Builders[k] = v + } + + for k, v := range VendoredProvisioners { + if _, ok := Provisioners[k]; ok { + continue + } + Provisioners[k] = v + } + + for k, v := range VendoredPostProcessors { + if _, ok := PostProcessors[k]; ok { + continue + } + PostProcessors[k] = v + } +} diff --git a/go.mod b/go.mod index 17e938235..858ad2f70 100644 --- a/go.mod +++ b/go.mod @@ -64,7 +64,6 @@ require ( github.com/mitchellh/cli v1.1.0 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed - github.com/mitchellh/gox v1.0.1 // indirect github.com/mitchellh/mapstructure v1.4.0 github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 diff --git a/go.sum b/go.sum index fecf30140..ca566554a 100644 --- a/go.sum +++ b/go.sum @@ -570,11 +570,9 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM= github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.1+incompatible h1:2LwXWdbjXwyDgq26Yy/OT4xozlpmssQfy/rtfhWb0bY= github.com/shirou/gopsutil v3.21.1+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= diff --git a/main.go b/main.go index f358c2f05..f7806b0bc 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,6 @@ // This is the main package for the `packer` application. +//go:generate go run ./scripts/generate-plugins.go package main import ( diff --git a/vendor/modules.txt b/vendor/modules.txt index 2150e74c8..1f1316bf4 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -559,8 +559,6 @@ github.com/mitchellh/go-testing-interface github.com/mitchellh/go-vnc # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap -# github.com/mitchellh/gox v1.0.1 -## explicit # github.com/mitchellh/iochan v1.0.0 github.com/mitchellh/iochan # github.com/mitchellh/mapstructure v1.4.0 From 71b815a5fd6d319647e238b32d9d3a2fd9dee3ee Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Fri, 5 Mar 2021 16:07:32 -0800 Subject: [PATCH 073/212] reword commits --- command/vendored_plugins.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 57427ba81..19762365a 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -13,15 +13,18 @@ import ( dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" ) -// VendoredBuilders are builder components that were once bundle with Packer core, but are now being shim with there multi-component counterparts. +// VendoredBuilders are builder components that were once bundled with the +// Packer core, but are now being imported from their counterpart plugin repos var VendoredBuilders = map[string]packersdk.Builder{ "docker": new(dockerbuilder.Builder), } -// VendoredProvisioners are components that were once bundle with Packer core, but are now being shim with there multi-component counterparts. +// VendoredProvisioners are provisioner components that were once bundled with the +// Packer core, but are now being imported from their counterpart plugin repos var VendoredProvisioners = map[string]packersdk.Provisioner{} -// VendoredPostProcessors are components that were once bundle with Packer core, but are now being shim with there multi-component counterparts. +// VendoredPostProcessors are post-processor components that were once bundled with the +// Packer core, but are now being imported from their counterpart plugin repos var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "docker-import": new(dockerimportpostprocessor.PostProcessor), "docker-push": new(dockerpushpostprocessor.PostProcessor), @@ -29,8 +32,8 @@ var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "docker-tag": new(dockertagpostprocessor.PostProcessor), } -// Upon init lets load up any plugins that were vendored manually into the default -// set of plugins. +// Upon init lets us load up any plugins that were vendored manually into the +// default set of plugins. func init() { for k, v := range VendoredBuilders { if _, ok := Builders[k]; ok { From f4caf5978f88f431370b08a95cab6cb0b540e2e9 Mon Sep 17 00:00:00 2001 From: Kennith Leung Date: Mon, 8 Mar 2021 01:34:05 -0800 Subject: [PATCH 074/212] doc: fix sources typo (#10733) --- .../docs/templates/hcl_templates/blocks/build/provisioner.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx index 6b6e98038..3cce21156 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx @@ -52,7 +52,7 @@ source "amazon-ebs" "second-example" { } build { - source = [ + sources = [ "source.amazon-ebs.first-example", "source.amazon-ebs.second-example", ] From 4c9f3eb9ca02df9ce661ffe88a88db30e18674af Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Mon, 8 Mar 2021 09:58:17 +0100 Subject: [PATCH 075/212] Added options for nested virtualisation and RTC time base. --- builder/virtualbox/iso/builder.go | 19 +++++++++++++++++++ builder/virtualbox/iso/step_create_vm.go | 12 +++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index c82c435e0..ba2507ef1 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -52,6 +52,14 @@ type Config struct { // When set to bios, the firmare is BIOS. This is the default. // When set to efi, the firmare is EFI. Firmware string `mapstructure:"firmware" required:"false"` + // Nested virtualization: false or true. + // When set to true, nested virtualisation (VT-x/AMD-V) is enabled. + // When set to false, nested virtualisation is disabled. This is the default. + NestedVirt bool `mapstructure:"nested_virt" required:"false"` + // RTC time base: UTC or local. + // When set to true, the RTC is set as UTC time. + // When set to false, the RTC is set as local time. This is the default. + RTCTimeBase string `mapstructure:"rtc_time_base" required:"false"` // The size, in megabytes, of the hard disk to create for the VM. By // default, this is 40000 (about 40 GB). DiskSize uint `mapstructure:"disk_size" required:"false"` @@ -212,6 +220,17 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { errs, errors.New("firmware can only be bios or efi")) } + if b.config.RTCTimeBase == "" { + b.config.RTCTimeBase = "local" + } + switch b.config.RTCTimeBase { + case "UTC", "local": + // do nothing + default: + errs = packersdk.MultiErrorAppend( + errs, errors.New("rtc_time_base can only be UTC or local")) + } + if b.config.DiskSize == 0 { b.config.DiskSize = 40000 } diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index bcef33a64..f0f9c4f27 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -26,7 +26,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis name := config.VMName - commands := make([][]string, 10) + commands := make([][]string, 12) commands[0] = []string{ "createvm", "--name", name, "--ostype", config.GuestOSType, "--register", @@ -60,6 +60,16 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis "--nictype7", config.NICType, "--nictype8", config.NICType} commands[9] = []string{"modifyvm", name, "--graphicscontroller", config.GfxController} + if config.RTCTimeBase == "UTC" { + commands[10] = []string{"modifyvm", name, "--rtcuseutc", "on"} + } else { + commands[10] = []string{"modifyvm", name, "--rtcuseutc", "off"} + } + if config.NestedVirt == true { + commands[11] = []string{"modifyvm", name, "--nested-hw-virt", "on"} + } else { + commands[11] = []string{"modifyvm", name, "--nested-hw-virt", "off"} + } ui.Say("Creating virtual machine...") for _, command := range commands { From be8b2968bd606f9d5fba13c86e82583178859d51 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Mon, 8 Mar 2021 11:53:07 +0100 Subject: [PATCH 076/212] Added options for VRAM size, 3D acceleration and EFI screen size. --- builder/virtualbox/iso/builder.go | 30 ++++++++++++++++++++++++ builder/virtualbox/iso/step_create_vm.go | 13 ++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index ba2507ef1..0643370de 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -7,6 +7,7 @@ import ( "context" "errors" "fmt" + "regexp" "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/packer-plugin-sdk/bootcommand" @@ -83,6 +84,17 @@ type Config struct { // When set to vmsvga, the graphics controller is VMware SVGA. // When set to none, the graphics controller is disabled. GfxController string `mapstructure:"gfx_controller" required:"false"` + // The VRAM size to be used. By default, this is 4 MiB. + GfxVramSize uint `mapstructure:"gfx_vram_size" required:"false"` + // 3D acceleration: true or false. + // When set to true, 3D acceleration is enabled. + // When set to false, 3D acceleration is disabled. This is the default. + GfxAccelerate3D bool `mapstructure:"gfx_accelerate_3d" required:"false"` + // Screen resolution in EFI mode: WIDTHxHEIGHT. + // When set to WIDTHxHEIGHT, it provides the given width and height as screen resolution + // to EFI, for example 1920x1080 for Full-HD resolution. By default, no screen resolution + // is set. Note, that this option only affects EFI boot, not the (default) BIOS boot. + GfxEFIResolution string `mapstructure:"gfx_efi_resolution" required:"false"` // The guest OS type being installed. By default this is other, but you can // get dramatic performance improvements by setting this to the proper // value. To view all available values for this run VBoxManage list @@ -261,6 +273,24 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, []string, error) { errs, errors.New("Graphics controller type can only be vboxvga, vboxsvga, vmsvga, none")) } + if b.config.GfxVramSize == 0 { + b.config.GfxVramSize = 4 + } else { + if b.config.GfxVramSize < 1 || b.config.GfxVramSize > 128 { + errs = packersdk.MultiErrorAppend( + errs, errors.New("VGRAM size must be from 0 (use default) to 128")) + } + } + + if b.config.GfxEFIResolution != "" { + re := regexp.MustCompile(`^[\d]+x[\d]+$`) + matched := re.MatchString(b.config.GfxEFIResolution) + if !matched { + errs = packersdk.MultiErrorAppend( + errs, errors.New("EFI resolution must be in the format WIDTHxHEIGHT, e.g. 1920x1080")) + } + } + if b.config.AudioController == "" { b.config.AudioController = "ac97" } diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index f0f9c4f27..75203f93a 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -26,7 +26,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis name := config.VMName - commands := make([][]string, 12) + commands := make([][]string, 14) commands[0] = []string{ "createvm", "--name", name, "--ostype", config.GuestOSType, "--register", @@ -59,7 +59,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis "--nictype6", config.NICType, "--nictype7", config.NICType, "--nictype8", config.NICType} - commands[9] = []string{"modifyvm", name, "--graphicscontroller", config.GfxController} + commands[9] = []string{"modifyvm", name, "--graphicscontroller", config.GfxController, "--vram", strconv.FormatUint(uint64(config.GfxVramSize), 10)} if config.RTCTimeBase == "UTC" { commands[10] = []string{"modifyvm", name, "--rtcuseutc", "on"} } else { @@ -71,6 +71,15 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis commands[11] = []string{"modifyvm", name, "--nested-hw-virt", "off"} } + if config.GfxAccelerate3D { + commands[12] = []string{"modifyvm", name, "--accelerate3d", "on"} + } else { + commands[12] = []string{"modifyvm", name, "--accelerate3d", "off"} + } + if config.GfxEFIResolution != "" { + commands[13] = []string{"setextradata", name, "VBoxInternal2/EfiGraphicsResolution", config.GfxEFIResolution} + } + ui.Say("Creating virtual machine...") for _, command := range commands { err := driver.VBoxManage(command...) From 68f810891fcb977b3eed3591a789a58e8aff4575 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Mon, 8 Mar 2021 12:28:24 +0100 Subject: [PATCH 077/212] Ran "make generate". --- builder/virtualbox/iso/builder.hcl2spec.go | 10 ++++++++++ .../virtualbox/iso/Config-not-required.mdx | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/builder/virtualbox/iso/builder.hcl2spec.go b/builder/virtualbox/iso/builder.hcl2spec.go index 88a880458..f453a721d 100644 --- a/builder/virtualbox/iso/builder.hcl2spec.go +++ b/builder/virtualbox/iso/builder.hcl2spec.go @@ -119,10 +119,15 @@ type FlatConfig struct { GuestAdditionsURL *string `mapstructure:"guest_additions_url" required:"false" cty:"guest_additions_url" hcl:"guest_additions_url"` Chipset *string `mapstructure:"chipset" required:"false" cty:"chipset" hcl:"chipset"` Firmware *string `mapstructure:"firmware" required:"false" cty:"firmware" hcl:"firmware"` + NestedVirt *bool `mapstructure:"nested_virt" required:"false" cty:"nested_virt" hcl:"nested_virt"` + RTCTimeBase *string `mapstructure:"rtc_time_base" required:"false" cty:"rtc_time_base" hcl:"rtc_time_base"` DiskSize *uint `mapstructure:"disk_size" required:"false" cty:"disk_size" hcl:"disk_size"` NICType *string `mapstructure:"nic_type" required:"false" cty:"nic_type" hcl:"nic_type"` AudioController *string `mapstructure:"audio_controller" required:"false" cty:"audio_controller" hcl:"audio_controller"` GfxController *string `mapstructure:"gfx_controller" required:"false" cty:"gfx_controller" hcl:"gfx_controller"` + GfxVramSize *uint `mapstructure:"gfx_vram_size" required:"false" cty:"gfx_vram_size" hcl:"gfx_vram_size"` + GfxAccelerate3D *bool `mapstructure:"gfx_accelerate_3d" required:"false" cty:"gfx_accelerate_3d" hcl:"gfx_accelerate_3d"` + GfxEFIResolution *string `mapstructure:"gfx_efi_resolution" required:"false" cty:"gfx_efi_resolution" hcl:"gfx_efi_resolution"` GuestOSType *string `mapstructure:"guest_os_type" required:"false" cty:"guest_os_type" hcl:"guest_os_type"` HardDriveDiscard *bool `mapstructure:"hard_drive_discard" required:"false" cty:"hard_drive_discard" hcl:"hard_drive_discard"` HardDriveInterface *string `mapstructure:"hard_drive_interface" required:"false" cty:"hard_drive_interface" hcl:"hard_drive_interface"` @@ -256,10 +261,15 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "guest_additions_url": &hcldec.AttrSpec{Name: "guest_additions_url", Type: cty.String, Required: false}, "chipset": &hcldec.AttrSpec{Name: "chipset", Type: cty.String, Required: false}, "firmware": &hcldec.AttrSpec{Name: "firmware", Type: cty.String, Required: false}, + "nested_virt": &hcldec.AttrSpec{Name: "nested_virt", Type: cty.Bool, Required: false}, + "rtc_time_base": &hcldec.AttrSpec{Name: "rtc_time_base", Type: cty.String, Required: false}, "disk_size": &hcldec.AttrSpec{Name: "disk_size", Type: cty.Number, Required: false}, "nic_type": &hcldec.AttrSpec{Name: "nic_type", Type: cty.String, Required: false}, "audio_controller": &hcldec.AttrSpec{Name: "audio_controller", Type: cty.String, Required: false}, "gfx_controller": &hcldec.AttrSpec{Name: "gfx_controller", Type: cty.String, Required: false}, + "gfx_vram_size": &hcldec.AttrSpec{Name: "gfx_vram_size", Type: cty.Number, Required: false}, + "gfx_accelerate_3d": &hcldec.AttrSpec{Name: "gfx_accelerate_3d", Type: cty.Bool, Required: false}, + "gfx_efi_resolution": &hcldec.AttrSpec{Name: "gfx_efi_resolution", Type: cty.String, Required: false}, "guest_os_type": &hcldec.AttrSpec{Name: "guest_os_type", Type: cty.String, Required: false}, "hard_drive_discard": &hcldec.AttrSpec{Name: "hard_drive_discard", Type: cty.Bool, Required: false}, "hard_drive_interface": &hcldec.AttrSpec{Name: "hard_drive_interface", Type: cty.String, Required: false}, diff --git a/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx b/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx index d77c4048c..95520e65d 100644 --- a/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx +++ b/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx @@ -8,6 +8,14 @@ When set to bios, the firmare is BIOS. This is the default. When set to efi, the firmare is EFI. +- `nested_virt` (bool) - Nested virtualization: false or true. + When set to true, nested virtualisation (VT-x/AMD-V) is enabled. + When set to false, nested virtualisation is disabled. This is the default. + +- `rtc_time_base` (string) - RTC time base: UTC or local. + When set to true, the RTC is set as UTC time. + When set to false, the RTC is set as local time. This is the default. + - `disk_size` (uint) - The size, in megabytes, of the hard disk to create for the VM. By default, this is 40000 (about 40 GB). @@ -31,6 +39,17 @@ When set to vmsvga, the graphics controller is VMware SVGA. When set to none, the graphics controller is disabled. +- `gfx_vram_size` (uint) - The VRAM size to be used. By default, this is 4 MiB. + +- `gfx_accelerate_3d` (bool) - 3D acceleration: true or false. + When set to true, 3D acceleration is enabled. + When set to false, 3D acceleration is disabled. This is the default. + +- `gfx_efi_resolution` (string) - Screen resolution in EFI mode: WIDTHxHEIGHT. + When set to WIDTHxHEIGHT, it provides the given width and height as screen resolution + to EFI, for example 1920x1080 for Full-HD resolution. By default, no screen resolution + is set. Note, that this option only affects EFI boot, not the (default) BIOS boot. + - `guest_os_type` (string) - The guest OS type being installed. By default this is other, but you can get dramatic performance improvements by setting this to the proper value. To view all available values for this run VBoxManage list From 4f2f9f8a1e10efc4dae7fbe6b3e946cefb2a656b Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Mon, 8 Mar 2021 12:37:00 +0100 Subject: [PATCH 078/212] Formatting fix. --- builder/virtualbox/iso/step_create_vm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/virtualbox/iso/step_create_vm.go b/builder/virtualbox/iso/step_create_vm.go index 75203f93a..645d93087 100644 --- a/builder/virtualbox/iso/step_create_vm.go +++ b/builder/virtualbox/iso/step_create_vm.go @@ -75,7 +75,7 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis commands[12] = []string{"modifyvm", name, "--accelerate3d", "on"} } else { commands[12] = []string{"modifyvm", name, "--accelerate3d", "off"} - } + } if config.GfxEFIResolution != "" { commands[13] = []string{"setextradata", name, "VBoxInternal2/EfiGraphicsResolution", config.GfxEFIResolution} } From de50cadb5c4e9e6e27a28d18d985a0239e4533f8 Mon Sep 17 00:00:00 2001 From: Kris Fremen Date: Mon, 8 Mar 2021 07:03:39 -0500 Subject: [PATCH 079/212] docs: fix post-processor(checksum) hcl example. (#10734) --- website/content/docs/post-processors/checksum.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/post-processors/checksum.mdx b/website/content/docs/post-processors/checksum.mdx index e673fc43f..7b4f1be13 100644 --- a/website/content/docs/post-processors/checksum.mdx +++ b/website/content/docs/post-processors/checksum.mdx @@ -44,7 +44,7 @@ a third-party post-processor. ```hcl -post-processors "checksum" { +post-processor "checksum" { checksum_types = ["sha1", "sha256"] output = "packer_{{.BuildName}}_{{.ChecksumType}}.checksum" } From bf1046e970ac3942c455e8e6c3eb43391726fac4 Mon Sep 17 00:00:00 2001 From: twiggy Date: Mon, 8 Mar 2021 11:29:33 -0600 Subject: [PATCH 080/212] Wrap more than one extra var in quotes. When multiple extra vars are passed the list of vars must be wrapped in "s. At least with ansible-local it will not parse correctly leading to an error stating the second extra var is a playbook file that cannot be found. --- website/content/docs/provisioners/ansible.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/provisioners/ansible.mdx b/website/content/docs/provisioners/ansible.mdx index 2bffbf775..d6c093e27 100644 --- a/website/content/docs/provisioners/ansible.mdx +++ b/website/content/docs/provisioners/ansible.mdx @@ -442,7 +442,7 @@ Platform: "--connection", "packer", "--extra-vars", - "ansible_shell_type=powershell ansible_shell_executable=None" + "\"ansible_shell_type=powershell ansible_shell_executable=None\"" ] } ], From 8c18f8fa6dbbe67144783d65ae394e0c2a969554 Mon Sep 17 00:00:00 2001 From: Tasha Marreiros Date: Thu, 4 Mar 2021 12:15:13 +0000 Subject: [PATCH 081/212] amend email --- builder/googlecompute/config.go | 6 ++++++ builder/googlecompute/config.hcl2spec.go | 2 ++ builder/googlecompute/driver.go | 15 ++++++++------- builder/googlecompute/driver_gce.go | 2 +- .../googlecompute/step_create_windows_password.go | 15 ++++++++------- .../builder/googlecompute/Config-not-required.mdx | 2 ++ 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/builder/googlecompute/config.go b/builder/googlecompute/config.go index 462836f69..24f4a39e8 100644 --- a/builder/googlecompute/config.go +++ b/builder/googlecompute/config.go @@ -210,6 +210,8 @@ type Config struct { // - The contents of the script file will be wrapped in Packer's startup script wrapper, unless `wrap_startup_script` is disabled. See `wrap_startup_script` for more details. // - Not supported by Windows instances. See [Startup Scripts for Windows](https://cloud.google.com/compute/docs/startupscript#providing_a_startup_script_for_windows_instances) for more details. StartupScriptFile string `mapstructure:"startup_script_file" required:"false"` + // The time to wait for windows password to be retrieved. Defaults to "3m". + WindowsPasswordTimeout time.Duration `mapstructure:"windows_password_timeout" required:"false"` // For backwards compatibility this option defaults to `"true"` in the future it will default to `"false"`. // If "true", the contents of `startup_script_file` or `"startup_script"` in the instance metadata // is wrapped in a Packer specific script that tracks the execution and completion of the provided @@ -542,6 +544,10 @@ func (c *Config) Prepare(raws ...interface{}) ([]string, error) { c.WrapStartupScriptFile = config.TriTrue } } + // Check windows password timeout is provided + if c.WindowsPasswordTimeout == 0 { + c.WindowsPasswordTimeout = 3 * time.Minute + } // Check for any errors. if errs != nil && len(errs.Errors) > 0 { diff --git a/builder/googlecompute/config.hcl2spec.go b/builder/googlecompute/config.hcl2spec.go index 7001840be..3879719fd 100644 --- a/builder/googlecompute/config.hcl2spec.go +++ b/builder/googlecompute/config.hcl2spec.go @@ -112,6 +112,7 @@ type FlatConfig struct { SourceImageFamily *string `mapstructure:"source_image_family" required:"true" cty:"source_image_family" hcl:"source_image_family"` SourceImageProjectId []string `mapstructure:"source_image_project_id" required:"false" cty:"source_image_project_id" hcl:"source_image_project_id"` StartupScriptFile *string `mapstructure:"startup_script_file" required:"false" cty:"startup_script_file" hcl:"startup_script_file"` + WindowsPasswordTimeout *string `mapstructure:"windows_password_timeout" required:"false" cty:"windows_password_timeout" hcl:"windows_password_timeout"` WrapStartupScriptFile *bool `mapstructure:"wrap_startup_script" required:"false" cty:"wrap_startup_script" hcl:"wrap_startup_script"` Subnetwork *string `mapstructure:"subnetwork" required:"false" cty:"subnetwork" hcl:"subnetwork"` Tags []string `mapstructure:"tags" required:"false" cty:"tags" hcl:"tags"` @@ -236,6 +237,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "source_image_family": &hcldec.AttrSpec{Name: "source_image_family", Type: cty.String, Required: false}, "source_image_project_id": &hcldec.AttrSpec{Name: "source_image_project_id", Type: cty.List(cty.String), Required: false}, "startup_script_file": &hcldec.AttrSpec{Name: "startup_script_file", Type: cty.String, Required: false}, + "windows_password_timeout": &hcldec.AttrSpec{Name: "windows_password_timeout", Type: cty.String, Required: false}, "wrap_startup_script": &hcldec.AttrSpec{Name: "wrap_startup_script", Type: cty.Bool, Required: false}, "subnetwork": &hcldec.AttrSpec{Name: "subnetwork", Type: cty.String, Required: false}, "tags": &hcldec.AttrSpec{Name: "tags", Type: cty.List(cty.String), Required: false}, diff --git a/builder/googlecompute/driver.go b/builder/googlecompute/driver.go index 0c8afbda5..631062aea 100644 --- a/builder/googlecompute/driver.go +++ b/builder/googlecompute/driver.go @@ -107,13 +107,14 @@ type InstanceConfig struct { // WindowsPasswordConfig is the data structure that GCE needs to encrypt the created // windows password. type WindowsPasswordConfig struct { - key *rsa.PrivateKey - password string - UserName string `json:"userName"` - Modulus string `json:"modulus"` - Exponent string `json:"exponent"` - Email string `json:"email"` - ExpireOn time.Time `json:"expireOn"` + key *rsa.PrivateKey + password string + UserName string `json:"userName"` + Modulus string `json:"modulus"` + Exponent string `json:"exponent"` + Email string `json:"email"` + ExpireOn time.Time `json:"expireOn"` + WindowsPasswordTimeout time.Duration `json:"timeout"` } type windowsPasswordResponse struct { diff --git a/builder/googlecompute/driver_gce.go b/builder/googlecompute/driver_gce.go index dfd1c9c06..cf2c727cf 100644 --- a/builder/googlecompute/driver_gce.go +++ b/builder/googlecompute/driver_gce.go @@ -568,7 +568,7 @@ func (d *driverGCE) createWindowsPassword(errCh chan<- error, name, zone string, return } - timeout := time.Now().Add(time.Minute * 3) + timeout := time.Now().Add(c.WindowsPasswordTimeout) hash := sha1.New() random := rand.Reader diff --git a/builder/googlecompute/step_create_windows_password.go b/builder/googlecompute/step_create_windows_password.go index a5dd9c18a..4a5850888 100644 --- a/builder/googlecompute/step_create_windows_password.go +++ b/builder/googlecompute/step_create_windows_password.go @@ -60,12 +60,13 @@ func (s *StepCreateWindowsPassword) Run(ctx context.Context, state multistep.Sta } data := WindowsPasswordConfig{ - key: priv, - UserName: c.Comm.WinRMUser, - Modulus: base64.StdEncoding.EncodeToString(priv.N.Bytes()), - Exponent: base64.StdEncoding.EncodeToString(buf[1:]), - Email: email, - ExpireOn: time.Now().Add(time.Minute * 5), + key: priv, + UserName: c.Comm.WinRMUser, + Modulus: base64.StdEncoding.EncodeToString(priv.N.Bytes()), + Exponent: base64.StdEncoding.EncodeToString(buf[1:]), + Email: email, + ExpireOn: time.Now().Add(time.Minute * 5), + WindowsPasswordTimeout: c.WindowsPasswordTimeout, } if s.Debug { @@ -98,7 +99,7 @@ func (s *StepCreateWindowsPassword) Run(ctx context.Context, state multistep.Sta ui.Message("Waiting for windows password to complete...") select { case err = <-errCh: - case <-time.After(c.StateTimeout): + case <-time.After(c.WindowsPasswordTimeout): err = errors.New("time out while waiting for the password to be created") } } diff --git a/website/content/partials/builder/googlecompute/Config-not-required.mdx b/website/content/partials/builder/googlecompute/Config-not-required.mdx index 3bc4a6647..90ab25cdf 100644 --- a/website/content/partials/builder/googlecompute/Config-not-required.mdx +++ b/website/content/partials/builder/googlecompute/Config-not-required.mdx @@ -167,6 +167,8 @@ - The contents of the script file will be wrapped in Packer's startup script wrapper, unless `wrap_startup_script` is disabled. See `wrap_startup_script` for more details. - Not supported by Windows instances. See [Startup Scripts for Windows](https://cloud.google.com/compute/docs/startupscript#providing_a_startup_script_for_windows_instances) for more details. +- `windows_password_timeout` (duration string | ex: "1h5m2s") - The time to wait for windows password to be retrieved. Defaults to "3m". + - `wrap_startup_script` (boolean) - For backwards compatibility this option defaults to `"true"` in the future it will default to `"false"`. If "true", the contents of `startup_script_file` or `"startup_script"` in the instance metadata is wrapped in a Packer specific script that tracks the execution and completion of the provided From 125a2f1f761af101e4cd2659c7148e6ca6c223cc Mon Sep 17 00:00:00 2001 From: Marc Falzon Date: Fri, 7 Aug 2020 16:15:09 +0200 Subject: [PATCH 082/212] Remove "exoscale-import" post-processor This change removes the `exoscale-import` post-processor from the upstream Packer repository, following extraction as a standalone plugin in a dedicated repository (https://github.com/exoscale/packer-post-processor-exoscale-import) --- CODEOWNERS | 1 - command/plugin.go | 2 - post-processor/exoscale-import/artifact.go | 31 -- .../exoscale-import/post-processor.go | 270 -------------- .../post-processor.hcl2spec.go | 69 ---- .../exoscale-import/version/version.go | 13 - website/data/docs-navigation.js | 335 ++++++++++++++++++ 7 files changed, 335 insertions(+), 386 deletions(-) delete mode 100644 post-processor/exoscale-import/artifact.go delete mode 100644 post-processor/exoscale-import/post-processor.go delete mode 100644 post-processor/exoscale-import/post-processor.hcl2spec.go delete mode 100644 post-processor/exoscale-import/version/version.go create mode 100644 website/data/docs-navigation.js diff --git a/CODEOWNERS b/CODEOWNERS index e11e01cab..5fd90ba79 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -87,7 +87,6 @@ /post-processor/alicloud-import/ dongxiao.zzh@alibaba-inc.com /post-processor/checksum/ v.tolstov@selfip.ru -/post-processor/exoscale-import/ @falzm @mcorbin /post-processor/googlecompute-export/ crunkleton@google.com /post-processor/yandex-export/ @GennadySpb /post-processor/yandex-import/ @GennadySpb diff --git a/command/plugin.go b/command/plugin.go index 2e039ed6c..b5c08b185 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -72,7 +72,6 @@ import ( checksumpostprocessor "github.com/hashicorp/packer/post-processor/checksum" compresspostprocessor "github.com/hashicorp/packer/post-processor/compress" digitaloceanimportpostprocessor "github.com/hashicorp/packer/post-processor/digitalocean-import" - exoscaleimportpostprocessor "github.com/hashicorp/packer/post-processor/exoscale-import" googlecomputeexportpostprocessor "github.com/hashicorp/packer/post-processor/googlecompute-export" googlecomputeimportpostprocessor "github.com/hashicorp/packer/post-processor/googlecompute-import" manifestpostprocessor "github.com/hashicorp/packer/post-processor/manifest" @@ -190,7 +189,6 @@ var PostProcessors = map[string]packersdk.PostProcessor{ "checksum": new(checksumpostprocessor.PostProcessor), "compress": new(compresspostprocessor.PostProcessor), "digitalocean-import": new(digitaloceanimportpostprocessor.PostProcessor), - "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), "googlecompute-export": new(googlecomputeexportpostprocessor.PostProcessor), "googlecompute-import": new(googlecomputeimportpostprocessor.PostProcessor), "manifest": new(manifestpostprocessor.PostProcessor), diff --git a/post-processor/exoscale-import/artifact.go b/post-processor/exoscale-import/artifact.go deleted file mode 100644 index cd3f9797b..000000000 --- a/post-processor/exoscale-import/artifact.go +++ /dev/null @@ -1,31 +0,0 @@ -package exoscaleimport - -const BuilderId = "packer.post-processor.exoscale-import" - -type Artifact struct { - id string -} - -func (a *Artifact) BuilderId() string { - return BuilderId -} - -func (a *Artifact) Id() string { - return a.id -} - -func (a *Artifact) Files() []string { - return nil -} - -func (a *Artifact) String() string { - return a.id -} - -func (a *Artifact) State(name string) interface{} { - return nil -} - -func (a *Artifact) Destroy() error { - return nil -} diff --git a/post-processor/exoscale-import/post-processor.go b/post-processor/exoscale-import/post-processor.go deleted file mode 100644 index 1045bf906..000000000 --- a/post-processor/exoscale-import/post-processor.go +++ /dev/null @@ -1,270 +0,0 @@ -//go:generate mapstructure-to-hcl2 -type Config - -package exoscaleimport - -import ( - "context" - "crypto/md5" - "encoding/base64" - "fmt" - "io" - "os" - "path/filepath" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/s3" - "github.com/aws/aws-sdk-go/service/s3/s3manager" - "github.com/exoscale/egoscale" - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer-plugin-sdk/common" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer/builder/file" - "github.com/hashicorp/packer/builder/qemu" - "github.com/hashicorp/packer/post-processor/artifice" - "github.com/hashicorp/packer/post-processor/exoscale-import/version" -) - -var ( - defaultTemplateZone = "ch-gva-2" - defaultAPIEndpoint = "https://api.exoscale.com/compute" - defaultSOSEndpoint = "https://sos-" + defaultTemplateZone + ".exo.io" -) - -type Config struct { - common.PackerConfig `mapstructure:",squash"` - SkipClean bool `mapstructure:"skip_clean"` - - SOSEndpoint string `mapstructure:"sos_endpoint"` - APIEndpoint string `mapstructure:"api_endpoint"` - APIKey string `mapstructure:"api_key"` - APISecret string `mapstructure:"api_secret"` - ImageBucket string `mapstructure:"image_bucket"` - TemplateZone string `mapstructure:"template_zone"` - TemplateName string `mapstructure:"template_name"` - TemplateDescription string `mapstructure:"template_description"` - TemplateUsername string `mapstructure:"template_username"` - TemplateDisablePassword bool `mapstructure:"template_disable_password"` - TemplateDisableSSHKey bool `mapstructure:"template_disable_sshkey"` -} - -func init() { - egoscale.UserAgent = "Packer-Exoscale/" + version.ExoscaleImportPluginVersion.FormattedVersion() + " " + egoscale.UserAgent -} - -type PostProcessor struct { - config Config -} - -func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } - -func (p *PostProcessor) Configure(raws ...interface{}) error { - p.config.TemplateZone = defaultTemplateZone - p.config.APIEndpoint = defaultAPIEndpoint - p.config.SOSEndpoint = defaultSOSEndpoint - - if err := config.Decode(&p.config, nil, raws...); err != nil { - return err - } - - if p.config.APIKey == "" { - p.config.APIKey = os.Getenv("EXOSCALE_API_KEY") - } - - if p.config.APISecret == "" { - p.config.APISecret = os.Getenv("EXOSCALE_API_SECRET") - } - - requiredArgs := map[string]*string{ - "api_key": &p.config.APIKey, - "api_secret": &p.config.APISecret, - "api_endpoint": &p.config.APIEndpoint, - "sos_endpoint": &p.config.SOSEndpoint, - "image_bucket": &p.config.ImageBucket, - "template_zone": &p.config.TemplateZone, - "template_name": &p.config.TemplateName, - "template_description": &p.config.TemplateDescription, - } - - errs := new(packersdk.MultiError) - for k, v := range requiredArgs { - if *v == "" { - errs = packersdk.MultiErrorAppend( - errs, fmt.Errorf("%s must be set", k)) - } - } - - if len(errs.Errors) > 0 { - return errs - } - - packersdk.LogSecretFilter.Set(p.config.APIKey, p.config.APISecret) - - return nil -} - -func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, a packersdk.Artifact) (packersdk.Artifact, bool, bool, error) { - switch a.BuilderId() { - case qemu.BuilderId, file.BuilderId, artifice.BuilderId: - break - - default: - err := fmt.Errorf( - "Unknown artifact type: %s\nCan only import from QEMU/file builders and Artifice post-processor artifacts.", - a.BuilderId()) - return nil, false, false, err - } - - ui.Message("Uploading template image") - url, md5sum, err := p.uploadImage(ctx, ui, a) - if err != nil { - return nil, false, false, fmt.Errorf("unable to upload image: %s", err) - } - - ui.Message("Registering template") - id, err := p.registerTemplate(ctx, ui, url, md5sum) - if err != nil { - return nil, false, false, fmt.Errorf("unable to register template: %s", err) - } - - if !p.config.SkipClean { - ui.Message("Deleting uploaded template image") - if err = p.deleteImage(ctx, ui, a); err != nil { - return nil, false, false, fmt.Errorf("unable to delete uploaded template image: %s", err) - } - } - - return &Artifact{id}, false, false, nil -} - -func (p *PostProcessor) uploadImage(ctx context.Context, ui packersdk.Ui, a packersdk.Artifact) (string, string, error) { - var ( - imageFile = a.Files()[0] - bucketFile = filepath.Base(imageFile) - ) - - f, err := os.Open(imageFile) - if err != nil { - return "", "", err - } - defer f.Close() - - fileInfo, err := f.Stat() - if err != nil { - return "", "", err - } - - // For tracking image file upload progress - pf := ui.TrackProgress(imageFile, 0, fileInfo.Size(), f) - defer pf.Close() - - hash := md5.New() - if _, err := io.Copy(hash, f); err != nil { - return "", "", fmt.Errorf("image checksumming failed: %s", err) - } - if _, err := f.Seek(0, 0); err != nil { - return "", "", err - } - - sess := session.Must(session.NewSessionWithOptions(session.Options{Config: aws.Config{ - Region: aws.String(p.config.TemplateZone), - Endpoint: aws.String(p.config.SOSEndpoint), - Credentials: credentials.NewStaticCredentials(p.config.APIKey, p.config.APISecret, "")}})) - - uploader := s3manager.NewUploader(sess) - output, err := uploader.UploadWithContext(ctx, &s3manager.UploadInput{ - Body: pf, - Bucket: aws.String(p.config.ImageBucket), - Key: aws.String(bucketFile), - ContentMD5: aws.String(base64.StdEncoding.EncodeToString(hash.Sum(nil))), - ACL: aws.String("public-read"), - }) - if err != nil { - return "", "", err - } - - return output.Location, fmt.Sprintf("%x", hash.Sum(nil)), nil -} - -func (p *PostProcessor) deleteImage(ctx context.Context, ui packersdk.Ui, a packersdk.Artifact) error { - var ( - imageFile = a.Files()[0] - bucketFile = filepath.Base(imageFile) - ) - - sess := session.Must(session.NewSessionWithOptions(session.Options{Config: aws.Config{ - Region: aws.String(p.config.TemplateZone), - Endpoint: aws.String(p.config.SOSEndpoint), - Credentials: credentials.NewStaticCredentials(p.config.APIKey, p.config.APISecret, "")}})) - - svc := s3.New(sess) - if _, err := svc.DeleteObject(&s3.DeleteObjectInput{ - Bucket: aws.String(p.config.ImageBucket), - Key: aws.String(bucketFile), - }); err != nil { - return err - } - - return nil -} - -func (p *PostProcessor) registerTemplate(ctx context.Context, ui packersdk.Ui, url, md5sum string) (string, error) { - var ( - passwordEnabled = !p.config.TemplateDisablePassword - sshkeyEnabled = !p.config.TemplateDisableSSHKey - regErr error - ) - - exo := egoscale.NewClient(p.config.APIEndpoint, p.config.APIKey, p.config.APISecret) - exo.RetryStrategy = egoscale.FibonacciRetryStrategy - - zone := egoscale.Zone{Name: p.config.TemplateZone} - if resp, err := exo.GetWithContext(ctx, &zone); err != nil { - return "", fmt.Errorf("template zone lookup failed: %s", err) - } else { - zone.ID = resp.(*egoscale.Zone).ID - } - - req := egoscale.RegisterCustomTemplate{ - URL: url, - ZoneID: zone.ID, - Name: p.config.TemplateName, - Displaytext: p.config.TemplateDescription, - PasswordEnabled: &passwordEnabled, - SSHKeyEnabled: &sshkeyEnabled, - Details: map[string]string{"username": p.config.TemplateUsername}, - Checksum: md5sum, - } - - res := make([]egoscale.Template, 0) - - exo.AsyncRequestWithContext(ctx, req, func(jobRes *egoscale.AsyncJobResult, err error) bool { - if err != nil { - regErr = fmt.Errorf("request failed: %s", err) - return false - } else if jobRes.JobStatus == egoscale.Pending { - // Job is not completed yet - ui.Message("template registration in progress") - return true - } - - if err := jobRes.Result(&res); err != nil { - regErr = err - return false - } - - if len(res) != 1 { - regErr = fmt.Errorf("unexpected response from API (expected 1 item, got %d)", len(res)) - return false - } - - return false - }) - if regErr != nil { - return "", regErr - } - - return res[0].ID.String(), nil -} diff --git a/post-processor/exoscale-import/post-processor.hcl2spec.go b/post-processor/exoscale-import/post-processor.hcl2spec.go deleted file mode 100644 index e10719ab4..000000000 --- a/post-processor/exoscale-import/post-processor.hcl2spec.go +++ /dev/null @@ -1,69 +0,0 @@ -// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. - -package exoscaleimport - -import ( - "github.com/hashicorp/hcl/v2/hcldec" - "github.com/zclconf/go-cty/cty" -) - -// FlatConfig is an auto-generated flat version of Config. -// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. -type FlatConfig struct { - PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` - PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` - PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` - PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` - PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` - PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` - PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` - PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` - SkipClean *bool `mapstructure:"skip_clean" cty:"skip_clean" hcl:"skip_clean"` - SOSEndpoint *string `mapstructure:"sos_endpoint" cty:"sos_endpoint" hcl:"sos_endpoint"` - APIEndpoint *string `mapstructure:"api_endpoint" cty:"api_endpoint" hcl:"api_endpoint"` - APIKey *string `mapstructure:"api_key" cty:"api_key" hcl:"api_key"` - APISecret *string `mapstructure:"api_secret" cty:"api_secret" hcl:"api_secret"` - ImageBucket *string `mapstructure:"image_bucket" cty:"image_bucket" hcl:"image_bucket"` - TemplateZone *string `mapstructure:"template_zone" cty:"template_zone" hcl:"template_zone"` - TemplateName *string `mapstructure:"template_name" cty:"template_name" hcl:"template_name"` - TemplateDescription *string `mapstructure:"template_description" cty:"template_description" hcl:"template_description"` - TemplateUsername *string `mapstructure:"template_username" cty:"template_username" hcl:"template_username"` - TemplateDisablePassword *bool `mapstructure:"template_disable_password" cty:"template_disable_password" hcl:"template_disable_password"` - TemplateDisableSSHKey *bool `mapstructure:"template_disable_sshkey" cty:"template_disable_sshkey" hcl:"template_disable_sshkey"` -} - -// FlatMapstructure returns a new FlatConfig. -// FlatConfig is an auto-generated flat version of Config. -// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. -func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { - return new(FlatConfig) -} - -// HCL2Spec returns the hcl spec of a Config. -// This spec is used by HCL to read the fields of Config. -// The decoded values from this spec will then be applied to a FlatConfig. -func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { - s := map[string]hcldec.Spec{ - "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, - "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, - "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, - "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, - "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, - "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, - "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, - "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, - "skip_clean": &hcldec.AttrSpec{Name: "skip_clean", Type: cty.Bool, Required: false}, - "sos_endpoint": &hcldec.AttrSpec{Name: "sos_endpoint", Type: cty.String, Required: false}, - "api_endpoint": &hcldec.AttrSpec{Name: "api_endpoint", Type: cty.String, Required: false}, - "api_key": &hcldec.AttrSpec{Name: "api_key", Type: cty.String, Required: false}, - "api_secret": &hcldec.AttrSpec{Name: "api_secret", Type: cty.String, Required: false}, - "image_bucket": &hcldec.AttrSpec{Name: "image_bucket", Type: cty.String, Required: false}, - "template_zone": &hcldec.AttrSpec{Name: "template_zone", Type: cty.String, Required: false}, - "template_name": &hcldec.AttrSpec{Name: "template_name", Type: cty.String, Required: false}, - "template_description": &hcldec.AttrSpec{Name: "template_description", Type: cty.String, Required: false}, - "template_username": &hcldec.AttrSpec{Name: "template_username", Type: cty.String, Required: false}, - "template_disable_password": &hcldec.AttrSpec{Name: "template_disable_password", Type: cty.Bool, Required: false}, - "template_disable_sshkey": &hcldec.AttrSpec{Name: "template_disable_sshkey", Type: cty.Bool, Required: false}, - } - return s -} diff --git a/post-processor/exoscale-import/version/version.go b/post-processor/exoscale-import/version/version.go deleted file mode 100644 index 0da76884d..000000000 --- a/post-processor/exoscale-import/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var ExoscaleImportPluginVersion *version.PluginVersion - -func init() { - ExoscaleImportPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js new file mode 100644 index 000000000..a65fd5c5a --- /dev/null +++ b/website/data/docs-navigation.js @@ -0,0 +1,335 @@ +// The root folder for this documentation category is `pages/docs` +// +// - A string refers to the name of a file +// - A "category" value refers to the name of a directory +// - All directories must have an "index.mdx" file to serve as +// the landing page for the category + +export default [ + '--------', + 'terminology', + { + category: 'commands', + content: ['init', 'build', 'console', 'fix', 'fmt', 'inspect', 'validate', 'hcl2_upgrade'], + }, + { + category: 'templates', + content: [ + { + category: 'hcl_templates', + content: [ + { + category: 'blocks', + content: [ + { + category: 'build', + content: [ + 'source', + 'provisioner', + 'post-processor', + 'post-processors', + ], + }, + 'locals', + 'source', + 'variable', + 'packer', + 'data' + ], + }, + { + category: 'functions', + content: [ + { + category: 'contextual', + content: [ + 'aws_secretsmanager', + 'consul', + 'env', + 'vault', + ], + }, + { + category: 'numeric', + content: [ + 'abs', + 'ceil', + 'floor', + 'log', + 'max', + 'min', + 'parseint', + 'pow', + 'signum', + ], + }, + { + category: 'string', + content: [ + 'chomp', + 'format', + 'formatlist', + 'indent', + 'join', + 'lower', + 'replace', + 'regex_replace', + 'regex', + 'regexall', + 'split', + 'strrev', + 'substr', + 'title', + 'trim', + 'trimprefix', + 'trimsuffix', + 'trimspace', + 'upper', + ], + }, + { + category: 'collection', + content: [ + 'chunklist', + 'coalesce', + 'coalescelist', + 'compact', + 'concat', + 'contains', + 'distinct', + 'element', + 'flatten', + 'keys', + 'length', + 'lookup', + 'merge', + 'range', + 'reverse', + 'setintersection', + 'setproduct', + 'setunion', + 'slice', + 'sort', + 'values', + 'zipmap', + ], + }, + { + category: 'encoding', + content: [ + 'base64decode', + 'base64encode', + 'csvdecode', + 'jsondecode', + 'jsonencode', + 'urlencode', + 'yamldecode', + 'yamlencode', + ], + }, + { + category: 'file', + content: [ + 'abspath', + 'basename', + 'dirname', + 'file', + 'fileexists', + 'fileset', + 'pathexpand', + ], + }, + { + category: 'datetime', + content: ['formatdate', 'timeadd', 'timestamp'], + }, + { + category: 'crypto', + content: [ + 'bcrypt', + 'md5', + 'rsadecrypt', + 'sha1', + 'sha256', + 'sha512', + ], + }, + { + category: 'uuid', + content: ['uuidv4', 'uuidv5'], + }, + { + category: 'ipnet', + content: ['cidrhost', 'cidrnetmask', 'cidrsubnet'], + }, + { + category: 'conversion', + content: ['can', 'convert', 'try'], + }, + ], + }, + 'variables', + 'locals', + 'contextual-variables', + 'datasources', + 'path-variables', + 'syntax', + 'onlyexcept', + 'expressions', + 'syntax-json', + ], + }, + { + category: "legacy_json_templates", + content: [ + 'builders', + 'communicator', + 'engine', + 'post-processors', + 'provisioners', + 'user-variables', + ] + }, + ], + }, + '----------', + {category: 'communicators', content: ['ssh', 'winrm']}, + { + category: 'builders', + content: [ + 'alicloud-ecs', + { + category: 'amazon', + content: ['chroot', 'ebs', 'ebssurrogate', 'ebsvolume', 'instance'], + }, + { + category: 'azure', + content: ['arm', 'chroot'], + }, + 'cloudstack', + 'digitalocean', + 'docker', + 'file', + 'googlecompute', + 'hetzner-cloud', + 'hyperone', + {category: 'hyperv', content: ['iso', 'vmcx']}, + 'linode', + 'lxc', + 'lxd', + 'ncloud', + 'null', + 'oneandone', + 'openstack', + {category: 'oracle', content: ['classic', 'oci']}, + { + category: 'outscale', + content: ['chroot', 'bsu', 'bsusurrogate', 'bsuvolume'], + }, + {category: 'parallels', content: ['iso', 'pvm']}, + 'profitbricks', + {category: 'proxmox', content: ['iso', 'clone']}, + 'qemu', + 'scaleway', + 'tencentcloud-cvm', + 'jdcloud', + 'triton', + 'ucloud-uhost', + 'vagrant', + { + category: 'virtualbox', + content: ['iso', 'ovf', 'vm'], + }, + { + category: 'vmware', + content: ['iso', 'vmx', 'vsphere-iso', 'vsphere-clone'], + }, + 'yandex', + 'custom', + 'community-supported', + ], + }, + { + category: 'datasources', + content: [ + { + category: 'amazon', + content: [ + 'ami', + 'secretsmanager' + ], + }, + ] + }, + { + category: 'provisioners', + content: [ + 'ansible-local', + 'ansible', + 'breakpoint', + 'chef-client', + 'chef-solo', + 'converge', + 'file', + 'inspec', + 'powershell', + 'puppet-masterless', + 'puppet-server', + 'salt-masterless', + 'shell', + 'shell-local', + 'windows-shell', + 'windows-restart', + 'custom', + 'community-supported', + ], + }, + { + category: 'post-processors', + content: [ + 'alicloud-import', + 'amazon-import', + 'artifice', + 'compress', + 'checksum', + 'digitalocean-import', + 'docker-import', + 'docker-push', + 'docker-save', + 'docker-tag', + 'googlecompute-export', + 'googlecompute-import', + 'manifest', + 'shell-local', + 'ucloud-import', + 'vagrant', + 'vagrant-cloud', + 'vsphere', + 'vsphere-template', + 'yandex-export', + 'yandex-import', + 'community-supported', + ], + }, + '----------', + 'install', + 'configure', + '----------', + { + category: 'plugins', + content: [ + { + category: 'creation', + content: [ + 'custom-builders', + 'custom-post-processors', + 'custom-provisioners', + 'custom-datasources', + ], + }, + ], + }, + + '---------', + 'debugging', +] From 9a1f2d0c9769e482389939c0023bebfbbab08d81 Mon Sep 17 00:00:00 2001 From: Marc Falzon Date: Mon, 10 Aug 2020 08:41:43 +0200 Subject: [PATCH 083/212] fixup! Remove "exoscale-import" post-processor --- go.mod | 1 - go.sum | 2 - .../exoscale/egoscale/.codeclimate.yml | 31 - .../github.com/exoscale/egoscale/.gitignore | 5 - .../exoscale/egoscale/.golangci.yml | 27 - .../exoscale/egoscale/.gometalinter.json | 25 - .../github.com/exoscale/egoscale/.travis.yml | 49 -- vendor/github.com/exoscale/egoscale/AUTHORS | 9 - .../github.com/exoscale/egoscale/CHANGELOG.md | 457 ------------- vendor/github.com/exoscale/egoscale/LICENSE | 201 ------ vendor/github.com/exoscale/egoscale/README.md | 27 - .../github.com/exoscale/egoscale/accounts.go | 80 --- .../exoscale/egoscale/accounts_response.go | 43 -- .../github.com/exoscale/egoscale/addresses.go | 179 ----- .../exoscale/egoscale/affinity_groups.go | 158 ----- .../egoscale/affinitygroups_response.go | 43 -- vendor/github.com/exoscale/egoscale/apis.go | 48 -- .../exoscale/egoscale/async_jobs.go | 138 ---- .../exoscale/egoscale/asyncjobs_response.go | 43 -- vendor/github.com/exoscale/egoscale/cidr.go | 62 -- vendor/github.com/exoscale/egoscale/client.go | 418 ------------ .../exoscale/egoscale/cserrorcode_string.go | 47 -- vendor/github.com/exoscale/egoscale/dns.go | 364 ----------- vendor/github.com/exoscale/egoscale/doc.go | 180 ----- .../exoscale/egoscale/errorcode_string.go | 37 -- vendor/github.com/exoscale/egoscale/events.go | 76 --- .../exoscale/egoscale/events_response.go | 43 -- .../exoscale/egoscale/eventtypes_response.go | 43 -- vendor/github.com/exoscale/egoscale/go.mod | 3 - vendor/github.com/exoscale/egoscale/go.sum | 2 - .../github.com/exoscale/egoscale/gopher.png | Bin 63065 -> 0 bytes .../exoscale/egoscale/instance_groups.go | 71 -- .../egoscale/instancegroups_response.go | 43 -- vendor/github.com/exoscale/egoscale/isos.go | 94 --- .../exoscale/egoscale/isos_response.go | 43 -- .../exoscale/egoscale/jobstatustype_string.go | 16 - .../exoscale/egoscale/macaddress.go | 63 -- .../exoscale/egoscale/network_offerings.go | 91 --- .../egoscale/networkofferings_response.go | 43 -- .../github.com/exoscale/egoscale/networks.go | 229 ------- .../exoscale/egoscale/networks_response.go | 43 -- vendor/github.com/exoscale/egoscale/nics.go | 120 ---- .../exoscale/egoscale/nics_response.go | 43 -- .../egoscale/oscategories_response.go | 43 -- .../egoscale/publicipaddresses_response.go | 43 -- .../exoscale/egoscale/record_string.go | 16 - .../github.com/exoscale/egoscale/request.go | 405 ------------ .../exoscale/egoscale/request_type.go | 184 ------ .../exoscale/egoscale/resource_limits.go | 100 --- .../exoscale/egoscale/resource_metadata.go | 41 -- .../egoscale/resourcedetails_response.go | 43 -- .../egoscale/resourcelimits_response.go | 43 -- .../exoscale/egoscale/reversedns.go | 83 --- .../github.com/exoscale/egoscale/runstatus.go | 131 ---- .../exoscale/egoscale/runstatus_event.go | 37 -- .../exoscale/egoscale/runstatus_incident.go | 175 ----- .../egoscale/runstatus_maintenance.go | 208 ------ .../exoscale/egoscale/runstatus_page.go | 168 ----- .../exoscale/egoscale/runstatus_service.go | 201 ------ .../exoscale/egoscale/security_groups.go | 226 ------- .../egoscale/securitygroups_response.go | 43 -- .../exoscale/egoscale/serialization.go | 402 ------------ .../exoscale/egoscale/service_offerings.go | 77 --- .../egoscale/serviceofferings_response.go | 43 -- .../github.com/exoscale/egoscale/snapshots.go | 139 ---- .../exoscale/egoscale/snapshots_response.go | 43 -- .../exoscale/egoscale/ssh_keypairs.go | 105 --- .../exoscale/egoscale/sshkeypairs_response.go | 43 -- vendor/github.com/exoscale/egoscale/tags.go | 84 --- .../exoscale/egoscale/tags_response.go | 43 -- .../github.com/exoscale/egoscale/templates.go | 163 ----- .../exoscale/egoscale/templates_response.go | 43 -- vendor/github.com/exoscale/egoscale/users.go | 63 -- .../exoscale/egoscale/users_response.go | 43 -- vendor/github.com/exoscale/egoscale/uuid.go | 79 --- .../github.com/exoscale/egoscale/version.go | 4 - .../exoscale/egoscale/virtual_machines.go | 613 ------------------ .../egoscale/virtualmachines_response.go | 43 -- .../github.com/exoscale/egoscale/volumes.go | 113 ---- .../exoscale/egoscale/volumes_response.go | 43 -- vendor/github.com/exoscale/egoscale/zones.go | 62 -- .../exoscale/egoscale/zones_response.go | 43 -- vendor/modules.txt | 4 +- 83 files changed, 1 insertion(+), 8224 deletions(-) delete mode 100644 vendor/github.com/exoscale/egoscale/.codeclimate.yml delete mode 100644 vendor/github.com/exoscale/egoscale/.gitignore delete mode 100644 vendor/github.com/exoscale/egoscale/.golangci.yml delete mode 100644 vendor/github.com/exoscale/egoscale/.gometalinter.json delete mode 100644 vendor/github.com/exoscale/egoscale/.travis.yml delete mode 100644 vendor/github.com/exoscale/egoscale/AUTHORS delete mode 100644 vendor/github.com/exoscale/egoscale/CHANGELOG.md delete mode 100644 vendor/github.com/exoscale/egoscale/LICENSE delete mode 100644 vendor/github.com/exoscale/egoscale/README.md delete mode 100644 vendor/github.com/exoscale/egoscale/accounts.go delete mode 100644 vendor/github.com/exoscale/egoscale/accounts_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/addresses.go delete mode 100644 vendor/github.com/exoscale/egoscale/affinity_groups.go delete mode 100644 vendor/github.com/exoscale/egoscale/affinitygroups_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/apis.go delete mode 100644 vendor/github.com/exoscale/egoscale/async_jobs.go delete mode 100644 vendor/github.com/exoscale/egoscale/asyncjobs_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/cidr.go delete mode 100644 vendor/github.com/exoscale/egoscale/client.go delete mode 100644 vendor/github.com/exoscale/egoscale/cserrorcode_string.go delete mode 100644 vendor/github.com/exoscale/egoscale/dns.go delete mode 100644 vendor/github.com/exoscale/egoscale/doc.go delete mode 100644 vendor/github.com/exoscale/egoscale/errorcode_string.go delete mode 100644 vendor/github.com/exoscale/egoscale/events.go delete mode 100644 vendor/github.com/exoscale/egoscale/events_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/eventtypes_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/go.mod delete mode 100644 vendor/github.com/exoscale/egoscale/go.sum delete mode 100644 vendor/github.com/exoscale/egoscale/gopher.png delete mode 100644 vendor/github.com/exoscale/egoscale/instance_groups.go delete mode 100644 vendor/github.com/exoscale/egoscale/instancegroups_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/isos.go delete mode 100644 vendor/github.com/exoscale/egoscale/isos_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/jobstatustype_string.go delete mode 100644 vendor/github.com/exoscale/egoscale/macaddress.go delete mode 100644 vendor/github.com/exoscale/egoscale/network_offerings.go delete mode 100644 vendor/github.com/exoscale/egoscale/networkofferings_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/networks.go delete mode 100644 vendor/github.com/exoscale/egoscale/networks_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/nics.go delete mode 100644 vendor/github.com/exoscale/egoscale/nics_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/oscategories_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/publicipaddresses_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/record_string.go delete mode 100644 vendor/github.com/exoscale/egoscale/request.go delete mode 100644 vendor/github.com/exoscale/egoscale/request_type.go delete mode 100644 vendor/github.com/exoscale/egoscale/resource_limits.go delete mode 100644 vendor/github.com/exoscale/egoscale/resource_metadata.go delete mode 100644 vendor/github.com/exoscale/egoscale/resourcedetails_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/resourcelimits_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/reversedns.go delete mode 100644 vendor/github.com/exoscale/egoscale/runstatus.go delete mode 100644 vendor/github.com/exoscale/egoscale/runstatus_event.go delete mode 100644 vendor/github.com/exoscale/egoscale/runstatus_incident.go delete mode 100644 vendor/github.com/exoscale/egoscale/runstatus_maintenance.go delete mode 100644 vendor/github.com/exoscale/egoscale/runstatus_page.go delete mode 100644 vendor/github.com/exoscale/egoscale/runstatus_service.go delete mode 100644 vendor/github.com/exoscale/egoscale/security_groups.go delete mode 100644 vendor/github.com/exoscale/egoscale/securitygroups_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/serialization.go delete mode 100644 vendor/github.com/exoscale/egoscale/service_offerings.go delete mode 100644 vendor/github.com/exoscale/egoscale/serviceofferings_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/snapshots.go delete mode 100644 vendor/github.com/exoscale/egoscale/snapshots_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/ssh_keypairs.go delete mode 100644 vendor/github.com/exoscale/egoscale/sshkeypairs_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/tags.go delete mode 100644 vendor/github.com/exoscale/egoscale/tags_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/templates.go delete mode 100644 vendor/github.com/exoscale/egoscale/templates_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/users.go delete mode 100644 vendor/github.com/exoscale/egoscale/users_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/uuid.go delete mode 100644 vendor/github.com/exoscale/egoscale/version.go delete mode 100644 vendor/github.com/exoscale/egoscale/virtual_machines.go delete mode 100644 vendor/github.com/exoscale/egoscale/virtualmachines_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/volumes.go delete mode 100644 vendor/github.com/exoscale/egoscale/volumes_response.go delete mode 100644 vendor/github.com/exoscale/egoscale/zones.go delete mode 100644 vendor/github.com/exoscale/egoscale/zones_response.go diff --git a/go.mod b/go.mod index 858ad2f70..b3a97053b 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,6 @@ require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/digitalocean/go-qemu v0.0.0-20201211181942-d361e7b4965f github.com/digitalocean/godo v1.11.1 - github.com/exoscale/egoscale v0.18.1 github.com/fatih/camelcase v1.0.0 github.com/fatih/structtag v1.0.0 github.com/go-ini/ini v1.25.4 diff --git a/go.sum b/go.sum index ca566554a..2c3abd6fe 100644 --- a/go.sum +++ b/go.sum @@ -176,7 +176,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/exoscale/egoscale v0.18.1 h1:1FNZVk8jHUx0AvWhOZxLEDNlacTU0chMXUUNkm9EZaI= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= @@ -381,7 +380,6 @@ github.com/hashicorp/packer v1.6.7-0.20210217093213-201869d627bf/go.mod h1:+EWPP github.com/hashicorp/packer-plugin-docker v0.0.2 h1:j/hQTogaN2pZfZohlZTRu5YvNZg2/qtYYHkxPBxv2Oo= github.com/hashicorp/packer-plugin-docker v0.0.2/go.mod h1:A2p9qztS4n88KsNF+qBM7BWw2HndW636GpFIjNSvbKM= github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= -github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0/go.mod h1:YdWTt5w6cYfaQG7IOi5iorL+3SXnz8hI0gJCi8Db/LI= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210120105339-f6fd68d2570a/go.mod h1:exN0C+Pe+3zu18l4nxueNjX5cfmslxUX/m/xk4IVmZQ= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210122130548-45a6ca0a9365/go.mod h1:K7VsU0lfJBDyiUrSNnS/j+zMxSRwwH9WC9QvHv32KsU= diff --git a/vendor/github.com/exoscale/egoscale/.codeclimate.yml b/vendor/github.com/exoscale/egoscale/.codeclimate.yml deleted file mode 100644 index dc2b688a4..000000000 --- a/vendor/github.com/exoscale/egoscale/.codeclimate.yml +++ /dev/null @@ -1,31 +0,0 @@ -version: "2" - -checks: - argument-count: - enabled: false - complex-logic: - enabled: false - file-lines: - enabled: false - method-complexity: - enabled: false - method-count: - enabled: false - method-lines: - enabled: false - nested-control-flow: - enabled: false - return-statements: - enabled: false - similar-code: - enabled: false - identical-code: - enabled: false - -plugins: - gofmt: - enabled: true - golint: - enabled: true - govet: - enabled: true diff --git a/vendor/github.com/exoscale/egoscale/.gitignore b/vendor/github.com/exoscale/egoscale/.gitignore deleted file mode 100644 index 800fe1da7..000000000 --- a/vendor/github.com/exoscale/egoscale/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.token -dist -ops.asc -vendor -listApis.json \ No newline at end of file diff --git a/vendor/github.com/exoscale/egoscale/.golangci.yml b/vendor/github.com/exoscale/egoscale/.golangci.yml deleted file mode 100644 index da5e91dff..000000000 --- a/vendor/github.com/exoscale/egoscale/.golangci.yml +++ /dev/null @@ -1,27 +0,0 @@ -linters-settings: - golint: - min-confidence: 0.3 - gocyclo: - min-complexity: 28 - goimports: - local-prefixes: github.com - -linters: - enable: - - deadcode - - dupl - - errcheck - - gocyclo - - goimports - - golint - - gosimple - - govet - - ineffassign - - megacheck - - nakedret - - scopelint - - staticcheck - - structcheck - - unused - - varcheck - disable-all: true diff --git a/vendor/github.com/exoscale/egoscale/.gometalinter.json b/vendor/github.com/exoscale/egoscale/.gometalinter.json deleted file mode 100644 index c685c4603..000000000 --- a/vendor/github.com/exoscale/egoscale/.gometalinter.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "Test": false, - "Enable": [ - "deadcode", - "errcheck", - "golint", - "gosimple", - "gotype", - "ineffassign", - "interfacer", - "misspell", - "structcheck", - "unconvert", - "varcheck", - "vet", - "vetshadow" - ], - "Disable": [ - "goconst", - "gocyclo", - "gosec", - "maligned" - ], - "Skip": ["vendor"] -} diff --git a/vendor/github.com/exoscale/egoscale/.travis.yml b/vendor/github.com/exoscale/egoscale/.travis.yml deleted file mode 100644 index 94b2f19c8..000000000 --- a/vendor/github.com/exoscale/egoscale/.travis.yml +++ /dev/null @@ -1,49 +0,0 @@ -language: go - -dist: xenial -sudo: required - -go: -- "1.7.x" -- "1.8.x" -- "1.9.x" -- "1.10.x" -- "1.11.x" -- "1.12.x" -- tip - -env: - - GOLANGCI_LINT_VERSION=1.15.0 GO111MODULES=on - -cache: apt - -addons: - apt: - update: true - packages: - - rpm - -install: - - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $GOPATH/bin v${GOLANGCI_LINT_VERSION} - - npm i codeclimate-test-reporter - - '[ "$(echo "$TRAVIS_GO_VERSION" | perl -pe "s/\\.[x\\d]+$//")" = "1.11" ] && go mod vendor || go get -u github.com/gofrs/uuid' - -before_script: - - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - - chmod +x ./cc-test-reporter - - ./cc-test-reporter before-build - -script: - - go test -race -coverprofile=c.out -covermode=atomic . - -after_script: - - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT - -jobs: - include: - - stage: golangci-lint - go: 1.10.x - if: type = pull_request - script: - - go get -u github.com/gofrs/uuid - - golangci-lint run . diff --git a/vendor/github.com/exoscale/egoscale/AUTHORS b/vendor/github.com/exoscale/egoscale/AUTHORS deleted file mode 100644 index 5c12a2a17..000000000 --- a/vendor/github.com/exoscale/egoscale/AUTHORS +++ /dev/null @@ -1,9 +0,0 @@ -Pierre-Yves Ritschard -Vincent Bernat -Chris Baumbauer -Marc-Aurèle Brothier -Sebastien Goasguen -Yoan Blanc -Stefano Marengo -Pierre-Emmanuel Jacquier -Fabrizio Steiner diff --git a/vendor/github.com/exoscale/egoscale/CHANGELOG.md b/vendor/github.com/exoscale/egoscale/CHANGELOG.md deleted file mode 100644 index c222673c6..000000000 --- a/vendor/github.com/exoscale/egoscale/CHANGELOG.md +++ /dev/null @@ -1,457 +0,0 @@ -Changelog -========= - -0.18.1 ------- - -- change: make the "User-Agent" HTTP request header more informative and exposed - -0.18.0 ------- - -- feature: add method `DeepCopy` on type `AsyncJobResult` (#403) - -0.17.2 ------- - -- remove: remove the `IsFeatured` parameter from call `RegisterCustomTemplate` (#402) - -0.17.1 ------- - -- feature: add parameter `RescueProfile` to call `StartVirtualMachine` (#401) - -0.17.0 ------- - -- feature: add new call `RegisterCustomTemplate` (#400) -- feature: add new call `DeleteTemplate` (#399) - -0.16.0 ------- - -- feature: Add `Healthcheck*` parameters to call `UpdateIPAddress` -- change: Replace satori/go.uuid by gofrs/uuid - -0.15.0 ------- - -- change: prefix the healthcheck-related params with `Healthcheck` on call `AssociateIPAddress` -- EIP: the healthcheck should be a pointer -- ip addresses: Add the Healthcheck parameters -- readme: point to new lego org (#395) -- dns: user_id is not sent back (#394) - -0.14.3 ------- - -- fix: `AffinityGroup` lists virtual machines with `UUID` rather than string - -0.14.2 ------- - -- fix: `ListVirtualMachines` by `IDs` to accept `UUID` rather than string - -0.14.1 ------- - -- fix: `GetRunstatusPage` to always contain the subresources -- fix: `ListRunstatus*` to fetch all the subresources -- feature: `PaginateRunstatus*` used by list - -0.14.0 ------- - -- change: all DNS calls require a context -- fix: `CreateAffinityGroup` allows empty `name` - -0.13.3 ------- - -- fix: runstatus unmarshalling errors -- feature: `UUID` implements DeepCopy, DeepCopyInto -- change: export `BooleanResponse` - -0.13.2 ------- - -- feat: initial Runstatus API support -- feat: `admin` namespace containing `ListVirtualMachines` for admin usage - -0.13.1 ------- - -- feat: `Iso` support `ListIsos`, `AttachIso`, and `DetachIso` - -0.13.0 ------- - -- change: `Paginate` to accept `Listable` -- change: `ListCommand` is also `Listable` -- change: `client.Get` doesn't modify the given resource, returns a new one -- change: `Command` and `AsyncCommand` are fully public, thus extensible -- remove: `Gettable` - -0.12.5 ------- - -- fix: `AuthorizeSecurityGroupEgress` could return `authorizeSecurityGroupIngress` as name - -0.12.4 ------- - -- feat: `Snapshot` is `Listable` - -0.12.3 ------- - -- change: replace dep by Go modules -- change: remove domainid,domain,regionid,listall,isrecursive,... fields -- remove: `MigrateVirtualMachine`, `CreateUser`, `EnableAccount`, and other admin calls - -0.12.2 ------- - -- fix: `ListNics` has no virtualmachineid limitations anymore -- fix: `PCIDevice` ids are not UUIDs - -0.12.1 ------- - -- fix: `UpdateVMNicIP` is async - -0.12.0 ------- - -- feat: new VM state `Moving` -- feat: `UpdateNetwork` with `startip`, `endip`, `netmask` -- feat: `NetworkOffering` is `Listable` -- feat: when it fails parsing the body, it shows it -- fix: `Snapshot.State` is a string, rather than an scalar -- change: signature are now using the v3 version with expires by default - -0.11.6 ------- - -- fix: `Network.ListRequest` accepts a `Name` argument -- change: `SecurityGroup` and the rules aren't `Taggable` anymore - -0.11.5 ------- - -- feat: addition of `UpdateVMNicIP` -- fix: `UpdateVMAffinityGroup` expected response - -0.11.4 ------- - -*no changes in the core library* - -0.11.3 ------- - -*no changes in the core library* - -0.11.2 ------- - -- fix: empty list responses - -0.11.1 ------- - -- fix: `client.Sign` handles correctly the brackets (kudos to @stffabi) -- change: `client.Payload` returns a `url.Values` - -0.11.0 ------- - -- feat: `listOSCategories` and `OSCategory` type -- feat: `listApis` supports recursive response structures -- feat: `GetRecordsWithFilters` to list records with name or record_type filters -- fix: better `DNSErrorResponse` -- fix: `ListResourceLimits` type -- change: use UUID everywhere - -0.10.5 ------- - -- feat: `Client.Logger` to plug in any `*log.Logger` -- feat: `Client.TraceOn`/`ClientTraceOff` to toggle the HTTP tracing - -0.10.4 ------- - -- feat: `CIDR` to replace string string -- fix: prevent panic on nil - -0.10.3 ------- - -- feat: `Account` is Listable -- feat: `MACAddress` to replace string type -- fix: Go 1.7 support - -0.10.2 ------- - -- fix: ActivateIP6 response - -0.10.1 ------- - -- feat: expose `SyncRequest` and `SyncRequestWithContext` -- feat: addition of reverse DNS calls -- feat: addition of `SecurityGroup.UserSecurityGroup` - -0.10.0 ------- - -- global: cloudstack documentation links are moved into cs -- global: removal of all the `...Response` types -- feat: `Network` is `Listable` -- feat: addition of `deleteUser` -- feat: addition of `listHosts` -- feat: addition of `updateHost` -- feat: exo cmd (kudos to @pierre-emmanuelJ) -- change: refactor `Gettable` to use `ListRequest` - -0.9.31 ------- - -- fix: `IPAddress`.`ListRequest` with boolean fields -- fix: `Network`.`ListRequest` with boolean fields -- fix: `ServiceOffering`.`ListRequest` with boolean fields - -0.9.30 ------- - -- fix: `VirtualMachine` `PCIDevice` representation was incomplete - -0.9.29 ------- - -- change: `DNSErrorResponse` is a proper `error` - -0.9.28 ------- - -- feat: addition of `GetDomains` -- fix: `UpdateDomain` may contain more empty fields than `CreateDomain` - -0.9.27 ------- - -- fix: expects body to be `application/json` - -0.9.26 ------- - -- change: async timeout strategy wait two seconds and not fib(n) seconds - -0.9.25 ------- - -- fix: `GetVirtualUserData` response with `Decode` method handling base64 and gzip - -0.9.24 ------- - -- feat: `Template` is `Gettable` -- feat: `ServiceOffering` is `Gettable` -- feat: addition of `GetAPILimit` -- feat: addition of `CreateTemplate`, `PrepareTemplate`, `CopyTemplate`, `UpdateTemplate`, `RegisterTemplate` -- feat: addition of `MigrateVirtualMachine` -- feat: cmd cli -- change: remove useless fields related to Project and VPC - -0.9.23 ------- - -- feat: `booleanResponse` supports true booleans: https://github.com/apache/cloudstack/pull/2428 - -0.9.22 ------- - -- feat: `ListUsers`, `CreateUser`, `UpdateUser` -- feat: `ListResourceDetails` -- feat: `SecurityGroup` helper `RuleByID` -- feat: `Sign` signs the payload -- feat: `UpdateNetworkOffering` -- feat: `GetVirtualMachineUserData` -- feat: `EnableAccount` and `DisableAccount` (admin stuff) -- feat: `AsyncRequest` and `AsyncRequestWithContext` to examine the polling -- fix: `AuthorizeSecurityGroupIngress` support for ICMPv6 -- change: move `APIName()` into the `Client`, nice godoc -- change: `Payload` doesn't sign the request anymore -- change: `Client` exposes more of its underlying data -- change: requests are sent as GET unless it body size is too big - -0.9.21 ------- - -- feat: `Network` is `Listable` -- feat: `Zone` is `Gettable` -- feat: `Client.Payload` to help preview the HTTP parameters -- feat: generate command utility -- fix: `CreateSnapshot` was missing the `Name` attribute -- fix: `ListSnapshots` was missing the `IDs` attribute -- fix: `ListZones` was missing the `NetworkType` attribute -- fix: `ListAsyncJobs` was missing the `ListAll` attribute -- change: ICMP Type/Code are uint8 and TCP/UDP port are uint16 - -0.9.20 ------- - -- feat: `Template` is `Listable` -- feat: `IPAddress` is `Listable` -- change: `List` and `Paginate` return pointers -- fix: `Template` was missing `tags` - -0.9.19 ------- - -- feat: `SSHKeyPair` is `Listable` - -0.9.18 ------- - -- feat: `VirtualMachine` is `Listable` -- feat: new `Client.Paginate` and `Client.PaginateWithContext` -- change: the inner logic of `Listable` -- remove: not working `Client.AsyncList` - -0.9.17 ------- - -- fix: `AuthorizeSecurityGroup(In|E)gress` startport may be zero - -0.9.16 ------- - -- feat: new `Listable` interface -- feat: `Nic` is `Listable` -- feat: `Volume` is `Listable` -- feat: `Zone` is `Listable` -- feat: `AffinityGroup` is `Listable` -- remove: deprecated methods `ListNics`, `AddIPToNic`, and `RemoveIPFromNic` -- remove: deprecated method `GetRootVolumeForVirtualMachine` - -0.9.15 ------- - -- feat: `IPAddress` is `Gettable` and `Deletable` -- fix: serialization of *bool - -0.9.14 ------- - -- fix: `GetVMPassword` response -- remove: deprecated `GetTopology`, `GetImages`, and al - -0.9.13 ------- - -- feat: IP4 and IP6 flags to DeployVirtualMachine -- feat: add ActivateIP6 -- fix: error message was gobbled on 40x - -0.9.12 ------- - -- feat: add `BooleanRequestWithContext` -- feat: add `client.Get`, `client.GetWithContext` to fetch a resource -- feat: add `cleint.Delete`, `client.DeleteWithContext` to delete a resource -- feat: `SSHKeyPair` is `Gettable` and `Deletable` -- feat: `VirtualMachine` is `Gettable` and `Deletable` -- feat: `AffinityGroup` is `Gettable` and `Deletable` -- feat: `SecurityGroup` is `Gettable` and `Deletable` -- remove: deprecated methods `CreateAffinityGroup`, `DeleteAffinityGroup` -- remove: deprecated methods `CreateKeypair`, `DeleteKeypair`, `RegisterKeypair` -- remove: deprecated method `GetSecurityGroupID` - -0.9.11 ------- - -- feat: CloudStack API name is now public `APIName()` -- feat: enforce the mutual exclusivity of some fields -- feat: add `context.Context` to `RequestWithContext` -- change: `AsyncRequest` and `BooleanAsyncRequest` are gone, use `Request` and `BooleanRequest` instead. -- change: `AsyncInfo` is no more - -0.9.10 ------- - -- fix: typo made ListAll required in ListPublicIPAddresses -- fix: all bool are now *bool, respecting CS default value -- feat: (*VM).DefaultNic() to obtain the main Nic - -0.9.9 ------ - -- fix: affinity groups virtualmachineIds attribute -- fix: uuidList is not a list of strings - -0.9.8 ------ - -- feat: add RootDiskSize to RestoreVirtualMachine -- fix: monotonic polling using Context - -0.9.7 ------ - -- feat: add Taggable interface to expose ResourceType -- feat: add (Create|Update|Delete|List)InstanceGroup(s) -- feat: add RegisterUserKeys -- feat: add ListResourceLimits -- feat: add ListAccounts - -0.9.6 ------ - -- fix: update UpdateVirtualMachine userdata -- fix: Network's name/displaytext might be empty - -0.9.5 ------ - -- fix: serialization of slice - -0.9.4 ------ - -- fix: constants - -0.9.3 ------ - -- change: userdata expects a string -- change: no pointer in sub-struct's - -0.9.2 ------ - -- bug: createNetwork is a sync call -- bug: typo in listVirtualMachines' domainid -- bug: serialization of map[string], e.g. UpdateVirtualMachine -- change: IPAddress's use net.IP type -- feat: helpers VM.NicsByType, VM.NicByNetworkID, VM.NicByID -- feat: addition of CloudStack ApiErrorCode constants - -0.9.1 ------ - -- bug: sync calls returns succes as a string rather than a bool -- change: unexport BooleanResponse types -- feat: original CloudStack error response can be obtained - -0.9.0 ------ - -Big refactoring, addition of the documentation, compliance to golint. - -0.1.0 ------ - -Initial library diff --git a/vendor/github.com/exoscale/egoscale/LICENSE b/vendor/github.com/exoscale/egoscale/LICENSE deleted file mode 100644 index 327ecb823..000000000 --- a/vendor/github.com/exoscale/egoscale/LICENSE +++ /dev/null @@ -1,201 +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 2014 exoscale(tm) - - 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. diff --git a/vendor/github.com/exoscale/egoscale/README.md b/vendor/github.com/exoscale/egoscale/README.md deleted file mode 100644 index bc40ec6b0..000000000 --- a/vendor/github.com/exoscale/egoscale/README.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Egoscale -description: the Go library for Exoscale ---- - - - -[![Build Status](https://travis-ci.org/exoscale/egoscale.svg?branch=master)](https://travis-ci.org/exoscale/egoscale) [![Maintainability](https://api.codeclimate.com/v1/badges/fcab3b624b7d3ca96a9d/maintainability)](https://codeclimate.com/github/exoscale/egoscale/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/fcab3b624b7d3ca96a9d/test_coverage)](https://codeclimate.com/github/exoscale/egoscale/test_coverage) [![GoDoc](https://godoc.org/github.com/exoscale/egoscale?status.svg)](https://godoc.org/github.com/exoscale/egoscale) [![Go Report Card](https://goreportcard.com/badge/github.com/exoscale/egoscale)](https://goreportcard.com/report/github.com/exoscale/egoscale) - -A wrapper for the [Exoscale public cloud](https://www.exoscale.com) API. - -## Known users - -- [Exoscale CLI](https://github.com/exoscale/cli) -- [Exoscale Terraform provider](https://github.com/exoscale/terraform-provider-exoscale) -- [ExoIP](https://github.com/exoscale/exoip): IP Watchdog -- [Lego](https://github.com/go-acme/lego): Let's Encrypt and ACME library -- Kubernetes Incubator: [External DNS](https://github.com/kubernetes-incubator/external-dns) -- [Docker machine](https://docs.docker.com/machine/drivers/exoscale/) -- [etc.](https://godoc.org/github.com/exoscale/egoscale?importers) - -## License - -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 diff --git a/vendor/github.com/exoscale/egoscale/accounts.go b/vendor/github.com/exoscale/egoscale/accounts.go deleted file mode 100644 index 9bcdec608..000000000 --- a/vendor/github.com/exoscale/egoscale/accounts.go +++ /dev/null @@ -1,80 +0,0 @@ -package egoscale - -// Account provides the detailed account information -type Account struct { - AccountDetails map[string]string `json:"accountdetails,omitempty" doc:"details for the account"` - CPUAvailable string `json:"cpuavailable,omitempty" doc:"the total number of cpu cores available to be created for this account"` - CPULimit string `json:"cpulimit,omitempty" doc:"the total number of cpu cores the account can own"` - CPUTotal int64 `json:"cputotal,omitempty" doc:"the total number of cpu cores owned by account"` - DefaultZoneID *UUID `json:"defaultzoneid,omitempty" doc:"the default zone of the account"` - EipLimit string `json:"eiplimit,omitempty" doc:"the total number of public elastic ip addresses this account can acquire"` - Groups []string `json:"groups,omitempty" doc:"the list of acl groups that account belongs to"` - ID *UUID `json:"id,omitempty" doc:"the id of the account"` - IPAvailable string `json:"ipavailable,omitempty" doc:"the total number of public ip addresses available for this account to acquire"` - IPLimit string `json:"iplimit,omitempty" doc:"the total number of public ip addresses this account can acquire"` - IPTotal int64 `json:"iptotal,omitempty" doc:"the total number of public ip addresses allocated for this account"` - IsCleanupRequired bool `json:"iscleanuprequired,omitempty" doc:"true if the account requires cleanup"` - IsDefault bool `json:"isdefault,omitempty" doc:"true if account is default, false otherwise"` - MemoryAvailable string `json:"memoryavailable,omitempty" doc:"the total memory (in MB) available to be created for this account"` - MemoryLimit string `json:"memorylimit,omitempty" doc:"the total memory (in MB) the account can own"` - MemoryTotal int64 `json:"memorytotal,omitempty" doc:"the total memory (in MB) owned by account"` - Name string `json:"name,omitempty" doc:"the name of the account"` - NetworkAvailable string `json:"networkavailable,omitempty" doc:"the total number of networks available to be created for this account"` - NetworkDomain string `json:"networkdomain,omitempty" doc:"the network domain"` - NetworkLimit string `json:"networklimit,omitempty" doc:"the total number of networks the account can own"` - NetworkTotal int64 `json:"networktotal,omitempty" doc:"the total number of networks owned by account"` - PrimaryStorageAvailable string `json:"primarystorageavailable,omitempty" doc:"the total primary storage space (in GiB) available to be used for this account"` - PrimaryStorageLimit string `json:"primarystoragelimit,omitempty" doc:"the total primary storage space (in GiB) the account can own"` - PrimaryStorageTotal int64 `json:"primarystoragetotal,omitempty" doc:"the total primary storage space (in GiB) owned by account"` - ProjectAvailable string `json:"projectavailable,omitempty" doc:"the total number of projects available for administration by this account"` - ProjectLimit string `json:"projectlimit,omitempty" doc:"the total number of projects the account can own"` - ProjectTotal int64 `json:"projecttotal,omitempty" doc:"the total number of projects being administrated by this account"` - SecondaryStorageAvailable string `json:"secondarystorageavailable,omitempty" doc:"the total secondary storage space (in GiB) available to be used for this account"` - SecondaryStorageLimit string `json:"secondarystoragelimit,omitempty" doc:"the total secondary storage space (in GiB) the account can own"` - SecondaryStorageTotal int64 `json:"secondarystoragetotal,omitempty" doc:"the total secondary storage space (in GiB) owned by account"` - SMTP bool `json:"smtp,omitempty" doc:"if SMTP outbound is allowed"` - SnapshotAvailable string `json:"snapshotavailable,omitempty" doc:"the total number of snapshots available for this account"` - SnapshotLimit string `json:"snapshotlimit,omitempty" doc:"the total number of snapshots which can be stored by this account"` - SnapshotTotal int64 `json:"snapshottotal,omitempty" doc:"the total number of snapshots stored by this account"` - State string `json:"state,omitempty" doc:"the state of the account"` - TemplateAvailable string `json:"templateavailable,omitempty" doc:"the total number of templates available to be created by this account"` - TemplateLimit string `json:"templatelimit,omitempty" doc:"the total number of templates which can be created by this account"` - TemplateTotal int64 `json:"templatetotal,omitempty" doc:"the total number of templates which have been created by this account"` - User []User `json:"user,omitempty" doc:"the list of users associated with account"` - VMAvailable string `json:"vmavailable,omitempty" doc:"the total number of virtual machines available for this account to acquire"` - VMLimit string `json:"vmlimit,omitempty" doc:"the total number of virtual machines that can be deployed by this account"` - VMRunning int `json:"vmrunning,omitempty" doc:"the total number of virtual machines running for this account"` - VMStopped int `json:"vmstopped,omitempty" doc:"the total number of virtual machines stopped for this account"` - VMTotal int64 `json:"vmtotal,omitempty" doc:"the total number of virtual machines deployed by this account"` - VolumeAvailable string `json:"volumeavailable,omitempty" doc:"the total volume available for this account"` - VolumeLimit string `json:"volumelimit,omitempty" doc:"the total volume which can be used by this account"` - VolumeTotal int64 `json:"volumetotal,omitempty" doc:"the total volume being used by this account"` -} - -// ListRequest builds the ListAccountsGroups request -func (a Account) ListRequest() (ListCommand, error) { - return &ListAccounts{ - ID: a.ID, - State: a.State, - }, nil -} - -//go:generate go run generate/main.go -interface=Listable ListAccounts - -// ListAccounts represents a query to display the accounts -type ListAccounts struct { - ID *UUID `json:"id,omitempty" doc:"List account by account ID"` - IsCleanUpRequired *bool `json:"iscleanuprequired,omitempty" doc:"list accounts by cleanuprequired attribute (values are true or false)"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"List account by account name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - State string `json:"state,omitempty" doc:"List accounts by state. Valid states are enabled, disabled, and locked."` - _ bool `name:"listAccounts" description:"Lists accounts and provides detailed account information for listed accounts"` -} - -// ListAccountsResponse represents a list of accounts -type ListAccountsResponse struct { - Count int `json:"count"` - Account []Account `json:"account"` -} diff --git a/vendor/github.com/exoscale/egoscale/accounts_response.go b/vendor/github.com/exoscale/egoscale/accounts_response.go deleted file mode 100644 index 106daca32..000000000 --- a/vendor/github.com/exoscale/egoscale/accounts_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListAccounts) Response() interface{} { - return new(ListAccountsResponse) -} - -// ListRequest returns itself -func (ls *ListAccounts) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListAccounts) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListAccounts) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListAccounts) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListAccountsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListAccountsResponse was expected, got %T", resp)) - return - } - - for i := range items.Account { - if !callback(&items.Account[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/addresses.go b/vendor/github.com/exoscale/egoscale/addresses.go deleted file mode 100644 index d828f52e0..000000000 --- a/vendor/github.com/exoscale/egoscale/addresses.go +++ /dev/null @@ -1,179 +0,0 @@ -package egoscale - -import ( - "context" - "fmt" - "net" -) - -// Healthcheck represents an Healthcheck attached to an IP -type Healthcheck struct { - Interval int64 `json:"interval,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 10, minimum: 5"` - Mode string `json:"mode,omitempty" doc:"healthcheck definition: healthcheck mode can be either 'tcp' or 'http'"` - Path string `json:"path,omitempty" doc:"healthcheck definition: the path against which the 'http' healthcheck will be performed. Required if mode is 'http', ignored otherwise."` - Port int64 `json:"port,omitempty" doc:"healthcheck definition: the port against which the healthcheck will be performed. Required if a 'mode' is provided."` - StrikesFail int64 `json:"strikes-fail,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'dead'. Default: 3"` - StrikesOk int64 `json:"strikes-ok,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'alive'. Default: 2"` - Timeout int64 `json:"timeout,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 2, cannot be greater than interval."` -} - -// IPAddress represents an IP Address -type IPAddress struct { - Allocated string `json:"allocated,omitempty" doc:"date the public IP address was acquired"` - Associated string `json:"associated,omitempty" doc:"date the public IP address was associated"` - AssociatedNetworkID *UUID `json:"associatednetworkid,omitempty" doc:"the ID of the Network associated with the IP address"` - AssociatedNetworkName string `json:"associatednetworkname,omitempty" doc:"the name of the Network associated with the IP address"` - ForVirtualNetwork bool `json:"forvirtualnetwork,omitempty" doc:"the virtual network for the IP address"` - Healthcheck *Healthcheck `json:"healthcheck,omitempty" doc:"The IP healthcheck configuration"` - ID *UUID `json:"id,omitempty" doc:"public IP address id"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"public IP address"` - IsElastic bool `json:"iselastic,omitempty" doc:"is an elastic ip"` - IsPortable bool `json:"isportable,omitempty" doc:"is public IP portable across the zones"` - IsSourceNat bool `json:"issourcenat,omitempty" doc:"true if the IP address is a source nat address, false otherwise"` - IsStaticNat *bool `json:"isstaticnat,omitempty" doc:"true if this ip is for static nat, false otherwise"` - IsSystem bool `json:"issystem,omitempty" doc:"true if this ip is system ip (was allocated as a part of deployVm or createLbRule)"` - NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the Network where ip belongs to"` - PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"the physical network this belongs to"` - Purpose string `json:"purpose,omitempty" doc:"purpose of the IP address. In Acton this value is not null for Ips with isSystem=true, and can have either StaticNat or LB value"` - ReverseDNS []ReverseDNS `json:"reversedns,omitempty" doc:"the list of PTR record(s) associated with the ip address"` - State string `json:"state,omitempty" doc:"State of the ip address. Can be: Allocatin, Allocated and Releasing"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with ip address"` - VirtualMachineDisplayName string `json:"virtualmachinedisplayname,omitempty" doc:"virtual machine display name the ip address is assigned to (not null only for static nat Ip)"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"virtual machine id the ip address is assigned to (not null only for static nat Ip)"` - VirtualMachineName string `json:"virtualmachinename,omitempty" doc:"virtual machine name the ip address is assigned to (not null only for static nat Ip)"` - VlanID *UUID `json:"vlanid,omitempty" doc:"the ID of the VLAN associated with the IP address. This parameter is visible to ROOT admins only"` - VlanName string `json:"vlanname,omitempty" doc:"the VLAN associated with the IP address"` - VMIPAddress net.IP `json:"vmipaddress,omitempty" doc:"virtual machine (dnat) ip address (not null only for static nat Ip)"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the zone the public IP address belongs to"` - ZoneName string `json:"zonename,omitempty" doc:"the name of the zone the public IP address belongs to"` -} - -// ResourceType returns the type of the resource -func (IPAddress) ResourceType() string { - return "PublicIpAddress" -} - -// ListRequest builds the ListAdresses request -func (ipaddress IPAddress) ListRequest() (ListCommand, error) { - req := &ListPublicIPAddresses{ - AssociatedNetworkID: ipaddress.AssociatedNetworkID, - ID: ipaddress.ID, - IPAddress: ipaddress.IPAddress, - PhysicalNetworkID: ipaddress.PhysicalNetworkID, - VlanID: ipaddress.VlanID, - ZoneID: ipaddress.ZoneID, - } - if ipaddress.IsElastic { - req.IsElastic = &ipaddress.IsElastic - } - if ipaddress.IsSourceNat { - req.IsSourceNat = &ipaddress.IsSourceNat - } - if ipaddress.ForVirtualNetwork { - req.ForVirtualNetwork = &ipaddress.ForVirtualNetwork - } - - return req, nil -} - -// Delete removes the resource -func (ipaddress IPAddress) Delete(ctx context.Context, client *Client) error { - if ipaddress.ID == nil { - return fmt.Errorf("an IPAddress may only be deleted using ID") - } - - return client.BooleanRequestWithContext(ctx, &DisassociateIPAddress{ - ID: ipaddress.ID, - }) -} - -// AssociateIPAddress (Async) represents the IP creation -type AssociateIPAddress struct { - HealthcheckInterval int64 `json:"interval,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 10, minimum: 5"` - HealthcheckMode string `json:"mode,omitempty" doc:"healthcheck definition: healthcheck mode can be either 'tcp' or 'http'"` - HealthcheckPath string `json:"path,omitempty" doc:"healthcheck definition: the path against which the 'http' healthcheck will be performed. Required if mode is 'http', ignored otherwise."` - HealthcheckPort int64 `json:"port,omitempty" doc:"healthcheck definition: the port against which the healthcheck will be performed. Required if a 'mode' is provided."` - HealthcheckStrikesFail int64 `json:"strikes-fail,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'dead'. Default: 3"` - HealthcheckStrikesOk int64 `json:"strikes-ok,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'alive'. Default: 2"` - HealthcheckTimeout int64 `json:"timeout,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 2, cannot be greater than interval."` - ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the availability zone you want to acquire a public IP address from"` - _ bool `name:"associateIpAddress" description:"Acquires and associates a public IP to an account."` -} - -// Response returns the struct to unmarshal -func (AssociateIPAddress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (AssociateIPAddress) AsyncResponse() interface{} { - return new(IPAddress) -} - -// DisassociateIPAddress (Async) represents the IP deletion -type DisassociateIPAddress struct { - ID *UUID `json:"id" doc:"the id of the public ip address to disassociate"` - _ bool `name:"disassociateIpAddress" description:"Disassociates an ip address from the account."` -} - -// Response returns the struct to unmarshal -func (DisassociateIPAddress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DisassociateIPAddress) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// UpdateIPAddress (Async) represents the IP modification -type UpdateIPAddress struct { - HealthcheckInterval int64 `json:"interval,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 10, minimum: 5"` - HealthcheckMode string `json:"mode,omitempty" doc:"healthcheck definition: healthcheck mode can be either 'tcp' or 'http'"` - HealthcheckPath string `json:"path,omitempty" doc:"healthcheck definition: the path against which the 'http' healthcheck will be performed. Required if mode is 'http', ignored otherwise."` - HealthcheckPort int64 `json:"port,omitempty" doc:"healthcheck definition: the port against which the healthcheck will be performed. Required if a 'mode' is provided."` - HealthcheckStrikesFail int64 `json:"strikes-fail,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'dead'. Default: 3"` - HealthcheckStrikesOk int64 `json:"strikes-ok,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'alive'. Default: 2"` - HealthcheckTimeout int64 `json:"timeout,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 2, cannot be greater than interval."` - ID *UUID `json:"id" doc:"the id of the public IP address to update"` - _ bool `name:"updateIpAddress" description:"Updates an IP address"` -} - -// Response returns the struct to unmarshal -func (UpdateIPAddress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (UpdateIPAddress) AsyncResponse() interface{} { - return new(IPAddress) -} - -//go:generate go run generate/main.go -interface=Listable ListPublicIPAddresses - -// ListPublicIPAddresses represents a search for public IP addresses -type ListPublicIPAddresses struct { - AllocatedOnly *bool `json:"allocatedonly,omitempty" doc:"limits search results to allocated public IP addresses"` - AssociatedNetworkID *UUID `json:"associatednetworkid,omitempty" doc:"lists all public IP addresses associated to the network specified"` - ForLoadBalancing *bool `json:"forloadbalancing,omitempty" doc:"list only ips used for load balancing"` - ForVirtualNetwork *bool `json:"forvirtualnetwork,omitempty" doc:"the virtual network for the IP address"` - ID *UUID `json:"id,omitempty" doc:"lists ip address by id"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"lists the specified IP address"` - IsElastic *bool `json:"iselastic,omitempty" doc:"list only elastic ip addresses"` - IsSourceNat *bool `json:"issourcenat,omitempty" doc:"list only source nat ip addresses"` - IsStaticNat *bool `json:"isstaticnat,omitempty" doc:"list only static nat ip addresses"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"lists all public IP addresses by physical network id"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - VlanID *UUID `json:"vlanid,omitempty" doc:"lists all public IP addresses by VLAN ID"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"lists all public IP addresses by Zone ID"` - _ bool `name:"listPublicIpAddresses" description:"Lists all public ip addresses"` -} - -// ListPublicIPAddressesResponse represents a list of public IP addresses -type ListPublicIPAddressesResponse struct { - Count int `json:"count"` - PublicIPAddress []IPAddress `json:"publicipaddress"` -} diff --git a/vendor/github.com/exoscale/egoscale/affinity_groups.go b/vendor/github.com/exoscale/egoscale/affinity_groups.go deleted file mode 100644 index 61b979a28..000000000 --- a/vendor/github.com/exoscale/egoscale/affinity_groups.go +++ /dev/null @@ -1,158 +0,0 @@ -package egoscale - -import ( - "context" - "fmt" - "net/url" -) - -// AffinityGroup represents an (anti-)affinity group -// -// Affinity and Anti-Affinity groups provide a way to influence where VMs should run. -// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/stable/virtual_machines.html#affinity-groups -type AffinityGroup struct { - Account string `json:"account,omitempty" doc:"the account owning the affinity group"` - Description string `json:"description,omitempty" doc:"the description of the affinity group"` - ID *UUID `json:"id,omitempty" doc:"the ID of the affinity group"` - Name string `json:"name,omitempty" doc:"the name of the affinity group"` - Type string `json:"type,omitempty" doc:"the type of the affinity group"` - VirtualMachineIDs []UUID `json:"virtualmachineIds,omitempty" doc:"virtual machine Ids associated with this affinity group"` -} - -// ListRequest builds the ListAffinityGroups request -func (ag AffinityGroup) ListRequest() (ListCommand, error) { - return &ListAffinityGroups{ - ID: ag.ID, - Name: ag.Name, - }, nil -} - -// Delete removes the given Affinity Group -func (ag AffinityGroup) Delete(ctx context.Context, client *Client) error { - if ag.ID == nil && ag.Name == "" { - return fmt.Errorf("an Affinity Group may only be deleted using ID or Name") - } - - req := &DeleteAffinityGroup{} - - if ag.ID != nil { - req.ID = ag.ID - } else { - req.Name = ag.Name - } - - return client.BooleanRequestWithContext(ctx, req) -} - -// AffinityGroupType represent an affinity group type -type AffinityGroupType struct { - Type string `json:"type,omitempty" doc:"the type of the affinity group"` -} - -// CreateAffinityGroup (Async) represents a new (anti-)affinity group -type CreateAffinityGroup struct { - Description string `json:"description,omitempty" doc:"Optional description of the affinity group"` - Name string `json:"name,omitempty" doc:"Name of the affinity group"` - Type string `json:"type" doc:"Type of the affinity group from the available affinity/anti-affinity group types"` - _ bool `name:"createAffinityGroup" description:"Creates an affinity/anti-affinity group"` -} - -func (req CreateAffinityGroup) onBeforeSend(params url.Values) error { - // Name must be set, but can be empty - if req.Name == "" { - params.Set("name", "") - } - return nil -} - -// Response returns the struct to unmarshal -func (CreateAffinityGroup) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (CreateAffinityGroup) AsyncResponse() interface{} { - return new(AffinityGroup) -} - -// UpdateVMAffinityGroup (Async) represents a modification of a (anti-)affinity group -type UpdateVMAffinityGroup struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - AffinityGroupIDs []UUID `json:"affinitygroupids,omitempty" doc:"comma separated list of affinity groups id that are going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupnames parameter"` - AffinityGroupNames []string `json:"affinitygroupnames,omitempty" doc:"comma separated list of affinity groups names that are going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupids parameter"` - _ bool `name:"updateVMAffinityGroup" description:"Updates the affinity/anti-affinity group associations of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect."` -} - -func (req UpdateVMAffinityGroup) onBeforeSend(params url.Values) error { - // Either AffinityGroupIDs or AffinityGroupNames must be set - if len(req.AffinityGroupIDs) == 0 && len(req.AffinityGroupNames) == 0 { - params.Set("affinitygroupids", "") - } - return nil -} - -// Response returns the struct to unmarshal -func (UpdateVMAffinityGroup) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (UpdateVMAffinityGroup) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// DeleteAffinityGroup (Async) represents an (anti-)affinity group to be deleted -type DeleteAffinityGroup struct { - ID *UUID `json:"id,omitempty" doc:"The ID of the affinity group. Mutually exclusive with name parameter"` - Name string `json:"name,omitempty" doc:"The name of the affinity group. Mutually exclusive with ID parameter"` - _ bool `name:"deleteAffinityGroup" description:"Deletes affinity group"` -} - -// Response returns the struct to unmarshal -func (DeleteAffinityGroup) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DeleteAffinityGroup) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -//go:generate go run generate/main.go -interface=Listable ListAffinityGroups - -// ListAffinityGroups represents an (anti-)affinity groups search -type ListAffinityGroups struct { - ID *UUID `json:"id,omitempty" doc:"List the affinity group by the ID provided"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"Lists affinity groups by name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - Type string `json:"type,omitempty" doc:"Lists affinity groups by type"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"Lists affinity groups by virtual machine ID"` - _ bool `name:"listAffinityGroups" description:"Lists affinity groups"` -} - -// ListAffinityGroupsResponse represents a list of (anti-)affinity groups -type ListAffinityGroupsResponse struct { - Count int `json:"count"` - AffinityGroup []AffinityGroup `json:"affinitygroup"` -} - -// ListAffinityGroupTypes represents an (anti-)affinity groups search -type ListAffinityGroupTypes struct { - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - _ bool `name:"listAffinityGroupTypes" description:"Lists affinity group types available"` -} - -// Response returns the struct to unmarshal -func (ListAffinityGroupTypes) Response() interface{} { - return new(ListAffinityGroupTypesResponse) -} - -// ListAffinityGroupTypesResponse represents a list of (anti-)affinity group types -type ListAffinityGroupTypesResponse struct { - Count int `json:"count"` - AffinityGroupType []AffinityGroupType `json:"affinitygrouptype"` -} diff --git a/vendor/github.com/exoscale/egoscale/affinitygroups_response.go b/vendor/github.com/exoscale/egoscale/affinitygroups_response.go deleted file mode 100644 index 12c5bd747..000000000 --- a/vendor/github.com/exoscale/egoscale/affinitygroups_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListAffinityGroups) Response() interface{} { - return new(ListAffinityGroupsResponse) -} - -// ListRequest returns itself -func (ls *ListAffinityGroups) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListAffinityGroups) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListAffinityGroups) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListAffinityGroups) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListAffinityGroupsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListAffinityGroupsResponse was expected, got %T", resp)) - return - } - - for i := range items.AffinityGroup { - if !callback(&items.AffinityGroup[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/apis.go b/vendor/github.com/exoscale/egoscale/apis.go deleted file mode 100644 index 098a03761..000000000 --- a/vendor/github.com/exoscale/egoscale/apis.go +++ /dev/null @@ -1,48 +0,0 @@ -package egoscale - -// API represents an API service -type API struct { - Description string `json:"description,omitempty" doc:"description of the api"` - IsAsync bool `json:"isasync" doc:"true if api is asynchronous"` - Name string `json:"name,omitempty" doc:"the name of the api command"` - Related string `json:"related,omitempty" doc:"comma separated related apis"` - Since string `json:"since,omitempty" doc:"version of CloudStack the api was introduced in"` - Type string `json:"type,omitempty" doc:"response field type"` - Params []APIParam `json:"params,omitempty" doc:"the list params the api accepts"` - Response []APIField `json:"response,omitempty" doc:"api response fields"` -} - -// APIParam represents an API parameter field -type APIParam struct { - Description string `json:"description"` - Length int64 `json:"length"` - Name string `json:"name"` - Required bool `json:"required"` - Since string `json:"since,omitempty"` - Type string `json:"type"` -} - -// APIField represents an API response field -type APIField struct { - Description string `json:"description"` - Name string `json:"name"` - Response []APIField `json:"response,omitempty"` - Type string `json:"type"` -} - -// ListAPIs represents a query to list the api -type ListAPIs struct { - Name string `json:"name,omitempty" doc:"API name"` - _ bool `name:"listApis" description:"lists all available apis on the server"` -} - -// ListAPIsResponse represents a list of API -type ListAPIsResponse struct { - Count int `json:"count"` - API []API `json:"api"` -} - -// Response returns the struct to unmarshal -func (*ListAPIs) Response() interface{} { - return new(ListAPIsResponse) -} diff --git a/vendor/github.com/exoscale/egoscale/async_jobs.go b/vendor/github.com/exoscale/egoscale/async_jobs.go deleted file mode 100644 index ab4b52cff..000000000 --- a/vendor/github.com/exoscale/egoscale/async_jobs.go +++ /dev/null @@ -1,138 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "errors" -) - -// AsyncJobResult represents an asynchronous job result -type AsyncJobResult struct { - AccountID *UUID `json:"accountid,omitempty" doc:"the account that executed the async command"` - Cmd string `json:"cmd,omitempty" doc:"the async command executed"` - Created string `json:"created,omitempty" doc:"the created date of the job"` - JobID *UUID `json:"jobid" doc:"extra field for the initial async call"` - JobInstanceID *UUID `json:"jobinstanceid,omitempty" doc:"the unique ID of the instance/entity object related to the job"` - JobInstanceType string `json:"jobinstancetype,omitempty" doc:"the instance/entity object related to the job"` - JobProcStatus int `json:"jobprocstatus,omitempty" doc:"the progress information of the PENDING job"` - JobResult *json.RawMessage `json:"jobresult,omitempty" doc:"the result reason"` - JobResultCode int `json:"jobresultcode,omitempty" doc:"the result code for the job"` - JobResultType string `json:"jobresulttype,omitempty" doc:"the result type"` - JobStatus JobStatusType `json:"jobstatus,omitempty" doc:"the current job status-should be 0 for PENDING"` - UserID *UUID `json:"userid,omitempty" doc:"the user that executed the async command"` -} - -// DeepCopy create a true copy of the receiver. -func (a *AsyncJobResult) DeepCopy() *AsyncJobResult { - if a == nil { - return nil - } - - return &AsyncJobResult{ - AccountID: a.AccountID.DeepCopy(), - Cmd: a.Cmd, - Created: a.Created, - JobID: a.JobID.DeepCopy(), - JobInstanceID: a.JobInstanceID.DeepCopy(), - JobInstanceType: a.JobInstanceType, - JobProcStatus: a.JobProcStatus, - JobResult: a.JobResult, - JobResultCode: a.JobResultCode, - JobResultType: a.JobResultType, - JobStatus: a.JobStatus, - UserID: a.UserID.DeepCopy(), - } -} - -// DeepCopyInto copies the receiver into out. -// -// In (a) must be non nil. out must be non nil -func (a *AsyncJobResult) DeepCopyInto(out *AsyncJobResult) { - *out = AsyncJobResult{ - AccountID: a.AccountID.DeepCopy(), - Cmd: a.Cmd, - Created: a.Created, - JobID: a.JobID.DeepCopy(), - JobInstanceID: a.JobInstanceID.DeepCopy(), - JobInstanceType: a.JobInstanceType, - JobProcStatus: a.JobProcStatus, - JobResult: a.JobResult, - JobResultCode: a.JobResultCode, - JobResultType: a.JobResultType, - JobStatus: a.JobStatus, - UserID: a.UserID.DeepCopy(), - } -} - -// ListRequest buils the (empty) ListAsyncJobs request -func (a AsyncJobResult) ListRequest() (ListCommand, error) { - req := &ListAsyncJobs{ - StartDate: a.Created, - } - - return req, nil -} - -// Error builds an error message from the result -func (a AsyncJobResult) Error() error { - r := new(ErrorResponse) - if e := json.Unmarshal(*a.JobResult, r); e != nil { - return e - } - return r -} - -// QueryAsyncJobResult represents a query to fetch the status of async job -type QueryAsyncJobResult struct { - JobID *UUID `json:"jobid" doc:"the ID of the asynchronous job"` - _ bool `name:"queryAsyncJobResult" description:"Retrieves the current status of asynchronous job."` -} - -// Response returns the struct to unmarshal -func (QueryAsyncJobResult) Response() interface{} { - return new(AsyncJobResult) -} - -//go:generate go run generate/main.go -interface=Listable ListAsyncJobs - -// ListAsyncJobs list the asynchronous jobs -type ListAsyncJobs struct { - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - StartDate string `json:"startdate,omitempty" doc:"the start date of the async job"` - _ bool `name:"listAsyncJobs" description:"Lists all pending asynchronous jobs for the account."` -} - -// ListAsyncJobsResponse represents a list of job results -type ListAsyncJobsResponse struct { - Count int `json:"count"` - AsyncJob []AsyncJobResult `json:"asyncjobs"` -} - -// Result unmarshals the result of an AsyncJobResult into the given interface -func (a AsyncJobResult) Result(i interface{}) error { - if a.JobStatus == Failure { - return a.Error() - } - - if a.JobStatus == Success { - m := map[string]json.RawMessage{} - err := json.Unmarshal(*(a.JobResult), &m) - - if err == nil { - if len(m) >= 1 { - if _, ok := m["success"]; ok { - return json.Unmarshal(*(a.JobResult), i) - } - - // otherwise, pick the first key - for k := range m { - return json.Unmarshal(m[k], i) - } - } - return errors.New("empty response") - } - } - - return nil -} diff --git a/vendor/github.com/exoscale/egoscale/asyncjobs_response.go b/vendor/github.com/exoscale/egoscale/asyncjobs_response.go deleted file mode 100644 index e4744e8bd..000000000 --- a/vendor/github.com/exoscale/egoscale/asyncjobs_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListAsyncJobs) Response() interface{} { - return new(ListAsyncJobsResponse) -} - -// ListRequest returns itself -func (ls *ListAsyncJobs) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListAsyncJobs) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListAsyncJobs) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListAsyncJobs) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListAsyncJobsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListAsyncJobsResponse was expected, got %T", resp)) - return - } - - for i := range items.AsyncJob { - if !callback(&items.AsyncJob[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/cidr.go b/vendor/github.com/exoscale/egoscale/cidr.go deleted file mode 100644 index 74c054b71..000000000 --- a/vendor/github.com/exoscale/egoscale/cidr.go +++ /dev/null @@ -1,62 +0,0 @@ -package egoscale - -import ( - "bytes" - "encoding/json" - "fmt" - "net" -) - -// CIDR represents a nicely JSON serializable net.IPNet -type CIDR struct { - net.IPNet -} - -// UnmarshalJSON unmarshals the raw JSON into the MAC address -func (cidr *CIDR) UnmarshalJSON(b []byte) error { - var s string - if err := json.Unmarshal(b, &s); err != nil { - return err - } - c, err := ParseCIDR(s) - if err != nil { - return err - } - *cidr = CIDR{c.IPNet} - - return nil -} - -// MarshalJSON converts the CIDR to a string representation -func (cidr CIDR) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf("%q", cidr)), nil -} - -// String returns the string representation of a CIDR -func (cidr CIDR) String() string { - return cidr.IPNet.String() -} - -// ParseCIDR parses a CIDR from a string -func ParseCIDR(s string) (*CIDR, error) { - _, net, err := net.ParseCIDR(s) - if err != nil { - return nil, err - } - return &CIDR{*net}, nil -} - -// MustParseCIDR forces parseCIDR or panics -func MustParseCIDR(s string) *CIDR { - cidr, err := ParseCIDR(s) - if err != nil { - panic(err) - } - - return cidr -} - -// Equal compare two CIDR -func (cidr CIDR) Equal(c CIDR) bool { - return (cidr.IPNet.IP.Equal(c.IPNet.IP) && bytes.Equal(cidr.IPNet.Mask, c.IPNet.Mask)) -} diff --git a/vendor/github.com/exoscale/egoscale/client.go b/vendor/github.com/exoscale/egoscale/client.go deleted file mode 100644 index 81c5f07b6..000000000 --- a/vendor/github.com/exoscale/egoscale/client.go +++ /dev/null @@ -1,418 +0,0 @@ -package egoscale - -import ( - "context" - "fmt" - "io/ioutil" - "log" - "net/http" - "net/http/httputil" - "os" - "reflect" - "runtime" - "strings" - "time" -) - -// UserAgent is the "User-Agent" HTTP request header added to outgoing HTTP requests. -var UserAgent = fmt.Sprintf("egoscale/%s (%s; %s/%s)", - Version, - runtime.Version(), - runtime.GOOS, - runtime.GOARCH) - -// Taggable represents a resource to which tags can be attached -// -// This is a helper to fill the resourcetype of a CreateTags call -type Taggable interface { - // ResourceType is the name of the Taggable type - ResourceType() string -} - -// Deletable represents an Interface that can be "Delete" by the client -type Deletable interface { - // Delete removes the given resource(s) or throws - Delete(context context.Context, client *Client) error -} - -// Listable represents an Interface that can be "List" by the client -type Listable interface { - // ListRequest builds the list command - ListRequest() (ListCommand, error) -} - -// Client represents the API client -type Client struct { - // HTTPClient holds the HTTP client - HTTPClient *http.Client - // Endpoint is the HTTP URL - Endpoint string - // APIKey is the API identifier - APIKey string - // apisecret is the API secret, hence non exposed - apiSecret string - // PageSize represents the default size for a paginated result - PageSize int - // Timeout represents the default timeout for the async requests - Timeout time.Duration - // Expiration representation how long a signed payload may be used - Expiration time.Duration - // RetryStrategy represents the waiting strategy for polling the async requests - RetryStrategy RetryStrategyFunc - // Logger contains any log, plug your own - Logger *log.Logger -} - -// RetryStrategyFunc represents a how much time to wait between two calls to the API -type RetryStrategyFunc func(int64) time.Duration - -// IterateItemFunc represents the callback to iterate a list of results, if false stops -type IterateItemFunc func(interface{}, error) bool - -// WaitAsyncJobResultFunc represents the callback to wait a results of an async request, if false stops -type WaitAsyncJobResultFunc func(*AsyncJobResult, error) bool - -// NewClient creates an API client with default timeout (60) -// -// Timeout is set to both the HTTP client and the client itself. -func NewClient(endpoint, apiKey, apiSecret string) *Client { - timeout := 60 * time.Second - expiration := 10 * time.Minute - - httpClient := &http.Client{ - Transport: http.DefaultTransport, - } - - client := &Client{ - HTTPClient: httpClient, - Endpoint: endpoint, - APIKey: apiKey, - apiSecret: apiSecret, - PageSize: 50, - Timeout: timeout, - Expiration: expiration, - RetryStrategy: MonotonicRetryStrategyFunc(2), - Logger: log.New(ioutil.Discard, "", 0), - } - - if prefix, ok := os.LookupEnv("EXOSCALE_TRACE"); ok { - client.Logger = log.New(os.Stderr, prefix, log.LstdFlags) - client.TraceOn() - } - - return client -} - -// Get populates the given resource or fails -func (client *Client) Get(ls Listable) (interface{}, error) { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - return client.GetWithContext(ctx, ls) -} - -// GetWithContext populates the given resource or fails -func (client *Client) GetWithContext(ctx context.Context, ls Listable) (interface{}, error) { - gs, err := client.ListWithContext(ctx, ls) - if err != nil { - return nil, err - } - - count := len(gs) - if count != 1 { - req, err := ls.ListRequest() - if err != nil { - return nil, err - } - params, err := client.Payload(req) - if err != nil { - return nil, err - } - - // removing sensitive/useless informations - params.Del("expires") - params.Del("response") - params.Del("signature") - params.Del("signatureversion") - - // formatting the query string nicely - payload := params.Encode() - payload = strings.Replace(payload, "&", ", ", -1) - - if count == 0 { - return nil, &ErrorResponse{ - CSErrorCode: ServerAPIException, - ErrorCode: ParamError, - ErrorText: fmt.Sprintf("not found, query: %s", payload), - } - } - return nil, fmt.Errorf("more than one element found: %s", payload) - } - - return gs[0], nil -} - -// Delete removes the given resource of fails -func (client *Client) Delete(g Deletable) error { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - return client.DeleteWithContext(ctx, g) -} - -// DeleteWithContext removes the given resource of fails -func (client *Client) DeleteWithContext(ctx context.Context, g Deletable) error { - return g.Delete(ctx, client) -} - -// List lists the given resource (and paginate till the end) -func (client *Client) List(g Listable) ([]interface{}, error) { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - return client.ListWithContext(ctx, g) -} - -// ListWithContext lists the given resources (and paginate till the end) -func (client *Client) ListWithContext(ctx context.Context, g Listable) (s []interface{}, err error) { - s = make([]interface{}, 0) - - defer func() { - if e := recover(); e != nil { - if g == nil || reflect.ValueOf(g).IsNil() { - err = fmt.Errorf("g Listable shouldn't be nil, got %#v", g) - return - } - - panic(e) - } - }() - - req, e := g.ListRequest() - if e != nil { - err = e - return - } - client.PaginateWithContext(ctx, req, func(item interface{}, e error) bool { - if item != nil { - s = append(s, item) - return true - } - err = e - return false - }) - - return -} - -// AsyncListWithContext lists the given resources (and paginate till the end) -// -// -// // NB: goroutine may leak if not read until the end. Create a proper context! -// ctx, cancel := context.WithCancel(context.Background()) -// defer cancel() -// -// outChan, errChan := client.AsyncListWithContext(ctx, new(egoscale.VirtualMachine)) -// -// for { -// select { -// case i, ok := <- outChan: -// if ok { -// vm := i.(egoscale.VirtualMachine) -// // ... -// } else { -// outChan = nil -// } -// case err, ok := <- errChan: -// if ok { -// // do something -// } -// // Once an error has been received, you can expect the channels to be closed. -// errChan = nil -// } -// if errChan == nil && outChan == nil { -// break -// } -// } -// -func (client *Client) AsyncListWithContext(ctx context.Context, g Listable) (<-chan interface{}, <-chan error) { - outChan := make(chan interface{}, client.PageSize) - errChan := make(chan error) - - go func() { - defer close(outChan) - defer close(errChan) - - req, err := g.ListRequest() - if err != nil { - errChan <- err - return - } - client.PaginateWithContext(ctx, req, func(item interface{}, e error) bool { - if item != nil { - outChan <- item - return true - } - errChan <- e - return false - }) - }() - - return outChan, errChan -} - -// Paginate runs the ListCommand and paginates -func (client *Client) Paginate(g Listable, callback IterateItemFunc) { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - client.PaginateWithContext(ctx, g, callback) -} - -// PaginateWithContext runs the ListCommand as long as the ctx is valid -func (client *Client) PaginateWithContext(ctx context.Context, g Listable, callback IterateItemFunc) { - req, err := g.ListRequest() - if err != nil { - callback(nil, err) - return - } - - pageSize := client.PageSize - - page := 1 - - for { - req.SetPage(page) - req.SetPageSize(pageSize) - resp, err := client.RequestWithContext(ctx, req) - if err != nil { - // in case of 431, the response is knowingly empty - if errResponse, ok := err.(*ErrorResponse); ok && page == 1 && errResponse.ErrorCode == ParamError { - break - } - - callback(nil, err) - break - } - - size := 0 - didErr := false - req.Each(resp, func(element interface{}, err error) bool { - // If the context was cancelled, kill it in flight - if e := ctx.Err(); e != nil { - element = nil - err = e - } - - if callback(element, err) { - size++ - return true - } - - didErr = true - return false - }) - - if size < pageSize || didErr { - break - } - - page++ - } -} - -// APIName returns the name of the given command -func (client *Client) APIName(command Command) string { - // This is due to a limitation of Go<=1.7 - _, ok := command.(*AuthorizeSecurityGroupEgress) - _, okPtr := command.(AuthorizeSecurityGroupEgress) - if ok || okPtr { - return "authorizeSecurityGroupEgress" - } - - info, err := info(command) - if err != nil { - panic(err) - } - return info.Name -} - -// APIDescription returns the description of the given command -func (client *Client) APIDescription(command Command) string { - info, err := info(command) - if err != nil { - return "*missing description*" - } - return info.Description -} - -// Response returns the response structure of the given command -func (client *Client) Response(command Command) interface{} { - switch c := command.(type) { - case AsyncCommand: - return c.AsyncResponse() - default: - return command.Response() - } -} - -// TraceOn activates the HTTP tracer -func (client *Client) TraceOn() { - if _, ok := client.HTTPClient.Transport.(*traceTransport); !ok { - client.HTTPClient.Transport = &traceTransport{ - transport: client.HTTPClient.Transport, - logger: client.Logger, - } - } -} - -// TraceOff deactivates the HTTP tracer -func (client *Client) TraceOff() { - if rt, ok := client.HTTPClient.Transport.(*traceTransport); ok { - client.HTTPClient.Transport = rt.transport - } -} - -// traceTransport contains the original HTTP transport to enable it to be reverted -type traceTransport struct { - transport http.RoundTripper - logger *log.Logger -} - -// RoundTrip executes a single HTTP transaction -func (t *traceTransport) RoundTrip(req *http.Request) (*http.Response, error) { - if dump, err := httputil.DumpRequest(req, true); err == nil { - t.logger.Printf("%s", dump) - } - - resp, err := t.transport.RoundTrip(req) - if err != nil { - return nil, err - } - - if dump, err := httputil.DumpResponse(resp, true); err == nil { - t.logger.Printf("%s", dump) - } - - return resp, nil -} - -// MonotonicRetryStrategyFunc returns a function that waits for n seconds for each iteration -func MonotonicRetryStrategyFunc(seconds int) RetryStrategyFunc { - return func(iteration int64) time.Duration { - return time.Duration(seconds) * time.Second - } -} - -// FibonacciRetryStrategy waits for an increasing amount of time following the Fibonacci sequence -func FibonacciRetryStrategy(iteration int64) time.Duration { - var a, b, i, tmp int64 - a = 0 - b = 1 - for i = 0; i < iteration; i++ { - tmp = a + b - a = b - b = tmp - } - return time.Duration(a) * time.Second -} diff --git a/vendor/github.com/exoscale/egoscale/cserrorcode_string.go b/vendor/github.com/exoscale/egoscale/cserrorcode_string.go deleted file mode 100644 index 4711d5425..000000000 --- a/vendor/github.com/exoscale/egoscale/cserrorcode_string.go +++ /dev/null @@ -1,47 +0,0 @@ -// Code generated by "stringer -type CSErrorCode"; DO NOT EDIT. - -package egoscale - -import "strconv" - -const _CSErrorCode_name = "CloudRuntimeExceptionExecutionExceptionHypervisorVersionChangedExceptionCloudExceptionAccountLimitExceptionAgentUnavailableExceptionCloudAuthenticationExceptionConcurrentOperationExceptionConflictingNetworkSettingsExceptionDiscoveredWithErrorExceptionHAStateExceptionInsufficientAddressCapacityExceptionInsufficientCapacityExceptionInsufficientNetworkCapacityExceptionInsufficientServerCapacityExceptionInsufficientStorageCapacityExceptionInternalErrorExceptionInvalidParameterValueExceptionManagementServerExceptionNetworkRuleConflictExceptionPermissionDeniedExceptionResourceAllocationExceptionResourceInUseExceptionResourceUnavailableExceptionStorageUnavailableExceptionUnsupportedServiceExceptionVirtualMachineMigrationExceptionAsyncCommandQueuedRequestLimitExceptionServerAPIException" - -var _CSErrorCode_map = map[CSErrorCode]string{ - 4250: _CSErrorCode_name[0:21], - 4260: _CSErrorCode_name[21:39], - 4265: _CSErrorCode_name[39:72], - 4275: _CSErrorCode_name[72:86], - 4280: _CSErrorCode_name[86:107], - 4285: _CSErrorCode_name[107:132], - 4290: _CSErrorCode_name[132:160], - 4300: _CSErrorCode_name[160:188], - 4305: _CSErrorCode_name[188:223], - 4310: _CSErrorCode_name[223:251], - 4315: _CSErrorCode_name[251:267], - 4320: _CSErrorCode_name[267:303], - 4325: _CSErrorCode_name[303:332], - 4330: _CSErrorCode_name[332:368], - 4335: _CSErrorCode_name[368:403], - 4340: _CSErrorCode_name[403:439], - 4345: _CSErrorCode_name[439:461], - 4350: _CSErrorCode_name[461:491], - 4355: _CSErrorCode_name[491:516], - 4360: _CSErrorCode_name[516:544], - 4365: _CSErrorCode_name[544:569], - 4370: _CSErrorCode_name[569:596], - 4375: _CSErrorCode_name[596:618], - 4380: _CSErrorCode_name[618:646], - 4385: _CSErrorCode_name[646:673], - 4390: _CSErrorCode_name[673:700], - 4395: _CSErrorCode_name[700:732], - 4540: _CSErrorCode_name[732:750], - 4545: _CSErrorCode_name[750:771], - 9999: _CSErrorCode_name[771:789], -} - -func (i CSErrorCode) String() string { - if str, ok := _CSErrorCode_map[i]; ok { - return str - } - return "CSErrorCode(" + strconv.FormatInt(int64(i), 10) + ")" -} diff --git a/vendor/github.com/exoscale/egoscale/dns.go b/vendor/github.com/exoscale/egoscale/dns.go deleted file mode 100644 index 3d3af4078..000000000 --- a/vendor/github.com/exoscale/egoscale/dns.go +++ /dev/null @@ -1,364 +0,0 @@ -package egoscale - -import ( - "context" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "strconv" - "strings" -) - -// DNSDomain represents a domain -type DNSDomain struct { - ID int64 `json:"id"` - Name string `json:"name"` - UnicodeName string `json:"unicode_name"` - Token string `json:"token"` - State string `json:"state"` - Language string `json:"language,omitempty"` - Lockable bool `json:"lockable"` - AutoRenew bool `json:"auto_renew"` - WhoisProtected bool `json:"whois_protected"` - RecordCount int64 `json:"record_count"` - ServiceCount int64 `json:"service_count"` - ExpiresOn string `json:"expires_on,omitempty"` - CreatedAt string `json:"created_at"` - UpdatedAt string `json:"updated_at"` -} - -// DNSDomainResponse represents a domain creation response -type DNSDomainResponse struct { - Domain *DNSDomain `json:"domain"` -} - -// DNSRecord represents a DNS record -type DNSRecord struct { - ID int64 `json:"id,omitempty"` - DomainID int64 `json:"domain_id,omitempty"` - Name string `json:"name"` - TTL int `json:"ttl,omitempty"` - CreatedAt string `json:"created_at,omitempty"` - UpdatedAt string `json:"updated_at,omitempty"` - Content string `json:"content"` - RecordType string `json:"record_type"` - Prio int `json:"prio,omitempty"` -} - -// DNSRecordResponse represents the creation of a DNS record -type DNSRecordResponse struct { - Record DNSRecord `json:"record"` -} - -// UpdateDNSRecord represents a DNS record -type UpdateDNSRecord struct { - ID int64 `json:"id,omitempty"` - DomainID int64 `json:"domain_id,omitempty"` - Name string `json:"name,omitempty"` - TTL int `json:"ttl,omitempty"` - CreatedAt string `json:"created_at,omitempty"` - UpdatedAt string `json:"updated_at,omitempty"` - Content string `json:"content,omitempty"` - RecordType string `json:"record_type,omitempty"` - Prio int `json:"prio,omitempty"` -} - -// UpdateDNSRecordResponse represents the creation of a DNS record -type UpdateDNSRecordResponse struct { - Record UpdateDNSRecord `json:"record"` -} - -// DNSErrorResponse represents an error in the API -type DNSErrorResponse struct { - Message string `json:"message,omitempty"` - Errors map[string][]string `json:"errors"` -} - -// Record represent record type -type Record int - -//go:generate stringer -type=Record -const ( - // A record type - A Record = iota - // AAAA record type - AAAA - // ALIAS record type - ALIAS - // CNAME record type - CNAME - // HINFO record type - HINFO - // MX record type - MX - // NAPTR record type - NAPTR - // NS record type - NS - // POOL record type - POOL - // SPF record type - SPF - // SRV record type - SRV - // SSHFP record type - SSHFP - // TXT record type - TXT - // URL record type - URL -) - -// Error formats the DNSerror into a string -func (req *DNSErrorResponse) Error() string { - if len(req.Errors) > 0 { - errs := []string{} - for name, ss := range req.Errors { - if len(ss) > 0 { - errs = append(errs, fmt.Sprintf("%s: %s", name, strings.Join(ss, ", "))) - } - } - return fmt.Sprintf("dns error: %s (%s)", req.Message, strings.Join(errs, "; ")) - } - return fmt.Sprintf("dns error: %s", req.Message) -} - -// CreateDomain creates a DNS domain -func (client *Client) CreateDomain(ctx context.Context, name string) (*DNSDomain, error) { - m, err := json.Marshal(DNSDomainResponse{ - Domain: &DNSDomain{ - Name: name, - }, - }) - if err != nil { - return nil, err - } - - resp, err := client.dnsRequest(ctx, "/v1/domains", nil, string(m), "POST") - if err != nil { - return nil, err - } - - var d *DNSDomainResponse - if err := json.Unmarshal(resp, &d); err != nil { - return nil, err - } - - return d.Domain, nil -} - -// GetDomain gets a DNS domain -func (client *Client) GetDomain(ctx context.Context, name string) (*DNSDomain, error) { - resp, err := client.dnsRequest(ctx, "/v1/domains/"+name, nil, "", "GET") - if err != nil { - return nil, err - } - - var d *DNSDomainResponse - if err := json.Unmarshal(resp, &d); err != nil { - return nil, err - } - - return d.Domain, nil -} - -// GetDomains gets DNS domains -func (client *Client) GetDomains(ctx context.Context) ([]DNSDomain, error) { - resp, err := client.dnsRequest(ctx, "/v1/domains", nil, "", "GET") - if err != nil { - return nil, err - } - - var d []DNSDomainResponse - if err := json.Unmarshal(resp, &d); err != nil { - return nil, err - } - - domains := make([]DNSDomain, len(d)) - for i := range d { - domains[i] = *d[i].Domain - } - return domains, nil -} - -// DeleteDomain delets a DNS domain -func (client *Client) DeleteDomain(ctx context.Context, name string) error { - _, err := client.dnsRequest(ctx, "/v1/domains/"+name, nil, "", "DELETE") - return err -} - -// GetRecord returns a DNS record -func (client *Client) GetRecord(ctx context.Context, domain string, recordID int64) (*DNSRecord, error) { - id := strconv.FormatInt(recordID, 10) - resp, err := client.dnsRequest(ctx, "/v1/domains/"+domain+"/records/"+id, nil, "", "GET") - if err != nil { - return nil, err - } - - var r DNSRecordResponse - if err = json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &(r.Record), nil -} - -// GetRecords returns the DNS records -func (client *Client) GetRecords(ctx context.Context, domain string) ([]DNSRecord, error) { - resp, err := client.dnsRequest(ctx, "/v1/domains/"+domain+"/records", nil, "", "GET") - if err != nil { - return nil, err - } - - var r []DNSRecordResponse - if err = json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - records := make([]DNSRecord, 0, len(r)) - for _, rec := range r { - records = append(records, rec.Record) - } - - return records, nil -} - -// GetRecordsWithFilters returns the DNS records (filters can be empty) -func (client *Client) GetRecordsWithFilters(ctx context.Context, domain, name, recordType string) ([]DNSRecord, error) { - - filters := url.Values{} - if name != "" { - filters.Add("name", name) - } - if recordType != "" { - filters.Add("record_type", recordType) - } - - resp, err := client.dnsRequest(ctx, "/v1/domains/"+domain+"/records", filters, "", "GET") - if err != nil { - return nil, err - } - - var r []DNSRecordResponse - if err = json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - records := make([]DNSRecord, 0, len(r)) - for _, rec := range r { - records = append(records, rec.Record) - } - - return records, nil -} - -// CreateRecord creates a DNS record -func (client *Client) CreateRecord(ctx context.Context, name string, rec DNSRecord) (*DNSRecord, error) { - body, err := json.Marshal(DNSRecordResponse{ - Record: rec, - }) - if err != nil { - return nil, err - } - - resp, err := client.dnsRequest(ctx, "/v1/domains/"+name+"/records", nil, string(body), "POST") - if err != nil { - return nil, err - } - - var r DNSRecordResponse - if err = json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &(r.Record), nil -} - -// UpdateRecord updates a DNS record -func (client *Client) UpdateRecord(ctx context.Context, name string, rec UpdateDNSRecord) (*DNSRecord, error) { - body, err := json.Marshal(UpdateDNSRecordResponse{ - Record: rec, - }) - if err != nil { - return nil, err - } - - id := strconv.FormatInt(rec.ID, 10) - resp, err := client.dnsRequest(ctx, "/v1/domains/"+name+"/records/"+id, nil, string(body), "PUT") - if err != nil { - return nil, err - } - - var r DNSRecordResponse - if err = json.Unmarshal(resp, &r); err != nil { - return nil, err - } - - return &(r.Record), nil -} - -// DeleteRecord deletes a record -func (client *Client) DeleteRecord(ctx context.Context, name string, recordID int64) error { - id := strconv.FormatInt(recordID, 10) - _, err := client.dnsRequest(ctx, "/v1/domains/"+name+"/records/"+id, nil, "", "DELETE") - - return err -} - -func (client *Client) dnsRequest(ctx context.Context, uri string, urlValues url.Values, params, method string) (json.RawMessage, error) { - rawURL := client.Endpoint + uri - url, err := url.Parse(rawURL) - if err != nil { - return nil, err - } - - q := url.Query() - for k, vs := range urlValues { - for _, v := range vs { - q.Add(k, v) - } - } - url.RawQuery = q.Encode() - - req, err := http.NewRequest(method, url.String(), strings.NewReader(params)) - if err != nil { - return nil, err - } - - var hdr = make(http.Header) - hdr.Add("X-DNS-TOKEN", client.APIKey+":"+client.apiSecret) - hdr.Add("User-Agent", UserAgent) - hdr.Add("Accept", "application/json") - if params != "" { - hdr.Add("Content-Type", "application/json") - } - req.Header = hdr - - resp, err := client.HTTPClient.Do(req.WithContext(ctx)) - if err != nil { - return nil, err - } - defer resp.Body.Close() // nolint: errcheck - - contentType := resp.Header.Get("content-type") - if !strings.Contains(contentType, "application/json") { - return nil, fmt.Errorf(`response content-type expected to be "application/json", got %q`, contentType) - } - - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - if resp.StatusCode >= 400 { - e := new(DNSErrorResponse) - if err := json.Unmarshal(b, e); err != nil { - return nil, err - } - return nil, e - } - - return b, nil -} diff --git a/vendor/github.com/exoscale/egoscale/doc.go b/vendor/github.com/exoscale/egoscale/doc.go deleted file mode 100644 index 0d9997efa..000000000 --- a/vendor/github.com/exoscale/egoscale/doc.go +++ /dev/null @@ -1,180 +0,0 @@ -/* - -Package egoscale is a mapping for the Exoscale API (https://community.exoscale.com/api/compute/). - -Requests and Responses - -To build a request, construct the adequate struct. This library expects a pointer for efficiency reasons only. The response is a struct corresponding to the data at stake. E.g. DeployVirtualMachine gives a VirtualMachine, as a pointer as well to avoid big copies. - -Then everything within the struct is not a pointer. Find below some examples of how egoscale may be used. If anything feels odd or unclear, please let us know: https://github.com/exoscale/egoscale/issues - - req := &egoscale.DeployVirtualMachine{ - Size: 10, - ServiceOfferingID: egoscale.MustParseUUID("..."), - TemplateID: egoscale.MustParseUUID("..."), - ZoneID: egoscale.MastParseUUID("..."), - } - - fmt.Println("Deployment started") - resp, err := cs.Request(req) - if err != nil { - panic(err) - } - - vm := resp.(*egoscale.VirtualMachine) - fmt.Printf("Virtual Machine ID: %s\n", vm.ID) - -This example deploys a virtual machine while controlling the job status as it goes. It enables a finer control over errors, e.g. HTTP timeout, and eventually a way to kill it of (from the client side). - - req := &egoscale.DeployVirtualMachine{ - Size: 10, - ServiceOfferingID: egoscale.MustParseUUID("..."), - TemplateID: egoscale.MustParseUUID("..."), - ZoneID: egoscale.MustParseUUID("..."), - } - vm := &egoscale.VirtualMachine{} - - fmt.Println("Deployment started") - cs.AsyncRequest(req, func(jobResult *egoscale.AsyncJobResult, err error) bool { - if err != nil { - // any kind of error - panic(err) - } - - // Keep waiting - if jobResult.JobStatus == egoscale.Pending { - fmt.Println("wait...") - return true - } - - // Unmarshal the response into the response struct - if err := jobResult.Response(vm); err != nil { - // JSON unmarshaling error - panic(err) - } - - // Stop waiting - return false - }) - - fmt.Printf("Virtual Machine ID: %s\n", vm.ID) - -Debugging and traces - -As this library is mostly an HTTP client, you can reuse all the existing tools around it. - - cs := egoscale.NewClient("https://api.exoscale.com/compute", "EXO...", "...") - // sets a logger on stderr - cs.Logger = log.New(os.Stderr, "prefix", log.LstdFlags) - // activates the HTTP traces - cs.TraceOn() - -Nota bene: when running the tests or the egoscale library via another tool, e.g. the exo cli, the environment variable EXOSCALE_TRACE=prefix does the above configuration for you. As a developer using egoscale as a library, you'll find it more convenient to plug your favorite io.Writer as it's a Logger. - - -APIs - -All the available APIs on the server and provided by the API Discovery plugin. - - cs := egoscale.NewClient("https://api.exoscale.com/compute", "EXO...", "...") - - resp, err := cs.Request(&egoscale.ListAPIs{}) - if err != nil { - panic(err) - } - - for _, api := range resp.(*egoscale.ListAPIsResponse).API { - fmt.Printf("%s %s\n", api.Name, api.Description) - } - // Output: - // listNetworks Lists all available networks - // ... - -Security Groups - -Security Groups provide a way to isolate traffic to VMs. Rules are added via the two Authorization commands. - - resp, err := cs.Request(&egoscale.CreateSecurityGroup{ - Name: "Load balancer", - Description: "Open HTTP/HTTPS ports from the outside world", - }) - securityGroup := resp.(*egoscale.SecurityGroup) - - resp, err = cs.Request(&egoscale.AuthorizeSecurityGroupIngress{ - Description: "SSH traffic", - SecurityGroupID: securityGroup.ID, - CidrList: []CIDR{ - *egoscale.MustParseCIDR("0.0.0.0/0"), - *egoscale.MustParseCIDR("::/0"), - }, - Protocol: "tcp", - StartPort: 22, - EndPort: 22, - }) - // The modified SecurityGroup is returned - securityGroup := resp.(*egoscale.SecurityGroup) - - // ... - err = client.BooleanRequest(&egoscale.DeleteSecurityGroup{ - ID: securityGroup.ID, - }) - // ... - -Security Group also implement the generic List, Get and Delete interfaces (Listable and Deletable). - - // List all Security Groups - sgs, _ := cs.List(&egoscale.SecurityGroup{}) - for _, s := range sgs { - sg := s.(egoscale.SecurityGroup) - // ... - } - - // Get a Security Group - sgQuery := &egoscale.SecurityGroup{Name: "Load balancer"} - resp, err := cs.Get(sgQuery); err != nil { - ... - } - sg := resp.(*egoscale.SecurityGroup) - - if err := cs.Delete(sg); err != nil { - ... - } - // The SecurityGroup has been deleted - -See: https://community.exoscale.com/documentation/compute/security-groups/ - -Zones - -A Zone corresponds to a Data Center. You may list them. Zone implements the Listable interface, which let you perform a list in two different ways. The first exposes the underlying request while the second one hide them and you only manipulate the structs of your interest. - - // Using ListZones request - req := &egoscale.ListZones{} - resp, err := client.Request(req) - if err != nil { - panic(err) - } - - for _, zone := range resp.(*egoscale.ListZonesResponse) { - ... - } - - // Using client.List - zone := &egoscale.Zone{} - zones, err := client.List(zone) - if err != nil { - panic(err) - } - - for _, z := range zones { - zone := z.(egoscale.Zone) - ... - } - -Elastic IPs - -An Elastic IP is a way to attach an IP address to many Virtual Machines. The API side of the story configures the external environment, like the routing. Some work is required within the machine to properly configure the interfaces. - -See: https://community.exoscale.com/documentation/compute/eip/ - -*/ -package egoscale diff --git a/vendor/github.com/exoscale/egoscale/errorcode_string.go b/vendor/github.com/exoscale/egoscale/errorcode_string.go deleted file mode 100644 index 19711257e..000000000 --- a/vendor/github.com/exoscale/egoscale/errorcode_string.go +++ /dev/null @@ -1,37 +0,0 @@ -// Code generated by "stringer -type ErrorCode"; DO NOT EDIT. - -package egoscale - -import "strconv" - -const ( - _ErrorCode_name_0 = "Unauthorized" - _ErrorCode_name_1 = "MethodNotAllowed" - _ErrorCode_name_2 = "UnsupportedActionError" - _ErrorCode_name_3 = "APILimitExceededMalformedParameterErrorParamError" - _ErrorCode_name_4 = "InternalErrorAccountErrorAccountResourceLimitErrorInsufficientCapacityErrorResourceUnavailableErrorResourceAllocationErrorResourceInUseErrorNetworkRuleConflictError" -) - -var ( - _ErrorCode_index_3 = [...]uint8{0, 16, 39, 49} - _ErrorCode_index_4 = [...]uint8{0, 13, 25, 50, 75, 99, 122, 140, 164} -) - -func (i ErrorCode) String() string { - switch { - case i == 401: - return _ErrorCode_name_0 - case i == 405: - return _ErrorCode_name_1 - case i == 422: - return _ErrorCode_name_2 - case 429 <= i && i <= 431: - i -= 429 - return _ErrorCode_name_3[_ErrorCode_index_3[i]:_ErrorCode_index_3[i+1]] - case 530 <= i && i <= 537: - i -= 530 - return _ErrorCode_name_4[_ErrorCode_index_4[i]:_ErrorCode_index_4[i+1]] - default: - return "ErrorCode(" + strconv.FormatInt(int64(i), 10) + ")" - } -} diff --git a/vendor/github.com/exoscale/egoscale/events.go b/vendor/github.com/exoscale/egoscale/events.go deleted file mode 100644 index c6adbfd69..000000000 --- a/vendor/github.com/exoscale/egoscale/events.go +++ /dev/null @@ -1,76 +0,0 @@ -package egoscale - -// Event represents an event in the system -type Event struct { - Account string `json:"account,omitempty" doc:"the account name for the account that owns the object being acted on in the event (e.g. the owner of the virtual machine, ip address, or security group)"` - Created string `json:"created,omitempty" doc:"the date the event was created"` - Description string `json:"description,omitempty" doc:"a brief description of the event"` - ID *UUID `json:"id" doc:"the ID of the event"` - Level string `json:"level,omitempty" doc:"the event level (INFO, WARN, ERROR)"` - ParentID *UUID `json:"parentid,omitempty" doc:"whether the event is parented"` - State string `json:"state,omitempty" doc:"the state of the event"` - Type string `json:"type,omitempty" doc:"the type of the event (see event types)"` - UserName string `json:"username,omitempty" doc:"the name of the user who performed the action (can be different from the account if an admin is performing an action for a user, e.g. starting/stopping a user's virtual machine)"` -} - -// ListRequest builds the ListEvents request -func (event Event) ListRequest() (ListCommand, error) { - req := &ListEvents{ - ID: event.ID, - Level: event.Level, - Type: event.Type, - } - - return req, nil -} - -// EventType represent a type of event -type EventType struct { - Name string `json:"name,omitempty" doc:"Event Type"` -} - -// ListRequest builds the ListEventTypes request -func (EventType) ListRequest() (ListCommand, error) { - req := &ListEventTypes{} - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListEvents - -// ListEvents list the events -type ListEvents struct { - Duration int `json:"duration,omitempty" doc:"the duration of the event"` - EndDate string `json:"enddate,omitempty" doc:"the end date range of the list you want to retrieve (use format \"yyyy-MM-dd\" or the new format \"yyyy-MM-dd HH:mm:ss\")"` - EntryTime int `json:"entrytime,omitempty" doc:"the time the event was entered"` - ID *UUID `json:"id,omitempty" doc:"the ID of the event"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Level string `json:"level,omitempty" doc:"the event level (INFO, WARN, ERROR)"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - StartDate string `json:"startdate,omitempty" doc:"the start date range of the list you want to retrieve (use format \"yyyy-MM-dd\" or the new format \"yyyy-MM-dd HH:mm:ss\")"` - Type string `json:"type,omitempty" doc:"the event type (see event types)"` - _ bool `name:"listEvents" description:"A command to list events."` -} - -// ListEventsResponse represents a response of a list query -type ListEventsResponse struct { - Count int `json:"count"` - Event []Event `json:"event"` -} - -//go:generate go run generate/main.go -interface=Listable ListEventTypes - -// ListEventTypes list the event types -type ListEventTypes struct { - Page int `json:"page,omitempty"` // fake - PageSize int `json:"pagesize,omitempty"` // fake - _ bool `name:"listEventTypes" description:"List Event Types"` -} - -// ListEventTypesResponse represents a response of a list query -type ListEventTypesResponse struct { - Count int `json:"count"` - EventType []EventType `json:"eventtype"` - _ bool `name:"listEventTypes" description:"List Event Types"` -} diff --git a/vendor/github.com/exoscale/egoscale/events_response.go b/vendor/github.com/exoscale/egoscale/events_response.go deleted file mode 100644 index 2af10cf45..000000000 --- a/vendor/github.com/exoscale/egoscale/events_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListEvents) Response() interface{} { - return new(ListEventsResponse) -} - -// ListRequest returns itself -func (ls *ListEvents) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListEvents) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListEvents) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListEvents) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListEventsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListEventsResponse was expected, got %T", resp)) - return - } - - for i := range items.Event { - if !callback(&items.Event[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/eventtypes_response.go b/vendor/github.com/exoscale/egoscale/eventtypes_response.go deleted file mode 100644 index 073d9648f..000000000 --- a/vendor/github.com/exoscale/egoscale/eventtypes_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListEventTypes) Response() interface{} { - return new(ListEventTypesResponse) -} - -// ListRequest returns itself -func (ls *ListEventTypes) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListEventTypes) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListEventTypes) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListEventTypes) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListEventTypesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListEventTypesResponse was expected, got %T", resp)) - return - } - - for i := range items.EventType { - if !callback(&items.EventType[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/go.mod b/vendor/github.com/exoscale/egoscale/go.mod deleted file mode 100644 index c31a038a2..000000000 --- a/vendor/github.com/exoscale/egoscale/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/exoscale/egoscale - -require github.com/gofrs/uuid v3.2.0+incompatible diff --git a/vendor/github.com/exoscale/egoscale/go.sum b/vendor/github.com/exoscale/egoscale/go.sum deleted file mode 100644 index f27a0746d..000000000 --- a/vendor/github.com/exoscale/egoscale/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= diff --git a/vendor/github.com/exoscale/egoscale/gopher.png b/vendor/github.com/exoscale/egoscale/gopher.png deleted file mode 100644 index 16420a6182749705d4fbf20d89baecfa266aaad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63065 zcmdpd1y@{6ur2QH4hfpz?hu^d6Br=4ySuw<5`qV}1b2tQ-3b!hZGgdD?j+y6??=1^ zvsj#S=ssP&YuB#oB3eyF4ik+G4F(1V^P{}zf3&g#{JypI z1}+9sB8H~p9p#KXO~;DR<)bOvmz5QAIJz%km)_alDBKWx?#qc=(S1>fAPq{$|Bv5{ z?_z$yNeFEEbC4gvW58?$*>}0n5HG?WxMUzm;2`Af;vu)g9Aid#oHgR7!DFPT)Bm*t zYm!|qN8A@=N5U=^LG!@>>93bjG_(VZ4{O==9TPl&{bE=fP8>kk_VN(3GC7(ZdD0Xk{ zbgnpu>|H<5Hm&CCj_s-CcVamW9TFhq@i7P@hB&QwQIKf*%2_C&<%m2JoY&OkF6d+x zgX73JF+dBWA-l{W>x`&Oa4Ey@2oW}6O8+jGjSh}@el3p)Z9(7dO_q@RPv$-3Gp`oU z`FK6IJ<@JDf(^~CcO^iauqA9H37m|a*kCQ#Z2bh3bGd2oizgm09+%2_SfWhO5fO0RBm@HJ z;5tG)*MwXde*dPp=|^+AdAEHyUn6yvC$NDg*bzb#m5bhU{w6&4s=^crlTJ+Rw0iy? zc7~fmKgPdq1zjxI>9@628pki z|3(U#68S;hZhDm)9N#zrJH=D`cx9mt66==B4;prXdH{|DaoFB|xzL_Zn+M&%0L6XV z@8;%5PY~u>nUPsSY|1PP%G-kw8Xjug4}K?+{pj;z)$>Y3$9;gO^(P%01r{+?T~1E zNy_y1B|13LQ-~5)Vo38ZiE}1J>Y96B5&ICQ1({Q%a2R@2)B18|^7|eEbAf zno}4t!=I9@@2B)t+WsOUWU9Uo2_pZ|>aE1>Bk6pT>Q7qhAfQUefA`#em*syWpkC); z^91Eo>bK1=+jFIVgUi4^=9E=H z|Bb<;Erse+&fR*5unH*&ylq{o_|SJ)AZJhnrjjuP$yWX^oDhh7Ixx6!adDMzQ8P5z zOMC$zQO`L!Q)};2d5S#6TmD0452p!gl#f0|LUG*`Z~U>x3HW49>l0e*3rA3PomOSo zzbTzC(j?J*)bqh^Cu)XMp2Rx^;0N=EJ>Fpjix@rBf7`W5@~D}`d!V2m7*aefRuItt zd!-{hczc8r=3&6yh4+8WcA)G2kUD3Bc*XFH6WbDyms+wO5Xsu+89K}ZT&|w@b#+Xu zCG`(t0t(+ZUd;K@Gj%4NTlC*xc*f6Gwnsca-deuLy>WJV_uqgF^;4`w>azhM{XK*0 z0n`_2D%}Q^E&B$@4hwYtlUQ|nSpU7;!E~tdO>x~T;gbWur|66HB7-4|_7L}LIyWNF zeWVB{tT8ce1u@Ti3T|1#FQ6jYry@P3mTTgv=sBxxuyMe*OMsGsR^t5QOjLSy^ z2^J{E6J`=BX%EC+Ytj!bxTWRly!z2pKsQ32`mM*+?4KK)@n3y>Cq!X1>*Ch`!&E`d z)U!LQ8+F=PZfP!$vdV+MZ|LS2qgqQv!Fm-D~`^HiX-=C0?eMR;?d^eHa12>E0{ing3OSF3IwPTAnGri zKk}{^unQt0+O4$4=ge2_gZmYk%6?)z8gouhmp^QXZvB{6YJX@d*9N_59(FPMsYe72 zBN75!La@S|aNA@n8o;>0Ov$b0eoRh;kpe}um{1B!`CSjEs zHL8!3kv$s3p9vnP^dN_N=>2|dR4^|bxnrnHqY%bXHx<59eG--2{7jK+p=&) zi`9W2lOPna3+xT77N!5ZzSj@+2f$bE$Lz4Ls)($n&3oY796@Sol6rM&i2oxK8*@Q^ zX$)BtISddOUA-Kg82yIzUG&7~bh`e2T(H|W5@N;gv)11YuOG1=Wm2kiCx;Z-2DO?h zkgJEy@xmG-S(FIFinn=;q|YXFEhjeW&$qjP%#hZZp&GYp-arJ!$ySf!uI9YZdy9`* z*GHNgCPoQ*Y!X(wLqcv6R;}IVjzMWl!oHTCo2R-KbA*@hlB;PaBvH}v<~?VdKd+Io z1HX*Y|6{B*p7-N;vw3mh*I#yxUtGRrtpWeqd4v#$~#+V!~pqfs$SIQN*`AEE&i z9j$H-zx_O2QGH%vpFhUMVv3o-sU#~h{2T1|{?P^{_oO&--LRVpC^_G0{?0k?;aR@L z>_4MD2WZIg3Y(ctF$zES1#(xVzB3*Co#dU{rpNc+JZ#rW8&D&;O^gVguaE6R1DQl# z0v(LA%i({nDiv30`tlyFqpl7>OTqY(c_@U7dM>?q(k*9#l5zPTuc~-F%pYpRNWN07 zc2zaRIhI(v*=SAb;=oFe6yg5^0oFAAq9o*dI;sykuA4sNyUuLSRW$9L8PtE=87YrO zbhUHmRnYl)RLza$y5IyDaxsqnZv``nNAFv|j>$N_i>XxGc0q<*!Hc!H{kJ&nd%Ev3 zesI1mBQe+HA-An?nKb`dSW<5A|JttJgo6xMMaQuZ6N4NUDP z!Vjcs2n0wk5V+Fd_qlkztL!L$-@je}E$9aMT5n-^y(zJC1eL%oDLOyjU(auuk{~rX z+@^-!C{H+;Dwvhr3b_#W7c8vm&Z4OIBm7o2_72=~@OYPwQNfDXza_DTS9DdwzfQYl zWeK*#S9!1f)~?vu+u^vmNVi*0!Y>V{!Z|DYAlF5;SU!Fgj|ZolsPl+5wy6ah8-yL4 z_|@D0@1};~4?PIk`~uspG-CeVrpV7{@)9*zdwo)5Yk5}1Y($X#vEk}rgoBH&glz|d z9<&h5&arYm=i>WsGbq?okkKF5g*_=jLI;}6cYb4!#<;4J-jS-H$Ig3kbzrv{+#Es% zH4o*JaxI#Jp3x=zWpGtce;1d|)JVX;=^KZ!yMY1~W-XnGkhWB96>^m$e0v ztF6)UrS|lg(o&@H3t46p6EwGDq;yJ}0!q3fDHARM({3}Ys1_R~=7ZLn`{w~oeb`5| zJPvFZ&z@|`YI|-1LW8TkQ+h^4C8kFjg<%b4S{Om?bp1$W5uq0_?(5i1xU%C_GJt1 zG*+lJ5XE0nMgxO*#U&=NhW>cdL2llhaYZP0N;^pWr+$oR&RkC@OX5ie+KF=pf2VB- zBn>Z)SyXGE9WPH_xP$MUuWeE)4Mr>5MLhQQ!gWJ56U*2I5EeEX$ z#b7I)?Xt#rGL9hP(@fdquVbjW%z5mE`jHpX2lZjA6539Da6O-lppHm5;JRgF!~^2pSZI=AH&(%dReq zjf|0o9>;W`p9eq1HGn`UGD)UE;(_fKXb}k%us~o0)4bzYnxaLu)$WK;o2sBA8A$Bz zeG6}Pio2|`MfD#{#pepk&E-iNPvYMil&8tULCZmo@Ne1wQ4R&}zEN|)iTn38yKe9$ z-yyO&9i!_&+Vl@DHYj;0Xx0jo8 z(VX3p-!4+9wNh)c@UYxWt|KlOcYqaxEQ9%X=L!DGcLBV&oGYiI8QbHtNlEDe1BZHE zdxvh2sjn!Jlx5={R)4fjtN%oS#nWbDVnW*}h`70_eSS2lbbNQI2xq_6B%t-G%Ewsq zMKtica#Ba6GQ#J8r=2UOssF6xf`*Xy@o`ouPUJu?{Eu1BX7zSl9G#$8Fe+_?>uB7l z_e9E`u|m3IK4ylb!y#6iI?`3}Zf4Oa*6D>cS%E3#4pz>G8XN0-%g?}W zD%jq^-Xi`F!0^o&&$b@@B#n)SAlN!0)F1eLlEes`9P{_%B;W$_w3}u6`{@$Nv@AWFt~4tB9NAti z9p%athKiYRNHKN!x{#~LEAKimWd|J*sQS{#rgs_%|5|RSM;;)AM*`Cae@Id!hdl%G z^^CZMD7JG)TwWn#_OewK09_3Q=mQFoBSl*bb{gtf!%1WxjziWZS;m+TM86BF@Ib9fGX|I|F z#|B?=r2OKQS90S)6!(i2eVczOa*K*3G8>$_{u*QpX=$2x(PewU6n?$Hpl(&FKdL`u zNcw7VGhw^2-!D7RHf7bt6NkVXGIa#lB|wpsKPDMAsYF^EWV*cPbpo39QEYq_UyE6_ zKriHIZm!V(iIif zFH)1I{*Z3MqC7fz-OIecs&33n7f2-E!rzP$?|My<9IV{b@fi5Ichf9FjQE$*{rlkX zIrR=RgX=iCI(dIup*l}>pevCf&z6t{A2ihHR6L#bSYtAJTf-6^-{pmZchg@TrW3EK z>${mNz+dKY#SGyW)*Pe<76#*LK5dHTcDP~xdqJ_UT@_uaB$d~wk-id-7|j=wUgy+j zhql#srfIjNaU>dsO@o-EN;ZQD%5`Jqq=^2~uK_qM0DgFAZ{oMUm zJE1SV;nHwiw{bgLrp2zrfWM|giw7E%I-EF}a)z<;S#F2-GdK_?$-akKd*TKh6a_ zbL$ARk)_J>tpND@IqULj08CkO=V~qZsC_~4JX=55ebt^sAGr)O;Fi(r3R7MlYi!u4!avU!)GK!cyHXAi%uJfywD{nmYC zq{oj25ghTVAWUrD}A;@Q3dda;Mow5!nv70guy#B z!zu9ftny2>#dTePX@`7{&Lz#=SN#u%qbuZ~nKRo--O=fc`$!7AWX=jQ6^Oh&J88S} z{4sv$mK+i+OvSfyetn2g4lk?7j}K*%Jnus!5oABCzA&3FILKQ12)3OOB{^_ySp{s< zdDanFzn#$qC@S{ttjP|CG0T$!@0|r4hw_%TH}UK0Dg6wZA2hvOu-IGjO?S&vyRlm7(wk+;e&FKZJ zO1>J9I9xL@FYv}xcerL;}$r7rFj1&Ir;oQbiUxdrWuVGy%e z_Q>NtAyu?~i~n17VGYIYa@Yt_L*6#s+$%F4#3SLVKBR8*VD3XAZPxXKIEdb4qt6 zDDG$FsIsz6gVcQ4!#q;akSG*+)RCJ`n{5l7_9sew2@EYO1~N~Co8~08o(a?#O?}gq}YdGbbqQdaa{Mm-kyL#UX9XBY-+6|n%#`O=DQ}3 z5*lma8Z{s-@i=Cbq-;6YdR<{k*;HD~$PQXNEyrlS_E~K2iV{W{ErE0)_8Px1;!F=T zC|&jzEp(eYM%Z$qYGY{^#iIRXc&`UI5L|&IUz;;Sc_#Mr1MJ-3A^9PPpV4zybCcNf*wF6U zOz1X?1yQBm=Y?nE@JdQs%m_WFHNk2Rv6TQ(Y1uIEs@F~oP!5tftJU(?Glx{b@7)&c zH>}JWu?bxwae8O}^pk`LYP(X@!%hrZP6w9i%Us&*fUgKEUz)%G)6%ERXLIxR+g&|c zj7}NdA42PF&%Y+v$_Q(P0iO1q=q9Gn5Y*d)ohz5h0cm=%yxYd`I#3lBn5S#|h2#|qHn zU~-xE+3ZD%w*?`h9pBpH5%ZJ8uhRi6@iBD?ThIbl1FV`B_O}-(g5()$>ynLE!hJcXnOMl2 zcdPv&Pf<(2@!QuIkHZlh`w_)>6t5=oh&bzlrc$i001gkXavivE?{3T=T^ezBi5)Wy z;T9)bE@)vyvV0uG1vs*l$9#8Z^a9)8Qx;+yPlJwe=!Io5$%Z0TMO8kTm^}AE20xE6 zzi0N|+12{{Irjo1lcyF%(%pXx%Ts$KpaWqbXby0b;@yeZ4qF)|w^y=8L!epx(~Sw|L^UI*0_Qa5)KswGR!O>4~k^sg+9 zK=K&kLa1<5C0QhoxC;GA*F}uuAs!!_%inA1x_O+A$zP{iK{wFva{m3Dp4c_Z!_}!d z#gxr+T5oz^sgKp=0-INFjHG7<LRK%rA4@KRS_|E zgDOZ`Kxi)({vcVn?L-a+D(MGhZmhJi2=o{1z+nDY;$r37&a+g;yw~c+!w}DfuIHw% zR7kjx4%!%u7^X;U5k?s_%GL|{z=Dw35b$)CQ~A?r*an8&#e7io{Mdd7eGRp(pB5nT z)2gLTsR$9K4w)lY8M{4MLal70C{_u%GINsV-7vO_V2oQwRs|u|Swvdn?}iD#!V>GD z0txMpQOiQs(F3y(b0$#ddf@fY+SwETsxd3fv|#xSzm3Tc`vrKPfc=Fe4pu+_fH0h? zEUP|E;8VV7bYfJ`p%adAjj^V3nlb~lKurZoRcOkb$#{PQOit3$Q8ES!>U70d90~;} z_g2{+$Q?d3EXR2tfY~D1DB}o98So<+E>5bC<-Bf`y&&AQSQFd!KB}%XYzci{X=1!* z{&+y3vf4=Q0;;$bk18b5$?fTp?*)=rA26^rRpz5Yc@{_vy zJ0>O+Zx$h;jF=cc<6iqNFrtsJ-UAy&7 zJ~|rSSGvNgxhw23_-8YGQ}ZW99)kYr3?6adZqZK4iKXYcm#10eO~e( z!>$Mprm!NeBRQc}B~VaMn`-qJWK1xhLr6M*?**^%lAaH|ULd2iaC{M(J*skOBqZq8 z5YxRL>5g?k0UKIDbFAp=>(llV0~r8;q&KK3DJil60RgrTpBIb^?N4kMOX9cdEByuO z+lZx>%#-%w=s8C|N=ox+w$ake`#d|{6m&i&2W>1Y@rawxB_CIn8U+Fog=5k0jh7iZ zAKfX*(QYXISPeL6gH0o#8A|R#S5Wn%K(nTSr<6l*O+-gCfeRW94HrVwMt6P;Mvw28NhcUPj#xZ3@z^!zs3N>D)!gxmP}2`8sC5qj;5$6`=6hK`9TpY5{>xb3@%P4KG{dPJ{4jWHzncr09w5NWFv93OrMq zYCx|G1Fw@|C)O7Xk>4TytRW~5!xFNxI&wguBOC*)Xy)CCVvu?3MBwe|xbG@>u3?a> zEos@|@iF?Lr3ALgly1c8i}kY{SH-$hgy(_6lTf=;nKWgaTV3p!%f52pHVA2F|YXO zj$%w!9;=@4voV)FbKoo}Ayppbv%amB1x#;Q-yT$a|Nfoe=5*Ef!3>K(`5E@rK$@SbnZd9J<=&9y)ggZ?D2k<~&w)jsJ?q+H2t1!w+ zdtMD9ksYuWwp`;7co@4lKB^#I(#Yh2@|pDAvdm~y032YU)_k=hFad0vgl>WL!`8QN zAz8eF2x`fu&zoHqE9)9FA5mP`W=iQ&V^|c%>A4PT1&|3R^GE zZUMCbvYX>*S%fx|tsSS<_iCR}X9JKgJF#aip3kmvUT(`|A zVOT^&L^HF(>rVu`tTKQH-ib6}we@ z_KEdUAnBuiIg`Te07}c?c7AC)-cdmFPUi}?W64*xO#OIb|6V7xcPv#gd_#qgU@w-ul;3}SRUnvKN&6o0W zo||J_0I`JQo5GS3DDwpx)wd}DzUN`umWNb=we7GTu&9QooGqt175RUhqb?pN=xDYi zlnuzpSaS*rH`UslHS{d1x5M7#wZxrlbwKG-)hel22T7G56FLi$1~cI*E0Zg+U8+m#hS}U5Wv36s}UCx6-{mzp^XO0 z%4R471k?e)ErY*rKY`KQ^m9(n?}&+rPVG;BNkAbv1ZDX^qVM1y%3JRafwu*RqFxBJ zDw&e&-34mOL@Sl={lutSHO1$C<})#s#tfSc>^T{IQrbCQ>6wA-)jD5uH9G3V=D$xH zPw7Sd5MK%A-`UyeAR_silmohz4>V!l_#Agpd@UapxA!n@>2zCYy=d1sUvpeu^x2Gv zeA&hG;%Teu&ShHx>WN~jW+LCmxTNMgO#m<@r9>SQ@(bfC!A)A4nqmez zI;X_M?I=F6G_ZzBnqqS<>UtRjSmM_2@&$)xc~4RmcgN@&CZ zP>WfOYCcS;G(QSyw+IxnnIIG!Bz`rnq=H650wN+R4zW|XT_UpdvyT9bs{DoRfo+fN z>t+Cuu&zJG=F_x0C1^5oVY}as)3jl^<_`t3;R4Fb$+hOHo|@Ww%^;MAXj)cQ%%qPW z)d+S?jWm8HY?M|OPkxzRxnCS5fH2$5@TRvGZ^x-_w5h(1mZ`2p&e;gBJU+VX2Uge4 zcp91&%8ZVW+m8+E;X7P8YAUbzKOjDN&p2{4^}i)!?Q_WidGmq-Au<81W5RaGRAM*= z0T@1JO`EPJ5oL}MT5G7TE2PMd6OlJr%PA#8K={BHO21d{W};ZQP{>Rxk{nt~i|inSaNhROKFzbFM&|v%(re0FjDw{BO#uk>CM&B5^iQutg1yozf;h^fB9|I z7ROWkoQ(bv4WL}i@JiKMxfvBz%n^vqF6M(R%vaHCQ%AMO``|7p=soEPS<4w2ncLY3 zv$H^^LU7ns8<-7sQ&8GGcdarz`r^D%nnIrcnN^*e>1@6ha<_n;Q^)2>JQo?Q+H8cj z;=+n?1b-tRC*5O@$|&-}^t4N@Mrh*=>V>@(MaM6u^38rFx(w5dvw8uoJ80OT+duD_ zXxQp%+T-cCkMP%0<@}Gl7pumYC!zcBOAR+vZpug)G_%+ zb;3^4(!p?`O2huA#Jy_kaV~{ev>NRS%ss3r9(x@JhnH8MtAoB`<>jJv>NY7wD;7dR zSsT@o*?V!BUy#;M1c-8GJPT{*Fbs91Md>WsGJv!Dc4^r`j*H*Ji?mtgI!}~DWxVAL zl}saMCEP-uk2kDkCZ@ulG&RXq`a%GQhZ$<29hZ-o+ga&NT=lN1rtdPQ+7HOA$o!Yx zH)FcDNmeSk4aV1vg42|BH{x$MOXiGtC8|1usn#?xH2LF5kV1WWwa_J_S|^d$17Qix zIXu2Oqc?^BqNyVtP>v|%(Y{drX>P9)S5(Ls+56HlxlhZ@?f<>Blsa^#BCqMjyTeO_ zDk4ER^wM%|NHFy^;iY%L#8p~N|MN#>cS5n8Tcew%4a_dcB|u$2ysR~5u~|AIE>rq7 z&$L?b?Vt7=OC<|+smWT`{DOkcrA~iU2MY_b-QDDw+kQ#$04Q{nfdtpvQ}Zp6?}!b? zo4MJ$a7o>NH#8&?0D*u1`sI3IxmtS+Q?yU7wK6L+DM`Faw~6iPVsw6KP}7Jm`RCyH z_QY1rrA5Ai&>(({>SbM7^OsC9uW)ugo_3dEo8W|#%|m2p4-728k=Yn4c+7=%BA9a1 z1mzJcIPiI42)U{uSp-F>To<-U4~hPF=9UgI_91hYqUFN>bSK@1}`eEZv zt8C$`OX+ON*}DBKjbPKwoB{ zHS7MP=3LKXTfe!q%t>07668<`HuE@^)UjaHWYrI<4A)s2r=z~p#TTKG`WpIT&3wu>FCJA8jp+->KY4$npbOoOW6y>cbz3}03_T9VW zccRG7_g`u>yjROd{@~uw3*UCFKsLs2C0u)>BuKvES1i(2WEibD3AodZ-7`rCwJpFa zf+FL~jK}&KH}j`>Og}H5sptAS-rZb&X*uaIV4s_l%?<9|%q?yIz9uEhxm_%7>M6bD z+*YkqA>H4{tLt7554c4A_)A(^w#IlD@Ap)MY)EBYL4Ll8jETwHxw(8Wbibu#!ku0F z`ve?e9+1&n+ln(j?&~X<*a#g6wHD*z?uxvjM{w6?d_zy^D@~BOz=BO`R0>wp*5>&Q zS>TfTya#%^H*`}_Nov@wD1x>uo#O(OPWVI0BH}F7jj`@`>Aj@JK0ojl+}vrQZ>(2I z`qkI0j2DuPZt60h)NNc?pIu|C)rp%AxM zf}8amMn*?Sc+XiX+s*mrk|RrVWTXXa1S!VX7Tom!@5_v63a zgDy|P;4cW3#*tyUpo$`U!%iVCV_GlRf(u!QK0e7JFebd1d z<#L_IsQeH;Xnycf(&hac5}bj%axZCS*HTV^(PTn}+3k^>GH@5bI(+Tj;Wl(S9FaWA z^nOTCpou!HrM-PC@a>-5Vf|P2DS_JBna5zR#M}_1*5a>oMdZY;I-1Bl z71ju=W_+eK+SAkL&3e$rp23rWrJ&?IYqFSpm;Jf@tzW+i+w;HG)?WCW_g7T2rTQX!Ysm z)yGIJY=YQ(lj^!p(3X{W)6+cqua!FP6zqaa6S}1ZO}#d$Z_iE!T{+T~+^7XYd|$7r zM{bCD(>RLXbpO%%K1rFH^-)Q3h@~D;ET_yr;3eSK1s##k<))jgrv|~ULKl%8uVp=0 zDe*-rL=PauP=^>h?lI;dnz`D&a{JmF+BCKi>uEq=XG)CsY33IbtAmp_H04iIV)(?h zRCBlN4Gn|8ZIkdQN5AR5sAx*oMtPGD*wk`(Z^&1Ya#2<7SsDTn>E||+ya-MrJ;lTK z*Esf8?KPv^f>wtCggXMbbS2&Hsa@>L#-leJb@J$YJ;l6JEy#t1P4UgRGMwet&Xyle z9hgS=zn%V`_0PgA3ou!egKS(rM8&Jp2r*PnTo$yJhA_Uk(4K!BUOdL~urnB)s!4Jh z7@(fx;@4mJsHCzxSS8-Q?Gfp+ZX1(7!OC9sJqB8W8JBZ&bJLOmurdC0sIEa0$*lB8 zn)4=MiV0cYr`;l1D99YMxbT4N{Q6TDZKC=q+f8JhRQ8t%#|sH6m#ci zpvTKgF*+6z5>k9$tsUnaR+{0|X2UeL9$K2gw7Txpd3RK*VBmEurpJ4oW5%xU2Vdd= zVK)ij%Cp_L{sMKgxn5P%Zsps{?eRcUHO+k_Lrr~n@yejV>_~3*$goq6OP#y(!Jx?z z$Us4Uv)7J8R4nS{cFe`*OQx{~ zQTr9i@fy-xazt~}-cd*l8vbOsOxtEmW*n>{ie9CSo3a#uAm+lAX=K^;%=;72VBnpl z^5AZ%*dBe$#A35kwhTT~^bB|6+7SWSrN|UvQ+^nm>*l3byj#qhW811hDQjok^XPXH zt}3#eb?`FSY6N<7Krc}TXd&UD``!-G(oST$#<>}u*0OAMVqV#nlrMmbs)=07ofn#x zISgf_W+&VsJon$^KO7O~u8v6D0)4PBQn%$_XuOWd%X z1c0E?K}T^nn0LE1A-^;(nHE_RvKz=aqnIG2KL16zoOC}lMN!c+!Rwa^Ptzc5T9$D)N3^NX>1oAs z@Web3GOu&KR@G+V)0pd9TUkZkuhsze1J&aPPkK(Hx=y1uBE54i{GK$ zKuW&Omx=@xp>bPudpr20V{^O&+JNNLKdwf=7T2{MLBCF>>xR+CK%&^o@QQ?#Ai$Gv zZLPSjF<0FKoWnWyGzfARmpXi@_FuQ~bh?q@u356P3W!%OOWC^g!mbpD2pW-0Pmq+B zm8vC7pP2Avl4rcHSFj|IaI`?rdM}fQ7FEW*q>)=&i=jN*Q^dnFQ|lvoyqqZ|=^{k` z7}NZ+0?^RXobsJQsqEO6*uqPSR#ocPSJ!7;lm>J`uBTgk#WmUWqxwzg%$V3&i;FeC zU%-0$DFf;61>3w|uPx6JSU*SCFM02NTgN9p#7KYt2?s0TZE$mxe1ylr$nwGyHM^$f z*?}kZ~yxnFlhLAiknp+=+{6)C{hG6v9Cq0@Aum|+_^o7P>Gz9QFUAj zv1p>B4!=8IdqHoSOdH$a#3ylH`h0c3PokyFJC{s|Y`E{SF!f80`bmsE#zcA^oRQPf z;wwLFrN!9XXV<{>I(s{`3Irj{DH0p1La_A7^)lb1T=%Vl-^@5z-uxa-_urH8>#!!w zDc7A)ZELE1Z|OTkP=~qc(M!BeLjJ)F;p!Brqg4`e`XvM5@Yfdt>313myyB`(L)zK!vwZvSZh85N*HyGXiqnf14uqHnu z+SVLGwHdEYVBsGn7ZRo_xa+|v0&qR2*m(D}gnpPzk?I582gb6%)<21)e=ZZESjpp0 zMsMS2TA4~}WMqSB@xINz>45hAlPQjD;n8p{kpLDcB3XRLEw%rM<#47N8ldgctJM>u zxzLCs-w=KP(rW-o3__8h%`H7P4bCIqFVkH%F=pz7U}QZ$PI2lgwZC4dOABGkU==rk zrTtuV(zNqvJCfZ>-;bU@`lW%9_wR#E4xON2RR{7X1!(8y=d9Lm zb=z8FM9dj`B^=`WxoONXl0b9BDzR&)jzr3NvCPlgli!|>CGq1O;(ggTxib2OtdPt+ zb`qlZ>p=N&O`1<#nao7hT$a9FFrq@XmE|joSk)%1?H3NKe5f^FR#98sI2x}shEVLR zhX+1%`5~wZXoUl8=1+pHElIyVy>ac~M*>lgD8yA1xtDzk8PthVU^|EC&pA;qJ@x)4v%&68CZ<2{QV^lW}%;ic$BSXAePnrR`z&pmOt< zD%;OVZJ`~z<^;eLz-ejsx-=>3ZEDX;aOnNvGC&U9@*TVNo&{=16i9z9g)IDNdTKWZKiA;X5^yugH6!4Tm4JzJ5<^BTw$HLg* zFsw8nVcD>qodq{v5@OkK+^S8#Lj&ok1J;4P#n4ZPxx zO3`TLe804Pnte*s;P%Na_^knSnX9;+u2k1D@OpxsXR8uEOeM@5Iz=`py%uYLv$xS* zh=DU;_hnXmSIWWit0%?94cYYq zllD-(?d`^4&DTU<5^`>`$pV7!1WVoBmjZN~<}?AetBdb9kZ_Yl@o2)1MI90+@1C7K zjr~uXL%)QrJl=clNbHF9tvs$(EnGGj2Dl;lpGAaxA*9#LZOXasm`v5YnR_Vo#U1Xn zNP~aP48r-)dpp8WcDLi6G4~*vUbkA$&lO z6w+ljuToLF+p|_n zmCZu<<+j!8n|L-FV<)5&9$Zo=|A(fl0II5a`!tuX3tSqcySrOJNu@gk1nCCJOLqt& z(kd+>-JME^beD94H2nAdX1|>1f%CIKn{%L$ zr2!$#{hXJf5~0sG9G32^tkO>Prh?iqCo+L3k4Rt~iyS|q50Q8v?K<&uFNSR7SnQ?e zhsKR1y%Up|P*K@J*8AJ{k(M5$zyPyRY7vt z3#N}ho2vdUnAZ_^OZu>g%^RMq%$UgtkRLfcXqV}k!_Z_q@UQ~i$iC%B&~S{DaJ<%{ zg@^^5+@4?GZg{tlN-5G47+>uVBsqI~M$Qa%u?nJU;!`Ai(Az;7a7(gL@pO$XV5!nS zKRwvET8-U$icl)j!#b1DF*5STA%3R1(}vWrAew_;^QcMHPYXR+>qmczyO-Oh3(X-Q z*u6OMsJD99(>T41!CO7|@QR$r<7KcW)5?@}mtUfz;rLnz9sXpYWj7kKl!mOAK+NU- z^9RjaP6gLMx`-{}XVPQoBAfaTh@5OMaMDqI5Cw4reXM%k-rH^n>$eq2Y)O-8iQ(Fs zxQM>_Wdu=4$31;R7J=Hs2ksfWClo)_yb}*heF+n)6Hm{sg(<|2nXurMNSV&W;IT0C z&O{fMsOKzkE+QzrS;8pn zLsEg#DHW2vBd5nkj_6&Mw}iW2<+^H!Ok{A5xLw_C=~H8a8DZIUFq?sGkV0oCVCPia zx4`{`V-|Ezjm>1GddClitiq!wUH+zg9c&O?uM^_Eten`>thSNNd4Es+kt5w{!}8~5 zroPYG@7Wta2}n2+z9NCP040C32rk^B(^aAzHGCD7Q(wsITVLTYJ}xSrKnyWzKPCHj z39H|TJwI^W9Mvl;-d#6VRpA5w;?*~n{42~7XC`=@mVbrEy2s~^3pBXA@(i`o`m_tr z&cMRcHG93YF?!g9NANQ`c<07x-j7Ln=``w#y}DKe&ViotNvrw1wT}jT}$PHM}u_aks4Zt^zT~h6XaiM0;j82vicI@SJsDG z0ud`rv)+DYgBnESO<4`SZpiboW-UnOf%MRlV{Am5nc#G%IB^H#BULQp^PBhXglNfa znWNF&iQ;2g8-%bnAS6m%O(Ux13y4WhS3W{DBwhF~&y;QVgE83;xyz_PBj$g}l zq~o6n*Uelg5pi|gJR<+Yq``qI$~xuXE>0;&+eyn5VU*OCA)sB z2JXI`vx*^)C20qTeQvLoisFi|6+3C;{)j}(2}(LTw!A$&Wr(wQfs&NC7G1s>mbdn{ z*3fh{RD*Pjn$0}70g~3ogX6WsJ%o`O2nv#&!~Wp&aZu?53^@hJso>YS&JCs zb^?Yw*h)JaW@3c|eqk7XVFZTRQjh!|<8M7dEjtNC$RX`Kmk==}D)W2Ef>0+UP`6Jy zM!_WXQ^gWGVF#UXfvvgVuW3S(HCZ0t_dV=iw(tgGwT9n?^%;h_Cla3um`(sm>6JTQXb>jnWvy{=3#QWA>u{<{%jI{6KjKeYTuoE&q7Ci%4$u+^_1o zG|Tnx`UnB$br(L`FPu7`_0cjbWXD&5+=|JzQ`15LiqbDZRYlACg_e*?mQI|5I;bs} zXqaNX_>>VuM;=f8u(6!otdDjStT2;LCv~xa|5urR9HA?o$Nw6WiZj<`lv`Ltj zkc%l>7OrlKFmhh)MU;R{`jqqf&N*lQ@9O(r$|t8M)qf9gZBdeC*0~_m-jMt$IAYaP zu1xuFA#xmg@@QH@40>{0dhnAF^BEMopsoZFr_O&u-zfa{Q(JMxd_^<+V2E}cR?azyW{)qC4UtpB>5jNRL*`)Ha; zz*l_Y!{1DMPruJWbDkf?{JB0W%F94f9r1(|@sj;6kKFEepO#QMisKFL(zDrAX5x(4VW+$h>EzLn*{E`6yA0vhg{LcUlz1W>l7i$M9dpcwhdZ{{Z>jJg${}f{Z|D zoj?1@*3mot*VU*FrNeYKlqR%;KZw_vGae|~eN)A$%7vNVcql z2B1&OGpp+z44C)2V`Bt%Sf3$+?06^-Z)P$h#*LSrH&h0ZHuhOT3M65plaC`5G3e?A zPH-3U47aSU5kE``EVDe0jgaPMF+*QfjJC1oz?@0CiKJxf>0Fo!DRX+lQB{Y{NPgJ0 zBjz5d@!4pSF0efJHh&dk2BCw5hkgv4H_-PRd9QM}cJ+FeZ%Kg=7nJ}5od9E?b>2<@ zo0mMCMafFC{*IXJFj1dZt6VX1L!?RqFK5O>4;PD^vsO$JmLAS=JmSy(V0VH=_od}m zl#M74c36En)2no6#jS*j*(NJ~L-IW^_Av?dBvBJ~iH}cen3Ukr$!n=gEsE+kx}UAp z>RbG=%iBWT5kUmdt@Cu1j6`BU)?B|TdT%$(kiv#hSC4j>upk9q45hdric!J`wKOVX z4J&ed=TO1ZAB%0_Q&m|Vf%vDl69gwTr*~B?=oULs+MnI}ML+VL*B*tk$H*TWc|Qz2 zYJEc%;G2{FSGV#4eJj{5(@k^JG1s_ee5cmu?}Y!!gI+GeX?I6j2dR9L*-rnTxpN-Z zeo8w}Ke&9CK5;vPg;}yWhnuZCl*%&dsIro<5`&ymxAGbx$bS=eQ~&%=T#JxFf2OCW z=gRK|S&X)svz$NK9hoW`XweQ4_Fkv8SHTn&px|K;#3`)C!V^08b(M2|g|PB#bTzW_ z^E6sBd=87D8{uQnlB*Y1@5ff;%0aWTLQ@xs`<@`=(>zab;)j3YOMrPxfQg15Ule7n zxQiR+&VkPJ!qMkNYn^(Luv}T<(1)QEEO<T0eSgl?V=#Hy8B(b;N!# zeq5po@uwIw%Y!sB$Te=q!Pm}RbqDU|ys7n1ip(KaWK+;D1uQgE)6=;snc;+fK_|bD z>EIGy{(WLm;yp}5{TOtlsI0ydgQSx{Ow;~IsM~(Wy%Wzgl}n6?;<9HD>$)b`AeZt* zKU}P*;70|Sc!QJ7>ptBB)|Hs_Z+?R*vz*s4ztuQJU4PSIBPVQiI@GdIyCNwiWQS^P zFco&L9sOIpd+(zQ#*7atDn#V(eWUC65XdR?aDwCIv?Q|HGcp}O@#d!}5i_?w%64A< z5*mG9`zU^d&BVlX=$?tVW`j5B+p7aPc~8cGWiFN)D7~3tg8v*wF6od18=?Kjht^vK zk2nh$XvolJwES^FnAa7)2pUd!OCyS51vT74)666~(y0;Bs`R|cm=TJ((cBV<LFQf1D4*>Baf<5q9Oy~XyfyQZB)lcCqWQzQnnZ#(z>*^G3d`rA##~| zhnH7YNaa5)Y;~3Ja<<76xp{uUGPMYX#zAyWcuT}OoB~nQGUsIJ{iwohu{k^Bg2Nip zWgW6?x0l1dl$#8h`ay}Vs0F-_5TLeLfbsjUyeJ#-cjx1G=j+!!o)Sh(?_G@V;(!ke zxfrDtb1qzkIUD;b$s&n?Rj8a%E%J~dqKBm>4sZs|&dBfex(D;^1h2&#EUy0jI`I{= zMEON20^6RAN+mr1d8HQ1ikXz<+_RdZ#X>ELcH>2w<9lEVLCUzeiu#&m=yI5yXs$2^ z|FSD*kOHWh-1uH9IUV*$LDP3~yoWPOms5i?wvMae`T5%>`3P*e*RKUx!0?I2#C%pm zIO9WD8>hg6_sAN*AE1YcxnUy(nkmUGO)o}m=d|K!e)*DP#z5XT$V&t`RzdYQ%$jEd z%9>1Q))zr6HI!KU?3h16)r^fS^x1@AQ%I8Zs4>fo+a*#US?H5EN)UHdaon5Y%^Q+W zEdPclOp|!j*5$Q*C8Mf%X$Od?tv`FS*nFa$wTnhqN>-#q78R-&vm>rBX0{V_)}*Q> zW|f5;J9`?gvrb>y~l-7WC|QoSN3C05;d925QDN z2VG}_$#N8eZ2*<4T0*;1Ey2M{yRArbvMSbwLLS*xK=r3!-w%04tZOiwPYhMd6pe%M>}?l zuc?Sy6W@C?ru%OH{%Z1tiTg6W;S@pl4Ofpk^~&6c$6j9vM&QNMi<66q!T+kimd~IH zL3^;XFPArRrx#lQ(Wz4js&^o%2)S*oCMXItGkh}3AvNdulrKzXF;8WtF1jX4q zFQ|xdRSQ~Iio+o_O7FRZk1SEvS8Bb*In#V~2;#sg1odII@t;~i+Zl4L&>uS3iI;yB zI%zl#iUPd_N7Eij+RMxkO`hTcBPfJCyHq{ZhV0knl+R9oZ2rXCRMg!ZLdBa5F{+}2 zIeFo4+H%L}E+Uk6c6Py2Zw1M*n=ug*tgRhJhkA$`BvG=}J1RTGF+efT@mqZ(@JcUq zBYgSmq!a3QO2U`on#HLd%aaj`j*mjI7?T?PtXM%vku9)RTI?73*0`Vhy;m8eeoOw` z2;SR)<`xpJ2sAiTH~yw7c+FzLY~?DWg&z-}c%>IFSSHo$ZT4M;XBBxtqxE>1#~O^4 z%O%x+lf3uKnzw9WI3st^ipeV|?5AksrEO8q}DDGQVKq-b{dt_Nv0q6#t~lVQeEyBV$01;9q(7Yba_B zhdi{;N3azsTOA#IDs-{Jx)9oy5x_6m>R7Vl9>@CX9JSBmOoRWDYG$upx6Bjog!dh z{gFrx|KzUfdN_;c&2JTR{qHSDHY<0@vYj%8lOY?vAKlMRZhv$P#CV&AFI%gpSm`~! z($NVbYI98+zhgwhVUzRp#94IO{t8dpMsV57`3A{ejyumVOFi}dUp+ll z^RQ>o25og8TY3vKBvSswr+IvOI;6BzQorL7-EpBFXKHF{XKydG%RE@AP=!4^?_Z97 zf_z{;(MC~rT+_BOxD<$1-0zX+t_r< zeHtAuG1g-_6y9eUGUo{PyHUHjxtR+YnG5vC*~KeOR(!HTbBE?@B1oAbP-~FRFDy(< zOduu}VM*oUnV6WI__dv8?--s)1R?BRp-k{|U|p>ee&*R#NP8)UVc52YpJ<{51?|hx zpaacW>TW=v?(<%h-q*||JC&C&V`sM56ild=N|i9$XnMebq95?xOwP_3lNbrqzPA(8 zt1`>PkdmQ3NR^xYz|0N0$Svf06I)>em4$Szc7^e}ZL++`62h_SPoonSCS^)xbuxdh zT&MhL+jqx942B)yM8E1{_wJpnq9STKw^>4E$0Me=cmG?;oJ^x1 z<+*7UzjcQu{8egwn*T9d^$&}sCg4whElZ5K0f|!sMPHx1macBZ@88-Yl_Mug1sbpA-;wE;~1 zV{IYw_`xym;E}EFC<1z(zP6rR~{y(Fq+?)G)OVi2rfAR2#L z$C@toCGqdyHvzZ1Mfz>G?2dCar~vWWIXfRG;C?BxvsR!dNJ~o?*p+UF(f7YV;kMgZ zbiwrO8{na(Ew23DJ3l7Xtw+-l>%#NVanwhfELw@)97aMC3wAi6!UXJil;U8~H8p&3 z+}Py`(M~qwYP_d z`SvJgz};cP^=jBvwbK&tF0tOFs2bF{69|aKab&?!rJJDg$_b)86|%{ft0L4U+3)mk zj`$q)&shQR-)K6&u;wN~!s~Ksu)4k2{V3u}7=c59mN9~wI)t6GO{a1<&oh}Up0nK& zZw*%DyPyB8PfY~K6^)E2O3TWs{jazjms`oq-d{2fj{wCY++2X1|JjuS)l2mpoUcUR zx<02ydYj&ed!WhJ1Zn59oVCu+N4$;g3;q6`%a4pTp9U|d8Ts-O$3+D5l5*gIs z@`sIq5(~7u%A&{RsA=2cXi;=Y?hf1(&d7dGsbK+1Ex7|UZjkz(Z(rAbKx7E;#q`}iQ~CuI-MdfVDVu4+lw`|H!j z>vc8W!24^b9#I|NWE(Qdfi63NZficz5fkU(i~<&*stO7UUT>x*o({8Df^m+CduDYf z&WxZ^S4daDGVBS~33uaCI8efT-Bou6SYu+0xsk6~gXv>5)KX9qHq7e`!S|zZn6{#9 z^vB2gUU!)rQa2W`EGcB4pe1}`sc4v(osA+j3qU+>yW%1zC&!Og_^mAl#EY6C{;Hh< z2Xk*y`iXYMWSf`-eBh3(huMs6EQ~#3B}fNci)o#dOxT$>EbzMj<+#5d*tWPnSv$FV zi2By_g_)P;8G-7|+d7`CU-rt`eneYaTl)0}f&r&}q{S5#A!FP7k4uS!$J2lQWXn50 zW4zb^r3SgK4(IeZyMq>f&q}1N!4fx=%DhoK`PcmRB31L10HgpG{;}WX6MP#?$aPM; z=A+Mxr!nd2BphasbjtzfIOQfSLY!d?){u`y6n_`jOujm+9pvcx!6_yl1U8_Bqj6(bU@(thEGEWHI~` ztB2c5{U$d?sarcyHa0d|NOhOIa&Y`wl|Wfj(}Y^veTzcdbr~{GsMjXHE z)(5?AC-30cu^o-8c81L{MxLn|Xq_}J$@hvfxn2i_tee_xmx`9zwX75Q%HPH3b)mWtqSS-&rheVEB z&t2#3t3}Z={|8QA~)m+WY$ySD0zwMH{{byn!oZLa0VAMLFIwuWIVeMTLvv)H1qIN@r3XjYa=LtO@Yk=GEmJQ5UZ^wFuh6xt zn=h~2Oi*~H|Kp9|QS-j~D_z}h<;1{N4^@h#F>yit%h9~rXkf3J{OPBSN_UNIU?feu zDJn0yN)wkpR1r+=MUTl}BA0(A&4scina)tE$*|Ej|Nf;GZaU3@4{US^uatN7;7P|F zE;M{K+T7NGZjFJf^+vv%4`B5}eyZ2 zri<2!BNxt$SV?q;ha$G#1|_aXPL<)d_-blFdY>h=l>oU^X{B=@zZP_%DAQylE;o;$@nfp+Vk^i3cM{#ei ze+MOU!2A*``>bIOdjs~88lU%(I?S7Jp+gy`O=N)1HU`!lB7&k~LK%id4!UO2o^QuW zA}SWi>QT#a-=C7n-|d~z6W_rgfv|($roB1nC?9#P(1hO2!*6eIzvxuK(iMS3?b9Nr zDddYL*|?z+;z~)r|8G5fWhwHEQ(ERZuaGD{#C$l7wejf@-SupU*%oT52So)ZLxXQ+ zN{t@Q#dH*+AmNh0;>y4>3%o&<%O7838pEN7-w#^zRj#x&H2aOylFrYI?Z{H2?o>!% zGB9;F87Gv%B78ABEnfaJa%v*B&8}nlfftPr=7$IOtNcOi_H2N_PgRW}Mk%v6~qH|I~ zO%02y?Sjy8wn{2Hv`JU7%eSu1(+vEHyszP0j``Gn+}&F>J^Pnk-~*s_oW)1d>i>^?9zTqkRIzy3cb+B0cPL%zI3`nGJhBU^frlL8G>KUk}hIp{wvW=`= zdRSguv;M)_9{`9BXaqi|cvppQG*DqmCLe}suq$+9W4YT=gqN>J;*=ToJ;WM~xjroq zcMlcPNb8~Y~jcqVJKYPtn!s3-cAKe~`4zi)NT%gy3)Z|dYGphWJ(P;SsNb*Ob=|I+EJwK_(d9@qv1=~%&QSny=*Nm@aCZWuxz z^Gsd*9qv)bQy`Q?j5cPM6&hi&>LOzI{Rn2h-mAjG%G#CX+@8#L-|n!W1f9)>33zN0 zaJJ`*crmP9`JJrO91Sd+ETod~0tV8ulrTUOgha%wuIlj0ZGFX+5*=W^!incwmFOz}-V`Z` zuS5u75s8z|u<_js`vwK@okf!>@&N<*^vVgnjjkIfk9Wt+75$9x)w@bP3!hz-&4ujR zuNAp6aY`qnBTtdPRsuhy!K@9GEG+1#{SPp(X{6Spw2cSO+ru8C?(YMB<_3wiKi;y} z*42IGOA~;vLVwI%8B8s_sZ)XN*M8&-+1%MF)U$gPfH6vzt_rU_1AT z=>B%b+j}fTeSjY{dKa;5?(xmTy02tX72@I zOb->Npi&8C9lE@uhDt{9S`CA#ce?CSE}TkpL+a>=wmtoc`vv$M1D#YLp7U*AYkj&KlCwIzdYcd=YH;yY02UMOX>R#hea z-M>Wu5H_;Qyf=n8x7ZIGj$bP@Et_rwgpd!^`ZU2j*j`RIh|Uss{?Aj2RsSL+rKZM4 z(gdRP_4Sd3&vBAqot>YT++Pw3kmIO}ZoLA>zfb|3Q9@mZWL-Yzc(3v9ojik9hk`7| zL)4m^==kz-$fEIxBs^&(Rgx4plGp#Aqr~;9vkXK<{HGINCP2NrvR8E9)Uz>j$H1St zmTk+9x2blxQ-X@2=iALbAFNTps~}xFbR6h-Jk|oxxg<~uNJ2%EYwdTBG~Zrie$qnx zJm(nk>rG+g;>fB9uI*=6rs;}1k`}MS7tMt^_I{2bX8tNB{{*;;#|($dnDf5pf1 z^@u%c1N6d`_%U+qEB=b7=Sa(bYh$ywJ>*lS=kT@rLHdq9fbo7iVSTV61J8|xg(WX? zG4e~hc^BDi`+EwngV|)ZqQI0n$I_KLhhsb;BWf{m$%~VeV5YbfzrS98riD7UYVa%! z&fc#`YDEo6x~&cdpjL^m65SWZZq* z5OYYY{QB1gp-sZ!iBw59*tmQcG@1MGRSY9|t`tzxc?*`}K$c zexJK=_*wh)Yvha(S-b>7zc>E{v?lE*3A)=+WHMgx0-&@0Zz1SIvK!!Dp!L=w6y?%M zOVd=g-x@j+84+%2x8L{&JWZ+k=?@t4@^b7s{9Bdgmipi^7sD~~Uw0d9~-UsDB;fK;fE|)Wd(mO z0=F5v$9?JP|Jn>x3q?gmpNols{K;Lux2&}bhqYs^G{Z|f6U?j9PrmGH$z_sn=;1C* zsVC8MpUcMW-O|PC4#HP0mp}jA^y?Rv+QqGtS)tkp&t0=+|fJio$)p8>voPmBIp(NmC|5Fc(qXZ zwdGK|NcSeu$@AEao41~iE~uRE!jtS{y1xVJP?`VwI5M<9;7a%jx7h1-4yw79zj_M8 z&uno#+uZl+N1XzH`fKbskI9TnYP{jJ8WcG<)SYCSgx$GCu?VAt*!D!H`r z)K2S|cq7jiDm?-@b&Y?55V|^5pv0;2ZG1G?S10K&^mjBnL+g_oJ_>;1ew_~w=i4HSe*5oO zxTrs|#jmgXK0YDjwYMizlQVjF9xR*SWQ_1e;r|V>9zzL}HTK>5z`{zFGeh;JwAjP0O}ewig$=Lj;eh$htFw`Opb z7?IOnqH60Q)F_2+dv>B9b1&rI53o`PoXBo&ZIzHa$2{98OI!(GQMPt1WUs{QcY)z^y|zLN!~Xj6FOXw*J$}~?x<(Ocd`hfQ>weN1fS!Kx7+m}YJL~==4S!$%; zDQ6_)UDm=$JGb1*C>%r4*q42AOb#n(|JaFJMkVu1m*0bY4i78uiswuvLG+hgVOv;) zx}`({!QIc}hzUD&#@xgvW1;r?^nc%UeIS7(3v!0BTjpD3WIB}mU>cf-I~#}x#R38OOYBnb46B9Py3%A0l@!-$gIFG) zlhwEaT7V4=E7GY?T;p`qMN!?iM^$zc3A&e%dX+qN{;Ts<95?c8+=q+qV8e$D18`bZ78dz4&ko7;Xc^IVg zdhQ9tk?Ew@dvlHOff32>7m?A_)($PJY-j3A7qqm2ov9%dS2`EKb3kURLW5=B0ik#_ z6zCw0hxH4S)aC@|{|vw~(NUo^|0o?Kr7q$6Y0ppHAie6QW$MJsb3AN#P~5gUU=B-V z##X6N%h>AS3_Q-k6nzv%&4o_p`rn|##|tRQ^Pq5LaEB9=M14b z8rfl|8v{j>y&we(PU9Ib{f7u%i&N#XOT4!S$A9&~SyuiRwVx)Lf~1$@HOWgAZQ?Z- zSS(4lCrmN0*jpW41V;j2&Sikg``f%{5K<3M(cGcex|fdJn5sy&7m_(O!W28uqg;j< zGr(qtq6%7{oFd6>WElUOp9(4}DujH=C%;M)?dtqLCD~w5Ob2Gx)|lW6{KpUpu+e@$ zW`b!jyn@j8S=3!qH=XTL&S|w#7eSsi-m}%{3HJY+2rtD@$6aH+iD#F^1j`o+=S53&^WdQutMV# za5Oh35 zQjdTAJs*0jlaBAEQ8N>#B(L;-J9^k_FB>la(0trNrFh+6+pZFkmu8i60_14L89BzM zJlO3I2OTPAG(zPlU@rdLvHiU>+Zj2z+uI#(%UEIm4F1zyP-j!+h7p^I6KXBHG0Z^p#iBt@1V+c1lw%3)urO5h^v#cucZZg0A$Sy_E4 zV&~?N4qxdjJ!tr_S^6rVmZ}C{e%AbanKu3d`F$J2( zv?En6YX(E-EiqvKMLVjDq=%r3MB;IWafpll`z(@yQ-B$qlv+l?P%nW~30+!ZtL!EW zR4)1HtP^^)K7ME#EBBx)pO#3#cT1ml0BX{7xd9-vWS8xKH#ap^M))`k+(P!M=oGc8 ziUP3irJBQE;?yu$ffd(TdXb}+0te99@?f@FKujqa3U2UyDT$EqNX?J`hU3D|LIPom z4h3WnV@b`D_G&1R;+2qP^At7bB5uyNdIT(BRp=K&jHAy%bc*KMd7DRXf0oe`4A2tmDT!4hJZ`9#Wcc) zhDRNzRj6dMNd1uXojtdST*OfrQk(g6cCj{R+W zP-J8YZu5g#*U|~H2#ZwQmqTxS#1|%BH3;wSyZ`<9(jP&@?vm8{Tnes zCuxsbq5L+*C5IY)4wzJckJ1ks4>782?2NBK{!=uVn}uG5bD#wSZ$fnk83$NL7=k?P zbNslGR9qSC@51FE`8O>b1HjXo65b~Wea--1S`ZGgu@`@h^y{(?Qugyrh7B1o?D+Rc z@^`snevCDAsdUV}AXR7V*Z8OQf0HO#6x)Vy3_BOFeL?A2#_bl*$=zd{?69 z6OgxMUUUt4_=D>tLJ>AvKU$Dd7(%t?6pAM7G`0C84sY-%2PQ1|pa{WW`h6+=>f-Xb z9@gmv?h=KU4;?~Rit3uL3DGIafvBizWU|D7h3x)nYJ`f4O26rh2>2T$;@(GcIy&?q z8A*VvOshf&p~FW(1bQ8ABr?5HT=!?uqO~~w(J!wjAFxAd&96@gu7OyHd)bSjsaHp| z@$FXx3a`Uhl!g95$!zIf2zyK@c&X#gC7MEEa_y!@+0^f1bW{X$pfI>J8QZ;mtKC9G zF2@r=c#9A=X)lcAQqo2et>E%oh54(b6JLIBB3yre@9pWVRpL6J{YoN~5ezCxHe~Q5 z`9M=1m;x=njFlC=kkevR!?GWdqGH%dFOkM-FHw<>%8~L%J{vaOO4Ij)q4-Fl&21kH zG^BtwI#Z8h{`zb?8q-^Lb&~1AO7Jc}KOYe&kBsg2XIOv0p*C%8$Ur}o7^7z%`0v{P z)5Csd3F9#l;oMwd5yp<;`93{dO%;42mm3@`7mYnQ#fJ$88w+j$WQbKXnfZ^8L=NJU zGZr;oR#tX;F&Q+#KPG{buz?GUNLHOY*0`wQuo}ye1Wk<#1R_Wq0S~gbFqQ5Ck{m&_ z0&YbaEegmSB`NThjVY%v{5h^b>7n+UDV$*GPoT=0;QNxJ>aF;U09dc)H)p`{awHRS zUjAc3)5G%i~~*;_5J#`d^Rp;WFfNZ>bSkdA1BiLX48dn9Co1Ph%xIy&=urIAgEuzdhWVZE_d>_v-b=QsQGIk?qf)*S0krSU|n+iya$K zrg^Uro{yK5k%1n|$Q*s7OwiN0>4tOv%fUc)N7sQG`GaQ(hO=<0Yb6GrlkG7V>u_EO}y zoxtF)*Lo}kFxm0rU-Lhbtub;Eyoym-tPLW1)&^PR`dy9t;nbMnC*$&XYu#Af!CiLU zX1TtI9qo5cAoe>!jM}PYe$X53b5kdLnu^6GQSem^WEZ5LZtAW9=PH)D-~*x>IQdk- z#F7CH+uuWb{99K(n7{84iW^+&%LG9JVH*B_ajD@N?CjnfxBEc}-@ku%;>%#b=uwT> z@DB3B?CVkPvW`-G6qiIyb6$=za&9N66P!}66;uUwVQVlD55S4yzrOw0x`S|xJmcnW ziljcV;m#i^fN0oK{9*bF_PpHRBTX&(X>)JpS=M;~Iv~9EaJ3SqM8A5^NV5mL-rdK?E7)ph_HX&67EMW)% z%90m|2y!qSgx9;j-`0_7d{+IN4RDzMaT_|2==O9)s^cA*?(f?0c;EgMfrO&1vEV24 zch_zdsSm7}`Cv3n7gD@z1m+RQk%X&ynHls`qL)pTs_xV<&_OY+8zPtIzN`Op#gjA$ zlq9-Qi(vn*AJee%hzE-R%T2%a8c8A5de)kZXJ4>!wLop{>Ml`c2H$b9k)X2e9~*Iu zsbH}vlw@8ffD85sXFG{e)I$*=Z+KpU+q$)y)xhT@oHVBg$dW#tDC|I=yrT|)iIV92 zt}CZk`mnAXJ1Sbb1U9?l<-Y&N%9*s!E^GPm%LIW+3O-I`az)mJjh4dr@$1V{kbkHfi4p-av&w*t83G0D9j4sGD{F)o z9|g9G{T#?5^5M$^aGAmsMfZSU^@nE#dK|-o%A@l zqg`lk+tqT5e#6m%ymiVp>it8Bbbi|svY>MAMsT9u`v^~m8A`3>y+G;@COxawWmQ0P8}+7|L zj^yR^uBb6US7;OUVD)XL)A9}ca#j@aUsnS)RAs(R4k4iaEu+x8*GGs!+lkj?SC6HDmsf4s>X=R zCwwvYGskb{C}OyHF?8-S*70~-(=%#C3(qSoq}p$PKwBxlxed0^k`yhN**@3m+F|^1 z`x7ICiDH!2NWvqA=VQ5?p;OXYa|84$CH+UlY4iK!bTsMf{Mb{cM}i|9;d*T z+-zg@(DUnH;6jC4B*({b4UEyx)x~A&jVW@4cG0r2Pnzjv*;5#6ko!UQt8`uh6E({}#Z;pY=X@X;d7CZK4ENPxmNW?NqpZ<9DxO#~d$ z+x!ax?K*6?&j=}BdA;2}dgtsOz+ag<^S};-f4~Uk-C6w9NPk>l*KEFLD@l|8MqF{n zt+VEf3qCjjra1e zc=OA`?;sYPrvcL>eXbl?wI^x#q2IYQlqU?c-BHLN4RaoM3L0B+h zH$8)I6FZWWR;{QtY?p^chf=_Dq`V`cs-}T3!uLKPQ}IP6U!57t4@WqI%Fe;TtJf?b zIyt_V)K(fHgI}w%HMDX1r6P)0QKiXg)^bSJ$;qjs5igZl1Hh24-4kkgI($DO$NR1` zF!N*a`!24MXI{PC5o% z{8C{#&htJVY~aN4ot0~E4dS3711|r2+xNnpC#o-&`%CD=h;0rB_BWQ8G#uNcm+tDggYygGeQYFGCCz?4JMjG(tAk^I3-BlzEXj2i0oWMluOYRiZWx&@!L5$ z4Y6znR>{8S0d`H)=g*&|&VS42;{)I>20?mfu>aD-%j-+C@*yCoxX*?-YC#?yZ;G-h z5*I=GZcY)TGF^u6m#ceAigF@8f2L%cdXLhvlIwBsJ#V7hyvBN~2_FI5!V>LF+bM}BW*a4XW{?_6G$v0%o;#=0*1O6SW>jDQV}&k1(v-p#q78OZIZ!Ze#- znOxZk*tBTzg%`Yekbb--de7(g8aRL;%a=#E6nWw!v9qIj1zx0$1@1?@D1tyHB=mDY zRx^?%3@{z}lrOby9x5rg`|r&>r=~y@v+d|Bk(|qfBI%@4s+5e8ky^}{qJ05eO49?A z&LY@@>3qCx`R89wW~{qkIg%6^rhfL7;miMZlY?F=??sFsKpTeb4xyoy6bYcDU*R%>=W=3@+NlyxI_dk zDm8&X7y3tAj)oR&B#1$3U1gPAg@vYfkQ$D{>S}_avPBhQ#tXzP#ym1M4jMOS83wE<20BP(DCy?T|#OtvS#%EEReeBO5# zGr_15;qV;8`U9#E<$%S^_n2A-Y^b7&cm*Q_$<$|!(b!{xF-pNN=MSR_eCllp~{0jRBXpeiCYv9*dIsc14QvvuNMDS z*nd=UTlxtVWM%l+h8_?=a8Aj{=q^8*P!W+E;(|k+-Udn@2$jWf^k}^*7kiUw0Xvwl zqey=4$3T_!loLo-2AtQzM5&0C$A1&E$G_#zV9^Soh}s3*pJM*}B$$OMM*}#y6&6vYdry+c4SI-MW?AeD(To@Usyho{x6PcNKG3L=*Sd z<$e7sSaG4%eCA!X7I?FzR_%4@{ZabK1L*r6iOIhh_>!I%&K=?|0)MCa?Nm|K!r`m` z(R9^OQFdR~Lb_8x5Ex1t=@g{9Vdxq{x*J3g1f)w^kPuM1^QB|xk?!v9{;t2ZKG&MR zTrQvIx%ZxX&OUqZgK|S+XJ-dg19BJ6!cUBN(mzc6R@Nj?lScXcWB{2d^x|R)Yh9tq z8f3x$IK=sxPqZ{Nf&(6J?V9dRh`tM?Y_6Ur(HyKQIDDyg{1M`C2$gXa`g-_8*$;SOx!Tb+< zbz1E<1Mu;`_nk?dh#namdzQto{XY)0^w!y*U zCBNlRieZgIjX7_#wm3S~-%m1xxT-i3dHSj)3~$0GJ;$@Cr`B@}zeE_UwG%#N49|Wc zE-NmOYd14w&oi69U!~sCDr#XlZEk5H&x2EO+GNPIv^SJ~owRxScbF!4T#qob5MwyA z+5=8f6}%P+e^tIh^0_>qik10c zt*eARU$J(jqZ7gLbc>r?v#P3!DtL-UcI?wz&c^v6rqZSX0LXAMzmM)R1w2ixYkoO- z`TCok;(tGA?SUeN_ZAg^XYv-_-Ug!C9L#y?gB_*sJ}vFY7p|TbB{dDm8poc>O0;Gk z4M1NeGQr>>*jq7|oUCQX^CE?)+x4wjU2(h)L_(SCa~Xzh(d+0%9~mk> z)BYCulnmMKUBB{aK2;DE_(mogwx2e+{>^iLs{FaZWGF#%93;$~GYn^?>>GYE{0n?N zr>H2rP`!W%`|OrrBrP?S9fOAQ2XA%Ni-=GDzh&g*DP>10|GN%tDX}Kqoh+r~fv3Ts zovX*VUZ|&=Y{n0FNbmE-EC1Mu9($5QwSb>O*G2MWSkuLf4S&Hos)?$)C{n?!AX+un zv%!P^@@K+aJw|4lLNAgmbT7HfYpt2=27R^;Z0RW?s4GUFK*jqX+A%mII%#4d35yS)WYR`Ky{`;vnt^ zb7IUy9fy>psLDM1nrGi5KDD^-r}`S(KWXgg*PZGf>z0qJMoUPiP`0sQy1lH$LrK7x z*6SN`rm&u3W5Nmz3JK|68T8GP8PGg8Pdbr@Nog_>RROx^3$*@hQGL|fjEaTok;y}oqYVxBs!iSr~y)Ao3Uf>C#+Xk z_tZb4?ZPCe0Z)m=$ei99I&nk&gE9yYZQJ4HGdW)NH@JUxU+zx)0i0u(5Xt#exx6yw zVwnTZmw7*b1`Ve1ZZ132zVqtVhgh3$ipQBlUQyf+1|0u2qJaD!Sm#W0%Qm33+j;2`<`)r0t9LG&Gr$Z_T9X;R!8_@cEP1 zocDJQE%iy$m6q7kzm(|W{UmK9U!|Q)=;>{3ZFTORZ+P>wz7PbT{o5-7QeJ!VQLBQd z)CJWRwKl)?>z#Yg;-MUhE>nn^aA(`zi9ZgN9*3FfpAOIyR5?ogrw$9JUrRIyUiX*< ztZYQ5w;2WaP=+gdO@3t1(3Bk4c(`fIa#@v(@Y;x7jQ!f9!hQRzN>;$Yu;?S1_v*{% zqPJO(cRgkQK_|~I&EKf0Mo~cPoncfF&X)4>Ha55;(Hz$M^XgQdT(#1W(Z7Es7`TKU z0&V4?s@<7F7gJ_l!hK-F$uWf(BAWp1Q)zMm<+bpo@4D2(xvvUyrZ=v}%!~iEj1`}^xz^J_nps- zLMhqutL0cu)$h1N-)#Yk`>d=neAH!UpAa`JTG@U`(HC$lD8M_p27_Lve9IjfJaEL@ zx8J0HJU+bJkG@We?rK&4w7G;-!c_kQn15? z=Dqnww$i5z!JZ_>yA!V^--}L|w|(Y+A{dOr@A7tfC4Bj9i>rX2glA5K^I1RT!;#?1 z@!a@Qg{j#Bs=PB6^{b=Cif@pW;z3redZOOkKMn(mWngyOgUUHGb!_D{?qgQZMe_rVC3I% z%^q4=T~v&(ZQt|zZq9f4cYjxg3SBcYWvgtJ70*YUJj5D3-e~hT%fKrDcPzKYgfoQ0 z)1Eg&?ik@PC;savVFBC#N5Aq3=y5vnX8`FNkRYTMnN~9L8L;l90^XiruUX%-pE%DD z>@vFo#}c1Cg_M+)v6p3nWw^p2vQsCY+(O)SmM z4VI{OE1NQ6Y_3TZbFBDNiaf_}Xr=emgntruiB9@Ep0zK;hCk}-`7OUID;Mb8w8^`S z`>wxe3=lphc5i8>NE=Kd9;ke;ucZr^#p>UuMr7PHxoHERD1|;(M1UAxm#zeSg-`-b zNc=>n+ku}BPP3t-q!)iACZ<*r(c~UeBJACW#;U7%OB%a7^3K z2J4`^uB++zTRPosx?JIo&hs}Y^V0! z^OaKCr!6yOCB3{BT0I)(eqYUI$#$EucZ$80!!nap)v#dGPj`9!6yycnATJ21X3JLj z<;m9*1GHta7Z(@4yuXn|q z{tmR++ihs_n`>(P(A^vN#-EOcx+uPZY7~A)mc7mkrW9Zw;ggbC+kTHZ9=r9b6h|?K z=2um@>L8i8E1LBTWiT`wH<=*l7W8YeI@oW}wl;=RI{q@MJCm_|0@K7U+TU4SWUt@a z_5bIElyAcB_khZmULv%h9W!3MNHVbiu4q%I9THpw7qt4LW;RDdX%NBhKd<%TkGdg0 zYHNEis5;fJpWK5Sv!J-xX3DSuCuanuHK*y3M(}ReXt>;Av1M+dxCj2Z%MxQ|hV}_m z)pI>7deyb@G|1}%4OSzK1M9-!Iu1xkKcp#Yf~)E|jPNgy(vWqGOdRM23S~|P4O^?c>Mq;J zC0@U0D%bh8nPsH zTl-%%m9B5E#}wxa*$yCS1gdt0I_3(?d6Ln<`R*wUJzuMWs=zzPQBJWH`+!7&bg#@uOxt==FPW7OJhsLkZk_2lJA)16K z;K!uppAY($f^mCgAIFPKLg#5^a~c~PxAG{>@WLeOc1sR%P+mB<9569jwlP{_6kh71 zpcl+$#Lvqltt%M)(YX2s-B^yqOzb^#P)=umS_}UIgX-k>1zxy=AcEjZbwBJ*>JUtV zgn>2rXB94MjT8qVeBmw|Hv+Qx5HV{>LiJ7NcCN^D8=&H}e|Wg0cj5~nVu^>PfC|Qx z^`0cDrslcOwYmQZ6;Wac~_bT zMxRH^>Ej7rA4$W|t4*Vjo?Xhgo{uSX>*Li^`}NnOU~d*TI$}!eDo3LUrkara{reYK z=@k_@|7Zqm@a?UwH+Wbyn^!Gy%$23qWQ#X<^mV5p@UM~`b;2#5?L1O^eWDIim0V`L zfH<=zy>u2ROYSyBvEaKz;sl3_9L$#sw}{W%bcm`0vSOQe-A@g+{(FAi6h3Jb5D8FG z+@?|q>R5)FQF59JvmWY^-Lc_xc0co=aRw@h(=8OCe1lzxky%pH3DvD&Af*5aZELB zb{~M{rCGeWmBMpxms5Xvl!uqWE{yXvHTS=Dj!R8y%V3W!jg3A!KXpI?5N4fvcTw94 zh6O?Mf!CT*gyML}9>?r!rH8{>QTn;@sDuJLMPSLpa|pl9OyTL{+jhMvlfLwxx8E2{ z>DWtoXKia`yjf!Kfz*>a_3X5FSLc&{JVE$?AVQySR2fL{>0lI+UaSk~XgI^Ebr)`mIrO*kkh} zy#!76XXA7Qy6O62#?{C*G(UN~Seal~T~S+Q;iXG;0|P}%OM0N&>hKYza^y3R=r9nv zE2caSD)qO2AKifStN@-^%k$s^?`bvEo}R{`m>SI3@By>Bi> zl0XpAit95!aLOv`XS6i>iV(ii;D)M}F-Hs=xC=Ox24JQQ@-SG*#YyNYS6=^N(aBFK zSRrp;X76UdsXi4p^6=m-Egf2_zyF~(Xc|9=wZK^ zXTQ75na&xC)<@bzQr>Tc0% z!uUzDkTc{!9NAa^Y9hokCoJl>#Pw^O2 zdudZxF|Fb5Fx&noi!aNS6SSwvo&QQvtBbYxZDO^@vWHV+KXHdwZ0+n($I6(uFLj(v zRPx`B+f1&wZus-aqsToIDSF%gRqEZU+^JvqyuIao5#im|E^mDJtu3)kDm_MI4@dMgT)Gy*)zBe3iTEWMbg`6m9**tw%7^?_S2>p;) z?k{68oC$hfJ_=dGWT3`w*Kai=5vX8xS_z}ajHoYa<&=ZqS*7x<@efOSIlw^iIOo)} z?RI!)nmmR0$=YmsioxF)Q^LV zZF3cBkjg$&R7d9K;?k7l#h7rIdcXT{@5K~K3v$G;lg8VY9xuy`{@>g2UVi&@;;{@- zLe2lB&Wma5p*xg#$4bf%cON*Ot3TMtWyxUB zM%}pF^vLdv41;vX_G8cH7Tf?W&Xmr5_vo+7#SDj;ovTgC00 z%Gz3E3~OYT&sAr%Z`=^qNK+fB$zWzn6xGRu{mD!tlvmNjjgEX+r*)& zsXoq+SWn_}F?wb%^64fV=Dx;07rG5_{3Y0acyLQGt_hQ=7`U4GSaQ83dDe+rBgpcI+AaT93#1ZVZ+(y2puUU%aA-fRNa3{8d-(S|;%( zRX`B~-(dHg!X4K{b;0lYte|uqTq4&OLpb7hdJsI!iN6{+k=+rWM3VCI^V26L>=B!% zQna!S43mehZf>f&y4`@pD0Ro5ZyhHC0dy%z718kZ;eZExu#JXYyj|KWj*$B6j+s0N z&n^hMq?+jawM&{`C~7(rS3eCgQ3Ew+B4x{`(;@x#sQKHi1FUQUPX}m{Y+hWIM->7; z`Z7Nk2?Z6J6k}e`CXpcnVP`>ySBxO6frsE=+ncl+TPkua?45Gb{JspMra;M4i?|(2 z+pUncl!DCO;2Yf<+gVv{kAq79`y@3hcA9YzWq9*|q0Fjwkd=D=Nfv~;z8}qPY7Op= zt+aqdpnRMJ07k-d$~=!(Oh%h54zqez89(3L$~;`u_IMt(A*1i5csA76uTvN+1bN|( z_|W>G_=+eOLu5CfXx1le0eBjSqp_FHy`?qkS!LC5|3*7|0WL=UaW@&x=XAqjX1MRw z%rJrvWz`?v`Q23{Dv^mc$DSMwM=t_=!tBin8n&d~xBfdwFR2_;6oUQ;i$hr9zPR=2u^Z z1Ovf36K_B&tbm0s@h81VtO7@Qc~l-fTTXpmWWMm=ubuZQwX?5nXX}UpJ9E^B#g+3$ zBDtg%M0`*KtodhoTT|l2hAb-onOTsM(X-o3{HChplmjGO62I6A>R*)i;4z>rce_Z^ zKT`ASxJV#ZIw z5Nk7o1WUD$+^wIcJulf%oS6vT$cEUU=m9sW-UvxN0ibVqCxG7zZs|eLE0oAl9TM^5 zAkOk2vYy|1hw}wzAcG&wW#yc(o%+lplcvQJfMtw|j^N_J0ASxc(U1jRB5pxvx3YK1 z+sjx^kI}7zeLcg&@a@c}GWd$)e5Zf$r|&M@1sa^=8K+-kEg06O0tZo5{t^-Vwy%<> zAvf~<#ajnfKUwN{m0w6Kk82y5ZI9)>covvV{OaOeQM2KpN$oA+dT&2qKDFInJ_;PB z5Q@)HV$>{TISquzUxa^J0GWJ<3{Y~|gYj0Y?`2tO#{k^ockgL2@SP*)S^aNwVWecZ z=8N;6??HwNK$}g_=r?N%glPL66ennEtRvw-Rlj~|sK33~b=)kh1tqp6n{W#HFn^>> z?&ceBO^`%l2F;|twNS{AL1bFsh5h|nG#Sbyj-r6bsVVwwbbpn`H8Ht{bQ&nat?#=4 z6}oIMb`24qawZWf${(w8dqdx(r2CgD#}FmAP>RgBabpY-}m{K9lrB_yj@&JV(S>W-a0ojJvf#}BWkY~ z7HM%`T}OfU76vOI*6Qlt@gMHxb*`eCL;F`Hbzj^WZVYEeA(ofkOA{~4xJvx~5|kzR z^&C=W!vmsVm+x}7^3tW(C^{kh^+${+`6kY7`~~G72fb$m1d!9Mfh1+X~s%>3hs%AKRoxTjDb@(|ybL*IQO@L@v6 z%9bNrDW)HXmp-b5 zU#iKFYwl&^B!q~%I2AUsd|$R#$k5><(N}AZbC(4y+KXo(zjQ@6k1PY-;aF=#K4NN$ z&(^H7g4wiOr#$bB0eBX7M)DdOIksowtTcjTv}b3hC`=;!6L@X%xYshvr(O(kImP$fMA-e4md+^5qy z#I1P>3kKEGj*aOF$w}TaeqYgt_#^SMk~Q86f870;LUd}OY`I=+ zvxSAp?2FjL;%U7W*fjJe3|Ev?GmrCNKz%2^ZRO275cNV1D+U=t=A|M)vO+42;F zRC&@Z1EDM$xsLHjZaW!;Jtm^Op#8)ZVm+_<*tyVpJYRZ?6+ zd>-PRBcld}B-`@TI2iV1`TG;gWj^BrfM-$B%7Rb8P@U5_jfES=i)RVIMTf1==M5Rp z@69-QR#q;7sWN6KHTJ2B{F0IokPxoq5DK5&sp;ze0fir}@d();1~e8HF@08gK+hzt zF8tVMj%P6G)HvT&lS=aj{LK*Ptv56@oP_9L8f;c5&kw9rvNE7-#1sNp+)G$lWD9m>?I^4kr=5Du5}CKD}6NH>3m7YJu#|d^kKhFu3ujM z$ZHO4{cviU&ZQtNsnzR#xO|wDk4`IW_fvXn4nuHbqfXPFZ!nHks#e*1B^@Hd)sIem z^R}~1JeDHDf_?|rn~z<{qMjmAh7HrP5<3_j|LwaIv%wn~K+`6IwISx<;GpSJ4aJ{2 z_^NqwxAJov^>^Z@emIPb$2TzO4fWEi{zJW_u76z%$7LtLwf+_!m+-H#Hm&{CXka%o z({`pR7S4LhZeWn%wM!U`!z_G>H`I7HBPI+W9gzS=(c2B;(fF`*2;MPIYynDdFZ;?`~;pH@&DACJ;(_wasy1Sg`WNo{C&iyvy-G!BpgirlQ-plc`|5kHJ8|-fJyREz4 z7{<09I(Gzs+Qs3bvb40clMB{|%zy_kk+W=hG@$iC7`InJeQ)F!JGY%T(`WsD)d`7Y z`ki6dHMgXH(#1RCaFe46;c$M>s~DexpySBSu5sv}iS75JMCJEyvo)6-+IBjeuRs6c zc8Vl-y3y-XEl^~!8BXR<&{RQpD9~G>ppHH2q zc?RgMAP0FJ1$?x(zh-(5XeLgh;h#j-X!}sN^0QYj)`kP$hPMNDD$pi0Mt?0p%+D*b zlRz?*h-R ziuCZEnWj~n%F2<_hMiSFl|LvG-vs&;V2JVBeI}Oy8JJkE-RzcH=^X+U(FYphUXNK`{JvGw8n5h&fIr7|E=N$V{*#(d@|O= z_Xby7Mcp6}zD+K}Nz(_eS@hH|4uYNTHdnzEhQC~MDLO`tFO zi|S4)J=m>p$OnYbv{2dr4djE?Zyn%EMd_wI&yE3564aMLk`CFQK)L7yOtOyudwxlL zv4oj%6Nb1N*k7bm;c3c|>as91LTD{m--+;XvX^ILNxr%!EM{iQ>pbk>`g6H2fP4SkSMbzb_I#^$$8WLiFDGTs1u+JO0CIAa;^ z*OJ{izspO{gZcn0Gi-_2?>|wtXyPjLcd7eoTF7teZcz1a`i6F>T?Kgbap{Vxa z9rs5vy7fQYpgZiy2Oe>=Zapc$a=yV0WdFE6yI~Tafw^QuVLK%5wAb#h*UoZ^qD+tQNf4NErr)gtcMkrCQ&eUnTh0>+s~$jWio+;kyM< zXPk&GAkfJJ4{#6V<3_8npHKUzu(>-c5EYv||BU2VX#N>S*$~cD(hB;R!lolt%n=gG z%0sQS(**kV^fX?U9bDi}Gt=#nTBH3_5O&__qRUz|A4?U6du{i$b~w6&yRHDV;s**KX3^*PVg z$bak+Y1<>YiC*B)xwp`qCIjKLXg_KwIRz)j1vm$uT+BL9!JSQ_<>TsZT#VLpic2WV zEf*G7-?<7G5SR3#?Vw!hRWrJ}hp0pa^3TUXM#l;1Ch#fCCX#SGeFF!Y8OkiG+pU zF2$C|d!MTgN`FyL3CLyQnP5hEab29`d&(%QHIuKEg`}zT{7ZOQr_06AioKlAncwG2 zj=R|W12;2oH-F&{6R3Se#v%tU2jCz@LDx;8L~PAx)Rfn~usLTqaW4jLJQ@Q*&{+S+ zlE!^KW|7UD&+i69%coFG2tDoA9Ohq#RhUg0#`S5G2EH*L{(^Jri4;yLy?70oGF>_uV9=P{r%;F$dlV4nHw}&56>c!4fuZ0vJ#g8()q6M zNxb&y8A2I^4QX3XOX$wU!Mr>Ozah)F+qqzKzFNFpxI|m9ESL>KtheFuPY%9x29;kd zb%BZK@wJelY+MOa;ls$JzCESyV#>&5>SsaWd|aG9zA z*^+dXxUe4PA_DQDBAN15Cv~aDMjO9&(Vq->Zbbt!$?%WmMh)trIeew{)U?*_;KE8N z#nJxo_6bazsmjy+r=P69)4eND%7HAA9aBi1WCZtP^-;Y{V z^_FSA5AUeOZu#c^rr_lSIhICR(kXjUQHD)xSvq+Ajq1`3<|KH?V!+u?%7598eIqEP zb*a*t`9Kr~y&DDsY8;fM%iG1;+js@K`rVSotE|WRR_w1KYL1?xn!FWzanUqP{lB~w z!*f8_B*uk-5zfAi6&jm+gByAd+;zAVy;o2ncqp9-}!$pWT-94+a%Bm}O3@FYQ~d zPnq@Hv49cd>wnQvvYzu&_+MLP+3|aLIGTP*`MNP3o@~oiSHNZ;eHJsxdD*lE>;0PI z0KW+%Q>HKE5Q@|OHtN5BVY4LrrJB-vZEisx79&Ne?%Dd~sK&ZSWcYN|&HA&-3_HLN zHUb3bwFy0kpSihf2B?FtLd1N01n1}HUp#v{XMgz%@t1;ey0tZtkV(t&a(@2{@gsGyg z+1A(So1wEkTMUyfn(aS&uy+b5{9|e-TcfPEyn3oEFsm&yy;8vi*r&)l-?`Ey z4@y2#4x<(m5W#z2HfKjWtUXV})2 zoZM-CxjD3m*;E5}Bov=ogBJDjy$u=HpkbLJOYxGZ|EiskZ)<;Q;&Ap_xtyjZtSdZV zbix0Vp8Yj7Ix)p%35Ibj1Qo&cueC~mw(Q6UfO6noL!(vZ!B+v!Keq6hWv2HIV~y?f zxA_ASf&mt|coHlr(}S_V=m@vy;|?f-lCqPu&lurOT=#Yc7-;8avJ)V74noK~8UP__q!dK(AfXESk?o+0QWe zJza(bkaVuZ{tC4nn;uYGb|i#hDx{6|c7}M9r%G`q(#0y6LMH@cKO27NC@HF&SIYF+ z=5Bd3dJIb49NH=*h)7CTwDuwtF7G{>Y_D*v7iI_-hx|1d=^z&WG5uQKb^Tl+RV0)+ z%R3>e=1oyj>#2n1c+1z3vuyY?lW=vb*eNkehPQO5WYD z0Rju(*}A_gj3?#ue_)PE6HH5WA_UAY0%#i^QJ+K{H(Bk`Y^%`F#OsvfeEzJ$%P66v zOYY8`P-Qb)C{gy1`uI!f!0_zuVz1t596bK)+E?GP4axTgF$r3v*lD-G z4o;tyIPm?_*Xrt)*^`kE0j5AGcy@M%F=KZU2rpUwjV?N~dG#wbLvvVoh^^Iw-q7ex zkBE*34{xo1!B-7%mB#@}Kza_t7&^HwGlT4ausxy z4<#kLAFPu)?@BJf`|>FgL;CgWqoMwjTZ-R(HPB2zvs)o{Sz;fuR@4a01y0FY4V-! zIP=A`Bky_sU9^fZe9X$b)(3_A&O$H71nHc9>Sflr56jSGh;32-OyZ+?S3Gw7)+=vU zg-JJn#QIpg#Gaxly2A2vKf3L`F z1mnPuWUKA8_jp&Qm7bJP#0gGp;T>)O3W#+Im1VR=D=-xi%**JrSxI zY4?xAKOafwGm!rsw5g+Rc?kZo@A&xh1L?Pk?VG2-kqhr16a!w#9I*Iu)e3RvrynFU zl>nAU6K|-ddH!ptR+`!b&>L|5ui-{xf2%5u)6@aRjPQt&vdUw@HUt)5+(v^$Y{`vWx09oengL#{_=D0}Bp9cy*t!>K> zN#Qv^b_Lj4?>M7{FSI904CM7@{ei}9(Fa@e`c=bFReg^Wm@Su6;)LcNdMdnIUpuW~ z7_bcWf5@0UMv`+TB}jsqsN24HCK8p#8=s<1ud20js5$Wrju%X=dU0T5vfo{6Wi9-k zGee3OBcZL=Ii$)0Z1eL#hsS0i0*$C(0F>m=4}I<`aJhD?U1DPtG|jS1eOWH^)m*u0 ziDY6grG_~In5tw3oR}==UcM}{pd9m#SXhx)L;!07%Z-5)eeZ1;IHNf&>DSAy7`+wW z1}%WKGzbt%1*gLBda{twOB#udR!Z+J<-6nP0Q2F@dBFQ-7fiZ+Ivu3DkS;vz-Z zij3@MPvvyUg3Q50-UTc?K7HvHEt&=VpY(X7&ab}YFxW2M(G5Q=9-?@7U^d?lS9 zT?0TdhyhELlTP9Lr%^H%zI30odqGgt&)b6wHpiMYH6Qb62^qn5oe8SYpihDsN&rCw zy!1oqBp853+5#Rg*??$|;>4@)SIPQM-nsD7+;4GX;ps>n;wW*)B(=V_uUM6p+J}0; z&NkHe-_9QY&}tBu`_xq`$@*k;*J1S=x`@zTj8A}#;M{!I;=>X8f-ejyqy)S0O%InM z=p`DKCez9%{qrb!=XGLURNMo!^P^mt29wfrYVSxXe0VUjWFTL=a)2~&Y-Xk(FjAqd z{?CELfrcE5Mi$S#(NBj$zPpU0Z1(kE<<#yR^`VX2%AuYENAmKW^Vl4%(;+*dqg98o z^43?Hn&=18?wBtLs!%!1A1;||0lwwgEYc5W`UUuFJAb!@&PK9s-UH88m&^G}$Nm-d zuk?8L6Gq~b2tSvW%Y%715E8ryVtElX=;y;TR%t@|(px~$%Z(nd*WiN-yC;8=u^h*qB9J*WB`XxQ_L$b z52Te>f(@nfb8&I07#apH{#yc9gTs9Sl7(i%Py+G(iaBCh_{JjkAHTi_e=TM6*DpKR z*%d1f`LPsh0ljK#%XqTHpy{}KSLpojA}E7Dd~C*V7gx1a$O?Ey*>tDQH&4;j@}x#c z70_zN3JGcr-B^qA*Jp}}FZR(h4ga@vgd>MZknI}%PY(cF>B^zCjFpRQs^E4BLo`(% zU}j#e2H?+CRvPaPWG4dyDRXEy=$$~Jl3-GZdcFeeV6I*voiFy}#95zJ+vsb{M3-+vw4L51-_8bxa2kX0hTg zrL}kb2Y)NA(uMG&**?Kiq-nMN-linGFfRoAr`n`g*~=F(VA0UJXo00bCv~ z7GSm*paZA@&x=YcrGlxMdc((N|InSIi={zUgh?8dR@YwrgFqG1T*xW1vNWgzOLH-5 zCoc~UvTz{rsNOlt3%W^d9Y+;8BjD<`nYCE(JchbEEPhi|4K)v@{1~H`^aWVPR#hbw zf#i61H-+DY4xN}ax1}X>Y|PnJcop*!d2)Fnr2~qvl^Xyqaj8V08KYI|4~mC?j6Zs{ zV`FizM1C^#$57iOS+BVI@ZH8mzq4631y`%Kt`=}KLcu^R)hMSYvyGL}#iC@5jN&rI zt#7`QiI8`U(O4I`8ls5N zzg6+XhMpAg3Lw5qNJvoA)9V2DPKt=105^B_m9NO1zo=3{Wi)lQXdR{g$eGfCV4~b8 z00#hv9*}^60Tw_b;3Wov(=C32$XHeQky0RlJ$Ekm3x(%LsXXfbN)3u163VJ%eIUsr zO!SkR;)?uvaWwT>iJX-;>#-aAdezUPa(z(K>SFZgJ?PO`amhiU{6MBkD4(1e)nPIm z(|vYOP_mngc$u1iPG||^@4nSmwoDlS!R?jD=&&`bCUVf$F}y(8GU?6M-Y5-Ybp`WrFFQ)FvzC zR$^rY;>M&e0o?TJRLOYbbNtj~RU)CXkc8vqkcpq`;c zrR&R()K*^1pzgxTs}b(3uKnYmQ?>~S+E|%rZ{GctsT7pibWcwYU(ujSdMmC8YC3Ad zde$%))YJDtm8HSCK}g@J!;U;)re5g$C}?k?f&Zsf2=oc9EM9mHV9J7p7@e7EFVZZQ zDL{Z571&nWd;G9|>)tpa4_WPAcBGcY<4OC&yO-3La(>ns*5fnc_H)>#cVnyq?L8=h zViuM+^uOSsz{TTWLWZJ*t2^I)+VP@9_x0tNie%~IuaSR{+bx$Y-1$!i-ute&7@4eB z2CR=0D&rq~JX|fNC?p9HGcXVaT2znkU?+u1C*g9qgRc0E(edsL;`G#$R+OeM>cwVKu!A6;G@Um2I^~Y3!R*xfuSN2A3i)!OiX<7j27&9Aqs4e^Q9^Fu_IlO zVvJD*txFy*y+I7*{;nu&l!1uzk>?Z_M*y4{#56F`7$1NX5gN!LIyD3RC=%?ywTVzaT4#gme_BRyK zi1G3H-NDyFn9Rw^na#%c&9|yI7vJ;0WEVL3_;M*_^nF93=P=n(*r8YGI&cLSS7GO^ zO-mIH5mo`dgY2v25_cu2J4a=dV2T~tWQEf?d~dEI(^VkSq84mN;QpZ!h1gMyUF+u{ z4QT_`mn5S8LSR&h7omCgfAPoO&B5Z?B0;4;e>M-J$QK}(b;{nbeYgBXmqnb$n2GM; zW||^}l{d?#%p$9k6b9e#&{hivQN4`<)s`pn{l9K|oJ3Qo2DQjml?a?mHiZr|-h$nK z45MM@veL4L$lV?~JXFgYvlVu}zwLNvo3A-2c@a(p6Wg~MMUYeBCH_YfABOtL^ zty3Si*to+#2I1lzh0&9O*{(89AdcE`q;8+Df9QYN{#1fN4jjEV^~zPhmz*1-QFgzN z+bk=maA%<+EGqXtXrFYW51*Wf0;d)|oGuG8u1(&*Dsw)HTCpsS>UM7<<1HQAw>LTM z4yf;F*QdOj9~9(uZ~S~dDInVS&rP=&@yZ#nl0&`dSz!;d1=+g-iVhBIf80t(D*(i% zLcG0T$})KHMnxA~dj&8Db&AF@QkAyM;k3)!`@QMPf?>qY-kwApkVEjDZVt1dY&;pY zqR3|pTWG+J?Ws(>8LIww0~HaC+f(8i-Qo&`J+X2}F0$x3@(la(Ay=($A&}?G1P^{a zNRmmh@z-7xOXj; zob@sWx+3K*Mj+Wn%&)|GRC9|6*$pr05Q>aCjw)fUzbC#sev#eGEnm=Y++XD$)R57ry?NcI< zM<8MekxWouXt81R|4QxF+g)4=r1ZTnD}s}elJZ}##e1zr^4mO->YjD0hd&g2|3I-bJa^TaxDCUrFFJ2sHEuyC;outas_Cvz65PBq+%itVsVJesRjQv-?Y~)c>{!TIKr6g@{Eg ziSW!7P4-zMB65*#&!C({>gD|rs080hInCoNwA#W{<2-z!aaAnH@%n~SdAT0I(1&B zw~^`=YP=?L`8M8XeifX>wAfnq9&9&ZGj^CL*eC zGH8D~xNfRINC#K5;hgT9f^xGJ3jIah+1BnaUM*-NxE4#(Lf*uysc;LjM#~B$=F*eC za$VaI?2eq)zEw4Zet@~LR7UB2%TxkFj4dmhJlHT+jRREL$0o)+2iXMGJdYPS>MT=o zu>z?m-}(&`kM9E>-C%l8!ZbRGw&>GF#Fu>7*BFJ4|F&4p&Tj6l+&6#W7(zjdbb}i$ zoaz!F7t=x-E^XB?)IEE8wNm1{OoOV0=Le1r;N256G&q2=3&Qw(Zq$*N<<@<4epCvc znNhW8M@_mzm!V+ZD}CllmoR0Md-mAV)=Pcv9f1~J1ncfDawk_J{@T)CPEI<1``Pe6(KTw_2_5@agHM7x*1NZlW8@%Vk_{YV+f9~*ILV#@8RBtkPlfx% zQ2>w^85!yKxOjDp*?S^r7xs_X7c%4w#tAu#W)+!Ea{lpb2R(T5(0u+IG?r*uRRVy) zMZ))~5*5Y}_-!(ne$=Mj9fPi-U=>s61ADaFJGWi_G*QG#8aaC5$DB=A$d7TgiP_=>lT4;w(A4x-IRJPdg@^S2xCcJ)*ZXk9%CgB*n^MZ&x)nJMxRH-078)$-rjpA%3HxB?hqj zmN;kMKs?)`kW4v~?^5~uWs9UT&FVXQO7u$F7DV@3`1G(V@)LqC#y8UuGr1s}ijAA2 z;zBRzNmi{RZ~p5&jpnTISo*3Bgd zlD_mD9@^Nrdfkz)>iCb`e^!u#z-3KHoAoinUTkapUq@E~4|gBN)#+xsPK{w=YH|+K zCpRXhySt{&IW;wHP9J7+Om}z9^rj}KnVEe5ULTy#onQQa`8?kzz8(tuE&#NK`j%Nr z1Z=pQFd+=oBVlM}Cf*rAn9Ghq+dHyibF(*@cOfIfSFJWzW7SH-Gm?OLZf35^MZRVM zu%%IcT$CIaOMW?0H&v`$qJ!DdfJK~65IKTe%hPfS$`!fN#+($szIQzu#r#z^Tz8-C z*cBqt`!0rhu(=`4U@(`Vw28fpU(FmiC;!kH{TUPSG86 z3hX3Ds*a1NcF`t@Ja6}P{+shGWO;Az;HN4@z^A?7U_&o&k;%20PiNWN(%V5R)qjT2 zgh5D{OincWHX>qdczEO%gS@Ya(wf>t+L3C-f+DJH5oG7$5IT!LWuQ{u6~m;hH6Xwa z_}O5r^mM&sEc{eer4$%wRGHHihB>xzRm&(oDO_wemY0|QO79;*q;-!wE6AkDRcNI} zuED{Os-Q-^?zJ*Uvhw*~aIy;X-LCuvgK6N;3|6V>+-LUM}EF(EL3m6?<~lhP9{+PA|cxJGuOy&CQ@DRZBz1^NWkFvsU@Eb0;UK7f({@bX$yY!=_L10Wh&sxB^ys z^V(0Fnh4C!Iz_`eWl)bQ`zU?pQ@g#A>D1qy*s1yI%J2{h5+=02)W%-An3&g~Ks+~C z<-YdSkT;m9E3ZBgsH1A#gvv2b^lRyZ4sxXD6#W%Bj1yo`PT%~mPB_y70v*A4S@aj( z3{)@w5|F609(PN$o*|Fu+$~KIznHYdb=vBWlpN}P-JY+VK#urA=WNuh0Y4JwX zLQ#-8!R>1ERpgUeBL0G3O|%_bK@voBW1XHR_ddQpJEo@SpUjn<79@^}cTMAK8R*ke zokQrfIxHmkpW{cpgFTH{<@3eAx-8bQ*1A**d^)@}8nJyUDwesg!2wY8q%nK4-d+5< z@AS$h+fL=+Kmk0l+5pNNI5jsXRy_B|4zc3Fyr1V=%5V}EhF)&kA)|H9H_~0erhgn4 zU~+U)oz`3bte8G`+rRzeU*l3Io>!axO{3)Z7}-p0Fi4CsT^5)FZoV}ROuz4laK8^x0b<2bW0Jma3@xudx@tT|a(;WT~OcCbPVkSjV1c09=(R2c#FmZNvjLu=-CITft@Cqq# znoK%(%=ie9f!TqxD_Gf)(jaACfR85aKx~i0>WNIs!n@UumSdA9&r>qbX#s#&3IVvb z#a{lKI8stk!2`lU2X2CZT#h}Ebh;@!-sje*17@@ja6baJoyO4^=Ze?@z!Dr(gxD&D`xa62Y z=x5UkfC(y`2aHOPY92Y1^Dg|pF z+uV>?p?(sBpf8ErXfCC@z?#SHP%(WKuvw5m*&FeO&2WRpvL2sA%HA*mGI;AdVt`C_ zYGEOX!V8Rb*!Gv{-Sv_$25Gf3kG@cS5j#^rdyXo~ZKz`z4JF){tsY%KpGGS&2Y;ci zTG>l^exuCNI8nJVpE$jWo5XFKS4Dl)cw;*CeJWn|ey@a!`4!j&?p(tN;6T4z#C*N# zaEfabS(5}erR4cX?Bh6;Dten-1OJwnFF=cNs?NFY(ZH;}7jyRy=R?$g&a}~ z;Ct>E#zxH&Hf?(r*D`?>R-b%IMKH#m!Xz^f|3#}+wUKSVJ!irNbAIKH8L#)_<3@%r z1)q}cE2mgMi}j{ZNprRmUOQep|9nMs`olS+5f?^mr#AeV<04Q;W&72(xgg4s1ZngT zlUo5%S7U;SF&6SzW*;S9utMbr1Bp}xiPY}aD-OSJwA<@2Uz7L`(?V%doVt}e2z$g! z#R#)OV2uufbbEWKrtO5Gkq~^y40@ax^2CPMupXlVhwh~NS;CsD<_%s@+Yh$_K?T++ z<5HdN;n0|6YiI=!mfHG0R$U@OU4jTVuc(e;0Qrs+D)IZ>sHq=T*%rS7J6-rd9B(Ez zVb7>9`T{!J2ry5?CVl9Z`;8^7EJiAg-QVR>ps6@_w3j!B|!`_}?$ro(ZCNv=7&Jz}R zmj-WUaU9Q=ugmg}eynq8Pm*x#hS~0@@+hdOuKF|S&MJ51r9gzKl!V{HyoAE8P_CV1 zBd=d%aV~q&?Y>{}G~(Ix{qq5vaAf#GBmLO8BbgeW8^cKy=4THg9D$um#XQfPHTj(K zGADL$kqkzRgyn>g_rc<=Q*;24pf)|Rbf+jW`~8Yvj}L1#GHOLp!;uDoHxm7Vn`Bs5 zYjMPT?Sl?PxyLowJR|tyn3J?$#h;?L^=wwl1y*#4th}!b3{-1$7(mketW-twhTIC4 z99l61jNE4CO7+QEqyj~~$0#?iE5pgn=RTTjps#dlY^IASFxHPpAZb~Yd91ZT#8XI& z$}t`{6=4rt021q;scMf{mS62eBgII15n1UiN|GMS3WlpkbI}T!qQrG^$EJ~#=dJVL zJM1L8_l5GfU|kMXNH=Z;C61b-oLos>WT6P;baJiX{jUmB2yP}F9G9qx0A1cOCtr8+ zY$CVQ0|p`Vsa?MT!xKNfNl>heHA72Ff%$fD?f6GyY4Uck;5>XnaV|wvLl~OA&b9Ne zM9XZ@L>c{?g*huwp^)|m@|S+$RJsr1lQh4C)>ja_diWG0@DU^&1eQ;Djv_5zQjwd` zT%~OmE;7~6AcYK4?lujk*JFd(y<=fHzSyALd^J3K0eKiHq*!a>jLG{6s*wxm9=YF{ zMog>ib2ur4^X>H6jK^c(E}__&n6Cy`aR93bKQBJ1o8JtT`2bxtV1e+;SEVOr6YN?7daNq~96ywo~5>JmV^(Q=h zEa`Pg`w|>L49ak+*X-mSBG( zs4m?k_{`9;>lB!~>S#9Wyu9B|rf=!aGi#5i*IxbmI?KjHb0_^WNOpfaykM)DwkR2| z=z~g;PPF+%vT_OeVA1rT)wEk}g1SVUIwz(W62kd62tVg{_lOm+N2DhHbm%il%|)CV z`{m%w{Rycw=6~Fn^E;kYW7A)2_}-tFil98snFf)Y#jVjHk-i(^N`tN50~6NBCcIDpK&I88 zlx;9ll@$qn_?@f@2L4Ef{sW?h6>2ARhp=>_v2=#ei##FO3YIdF)(SxCHdA7)KEMSY4tUNDg;fPhH&$)&DXwf~ z!X!J&Bs&J+`!zeplFt`Zp z?gARg;J@6Ij^Ln3&Iowon}M_-jTdHl9n?WTkUIy55K~R+tLB!exuuAohfmM{`dH>Q z;M@kaDWk~SYrRcY#+si>i6witzS)-CZ#r!iT+gDIDSv^3R~BlDR=D%~Hi39MvP~4- zP7|C-^Fl~az@t#$iLq>>ed6@sOI&rDVi8sgGsA@=KKhdnI)IrdudWrt`cWzuUzNf_ zwki;aThMCp6nHdMe=S2f9-<1pi>7t=7h(A#W=o=Vvthm&buUv2734@v$GR`Vby&`A zu%C~Td}g8`m{KilC?PO8;M;L>l(RMBX_hdYTF43dISc!FI9`4nv+8>+u&Javq>iv( zlKLf!O^eS`>Lkn|okL4y*UvU3zBM~4uc*Pd^?G7pIqP4BktFl0uijDVW3>K}=JTBK z>LX9wqfScXffMTpTmIWD?>CD!j&Z*hn5qF%mV z3tI|_q>+qG+d)4}j-~hmb9f@hbvF$fpo3r=+dL|Eid(zoT1KLl`pxVnojd)JdTp5o zy3|)+xpIx-VwyxsOUt^l%jgsePnNYqlcn*ioox-oO^G7@48g%?Tluxjz=7tq4lk;( zKhTf7cAs)U^;%e|F5$cyH+d? z>rJ3jiq>ONdaoyX9){^z1Dy_Cuz{)nf?9M8W{3f&T2K8MDhmhj*QNBrCCiDF@e7ue zq>_Bz?f& za?eAt9(jHiv~?lc()(x1^LabJte*JQ8CBkwW>I?DL2G{8hS!8<2n z>}t&x(D1L!TZ{;~mv@}kgAk@_Y)4KOL0}C$trHe8`;n!TpMvwPuKKbxRor6}&%kFCuQbz? zq(}HR(%gn%PyIeXB%f1_Tfsu`#pf5#D!DmPQHYiMY?2Nq)?_MEmXSb&^>H5 z&*haq-+IwP)F*VDj~DsCi}M&xp7GqhEg>etyfgY(IXW?OZ_n2`h*nb6Idt1Us((GB z!;X7vj=#S(B34_Zia1r|O#6*ANs=8ebus@T{RM{M?mG~^A9p;AX>T%|U}UFjX(gF$ z6|r{orA;0C+Q+3Yhta6o_nK4qU@0!_PKF)lDsksX=}G2stgDqtgR^Al*kKra6p);J zH(t-S9j>%7#x&>sR7H~m<<8fH4CoIxm*3W?#LcTI~pLR z&Jx|nTCK?*&IH70ab?`2pLkO8%uc`Zr6Q0>TVV0Q+Zup`A9c-nqLSX|!r1B%n?)E#S#m zg$w@mr^+_mo4xsDzmQ~YS1A~C#HZS-ug1XV{KUZPmtbjzQN-!6gTe;K%55kYi6#T z3}ce;9<6p4;A4|ba1%#Ed-UOfBfyAHgXOtEXjnVbxsUJacj~$I&94(?b6e?XQBHKx z=m;1txX;SqhQO1_$7M0Jf_`qDdgWR5e#VCT@{p~?g5cx4A}8W?lr^bEDg2=5{!<;o z+Lp1I=3`2wh`|UF#w6p9!5@RmlB#TWhWI+)cJK(;?P0gqKKcIlG94e1?7MB6X~0(4 zEGYD)6ULiLV8E_F)2}KN82I%H@ftKU#3o2#t0g>V0&X5R6Y898=-WTk73MUYUZS4P z=dNV1W<@!Yvuy|s&7Wz;2hG6n&xyY2Z?{vJbDsm)qUKK%de_Oyr zx1HX%A3mY^Q6Nc$=!rA-0PfGQKRcS=&%JIvK?LmuVgCzQO;_Y8O?PKmfaKBLb0 z-5%dBMCa3sN3=@-9{vY?*if2g*Lo0K@Y?tf%`T8(*2S7x50e!2HQScnYxCWyfsHz` zjz_TxhS6R^ySWV=qT$3N(Qu|Ig05~MKsp{OjF|L4Wy1x-fB7CDxRZdr7T_jpNG!Zw zl^_lGC!pTwj$Mh|9B3yKT2i)Yjd8)P*F@!Y5Swh10wR5Hqc50{!D%_R#ifPz`x*6m zQSDFIqsKWh|Nf|vM)$A!uYsKEW~&RecaE(y?HwQ5!@=t`yEg&U7xAK$sNVIRU5A0a zl^+SV`m*q5wlwoim6C^yze>B=_(i%yXy$VZ_`c@xZv}oqXlI-8u&9lgN z^~eM3+hW=zMK@}I3UtTs0<-TcLl6fF{dIvNR(^UWj$?}p{=M%>fg4LH3Rk6Y1T5=o3CmR><5gueikylCr%&{@CJe4OfwPqG_C zkF(!X=p#S!8Cq`j29Sm+*ECdK`t`gTXYjZxL!{NV+!y%=7L`2t) z&jGz3(8ur>>#h|Y(K>}SIy76-!*nEgE>}^Fq`>J-3Q=BbhJJ%ND|y=PK_15CF`QJV zuF_<98Ly^~EI%)@v&R#H%YB&|u)~W~>Z3fLY-4sMAOnh3eP_VHziRXi0vd=3Ei2P$ zK1UPhf>V;Ja&w`~45q^} z&@c>y2@`Um5}~L>8fBJDn$TG~o#7MTNmeTi!S{_s=gkaw_!3}Hx))v3(o-HYC&+`l9gjAD=Y*f6mxPAn zy9Zpb!EWUYGB-JUJdE|D%uk41r4Oqj*#pBu4_S`$l;WG%xggYY3 z|IB^kzK!@Oeo6Um|FQDX649E%DS`iFh}sjp!XnC=k)M&a+ut`XT0)}Y_}g&@%nwL} z{9%X9ho_i0S-x(1FNJ>V)&oY*bj(JWZkT#%h8p)ts^np(lEahLn^kC0y>mo0@2cB) zJ_?JFVz;fu+}RI(JI9~1Y+Rb;vwqb$((z+)X5gVe)7C_8LQDIFNcPovq4LeuwwCk{ z(zM&GJ_a=v57WkKyk|XO~0w4#KW`j@B^+fgnsD`qpwa=EKq7 zRJ@(xvbT6t_m`5&vbR`yGr#X|A!rbmHcR?!O_Kzpl@N}fH)##WV*uskgg4g?T%8#> zSQl-v5xhCNvYiXk-hO>$T}FAwMN%8q5wis0%M zb0fA$$1R7R(eK{u%mmEuQ(?ohvhbz$V<0@~i`vxRLS}Une%6t$&V-}>KAwcG;SEi* z9i)2iWBW_n7@HIrbZ|!Zl}UJP{2St%1H3#S34@?WLStCiSIxE2!gr(`C9DWzwldvTQVsvnFq&ZEa*?0P+#RmUV{_aOx@z^#a z&}^UX8Y!j66nOMFT9bI0hQ4ogjbbA_85*T4YJC`l##-F>PL!Sn#kIaoklAm_^U((W zNdjPeA5I;>s0g%ieG)AUnC_EbJe|7D|lV&~K`>X!lV3y>t6!I|~5{!Pq&{F|NNg4c3Zz3SogWxih zQ+XNmZ59SZ_oCa;4;JBF{cH&IwF9M^&$1Bm<$$=XspQJEPvn*&8U!D`xBLJ{{ z*r27>24vCNJonjmT7|PvG&%f_DFC%_1GJ_U+wv6Qu8W30quV z-~A;pFKBvYw(=ISJfuL!e*s7UIE8StON4q_9-h=#~yZ< z+-z1~WUX`nZpM)4h}~DEQRCqyKgyTKmhVxo@VEI}@JXbr>Ef>G{d$mEE#h3dAbonF z%v!a)kUWxx;D4g6*E?IP<|BNP>K5 z{gEeH$+#(DO&f8;&np#$!uN;|Lw_v*!3vOg!T`5$`wg|mYuTd#`l@RznHzP?QP%hA z{`dx378}jY;_Wx7A>rGC^NO5Z-f>@z$>Q;WRn}cYqq90kA`?ZCU=(cx^~Z4uu0)U5 zmMW_h*0NB!x$7=G?n^L^{SkOk-O7{6tHSI&?0?ULMjVqHJ}%`YBwg?n%jIg6Puyqa ztZ_F*QPK0F5M8g&X*uL4+2xk4Y_x4|V7vts7Zj95%_*wz_#5v|z4OKuy)1&QK`Nf4 zqlT%hv!n={RD@_b*n^1a-(E&$~MzcjaZnUebtK*Y|U`poq z!fW^C**J0CWgqfHv@A0Hj=QbruR8ypBnKXDetd}wYFoVs&XPe=!gQHwXgVJqb+_VoBPJ3&wj^Z9g6JTFiP> z{a_U%sjl0pHG%s^i7brhx0u$TiW~r} zpqY)VEFnM;<+t4Y}n6R}+Q#`s%o?mkESE*=yapS#4W0t1*k*4}#O)~n&qjTdb9uwj54?cCB;ZYX=c5pwL(-xHG@ z--*hVrms4eiq`z$MKS#eFsDx=HYs< zyL&4-V8gC%gsCs6b5oErWOWQM3!4v&GhX&H-p6&^xY56TTT5@ao4?*qS6xW;^LqDe zQhz$?w`(ieC%qU5G=>!Uiw3J4#DIb7eC8!255N7c|F+LM-83fV8%5(Kg>7Mg97sxE z&L4jur-?8<=pV0C)23MCU5^+`lCs;Rat)ne+Hc~}hUF1e)rdrWv{IWvB;_s6qCg^$ zs&amBV5-pY_>TT*m@19<^|~0VkC&{={jC1U422_L&OkorraB?UZxZ`+e*Uwsh89o$ zaKHYgO`h(Y;YQ8(1oNI)dbe$)uf@UQwHbYqwSFZO^tpp_`f`;@~FS0fUD8mtTkk$|S%HPW(` zr6EW1f?Lt|p-MO@%pY)i=!{O{;qBRH0!m;!BCcp&~FiHCBu>LGf5_ltuY`axVY@a_K$NGVqzFa;krE6a#mcCEDMu2KzK#nnvSX0I7RLunX&!6zZ{GvG zg?%{6qrQIrloCKPzMgnr-M0j3Ca%PK(^|hW*tyv@BV+XajWdh8~ zl#>XrQMDfokMINDGLpPg#RXe6a|E3eAQ>p|17ye_zz-eDcmRum-DUZNJ|H2UZN-4B zMF9XU=)`TAg)iio#Ryw~C+t!U;28-0zeAT;?^4!)vXtj@>y!3Vc;F(IO_To(=2h^= zO862=5B1ErX-{(R{PTI&y7e%XUo3px3AuKv+^GizS>TBn0>(Wmm=b;3`FS0$RsILJ z&eg7tU7J&e2GlKyO)j$ne(1 zynh6um2WF2(&94`Ws?0=bG&Wq@5j7lh%tM=AcMy9njr$n4u%>Tw&=isQ$iTf^GqCX z*-&P9VG>XZol#tH0N+TA2fMO%S)&d&YPrLqqRQS$>R3RDJ^LQ?tpEF-P0igWG~i1` L5vouLF@yaF`QC3= diff --git a/vendor/github.com/exoscale/egoscale/instance_groups.go b/vendor/github.com/exoscale/egoscale/instance_groups.go deleted file mode 100644 index 52bffba9a..000000000 --- a/vendor/github.com/exoscale/egoscale/instance_groups.go +++ /dev/null @@ -1,71 +0,0 @@ -package egoscale - -// InstanceGroup represents a group of VM -type InstanceGroup struct { - Account string `json:"account,omitempty" doc:"the account owning the instance group"` - Created string `json:"created,omitempty" doc:"time and date the instance group was created"` - ID *UUID `json:"id,omitempty" doc:"the id of the instance group"` - Name string `json:"name,omitempty" doc:"the name of the instance group"` -} - -// ListRequest builds the ListInstanceGroups request -func (ig InstanceGroup) ListRequest() (ListCommand, error) { - req := &ListInstanceGroups{ - ID: ig.ID, - Name: ig.Name, - } - - return req, nil -} - -// CreateInstanceGroup creates a VM group -type CreateInstanceGroup struct { - Name string `json:"name" doc:"the name of the instance group"` - _ bool `name:"createInstanceGroup" description:"Creates a vm group"` -} - -// Response returns the struct to unmarshal -func (CreateInstanceGroup) Response() interface{} { - return new(InstanceGroup) -} - -// UpdateInstanceGroup updates a VM group -type UpdateInstanceGroup struct { - ID *UUID `json:"id" doc:"Instance group ID"` - Name string `json:"name,omitempty" doc:"new instance group name"` - _ bool `name:"updateInstanceGroup" description:"Updates a vm group"` -} - -// Response returns the struct to unmarshal -func (UpdateInstanceGroup) Response() interface{} { - return new(InstanceGroup) -} - -// DeleteInstanceGroup deletes a VM group -type DeleteInstanceGroup struct { - ID *UUID `json:"id" doc:"the ID of the instance group"` - _ bool `name:"deleteInstanceGroup" description:"Deletes a vm group"` -} - -// Response returns the struct to unmarshal -func (DeleteInstanceGroup) Response() interface{} { - return new(BooleanResponse) -} - -//go:generate go run generate/main.go -interface=Listable ListInstanceGroups - -// ListInstanceGroups lists VM groups -type ListInstanceGroups struct { - ID *UUID `json:"id,omitempty" doc:"List instance groups by ID"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"List instance groups by name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - _ bool `name:"listInstanceGroups" description:"Lists vm groups"` -} - -// ListInstanceGroupsResponse represents a list of instance groups -type ListInstanceGroupsResponse struct { - Count int `json:"count"` - InstanceGroup []InstanceGroup `json:"instancegroup"` -} diff --git a/vendor/github.com/exoscale/egoscale/instancegroups_response.go b/vendor/github.com/exoscale/egoscale/instancegroups_response.go deleted file mode 100644 index 90fc1dbac..000000000 --- a/vendor/github.com/exoscale/egoscale/instancegroups_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListInstanceGroups) Response() interface{} { - return new(ListInstanceGroupsResponse) -} - -// ListRequest returns itself -func (ls *ListInstanceGroups) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListInstanceGroups) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListInstanceGroups) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListInstanceGroups) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListInstanceGroupsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListInstanceGroupsResponse was expected, got %T", resp)) - return - } - - for i := range items.InstanceGroup { - if !callback(&items.InstanceGroup[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/isos.go b/vendor/github.com/exoscale/egoscale/isos.go deleted file mode 100644 index d9a0ace82..000000000 --- a/vendor/github.com/exoscale/egoscale/isos.go +++ /dev/null @@ -1,94 +0,0 @@ -package egoscale - -// ISO represents an attachable ISO disc -type ISO Template - -// ResourceType returns the type of the resource -func (ISO) ResourceType() string { - return "ISO" -} - -// ListRequest produces the ListIsos command. -func (iso ISO) ListRequest() (ListCommand, error) { - req := &ListISOs{ - ID: iso.ID, - Name: iso.Name, - ZoneID: iso.ZoneID, - } - if iso.Bootable { - *req.Bootable = true - } - if iso.IsFeatured { - req.IsoFilter = "featured" - } - if iso.IsPublic { - *req.IsPublic = true - } - if iso.IsReady { - *req.IsReady = true - } - - for i := range iso.Tags { - req.Tags = append(req.Tags, iso.Tags[i]) - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListISOs - -// ListISOs represents the list all available ISO files request -type ListISOs struct { - _ bool `name:"listIsos" description:"Lists all available ISO files."` - Bootable *bool `json:"bootable,omitempty" doc:"True if the ISO is bootable, false otherwise"` - ID *UUID `json:"id,omitempty" doc:"List ISO by id"` - IsoFilter string `json:"isofilter,omitempty" doc:"Possible values are \"featured\", \"self\", \"selfexecutable\",\"sharedexecutable\",\"executable\", and \"community\". * featured : templates that have been marked as featured and public. * self : templates that have been registered or created by the calling user. * selfexecutable : same as self, but only returns templates that can be used to deploy a new VM. * sharedexecutable : templates ready to be deployed that have been granted to the calling user by another user. * executable : templates that are owned by the calling user, or public templates, that can be used to deploy a VM. * community : templates that have been marked as public but not featured. * all : all templates (only usable by admins)."` - IsPublic *bool `json:"ispublic,omitempty" doc:"True if the ISO is publicly available to all users, false otherwise."` - IsReady *bool `json:"isready,omitempty" doc:"True if this ISO is ready to be deployed"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"List all isos by name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ShowRemoved *bool `json:"showremoved,omitempty" doc:"Show removed ISOs as well"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"The ID of the zone"` -} - -// ListISOsResponse represents a list of ISO files -type ListISOsResponse struct { - Count int `json:"count"` - ISO []ISO `json:"iso"` -} - -// AttachISO represents the request to attach an ISO to a virtual machine. -type AttachISO struct { - _ bool `name:"attachIso" description:"Attaches an ISO to a virtual machine."` - ID *UUID `json:"id" doc:"the ID of the ISO file"` - VirtualMachineID *UUID `json:"virtualmachineid" doc:"the ID of the virtual machine"` -} - -// Response returns the struct to unmarshal -func (AttachISO) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (AttachISO) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// DetachISO represents the request to detach an ISO to a virtual machine. -type DetachISO struct { - _ bool `name:"detachIso" description:"Detaches any ISO file (if any) currently attached to a virtual machine."` - VirtualMachineID *UUID `json:"virtualmachineid" doc:"The ID of the virtual machine"` -} - -// Response returns the struct to unmarshal -func (DetachISO) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DetachISO) AsyncResponse() interface{} { - return new(VirtualMachine) -} diff --git a/vendor/github.com/exoscale/egoscale/isos_response.go b/vendor/github.com/exoscale/egoscale/isos_response.go deleted file mode 100644 index 2faa45a88..000000000 --- a/vendor/github.com/exoscale/egoscale/isos_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListISOs) Response() interface{} { - return new(ListISOsResponse) -} - -// ListRequest returns itself -func (ls *ListISOs) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListISOs) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListISOs) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListISOs) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListISOsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListISOsResponse was expected, got %T", resp)) - return - } - - for i := range items.ISO { - if !callback(&items.ISO[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/jobstatustype_string.go b/vendor/github.com/exoscale/egoscale/jobstatustype_string.go deleted file mode 100644 index 298561608..000000000 --- a/vendor/github.com/exoscale/egoscale/jobstatustype_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type JobStatusType"; DO NOT EDIT. - -package egoscale - -import "strconv" - -const _JobStatusType_name = "PendingSuccessFailure" - -var _JobStatusType_index = [...]uint8{0, 7, 14, 21} - -func (i JobStatusType) String() string { - if i < 0 || i >= JobStatusType(len(_JobStatusType_index)-1) { - return "JobStatusType(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _JobStatusType_name[_JobStatusType_index[i]:_JobStatusType_index[i+1]] -} diff --git a/vendor/github.com/exoscale/egoscale/macaddress.go b/vendor/github.com/exoscale/egoscale/macaddress.go deleted file mode 100644 index 3c1dcaea4..000000000 --- a/vendor/github.com/exoscale/egoscale/macaddress.go +++ /dev/null @@ -1,63 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "fmt" - "net" -) - -// MACAddress is a nicely JSON serializable net.HardwareAddr -type MACAddress net.HardwareAddr - -// String returns the MAC address in standard format -func (mac MACAddress) String() string { - return (net.HardwareAddr)(mac).String() -} - -// MAC48 builds a MAC-48 MACAddress -func MAC48(a, b, c, d, e, f byte) MACAddress { - m := make(MACAddress, 6) - m[0] = a - m[1] = b - m[2] = c - m[3] = d - m[4] = e - m[5] = f - return m -} - -// UnmarshalJSON unmarshals the raw JSON into the MAC address -func (mac *MACAddress) UnmarshalJSON(b []byte) error { - var addr string - if err := json.Unmarshal(b, &addr); err != nil { - return err - } - hw, err := ParseMAC(addr) - if err != nil { - return err - } - - *mac = make(MACAddress, 6) - copy(*mac, hw) - return nil -} - -// MarshalJSON converts the MAC Address to a string representation -func (mac MACAddress) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf("%q", mac.String())), nil -} - -// ParseMAC converts a string into a MACAddress -func ParseMAC(s string) (MACAddress, error) { - hw, err := net.ParseMAC(s) - return (MACAddress)(hw), err -} - -// MustParseMAC acts like ParseMAC but panics if in case of an error -func MustParseMAC(s string) MACAddress { - mac, err := ParseMAC(s) - if err != nil { - panic(err) - } - return mac -} diff --git a/vendor/github.com/exoscale/egoscale/network_offerings.go b/vendor/github.com/exoscale/egoscale/network_offerings.go deleted file mode 100644 index 989d5871f..000000000 --- a/vendor/github.com/exoscale/egoscale/network_offerings.go +++ /dev/null @@ -1,91 +0,0 @@ -package egoscale - -// NetworkOffering corresponds to the Compute Offerings -type NetworkOffering struct { - Availability string `json:"availability,omitempty" doc:"availability of the network offering"` - ConserveMode bool `json:"conservemode,omitempty" doc:"true if network offering is ip conserve mode enabled"` - Created string `json:"created,omitempty" doc:"the date this network offering was created"` - Details map[string]string `json:"details,omitempty" doc:"additional key/value details tied with network offering"` - DisplayText string `json:"displaytext,omitempty" doc:"an alternate display text of the network offering."` - EgressDefaultPolicy bool `json:"egressdefaultpolicy,omitempty" doc:"true if guest network default egress policy is allow; false if default egress policy is deny"` - GuestIPType string `json:"guestiptype,omitempty" doc:"guest type of the network offering, can be Shared or Isolated"` - ID *UUID `json:"id,omitempty" doc:"the id of the network offering"` - IsDefault bool `json:"isdefault,omitempty" doc:"true if network offering is default, false otherwise"` - IsPersistent bool `json:"ispersistent,omitempty" doc:"true if network offering supports persistent networks, false otherwise"` - MaxConnections int `json:"maxconnections,omitempty" doc:"maximum number of concurrents connections to be handled by lb"` - Name string `json:"name,omitempty" doc:"the name of the network offering"` - NetworkRate int `json:"networkrate,omitempty" doc:"data transfer rate in megabits per second allowed."` - Service []Service `json:"service,omitempty" doc:"the list of supported services"` - ServiceOfferingID *UUID `json:"serviceofferingid,omitempty" doc:"the ID of the service offering used by virtual router provider"` - SpecifyIPRanges bool `json:"specifyipranges,omitempty" doc:"true if network offering supports specifying ip ranges, false otherwise"` - SpecifyVlan bool `json:"specifyvlan,omitempty" doc:"true if network offering supports vlans, false otherwise"` - State string `json:"state,omitempty" doc:"state of the network offering. Can be Disabled/Enabled/Inactive"` - SupportsStrechedL2Subnet bool `json:"supportsstrechedl2subnet,omitempty" doc:"true if network offering supports network that span multiple zones"` - Tags string `json:"tags,omitempty" doc:"the tags for the network offering"` - TrafficType string `json:"traffictype,omitempty" doc:"the traffic type for the network offering, supported types are Public, Management, Control, Guest, Vlan or Storage."` -} - -// ListRequest builds the ListNetworkOfferings request -// -// This doesn't take into account the IsDefault flag as the default value is true. -func (no NetworkOffering) ListRequest() (ListCommand, error) { - req := &ListNetworkOfferings{ - Availability: no.Availability, - ID: no.ID, - Name: no.Name, - State: no.State, - TrafficType: no.TrafficType, - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListNetworkOfferings - -// ListNetworkOfferings represents a query for network offerings -type ListNetworkOfferings struct { - Availability string `json:"availability,omitempty" doc:"the availability of network offering. Default value is Required"` - DisplayText string `json:"displaytext,omitempty" doc:"list network offerings by display text"` - GuestIPType string `json:"guestiptype,omitempty" doc:"list network offerings by guest type: Shared or Isolated"` - ID *UUID `json:"id,omitempty" doc:"list network offerings by id"` - IsDefault *bool `json:"isdefault,omitempty" doc:"true if need to list only default network offerings. Default value is false"` - IsTagged *bool `json:"istagged,omitempty" doc:"true if offering has tags specified"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"list network offerings by name"` - NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the network. Pass this in if you want to see the available network offering that a network can be changed to."` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - SourceNATSupported *bool `json:"sourcenatsupported,omitempty" doc:"true if need to list only netwok offerings where source nat is supported, false otherwise"` - SpecifyIPRanges *bool `json:"specifyipranges,omitempty" doc:"true if need to list only network offerings which support specifying ip ranges"` - SpecifyVlan *bool `json:"specifyvlan,omitempty" doc:"the tags for the network offering."` - State string `json:"state,omitempty" doc:"list network offerings by state"` - SupportedServices []Service `json:"supportedservices,omitempty" doc:"list network offerings supporting certain services"` - Tags string `json:"tags,omitempty" doc:"list network offerings by tags"` - TrafficType string `json:"traffictype,omitempty" doc:"list by traffic type"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"list network offerings available for network creation in specific zone"` - _ bool `name:"listNetworkOfferings" description:"Lists all available network offerings."` -} - -// ListNetworkOfferingsResponse represents a list of service offerings -type ListNetworkOfferingsResponse struct { - Count int `json:"count"` - NetworkOffering []NetworkOffering `json:"networkoffering"` -} - -// UpdateNetworkOffering represents a modification of a network offering -type UpdateNetworkOffering struct { - Availability string `json:"availability,omitempty" doc:"the availability of network offering. Default value is Required for Guest Virtual network offering; Optional for Guest Direct network offering"` - DisplayText string `json:"displaytext,omitempty" doc:"the display text of the network offering"` - ID *UUID `json:"id,omitempty" doc:"the id of the network offering"` - KeepAliveEnabled *bool `json:"keepaliveenabled,omitempty" doc:"if true keepalive will be turned on in the loadbalancer. At the time of writing this has only an effect on haproxy; the mode http and httpclose options are unset in the haproxy conf file."` - MaxConnections int `json:"maxconnections,omitempty" doc:"maximum number of concurrent connections supported by the network offering"` - Name string `json:"name,omitempty" doc:"the name of the network offering"` - SortKey int `json:"sortkey,omitempty" doc:"sort key of the network offering, integer"` - State string `json:"state,omitempty" doc:"update state for the network offering"` - _ bool `name:"updateNetworkOffering" description:"Updates a network offering."` -} - -// Response returns the struct to unmarshal -func (UpdateNetworkOffering) Response() interface{} { - return new(NetworkOffering) -} diff --git a/vendor/github.com/exoscale/egoscale/networkofferings_response.go b/vendor/github.com/exoscale/egoscale/networkofferings_response.go deleted file mode 100644 index 656de7253..000000000 --- a/vendor/github.com/exoscale/egoscale/networkofferings_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListNetworkOfferings) Response() interface{} { - return new(ListNetworkOfferingsResponse) -} - -// ListRequest returns itself -func (ls *ListNetworkOfferings) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListNetworkOfferings) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListNetworkOfferings) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListNetworkOfferings) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListNetworkOfferingsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListNetworkOfferingsResponse was expected, got %T", resp)) - return - } - - for i := range items.NetworkOffering { - if !callback(&items.NetworkOffering[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/networks.go b/vendor/github.com/exoscale/egoscale/networks.go deleted file mode 100644 index 4d6ce12e3..000000000 --- a/vendor/github.com/exoscale/egoscale/networks.go +++ /dev/null @@ -1,229 +0,0 @@ -package egoscale - -import ( - "net" - "net/url" -) - -// Network represents a network -// -// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/networking_and_traffic.html -type Network struct { - Account string `json:"account,omitempty" doc:"the owner of the network"` - AccountID *UUID `json:"accountid,omitempty" doc:"the owner ID of the network"` - BroadcastDomainType string `json:"broadcastdomaintype,omitempty" doc:"Broadcast domain type of the network"` - BroadcastURI string `json:"broadcasturi,omitempty" doc:"broadcast uri of the network."` - CanUseForDeploy bool `json:"canusefordeploy,omitempty" doc:"list networks available for vm deployment"` - CIDR *CIDR `json:"cidr,omitempty" doc:"Cloudstack managed address space, all CloudStack managed VMs get IP address from CIDR"` - DisplayText string `json:"displaytext,omitempty" doc:"the displaytext of the network"` - DNS1 net.IP `json:"dns1,omitempty" doc:"the first DNS for the network"` - DNS2 net.IP `json:"dns2,omitempty" doc:"the second DNS for the network"` - EndIP net.IP `json:"endip,omitempty" doc:"the ending IP address in the network IP range. Required for managed networks."` - Gateway net.IP `json:"gateway,omitempty" doc:"the network's gateway"` - ID *UUID `json:"id,omitempty" doc:"the id of the network"` - IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the cidr of IPv6 network"` - IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of IPv6 network"` - IsDefault bool `json:"isdefault,omitempty" doc:"true if network is default, false otherwise"` - IsPersistent bool `json:"ispersistent,omitempty" doc:"list networks that are persistent"` - IsSystem bool `json:"issystem,omitempty" doc:"true if network is system, false otherwise"` - Name string `json:"name,omitempty" doc:"the name of the network"` - Netmask net.IP `json:"netmask,omitempty" doc:"the network's netmask"` - NetworkCIDR *CIDR `json:"networkcidr,omitempty" doc:"the network CIDR of the guest network configured with IP reservation. It is the summation of CIDR and RESERVED_IP_RANGE"` - NetworkDomain string `json:"networkdomain,omitempty" doc:"the network domain"` - NetworkOfferingAvailability string `json:"networkofferingavailability,omitempty" doc:"availability of the network offering the network is created from"` - NetworkOfferingConserveMode bool `json:"networkofferingconservemode,omitempty" doc:"true if network offering is ip conserve mode enabled"` - NetworkOfferingDisplayText string `json:"networkofferingdisplaytext,omitempty" doc:"display text of the network offering the network is created from"` - NetworkOfferingID *UUID `json:"networkofferingid,omitempty" doc:"network offering id the network is created from"` - NetworkOfferingName string `json:"networkofferingname,omitempty" doc:"name of the network offering the network is created from"` - PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"the physical network id"` - Related string `json:"related,omitempty" doc:"related to what other network configuration"` - ReservedIPRange string `json:"reservediprange,omitempty" doc:"the network's IP range not to be used by CloudStack guest VMs and can be used for non CloudStack purposes"` - RestartRequired bool `json:"restartrequired,omitempty" doc:"true network requires restart"` - Service []Service `json:"service,omitempty" doc:"the list of services"` - SpecifyIPRanges bool `json:"specifyipranges,omitempty" doc:"true if network supports specifying ip ranges, false otherwise"` - StartIP net.IP `json:"startip,omitempty" doc:"the beginning IP address in the network IP range. Required for managed networks."` - State string `json:"state,omitempty" doc:"state of the network"` - StrechedL2Subnet bool `json:"strechedl2subnet,omitempty" doc:"true if network can span multiple zones"` - SubdomainAccess bool `json:"subdomainaccess,omitempty" doc:"true if users from subdomains can access the domain level network"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with network"` - TrafficType string `json:"traffictype,omitempty" doc:"the traffic type of the network"` - Type string `json:"type,omitempty" doc:"the type of the network"` - Vlan string `json:"vlan,omitemtpy" doc:"The vlan of the network. This parameter is visible to ROOT admins only"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"zone id of the network"` - ZoneName string `json:"zonename,omitempty" doc:"the name of the zone the network belongs to"` - ZonesNetworkSpans []Zone `json:"zonesnetworkspans,omitempty" doc:"If a network is enabled for 'streched l2 subnet' then represents zones on which network currently spans"` -} - -// ListRequest builds the ListNetworks request -func (network Network) ListRequest() (ListCommand, error) { - //TODO add tags support - req := &ListNetworks{ - ID: network.ID, - Keyword: network.Name, // this is a hack as listNetworks doesn't support to search by name. - PhysicalNetworkID: network.PhysicalNetworkID, - TrafficType: network.TrafficType, - Type: network.Type, - ZoneID: network.ZoneID, - } - - if network.CanUseForDeploy { - req.CanUseForDeploy = &network.CanUseForDeploy - } - if network.RestartRequired { - req.RestartRequired = &network.RestartRequired - } - - return req, nil -} - -// ResourceType returns the type of the resource -func (Network) ResourceType() string { - return "Network" -} - -// Service is a feature of a network -type Service struct { - Capability []ServiceCapability `json:"capability,omitempty"` - Name string `json:"name"` - Provider []ServiceProvider `json:"provider,omitempty"` -} - -// ServiceCapability represents optional capability of a service -type ServiceCapability struct { - CanChooseServiceCapability bool `json:"canchooseservicecapability"` - Name string `json:"name"` - Value string `json:"value"` -} - -// ServiceProvider represents the provider of the service -type ServiceProvider struct { - CanEnableIndividualService bool `json:"canenableindividualservice"` - DestinationPhysicalNetworkID *UUID `json:"destinationphysicalnetworkid"` - ID *UUID `json:"id"` - Name string `json:"name"` - PhysicalNetworkID *UUID `json:"physicalnetworkid"` - ServiceList []string `json:"servicelist,omitempty"` -} - -// CreateNetwork creates a network -type CreateNetwork struct { - DisplayText string `json:"displaytext,omitempty" doc:"the display text of the network"` // This field is required but might be empty - EndIP net.IP `json:"endip,omitempty" doc:"the ending IP address in the network IP range. Required for managed networks."` - EndIpv6 net.IP `json:"endipv6,omitempty" doc:"the ending IPv6 address in the IPv6 network range"` - Gateway net.IP `json:"gateway,omitempty" doc:"the gateway of the network. Required for Shared networks and Isolated networks when it belongs to VPC"` - IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the CIDR of IPv6 network, must be at least /64"` - IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of the IPv6 network. Required for Shared networks and Isolated networks when it belongs to VPC"` - IsolatedPVlan string `json:"isolatedpvlan,omitempty" doc:"the isolated private vlan for this network"` - Name string `json:"name,omitempty" doc:"the name of the network"` // This field is required but might be empty - Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the network. Required for managed networks."` - NetworkDomain string `json:"networkdomain,omitempty" doc:"network domain"` - NetworkOfferingID *UUID `json:"networkofferingid" doc:"the network offering id"` - PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"the Physical Network ID the network belongs to"` - StartIP net.IP `json:"startip,omitempty" doc:"the beginning IP address in the network IP range. Required for managed networks."` - StartIpv6 net.IP `json:"startipv6,omitempty" doc:"the beginning IPv6 address in the IPv6 network range"` - Vlan string `json:"vlan,omitempty" doc:"the ID or VID of the network"` - ZoneID *UUID `json:"zoneid" doc:"the Zone ID for the network"` - _ bool `name:"createNetwork" description:"Creates a network"` -} - -// Response returns the struct to unmarshal -func (CreateNetwork) Response() interface{} { - return new(Network) -} - -func (req CreateNetwork) onBeforeSend(params url.Values) error { - // Those fields are required but might be empty - if req.Name == "" { - params.Set("name", "") - } - if req.DisplayText == "" { - params.Set("displaytext", "") - } - return nil -} - -// UpdateNetwork (Async) updates a network -type UpdateNetwork struct { - _ bool `name:"updateNetwork" description:"Updates a network"` - ChangeCIDR *bool `json:"changecidr,omitempty" doc:"Force update even if cidr type is different"` - DisplayText string `json:"displaytext,omitempty" doc:"the new display text for the network"` - EndIP net.IP `json:"endip,omitempty" doc:"the ending IP address in the network IP range. Required for managed networks."` - GuestVMCIDR *CIDR `json:"guestvmcidr,omitempty" doc:"CIDR for Guest VMs,Cloudstack allocates IPs to Guest VMs only from this CIDR"` - ID *UUID `json:"id" doc:"the ID of the network"` - Name string `json:"name,omitempty" doc:"the new name for the network"` - Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the network. Required for managed networks."` - NetworkDomain string `json:"networkdomain,omitempty" doc:"network domain"` - NetworkOfferingID *UUID `json:"networkofferingid,omitempty" doc:"network offering ID"` - StartIP net.IP `json:"startip,omitempty" doc:"the beginning IP address in the network IP range. Required for managed networks."` -} - -// Response returns the struct to unmarshal -func (UpdateNetwork) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (UpdateNetwork) AsyncResponse() interface{} { - return new(Network) -} - -// RestartNetwork (Async) updates a network -type RestartNetwork struct { - ID *UUID `json:"id" doc:"The id of the network to restart."` - Cleanup *bool `json:"cleanup,omitempty" doc:"If cleanup old network elements"` - _ bool `name:"restartNetwork" description:"Restarts the network; includes 1) restarting network elements - virtual routers, dhcp servers 2) reapplying all public ips 3) reapplying loadBalancing/portForwarding rules"` -} - -// Response returns the struct to unmarshal -func (RestartNetwork) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RestartNetwork) AsyncResponse() interface{} { - return new(Network) -} - -// DeleteNetwork deletes a network -type DeleteNetwork struct { - ID *UUID `json:"id" doc:"the ID of the network"` - Forced *bool `json:"forced,omitempty" doc:"Force delete a network. Network will be marked as 'Destroy' even when commands to shutdown and cleanup to the backend fails."` - _ bool `name:"deleteNetwork" description:"Deletes a network"` -} - -// Response returns the struct to unmarshal -func (DeleteNetwork) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DeleteNetwork) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -//go:generate go run generate/main.go -interface=Listable ListNetworks - -// ListNetworks represents a query to a network -type ListNetworks struct { - CanUseForDeploy *bool `json:"canusefordeploy,omitempty" doc:"List networks available for vm deployment"` - ID *UUID `json:"id,omitempty" doc:"List networks by id"` - IsSystem *bool `json:"issystem,omitempty" doc:"true If network is system, false otherwise"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"List networks by physical network id"` - RestartRequired *bool `json:"restartrequired,omitempty" doc:"List networks by restartRequired"` - SpecifyIPRanges *bool `json:"specifyipranges,omitempty" doc:"True if need to list only networks which support specifying ip ranges"` - SupportedServices []Service `json:"supportedservices,omitempty" doc:"List networks supporting certain services"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - TrafficType string `json:"traffictype,omitempty" doc:"Type of the traffic"` - Type string `json:"type,omitempty" doc:"The type of the network. Supported values are: Isolated and Shared"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"The Zone ID of the network"` - _ bool `name:"listNetworks" description:"Lists all available networks."` -} - -// ListNetworksResponse represents the list of networks -type ListNetworksResponse struct { - Count int `json:"count"` - Network []Network `json:"network"` -} diff --git a/vendor/github.com/exoscale/egoscale/networks_response.go b/vendor/github.com/exoscale/egoscale/networks_response.go deleted file mode 100644 index 058890624..000000000 --- a/vendor/github.com/exoscale/egoscale/networks_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListNetworks) Response() interface{} { - return new(ListNetworksResponse) -} - -// ListRequest returns itself -func (ls *ListNetworks) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListNetworks) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListNetworks) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListNetworks) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListNetworksResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListNetworksResponse was expected, got %T", resp)) - return - } - - for i := range items.Network { - if !callback(&items.Network[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/nics.go b/vendor/github.com/exoscale/egoscale/nics.go deleted file mode 100644 index 10863113f..000000000 --- a/vendor/github.com/exoscale/egoscale/nics.go +++ /dev/null @@ -1,120 +0,0 @@ -package egoscale - -import ( - "net" -) - -// Nic represents a Network Interface Controller (NIC) -// -// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/networking_and_traffic.html#configuring-multiple-ip-addresses-on-a-single-nic -type Nic struct { - BroadcastURI string `json:"broadcasturi,omitempty" doc:"the broadcast uri of the nic"` - DeviceID *UUID `json:"deviceid,omitempty" doc:"device id for the network when plugged into the virtual machine"` - Gateway net.IP `json:"gateway,omitempty" doc:"the gateway of the nic"` - ID *UUID `json:"id,omitempty" doc:"the ID of the nic"` - IP6Address net.IP `json:"ip6address,omitempty" doc:"the IPv6 address of network"` - IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the cidr of IPv6 network"` - IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of IPv6 network"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"the ip address of the nic"` - IsDefault bool `json:"isdefault,omitempty" doc:"true if nic is default, false otherwise"` - IsolationURI string `json:"isolationuri,omitempty" doc:"the isolation uri of the nic"` - MACAddress MACAddress `json:"macaddress,omitempty" doc:"true if nic is default, false otherwise"` - Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the nic"` - NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the corresponding network"` - NetworkName string `json:"networkname,omitempty" doc:"the name of the corresponding network"` - ReverseDNS []ReverseDNS `json:"reversedns,omitempty" doc:"the list of PTR record(s) associated with the virtual machine"` - SecondaryIP []NicSecondaryIP `json:"secondaryip,omitempty" doc:"the Secondary ipv4 addr of nic"` - TrafficType string `json:"traffictype,omitempty" doc:"the traffic type of the nic"` - Type string `json:"type,omitempty" doc:"the type of the nic"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"Id of the vm to which the nic belongs"` -} - -// ListRequest build a ListNics request from the given Nic -func (nic Nic) ListRequest() (ListCommand, error) { - req := &ListNics{ - VirtualMachineID: nic.VirtualMachineID, - NicID: nic.ID, - NetworkID: nic.NetworkID, - } - - return req, nil -} - -// NicSecondaryIP represents a link between NicID and IPAddress -type NicSecondaryIP struct { - ID *UUID `json:"id,omitempty" doc:"the ID of the secondary private IP addr"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"Secondary IP address"` - NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the network"` - NicID *UUID `json:"nicid,omitempty" doc:"the ID of the nic"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the ID of the vm"` -} - -//go:generate go run generate/main.go -interface=Listable ListNics - -// ListNics represents the NIC search -type ListNics struct { - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - NetworkID *UUID `json:"networkid,omitempty" doc:"list nic of the specific vm's network"` - NicID *UUID `json:"nicid,omitempty" doc:"the ID of the nic to to list IPs"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the ID of the vm"` - _ bool `name:"listNics" description:"list the vm nics IP to NIC"` -} - -// ListNicsResponse represents a list of templates -type ListNicsResponse struct { - Count int `json:"count"` - Nic []Nic `json:"nic"` -} - -// AddIPToNic (Async) represents the assignation of a secondary IP -type AddIPToNic struct { - NicID *UUID `json:"nicid" doc:"the ID of the nic to which you want to assign private IP"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"Secondary IP Address"` - _ bool `name:"addIpToNic" description:"Assigns secondary IP to NIC"` -} - -// Response returns the struct to unmarshal -func (AddIPToNic) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (AddIPToNic) AsyncResponse() interface{} { - return new(NicSecondaryIP) -} - -// RemoveIPFromNic (Async) represents a deletion request -type RemoveIPFromNic struct { - ID *UUID `json:"id" doc:"the ID of the secondary ip address to nic"` - _ bool `name:"removeIpFromNic" description:"Removes secondary IP from the NIC."` -} - -// Response returns the struct to unmarshal -func (RemoveIPFromNic) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RemoveIPFromNic) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// ActivateIP6 (Async) activates the IP6 on the given NIC -// -// Exoscale specific API: https://community.exoscale.ch/api/compute/#activateip6_GET -type ActivateIP6 struct { - NicID *UUID `json:"nicid" doc:"the ID of the nic to which you want to assign the IPv6"` - _ bool `name:"activateIp6" description:"Activate the IPv6 on the VM's nic"` -} - -// Response returns the struct to unmarshal -func (ActivateIP6) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (ActivateIP6) AsyncResponse() interface{} { - return new(Nic) -} diff --git a/vendor/github.com/exoscale/egoscale/nics_response.go b/vendor/github.com/exoscale/egoscale/nics_response.go deleted file mode 100644 index dcf960915..000000000 --- a/vendor/github.com/exoscale/egoscale/nics_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListNics) Response() interface{} { - return new(ListNicsResponse) -} - -// ListRequest returns itself -func (ls *ListNics) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListNics) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListNics) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListNics) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListNicsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListNicsResponse was expected, got %T", resp)) - return - } - - for i := range items.Nic { - if !callback(&items.Nic[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/oscategories_response.go b/vendor/github.com/exoscale/egoscale/oscategories_response.go deleted file mode 100644 index 985f875df..000000000 --- a/vendor/github.com/exoscale/egoscale/oscategories_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListOSCategories) Response() interface{} { - return new(ListOSCategoriesResponse) -} - -// ListRequest returns itself -func (ls *ListOSCategories) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListOSCategories) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListOSCategories) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListOSCategories) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListOSCategoriesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListOSCategoriesResponse was expected, got %T", resp)) - return - } - - for i := range items.OSCategory { - if !callback(&items.OSCategory[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/publicipaddresses_response.go b/vendor/github.com/exoscale/egoscale/publicipaddresses_response.go deleted file mode 100644 index 2ee92bd7a..000000000 --- a/vendor/github.com/exoscale/egoscale/publicipaddresses_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListPublicIPAddresses) Response() interface{} { - return new(ListPublicIPAddressesResponse) -} - -// ListRequest returns itself -func (ls *ListPublicIPAddresses) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListPublicIPAddresses) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListPublicIPAddresses) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListPublicIPAddresses) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListPublicIPAddressesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListPublicIPAddressesResponse was expected, got %T", resp)) - return - } - - for i := range items.PublicIPAddress { - if !callback(&items.PublicIPAddress[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/record_string.go b/vendor/github.com/exoscale/egoscale/record_string.go deleted file mode 100644 index b84303bb7..000000000 --- a/vendor/github.com/exoscale/egoscale/record_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=Record"; DO NOT EDIT. - -package egoscale - -import "strconv" - -const _Record_name = "AAAAAALIASCNAMEHINFOMXNAPTRNSPOOLSPFSRVSSHFPTXTURL" - -var _Record_index = [...]uint8{0, 1, 5, 10, 15, 20, 22, 27, 29, 33, 36, 39, 44, 47, 50} - -func (i Record) String() string { - if i < 0 || i >= Record(len(_Record_index)-1) { - return "Record(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _Record_name[_Record_index[i]:_Record_index[i+1]] -} diff --git a/vendor/github.com/exoscale/egoscale/request.go b/vendor/github.com/exoscale/egoscale/request.go deleted file mode 100644 index 079c626c0..000000000 --- a/vendor/github.com/exoscale/egoscale/request.go +++ /dev/null @@ -1,405 +0,0 @@ -package egoscale - -import ( - "bytes" - "context" - "crypto/hmac" - "crypto/sha1" - "encoding/base64" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "sort" - "strconv" - "strings" - "time" -) - -// Error formats a CloudStack error into a standard error -func (e ErrorResponse) Error() string { - return fmt.Sprintf("API error %s %d (%s %d): %s", e.ErrorCode, e.ErrorCode, e.CSErrorCode, e.CSErrorCode, e.ErrorText) -} - -// Error formats a CloudStack job response into a standard error -func (e BooleanResponse) Error() error { - if !e.Success { - return fmt.Errorf("API error: %s", e.DisplayText) - } - - return nil -} - -func responseKey(key string) (string, bool) { - // XXX: addIpToNic, activateIp6, restorevmresponse are kind of special - var responseKeys = map[string]string{ - "addiptonicresponse": "addiptovmnicresponse", - "activateip6response": "activateip6nicresponse", - "restorevirtualmachineresponse": "restorevmresponse", - "updatevmaffinitygroupresponse": "updatevirtualmachineresponse", - } - - k, ok := responseKeys[key] - return k, ok -} - -func (client *Client) parseResponse(resp *http.Response, apiName string) (json.RawMessage, error) { - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - m := map[string]json.RawMessage{} - if err := json.Unmarshal(b, &m); err != nil { - return nil, err - } - - key := fmt.Sprintf("%sresponse", strings.ToLower(apiName)) - response, ok := m[key] - if !ok { - if resp.StatusCode >= 400 { - response, ok = m["errorresponse"] - } - - if !ok { - // try again with the special keys - value, ok := responseKey(key) - if ok { - key = value - } - - response, ok = m[key] - - if !ok { - return nil, fmt.Errorf("malformed JSON response %d, %q was expected.\n%s", resp.StatusCode, key, b) - } - } - } - - if resp.StatusCode >= 400 { - errorResponse := new(ErrorResponse) - if e := json.Unmarshal(response, errorResponse); e != nil && errorResponse.ErrorCode <= 0 { - return nil, fmt.Errorf("%d %s", resp.StatusCode, b) - } - return nil, errorResponse - } - - n := map[string]json.RawMessage{} - if err := json.Unmarshal(response, &n); err != nil { - return nil, err - } - - // list response may contain only one key - if len(n) > 1 || strings.HasPrefix(key, "list") { - return response, nil - } - - if len(n) == 1 { - for k := range n { - // boolean response and asyncjob result may also contain - // only one key - if k == "success" || k == "jobid" { - return response, nil - } - return n[k], nil - } - } - - return response, nil -} - -// asyncRequest perform an asynchronous job with a context -func (client *Client) asyncRequest(ctx context.Context, asyncCommand AsyncCommand) (interface{}, error) { - var err error - - resp := asyncCommand.AsyncResponse() - client.AsyncRequestWithContext( - ctx, - asyncCommand, - func(j *AsyncJobResult, e error) bool { - if e != nil { - err = e - return false - } - if j.JobStatus != Pending { - if r := j.Result(resp); r != nil { - err = r - } - return false - } - return true - }, - ) - return resp, err -} - -// SyncRequestWithContext performs a sync request with a context -func (client *Client) SyncRequestWithContext(ctx context.Context, command Command) (interface{}, error) { - body, err := client.request(ctx, command) - if err != nil { - return nil, err - } - - response := command.Response() - b, ok := response.(*BooleanResponse) - if ok { - m := make(map[string]interface{}) - if errUnmarshal := json.Unmarshal(body, &m); errUnmarshal != nil { - return nil, errUnmarshal - } - - b.DisplayText, _ = m["displaytext"].(string) - - if success, okSuccess := m["success"].(string); okSuccess { - b.Success = success == "true" - } - - if success, okSuccess := m["success"].(bool); okSuccess { - b.Success = success - } - - return b, nil - } - - if err := json.Unmarshal(body, response); err != nil { - errResponse := new(ErrorResponse) - if e := json.Unmarshal(body, errResponse); e == nil && errResponse.ErrorCode > 0 { - return errResponse, nil - } - return nil, err - } - - return response, nil -} - -// BooleanRequest performs the given boolean command -func (client *Client) BooleanRequest(command Command) error { - resp, err := client.Request(command) - if err != nil { - return err - } - - if b, ok := resp.(*BooleanResponse); ok { - return b.Error() - } - - panic(fmt.Errorf("command %q is not a proper boolean response. %#v", client.APIName(command), resp)) -} - -// BooleanRequestWithContext performs the given boolean command -func (client *Client) BooleanRequestWithContext(ctx context.Context, command Command) error { - resp, err := client.RequestWithContext(ctx, command) - if err != nil { - return err - } - - if b, ok := resp.(*BooleanResponse); ok { - return b.Error() - } - - panic(fmt.Errorf("command %q is not a proper boolean response. %#v", client.APIName(command), resp)) -} - -// Request performs the given command -func (client *Client) Request(command Command) (interface{}, error) { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - return client.RequestWithContext(ctx, command) -} - -// RequestWithContext preforms a command with a context -func (client *Client) RequestWithContext(ctx context.Context, command Command) (interface{}, error) { - switch c := command.(type) { - case AsyncCommand: - return client.asyncRequest(ctx, c) - default: - return client.SyncRequestWithContext(ctx, command) - } -} - -// SyncRequest performs the command as is -func (client *Client) SyncRequest(command Command) (interface{}, error) { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - return client.SyncRequestWithContext(ctx, command) -} - -// AsyncRequest performs the given command -func (client *Client) AsyncRequest(asyncCommand AsyncCommand, callback WaitAsyncJobResultFunc) { - ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) - defer cancel() - - client.AsyncRequestWithContext(ctx, asyncCommand, callback) -} - -// AsyncRequestWithContext preforms a request with a context -func (client *Client) AsyncRequestWithContext(ctx context.Context, asyncCommand AsyncCommand, callback WaitAsyncJobResultFunc) { - result, err := client.SyncRequestWithContext(ctx, asyncCommand) - if err != nil { - if !callback(nil, err) { - return - } - } - - jobResult, ok := result.(*AsyncJobResult) - if !ok { - callback(nil, fmt.Errorf("wrong type, AsyncJobResult was expected instead of %T", result)) - } - - // Successful response - if jobResult.JobID == nil || jobResult.JobStatus != Pending { - callback(jobResult, nil) - // without a JobID, the next requests will only fail - return - } - - for iteration := 0; ; iteration++ { - time.Sleep(client.RetryStrategy(int64(iteration))) - - req := &QueryAsyncJobResult{JobID: jobResult.JobID} - resp, err := client.SyncRequestWithContext(ctx, req) - if err != nil && !callback(nil, err) { - return - } - - result, ok := resp.(*AsyncJobResult) - if !ok { - if !callback(nil, fmt.Errorf("wrong type. AsyncJobResult expected, got %T", resp)) { - return - } - } - - if !callback(result, nil) { - return - } - } -} - -// Payload builds the HTTP request params from the given command -func (client *Client) Payload(command Command) (url.Values, error) { - params, err := prepareValues("", command) - if err != nil { - return nil, err - } - if hookReq, ok := command.(onBeforeHook); ok { - if err := hookReq.onBeforeSend(params); err != nil { - return params, err - } - } - params.Set("apikey", client.APIKey) - params.Set("command", client.APIName(command)) - params.Set("response", "json") - - if params.Get("expires") == "" && client.Expiration >= 0 { - params.Set("signatureversion", "3") - params.Set("expires", time.Now().Add(client.Expiration).Local().Format("2006-01-02T15:04:05-0700")) - } - - return params, nil -} - -// Sign signs the HTTP request and returns the signature as as base64 encoding -func (client *Client) Sign(params url.Values) (string, error) { - query := encodeValues(params) - query = strings.ToLower(query) - mac := hmac.New(sha1.New, []byte(client.apiSecret)) - _, err := mac.Write([]byte(query)) - if err != nil { - return "", err - } - - signature := base64.StdEncoding.EncodeToString(mac.Sum(nil)) - return signature, nil -} - -// request makes a Request while being close to the metal -func (client *Client) request(ctx context.Context, command Command) (json.RawMessage, error) { - params, err := client.Payload(command) - if err != nil { - return nil, err - } - signature, err := client.Sign(params) - if err != nil { - return nil, err - } - params.Add("signature", signature) - - method := "GET" - query := params.Encode() - url := fmt.Sprintf("%s?%s", client.Endpoint, query) - - var body io.Reader - // respect Internet Explorer limit of 2048 - if len(url) > 2048 { - url = client.Endpoint - method = "POST" - body = strings.NewReader(query) - } - - request, err := http.NewRequest(method, url, body) - if err != nil { - return nil, err - } - request = request.WithContext(ctx) - request.Header.Add("User-Agent", UserAgent) - - if method == "POST" { - request.Header.Add("Content-Type", "application/x-www-form-urlencoded") - request.Header.Add("Content-Length", strconv.Itoa(len(query))) - } - - resp, err := client.HTTPClient.Do(request) - if err != nil { - return nil, err - } - defer resp.Body.Close() // nolint: errcheck - - contentType := resp.Header.Get("content-type") - - if !strings.Contains(contentType, "application/json") { - return nil, fmt.Errorf(`body content-type response expected "application/json", got %q`, contentType) - } - - text, err := client.parseResponse(resp, client.APIName(command)) - if err != nil { - return nil, err - } - - return text, nil -} - -func encodeValues(params url.Values) string { - // This code is borrowed from net/url/url.go - // The way it's encoded by net/url doesn't match - // how CloudStack works to determine the signature. - // - // CloudStack only encodes the values of the query parameters - // and furthermore doesn't use '+' for whitespaces. Therefore - // after encoding the values all '+' are replaced with '%20'. - if params == nil { - return "" - } - - var buf bytes.Buffer - keys := make([]string, 0, len(params)) - for k := range params { - keys = append(keys, k) - } - - sort.Strings(keys) - for _, k := range keys { - prefix := k + "=" - for _, v := range params[k] { - if buf.Len() > 0 { - buf.WriteByte('&') - } - buf.WriteString(prefix) - buf.WriteString(csEncode(v)) - } - } - return buf.String() -} diff --git a/vendor/github.com/exoscale/egoscale/request_type.go b/vendor/github.com/exoscale/egoscale/request_type.go deleted file mode 100644 index 7394e1ad3..000000000 --- a/vendor/github.com/exoscale/egoscale/request_type.go +++ /dev/null @@ -1,184 +0,0 @@ -package egoscale - -import ( - "net/url" -) - -// Command represents a generic request -type Command interface { - Response() interface{} -} - -// AsyncCommand represents a async request -type AsyncCommand interface { - Command - AsyncResponse() interface{} -} - -// ListCommand represents a listing request -type ListCommand interface { - Listable - Command - // SetPage defines the current pages - SetPage(int) - // SetPageSize defines the size of the page - SetPageSize(int) - // Each reads the data from the response and feeds channels, and returns true if we are on the last page - Each(interface{}, IterateItemFunc) -} - -// onBeforeHook represents an action to be done on the params before sending them -// -// This little took helps with issue of relying on JSON serialization logic only. -// `omitempty` may make sense in some cases but not all the time. -type onBeforeHook interface { - onBeforeSend(params url.Values) error -} - -// CommandInfo represents the meta data related to a Command -type CommandInfo struct { - Name string - Description string - RootOnly bool -} - -// JobStatusType represents the status of a Job -type JobStatusType int - -//go:generate stringer -type JobStatusType -const ( - // Pending represents a job in progress - Pending JobStatusType = iota - // Success represents a successfully completed job - Success - // Failure represents a job that has failed to complete - Failure -) - -// ErrorCode represents the CloudStack ApiErrorCode enum -// -// See: https://github.com/apache/cloudstack/blob/master/api/src/main/java/org/apache/cloudstack/api/ApiErrorCode.java -type ErrorCode int - -//go:generate stringer -type ErrorCode -const ( - // Unauthorized represents ... (TODO) - Unauthorized ErrorCode = 401 - // MethodNotAllowed represents ... (TODO) - MethodNotAllowed ErrorCode = 405 - // UnsupportedActionError represents ... (TODO) - UnsupportedActionError ErrorCode = 422 - // APILimitExceeded represents ... (TODO) - APILimitExceeded ErrorCode = 429 - // MalformedParameterError represents ... (TODO) - MalformedParameterError ErrorCode = 430 - // ParamError represents ... (TODO) - ParamError ErrorCode = 431 - - // InternalError represents a server error - InternalError ErrorCode = 530 - // AccountError represents ... (TODO) - AccountError ErrorCode = 531 - // AccountResourceLimitError represents ... (TODO) - AccountResourceLimitError ErrorCode = 532 - // InsufficientCapacityError represents ... (TODO) - InsufficientCapacityError ErrorCode = 533 - // ResourceUnavailableError represents ... (TODO) - ResourceUnavailableError ErrorCode = 534 - // ResourceAllocationError represents ... (TODO) - ResourceAllocationError ErrorCode = 535 - // ResourceInUseError represents ... (TODO) - ResourceInUseError ErrorCode = 536 - // NetworkRuleConflictError represents ... (TODO) - NetworkRuleConflictError ErrorCode = 537 -) - -// CSErrorCode represents the CloudStack CSExceptionErrorCode enum -// -// See: https://github.com/apache/cloudstack/blob/master/utils/src/main/java/com/cloud/utils/exception/CSExceptionErrorCode.java -type CSErrorCode int - -//go:generate stringer -type CSErrorCode -const ( - // CloudRuntimeException ... (TODO) - CloudRuntimeException CSErrorCode = 4250 - // ExecutionException ... (TODO) - ExecutionException CSErrorCode = 4260 - // HypervisorVersionChangedException ... (TODO) - HypervisorVersionChangedException CSErrorCode = 4265 - // CloudException ... (TODO) - CloudException CSErrorCode = 4275 - // AccountLimitException ... (TODO) - AccountLimitException CSErrorCode = 4280 - // AgentUnavailableException ... (TODO) - AgentUnavailableException CSErrorCode = 4285 - // CloudAuthenticationException ... (TODO) - CloudAuthenticationException CSErrorCode = 4290 - // ConcurrentOperationException ... (TODO) - ConcurrentOperationException CSErrorCode = 4300 - // ConflictingNetworksException ... (TODO) - ConflictingNetworkSettingsException CSErrorCode = 4305 - // DiscoveredWithErrorException ... (TODO) - DiscoveredWithErrorException CSErrorCode = 4310 - // HAStateException ... (TODO) - HAStateException CSErrorCode = 4315 - // InsufficientAddressCapacityException ... (TODO) - InsufficientAddressCapacityException CSErrorCode = 4320 - // InsufficientCapacityException ... (TODO) - InsufficientCapacityException CSErrorCode = 4325 - // InsufficientNetworkCapacityException ... (TODO) - InsufficientNetworkCapacityException CSErrorCode = 4330 - // InsufficientServerCapaticyException ... (TODO) - InsufficientServerCapacityException CSErrorCode = 4335 - // InsufficientStorageCapacityException ... (TODO) - InsufficientStorageCapacityException CSErrorCode = 4340 - // InternalErrorException ... (TODO) - InternalErrorException CSErrorCode = 4345 - // InvalidParameterValueException ... (TODO) - InvalidParameterValueException CSErrorCode = 4350 - // ManagementServerException ... (TODO) - ManagementServerException CSErrorCode = 4355 - // NetworkRuleConflictException ... (TODO) - NetworkRuleConflictException CSErrorCode = 4360 - // PermissionDeniedException ... (TODO) - PermissionDeniedException CSErrorCode = 4365 - // ResourceAllocationException ... (TODO) - ResourceAllocationException CSErrorCode = 4370 - // ResourceInUseException ... (TODO) - ResourceInUseException CSErrorCode = 4375 - // ResourceUnavailableException ... (TODO) - ResourceUnavailableException CSErrorCode = 4380 - // StorageUnavailableException ... (TODO) - StorageUnavailableException CSErrorCode = 4385 - // UnsupportedServiceException ... (TODO) - UnsupportedServiceException CSErrorCode = 4390 - // VirtualMachineMigrationException ... (TODO) - VirtualMachineMigrationException CSErrorCode = 4395 - // AsyncCommandQueued ... (TODO) - AsyncCommandQueued CSErrorCode = 4540 - // RequestLimitException ... (TODO) - RequestLimitException CSErrorCode = 4545 - // ServerAPIException ... (TODO) - ServerAPIException CSErrorCode = 9999 -) - -// ErrorResponse represents the standard error response -type ErrorResponse struct { - CSErrorCode CSErrorCode `json:"cserrorcode"` - ErrorCode ErrorCode `json:"errorcode"` - ErrorText string `json:"errortext"` - UUIDList []UUIDItem `json:"uuidList,omitempty"` // uuid*L*ist is not a typo -} - -// UUIDItem represents an item of the UUIDList part of an ErrorResponse -type UUIDItem struct { - Description string `json:"description,omitempty"` - SerialVersionUID int64 `json:"serialVersionUID,omitempty"` - UUID string `json:"uuid"` -} - -// BooleanResponse represents a boolean response (usually after a deletion) -type BooleanResponse struct { - DisplayText string `json:"displaytext,omitempty"` - Success bool `json:"success"` -} diff --git a/vendor/github.com/exoscale/egoscale/resource_limits.go b/vendor/github.com/exoscale/egoscale/resource_limits.go deleted file mode 100644 index 56011dc66..000000000 --- a/vendor/github.com/exoscale/egoscale/resource_limits.go +++ /dev/null @@ -1,100 +0,0 @@ -package egoscale - -// https://github.com/apache/cloudstack/blob/master/api/src/main/java/com/cloud/configuration/Resource.java - -// ResourceTypeName represents the name of a resource type (for limits) -type ResourceTypeName string - -const ( - // VirtualMachineTypeName is the resource type name of a VM - VirtualMachineTypeName ResourceTypeName = "user_vm" - // IPAddressTypeName is the resource type name of an IP address - IPAddressTypeName ResourceTypeName = "public_ip" - // VolumeTypeName is the resource type name of a volume - VolumeTypeName ResourceTypeName = "volume" - // SnapshotTypeName is the resource type name of a snapshot - SnapshotTypeName ResourceTypeName = "snapshot" - // TemplateTypeName is the resource type name of a template - TemplateTypeName ResourceTypeName = "template" - // ProjectTypeName is the resource type name of a project - ProjectTypeName ResourceTypeName = "project" - // NetworkTypeName is the resource type name of a network - NetworkTypeName ResourceTypeName = "network" - // VPCTypeName is the resource type name of a VPC - VPCTypeName ResourceTypeName = "vpc" - // CPUTypeName is the resource type name of a CPU - CPUTypeName ResourceTypeName = "cpu" - // MemoryTypeName is the resource type name of Memory - MemoryTypeName ResourceTypeName = "memory" - // PrimaryStorageTypeName is the resource type name of primary storage - PrimaryStorageTypeName ResourceTypeName = "primary_storage" - // SecondaryStorageTypeName is the resource type name of secondary storage - SecondaryStorageTypeName ResourceTypeName = "secondary_storage" -) - -// ResourceType represents the ID of a resource type (for limits) -type ResourceType string - -const ( - // VirtualMachineType is the resource type ID of a VM - VirtualMachineType ResourceType = "0" - // IPAddressType is the resource type ID of an IP address - IPAddressType ResourceType = "1" - // VolumeType is the resource type ID of a volume - VolumeType ResourceType = "2" - // SnapshotType is the resource type ID of a snapshot - SnapshotType ResourceType = "3" - // TemplateType is the resource type ID of a template - TemplateType ResourceType = "4" - // ProjectType is the resource type ID of a project - ProjectType ResourceType = "5" - // NetworkType is the resource type ID of a network - NetworkType ResourceType = "6" - // VPCType is the resource type ID of a VPC - VPCType ResourceType = "7" - // CPUType is the resource type ID of a CPU - CPUType ResourceType = "8" - // MemoryType is the resource type ID of Memory - MemoryType ResourceType = "9" - // PrimaryStorageType is the resource type ID of primary storage - PrimaryStorageType ResourceType = "10" - // SecondaryStorageType is the resource type ID of secondary storage - SecondaryStorageType ResourceType = "11" -) - -// ResourceLimit represents the limit on a particular resource -type ResourceLimit struct { - Max int64 `json:"max,omitempty" doc:"the maximum number of the resource. A -1 means the resource currently has no limit."` - ResourceType ResourceType `json:"resourcetype,omitempty" doc:"resource type. Values include 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11. See the resourceType parameter for more information on these values."` - ResourceTypeName string `json:"resourcetypename,omitempty" doc:"resource type name. Values include user_vm, public_ip, volume, snapshot, template, network, cpu, memory, primary_storage, secondary_storage."` -} - -// ListRequest builds the ListResourceLimits request -func (limit ResourceLimit) ListRequest() (ListCommand, error) { - req := &ListResourceLimits{ - ResourceType: limit.ResourceType, - ResourceTypeName: limit.ResourceTypeName, - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListResourceLimits - -// ListResourceLimits lists the resource limits -type ListResourceLimits struct { - ID int64 `json:"id,omitempty" doc:"Lists resource limits by ID."` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ResourceType ResourceType `json:"resourcetype,omitempty" doc:"Type of resource. Values are 0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, and 13. 0 - Instance. Number of instances a user can create. 1 - IP. Number of public IP addresses an account can own. 2 - Volume. Number of disk volumes an account can own. 3 - Snapshot. Number of snapshots an account can own. 4 - Template. Number of templates an account can register/create. 6 - Network. Number of networks an account can own. 8 - CPU. Number of CPU an account can allocate for his resources. 9 - Memory. Amount of RAM an account can allocate for his resources. 10 - PrimaryStorage. Total primary storage space (in GiB) a user can use. 11 - SecondaryStorage. Total secondary storage space (in GiB) a user can use. 12 - Elastic IP. Number of public elastic IP addresses an account can own. 13 - SMTP. If the account is allowed SMTP outbound traffic."` - ResourceTypeName string `json:"resourcetypename,omitempty" doc:"Type of resource (wins over resourceType if both are provided). Values are: user_vm - Instance. Number of instances a user can create. public_ip - IP. Number of public IP addresses an account can own. volume - Volume. Number of disk volumes an account can own. snapshot - Snapshot. Number of snapshots an account can own. template - Template. Number of templates an account can register/create. network - Network. Number of networks an account can own. cpu - CPU. Number of CPU an account can allocate for his resources. memory - Memory. Amount of RAM an account can allocate for his resources. primary_storage - PrimaryStorage. Total primary storage space (in GiB) a user can use. secondary_storage - SecondaryStorage. Total secondary storage space (in GiB) a user can use. public_elastic_ip - IP. Number of public elastic IP addresses an account can own. smtp - SG. If the account is allowed SMTP outbound traffic."` - - _ bool `name:"listResourceLimits" description:"Lists resource limits."` -} - -// ListResourceLimitsResponse represents a list of resource limits -type ListResourceLimitsResponse struct { - Count int `json:"count"` - ResourceLimit []ResourceLimit `json:"resourcelimit"` -} diff --git a/vendor/github.com/exoscale/egoscale/resource_metadata.go b/vendor/github.com/exoscale/egoscale/resource_metadata.go deleted file mode 100644 index 52c5ee8b0..000000000 --- a/vendor/github.com/exoscale/egoscale/resource_metadata.go +++ /dev/null @@ -1,41 +0,0 @@ -package egoscale - -import "fmt" - -// ResourceDetail represents extra details -type ResourceDetail ResourceTag - -// ListRequest builds the ListResourceDetails request -func (detail ResourceDetail) ListRequest() (ListCommand, error) { - if detail.ResourceType == "" { - return nil, fmt.Errorf("the resourcetype parameter is required") - } - - req := &ListResourceDetails{ - ResourceType: detail.ResourceType, - ResourceID: detail.ResourceID, - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListResourceDetails - -// ListResourceDetails lists the resource tag(s) (but different from listTags...) -type ListResourceDetails struct { - ResourceType string `json:"resourcetype" doc:"list by resource type"` - ForDisplay bool `json:"fordisplay,omitempty" doc:"if set to true, only details marked with display=true, are returned. False by default"` - Key string `json:"key,omitempty" doc:"list by key"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ResourceID *UUID `json:"resourceid,omitempty" doc:"list by resource id"` - Value string `json:"value,omitempty" doc:"list by key, value. Needs to be passed only along with key"` - _ bool `name:"listResourceDetails" description:"List resource detail(s)"` -} - -// ListResourceDetailsResponse represents a list of resource details -type ListResourceDetailsResponse struct { - Count int `json:"count"` - ResourceDetail []ResourceTag `json:"resourcedetail"` -} diff --git a/vendor/github.com/exoscale/egoscale/resourcedetails_response.go b/vendor/github.com/exoscale/egoscale/resourcedetails_response.go deleted file mode 100644 index 2a08cd825..000000000 --- a/vendor/github.com/exoscale/egoscale/resourcedetails_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListResourceDetails) Response() interface{} { - return new(ListResourceDetailsResponse) -} - -// ListRequest returns itself -func (ls *ListResourceDetails) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListResourceDetails) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListResourceDetails) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListResourceDetails) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListResourceDetailsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListResourceDetailsResponse was expected, got %T", resp)) - return - } - - for i := range items.ResourceDetail { - if !callback(&items.ResourceDetail[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/resourcelimits_response.go b/vendor/github.com/exoscale/egoscale/resourcelimits_response.go deleted file mode 100644 index 656febfc9..000000000 --- a/vendor/github.com/exoscale/egoscale/resourcelimits_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListResourceLimits) Response() interface{} { - return new(ListResourceLimitsResponse) -} - -// ListRequest returns itself -func (ls *ListResourceLimits) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListResourceLimits) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListResourceLimits) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListResourceLimits) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListResourceLimitsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListResourceLimitsResponse was expected, got %T", resp)) - return - } - - for i := range items.ResourceLimit { - if !callback(&items.ResourceLimit[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/reversedns.go b/vendor/github.com/exoscale/egoscale/reversedns.go deleted file mode 100644 index e8bd124ce..000000000 --- a/vendor/github.com/exoscale/egoscale/reversedns.go +++ /dev/null @@ -1,83 +0,0 @@ -package egoscale - -import ( - "net" -) - -// ReverseDNS represents the PTR record linked with an IPAddress or IP6Address belonging to a Virtual Machine or a Public IP Address (Elastic IP) instance -type ReverseDNS struct { - DomainName string `json:"domainname,omitempty" doc:"the domain name of the PTR record"` - IP6Address net.IP `json:"ip6address,omitempty" doc:"the IPv6 address linked with the PTR record (mutually exclusive with ipaddress)"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"the IPv4 address linked with the PTR record (mutually exclusive with ip6address)"` - NicID *UUID `json:"nicid,omitempty" doc:"the virtual machine default NIC ID"` - PublicIPID *UUID `json:"publicipid,omitempty" doc:"the public IP address ID"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the virtual machine ID"` -} - -// DeleteReverseDNSFromPublicIPAddress is a command to create/delete the PTR record of a public IP address -type DeleteReverseDNSFromPublicIPAddress struct { - ID *UUID `json:"id,omitempty" doc:"the ID of the public IP address"` - _ bool `name:"deleteReverseDnsFromPublicIpAddress" description:"delete the PTR DNS record from the public IP address"` -} - -// Response returns the struct to unmarshal -func (*DeleteReverseDNSFromPublicIPAddress) Response() interface{} { - return new(BooleanResponse) -} - -// DeleteReverseDNSFromVirtualMachine is a command to create/delete the PTR record(s) of a virtual machine -type DeleteReverseDNSFromVirtualMachine struct { - ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` - _ bool `name:"deleteReverseDnsFromVirtualMachine" description:"Delete the PTR DNS record(s) from the virtual machine"` -} - -// Response returns the struct to unmarshal -func (*DeleteReverseDNSFromVirtualMachine) Response() interface{} { - return new(BooleanResponse) -} - -// QueryReverseDNSForPublicIPAddress is a command to create/query the PTR record of a public IP address -type QueryReverseDNSForPublicIPAddress struct { - ID *UUID `json:"id,omitempty" doc:"the ID of the public IP address"` - _ bool `name:"queryReverseDnsForPublicIpAddress" description:"Query the PTR DNS record for the public IP address"` -} - -// Response returns the struct to unmarshal -func (*QueryReverseDNSForPublicIPAddress) Response() interface{} { - return new(IPAddress) -} - -// QueryReverseDNSForVirtualMachine is a command to create/query the PTR record(s) of a virtual machine -type QueryReverseDNSForVirtualMachine struct { - ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` - _ bool `name:"queryReverseDnsForVirtualMachine" description:"Query the PTR DNS record(s) for the virtual machine"` -} - -// Response returns the struct to unmarshal -func (*QueryReverseDNSForVirtualMachine) Response() interface{} { - return new(VirtualMachine) -} - -// UpdateReverseDNSForPublicIPAddress is a command to create/update the PTR record of a public IP address -type UpdateReverseDNSForPublicIPAddress struct { - DomainName string `json:"domainname,omitempty" doc:"the domain name for the PTR record. It must have a valid TLD"` - ID *UUID `json:"id,omitempty" doc:"the ID of the public IP address"` - _ bool `name:"updateReverseDnsForPublicIpAddress" description:"Update/create the PTR DNS record for the public IP address"` -} - -// Response returns the struct to unmarshal -func (*UpdateReverseDNSForPublicIPAddress) Response() interface{} { - return new(IPAddress) -} - -// UpdateReverseDNSForVirtualMachine is a command to create/update the PTR record(s) of a virtual machine -type UpdateReverseDNSForVirtualMachine struct { - DomainName string `json:"domainname,omitempty" doc:"the domain name for the PTR record(s). It must have a valid TLD"` - ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` - _ bool `name:"updateReverseDnsForVirtualMachine" description:"Update/create the PTR DNS record(s) for the virtual machine"` -} - -// Response returns the struct to unmarshal -func (*UpdateReverseDNSForVirtualMachine) Response() interface{} { - return new(VirtualMachine) -} diff --git a/vendor/github.com/exoscale/egoscale/runstatus.go b/vendor/github.com/exoscale/egoscale/runstatus.go deleted file mode 100644 index 48905962e..000000000 --- a/vendor/github.com/exoscale/egoscale/runstatus.go +++ /dev/null @@ -1,131 +0,0 @@ -package egoscale - -import ( - "context" - "crypto/hmac" - "crypto/sha256" - "encoding/hex" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "strings" - "time" -) - -// RunstatusValidationErrorResponse represents an error in the API -type RunstatusValidationErrorResponse map[string][]string - -// RunstatusErrorResponse represents the default errors -type RunstatusErrorResponse struct { - Detail string `json:"detail"` -} - -// runstatusPagesURL is the only URL that cannot be guessed -const runstatusPagesURL = "/pages" - -// Error formats the DNSerror into a string -func (req RunstatusErrorResponse) Error() string { - return fmt.Sprintf("Runstatus error: %s", req.Detail) -} - -// Error formats the DNSerror into a string -func (req RunstatusValidationErrorResponse) Error() string { - if len(req) > 0 { - errs := []string{} - for name, ss := range req { - if len(ss) > 0 { - errs = append(errs, fmt.Sprintf("%s: %s", name, strings.Join(ss, ", "))) - } - } - return fmt.Sprintf("Runstatus error: %s", strings.Join(errs, "; ")) - } - return fmt.Sprintf("Runstatus error") -} - -func (client *Client) runstatusRequest(ctx context.Context, uri string, structParam interface{}, method string) (json.RawMessage, error) { - reqURL, err := url.Parse(uri) - if err != nil { - return nil, err - } - if reqURL.Scheme == "" { - return nil, fmt.Errorf("only absolute URI are considered valid, got %q", uri) - } - - var params string - if structParam != nil { - m, err := json.Marshal(structParam) - if err != nil { - return nil, err - } - params = string(m) - } - - req, err := http.NewRequest(method, reqURL.String(), strings.NewReader(params)) - if err != nil { - return nil, err - } - - time := time.Now().Local().Format("2006-01-02T15:04:05-0700") - - payload := fmt.Sprintf("%s%s%s", req.URL.String(), time, params) - - mac := hmac.New(sha256.New, []byte(client.apiSecret)) - _, err = mac.Write([]byte(payload)) - if err != nil { - return nil, err - } - signature := hex.EncodeToString(mac.Sum(nil)) - - var hdr = make(http.Header) - - hdr.Add("Authorization", fmt.Sprintf("Exoscale-HMAC-SHA256 %s:%s", client.APIKey, signature)) - hdr.Add("Exoscale-Date", time) - hdr.Add("User-Agent", UserAgent) - hdr.Add("Accept", "application/json") - if params != "" { - hdr.Add("Content-Type", "application/json") - } - req.Header = hdr - - req = req.WithContext(ctx) - - resp, err := client.HTTPClient.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() // nolint: errcheck - - if resp.StatusCode == 204 { - if method != "DELETE" { - return nil, fmt.Errorf("only DELETE is expected to produce 204, was %q", method) - } - return nil, nil - } - - contentType := resp.Header.Get("content-type") - if !strings.Contains(contentType, "application/json") { - return nil, fmt.Errorf(`response %d content-type expected to be "application/json", got %q`, resp.StatusCode, contentType) - } - - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - if resp.StatusCode >= 400 { - rerr := new(RunstatusValidationErrorResponse) - if err := json.Unmarshal(b, rerr); err == nil { - return nil, rerr - } - rverr := new(RunstatusErrorResponse) - if err := json.Unmarshal(b, rverr); err != nil { - return nil, err - } - - return nil, rverr - } - - return b, nil -} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_event.go b/vendor/github.com/exoscale/egoscale/runstatus_event.go deleted file mode 100644 index 2c698788b..000000000 --- a/vendor/github.com/exoscale/egoscale/runstatus_event.go +++ /dev/null @@ -1,37 +0,0 @@ -package egoscale - -import ( - "context" - "fmt" - "time" -) - -//RunstatusEvent is a runstatus event -type RunstatusEvent struct { - Created *time.Time `json:"created,omitempty"` - State string `json:"state,omitempty"` - Status string `json:"status"` - Text string `json:"text"` -} - -// UpdateRunstatusIncident create runstatus incident event -// Events can be updates or final message with status completed. -func (client *Client) UpdateRunstatusIncident(ctx context.Context, incident RunstatusIncident, event RunstatusEvent) error { - if incident.EventsURL == "" { - return fmt.Errorf("empty Events URL for %#v", incident) - } - - _, err := client.runstatusRequest(ctx, incident.EventsURL, event, "POST") - return err -} - -// UpdateRunstatusMaintenance adds a event to a maintenance. -// Events can be updates or final message with status completed. -func (client *Client) UpdateRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance, event RunstatusEvent) error { - if maintenance.EventsURL == "" { - return fmt.Errorf("empty Events URL for %#v", maintenance) - } - - _, err := client.runstatusRequest(ctx, maintenance.EventsURL, event, "POST") - return err -} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_incident.go b/vendor/github.com/exoscale/egoscale/runstatus_incident.go deleted file mode 100644 index 57d20c81b..000000000 --- a/vendor/github.com/exoscale/egoscale/runstatus_incident.go +++ /dev/null @@ -1,175 +0,0 @@ -package egoscale - -import ( - "context" - "encoding/json" - "fmt" - "time" -) - -//RunstatusIncident is a runstatus incident -type RunstatusIncident struct { - EndDate *time.Time `json:"end_date,omitempty"` - Events []RunstatusEvent `json:"events,omitempty"` - EventsURL string `json:"events_url,omitempty"` - ID int `json:"id,omitempty"` - PageURL string `json:"page_url,omitempty"` // fake field - PostMortem string `json:"post_mortem,omitempty"` - RealTime bool `json:"real_time,omitempty"` - Services []string `json:"services"` - StartDate *time.Time `json:"start_date,omitempty"` - State string `json:"state"` - Status string `json:"status"` - StatusText string `json:"status_text"` - Title string `json:"title"` - URL string `json:"url,omitempty"` -} - -// Match returns true if the other incident has got similarities with itself -func (incident RunstatusIncident) Match(other RunstatusIncident) bool { - if other.Title != "" && incident.Title == other.Title { - return true - } - - if other.ID > 0 && incident.ID == other.ID { - return true - } - - return false -} - -//RunstatusIncidentList is a list of incident -type RunstatusIncidentList struct { - Next string `json:"next"` - Previous string `json:"previous"` - Incidents []RunstatusIncident `json:"results"` -} - -// GetRunstatusIncident retrieves the details of a specific incident. -func (client *Client) GetRunstatusIncident(ctx context.Context, incident RunstatusIncident) (*RunstatusIncident, error) { - if incident.URL != "" { - return client.getRunstatusIncident(ctx, incident.URL) - } - - if incident.PageURL == "" { - return nil, fmt.Errorf("empty Page URL for %#v", incident) - } - - page, err := client.getRunstatusPage(ctx, incident.PageURL) - if err != nil { - return nil, err - } - - for i := range page.Incidents { - j := &page.Incidents[i] - if j.Match(incident) { - return j, nil - } - } - - return nil, fmt.Errorf("%#v not found", incident) -} - -func (client *Client) getRunstatusIncident(ctx context.Context, incidentURL string) (*RunstatusIncident, error) { - resp, err := client.runstatusRequest(ctx, incidentURL, nil, "GET") - if err != nil { - return nil, err - } - - i := new(RunstatusIncident) - if err := json.Unmarshal(resp, i); err != nil { - return nil, err - } - return i, nil -} - -// ListRunstatusIncidents lists the incidents for a specific page. -func (client *Client) ListRunstatusIncidents(ctx context.Context, page RunstatusPage) ([]RunstatusIncident, error) { - if page.IncidentsURL == "" { - return nil, fmt.Errorf("empty Incidents URL for %#v", page) - } - - results := make([]RunstatusIncident, 0) - - var err error - client.PaginateRunstatusIncidents(ctx, page, func(incident *RunstatusIncident, e error) bool { - if e != nil { - err = e - return false - } - - results = append(results, *incident) - return true - }) - - return results, err -} - -// PaginateRunstatusIncidents paginate Incidents -func (client *Client) PaginateRunstatusIncidents(ctx context.Context, page RunstatusPage, callback func(*RunstatusIncident, error) bool) { - if page.IncidentsURL == "" { - callback(nil, fmt.Errorf("empty Incidents URL for %#v", page)) - return - } - - incidentsURL := page.IncidentsURL - for incidentsURL != "" { - resp, err := client.runstatusRequest(ctx, incidentsURL, nil, "GET") - if err != nil { - callback(nil, err) - return - } - - var is *RunstatusIncidentList - if err := json.Unmarshal(resp, &is); err != nil { - callback(nil, err) - return - } - - for i := range is.Incidents { - if cont := callback(&is.Incidents[i], nil); !cont { - return - } - } - - incidentsURL = is.Next - } -} - -// CreateRunstatusIncident create runstatus incident -func (client *Client) CreateRunstatusIncident(ctx context.Context, incident RunstatusIncident) (*RunstatusIncident, error) { - if incident.PageURL == "" { - return nil, fmt.Errorf("empty Page URL for %#v", incident) - } - - page, err := client.getRunstatusPage(ctx, incident.PageURL) - if err != nil { - return nil, err - } - - if page.IncidentsURL == "" { - return nil, fmt.Errorf("empty Incidents URL for %#v", page) - } - - resp, err := client.runstatusRequest(ctx, page.IncidentsURL, incident, "POST") - if err != nil { - return nil, err - } - - i := &RunstatusIncident{} - if err := json.Unmarshal(resp, &i); err != nil { - return nil, err - } - - return i, nil -} - -// DeleteRunstatusIncident delete runstatus incident -func (client *Client) DeleteRunstatusIncident(ctx context.Context, incident RunstatusIncident) error { - if incident.URL == "" { - return fmt.Errorf("empty URL for %#v", incident) - } - - _, err := client.runstatusRequest(ctx, incident.URL, nil, "DELETE") - return err -} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_maintenance.go b/vendor/github.com/exoscale/egoscale/runstatus_maintenance.go deleted file mode 100644 index 44501f9b7..000000000 --- a/vendor/github.com/exoscale/egoscale/runstatus_maintenance.go +++ /dev/null @@ -1,208 +0,0 @@ -package egoscale - -import ( - "context" - "encoding/json" - "fmt" - "log" - "net/url" - "path" - "strconv" - "time" -) - -// RunstatusMaintenance is a runstatus maintenance -type RunstatusMaintenance struct { - Created *time.Time `json:"created,omitempty"` - Description string `json:"description,omitempty"` - EndDate *time.Time `json:"end_date"` - Events []RunstatusEvent `json:"events,omitempty"` - EventsURL string `json:"events_url,omitempty"` - ID int `json:"id,omitempty"` // missing field - PageURL string `json:"page_url,omitempty"` // fake field - RealTime bool `json:"real_time,omitempty"` - Services []string `json:"services"` - StartDate *time.Time `json:"start_date"` - Status string `json:"status"` - Title string `json:"title"` - URL string `json:"url,omitempty"` -} - -// Match returns true if the other maintenance has got similarities with itself -func (maintenance RunstatusMaintenance) Match(other RunstatusMaintenance) bool { - if other.Title != "" && maintenance.Title == other.Title { - return true - } - - if other.ID > 0 && maintenance.ID == other.ID { - return true - } - - return false -} - -// FakeID fills up the ID field as it's currently missing -func (maintenance *RunstatusMaintenance) FakeID() error { - if maintenance.ID > 0 { - return nil - } - - if maintenance.URL == "" { - return fmt.Errorf("empty URL for %#v", maintenance) - } - - u, err := url.Parse(maintenance.URL) - if err != nil { - return err - } - - s := path.Base(u.Path) - id, err := strconv.Atoi(s) - if err != nil { - return err - } - maintenance.ID = id - return nil -} - -// RunstatusMaintenanceList is a list of incident -type RunstatusMaintenanceList struct { - Next string `json:"next"` - Previous string `json:"previous"` - Maintenances []RunstatusMaintenance `json:"results"` -} - -// GetRunstatusMaintenance retrieves the details of a specific maintenance. -func (client *Client) GetRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance) (*RunstatusMaintenance, error) { - if maintenance.URL != "" { - return client.getRunstatusMaintenance(ctx, maintenance.URL) - } - - if maintenance.PageURL == "" { - return nil, fmt.Errorf("empty Page URL for %#v", maintenance) - } - - page, err := client.getRunstatusPage(ctx, maintenance.PageURL) - if err != nil { - return nil, err - } - - for i := range page.Maintenances { - m := &page.Maintenances[i] - if m.Match(maintenance) { - if err := m.FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", m, err) - } - return m, nil - } - } - - return nil, fmt.Errorf("%#v not found", maintenance) -} - -func (client *Client) getRunstatusMaintenance(ctx context.Context, maintenanceURL string) (*RunstatusMaintenance, error) { - resp, err := client.runstatusRequest(ctx, maintenanceURL, nil, "GET") - if err != nil { - return nil, err - } - - m := new(RunstatusMaintenance) - if err := json.Unmarshal(resp, m); err != nil { - return nil, err - } - return m, nil -} - -// ListRunstatusMaintenances returns the list of maintenances for the page. -func (client *Client) ListRunstatusMaintenances(ctx context.Context, page RunstatusPage) ([]RunstatusMaintenance, error) { - if page.MaintenancesURL == "" { - return nil, fmt.Errorf("empty Maintenances URL for %#v", page) - } - - results := make([]RunstatusMaintenance, 0) - - var err error - client.PaginateRunstatusMaintenances(ctx, page, func(maintenance *RunstatusMaintenance, e error) bool { - if e != nil { - err = e - return false - } - - results = append(results, *maintenance) - return true - }) - - return results, err -} - -// PaginateRunstatusMaintenances paginate Maintenances -func (client *Client) PaginateRunstatusMaintenances(ctx context.Context, page RunstatusPage, callback func(*RunstatusMaintenance, error) bool) { // nolint: dupl - if page.MaintenancesURL == "" { - callback(nil, fmt.Errorf("empty Maintenances URL for %#v", page)) - return - } - - maintenancesURL := page.MaintenancesURL - for maintenancesURL != "" { - resp, err := client.runstatusRequest(ctx, maintenancesURL, nil, "GET") - if err != nil { - callback(nil, err) - return - } - - var ms *RunstatusMaintenanceList - if err := json.Unmarshal(resp, &ms); err != nil { - callback(nil, err) - return - } - - for i := range ms.Maintenances { - if err := ms.Maintenances[i].FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", ms.Maintenances[i], err) - } - if cont := callback(&ms.Maintenances[i], nil); !cont { - return - } - } - - maintenancesURL = ms.Next - } -} - -// CreateRunstatusMaintenance create runstatus Maintenance -func (client *Client) CreateRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance) (*RunstatusMaintenance, error) { - if maintenance.PageURL == "" { - return nil, fmt.Errorf("empty Page URL for %#v", maintenance) - } - - page, err := client.getRunstatusPage(ctx, maintenance.PageURL) - if err != nil { - return nil, err - } - - resp, err := client.runstatusRequest(ctx, page.MaintenancesURL, maintenance, "POST") - if err != nil { - return nil, err - } - - m := &RunstatusMaintenance{} - if err := json.Unmarshal(resp, &m); err != nil { - return nil, err - } - - if err := m.FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", m, err) - } - - return m, nil -} - -// DeleteRunstatusMaintenance delete runstatus Maintenance -func (client *Client) DeleteRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance) error { - if maintenance.URL == "" { - return fmt.Errorf("empty URL for %#v", maintenance) - } - - _, err := client.runstatusRequest(ctx, maintenance.URL, nil, "DELETE") - return err -} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_page.go b/vendor/github.com/exoscale/egoscale/runstatus_page.go deleted file mode 100644 index 01b6b8c77..000000000 --- a/vendor/github.com/exoscale/egoscale/runstatus_page.go +++ /dev/null @@ -1,168 +0,0 @@ -package egoscale - -import ( - "context" - "encoding/json" - "fmt" - "log" - "time" -) - -// RunstatusPage runstatus page -type RunstatusPage struct { - Created *time.Time `json:"created,omitempty"` - DarkTheme bool `json:"dark_theme,omitempty"` - Domain string `json:"domain,omitempty"` - GradientEnd string `json:"gradient_end,omitempty"` - GradientStart string `json:"gradient_start,omitempty"` - HeaderBackground string `json:"header_background,omitempty"` - ID int `json:"id,omitempty"` - Incidents []RunstatusIncident `json:"incidents,omitempty"` - IncidentsURL string `json:"incidents_url,omitempty"` - Logo string `json:"logo,omitempty"` - Maintenances []RunstatusMaintenance `json:"maintenances,omitempty"` - MaintenancesURL string `json:"maintenances_url,omitempty"` - Name string `json:"name"` //fake field (used to post a new runstatus page) - OkText string `json:"ok_text,omitempty"` - Plan string `json:"plan,omitempty"` - PublicURL string `json:"public_url,omitempty"` - Services []RunstatusService `json:"services,omitempty"` - ServicesURL string `json:"services_url,omitempty"` - State string `json:"state,omitempty"` - Subdomain string `json:"subdomain"` - SupportEmail string `json:"support_email,omitempty"` - TimeZone string `json:"time_zone,omitempty"` - Title string `json:"title,omitempty"` - TitleColor string `json:"title_color,omitempty"` - TwitterUsername string `json:"twitter_username,omitempty"` - URL string `json:"url,omitempty"` -} - -// Match returns true if the other page has got similarities with itself -func (page RunstatusPage) Match(other RunstatusPage) bool { - if other.Subdomain != "" && page.Subdomain == other.Subdomain { - return true - } - - if other.ID > 0 && page.ID == other.ID { - return true - } - - return false -} - -// RunstatusPageList runstatus page list -type RunstatusPageList struct { - Next string `json:"next"` - Previous string `json:"previous"` - Pages []RunstatusPage `json:"results"` -} - -// CreateRunstatusPage create runstatus page -func (client *Client) CreateRunstatusPage(ctx context.Context, page RunstatusPage) (*RunstatusPage, error) { - resp, err := client.runstatusRequest(ctx, client.Endpoint+runstatusPagesURL, page, "POST") - if err != nil { - return nil, err - } - - var p *RunstatusPage - if err := json.Unmarshal(resp, &p); err != nil { - return nil, err - } - - return p, nil -} - -// DeleteRunstatusPage delete runstatus page -func (client *Client) DeleteRunstatusPage(ctx context.Context, page RunstatusPage) error { - if page.URL == "" { - return fmt.Errorf("empty URL for %#v", page) - } - _, err := client.runstatusRequest(ctx, page.URL, nil, "DELETE") - return err -} - -// GetRunstatusPage fetches the runstatus page -func (client *Client) GetRunstatusPage(ctx context.Context, page RunstatusPage) (*RunstatusPage, error) { - if page.URL != "" { - return client.getRunstatusPage(ctx, page.URL) - } - - ps, err := client.ListRunstatusPages(ctx) - if err != nil { - return nil, err - } - - for i := range ps { - if ps[i].Match(page) { - return client.getRunstatusPage(ctx, ps[i].URL) - } - } - - return nil, fmt.Errorf("%#v not found", page) -} - -func (client *Client) getRunstatusPage(ctx context.Context, pageURL string) (*RunstatusPage, error) { - resp, err := client.runstatusRequest(ctx, pageURL, nil, "GET") - if err != nil { - return nil, err - } - - p := new(RunstatusPage) - if err := json.Unmarshal(resp, p); err != nil { - return nil, err - } - - // NOTE: fix the missing IDs - for i := range p.Maintenances { - if err := p.Maintenances[i].FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", p.Maintenances[i], err) - } - } - for i := range p.Services { - if err := p.Services[i].FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", p.Services[i], err) - } - } - - return p, nil -} - -// ListRunstatusPages list all the runstatus pages -func (client *Client) ListRunstatusPages(ctx context.Context) ([]RunstatusPage, error) { - resp, err := client.runstatusRequest(ctx, client.Endpoint+runstatusPagesURL, nil, "GET") - if err != nil { - return nil, err - } - - var p *RunstatusPageList - if err := json.Unmarshal(resp, &p); err != nil { - return nil, err - } - - return p.Pages, nil -} - -//PaginateRunstatusPages paginate on runstatus pages -func (client *Client) PaginateRunstatusPages(ctx context.Context, callback func(pages []RunstatusPage, e error) bool) { - pageURL := client.Endpoint + runstatusPagesURL - for pageURL != "" { - resp, err := client.runstatusRequest(ctx, pageURL, nil, "GET") - if err != nil { - callback(nil, err) - return - } - - var p *RunstatusPageList - if err := json.Unmarshal(resp, &p); err != nil { - callback(nil, err) - return - } - - if ok := callback(p.Pages, nil); ok { - return - } - - pageURL = p.Next - } -} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_service.go b/vendor/github.com/exoscale/egoscale/runstatus_service.go deleted file mode 100644 index 456d92fcf..000000000 --- a/vendor/github.com/exoscale/egoscale/runstatus_service.go +++ /dev/null @@ -1,201 +0,0 @@ -package egoscale - -import ( - "context" - "encoding/json" - "fmt" - "log" - "net/url" - "path" - "strconv" -) - -// RunstatusService is a runstatus service -type RunstatusService struct { - ID int `json:"id"` // missing field - Name string `json:"name"` - PageURL string `json:"page_url,omitempty"` // fake field - State string `json:"state,omitempty"` - URL string `json:"url,omitempty"` -} - -// FakeID fills up the ID field as it's currently missing -func (service *RunstatusService) FakeID() error { - if service.ID > 0 { - return nil - } - - if service.URL == "" { - return fmt.Errorf("empty URL for %#v", service) - } - - u, err := url.Parse(service.URL) - if err != nil { - return err - } - - s := path.Base(u.Path) - id, err := strconv.Atoi(s) - if err != nil { - return err - } - service.ID = id - return nil -} - -// Match returns true if the other service has got similarities with itself -func (service RunstatusService) Match(other RunstatusService) bool { - if other.Name != "" && service.Name == other.Name { - return true - } - - if other.ID > 0 && service.ID == other.ID { - return true - } - - return false -} - -// RunstatusServiceList service list -type RunstatusServiceList struct { - Next string `json:"next"` - Previous string `json:"previous"` - Services []RunstatusService `json:"results"` -} - -// DeleteRunstatusService delete runstatus service -func (client *Client) DeleteRunstatusService(ctx context.Context, service RunstatusService) error { - if service.URL == "" { - return fmt.Errorf("empty URL for %#v", service) - } - - _, err := client.runstatusRequest(ctx, service.URL, nil, "DELETE") - return err -} - -// CreateRunstatusService create runstatus service -func (client *Client) CreateRunstatusService(ctx context.Context, service RunstatusService) (*RunstatusService, error) { - if service.PageURL == "" { - return nil, fmt.Errorf("empty Page URL for %#v", service) - } - - page, err := client.GetRunstatusPage(ctx, RunstatusPage{URL: service.PageURL}) - if err != nil { - return nil, err - } - - resp, err := client.runstatusRequest(ctx, page.ServicesURL, service, "POST") - if err != nil { - return nil, err - } - - s := &RunstatusService{} - if err := json.Unmarshal(resp, s); err != nil { - return nil, err - } - - return s, nil -} - -// GetRunstatusService displays service detail. -func (client *Client) GetRunstatusService(ctx context.Context, service RunstatusService) (*RunstatusService, error) { - if service.URL != "" { - return client.getRunstatusService(ctx, service.URL) - } - - if service.PageURL == "" { - return nil, fmt.Errorf("empty Page URL in %#v", service) - } - - page, err := client.getRunstatusPage(ctx, service.PageURL) - if err != nil { - return nil, err - } - - for i := range page.Services { - s := &page.Services[i] - if s.Match(service) { - if err := s.FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", s, err) - } - return s, nil - } - } - - return nil, fmt.Errorf("%#v not found", service) -} - -func (client *Client) getRunstatusService(ctx context.Context, serviceURL string) (*RunstatusService, error) { - resp, err := client.runstatusRequest(ctx, serviceURL, nil, "GET") - if err != nil { - return nil, err - } - - s := &RunstatusService{} - if err := json.Unmarshal(resp, &s); err != nil { - return nil, err - } - - if err := s.FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", s, err) - } - - return s, nil -} - -// ListRunstatusServices displays the list of services. -func (client *Client) ListRunstatusServices(ctx context.Context, page RunstatusPage) ([]RunstatusService, error) { - if page.ServicesURL == "" { - return nil, fmt.Errorf("empty Services URL for %#v", page) - } - - results := make([]RunstatusService, 0) - - var err error - client.PaginateRunstatusServices(ctx, page, func(service *RunstatusService, e error) bool { - if e != nil { - err = e - return false - } - - results = append(results, *service) - return true - }) - - return results, err -} - -// PaginateRunstatusServices paginates Services -func (client *Client) PaginateRunstatusServices(ctx context.Context, page RunstatusPage, callback func(*RunstatusService, error) bool) { // nolint: dupl - if page.ServicesURL == "" { - callback(nil, fmt.Errorf("empty Services URL for %#v", page)) - return - } - - servicesURL := page.ServicesURL - for servicesURL != "" { - resp, err := client.runstatusRequest(ctx, servicesURL, nil, "GET") - if err != nil { - callback(nil, err) - return - } - - var ss *RunstatusServiceList - if err := json.Unmarshal(resp, &ss); err != nil { - callback(nil, err) - return - } - - for i := range ss.Services { - if err := ss.Services[i].FakeID(); err != nil { - log.Printf("bad fake ID for %#v, %s", ss.Services[i], err) - } - - if cont := callback(&ss.Services[i], nil); !cont { - return - } - } - - servicesURL = ss.Next - } -} diff --git a/vendor/github.com/exoscale/egoscale/security_groups.go b/vendor/github.com/exoscale/egoscale/security_groups.go deleted file mode 100644 index a11e53a4f..000000000 --- a/vendor/github.com/exoscale/egoscale/security_groups.go +++ /dev/null @@ -1,226 +0,0 @@ -package egoscale - -import ( - "context" - "fmt" - "net/url" - "strconv" - "strings" -) - -// SecurityGroup represent a firewalling set of rules -type SecurityGroup struct { - Account string `json:"account,omitempty" doc:"the account owning the security group"` - Description string `json:"description,omitempty" doc:"the description of the security group"` - EgressRule []EgressRule `json:"egressrule,omitempty" doc:"the list of egress rules associated with the security group"` - ID *UUID `json:"id" doc:"the ID of the security group"` - IngressRule []IngressRule `json:"ingressrule,omitempty" doc:"the list of ingress rules associated with the security group"` - Name string `json:"name,omitempty" doc:"the name of the security group"` -} - -// UserSecurityGroup converts a SecurityGroup to a UserSecurityGroup -func (sg SecurityGroup) UserSecurityGroup() UserSecurityGroup { - return UserSecurityGroup{ - Group: sg.Name, - } -} - -// ListRequest builds the ListSecurityGroups request -func (sg SecurityGroup) ListRequest() (ListCommand, error) { - req := &ListSecurityGroups{ - ID: sg.ID, - SecurityGroupName: sg.Name, - } - - return req, nil -} - -// Delete deletes the given Security Group -func (sg SecurityGroup) Delete(ctx context.Context, client *Client) error { - if sg.ID == nil && sg.Name == "" { - return fmt.Errorf("a SecurityGroup may only be deleted using ID or Name") - } - - req := &DeleteSecurityGroup{} - - if sg.ID != nil { - req.ID = sg.ID - } else { - req.Name = sg.Name - } - - return client.BooleanRequestWithContext(ctx, req) -} - -// RuleByID returns IngressRule or EgressRule by a rule ID -func (sg SecurityGroup) RuleByID(ruleID UUID) (*IngressRule, *EgressRule) { - for i, in := range sg.IngressRule { - if in.RuleID.Equal(ruleID) { - return &sg.IngressRule[i], nil - } - } - - for i, out := range sg.EgressRule { - if out.RuleID.Equal(ruleID) { - return nil, &sg.EgressRule[i] - } - } - - return nil, nil -} - -// IngressRule represents the ingress rule -type IngressRule struct { - CIDR *CIDR `json:"cidr,omitempty" doc:"the CIDR notation for the base IP address of the security group rule"` - Description string `json:"description,omitempty" doc:"description of the security group rule"` - EndPort uint16 `json:"endport,omitempty" doc:"the ending port of the security group rule "` - IcmpCode uint8 `json:"icmpcode,omitempty" doc:"the code for the ICMP message response"` - IcmpType uint8 `json:"icmptype,omitempty" doc:"the type of the ICMP message response"` - Protocol string `json:"protocol,omitempty" doc:"the protocol of the security group rule"` - RuleID *UUID `json:"ruleid" doc:"the id of the security group rule"` - SecurityGroupName string `json:"securitygroupname,omitempty" doc:"security group name"` - StartPort uint16 `json:"startport,omitempty" doc:"the starting port of the security group rule"` -} - -// EgressRule represents the ingress rule -type EgressRule IngressRule - -// UserSecurityGroup represents the traffic of another security group -type UserSecurityGroup struct { - Group string `json:"group,omitempty"` -} - -// String gives the UserSecurityGroup name -func (usg UserSecurityGroup) String() string { - return usg.Group -} - -// CreateSecurityGroup represents a security group creation -type CreateSecurityGroup struct { - Name string `json:"name" doc:"name of the security group"` - Description string `json:"description,omitempty" doc:"the description of the security group"` - _ bool `name:"createSecurityGroup" description:"Creates a security group"` -} - -// Response returns the struct to unmarshal -func (CreateSecurityGroup) Response() interface{} { - return new(SecurityGroup) -} - -// DeleteSecurityGroup represents a security group deletion -type DeleteSecurityGroup struct { - ID *UUID `json:"id,omitempty" doc:"The ID of the security group. Mutually exclusive with name parameter"` - Name string `json:"name,omitempty" doc:"The ID of the security group. Mutually exclusive with id parameter"` - _ bool `name:"deleteSecurityGroup" description:"Deletes security group"` -} - -// Response returns the struct to unmarshal -func (DeleteSecurityGroup) Response() interface{} { - return new(BooleanResponse) -} - -// AuthorizeSecurityGroupIngress (Async) represents the ingress rule creation -type AuthorizeSecurityGroupIngress struct { - CIDRList []CIDR `json:"cidrlist,omitempty" doc:"the cidr list associated"` - Description string `json:"description,omitempty" doc:"the description of the ingress/egress rule"` - EndPort uint16 `json:"endport,omitempty" doc:"end port for this ingress/egress rule"` - IcmpCode uint8 `json:"icmpcode,omitempty" doc:"error code for this icmp message"` - IcmpType uint8 `json:"icmptype,omitempty" doc:"type of the icmp message being sent"` - Protocol string `json:"protocol,omitempty" doc:"TCP is default. UDP, ICMP, ICMPv6, AH, ESP, GRE, IPIP are the other supported protocols"` - SecurityGroupID *UUID `json:"securitygroupid,omitempty" doc:"The ID of the security group. Mutually exclusive with securitygroupname parameter"` - SecurityGroupName string `json:"securitygroupname,omitempty" doc:"The name of the security group. Mutually exclusive with securitygroupid parameter"` - StartPort uint16 `json:"startport,omitempty" doc:"start port for this ingress/egress rule"` - UserSecurityGroupList []UserSecurityGroup `json:"usersecuritygrouplist,omitempty" doc:"user to security group mapping"` - _ bool `name:"authorizeSecurityGroupIngress" description:"Authorize a particular ingress/egress rule for this security group"` -} - -// Response returns the struct to unmarshal -func (AuthorizeSecurityGroupIngress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (AuthorizeSecurityGroupIngress) AsyncResponse() interface{} { - return new(SecurityGroup) -} - -func (req AuthorizeSecurityGroupIngress) onBeforeSend(params url.Values) error { - // ICMP code and type may be zero but can also be omitted... - if strings.HasPrefix(strings.ToLower(req.Protocol), "icmp") { - params.Set("icmpcode", strconv.FormatInt(int64(req.IcmpCode), 10)) - params.Set("icmptype", strconv.FormatInt(int64(req.IcmpType), 10)) - } - // StartPort may be zero but can also be omitted... - if req.EndPort != 0 && req.StartPort == 0 { - params.Set("startport", "0") - } - return nil -} - -// AuthorizeSecurityGroupEgress (Async) represents the egress rule creation -type AuthorizeSecurityGroupEgress AuthorizeSecurityGroupIngress - -// Response returns the struct to unmarshal -func (AuthorizeSecurityGroupEgress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (AuthorizeSecurityGroupEgress) AsyncResponse() interface{} { - return new(SecurityGroup) -} - -func (req AuthorizeSecurityGroupEgress) onBeforeSend(params url.Values) error { - return (AuthorizeSecurityGroupIngress)(req).onBeforeSend(params) -} - -// RevokeSecurityGroupIngress (Async) represents the ingress/egress rule deletion -type RevokeSecurityGroupIngress struct { - ID *UUID `json:"id" doc:"The ID of the ingress rule"` - _ bool `name:"revokeSecurityGroupIngress" description:"Deletes a particular ingress rule from this security group"` -} - -// Response returns the struct to unmarshal -func (RevokeSecurityGroupIngress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RevokeSecurityGroupIngress) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// RevokeSecurityGroupEgress (Async) represents the ingress/egress rule deletion -type RevokeSecurityGroupEgress struct { - ID *UUID `json:"id" doc:"The ID of the egress rule"` - _ bool `name:"revokeSecurityGroupEgress" description:"Deletes a particular egress rule from this security group"` -} - -// Response returns the struct to unmarshal -func (RevokeSecurityGroupEgress) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RevokeSecurityGroupEgress) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -//go:generate go run generate/main.go -interface=Listable ListSecurityGroups - -// ListSecurityGroups represents a search for security groups -type ListSecurityGroups struct { - ID *UUID `json:"id,omitempty" doc:"list the security group by the id provided"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - SecurityGroupName string `json:"securitygroupname,omitempty" doc:"lists security groups by name"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"lists security groups by virtual machine id"` - _ bool `name:"listSecurityGroups" description:"Lists security groups"` -} - -// ListSecurityGroupsResponse represents a list of security groups -type ListSecurityGroupsResponse struct { - Count int `json:"count"` - SecurityGroup []SecurityGroup `json:"securitygroup"` -} diff --git a/vendor/github.com/exoscale/egoscale/securitygroups_response.go b/vendor/github.com/exoscale/egoscale/securitygroups_response.go deleted file mode 100644 index ff08f333c..000000000 --- a/vendor/github.com/exoscale/egoscale/securitygroups_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListSecurityGroups) Response() interface{} { - return new(ListSecurityGroupsResponse) -} - -// ListRequest returns itself -func (ls *ListSecurityGroups) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListSecurityGroups) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListSecurityGroups) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListSecurityGroups) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListSecurityGroupsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListSecurityGroupsResponse was expected, got %T", resp)) - return - } - - for i := range items.SecurityGroup { - if !callback(&items.SecurityGroup[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/serialization.go b/vendor/github.com/exoscale/egoscale/serialization.go deleted file mode 100644 index 24a0c123f..000000000 --- a/vendor/github.com/exoscale/egoscale/serialization.go +++ /dev/null @@ -1,402 +0,0 @@ -package egoscale - -import ( - "encoding/base64" - "fmt" - "log" - "net" - "net/url" - "reflect" - "strconv" - "strings" -) - -func csQuotePlus(s string) string { - s = strings.Replace(s, "+", "%20", -1) - return s -} - -func csEncode(s string) string { - return csQuotePlus(url.QueryEscape(s)) -} - -// info returns the meta info of a command -// -// command is not a Command so it's easier to Test -func info(command interface{}) (*CommandInfo, error) { - typeof := reflect.TypeOf(command) - - // Going up the pointer chain to find the underlying struct - for typeof.Kind() == reflect.Ptr { - typeof = typeof.Elem() - } - - field, ok := typeof.FieldByName("_") - if !ok { - return nil, fmt.Errorf(`missing meta ("_") field in %#v`, command) - } - - name, nameOk := field.Tag.Lookup("name") - description, _ := field.Tag.Lookup("description") - - if !nameOk { - return nil, fmt.Errorf(`missing "name" key in the tag string of %#v`, command) - } - - info := &CommandInfo{ - Name: name, - Description: description, - } - - return info, nil -} - -// prepareValues uses a command to build a POST request -// -// command is not a Command so it's easier to Test -func prepareValues(prefix string, command interface{}) (url.Values, error) { - params := url.Values{} - - value := reflect.ValueOf(command) - typeof := reflect.TypeOf(command) - - // Going up the pointer chain to find the underlying struct - for typeof.Kind() == reflect.Ptr { - typeof = typeof.Elem() - value = value.Elem() - } - - // Checking for nil commands - if !value.IsValid() { - return nil, fmt.Errorf("cannot serialize the invalid value %#v", command) - } - - for i := 0; i < typeof.NumField(); i++ { - field := typeof.Field(i) - if field.Name == "_" { - continue - } - - val := value.Field(i) - tag := field.Tag - - var err error - var name string - var value interface{} - - if json, ok := tag.Lookup("json"); ok { - n, required := ExtractJSONTag(field.Name, json) - name = prefix + n - - switch val.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - value, err = prepareInt(val.Int(), required) - - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - value, err = prepareUint(val.Uint(), required) - - case reflect.Float32, reflect.Float64: - value, err = prepareFloat(val.Float(), required) - - case reflect.String: - value, err = prepareString(val.String(), required) - - case reflect.Bool: - value, err = prepareBool(val.Bool(), required) - - case reflect.Map: - if val.Len() == 0 { - if required { - err = fmt.Errorf("field is required, got empty map") - } - } else { - value, err = prepareMap(name, val.Interface()) - } - - case reflect.Ptr: - value, err = preparePtr(field.Type.Elem().Kind(), val, required) - - case reflect.Slice: - value, err = prepareSlice(name, field.Type, val, required) - - case reflect.Struct: - value, err = prepareStruct(val.Interface(), required) - - default: - if required { - err = fmt.Errorf("unsupported type") - } - } - } else { - switch val.Kind() { - case reflect.Struct: - value, err = prepareEmbedStruct(val.Interface()) - default: - log.Printf("[SKIP] %s.%s no json label found", typeof.Name(), field.Name) - } - } - - if err != nil { - return nil, fmt.Errorf("%s.%s (%v) %s", typeof.Name(), field.Name, val.Kind(), err) - } - - switch v := value.(type) { - case *string: - if name != "" && v != nil { - params.Set(name, *v) - } - case url.Values: - for k, xs := range v { - for _, x := range xs { - params.Add(k, x) - } - } - } - } - - return params, nil -} - -func prepareInt(v int64, required bool) (*string, error) { - if v == 0 { - if required { - return nil, fmt.Errorf("field is required, got %d", v) - } - return nil, nil - } - value := strconv.FormatInt(v, 10) - return &value, nil -} - -func prepareUint(v uint64, required bool) (*string, error) { - if v == 0 { - if required { - return nil, fmt.Errorf("field is required, got %d", v) - } - return nil, nil - } - - value := strconv.FormatUint(v, 10) - return &value, nil -} - -func prepareFloat(v float64, required bool) (*string, error) { - if v == 0 { - if required { - return nil, fmt.Errorf("field is required, got %f", v) - } - return nil, nil - } - value := strconv.FormatFloat(v, 'f', -1, 64) - return &value, nil -} - -func prepareString(v string, required bool) (*string, error) { - if v == "" { - if required { - return nil, fmt.Errorf("field is required, got %q", v) - } - return nil, nil - } - return &v, nil -} - -func prepareBool(v bool, required bool) (*string, error) { - value := strconv.FormatBool(v) - if !v { - if required { - return &value, nil - } - return nil, nil - } - - return &value, nil -} - -func prepareList(prefix string, slice interface{}) (url.Values, error) { - params := url.Values{} - value := reflect.ValueOf(slice) - - for i := 0; i < value.Len(); i++ { - ps, err := prepareValues(fmt.Sprintf("%s[%d].", prefix, i), value.Index(i).Interface()) - if err != nil { - return nil, err - } - - for k, xs := range ps { - for _, x := range xs { - params.Add(k, x) - } - } - } - - return params, nil -} - -func prepareMap(prefix string, m interface{}) (url.Values, error) { - value := url.Values{} - v := reflect.ValueOf(m) - - for i, key := range v.MapKeys() { - var keyName string - var keyValue string - - switch key.Kind() { - case reflect.String: - keyName = key.String() - default: - return value, fmt.Errorf("only map[string]string are supported (XXX)") - } - - val := v.MapIndex(key) - switch val.Kind() { - case reflect.String: - keyValue = val.String() - default: - return value, fmt.Errorf("only map[string]string are supported (XXX)") - } - - value.Set(fmt.Sprintf("%s[%d].%s", prefix, i, keyName), keyValue) - } - - return value, nil -} - -func preparePtr(kind reflect.Kind, val reflect.Value, required bool) (*string, error) { - if val.IsNil() { - if required { - return nil, fmt.Errorf("field is required, got empty ptr") - } - return nil, nil - } - - switch kind { - case reflect.Bool: - return prepareBool(val.Elem().Bool(), true) - case reflect.Struct: - return prepareStruct(val.Interface(), required) - default: - return nil, fmt.Errorf("kind %v is not supported as a ptr", kind) - } -} - -func prepareSlice(name string, fieldType reflect.Type, val reflect.Value, required bool) (interface{}, error) { - switch fieldType.Elem().Kind() { - case reflect.Uint8: - switch fieldType { - case reflect.TypeOf(net.IPv4zero): - ip := (net.IP)(val.Bytes()) - if ip == nil || ip.Equal(net.IP{}) { - if required { - return nil, fmt.Errorf("field is required, got zero IPv4 address") - } - } else { - value := ip.String() - return &value, nil - } - - case reflect.TypeOf(MAC48(0, 0, 0, 0, 0, 0)): - mac := val.Interface().(MACAddress) - s := mac.String() - if s == "" { - if required { - return nil, fmt.Errorf("field is required, got empty MAC address") - } - } else { - return &s, nil - } - default: - if val.Len() == 0 { - if required { - return nil, fmt.Errorf("field is required, got empty slice") - } - } else { - value := base64.StdEncoding.EncodeToString(val.Bytes()) - return &value, nil - } - } - case reflect.String: - if val.Len() == 0 { - if required { - return nil, fmt.Errorf("field is required, got empty slice") - } - } else { - elems := make([]string, 0, val.Len()) - for i := 0; i < val.Len(); i++ { - // XXX what if the value contains a comma? Double encode? - s := val.Index(i).String() - elems = append(elems, s) - } - value := strings.Join(elems, ",") - return &value, nil - } - default: - switch fieldType.Elem() { - case reflect.TypeOf(CIDR{}), reflect.TypeOf(UUID{}): - if val.Len() == 0 { - if required { - return nil, fmt.Errorf("field is required, got empty slice") - } - } else { - v := reflect.ValueOf(val.Interface()) - ss := make([]string, val.Len()) - for i := 0; i < v.Len(); i++ { - e := v.Index(i).Interface() - s, ok := e.(fmt.Stringer) - if !ok { - return nil, fmt.Errorf("not a String, %T", e) - } - ss[i] = s.String() - } - value := strings.Join(ss, ",") - return &value, nil - } - default: - if val.Len() == 0 { - if required { - return nil, fmt.Errorf("field is required, got empty slice") - } - } else { - return prepareList(name, val.Interface()) - } - } - } - - return nil, nil -} - -func prepareStruct(i interface{}, required bool) (*string, error) { - s, ok := i.(fmt.Stringer) - if !ok { - return nil, fmt.Errorf("struct field not a Stringer") - } - - if s == nil { - if required { - return nil, fmt.Errorf("field is required, got %#v", s) - } - } - - return prepareString(s.String(), required) -} - -func prepareEmbedStruct(i interface{}) (url.Values, error) { - return prepareValues("", i) -} - -// ExtractJSONTag returns the variable name or defaultName as well as if the field is required (!omitempty) -func ExtractJSONTag(defaultName, jsonTag string) (string, bool) { - tags := strings.Split(jsonTag, ",") - name := tags[0] - required := true - for _, tag := range tags { - if tag == "omitempty" { - required = false - } - } - - if name == "" || name == "omitempty" { - name = defaultName - } - return name, required -} diff --git a/vendor/github.com/exoscale/egoscale/service_offerings.go b/vendor/github.com/exoscale/egoscale/service_offerings.go deleted file mode 100644 index 8d3551467..000000000 --- a/vendor/github.com/exoscale/egoscale/service_offerings.go +++ /dev/null @@ -1,77 +0,0 @@ -package egoscale - -// ServiceOffering corresponds to the Compute Offerings -// -// A service offering correspond to some hardware features (CPU, RAM). -// -// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/service_offerings.html -type ServiceOffering struct { - Authorized bool `json:"authorized,omitempty" doc:"is the account/domain authorized to use this service offering"` - CPUNumber int `json:"cpunumber,omitempty" doc:"the number of CPU"` - CPUSpeed int `json:"cpuspeed,omitempty" doc:"the clock rate CPU speed in Mhz"` - Created string `json:"created,omitempty" doc:"the date this service offering was created"` - DefaultUse bool `json:"defaultuse,omitempty" doc:"is this a default system vm offering"` - DeploymentPlanner string `json:"deploymentplanner,omitempty" doc:"deployment strategy used to deploy VM."` - DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty" doc:"bytes read rate of the service offering"` - DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty" doc:"bytes write rate of the service offering"` - DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty" doc:"io requests read rate of the service offering"` - DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty" doc:"io requests write rate of the service offering"` - Displaytext string `json:"displaytext,omitempty" doc:"an alternate display text of the service offering."` - HostTags string `json:"hosttags,omitempty" doc:"the host tag for the service offering"` - HypervisorSnapshotReserve int `json:"hypervisorsnapshotreserve,omitempty" doc:"Hypervisor snapshot reserve space as a percent of a volume (for managed storage using Xen or VMware)"` - ID *UUID `json:"id" doc:"the id of the service offering"` - IsCustomized bool `json:"iscustomized,omitempty" doc:"is true if the offering is customized"` - IsCustomizedIops bool `json:"iscustomizediops,omitempty" doc:"true if disk offering uses custom iops, false otherwise"` - IsSystem bool `json:"issystem,omitempty" doc:"is this a system vm offering"` - IsVolatile bool `json:"isvolatile,omitempty" doc:"true if the vm needs to be volatile, i.e., on every reboot of vm from API root disk is discarded and creates a new root disk"` - LimitCPUUse bool `json:"limitcpuuse,omitempty" doc:"restrict the CPU usage to committed service offering"` - MaxIops int64 `json:"maxiops,omitempty" doc:"the max iops of the disk offering"` - Memory int `json:"memory,omitempty" doc:"the memory in MB"` - MinIops int64 `json:"miniops,omitempty" doc:"the min iops of the disk offering"` - Name string `json:"name,omitempty" doc:"the name of the service offering"` - NetworkRate int `json:"networkrate,omitempty" doc:"data transfer rate in megabits per second allowed."` - OfferHA bool `json:"offerha,omitempty" doc:"the ha support in the service offering"` - Restricted bool `json:"restricted,omitempty" doc:"is this offering restricted"` - ServiceOfferingDetails map[string]string `json:"serviceofferingdetails,omitempty" doc:"additional key/value details tied with this service offering"` - StorageType string `json:"storagetype,omitempty" doc:"the storage type for this service offering"` - SystemVMType string `json:"systemvmtype,omitempty" doc:"is this a the systemvm type for system vm offering"` - Tags string `json:"tags,omitempty" doc:"the tags for the service offering"` -} - -// ListRequest builds the ListSecurityGroups request -func (so ServiceOffering) ListRequest() (ListCommand, error) { - // Restricted cannot be applied here because it really has three states - req := &ListServiceOfferings{ - ID: so.ID, - Name: so.Name, - SystemVMType: so.SystemVMType, - } - - if so.IsSystem { - req.IsSystem = &so.IsSystem - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListServiceOfferings - -// ListServiceOfferings represents a query for service offerings -type ListServiceOfferings struct { - ID *UUID `json:"id,omitempty" doc:"ID of the service offering"` - IsSystem *bool `json:"issystem,omitempty" doc:"is this a system vm offering"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"name of the service offering"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - Restricted *bool `json:"restricted,omitempty" doc:"filter by the restriction flag: true to list only the restricted service offerings, false to list non-restricted service offerings, or nothing for all."` - SystemVMType string `json:"systemvmtype,omitempty" doc:"the system VM type. Possible types are \"consoleproxy\", \"secondarystoragevm\" or \"domainrouter\"."` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the ID of the virtual machine. Pass this in if you want to see the available service offering that a virtual machine can be changed to."` - _ bool `name:"listServiceOfferings" description:"Lists all available service offerings."` -} - -// ListServiceOfferingsResponse represents a list of service offerings -type ListServiceOfferingsResponse struct { - Count int `json:"count"` - ServiceOffering []ServiceOffering `json:"serviceoffering"` -} diff --git a/vendor/github.com/exoscale/egoscale/serviceofferings_response.go b/vendor/github.com/exoscale/egoscale/serviceofferings_response.go deleted file mode 100644 index a01d4aaf4..000000000 --- a/vendor/github.com/exoscale/egoscale/serviceofferings_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListServiceOfferings) Response() interface{} { - return new(ListServiceOfferingsResponse) -} - -// ListRequest returns itself -func (ls *ListServiceOfferings) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListServiceOfferings) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListServiceOfferings) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListServiceOfferings) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListServiceOfferingsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListServiceOfferingsResponse was expected, got %T", resp)) - return - } - - for i := range items.ServiceOffering { - if !callback(&items.ServiceOffering[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/snapshots.go b/vendor/github.com/exoscale/egoscale/snapshots.go deleted file mode 100644 index 191f4a0f7..000000000 --- a/vendor/github.com/exoscale/egoscale/snapshots.go +++ /dev/null @@ -1,139 +0,0 @@ -package egoscale - -// SnapshotState represents the Snapshot.State enum -// -// See: https://github.com/apache/cloudstack/blob/master/api/src/main/java/com/cloud/storage/Snapshot.java -type SnapshotState string - -const ( - // Allocated ... (TODO) - Allocated SnapshotState = "Allocated" - // Creating ... (TODO) - Creating SnapshotState = "Creating" - // CreatedOnPrimary ... (TODO) - CreatedOnPrimary SnapshotState = "CreatedOnPrimary" - // BackingUp ... (TODO) - BackingUp SnapshotState = "BackingUp" - // BackedUp ... (TODO) - BackedUp SnapshotState = "BackedUp" - // Copying ... (TODO) - Copying SnapshotState = "Copying" - // Destroying ... (TODO) - Destroying SnapshotState = "Destroying" - // Destroyed ... (TODO) - Destroyed SnapshotState = "Destroyed" - // Error is a state where the user can't see the snapshot while the snapshot may still exist on the storage - Error SnapshotState = "Error" -) - -// Snapshot represents a volume snapshot -type Snapshot struct { - Account string `json:"account,omitempty" doc:"the account associated with the snapshot"` - AccountID *UUID `json:"accountid,omitempty" doc:"the account ID associated with the snapshot"` - Created string `json:"created,omitempty" doc:"the date the snapshot was created"` - ID *UUID `json:"id,omitempty" doc:"ID of the snapshot"` - IntervalType string `json:"intervaltype,omitempty" doc:"valid types are hourly, daily, weekly, monthy, template, and none."` - Name string `json:"name,omitempty" doc:"name of the snapshot"` - PhysicalSize int64 `json:"physicalsize,omitempty" doc:"physical size of the snapshot on image store"` - Revertable *bool `json:"revertable,omitempty" doc:"indicates whether the underlying storage supports reverting the volume to this snapshot"` - Size int64 `json:"size,omitempty" doc:"the size of original volume"` - SnapshotType string `json:"snapshottype,omitempty" doc:"the type of the snapshot"` - State string `json:"state,omitempty" doc:"the state of the snapshot. BackedUp means that snapshot is ready to be used; Creating - the snapshot is being allocated on the primary storage; BackingUp - the snapshot is being backed up on secondary storage"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with snapshot"` - VolumeID *UUID `json:"volumeid,omitempty" doc:"ID of the disk volume"` - VolumeName string `json:"volumename,omitempty" doc:"name of the disk volume"` - VolumeType string `json:"volumetype,omitempty" doc:"type of the disk volume"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"id of the availability zone"` -} - -// ResourceType returns the type of the resource -func (Snapshot) ResourceType() string { - return "Snapshot" -} - -// CreateSnapshot (Async) creates an instant snapshot of a volume -type CreateSnapshot struct { - VolumeID *UUID `json:"volumeid" doc:"The ID of the disk volume"` - QuiesceVM *bool `json:"quiescevm,omitempty" doc:"quiesce vm if true"` - _ bool `name:"createSnapshot" description:"Creates an instant snapshot of a volume."` -} - -// Response returns the struct to unmarshal -func (CreateSnapshot) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (CreateSnapshot) AsyncResponse() interface{} { - return new(Snapshot) -} - -// ListRequest builds the ListSnapshot request -func (ss Snapshot) ListRequest() (ListCommand, error) { - // Restricted cannot be applied here because it really has three states - req := &ListSnapshots{ - ID: ss.ID, - Name: ss.Name, - VolumeID: ss.VolumeID, - SnapshotType: ss.SnapshotType, - ZoneID: ss.ZoneID, - // TODO: tags - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListSnapshots - -// ListSnapshots lists the volume snapshots -type ListSnapshots struct { - ID *UUID `json:"id,omitempty" doc:"lists snapshot by snapshot ID"` - IntervalType string `json:"intervaltype,omitempty" doc:"valid values are HOURLY, DAILY, WEEKLY, and MONTHLY."` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"lists snapshot by snapshot name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - SnapshotType string `json:"snapshottype,omitempty" doc:"valid values are MANUAL or RECURRING."` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - VolumeID *UUID `json:"volumeid,omitempty" doc:"the ID of the disk volume"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"list snapshots by zone id"` - _ bool `name:"listSnapshots" description:"Lists all available snapshots for the account."` -} - -// ListSnapshotsResponse represents a list of volume snapshots -type ListSnapshotsResponse struct { - Count int `json:"count"` - Snapshot []Snapshot `json:"snapshot"` -} - -// DeleteSnapshot (Async) deletes a snapshot of a disk volume -type DeleteSnapshot struct { - ID *UUID `json:"id" doc:"The ID of the snapshot"` - _ bool `name:"deleteSnapshot" description:"Deletes a snapshot of a disk volume."` -} - -// Response returns the struct to unmarshal -func (DeleteSnapshot) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DeleteSnapshot) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// RevertSnapshot (Async) reverts a volume snapshot -type RevertSnapshot struct { - ID *UUID `json:"id" doc:"The ID of the snapshot"` - _ bool `name:"revertSnapshot" description:"revert a volume snapshot."` -} - -// Response returns the struct to unmarshal -func (RevertSnapshot) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RevertSnapshot) AsyncResponse() interface{} { - return new(BooleanResponse) -} diff --git a/vendor/github.com/exoscale/egoscale/snapshots_response.go b/vendor/github.com/exoscale/egoscale/snapshots_response.go deleted file mode 100644 index 2ca9cff5a..000000000 --- a/vendor/github.com/exoscale/egoscale/snapshots_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListSnapshots) Response() interface{} { - return new(ListSnapshotsResponse) -} - -// ListRequest returns itself -func (ls *ListSnapshots) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListSnapshots) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListSnapshots) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListSnapshots) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListSnapshotsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListSnapshotsResponse was expected, got %T", resp)) - return - } - - for i := range items.Snapshot { - if !callback(&items.Snapshot[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/ssh_keypairs.go b/vendor/github.com/exoscale/egoscale/ssh_keypairs.go deleted file mode 100644 index 9f2bedca0..000000000 --- a/vendor/github.com/exoscale/egoscale/ssh_keypairs.go +++ /dev/null @@ -1,105 +0,0 @@ -package egoscale - -import ( - "context" - "fmt" -) - -// SSHKeyPair represents an SSH key pair -// -// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/stable/virtual_machines.html#creating-the-ssh-keypair -type SSHKeyPair struct { - Fingerprint string `json:"fingerprint,omitempty" doc:"Fingerprint of the public key"` - Name string `json:"name,omitempty" doc:"Name of the keypair"` - PrivateKey string `json:"privatekey,omitempty" doc:"Private key"` -} - -// Delete removes the given SSH key, by Name -func (ssh SSHKeyPair) Delete(ctx context.Context, client *Client) error { - if ssh.Name == "" { - return fmt.Errorf("an SSH Key Pair may only be deleted using Name") - } - - return client.BooleanRequestWithContext(ctx, &DeleteSSHKeyPair{ - Name: ssh.Name, - }) -} - -// ListRequest builds the ListSSHKeyPairs request -func (ssh SSHKeyPair) ListRequest() (ListCommand, error) { - req := &ListSSHKeyPairs{ - Fingerprint: ssh.Fingerprint, - Name: ssh.Name, - } - - return req, nil -} - -// CreateSSHKeyPair represents a new keypair to be created -type CreateSSHKeyPair struct { - Name string `json:"name" doc:"Name of the keypair"` - _ bool `name:"createSSHKeyPair" description:"Create a new keypair and returns the private key"` -} - -// Response returns the struct to unmarshal -func (CreateSSHKeyPair) Response() interface{} { - return new(SSHKeyPair) -} - -// DeleteSSHKeyPair represents a new keypair to be created -type DeleteSSHKeyPair struct { - Name string `json:"name" doc:"Name of the keypair"` - _ bool `name:"deleteSSHKeyPair" description:"Deletes a keypair by name"` -} - -// Response returns the struct to unmarshal -func (DeleteSSHKeyPair) Response() interface{} { - return new(BooleanResponse) -} - -// RegisterSSHKeyPair represents a new registration of a public key in a keypair -type RegisterSSHKeyPair struct { - Name string `json:"name" doc:"Name of the keypair"` - PublicKey string `json:"publickey" doc:"Public key material of the keypair"` - _ bool `name:"registerSSHKeyPair" description:"Register a public key in a keypair under a certain name"` -} - -// Response returns the struct to unmarshal -func (RegisterSSHKeyPair) Response() interface{} { - return new(SSHKeyPair) -} - -//go:generate go run generate/main.go -interface=Listable ListSSHKeyPairs - -// ListSSHKeyPairs represents a query for a list of SSH KeyPairs -type ListSSHKeyPairs struct { - Fingerprint string `json:"fingerprint,omitempty" doc:"A public key fingerprint to look for"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"A key pair name to look for"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - _ bool `name:"listSSHKeyPairs" description:"List registered keypairs"` -} - -// ListSSHKeyPairsResponse represents a list of SSH key pairs -type ListSSHKeyPairsResponse struct { - Count int `json:"count"` - SSHKeyPair []SSHKeyPair `json:"sshkeypair"` -} - -// ResetSSHKeyForVirtualMachine (Async) represents a change for the key pairs -type ResetSSHKeyForVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - KeyPair string `json:"keypair" doc:"Name of the ssh key pair used to login to the virtual machine"` - _ bool `name:"resetSSHKeyForVirtualMachine" description:"Resets the SSH Key for virtual machine. The virtual machine must be in a \"Stopped\" state."` -} - -// Response returns the struct to unmarshal -func (ResetSSHKeyForVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (ResetSSHKeyForVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} diff --git a/vendor/github.com/exoscale/egoscale/sshkeypairs_response.go b/vendor/github.com/exoscale/egoscale/sshkeypairs_response.go deleted file mode 100644 index 31c471df2..000000000 --- a/vendor/github.com/exoscale/egoscale/sshkeypairs_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListSSHKeyPairs) Response() interface{} { - return new(ListSSHKeyPairsResponse) -} - -// ListRequest returns itself -func (ls *ListSSHKeyPairs) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListSSHKeyPairs) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListSSHKeyPairs) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListSSHKeyPairs) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListSSHKeyPairsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListSSHKeyPairsResponse was expected, got %T", resp)) - return - } - - for i := range items.SSHKeyPair { - if !callback(&items.SSHKeyPair[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/tags.go b/vendor/github.com/exoscale/egoscale/tags.go deleted file mode 100644 index 56e014850..000000000 --- a/vendor/github.com/exoscale/egoscale/tags.go +++ /dev/null @@ -1,84 +0,0 @@ -package egoscale - -// ResourceTag is a tag associated with a resource -// -// https://community.exoscale.com/documentation/compute/instance-tags/ -type ResourceTag struct { - Account string `json:"account,omitempty" doc:"the account associated with the tag"` - Customer string `json:"customer,omitempty" doc:"customer associated with the tag"` - Key string `json:"key,omitempty" doc:"tag key name"` - ResourceID *UUID `json:"resourceid,omitempty" doc:"id of the resource"` - ResourceType string `json:"resourcetype,omitempty" doc:"resource type"` - Value string `json:"value,omitempty" doc:"tag value"` -} - -// ListRequest builds the ListZones request -func (tag ResourceTag) ListRequest() (ListCommand, error) { - req := &ListTags{ - Customer: tag.Customer, - Key: tag.Key, - ResourceID: tag.ResourceID, - ResourceType: tag.ResourceType, - Value: tag.Value, - } - - return req, nil -} - -// CreateTags (Async) creates resource tag(s) -type CreateTags struct { - ResourceIDs []UUID `json:"resourceids" doc:"list of resources to create the tags for"` - ResourceType string `json:"resourcetype" doc:"type of the resource"` - Tags []ResourceTag `json:"tags" doc:"Map of tags (key/value pairs)"` - Customer string `json:"customer,omitempty" doc:"identifies client specific tag. When the value is not null, the tag can't be used by cloudStack code internally"` - _ bool `name:"createTags" description:"Creates resource tag(s)"` -} - -// Response returns the struct to unmarshal -func (CreateTags) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (CreateTags) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// DeleteTags (Async) deletes the resource tag(s) -type DeleteTags struct { - ResourceIDs []UUID `json:"resourceids" doc:"Delete tags for resource id(s)"` - ResourceType string `json:"resourcetype" doc:"Delete tag by resource type"` - Tags []ResourceTag `json:"tags,omitempty" doc:"Delete tags matching key/value pairs"` - _ bool `name:"deleteTags" description:"Deleting resource tag(s)"` -} - -// Response returns the struct to unmarshal -func (DeleteTags) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DeleteTags) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -//go:generate go run generate/main.go -interface=Listable ListTags - -// ListTags list resource tag(s) -type ListTags struct { - Customer string `json:"customer,omitempty" doc:"list by customer name"` - Key string `json:"key,omitempty" doc:"list by key"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ResourceID *UUID `json:"resourceid,omitempty" doc:"list by resource id"` - ResourceType string `json:"resourcetype,omitempty" doc:"list by resource type"` - Value string `json:"value,omitempty" doc:"list by value"` - _ bool `name:"listTags" description:"List resource tag(s)"` -} - -// ListTagsResponse represents a list of resource tags -type ListTagsResponse struct { - Count int `json:"count"` - Tag []ResourceTag `json:"tag"` -} diff --git a/vendor/github.com/exoscale/egoscale/tags_response.go b/vendor/github.com/exoscale/egoscale/tags_response.go deleted file mode 100644 index 870ef49a8..000000000 --- a/vendor/github.com/exoscale/egoscale/tags_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListTags) Response() interface{} { - return new(ListTagsResponse) -} - -// ListRequest returns itself -func (ls *ListTags) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListTags) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListTags) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListTags) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListTagsResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListTagsResponse was expected, got %T", resp)) - return - } - - for i := range items.Tag { - if !callback(&items.Tag[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/templates.go b/vendor/github.com/exoscale/egoscale/templates.go deleted file mode 100644 index 9f49369d2..000000000 --- a/vendor/github.com/exoscale/egoscale/templates.go +++ /dev/null @@ -1,163 +0,0 @@ -package egoscale - -// Template represents a machine to be deployed. -type Template struct { - Account string `json:"account,omitempty" doc:"the account name to which the template belongs"` - AccountID *UUID `json:"accountid,omitempty" doc:"the account id to which the template belongs"` - Bootable bool `json:"bootable,omitempty" doc:"true if the ISO is bootable, false otherwise"` - Checksum string `json:"checksum,omitempty" doc:"checksum of the template"` - Created string `json:"created,omitempty" doc:"the date this template was created"` - CrossZones bool `json:"crossZones,omitempty" doc:"true if the template is managed across all Zones, false otherwise"` - Details map[string]string `json:"details,omitempty" doc:"additional key/value details tied with template"` - DisplayText string `json:"displaytext,omitempty" doc:"the template display text"` - Format string `json:"format,omitempty" doc:"the format of the template."` - HostID *UUID `json:"hostid,omitempty" doc:"the ID of the secondary storage host for the template"` - HostName string `json:"hostname,omitempty" doc:"the name of the secondary storage host for the template"` - Hypervisor string `json:"hypervisor,omitempty" doc:"the target hypervisor for the template"` - ID *UUID `json:"id,omitempty" doc:"the template ID"` - IsDynamicallyScalable bool `json:"isdynamicallyscalable,omitempty" doc:"true if template contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory"` - IsExtractable bool `json:"isextractable,omitempty" doc:"true if the template is extractable, false otherwise"` - IsFeatured bool `json:"isfeatured,omitempty" doc:"true if this template is a featured template, false otherwise"` - IsPublic bool `json:"ispublic,omitempty" doc:"true if this template is a public template, false otherwise"` - IsReady bool `json:"isready,omitempty" doc:"true if the template is ready to be deployed from, false otherwise."` - Name string `json:"name,omitempty" doc:"the template name"` - OsCategoryID *UUID `json:"oscategoryid,omitempty" doc:"the ID of the OS category for this template"` - OsCategoryName string `json:"oscategoryname,omitempty" doc:"the name of the OS category for this template"` - OsTypeID *UUID `json:"ostypeid,omitempty" doc:"the ID of the OS type for this template"` - OsTypeName string `json:"ostypename,omitempty" doc:"the name of the OS type for this template"` - PasswordEnabled bool `json:"passwordenabled,omitempty" doc:"true if the reset password feature is enabled, false otherwise"` - Removed string `json:"removed,omitempty" doc:"the date this template was removed"` - Size int64 `json:"size,omitempty" doc:"the size of the template"` - SourceTemplateID *UUID `json:"sourcetemplateid,omitempty" doc:"the template ID of the parent template if present"` - SSHKeyEnabled bool `json:"sshkeyenabled,omitempty" doc:"true if template is sshkey enabled, false otherwise"` - Status string `json:"status,omitempty" doc:"the status of the template"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with tempate"` - TemplateDirectory string `json:"templatedirectory,omitempty" doc:"Template directory"` - TemplateTag string `json:"templatetag,omitempty" doc:"the tag of this template"` - TemplateType string `json:"templatetype,omitempty" doc:"the type of the template"` - URL string `json:"url,omitempty" doc:"Original URL of the template where it was downloaded"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the zone for this template"` - ZoneName string `json:"zonename,omitempty" doc:"the name of the zone for this template"` -} - -// ResourceType returns the type of the resource -func (Template) ResourceType() string { - return "Template" -} - -// ListRequest builds the ListTemplates request -func (template Template) ListRequest() (ListCommand, error) { - req := &ListTemplates{ - ID: template.ID, - Name: template.Name, - ZoneID: template.ZoneID, - } - if template.IsFeatured { - req.TemplateFilter = "featured" - } - if template.Removed != "" { - *req.ShowRemoved = true - } - - for i := range template.Tags { - req.Tags = append(req.Tags, template.Tags[i]) - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListTemplates - -// ListTemplates represents a template query filter -type ListTemplates struct { - TemplateFilter string `json:"templatefilter" doc:"Possible values are \"featured\", \"self\", \"selfexecutable\",\"sharedexecutable\",\"executable\", and \"community\". * featured : templates that have been marked as featured and public. * self : templates that have been registered or created by the calling user. * selfexecutable : same as self, but only returns templates that can be used to deploy a new VM. * sharedexecutable : templates ready to be deployed that have been granted to the calling user by another user. * executable : templates that are owned by the calling user, or public templates, that can be used to deploy a VM. * community : templates that have been marked as public but not featured."` - ID *UUID `json:"id,omitempty" doc:"the template ID"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"the template name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ShowRemoved *bool `json:"showremoved,omitempty" doc:"Show removed templates as well"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"list templates by zoneid"` - _ bool `name:"listTemplates" description:"List all public, private, and privileged templates."` -} - -// ListTemplatesResponse represents a list of templates -type ListTemplatesResponse struct { - Count int `json:"count"` - Template []Template `json:"template"` -} - -// OSCategory represents an OS category -type OSCategory struct { - ID *UUID `json:"id,omitempty" doc:"the ID of the OS category"` - Name string `json:"name,omitempty" doc:"the name of the OS category"` -} - -// ListRequest builds the ListOSCategories request -func (osCat OSCategory) ListRequest() (ListCommand, error) { - req := &ListOSCategories{ - Name: osCat.Name, - ID: osCat.ID, - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListOSCategories - -// ListOSCategories lists the OS categories -type ListOSCategories struct { - ID *UUID `json:"id,omitempty" doc:"list Os category by id"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"list os category by name"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - _ bool `name:"listOsCategories" description:"Lists all supported OS categories for this cloud."` -} - -// ListOSCategoriesResponse represents a list of OS categories -type ListOSCategoriesResponse struct { - Count int `json:"count"` - OSCategory []OSCategory `json:"oscategory"` -} - -// DeleteTemplate deletes a template by ID -type DeleteTemplate struct { - _ bool `name:"deleteTemplate" description:"Deletes a template"` - ID *UUID `json:"id" doc:"the ID of the template"` -} - -// Response returns the struct to unmarshal -func (DeleteTemplate) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DeleteTemplate) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// RegisterCustomTemplate registers a new template -type RegisterCustomTemplate struct { - _ bool `name:"registerCustomTemplate" description:"Register a new template."` - Checksum string `json:"checksum" doc:"the MD5 checksum value of this template"` - Details map[string]string `json:"details,omitempty" doc:"Template details in key/value pairs"` - Displaytext string `json:"displaytext" doc:"the display text of the template"` - Name string `json:"name" doc:"the name of the template"` - PasswordEnabled *bool `json:"passwordenabled,omitempty" doc:"true if the template supports the password reset feature; default is false"` - SSHKeyEnabled *bool `json:"sshkeyenabled,omitempty" doc:"true if the template supports the sshkey upload feature; default is false"` - TemplateTag string `json:"templatetag,omitempty" doc:"the tag for this template"` - URL string `json:"url" doc:"the URL of where the template is hosted"` - ZoneID *UUID `json:"zoneid" doc:"the ID of the zone the template is to be hosted on"` -} - -// Response returns the struct to unmarshal -func (RegisterCustomTemplate) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RegisterCustomTemplate) AsyncResponse() interface{} { - return new([]Template) -} diff --git a/vendor/github.com/exoscale/egoscale/templates_response.go b/vendor/github.com/exoscale/egoscale/templates_response.go deleted file mode 100644 index b9d61b546..000000000 --- a/vendor/github.com/exoscale/egoscale/templates_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListTemplates) Response() interface{} { - return new(ListTemplatesResponse) -} - -// ListRequest returns itself -func (ls *ListTemplates) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListTemplates) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListTemplates) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListTemplates) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListTemplatesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListTemplatesResponse was expected, got %T", resp)) - return - } - - for i := range items.Template { - if !callback(&items.Template[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/users.go b/vendor/github.com/exoscale/egoscale/users.go deleted file mode 100644 index 71078a97b..000000000 --- a/vendor/github.com/exoscale/egoscale/users.go +++ /dev/null @@ -1,63 +0,0 @@ -package egoscale - -// User represents a User -type User struct { - APIKey string `json:"apikey,omitempty" doc:"the api key of the user"` - Account string `json:"account,omitempty" doc:"the account name of the user"` - AccountID *UUID `json:"accountid,omitempty" doc:"the account ID of the user"` - Created string `json:"created,omitempty" doc:"the date and time the user account was created"` - Email string `json:"email,omitempty" doc:"the user email address"` - FirstName string `json:"firstname,omitempty" doc:"the user firstname"` - ID *UUID `json:"id,omitempty" doc:"the user ID"` - IsDefault bool `json:"isdefault,omitempty" doc:"true if user is default, false otherwise"` - LastName string `json:"lastname,omitempty" doc:"the user lastname"` - RoleID *UUID `json:"roleid,omitempty" doc:"the ID of the role"` - RoleName string `json:"rolename,omitempty" doc:"the name of the role"` - RoleType string `json:"roletype,omitempty" doc:"the type of the role"` - SecretKey string `json:"secretkey,omitempty" doc:"the secret key of the user"` - State string `json:"state,omitempty" doc:"the user state"` - Timezone string `json:"timezone,omitempty" doc:"the timezone user was created in"` - UserName string `json:"username,omitempty" doc:"the user name"` -} - -// ListRequest builds the ListUsers request -func (user User) ListRequest() (ListCommand, error) { - req := &ListUsers{ - ID: user.ID, - UserName: user.UserName, - } - - return req, nil -} - -// RegisterUserKeys registers a new set of key of the given user -// -// NB: only the APIKey and SecretKey will be filled -type RegisterUserKeys struct { - ID *UUID `json:"id" doc:"User id"` - _ bool `name:"registerUserKeys" description:"This command allows a user to register for the developer API, returning a secret key and an API key. This request is made through the integration API port, so it is a privileged command and must be made on behalf of a user. It is up to the implementer just how the username and password are entered, and then how that translates to an integration API request. Both secret key and API key should be returned to the user"` -} - -// Response returns the struct to unmarshal -func (RegisterUserKeys) Response() interface{} { - return new(User) -} - -//go:generate go run generate/main.go -interface=Listable ListUsers - -// ListUsers represents the search for Users -type ListUsers struct { - ID *UUID `json:"id,omitempty" doc:"List user by ID."` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - State string `json:"state,omitempty" doc:"List users by state of the user account."` - UserName string `json:"username,omitempty" doc:"List user by the username"` - _ bool `name:"listUsers" description:"Lists user accounts"` -} - -// ListUsersResponse represents a list of users -type ListUsersResponse struct { - Count int `json:"count"` - User []User `json:"user"` -} diff --git a/vendor/github.com/exoscale/egoscale/users_response.go b/vendor/github.com/exoscale/egoscale/users_response.go deleted file mode 100644 index 4bd4bf473..000000000 --- a/vendor/github.com/exoscale/egoscale/users_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListUsers) Response() interface{} { - return new(ListUsersResponse) -} - -// ListRequest returns itself -func (ls *ListUsers) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListUsers) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListUsers) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListUsers) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListUsersResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListUsersResponse was expected, got %T", resp)) - return - } - - for i := range items.User { - if !callback(&items.User[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/uuid.go b/vendor/github.com/exoscale/egoscale/uuid.go deleted file mode 100644 index dd8be1557..000000000 --- a/vendor/github.com/exoscale/egoscale/uuid.go +++ /dev/null @@ -1,79 +0,0 @@ -package egoscale - -import ( - "encoding/json" - "fmt" - - uuid "github.com/gofrs/uuid" -) - -// UUID holds a UUID v4 -type UUID struct { - uuid.UUID -} - -// DeepCopy create a true copy of the receiver. -func (u *UUID) DeepCopy() *UUID { - if u == nil { - return nil - } - - out := [uuid.Size]byte{} - copy(out[:], u.Bytes()) - - return &UUID{ - (uuid.UUID)(out), - } -} - -// DeepCopyInto copies the receiver into out. -// -// In must be non nil. -func (u *UUID) DeepCopyInto(out *UUID) { - o := [uuid.Size]byte{} - copy(o[:], u.Bytes()) - - out.UUID = (uuid.UUID)(o) -} - -// Equal returns true if itself is equal to other. -func (u UUID) Equal(other UUID) bool { - return u == other -} - -// UnmarshalJSON unmarshals the raw JSON into the UUID. -func (u *UUID) UnmarshalJSON(b []byte) error { - var s string - if err := json.Unmarshal(b, &s); err != nil { - return err - } - - new, err := ParseUUID(s) - if err == nil { - u.UUID = new.UUID - } - return err -} - -// MarshalJSON converts the UUID to a string representation. -func (u UUID) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf("%q", u.String())), nil -} - -// ParseUUID parses a string into a UUID. -func ParseUUID(s string) (*UUID, error) { - u, err := uuid.FromString(s) - if err != nil { - return nil, err - } - return &UUID{u}, nil -} - -// MustParseUUID acts like ParseUUID but panic in case of a failure. -func MustParseUUID(s string) *UUID { - u, e := ParseUUID(s) - if e != nil { - panic(e) - } - return u -} diff --git a/vendor/github.com/exoscale/egoscale/version.go b/vendor/github.com/exoscale/egoscale/version.go deleted file mode 100644 index d96946140..000000000 --- a/vendor/github.com/exoscale/egoscale/version.go +++ /dev/null @@ -1,4 +0,0 @@ -package egoscale - -// Version of the library -const Version = "0.18.1" diff --git a/vendor/github.com/exoscale/egoscale/virtual_machines.go b/vendor/github.com/exoscale/egoscale/virtual_machines.go deleted file mode 100644 index da6ce65c5..000000000 --- a/vendor/github.com/exoscale/egoscale/virtual_machines.go +++ /dev/null @@ -1,613 +0,0 @@ -package egoscale - -import ( - "bytes" - "compress/gzip" - "context" - "encoding/base64" - "fmt" - "io/ioutil" - "net" - "net/url" -) - -// VirtualMachineState holds the state of the instance -// -// https://github.com/apache/cloudstack/blob/master/api/src/main/java/com/cloud/vm/VirtualMachine.java -type VirtualMachineState string - -const ( - // VirtualMachineStarting VM is being started. At this state, you should find host id filled which means it's being started on that host - VirtualMachineStarting VirtualMachineState = "Starting" - // VirtualMachineRunning VM is running. host id has the host that it is running on - VirtualMachineRunning VirtualMachineState = "Running" - // VirtualMachineStopping VM is being stopped. host id has the host that it is being stopped on - VirtualMachineStopping VirtualMachineState = "Stopping" - // VirtualMachineStopped VM is stopped. host id should be null - VirtualMachineStopped VirtualMachineState = "Stopped" - // VirtualMachineDestroyed VM is marked for destroy - VirtualMachineDestroyed VirtualMachineState = "Destroyed" - // VirtualMachineExpunging "VM is being expunged - VirtualMachineExpunging VirtualMachineState = "Expunging" - // VirtualMachineMigrating VM is being live migrated. host id holds destination host, last host id holds source host - VirtualMachineMigrating VirtualMachineState = "Migrating" - // VirtualMachineMoving VM is being migrated offline (volume is being moved). - VirtualMachineMoving VirtualMachineState = "Moving" - // VirtualMachineError VM is in error - VirtualMachineError VirtualMachineState = "Error" - // VirtualMachineUnknown VM state is unknown - VirtualMachineUnknown VirtualMachineState = "Unknown" - // VirtualMachineShutdowned VM is shutdowned from inside - VirtualMachineShutdowned VirtualMachineState = "Shutdowned" -) - -// VirtualMachine represents a virtual machine -// -// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/stable/virtual_machines.html -type VirtualMachine struct { - Account string `json:"account,omitempty" doc:"the account associated with the virtual machine"` - AccountID *UUID `json:"accountid,omitempty" doc:"the account ID associated with the virtual machine"` - AffinityGroup []AffinityGroup `json:"affinitygroup,omitempty" doc:"list of affinity groups associated with the virtual machine"` - ClusterID *UUID `json:"clusterid,omitempty" doc:"the ID of the vm's cluster"` - ClusterName string `json:"clustername,omitempty" doc:"the name of the vm's cluster"` - CPUNumber int `json:"cpunumber,omitempty" doc:"the number of cpu this virtual machine is running with"` - CPUSpeed int `json:"cpuspeed,omitempty" doc:"the speed of each cpu"` - CPUUsed string `json:"cpuused,omitempty" doc:"the amount of the vm's CPU currently used"` - Created string `json:"created,omitempty" doc:"the date when this virtual machine was created"` - Details map[string]string `json:"details,omitempty" doc:"Vm details in key/value pairs."` - DiskIoRead int64 `json:"diskioread,omitempty" doc:"the read (io) of disk on the vm"` - DiskIoWrite int64 `json:"diskiowrite,omitempty" doc:"the write (io) of disk on the vm"` - DiskKbsRead int64 `json:"diskkbsread,omitempty" doc:"the read (bytes) of disk on the vm"` - DiskKbsWrite int64 `json:"diskkbswrite,omitempty" doc:"the write (bytes) of disk on the vm"` - DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"the ID of the disk offering of the virtual machine"` - DiskOfferingName string `json:"diskofferingname,omitempty" doc:"the name of the disk offering of the virtual machine"` - DisplayName string `json:"displayname,omitempty" doc:"user generated name. The name of the virtual machine is returned if no displayname exists."` - ForVirtualNetwork bool `json:"forvirtualnetwork,omitempty" doc:"the virtual network for the service offering"` - Group string `json:"group,omitempty" doc:"the group name of the virtual machine"` - GroupID *UUID `json:"groupid,omitempty" doc:"the group ID of the virtual machine"` - HAEnable bool `json:"haenable,omitempty" doc:"true if high-availability is enabled, false otherwise"` - HostName string `json:"hostname,omitempty" doc:"the name of the host for the virtual machine"` - ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` - InstanceName string `json:"instancename,omitempty" doc:"instance name of the user vm; this parameter is returned to the ROOT admin only"` - IsoDisplayText string `json:"isodisplaytext,omitempty" doc:"an alternate display text of the ISO attached to the virtual machine"` - IsoID *UUID `json:"isoid,omitempty" doc:"the ID of the ISO attached to the virtual machine"` - IsoName string `json:"isoname,omitempty" doc:"the name of the ISO attached to the virtual machine"` - KeyPair string `json:"keypair,omitempty" doc:"ssh key-pair"` - Memory int `json:"memory,omitempty" doc:"the memory allocated for the virtual machine"` - Name string `json:"name,omitempty" doc:"the name of the virtual machine"` - NetworkKbsRead int64 `json:"networkkbsread,omitempty" doc:"the incoming network traffic on the vm"` - NetworkKbsWrite int64 `json:"networkkbswrite,omitempty" doc:"the outgoing network traffic on the host"` - Nic []Nic `json:"nic,omitempty" doc:"the list of nics associated with vm"` - OSCategoryID *UUID `json:"oscategoryid,omitempty" doc:"Os category ID of the virtual machine"` - OSCategoryName string `json:"oscategoryname,omitempty" doc:"Os category name of the virtual machine"` - OSTypeID *UUID `json:"ostypeid,omitempty" doc:"OS type id of the vm"` - Password string `json:"password,omitempty" doc:"the password (if exists) of the virtual machine"` - PasswordEnabled bool `json:"passwordenabled,omitempty" doc:"true if the password rest feature is enabled, false otherwise"` - PCIDevices []PCIDevice `json:"pcidevices,omitempty" doc:"list of PCI devices"` - PodID *UUID `json:"podid,omitempty" doc:"the ID of the vm's pod"` - PodName string `json:"podname,omitempty" doc:"the name of the vm's pod"` - PublicIP string `json:"publicip,omitempty" doc:"public IP address id associated with vm via Static nat rule"` - PublicIPID *UUID `json:"publicipid,omitempty" doc:"public IP address id associated with vm via Static nat rule"` - RootDeviceID int64 `json:"rootdeviceid,omitempty" doc:"device ID of the root volume"` - RootDeviceType string `json:"rootdevicetype,omitempty" doc:"device type of the root volume"` - SecurityGroup []SecurityGroup `json:"securitygroup,omitempty" doc:"list of security groups associated with the virtual machine"` - ServiceOfferingID *UUID `json:"serviceofferingid,omitempty" doc:"the ID of the service offering of the virtual machine"` - ServiceOfferingName string `json:"serviceofferingname,omitempty" doc:"the name of the service offering of the virtual machine"` - ServiceState string `json:"servicestate,omitempty" doc:"State of the Service from LB rule"` - State string `json:"state,omitempty" doc:"the state of the virtual machine"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with vm"` - TemplateDisplayText string `json:"templatedisplaytext,omitempty" doc:"an alternate display text of the template for the virtual machine"` - TemplateID *UUID `json:"templateid,omitempty" doc:"the ID of the template for the virtual machine. A -1 is returned if the virtual machine was created from an ISO file."` - TemplateName string `json:"templatename,omitempty" doc:"the name of the template for the virtual machine"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the availablility zone for the virtual machine"` - ZoneName string `json:"zonename,omitempty" doc:"the name of the availability zone for the virtual machine"` -} - -// ResourceType returns the type of the resource -func (VirtualMachine) ResourceType() string { - return "UserVM" -} - -// Delete destroys the VM -func (vm VirtualMachine) Delete(ctx context.Context, client *Client) error { - _, err := client.RequestWithContext(ctx, &DestroyVirtualMachine{ - ID: vm.ID, - }) - - return err -} - -// ListRequest builds the ListVirtualMachines request -func (vm VirtualMachine) ListRequest() (ListCommand, error) { - // XXX: AffinityGroupID, SecurityGroupID - - req := &ListVirtualMachines{ - GroupID: vm.GroupID, - ID: vm.ID, - Name: vm.Name, - State: vm.State, - TemplateID: vm.TemplateID, - ZoneID: vm.ZoneID, - } - - nic := vm.DefaultNic() - if nic != nil { - req.IPAddress = nic.IPAddress - } - - for i := range vm.Tags { - req.Tags = append(req.Tags, vm.Tags[i]) - } - - return req, nil -} - -// DefaultNic returns the default nic -func (vm VirtualMachine) DefaultNic() *Nic { - for i, nic := range vm.Nic { - if nic.IsDefault { - return &vm.Nic[i] - } - } - - return nil -} - -// IP returns the default nic IP address -func (vm VirtualMachine) IP() *net.IP { - nic := vm.DefaultNic() - if nic != nil { - ip := nic.IPAddress - return &ip - } - - return nil -} - -// NicsByType returns the corresponding interfaces base on the given type -func (vm VirtualMachine) NicsByType(nicType string) []Nic { - nics := make([]Nic, 0) - for _, nic := range vm.Nic { - if nic.Type == nicType { - // XXX The API forgets to specify it - n := nic - n.VirtualMachineID = vm.ID - nics = append(nics, n) - } - } - return nics -} - -// NicByNetworkID returns the corresponding interface based on the given NetworkID -// -// A VM cannot be connected twice to a same network. -func (vm VirtualMachine) NicByNetworkID(networkID UUID) *Nic { - for _, nic := range vm.Nic { - if nic.NetworkID.Equal(networkID) { - n := nic - n.VirtualMachineID = vm.ID - return &n - } - } - return nil -} - -// NicByID returns the corresponding interface base on its ID -func (vm VirtualMachine) NicByID(nicID UUID) *Nic { - for _, nic := range vm.Nic { - if nic.ID.Equal(nicID) { - n := nic - n.VirtualMachineID = vm.ID - return &n - } - } - - return nil -} - -// IPToNetwork represents a mapping between ip and networks -type IPToNetwork struct { - IP net.IP `json:"ip,omitempty"` - Ipv6 net.IP `json:"ipv6,omitempty"` - NetworkID *UUID `json:"networkid,omitempty"` -} - -// PCIDevice represents a PCI card present in the host -type PCIDevice struct { - PCIVendorName string `json:"pcivendorname,omitempty" doc:"Device vendor name of pci card"` - DeviceID string `json:"deviceid,omitempty" doc:"Device model ID of pci card"` - RemainingCapacity int `json:"remainingcapacity,omitempty" doc:"Remaining capacity in terms of no. of more VMs that can be deployped with this vGPU type"` - MaxCapacity int `json:"maxcapacity,omitempty" doc:"Maximum vgpu can be created with this vgpu type on the given pci group"` - PCIVendorID string `json:"pcivendorid,omitempty" doc:"Device vendor ID of pci card"` - PCIDeviceName string `json:"pcidevicename,omitempty" doc:"Device model name of pci card"` -} - -// Password represents an encrypted password -// -// TODO: method to decrypt it, https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=34014652 -type Password struct { - EncryptedPassword string `json:"encryptedpassword"` -} - -// VirtualMachineUserData represents the base64 encoded user-data -type VirtualMachineUserData struct { - UserData string `json:"userdata" doc:"Base 64 encoded VM user data"` - VirtualMachineID *UUID `json:"virtualmachineid" doc:"the ID of the virtual machine"` -} - -// Decode decodes as a readable string the content of the user-data (base64 · gzip) -func (userdata VirtualMachineUserData) Decode() (string, error) { - data, err := base64.StdEncoding.DecodeString(userdata.UserData) - if err != nil { - return "", err - } - // 0x1f8b is the magic number for gzip - if len(data) < 2 || data[0] != 0x1f || data[1] != 0x8b { - return string(data), nil - } - gr, err := gzip.NewReader(bytes.NewBuffer(data)) - if err != nil { - return "", err - } - defer gr.Close() // nolint: errcheck - - str, err := ioutil.ReadAll(gr) - if err != nil { - return "", err - } - return string(str), nil -} - -// DeployVirtualMachine (Async) represents the machine creation -// -// Regarding the UserData field, the client is responsible to base64 (and probably gzip) it. Doing it within this library would make the integration with other tools, e.g. Terraform harder. -type DeployVirtualMachine struct { - AffinityGroupIDs []UUID `json:"affinitygroupids,omitempty" doc:"comma separated list of affinity groups id that are going to be applied to the virtual machine. Mutually exclusive with affinitygroupnames parameter"` - AffinityGroupNames []string `json:"affinitygroupnames,omitempty" doc:"comma separated list of affinity groups names that are going to be applied to the virtual machine.Mutually exclusive with affinitygroupids parameter"` - Details map[string]string `json:"details,omitempty" doc:"used to specify the custom parameters."` - DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"the ID of the disk offering for the virtual machine. If the template is of ISO format, the diskofferingid is for the root disk volume. Otherwise this parameter is used to indicate the offering for the data disk volume. If the templateid parameter passed is from a Template object, the diskofferingid refers to a DATA Disk Volume created. If the templateid parameter passed is from an ISO object, the diskofferingid refers to a ROOT Disk Volume created."` - DisplayName string `json:"displayname,omitempty" doc:"an optional user generated name for the virtual machine"` - Group string `json:"group,omitempty" doc:"an optional group for the virtual machine"` - IP4 *bool `json:"ip4,omitempty" doc:"True to set an IPv4 to the default interface"` - IP6 *bool `json:"ip6,omitempty" doc:"True to set an IPv6 to the default interface"` - IP6Address net.IP `json:"ip6address,omitempty" doc:"the ipv6 address for default vm's network"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"the ip address for default vm's network"` - Keyboard string `json:"keyboard,omitempty" doc:"an optional keyboard device type for the virtual machine. valid value can be one of de,de-ch,es,fi,fr,fr-be,fr-ch,is,it,jp,nl-be,no,pt,uk,us"` - KeyPair string `json:"keypair,omitempty" doc:"name of the ssh key pair used to login to the virtual machine"` - Name string `json:"name,omitempty" doc:"host name for the virtual machine"` - NetworkIDs []UUID `json:"networkids,omitempty" doc:"list of network ids used by virtual machine. Can't be specified with ipToNetworkList parameter"` - RootDiskSize int64 `json:"rootdisksize,omitempty" doc:"Optional field to resize root disk on deploy. Value is in GB. Only applies to template-based deployments. Analogous to details[0].rootdisksize, which takes precedence over this parameter if both are provided"` - SecurityGroupIDs []UUID `json:"securitygroupids,omitempty" doc:"comma separated list of security groups id that going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupnames parameter"` - SecurityGroupNames []string `json:"securitygroupnames,omitempty" doc:"comma separated list of security groups names that going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupids parameter"` - ServiceOfferingID *UUID `json:"serviceofferingid" doc:"the ID of the service offering for the virtual machine"` - Size int64 `json:"size,omitempty" doc:"the arbitrary size for the DATADISK volume. Mutually exclusive with diskofferingid"` - StartVM *bool `json:"startvm,omitempty" doc:"true if start vm after creating. Default value is true"` - TemplateID *UUID `json:"templateid" doc:"the ID of the template for the virtual machine"` - UserData string `json:"userdata,omitempty" doc:"an optional binary data that can be sent to the virtual machine upon a successful deployment. This binary data must be base64 encoded before adding it to the request. Using HTTP GET (via querystring), you can send up to 2KB of data after base64 encoding. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding."` - ZoneID *UUID `json:"zoneid" doc:"availability zone for the virtual machine"` - _ bool `name:"deployVirtualMachine" description:"Creates and automatically starts a virtual machine based on a service offering, disk offering, and template."` -} - -func (req DeployVirtualMachine) onBeforeSend(_ url.Values) error { - // Either AffinityGroupIDs or AffinityGroupNames must be set - if len(req.AffinityGroupIDs) > 0 && len(req.AffinityGroupNames) > 0 { - return fmt.Errorf("either AffinityGroupIDs or AffinityGroupNames must be set") - } - - // Either SecurityGroupIDs or SecurityGroupNames must be set - if len(req.SecurityGroupIDs) > 0 && len(req.SecurityGroupNames) > 0 { - return fmt.Errorf("either SecurityGroupIDs or SecurityGroupNames must be set") - } - - return nil -} - -// Response returns the struct to unmarshal -func (DeployVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DeployVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// StartVirtualMachine (Async) represents the creation of the virtual machine -type StartVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - RescueProfile string `json:"rescueprofile,omitempty" doc:"An optional rescue profile to use when booting"` - _ bool `name:"startVirtualMachine" description:"Starts a virtual machine."` -} - -// Response returns the struct to unmarshal -func (StartVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (StartVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// StopVirtualMachine (Async) represents the stopping of the virtual machine -type StopVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - Forced *bool `json:"forced,omitempty" doc:"Force stop the VM (vm is marked as Stopped even when command fails to be send to the backend). The caller knows the VM is stopped."` - _ bool `name:"stopVirtualMachine" description:"Stops a virtual machine."` -} - -// Response returns the struct to unmarshal -func (StopVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (StopVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// RebootVirtualMachine (Async) represents the rebooting of the virtual machine -type RebootVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - _ bool `name:"rebootVirtualMachine" description:"Reboots a virtual machine."` -} - -// Response returns the struct to unmarshal -func (RebootVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RebootVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// RestoreVirtualMachine (Async) represents the restoration of the virtual machine -type RestoreVirtualMachine struct { - VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` - TemplateID *UUID `json:"templateid,omitempty" doc:"an optional template Id to restore vm from the new template. This can be an ISO id in case of restore vm deployed using ISO"` - RootDiskSize int64 `json:"rootdisksize,omitempty" doc:"Optional field to resize root disk on restore. Value is in GB. Only applies to template-based deployments."` - _ bool `name:"restoreVirtualMachine" description:"Restore a VM to original template/ISO or new template/ISO"` -} - -// Response returns the struct to unmarshal -func (RestoreVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RestoreVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// RecoverVirtualMachine represents the restoration of the virtual machine -type RecoverVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - _ bool `name:"recoverVirtualMachine" description:"Recovers a virtual machine."` -} - -// Response returns the struct to unmarshal -func (RecoverVirtualMachine) Response() interface{} { - return new(VirtualMachine) -} - -// DestroyVirtualMachine (Async) represents the destruction of the virtual machine -type DestroyVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - _ bool `name:"destroyVirtualMachine" description:"Destroys a virtual machine."` -} - -// Response returns the struct to unmarshal -func (DestroyVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (DestroyVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// UpdateVirtualMachine represents the update of the virtual machine -type UpdateVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - Details map[string]string `json:"details,omitempty" doc:"Details in key/value pairs."` - DisplayName string `json:"displayname,omitempty" doc:"user generated name"` - Group string `json:"group,omitempty" doc:"group of the virtual machine"` - Name string `json:"name,omitempty" doc:"new host name of the vm. The VM has to be stopped/started for this update to take affect"` - SecurityGroupIDs []UUID `json:"securitygroupids,omitempty" doc:"list of security group ids to be applied on the virtual machine."` - UserData string `json:"userdata,omitempty" doc:"an optional binary data that can be sent to the virtual machine upon a successful deployment. This binary data must be base64 encoded before adding it to the request. Using HTTP GET (via querystring), you can send up to 2KB of data after base64 encoding. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding."` - _ bool `name:"updateVirtualMachine" description:"Updates properties of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect. UpdateVirtualMachine does not first check whether the VM is stopped. Therefore, stop the VM manually before issuing this call."` -} - -// Response returns the struct to unmarshal -func (UpdateVirtualMachine) Response() interface{} { - return new(VirtualMachine) -} - -// ExpungeVirtualMachine represents the annihilation of a VM -type ExpungeVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - _ bool `name:"expungeVirtualMachine" description:"Expunge a virtual machine. Once expunged, it cannot be recoverd."` -} - -// Response returns the struct to unmarshal -func (ExpungeVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (ExpungeVirtualMachine) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// ScaleVirtualMachine (Async) scales the virtual machine to a new service offering. -// -// ChangeServiceForVirtualMachine does the same thing but returns the -// new Virtual Machine which is more consistent with the rest of the API. -type ScaleVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - ServiceOfferingID *UUID `json:"serviceofferingid" doc:"the ID of the service offering for the virtual machine"` - Details map[string]string `json:"details,omitempty" doc:"name value pairs of custom parameters for cpu,memory and cpunumber. example details[i].name=value"` - _ bool `name:"scaleVirtualMachine" description:"Scales the virtual machine to a new service offering."` -} - -// Response returns the struct to unmarshal -func (ScaleVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (ScaleVirtualMachine) AsyncResponse() interface{} { - return new(BooleanResponse) -} - -// ChangeServiceForVirtualMachine changes the service offering for a virtual machine. The virtual machine must be in a "Stopped" state for this command to take effect. -type ChangeServiceForVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - ServiceOfferingID *UUID `json:"serviceofferingid" doc:"the service offering ID to apply to the virtual machine"` - Details map[string]string `json:"details,omitempty" doc:"name value pairs of custom parameters for cpu, memory and cpunumber. example details[i].name=value"` - _ bool `name:"changeServiceForVirtualMachine" description:"Changes the service offering for a virtual machine. The virtual machine must be in a \"Stopped\" state for this command to take effect."` -} - -// Response returns the struct to unmarshal -func (ChangeServiceForVirtualMachine) Response() interface{} { - return new(VirtualMachine) -} - -// ResetPasswordForVirtualMachine resets the password for virtual machine. The virtual machine must be in a "Stopped" state... -type ResetPasswordForVirtualMachine struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - _ bool `name:"resetPasswordForVirtualMachine" description:"Resets the password for virtual machine. The virtual machine must be in a \"Stopped\" state and the template must already support this feature for this command to take effect."` -} - -// Response returns the struct to unmarshal -func (ResetPasswordForVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (ResetPasswordForVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// GetVMPassword asks for an encrypted password -type GetVMPassword struct { - ID *UUID `json:"id" doc:"The ID of the virtual machine"` - _ bool `name:"getVMPassword" description:"Returns an encrypted password for the VM"` -} - -// Response returns the struct to unmarshal -func (GetVMPassword) Response() interface{} { - return new(Password) -} - -//go:generate go run generate/main.go -interface=Listable ListVirtualMachines - -// ListVirtualMachines represents a search for a VM -type ListVirtualMachines struct { - AffinityGroupID *UUID `json:"affinitygroupid,omitempty" doc:"list vms by affinity group"` - Details []string `json:"details,omitempty" doc:"comma separated list of host details requested, value can be a list of [all, group, nics, stats, secgrp, tmpl, servoff, diskoff, iso, volume, min, affgrp]. If no parameter is passed in, the details will be defaulted to all"` - ForVirtualNetwork *bool `json:"forvirtualnetwork,omitempty" doc:"list by network type; true if need to list vms using Virtual Network, false otherwise"` - GroupID *UUID `json:"groupid,omitempty" doc:"the group ID"` - ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` - IDs []UUID `json:"ids,omitempty" doc:"the IDs of the virtual machines, mutually exclusive with id"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"an IP address to filter the result"` - IsoID *UUID `json:"isoid,omitempty" doc:"list vms by iso"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"name of the virtual machine"` - NetworkID *UUID `json:"networkid,omitempty" doc:"list by network id"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ServiceOfferindID *UUID `json:"serviceofferingid,omitempty" doc:"list by the service offering"` - State string `json:"state,omitempty" doc:"state of the virtual machine"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - TemplateID *UUID `json:"templateid,omitempty" doc:"list vms by template"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"the availability zone ID"` - _ bool `name:"listVirtualMachines" description:"List the virtual machines owned by the account."` -} - -// ListVirtualMachinesResponse represents a list of virtual machines -type ListVirtualMachinesResponse struct { - Count int `json:"count"` - VirtualMachine []VirtualMachine `json:"virtualmachine"` -} - -// AddNicToVirtualMachine (Async) adds a NIC to a VM -type AddNicToVirtualMachine struct { - NetworkID *UUID `json:"networkid" doc:"Network ID"` - VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"Static IP address lease for the corresponding NIC and network which should be in the range defined in the network"` - _ bool `name:"addNicToVirtualMachine" description:"Adds VM to specified network by creating a NIC"` -} - -// Response returns the struct to unmarshal -func (AddNicToVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (AddNicToVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// RemoveNicFromVirtualMachine (Async) removes a NIC from a VM -type RemoveNicFromVirtualMachine struct { - NicID *UUID `json:"nicid" doc:"NIC ID"` - VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` - _ bool `name:"removeNicFromVirtualMachine" description:"Removes VM from specified network by deleting a NIC"` -} - -// Response returns the struct to unmarshal -func (RemoveNicFromVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (RemoveNicFromVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// UpdateDefaultNicForVirtualMachine (Async) adds a NIC to a VM -type UpdateDefaultNicForVirtualMachine struct { - NicID *UUID `json:"nicid" doc:"NIC ID"` - VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` - _ bool `name:"updateDefaultNicForVirtualMachine" description:"Changes the default NIC on a VM"` -} - -// Response returns the struct to unmarshal -func (UpdateDefaultNicForVirtualMachine) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (UpdateDefaultNicForVirtualMachine) AsyncResponse() interface{} { - return new(VirtualMachine) -} - -// GetVirtualMachineUserData returns the user-data of the given VM -type GetVirtualMachineUserData struct { - VirtualMachineID *UUID `json:"virtualmachineid" doc:"The ID of the virtual machine"` - _ bool `name:"getVirtualMachineUserData" description:"Returns user data associated with the VM"` -} - -// Response returns the struct to unmarshal -func (GetVirtualMachineUserData) Response() interface{} { - return new(VirtualMachineUserData) -} - -// UpdateVMNicIP updates the default IP address of a VM Nic -type UpdateVMNicIP struct { - _ bool `name:"updateVmNicIp" description:"Update the default Ip of a VM Nic"` - IPAddress net.IP `json:"ipaddress,omitempty" doc:"Static IP address lease for the corresponding NIC and network which should be in the range defined in the network. If absent, the call removes the lease associated with the nic."` - NicID *UUID `json:"nicid" doc:"the ID of the nic."` -} - -// Response returns the struct to unmarshal -func (UpdateVMNicIP) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (UpdateVMNicIP) AsyncResponse() interface{} { - return new(VirtualMachine) -} diff --git a/vendor/github.com/exoscale/egoscale/virtualmachines_response.go b/vendor/github.com/exoscale/egoscale/virtualmachines_response.go deleted file mode 100644 index 9aafb01a3..000000000 --- a/vendor/github.com/exoscale/egoscale/virtualmachines_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListVirtualMachines) Response() interface{} { - return new(ListVirtualMachinesResponse) -} - -// ListRequest returns itself -func (ls *ListVirtualMachines) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListVirtualMachines) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListVirtualMachines) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListVirtualMachines) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListVirtualMachinesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListVirtualMachinesResponse was expected, got %T", resp)) - return - } - - for i := range items.VirtualMachine { - if !callback(&items.VirtualMachine[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/volumes.go b/vendor/github.com/exoscale/egoscale/volumes.go deleted file mode 100644 index f942890a4..000000000 --- a/vendor/github.com/exoscale/egoscale/volumes.go +++ /dev/null @@ -1,113 +0,0 @@ -package egoscale - -// Volume represents a volume linked to a VM -type Volume struct { - Account string `json:"account,omitempty" doc:"the account associated with the disk volume"` - Attached string `json:"attached,omitempty" doc:"the date the volume was attached to a VM instance"` - ChainInfo string `json:"chaininfo,omitempty" doc:"the chain info of the volume"` - ClusterID *UUID `json:"clusterid,omitempty" doc:"ID of the cluster"` - ClusterName string `json:"clustername,omitempty" doc:"name of the cluster"` - Created string `json:"created,omitempty" doc:"the date the disk volume was created"` - Destroyed bool `json:"destroyed,omitempty" doc:"the boolean state of whether the volume is destroyed or not"` - DeviceID int64 `json:"deviceid,omitempty" doc:"the ID of the device on user vm the volume is attahed to. This tag is not returned when the volume is detached."` - DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty" doc:"bytes read rate of the disk volume"` - DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty" doc:"bytes write rate of the disk volume"` - DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty" doc:"io requests read rate of the disk volume"` - DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty" doc:"io requests write rate of the disk volume"` - DiskOfferingDisplayText string `json:"diskofferingdisplaytext,omitempty" doc:"the display text of the disk offering"` - DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"ID of the disk offering"` - DiskOfferingName string `json:"diskofferingname,omitempty" doc:"name of the disk offering"` - DisplayVolume bool `json:"displayvolume,omitempty" doc:"an optional field whether to the display the volume to the end user or not."` - Hypervisor string `json:"hypervisor,omitempty" doc:"Hypervisor the volume belongs to"` - ID *UUID `json:"id,omitempty" doc:"ID of the disk volume"` - IsExtractable *bool `json:"isextractable,omitempty" doc:"true if the volume is extractable, false otherwise"` - IsoDisplayText string `json:"isodisplaytext,omitempty" doc:"an alternate display text of the ISO attached to the virtual machine"` - IsoID *UUID `json:"isoid,omitempty" doc:"the ID of the ISO attached to the virtual machine"` - IsoName string `json:"isoname,omitempty" doc:"the name of the ISO attached to the virtual machine"` - MaxIops int64 `json:"maxiops,omitempty" doc:"max iops of the disk volume"` - MinIops int64 `json:"miniops,omitempty" doc:"min iops of the disk volume"` - Name string `json:"name,omitempty" doc:"name of the disk volume"` - Path string `json:"path,omitempty" doc:"the path of the volume"` - PodID *UUID `json:"podid,omitempty" doc:"ID of the pod"` - PodName string `json:"podname,omitempty" doc:"name of the pod"` - QuiesceVM bool `json:"quiescevm,omitempty" doc:"need quiesce vm or not when taking snapshot"` - ServiceOfferingDisplayText string `json:"serviceofferingdisplaytext,omitempty" doc:"the display text of the service offering for root disk"` - ServiceOfferingID *UUID `json:"serviceofferingid,omitempty" doc:"ID of the service offering for root disk"` - ServiceOfferingName string `json:"serviceofferingname,omitempty" doc:"name of the service offering for root disk"` - Size uint64 `json:"size,omitempty" doc:"size of the disk volume"` - SnapshotID *UUID `json:"snapshotid,omitempty" doc:"ID of the snapshot from which this volume was created"` - State string `json:"state,omitempty" doc:"the state of the disk volume"` - Status string `json:"status,omitempty" doc:"the status of the volume"` - Storage string `json:"storage,omitempty" doc:"name of the primary storage hosting the disk volume"` - StorageID *UUID `json:"storageid,omitempty" doc:"id of the primary storage hosting the disk volume; returned to admin user only"` - StorageType string `json:"storagetype,omitempty" doc:"shared or local storage"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with volume"` - TemplateDisplayText string `json:"templatedisplaytext,omitempty" doc:"an alternate display text of the template for the virtual machine"` - TemplateID *UUID `json:"templateid,omitempty" doc:"the ID of the template for the virtual machine. A -1 is returned if the virtual machine was created from an ISO file."` // no *UUID because of the -1 thingy... - TemplateName string `json:"templatename,omitempty" doc:"the name of the template for the virtual machine"` - Type string `json:"type,omitempty" doc:"type of the disk volume (ROOT or DATADISK)"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"id of the virtual machine"` - VMDisplayName string `json:"vmdisplayname,omitempty" doc:"display name of the virtual machine"` - VMName string `json:"vmname,omitempty" doc:"name of the virtual machine"` - VMState string `json:"vmstate,omitempty" doc:"state of the virtual machine"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"ID of the availability zone"` - ZoneName string `json:"zonename,omitempty" doc:"name of the availability zone"` -} - -// ResourceType returns the type of the resource -func (Volume) ResourceType() string { - return "Volume" -} - -// ListRequest builds the ListVolumes request -func (vol Volume) ListRequest() (ListCommand, error) { - req := &ListVolumes{ - Name: vol.Name, - Type: vol.Type, - VirtualMachineID: vol.VirtualMachineID, - ZoneID: vol.ZoneID, - } - - return req, nil -} - -// ResizeVolume (Async) resizes a volume -type ResizeVolume struct { - ID *UUID `json:"id" doc:"the ID of the disk volume"` - DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"new disk offering id"` - Size int64 `json:"size,omitempty" doc:"New volume size in G (must be larger than current size since shrinking the disk is not supported)"` - _ bool `name:"resizeVolume" description:"Resizes a volume"` -} - -// Response returns the struct to unmarshal -func (ResizeVolume) Response() interface{} { - return new(AsyncJobResult) -} - -// AsyncResponse returns the struct to unmarshal the async job -func (ResizeVolume) AsyncResponse() interface{} { - return new(Volume) -} - -//go:generate go run generate/main.go -interface=Listable ListVolumes - -// ListVolumes represents a query listing volumes -type ListVolumes struct { - DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"List volumes by disk offering"` - ID *UUID `json:"id,omitempty" doc:"The ID of the disk volume"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"The name of the disk volume"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs)"` - Type string `json:"type,omitempty" doc:"The type of disk volume"` - VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"The ID of the virtual machine"` - ZoneID *UUID `json:"zoneid,omitempty" doc:"The ID of the availability zone"` - _ bool `name:"listVolumes" description:"Lists all volumes."` -} - -// ListVolumesResponse represents a list of volumes -type ListVolumesResponse struct { - Count int `json:"count"` - Volume []Volume `json:"volume"` -} diff --git a/vendor/github.com/exoscale/egoscale/volumes_response.go b/vendor/github.com/exoscale/egoscale/volumes_response.go deleted file mode 100644 index c7486bc1e..000000000 --- a/vendor/github.com/exoscale/egoscale/volumes_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListVolumes) Response() interface{} { - return new(ListVolumesResponse) -} - -// ListRequest returns itself -func (ls *ListVolumes) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListVolumes) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListVolumes) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListVolumes) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListVolumesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListVolumesResponse was expected, got %T", resp)) - return - } - - for i := range items.Volume { - if !callback(&items.Volume[i], nil) { - break - } - } -} diff --git a/vendor/github.com/exoscale/egoscale/zones.go b/vendor/github.com/exoscale/egoscale/zones.go deleted file mode 100644 index 763246033..000000000 --- a/vendor/github.com/exoscale/egoscale/zones.go +++ /dev/null @@ -1,62 +0,0 @@ -package egoscale - -import ( - "net" -) - -// Zone represents a data center -// -// TODO: represent correctly the capacity field. -type Zone struct { - AllocationState string `json:"allocationstate,omitempty" doc:"the allocation state of the cluster"` - Description string `json:"description,omitempty" doc:"Zone description"` - DhcpProvider string `json:"dhcpprovider,omitempty" doc:"the dhcp Provider for the Zone"` - DisplayText string `json:"displaytext,omitempty" doc:"the display text of the zone"` - DNS1 net.IP `json:"dns1,omitempty" doc:"the first DNS for the Zone"` - DNS2 net.IP `json:"dns2,omitempty" doc:"the second DNS for the Zone"` - GuestCIDRAddress *CIDR `json:"guestcidraddress,omitempty" doc:"the guest CIDR address for the Zone"` - ID *UUID `json:"id,omitempty" doc:"Zone id"` - InternalDNS1 net.IP `json:"internaldns1,omitempty" doc:"the first internal DNS for the Zone"` - InternalDNS2 net.IP `json:"internaldns2,omitempty" doc:"the second internal DNS for the Zone"` - IP6DNS1 net.IP `json:"ip6dns1,omitempty" doc:"the first IPv6 DNS for the Zone"` - IP6DNS2 net.IP `json:"ip6dns2,omitempty" doc:"the second IPv6 DNS for the Zone"` - LocalStorageEnabled *bool `json:"localstorageenabled,omitempty" doc:"true if local storage offering enabled, false otherwise"` - Name string `json:"name,omitempty" doc:"Zone name"` - NetworkType string `json:"networktype,omitempty" doc:"the network type of the zone; can be Basic or Advanced"` - ResourceDetails map[string]string `json:"resourcedetails,omitempty" doc:"Meta data associated with the zone (key/value pairs)"` - SecurityGroupsEnabled *bool `json:"securitygroupsenabled,omitempty" doc:"true if security groups support is enabled, false otherwise"` - Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with zone."` - Vlan string `json:"vlan,omitempty" doc:"the vlan range of the zone"` - ZoneToken string `json:"zonetoken,omitempty" doc:"Zone Token"` -} - -// ListRequest builds the ListZones request -func (zone Zone) ListRequest() (ListCommand, error) { - req := &ListZones{ - ID: zone.ID, - Name: zone.Name, - } - - return req, nil -} - -//go:generate go run generate/main.go -interface=Listable ListZones - -// ListZones represents a query for zones -type ListZones struct { - Available *bool `json:"available,omitempty" doc:"true if you want to retrieve all available Zones. False if you only want to return the Zones from which you have at least one VM. Default is false."` - ID *UUID `json:"id,omitempty" doc:"the ID of the zone"` - Keyword string `json:"keyword,omitempty" doc:"List by keyword"` - Name string `json:"name,omitempty" doc:"the name of the zone"` - Page int `json:"page,omitempty"` - PageSize int `json:"pagesize,omitempty"` - ShowCapacities *bool `json:"showcapacities,omitempty" doc:"flag to display the capacity of the zones"` - Tags []ResourceTag `json:"tags,omitempty" doc:"List zones by resource tags (key/value pairs)"` - _ bool `name:"listZones" description:"Lists zones"` -} - -// ListZonesResponse represents a list of zones -type ListZonesResponse struct { - Count int `json:"count"` - Zone []Zone `json:"zone"` -} diff --git a/vendor/github.com/exoscale/egoscale/zones_response.go b/vendor/github.com/exoscale/egoscale/zones_response.go deleted file mode 100644 index 0fe7d06d7..000000000 --- a/vendor/github.com/exoscale/egoscale/zones_response.go +++ /dev/null @@ -1,43 +0,0 @@ -// code generated; DO NOT EDIT. - -package egoscale - -import "fmt" - -// Response returns the struct to unmarshal -func (ListZones) Response() interface{} { - return new(ListZonesResponse) -} - -// ListRequest returns itself -func (ls *ListZones) ListRequest() (ListCommand, error) { - if ls == nil { - return nil, fmt.Errorf("%T cannot be nil", ls) - } - return ls, nil -} - -// SetPage sets the current apge -func (ls *ListZones) SetPage(page int) { - ls.Page = page -} - -// SetPageSize sets the page size -func (ls *ListZones) SetPageSize(pageSize int) { - ls.PageSize = pageSize -} - -// Each triggers the callback for each, valid answer or any non 404 issue -func (ListZones) Each(resp interface{}, callback IterateItemFunc) { - items, ok := resp.(*ListZonesResponse) - if !ok { - callback(nil, fmt.Errorf("wrong type, ListZonesResponse was expected, got %T", resp)) - return - } - - for i := range items.Zone { - if !callback(&items.Zone[i], nil) { - break - } - } -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 1f1316bf4..895ebd3de 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -216,10 +216,8 @@ github.com/digitalocean/godo github.com/dimchansky/utfbom # github.com/dylanmei/iso8601 v0.1.0 github.com/dylanmei/iso8601 -# github.com/exoscale/egoscale v0.18.1 ## explicit -github.com/exoscale/egoscale -# github.com/fatih/camelcase v1.0.0 + github.com/fatih/camelcase v1.0.0 ## explicit github.com/fatih/camelcase # github.com/fatih/color v1.9.0 From edd4567096a8d7bc082e1dfe381170fff42b3279 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 1 Mar 2021 13:21:20 -0500 Subject: [PATCH 084/212] Remove plugin registration generation step This change removes the generation of command/plugin.go so that plugin registration can be managed manually. As we begin to break out plugins we will need to begin modifying this file, possibly with stubs to allow for the removal of plugins without breaking Packer's backwards compatibility with 1.7.0. After 1.8.0 is released we should be able to revet these changes so that we can continue to generate the plugin file for those plugins core to Packer. --- command/plugin.go | 4 ---- main.go | 1 - 2 files changed, 5 deletions(-) diff --git a/command/plugin.go b/command/plugin.go index b5c08b185..edfeca617 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -1,7 +1,3 @@ -// -// This file is automatically generated by scripts/generate-plugins.go -- Do not edit! -// - package command import ( diff --git a/main.go b/main.go index f7806b0bc..f358c2f05 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,5 @@ // This is the main package for the `packer` application. -//go:generate go run ./scripts/generate-plugins.go package main import ( From 6f23bc0d97d55648f0eb0c0590a88a79f09f75fd Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 1 Mar 2021 13:44:23 -0500 Subject: [PATCH 085/212] Vendor exoscale-import plugin This change will vendor the new version of the exoscale-import post-processor component, but remove all of its code from Packer. After the v1.8.0 release this change should be removed entirely. This vendor process is being used as a workaround for decoupling the exoscale-import component without causing a breaking change in Packer. Users of Exoscale are encouraged to leverage `packer init` for installing the latest version of packer-plugin-exoscale. --- go.mod | 9 +- go.sum | 66 +- .../github.com/deepmap/oapi-codegen/LICENSE | 201 + .../deepmap/oapi-codegen/pkg/runtime/bind.go | 24 + .../oapi-codegen/pkg/runtime/bindparam.go | 463 + .../oapi-codegen/pkg/runtime/bindstring.go | 143 + .../oapi-codegen/pkg/runtime/deepobject.go | 357 + .../oapi-codegen/pkg/runtime/styleparam.go | 352 + .../deepmap/oapi-codegen/pkg/types/date.go | 30 + .../deepmap/oapi-codegen/pkg/types/email.go | 27 + .../deepmap/oapi-codegen/pkg/types/regexes.go | 11 + .../github.com/exoscale/egoscale/.gitignore | 5 + .../exoscale/egoscale/.golangci.yml | 30 + vendor/github.com/exoscale/egoscale/AUTHORS | 9 + .../github.com/exoscale/egoscale/CHANGELOG.md | 706 + vendor/github.com/exoscale/egoscale/LICENSE | 201 + vendor/github.com/exoscale/egoscale/README.md | 28 + .../github.com/exoscale/egoscale/accounts.go | 80 + .../exoscale/egoscale/accounts_response.go | 43 + .../github.com/exoscale/egoscale/addresses.go | 188 + .../exoscale/egoscale/affinity_groups.go | 158 + .../egoscale/affinitygroups_response.go | 43 + .../exoscale/egoscale/antiaffinity_groups.go | 103 + .../egoscale/antiaffinity_groups_response.go | 43 + vendor/github.com/exoscale/egoscale/apis.go | 48 + .../exoscale/egoscale/async_jobs.go | 138 + .../exoscale/egoscale/asyncjobs_response.go | 43 + vendor/github.com/exoscale/egoscale/cidr.go | 62 + vendor/github.com/exoscale/egoscale/client.go | 484 + .../exoscale/egoscale/cserrorcode_string.go | 83 + vendor/github.com/exoscale/egoscale/dns.go | 364 + vendor/github.com/exoscale/egoscale/doc.go | 180 + vendor/github.com/exoscale/egoscale/error.go | 15 + .../exoscale/egoscale/errorcode_string.go | 60 + vendor/github.com/exoscale/egoscale/events.go | 76 + .../exoscale/egoscale/events_response.go | 43 + .../exoscale/egoscale/eventtypes_response.go | 43 + vendor/github.com/exoscale/egoscale/go.mod | 13 + vendor/github.com/exoscale/egoscale/go.sum | 82 + .../github.com/exoscale/egoscale/gopher.png | Bin 0 -> 63065 bytes .../exoscale/egoscale/iam_apikey.go | 92 + .../exoscale/egoscale/instance_groups.go | 71 + .../exoscale/egoscale/instance_pool.go | 170 + .../egoscale/instancegroups_response.go | 43 + vendor/github.com/exoscale/egoscale/isos.go | 94 + .../exoscale/egoscale/isos_response.go | 43 + .../exoscale/egoscale/jobstatustype_string.go | 25 + .../exoscale/egoscale/macaddress.go | 63 + .../github.com/exoscale/egoscale/networks.go | 221 + .../exoscale/egoscale/networks_response.go | 43 + vendor/github.com/exoscale/egoscale/nics.go | 120 + .../exoscale/egoscale/nics_response.go | 43 + .../egoscale/oscategories_response.go | 43 + .../egoscale/publicipaddresses_response.go | 43 + .../exoscale/egoscale/record_string.go | 36 + .../github.com/exoscale/egoscale/request.go | 404 + .../exoscale/egoscale/request_type.go | 186 + .../exoscale/egoscale/resource_limits.go | 100 + .../exoscale/egoscale/resource_metadata.go | 41 + .../egoscale/resourcedetails_response.go | 43 + .../egoscale/resourcelimits_response.go | 43 + .../exoscale/egoscale/reversedns.go | 83 + .../github.com/exoscale/egoscale/runstatus.go | 130 + .../exoscale/egoscale/runstatus_event.go | 37 + .../exoscale/egoscale/runstatus_incident.go | 176 + .../egoscale/runstatus_maintenance.go | 209 + .../exoscale/egoscale/runstatus_page.go | 169 + .../exoscale/egoscale/runstatus_service.go | 202 + .../exoscale/egoscale/security_groups.go | 226 + .../egoscale/securitygroups_response.go | 43 + .../exoscale/egoscale/serialization.go | 404 + .../exoscale/egoscale/service_offerings.go | 77 + .../egoscale/serviceofferings_response.go | 43 + .../github.com/exoscale/egoscale/snapshots.go | 160 + .../exoscale/egoscale/snapshots_response.go | 43 + .../exoscale/egoscale/sos_buckets_usage.go | 25 + .../exoscale/egoscale/ssh_keypairs.go | 105 + .../exoscale/egoscale/sshkeypairs_response.go | 43 + vendor/github.com/exoscale/egoscale/tags.go | 84 + .../exoscale/egoscale/tags_response.go | 43 + .../github.com/exoscale/egoscale/templates.go | 165 + .../exoscale/egoscale/templates_response.go | 43 + vendor/github.com/exoscale/egoscale/users.go | 63 + .../exoscale/egoscale/users_response.go | 43 + vendor/github.com/exoscale/egoscale/uuid.go | 79 + .../exoscale/egoscale/v2/api/api.go | 3 + .../exoscale/egoscale/v2/api/error.go | 14 + .../exoscale/egoscale/v2/api/middleware.go | 67 + .../exoscale/egoscale/v2/api/request.go | 67 + .../exoscale/egoscale/v2/api/security.go | 127 + .../github.com/exoscale/egoscale/v2/client.go | 133 + .../github.com/exoscale/egoscale/v2/error.go | 5 + .../egoscale/v2/internal/public-api/async.go | 123 + .../v2/internal/public-api/loadbalancer.go | 70 + .../egoscale/v2/internal/public-api/mock.go | 28 + .../v2/internal/public-api/public-api.gen.go | 9554 ++++++++ .../v2/internal/public-api/public-api.go | 24 + .../v2/internal/public-api/request.go | 20 + .../v2/internal/public-api/sks_cluster.go | 86 + .../v2/internal/public-api/sks_nodepool.go | 94 + .../v2/internal/public-api/template.go | 102 + .../egoscale/v2/internal/public-api/time.go | 3 + .../exoscale/egoscale/v2/loadbalancer.go | 382 + vendor/github.com/exoscale/egoscale/v2/sks.go | 442 + .../github.com/exoscale/egoscale/v2/test.go | 3 + vendor/github.com/exoscale/egoscale/v2/v2.go | 3 + .../github.com/exoscale/egoscale/v2/zone.go | 24 + .../github.com/exoscale/egoscale/version.go | 4 + .../exoscale/egoscale/virtual_machines.go | 632 + .../egoscale/virtualmachines_response.go | 43 + .../github.com/exoscale/egoscale/volumes.go | 114 + .../exoscale/egoscale/volumes_response.go | 43 + vendor/github.com/exoscale/egoscale/zones.go | 60 + .../exoscale/egoscale/zones_response.go | 43 + .../exoscale/packer-plugin-exoscale/LICENSE | 373 + .../exoscale-import/artifact.go | 47 + .../post-processor/exoscale-import/config.go | 93 + .../exoscale-import/config.hcl2spec.go | 70 + .../exoscale-import/post-processor.go | 92 + .../exoscale-import/step_delete_image.go | 55 + .../exoscale-import/step_register_template.go | 62 + .../exoscale-import/step_upload_image.go | 89 + vendor/github.com/gofrs/uuid/.travis.yml | 3 +- vendor/github.com/gofrs/uuid/README.md | 1 - vendor/github.com/gofrs/uuid/codec.go | 10 +- vendor/github.com/gofrs/uuid/generator.go | 36 +- vendor/github.com/gofrs/uuid/uuid.go | 79 +- vendor/github.com/jarcoal/httpmock/.gitignore | 22 + vendor/github.com/jarcoal/httpmock/LICENSE | 20 + vendor/github.com/jarcoal/httpmock/README.md | 252 + vendor/github.com/jarcoal/httpmock/doc.go | 81 + vendor/github.com/jarcoal/httpmock/env.go | 13 + vendor/github.com/jarcoal/httpmock/file.go | 57 + vendor/github.com/jarcoal/httpmock/go.mod | 3 + .../jarcoal/httpmock/internal/route_key.go | 15 + .../jarcoal/httpmock/internal/stack_tracer.go | 85 + .../jarcoal/httpmock/internal/submatches.go | 22 + .../github.com/jarcoal/httpmock/response.go | 451 + .../github.com/jarcoal/httpmock/transport.go | 1040 + .../mattn/go-colorable/colorable_windows.go | 28 +- .../github.com/stretchr/objx/.codeclimate.yml | 21 + vendor/github.com/stretchr/objx/.gitignore | 11 + vendor/github.com/stretchr/objx/.travis.yml | 30 + vendor/github.com/stretchr/objx/LICENSE | 22 + vendor/github.com/stretchr/objx/README.md | 80 + vendor/github.com/stretchr/objx/Taskfile.yml | 30 + vendor/github.com/stretchr/objx/accessors.go | 179 + .../github.com/stretchr/objx/conversions.go | 280 + vendor/github.com/stretchr/objx/doc.go | 66 + vendor/github.com/stretchr/objx/go.mod | 8 + vendor/github.com/stretchr/objx/go.sum | 8 + vendor/github.com/stretchr/objx/map.go | 228 + vendor/github.com/stretchr/objx/mutations.go | 77 + vendor/github.com/stretchr/objx/security.go | 12 + vendor/github.com/stretchr/objx/tests.go | 17 + .../github.com/stretchr/objx/type_specific.go | 346 + .../stretchr/objx/type_specific_codegen.go | 2251 ++ vendor/github.com/stretchr/objx/value.go | 159 + .../testify/assert/assertion_compare.go | 172 +- .../testify/assert/assertion_format.go | 97 + .../testify/assert/assertion_forward.go | 194 + .../testify/assert/assertion_order.go | 81 + .../stretchr/testify/assert/assertions.go | 83 +- .../github.com/stretchr/testify/mock/doc.go | 44 + .../github.com/stretchr/testify/mock/mock.go | 1008 + .../stretchr/testify/require/require.go | 248 + .../testify/require/require_forward.go | 194 + vendor/golang.org/x/crypto/ssh/server.go | 4 + vendor/golang.org/x/net/publicsuffix/table.go | 20162 ++++++++-------- vendor/golang.org/x/sys/unix/mkerrors.sh | 3 + vendor/golang.org/x/sys/unix/ptrace_darwin.go | 11 + vendor/golang.org/x/sys/unix/ptrace_ios.go | 11 + .../x/sys/unix/syscall_darwin.1_13.go | 1 - .../golang.org/x/sys/unix/syscall_darwin.go | 7 +- .../x/sys/unix/syscall_darwin_386.go | 2 +- .../x/sys/unix/syscall_darwin_amd64.go | 2 +- .../x/sys/unix/syscall_darwin_arm.go | 2 +- .../x/sys/unix/syscall_darwin_arm64.go | 2 +- .../golang.org/x/sys/unix/syscall_illumos.go | 13 - vendor/golang.org/x/sys/unix/syscall_linux.go | 87 +- .../golang.org/x/sys/unix/syscall_solaris.go | 13 + vendor/golang.org/x/sys/unix/timestruct.go | 26 +- vendor/golang.org/x/sys/unix/zerrors_linux.go | 143 +- .../x/sys/unix/zerrors_linux_386.go | 2 +- .../x/sys/unix/zerrors_linux_amd64.go | 2 +- .../x/sys/unix/zerrors_linux_arm.go | 2 +- .../x/sys/unix/zerrors_linux_arm64.go | 4 +- .../x/sys/unix/zerrors_linux_mips.go | 2 +- .../x/sys/unix/zerrors_linux_mips64.go | 2 +- .../x/sys/unix/zerrors_linux_mips64le.go | 2 +- .../x/sys/unix/zerrors_linux_mipsle.go | 2 +- .../x/sys/unix/zerrors_linux_ppc64.go | 2 +- .../x/sys/unix/zerrors_linux_ppc64le.go | 2 +- .../x/sys/unix/zerrors_linux_riscv64.go | 2 +- .../x/sys/unix/zerrors_linux_s390x.go | 2 +- .../x/sys/unix/zerrors_linux_sparc64.go | 2 +- .../x/sys/unix/zsyscall_darwin_386.1_13.go | 2 - .../x/sys/unix/zsyscall_darwin_386.go | 150 +- .../x/sys/unix/zsyscall_darwin_amd64.1_13.go | 2 - .../x/sys/unix/zsyscall_darwin_amd64.go | 150 +- .../x/sys/unix/zsyscall_darwin_arm.1_13.go | 2 - .../x/sys/unix/zsyscall_darwin_arm.go | 147 +- .../x/sys/unix/zsyscall_darwin_arm64.1_13.go | 2 - .../x/sys/unix/zsyscall_darwin_arm64.go | 150 +- .../x/sys/unix/zsyscall_illumos_amd64.go | 15 +- .../x/sys/unix/zsyscall_solaris_amd64.go | 13 + .../x/sys/unix/zsysnum_linux_386.go | 1 + .../x/sys/unix/zsysnum_linux_amd64.go | 1 + .../x/sys/unix/zsysnum_linux_arm.go | 1 + .../x/sys/unix/zsysnum_linux_arm64.go | 1 + .../x/sys/unix/zsysnum_linux_mips.go | 1 + .../x/sys/unix/zsysnum_linux_mips64.go | 1 + .../x/sys/unix/zsysnum_linux_mips64le.go | 1 + .../x/sys/unix/zsysnum_linux_mipsle.go | 1 + .../x/sys/unix/zsysnum_linux_ppc64.go | 1 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 1 + .../x/sys/unix/zsysnum_linux_riscv64.go | 1 + .../x/sys/unix/zsysnum_linux_s390x.go | 1 + .../x/sys/unix/zsysnum_linux_sparc64.go | 1 + .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 1 + .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 1 + .../x/sys/unix/ztypes_darwin_386.go | 1 + .../x/sys/unix/ztypes_darwin_amd64.go | 1 + .../x/sys/unix/ztypes_darwin_arm.go | 1 + .../x/sys/unix/ztypes_darwin_arm64.go | 1 + .../x/sys/unix/ztypes_dragonfly_amd64.go | 1 + .../x/sys/unix/ztypes_freebsd_386.go | 1 + .../x/sys/unix/ztypes_freebsd_amd64.go | 1 + .../x/sys/unix/ztypes_freebsd_arm.go | 1 + .../x/sys/unix/ztypes_freebsd_arm64.go | 1 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 1491 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 2 +- .../x/sys/unix/ztypes_linux_amd64.go | 2 +- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2 +- .../x/sys/unix/ztypes_linux_arm64.go | 2 +- .../x/sys/unix/ztypes_linux_mips.go | 2 +- .../x/sys/unix/ztypes_linux_mips64.go | 2 +- .../x/sys/unix/ztypes_linux_mips64le.go | 2 +- .../x/sys/unix/ztypes_linux_mipsle.go | 2 +- .../x/sys/unix/ztypes_linux_ppc64.go | 2 +- .../x/sys/unix/ztypes_linux_ppc64le.go | 2 +- .../x/sys/unix/ztypes_linux_riscv64.go | 2 +- .../x/sys/unix/ztypes_linux_s390x.go | 2 +- .../x/sys/unix/ztypes_linux_sparc64.go | 2 +- .../x/sys/unix/ztypes_netbsd_386.go | 1 + .../x/sys/unix/ztypes_netbsd_amd64.go | 1 + .../x/sys/unix/ztypes_netbsd_arm.go | 1 + .../x/sys/unix/ztypes_netbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_386.go | 1 + .../x/sys/unix/ztypes_openbsd_amd64.go | 1 + .../x/sys/unix/ztypes_openbsd_arm.go | 1 + .../x/sys/unix/ztypes_openbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_mips64.go | 1 + .../x/sys/unix/ztypes_solaris_amd64.go | 1 + .../golang.org/x/sys/windows/dll_windows.go | 1 - .../x/sys/windows/security_windows.go | 11 + vendor/golang.org/x/sys/windows/service.go | 6 + .../x/sys/windows/syscall_windows.go | 37 +- .../golang.org/x/sys/windows/types_windows.go | 330 +- .../x/sys/windows/zsyscall_windows.go | 217 +- .../encoding/simplifiedchinese/hzgb2312.go | 2 +- .../text/internal/language/compact/tables.go | 36 +- .../x/text/internal/language/parse.go | 11 +- .../x/text/internal/language/tables.go | 4085 ++-- vendor/golang.org/x/text/language/tables.go | 78 +- vendor/golang.org/x/text/unicode/bidi/bidi.go | 221 +- vendor/golang.org/x/text/unicode/bidi/core.go | 63 +- .../x/text/unicode/bidi/tables12.0.0.go | 2 +- .../x/text/unicode/bidi/tables13.0.0.go | 1955 ++ .../x/text/unicode/norm/tables12.0.0.go | 2 +- .../x/text/unicode/norm/tables13.0.0.go | 7760 ++++++ vendor/gopkg.in/yaml.v3/.travis.yml | 16 - vendor/gopkg.in/yaml.v3/apic.go | 1 + vendor/gopkg.in/yaml.v3/decode.go | 65 +- vendor/gopkg.in/yaml.v3/emitterc.go | 58 +- vendor/gopkg.in/yaml.v3/encode.go | 30 +- vendor/gopkg.in/yaml.v3/parserc.go | 48 +- vendor/gopkg.in/yaml.v3/scannerc.go | 49 +- vendor/gopkg.in/yaml.v3/yaml.go | 40 +- vendor/gopkg.in/yaml.v3/yamlh.go | 2 + vendor/modules.txt | 34 +- 281 files changed, 55488 insertions(+), 13447 deletions(-) create mode 100644 vendor/github.com/deepmap/oapi-codegen/LICENSE create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go create mode 100644 vendor/github.com/deepmap/oapi-codegen/pkg/types/regexes.go create mode 100644 vendor/github.com/exoscale/egoscale/.gitignore create mode 100644 vendor/github.com/exoscale/egoscale/.golangci.yml create mode 100644 vendor/github.com/exoscale/egoscale/AUTHORS create mode 100644 vendor/github.com/exoscale/egoscale/CHANGELOG.md create mode 100644 vendor/github.com/exoscale/egoscale/LICENSE create mode 100644 vendor/github.com/exoscale/egoscale/README.md create mode 100644 vendor/github.com/exoscale/egoscale/accounts.go create mode 100644 vendor/github.com/exoscale/egoscale/accounts_response.go create mode 100644 vendor/github.com/exoscale/egoscale/addresses.go create mode 100644 vendor/github.com/exoscale/egoscale/affinity_groups.go create mode 100644 vendor/github.com/exoscale/egoscale/affinitygroups_response.go create mode 100644 vendor/github.com/exoscale/egoscale/antiaffinity_groups.go create mode 100644 vendor/github.com/exoscale/egoscale/antiaffinity_groups_response.go create mode 100644 vendor/github.com/exoscale/egoscale/apis.go create mode 100644 vendor/github.com/exoscale/egoscale/async_jobs.go create mode 100644 vendor/github.com/exoscale/egoscale/asyncjobs_response.go create mode 100644 vendor/github.com/exoscale/egoscale/cidr.go create mode 100644 vendor/github.com/exoscale/egoscale/client.go create mode 100644 vendor/github.com/exoscale/egoscale/cserrorcode_string.go create mode 100644 vendor/github.com/exoscale/egoscale/dns.go create mode 100644 vendor/github.com/exoscale/egoscale/doc.go create mode 100644 vendor/github.com/exoscale/egoscale/error.go create mode 100644 vendor/github.com/exoscale/egoscale/errorcode_string.go create mode 100644 vendor/github.com/exoscale/egoscale/events.go create mode 100644 vendor/github.com/exoscale/egoscale/events_response.go create mode 100644 vendor/github.com/exoscale/egoscale/eventtypes_response.go create mode 100644 vendor/github.com/exoscale/egoscale/go.mod create mode 100644 vendor/github.com/exoscale/egoscale/go.sum create mode 100644 vendor/github.com/exoscale/egoscale/gopher.png create mode 100644 vendor/github.com/exoscale/egoscale/iam_apikey.go create mode 100644 vendor/github.com/exoscale/egoscale/instance_groups.go create mode 100644 vendor/github.com/exoscale/egoscale/instance_pool.go create mode 100644 vendor/github.com/exoscale/egoscale/instancegroups_response.go create mode 100644 vendor/github.com/exoscale/egoscale/isos.go create mode 100644 vendor/github.com/exoscale/egoscale/isos_response.go create mode 100644 vendor/github.com/exoscale/egoscale/jobstatustype_string.go create mode 100644 vendor/github.com/exoscale/egoscale/macaddress.go create mode 100644 vendor/github.com/exoscale/egoscale/networks.go create mode 100644 vendor/github.com/exoscale/egoscale/networks_response.go create mode 100644 vendor/github.com/exoscale/egoscale/nics.go create mode 100644 vendor/github.com/exoscale/egoscale/nics_response.go create mode 100644 vendor/github.com/exoscale/egoscale/oscategories_response.go create mode 100644 vendor/github.com/exoscale/egoscale/publicipaddresses_response.go create mode 100644 vendor/github.com/exoscale/egoscale/record_string.go create mode 100644 vendor/github.com/exoscale/egoscale/request.go create mode 100644 vendor/github.com/exoscale/egoscale/request_type.go create mode 100644 vendor/github.com/exoscale/egoscale/resource_limits.go create mode 100644 vendor/github.com/exoscale/egoscale/resource_metadata.go create mode 100644 vendor/github.com/exoscale/egoscale/resourcedetails_response.go create mode 100644 vendor/github.com/exoscale/egoscale/resourcelimits_response.go create mode 100644 vendor/github.com/exoscale/egoscale/reversedns.go create mode 100644 vendor/github.com/exoscale/egoscale/runstatus.go create mode 100644 vendor/github.com/exoscale/egoscale/runstatus_event.go create mode 100644 vendor/github.com/exoscale/egoscale/runstatus_incident.go create mode 100644 vendor/github.com/exoscale/egoscale/runstatus_maintenance.go create mode 100644 vendor/github.com/exoscale/egoscale/runstatus_page.go create mode 100644 vendor/github.com/exoscale/egoscale/runstatus_service.go create mode 100644 vendor/github.com/exoscale/egoscale/security_groups.go create mode 100644 vendor/github.com/exoscale/egoscale/securitygroups_response.go create mode 100644 vendor/github.com/exoscale/egoscale/serialization.go create mode 100644 vendor/github.com/exoscale/egoscale/service_offerings.go create mode 100644 vendor/github.com/exoscale/egoscale/serviceofferings_response.go create mode 100644 vendor/github.com/exoscale/egoscale/snapshots.go create mode 100644 vendor/github.com/exoscale/egoscale/snapshots_response.go create mode 100644 vendor/github.com/exoscale/egoscale/sos_buckets_usage.go create mode 100644 vendor/github.com/exoscale/egoscale/ssh_keypairs.go create mode 100644 vendor/github.com/exoscale/egoscale/sshkeypairs_response.go create mode 100644 vendor/github.com/exoscale/egoscale/tags.go create mode 100644 vendor/github.com/exoscale/egoscale/tags_response.go create mode 100644 vendor/github.com/exoscale/egoscale/templates.go create mode 100644 vendor/github.com/exoscale/egoscale/templates_response.go create mode 100644 vendor/github.com/exoscale/egoscale/users.go create mode 100644 vendor/github.com/exoscale/egoscale/users_response.go create mode 100644 vendor/github.com/exoscale/egoscale/uuid.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/api/api.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/api/error.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/api/middleware.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/api/request.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/api/security.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/client.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/error.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/async.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/loadbalancer.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/mock.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.gen.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/request.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_cluster.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_nodepool.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/template.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/internal/public-api/time.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/loadbalancer.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/sks.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/test.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/v2.go create mode 100644 vendor/github.com/exoscale/egoscale/v2/zone.go create mode 100644 vendor/github.com/exoscale/egoscale/version.go create mode 100644 vendor/github.com/exoscale/egoscale/virtual_machines.go create mode 100644 vendor/github.com/exoscale/egoscale/virtualmachines_response.go create mode 100644 vendor/github.com/exoscale/egoscale/volumes.go create mode 100644 vendor/github.com/exoscale/egoscale/volumes_response.go create mode 100644 vendor/github.com/exoscale/egoscale/zones.go create mode 100644 vendor/github.com/exoscale/egoscale/zones_response.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/LICENSE create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/artifact.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.hcl2spec.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/post-processor.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_delete_image.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_register_template.go create mode 100644 vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_upload_image.go create mode 100644 vendor/github.com/jarcoal/httpmock/.gitignore create mode 100644 vendor/github.com/jarcoal/httpmock/LICENSE create mode 100644 vendor/github.com/jarcoal/httpmock/README.md create mode 100644 vendor/github.com/jarcoal/httpmock/doc.go create mode 100644 vendor/github.com/jarcoal/httpmock/env.go create mode 100644 vendor/github.com/jarcoal/httpmock/file.go create mode 100644 vendor/github.com/jarcoal/httpmock/go.mod create mode 100644 vendor/github.com/jarcoal/httpmock/internal/route_key.go create mode 100644 vendor/github.com/jarcoal/httpmock/internal/stack_tracer.go create mode 100644 vendor/github.com/jarcoal/httpmock/internal/submatches.go create mode 100644 vendor/github.com/jarcoal/httpmock/response.go create mode 100644 vendor/github.com/jarcoal/httpmock/transport.go create mode 100644 vendor/github.com/stretchr/objx/.codeclimate.yml create mode 100644 vendor/github.com/stretchr/objx/.gitignore create mode 100644 vendor/github.com/stretchr/objx/.travis.yml create mode 100644 vendor/github.com/stretchr/objx/LICENSE create mode 100644 vendor/github.com/stretchr/objx/README.md create mode 100644 vendor/github.com/stretchr/objx/Taskfile.yml create mode 100644 vendor/github.com/stretchr/objx/accessors.go create mode 100644 vendor/github.com/stretchr/objx/conversions.go create mode 100644 vendor/github.com/stretchr/objx/doc.go create mode 100644 vendor/github.com/stretchr/objx/go.mod create mode 100644 vendor/github.com/stretchr/objx/go.sum create mode 100644 vendor/github.com/stretchr/objx/map.go create mode 100644 vendor/github.com/stretchr/objx/mutations.go create mode 100644 vendor/github.com/stretchr/objx/security.go create mode 100644 vendor/github.com/stretchr/objx/tests.go create mode 100644 vendor/github.com/stretchr/objx/type_specific.go create mode 100644 vendor/github.com/stretchr/objx/type_specific_codegen.go create mode 100644 vendor/github.com/stretchr/objx/value.go create mode 100644 vendor/github.com/stretchr/testify/assert/assertion_order.go create mode 100644 vendor/github.com/stretchr/testify/mock/doc.go create mode 100644 vendor/github.com/stretchr/testify/mock/mock.go create mode 100644 vendor/golang.org/x/sys/unix/ptrace_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/ptrace_ios.go create mode 100644 vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables13.0.0.go delete mode 100644 vendor/gopkg.in/yaml.v3/.travis.yml diff --git a/go.mod b/go.mod index b3a97053b..4cb549450 100644 --- a/go.mod +++ b/go.mod @@ -25,6 +25,7 @@ require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/digitalocean/go-qemu v0.0.0-20201211181942-d361e7b4965f github.com/digitalocean/godo v1.11.1 + github.com/exoscale/packer-plugin-exoscale v0.1.0 github.com/fatih/camelcase v1.0.0 github.com/fatih/structtag v1.0.0 github.com/go-ini/ini v1.25.4 @@ -76,7 +77,7 @@ require ( github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7 github.com/shirou/gopsutil v3.21.1+incompatible - github.com/stretchr/testify v1.6.1 + github.com/stretchr/testify v1.7.0 github.com/tencentcloud/tencentcloud-sdk-go v3.0.222+incompatible github.com/ucloud/ucloud-sdk-go v0.16.3 github.com/ufilesdk-dev/ufile-gosdk v0.0.0-20190830075812-b4dbc4ef43a6 @@ -87,13 +88,13 @@ require ( github.com/yandex-cloud/go-sdk v0.0.0-20200921111412-ef15ded2014c github.com/zclconf/go-cty v1.7.0 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 + golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad golang.org/x/mobile v0.0.0-20201208152944-da85bec010a2 golang.org/x/mod v0.3.0 - golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 + golang.org/x/net v0.0.0-20210119194325-5f4716e94777 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 + golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c golang.org/x/tools v0.0.0-20201111133315-69daaf961d65 google.golang.org/api v0.32.0 google.golang.org/grpc v1.32.0 diff --git a/go.sum b/go.sum index 2c3abd6fe..807fb3dc9 100644 --- a/go.sum +++ b/go.sum @@ -148,10 +148,14 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE= +github.com/deepmap/oapi-codegen v1.3.11/go.mod h1:suMvK7+rKlx3+tpa8ByptmvoXbAV70wERKTOGH3hLp0= +github.com/deepmap/oapi-codegen v1.5.1 h1:Xx8/OynzWhQeKFWr182hg6Ja2evS1gcqdja7qMn05yU= +github.com/deepmap/oapi-codegen v1.5.1/go.mod h1:Eb1vtV3f58zvm37CJV4UAQ1bECb0fgAVvTdonC1ftJg= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/digitalocean/go-libvirt v0.0.0-20190626172931-4d226dd6c437/go.mod h1:PRcPVAAma6zcLpFd4GZrjR/MRpood3TamjKI2m/z/Uw= @@ -177,6 +181,10 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= +github.com/exoscale/egoscale v0.43.1 h1:Lhr0UOfg3t3Y56yh1DsYCjQuUHqFvsC8iUVqvub8+0Q= +github.com/exoscale/egoscale v0.43.1/go.mod h1:mpEXBpROAa/2i5GC0r33rfxG+TxSEka11g1PIXt9+zc= +github.com/exoscale/packer-plugin-exoscale v0.1.0 h1:p4ymqF1tNiTuxgSdnEjGqXehMdDQbV7BPaLsMxGav24= +github.com/exoscale/packer-plugin-exoscale v0.1.0/go.mod h1:ZmJRkxsAlmEsVYOMxYPupDkax54uZ+ph0h3W59aIMZ8= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -185,8 +193,12 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fatih/structtag v1.0.0 h1:pTHj65+u3RKWYPSGaU290FpI/dXxTaHdVwVwbcPKmEc= github.com/fatih/structtag v1.0.0/go.mod h1:IKitwq45uXL/yqi5mYghiD3w9H6eTOvI9vnk8tXMphA= +github.com/getkin/kin-openapi v0.13.0/go.mod h1:WGRs2ZMM1Q8LR1QBEwUxC6RJEfaBcD0s+pcEVXFuAjw= +github.com/getkin/kin-openapi v0.37.0/go.mod h1:ZJSfy1PxJv2QQvH9EdBj3nupRTVvV42mkW6zKUlRBwk= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-chi/chi v1.5.1/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -196,6 +208,8 @@ github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So= github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU= @@ -207,8 +221,9 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gofrs/flock v0.7.3 h1:I0EKY9l8HZCXTMYC4F80vwT6KNypV9uYKP3Alm/hjmQ= github.com/gofrs/flock v0.7.3/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 h1:zN2lZNZRflqFyxVaTIU61KNKQ9C0055u9CAfpmqUvo4= github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3/go.mod h1:nPpo7qLxd6XL3hWJG/O60sR8ZKfMCiIoNap5GvD12KU= @@ -241,6 +256,7 @@ github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -403,6 +419,9 @@ github.com/hetznercloud/hcloud-go v1.15.1/go.mod h1:8lR3yHBHZWy2uGcUi9Ibt4UOoop2 github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 h1:mSmyzhwBeQt2TlHbsXYLona9pwjWAvYGwQJ2Cq/k3VE= github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4/go.mod h1:yNUVHSleURKSaYUKq4Wx0i/vjCen2aq7CvPyHd/Vj2Q= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.0.8 h1:8kI16SoO6LQKgPE7PvQuV+YuD/inwHd7fOOe2zMbo4k= +github.com/jarcoal/httpmock v1.0.8/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961 h1:a2/K4HRhg31A5vafiz5yYiGMjaCxwRpyjJStfVquKds= github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961/go.mod h1:UrKjuULIWLjHFlG6aSPunArE5QX57LftMmStAZJBEX8= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4= @@ -450,21 +469,31 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= +github.com/labstack/echo/v4 v4.1.17/go.mod h1:Tn2yRQL/UclUalpb5rPdXDevbkJ+lp/2svdyFBg6CHQ= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/linode/linodego v0.14.0 h1:0APKMjiVGyry2TTUVDiok72H6cWpFNMMrFWBFn14aFU= github.com/linode/linodego v0.14.0/go.mod h1:2ce3S00NrDqJfp4i55ZuSlT0U3cKNELNYACWBPI8Tnw= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 h1:2ZKn+w/BJeL43sCxI2jhPLRv73oVVOjEKZjKkflyqxg= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20200615185753-c42b5136ff88/go.mod h1:a2HXwefeat3evJHxFXSayvRHpYEPJYtErl4uIzfaUqY= github.com/masterzen/winrm v0.0.0-20201030141608-56ca5c5f2380 h1:uKhPH5dYpx3Z8ZAnaTGfGZUiHOWa5p5mdG8wZlh+tLo= github.com/masterzen/winrm v0.0.0-20201030141608-56ca5c5f2380/go.mod h1:a2HXwefeat3evJHxFXSayvRHpYEPJYtErl4uIzfaUqY= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= @@ -556,6 +585,7 @@ github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= @@ -584,14 +614,16 @@ github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= +github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tencentcloud/tencentcloud-sdk-go v3.0.222+incompatible h1:bs+0lcG4RELNbE8PsBC9oaPP0/qExr0DuEGnZyocm84= github.com/tencentcloud/tencentcloud-sdk-go v3.0.222+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -606,6 +638,10 @@ github.com/ugorji/go/codec v1.2.4 h1:C5VurWRRCKjuENsbM6GYVw8W++WVW9rSxoACKIvxzz8 github.com/ugorji/go/codec v1.2.4/go.mod h1:bWBu1+kIRWcF8uMklKaJrR6fTWQOwAlrIzX22pHwryA= github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -645,14 +681,18 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 h1:sYNJzB4J8toYPQTM6pAkcmBRgw9SnQKP9oXCHfgy604= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -706,6 +746,7 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -725,8 +766,9 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 h1:lwlPPsmjDKK0J6eG6xDWd5XPehI0R024zxjDnw3esPA= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -762,12 +804,14 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -786,11 +830,13 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -799,8 +845,9 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= @@ -975,8 +1022,9 @@ gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/github.com/deepmap/oapi-codegen/LICENSE b/vendor/github.com/deepmap/oapi-codegen/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/LICENSE @@ -0,0 +1,201 @@ + 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. diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go new file mode 100644 index 000000000..3e2a689cd --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bind.go @@ -0,0 +1,24 @@ +// Copyright 2021 DeepMap, Inc. +// +// 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 runtime + +// Binder is the interface implemented by types that can be bound to a query string or a parameter string +// The input can be assumed to be a valid string. If you define a Bind method you are responsible for all +// data being completely bound to the type. +// +// By convention, to approximate the behavior of Bind functions themselves, +// Binder implements Bind("") as a no-op. +type Binder interface { + Bind(src string) error +} \ No newline at end of file diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go new file mode 100644 index 000000000..7c3807c22 --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindparam.go @@ -0,0 +1,463 @@ +// Copyright 2019 DeepMap, Inc. +// +// 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 runtime + +import ( + "encoding/json" + "fmt" + "net/url" + "reflect" + "strings" + "time" + + "github.com/pkg/errors" + + "github.com/deepmap/oapi-codegen/pkg/types" +) + +// This function binds a parameter as described in the Path Parameters +// section here to a Go object: +// https://swagger.io/docs/specification/serialization/ +func BindStyledParameter(style string, explode bool, paramName string, + value string, dest interface{}) error { + + if value == "" { + return fmt.Errorf("parameter '%s' is empty, can't bind its value", paramName) + } + + // Everything comes in by pointer, dereference it + v := reflect.Indirect(reflect.ValueOf(dest)) + + // This is the basic type of the destination object. + t := v.Type() + + if t.Kind() == reflect.Struct { + // We've got a destination object, we'll create a JSON representation + // of the input value, and let the json library deal with the unmarshaling + parts, err := splitStyledParameter(style, explode, true, paramName, value) + if err != nil { + return err + } + + return bindSplitPartsToDestinationStruct(paramName, parts, explode, dest) + } + + if t.Kind() == reflect.Slice { + // Chop up the parameter into parts based on its style + parts, err := splitStyledParameter(style, explode, false, paramName, value) + if err != nil { + return fmt.Errorf("error splitting input '%s' into parts: %s", value, err) + } + + return bindSplitPartsToDestinationArray(parts, dest) + } + + // Try to bind the remaining types as a base type. + return BindStringToObject(value, dest) +} + +// This is a complex set of operations, but each given parameter style can be +// packed together in multiple ways, using different styles of separators, and +// different packing strategies based on the explode flag. This function takes +// as input any parameter format, and unpacks it to a simple list of strings +// or key-values which we can then treat generically. +// Why, oh why, great Swagger gods, did you have to make this so complicated? +func splitStyledParameter(style string, explode bool, object bool, paramName string, value string) ([]string, error) { + switch style { + case "simple": + // In the simple case, we always split on comma + parts := strings.Split(value, ",") + return parts, nil + case "label": + // In the label case, it's more tricky. In the no explode case, we have + // /users/.3,4,5 for arrays + // /users/.role,admin,firstName,Alex for objects + // in the explode case, we have: + // /users/.3.4.5 + // /users/.role=admin.firstName=Alex + if explode { + // In the exploded case, split everything on periods. + parts := strings.Split(value, ".") + // The first part should be an empty string because we have a + // leading period. + if parts[0] != "" { + return nil, fmt.Errorf("invalid format for label parameter '%s', should start with '.'", paramName) + } + return parts[1:], nil + + } else { + // In the unexploded case, we strip off the leading period. + if value[0] != '.' { + return nil, fmt.Errorf("invalid format for label parameter '%s', should start with '.'", paramName) + } + // The rest is comma separated. + return strings.Split(value[1:], ","), nil + } + + case "matrix": + if explode { + // In the exploded case, we break everything up on semicolon + parts := strings.Split(value, ";") + // The first part should always be empty string, since we started + // with ;something + if parts[0] != "" { + return nil, fmt.Errorf("invalid format for matrix parameter '%s', should start with ';'", paramName) + } + parts = parts[1:] + // Now, if we have an object, we just have a list of x=y statements. + // for a non-object, like an array, we have id=x, id=y. id=z, etc, + // so we need to strip the prefix from each of them. + if !object { + prefix := paramName + "=" + for i := range parts { + parts[i] = strings.TrimPrefix(parts[i], prefix) + } + } + return parts, nil + } else { + // In the unexploded case, parameters will start with ;paramName= + prefix := ";" + paramName + "=" + if !strings.HasPrefix(value, prefix) { + return nil, fmt.Errorf("expected parameter '%s' to start with %s", paramName, prefix) + } + str := strings.TrimPrefix(value, prefix) + return strings.Split(str, ","), nil + } + case "form": + var parts []string + if explode { + parts = strings.Split(value, "&") + if !object { + prefix := paramName + "=" + for i := range parts { + parts[i] = strings.TrimPrefix(parts[i], prefix) + } + } + return parts, nil + } else { + parts = strings.Split(value, ",") + prefix := paramName + "=" + for i := range parts { + parts[i] = strings.TrimPrefix(parts[i], prefix) + } + } + return parts, nil + } + + return nil, fmt.Errorf("unhandled parameter style: %s", style) +} + +// Given a set of values as a slice, create a slice to hold them all, and +// assign to each one by one. +func bindSplitPartsToDestinationArray(parts []string, dest interface{}) error { + // Everything comes in by pointer, dereference it + v := reflect.Indirect(reflect.ValueOf(dest)) + + // This is the basic type of the destination object. + t := v.Type() + + // We've got a destination array, bind each object one by one. + // This generates a slice of the correct element type and length to + // hold all the parts. + newArray := reflect.MakeSlice(t, len(parts), len(parts)) + for i, p := range parts { + err := BindStringToObject(p, newArray.Index(i).Addr().Interface()) + if err != nil { + return fmt.Errorf("error setting array element: %s", err) + } + } + v.Set(newArray) + return nil +} + +// Given a set of chopped up parameter parts, bind them to a destination +// struct. The exploded parameter controls whether we send key value pairs +// in the exploded case, or a sequence of values which are interpreted as +// tuples. +// Given the struct Id { firstName string, role string }, as in the canonical +// swagger examples, in the exploded case, we would pass +// ["firstName=Alex", "role=admin"], where in the non-exploded case, we would +// pass "firstName", "Alex", "role", "admin"] +// +// We punt the hard work of binding these values to the object to the json +// library. We'll turn those arrays into JSON strings, and unmarshal +// into the struct. +func bindSplitPartsToDestinationStruct(paramName string, parts []string, explode bool, dest interface{}) error { + // We've got a destination object, we'll create a JSON representation + // of the input value, and let the json library deal with the unmarshaling + var fields []string + if explode { + fields = make([]string, len(parts)) + for i, property := range parts { + propertyParts := strings.Split(property, "=") + if len(propertyParts) != 2 { + return fmt.Errorf("parameter '%s' has invalid exploded format", paramName) + } + fields[i] = "\"" + propertyParts[0] + "\":\"" + propertyParts[1] + "\"" + } + } else { + if len(parts)%2 != 0 { + return fmt.Errorf("parameter '%s' has invalid format, property/values need to be pairs", paramName) + } + fields = make([]string, len(parts)/2) + for i := 0; i < len(parts); i += 2 { + key := parts[i] + value := parts[i+1] + fields[i/2] = "\"" + key + "\":\"" + value + "\"" + } + } + jsonParam := "{" + strings.Join(fields, ",") + "}" + err := json.Unmarshal([]byte(jsonParam), dest) + if err != nil { + return fmt.Errorf("error binding parameter %s fields: %s", paramName, err) + } + return nil +} + +// This works much like BindStyledParameter, however it takes a query argument +// input array from the url package, since query arguments come through a +// different path than the styled arguments. They're also exceptionally fussy. +// For example, consider the exploded and unexploded form parameter examples: +// (exploded) /users?role=admin&firstName=Alex +// (unexploded) /users?id=role,admin,firstName,Alex +// +// In the first case, we can pull the "id" parameter off the context, +// and unmarshal via json as an intermediate. Easy. In the second case, we +// don't have the id QueryParam present, but must find "role", and "firstName". +// what if there is another parameter similar to "ID" named "role"? We can't +// tell them apart. This code tries to fail, but the moral of the story is that +// you shouldn't pass objects via form styled query arguments, just use +// the Content parameter form. +func BindQueryParameter(style string, explode bool, required bool, paramName string, + queryParams url.Values, dest interface{}) error { + + // dv = destination value. + dv := reflect.Indirect(reflect.ValueOf(dest)) + + // intermediate value form which is either dv or dv dereferenced. + v := dv + + // inner code will bind the string's value to this interface. + var output interface{} + + if required { + // If the parameter is required, then the generated code will pass us + // a pointer to it: &int, &object, and so forth. We can directly set + // them. + output = dest + } else { + // For optional parameters, we have an extra indirect. An optional + // parameter of type "int" will be *int on the struct. We pass that + // in by pointer, and have **int. + + // If the destination, is a nil pointer, we need to allocate it. + if v.IsNil() { + t := v.Type() + newValue := reflect.New(t.Elem()) + // for now, hang onto the output buffer separately from destination, + // as we don't want to write anything to destination until we can + // unmarshal successfully, and check whether a field is required. + output = newValue.Interface() + } else { + // If the destination isn't nil, just use that. + output = v.Interface() + } + + // Get rid of that extra indirect as compared to the required case, + // so the code below doesn't have to care. + v = reflect.Indirect(reflect.ValueOf(output)) + } + + // This is the basic type of the destination object. + t := v.Type() + k := t.Kind() + + switch style { + case "form": + var parts []string + if explode { + // ok, the explode case in query arguments is very, very annoying, + // because an exploded object, such as /users?role=admin&firstName=Alex + // isn't actually present in the parameter array. We have to do + // different things based on destination type. + values, found := queryParams[paramName] + var err error + + switch k { + case reflect.Slice: + // In the slice case, we simply use the arguments provided by + // http library. + if !found { + if required { + return fmt.Errorf("query parameter '%s' is required", paramName) + } else { + return nil + } + } + err = bindSplitPartsToDestinationArray(values, output) + case reflect.Struct: + // This case is really annoying, and error prone, but the + // form style object binding doesn't tell us which arguments + // in the query string correspond to the object's fields. We'll + // try to bind field by field. + err = bindParamsToExplodedObject(paramName, queryParams, output) + default: + // Primitive object case. We expect to have 1 value to + // unmarshal. + if len(values) == 0 { + if required { + return fmt.Errorf("query parameter '%s' is required", paramName) + } else { + return nil + } + } + if len(values) != 1 { + return fmt.Errorf("multiple values for single value parameter '%s'", paramName) + } + err = BindStringToObject(values[0], output) + } + if err != nil { + return err + } + // If the parameter is required, and we've successfully unmarshaled + // it, this assigns the new object to the pointer pointer. + if !required { + dv.Set(reflect.ValueOf(output)) + } + return nil + } else { + values, found := queryParams[paramName] + if !found { + if required { + return fmt.Errorf("query parameter '%s' is required", paramName) + } else { + return nil + } + } + if len(values) != 1 { + return fmt.Errorf("parameter '%s' is not exploded, but is specified multiple times", paramName) + } + parts = strings.Split(values[0], ",") + } + var err error + switch k { + case reflect.Slice: + err = bindSplitPartsToDestinationArray(parts, output) + case reflect.Struct: + err = bindSplitPartsToDestinationStruct(paramName, parts, explode, output) + default: + if len(parts) == 0 { + if required { + return fmt.Errorf("query parameter '%s' is required", paramName) + } else { + return nil + } + } + if len(parts) != 1 { + return fmt.Errorf("multiple values for single value parameter '%s'", paramName) + } + err = BindStringToObject(parts[0], output) + } + if err != nil { + return err + } + if !required { + dv.Set(reflect.ValueOf(output)) + } + return nil + case "deepObject": + if !explode { + return errors.New("deepObjects must be exploded") + } + return UnmarshalDeepObject(dest, paramName, queryParams) + case "spaceDelimited", "pipeDelimited": + return fmt.Errorf("query arguments of style '%s' aren't yet supported", style) + default: + return fmt.Errorf("style '%s' on parameter '%s' is invalid", style, paramName) + + } +} + +// This function reflects the destination structure, and pulls the value for +// each settable field from the given parameters map. This is to deal with the +// exploded form styled object which may occupy any number of parameter names. +// We don't try to be smart here, if the field exists as a query argument, +// set its value. +func bindParamsToExplodedObject(paramName string, values url.Values, dest interface{}) error { + // Dereference pointers to their destination values + binder, v, t := indirect(dest) + if binder != nil { + return BindStringToObject(values.Get(paramName), dest) + } + if t.Kind() != reflect.Struct { + return fmt.Errorf("unmarshaling query arg '%s' into wrong type", paramName) + } + + for i := 0; i < t.NumField(); i++ { + fieldT := t.Field(i) + + // Skip unsettable fields, such as internal ones. + if !v.Field(i).CanSet() { + continue + } + + // Find the json annotation on the field, and use the json specified + // name if available, otherwise, just the field name. + tag := fieldT.Tag.Get("json") + fieldName := fieldT.Name + if tag != "" { + tagParts := strings.Split(tag, ",") + name := tagParts[0] + if name != "" { + fieldName = name + } + } + + // At this point, we look up field name in the parameter list. + fieldVal, found := values[fieldName] + if found { + if len(fieldVal) != 1 { + return fmt.Errorf("field '%s' specified multiple times for param '%s'", fieldName, paramName) + } + err := BindStringToObject(fieldVal[0], v.Field(i).Addr().Interface()) + if err != nil { + return fmt.Errorf("could not bind query arg '%s' to request object: %s'", paramName, err) + } + } + } + return nil +} + +// indirect +func indirect(dest interface{}) (interface{}, reflect.Value, reflect.Type) { + v := reflect.ValueOf(dest) + if v.Type().NumMethod() > 0 && v.CanInterface() { + if u, ok := v.Interface().(Binder); ok { + return u, reflect.Value{}, nil + } + } + v = reflect.Indirect(v) + t := v.Type() + // special handling for custom types which might look like an object. We + // don't want to use object binding on them, but rather treat them as + // primitive types. time.Time{} is a unique case since we can't add a Binder + // to it without changing the underlying generated code. + if t.ConvertibleTo(reflect.TypeOf(time.Time{})) { + return dest, reflect.Value{}, nil + } + if t.ConvertibleTo(reflect.TypeOf(types.Date{})) { + return dest, reflect.Value{}, nil + } + return nil, v, t +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go new file mode 100644 index 000000000..e75964b66 --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/bindstring.go @@ -0,0 +1,143 @@ +// Copyright 2019 DeepMap, Inc. +// +// 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 runtime + +import ( + "errors" + "fmt" + "reflect" + "strconv" + "time" + + "github.com/deepmap/oapi-codegen/pkg/types" +) + +// This function takes a string, and attempts to assign it to the destination +// interface via whatever type conversion is necessary. We have to do this +// via reflection instead of a much simpler type switch so that we can handle +// type aliases. This function was the easy way out, the better way, since we +// know the destination type each place that we use this, is to generate code +// to read each specific type. +func BindStringToObject(src string, dst interface{}) error { + var err error + + v := reflect.ValueOf(dst) + t := reflect.TypeOf(dst) + + // We need to dereference pointers + if t.Kind() == reflect.Ptr { + v = reflect.Indirect(v) + t = v.Type() + } + + // The resulting type must be settable. reflect will catch issues like + // passing the destination by value. + if !v.CanSet() { + return errors.New("destination is not settable") + } + + switch t.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + var val int64 + val, err = strconv.ParseInt(src, 10, 64) + if err == nil { + v.SetInt(val) + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + var val uint64 + val, err = strconv.ParseUint(src, 10, 64) + if err == nil { + v.SetUint(val) + } + case reflect.String: + v.SetString(src) + err = nil + case reflect.Float64, reflect.Float32: + var val float64 + val, err = strconv.ParseFloat(src, 64) + if err == nil { + v.SetFloat(val) + } + case reflect.Bool: + var val bool + val, err = strconv.ParseBool(src) + if err == nil { + v.SetBool(val) + } + case reflect.Struct: + // if this is not of type Time or of type Date look to see if this is of type Binder. + if dstType, ok := dst.(Binder); ok { + return dstType.Bind(src) + } + + if t.ConvertibleTo(reflect.TypeOf(time.Time{})) { + // Don't fail on empty string. + if src == "" { + return nil + } + // Time is a special case of a struct that we handle + parsedTime, err := time.Parse(time.RFC3339Nano, src) + if err != nil { + parsedTime, err = time.Parse(types.DateFormat, src) + if err != nil { + return fmt.Errorf("error parsing '%s' as RFC3339 or 2006-01-02 time: %s", src, err) + } + } + // So, assigning this gets a little fun. We have a value to the + // dereference destination. We can't do a conversion to + // time.Time because the result isn't assignable, so we need to + // convert pointers. + if t != reflect.TypeOf(time.Time{}) { + vPtr := v.Addr() + vtPtr := vPtr.Convert(reflect.TypeOf(&time.Time{})) + v = reflect.Indirect(vtPtr) + } + v.Set(reflect.ValueOf(parsedTime)) + return nil + } + + if t.ConvertibleTo(reflect.TypeOf(types.Date{})) { + // Don't fail on empty string. + if src == "" { + return nil + } + parsedTime, err := time.Parse(types.DateFormat, src) + if err != nil { + return fmt.Errorf("error parsing '%s' as date: %s", src, err) + } + parsedDate := types.Date{Time: parsedTime} + + // We have to do the same dance here to assign, just like with times + // above. + if t != reflect.TypeOf(types.Date{}) { + vPtr := v.Addr() + vtPtr := vPtr.Convert(reflect.TypeOf(&types.Date{})) + v = reflect.Indirect(vtPtr) + } + v.Set(reflect.ValueOf(parsedDate)) + return nil + } + + // We fall through to the error case below if we haven't handled the + // destination type above. + fallthrough + default: + // We've got a bunch of types unimplemented, don't fail silently. + err = fmt.Errorf("can not bind to destination of type: %s", t.Kind()) + } + if err != nil { + return fmt.Errorf("error binding string parameter: %s", err) + } + return nil +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go new file mode 100644 index 000000000..e13c795f8 --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/deepobject.go @@ -0,0 +1,357 @@ +package runtime + +import ( + "encoding/json" + "fmt" + "github.com/deepmap/oapi-codegen/pkg/types" + "net/url" + "reflect" + "sort" + "strconv" + "strings" + "time" + + "github.com/pkg/errors" +) + +func marshalDeepObject(in interface{}, path []string) ([]string, error) { + var result []string + + switch t := in.(type) { + case []interface{}: + // For the array, we will use numerical subscripts of the form [x], + // in the same order as the array. + for i, iface := range t { + newPath := append(path, strconv.Itoa(i)) + fields, err := marshalDeepObject(iface, newPath) + if err != nil { + return nil, errors.Wrap(err, "error traversing array") + } + result = append(result, fields...) + } + case map[string]interface{}: + // For a map, each key (field name) becomes a member of the path, and + // we recurse. First, sort the keys. + keys := make([]string, len(t)) + i := 0 + for k := range t { + keys[i] = k + i++ + } + sort.Strings(keys) + + // Now, for each key, we recursively marshal it. + for _, k := range keys { + newPath := append(path, k) + fields, err := marshalDeepObject(t[k], newPath) + if err != nil { + return nil, errors.Wrap(err, "error traversing map") + } + result = append(result, fields...) + } + default: + // Now, for a concrete value, we will turn the path elements + // into a deepObject style set of subscripts. [a, b, c] turns into + // [a][b][c] + prefix := "[" + strings.Join(path, "][") + "]" + result = []string{ + prefix + fmt.Sprintf("=%v", t), + } + } + return result, nil +} + +func MarshalDeepObject(i interface{}, paramName string) (string, error) { + // We're going to marshal to JSON and unmarshal into an interface{}, + // which will use the json pkg to deal with all the field annotations. We + // can then walk the generic object structure to produce a deepObject. This + // isn't efficient and it would be more efficient to reflect on our own, + // but it's complicated, error-prone code. + buf, err := json.Marshal(i) + if err != nil { + return "", errors.Wrap(err, "failed to marshal input to JSON") + } + var i2 interface{} + err = json.Unmarshal(buf, &i2) + if err != nil { + return "", errors.Wrap(err, "failed to unmarshal JSON") + } + fields, err := marshalDeepObject(i2, nil) + if err != nil { + return "", errors.Wrap(err, "error traversing JSON structure") + } + + // Prefix the param name to each subscripted field. + for i := range fields { + fields[i] = paramName + fields[i] + } + return strings.Join(fields, "&"), nil +} + +type fieldOrValue struct { + fields map[string]fieldOrValue + value string +} + +func (f *fieldOrValue) appendPathValue(path []string, value string) { + fieldName := path[0] + if len(path) == 1 { + f.fields[fieldName] = fieldOrValue{value: value} + return + } + + pv, found := f.fields[fieldName] + if !found { + pv = fieldOrValue{ + fields: make(map[string]fieldOrValue), + } + f.fields[fieldName] = pv + } + pv.appendPathValue(path[1:], value) +} + +func makeFieldOrValue(paths [][]string, values []string) fieldOrValue { + + f := fieldOrValue{ + fields: make(map[string]fieldOrValue), + } + for i := range paths { + path := paths[i] + value := values[i] + f.appendPathValue(path, value) + } + return f +} + +func UnmarshalDeepObject(dst interface{}, paramName string, params url.Values) error { + // Params are all the query args, so we need those that look like + // "paramName["... + var fieldNames []string + var fieldValues []string + searchStr := paramName + "[" + for pName, pValues := range params { + if strings.HasPrefix(pName, searchStr) { + // trim the parameter name from the full name. + pName = pName[len(paramName):] + fieldNames = append(fieldNames, pName) + if len(pValues) != 1 { + return fmt.Errorf("%s has multiple values", pName) + } + fieldValues = append(fieldValues, pValues[0]) + } + } + + // Now, for each field, reconstruct its subscript path and value + paths := make([][]string, len(fieldNames)) + for i, path := range fieldNames { + path = strings.TrimLeft(path, "[") + path = strings.TrimRight(path, "]") + paths[i] = strings.Split(path, "][") + } + + fieldPaths := makeFieldOrValue(paths, fieldValues) + err := assignPathValues(dst, fieldPaths) + if err != nil { + return errors.Wrap(err, "error assigning value to destination") + } + + return nil +} + +// This returns a field name, either using the variable name, or the json +// annotation if that exists. +func getFieldName(f reflect.StructField) string { + n := f.Name + tag, found := f.Tag.Lookup("json") + if found { + // If we have a json field, and the first part of it before the + // first comma is non-empty, that's our field name. + parts := strings.Split(tag, ",") + if parts[0] != "" { + n = parts[0] + } + } + return n +} + +// Create a map of field names that we'll see in the deepObject to reflect +// field indices on the given type. +func fieldIndicesByJsonTag(i interface{}) (map[string]int, error) { + t := reflect.TypeOf(i) + if t.Kind() != reflect.Struct { + return nil, errors.New("expected a struct as input") + } + + n := t.NumField() + fieldMap := make(map[string]int) + for i := 0; i < n; i++ { + field := t.Field(i) + fieldName := getFieldName(field) + fieldMap[fieldName] = i + } + return fieldMap, nil +} + +func assignPathValues(dst interface{}, pathValues fieldOrValue) error { + //t := reflect.TypeOf(dst) + v := reflect.ValueOf(dst) + + iv := reflect.Indirect(v) + it := iv.Type() + + switch it.Kind() { + case reflect.Slice: + sliceLength := len(pathValues.fields) + dstSlice := reflect.MakeSlice(it, sliceLength, sliceLength) + err := assignSlice(dstSlice, pathValues) + if err != nil { + return errors.Wrap(err, "error assigning slice") + } + iv.Set(dstSlice) + return nil + case reflect.Struct: + // Some special types we care about are structs. Handle them + // here. They may be redefined, so we need to do some hoop + // jumping. If the types are aliased, we need to type convert + // the pointer, then set the value of the dereference pointer. + + // We check to see if the object implements the Binder interface first. + if dst, isBinder := v.Interface().(Binder); isBinder { + return dst.Bind(pathValues.value) + } + // Then check the legacy types + if it.ConvertibleTo(reflect.TypeOf(types.Date{})) { + var date types.Date + var err error + date.Time, err = time.Parse(types.DateFormat, pathValues.value) + if err != nil { + return errors.Wrap(err, "invalid date format") + } + dst := iv + if it != reflect.TypeOf(types.Date{}) { + // Types are aliased, convert the pointers. + ivPtr := iv.Addr() + aPtr := ivPtr.Convert(reflect.TypeOf(&types.Date{})) + dst = reflect.Indirect(aPtr) + } + dst.Set(reflect.ValueOf(date)) + } + if it.ConvertibleTo(reflect.TypeOf(time.Time{})) { + var tm time.Time + var err error + tm, err = time.Parse(time.RFC3339Nano, pathValues.value) + if err != nil { + // Fall back to parsing it as a date. + tm, err = time.Parse(types.DateFormat, pathValues.value) + if err != nil { + return fmt.Errorf("error parsing tim as RFC3339 or 2006-01-02 time: %s", err) + } + return errors.Wrap(err, "invalid date format") + } + dst := iv + if it != reflect.TypeOf(time.Time{}) { + // Types are aliased, convert the pointers. + ivPtr := iv.Addr() + aPtr := ivPtr.Convert(reflect.TypeOf(&time.Time{})) + dst = reflect.Indirect(aPtr) + } + dst.Set(reflect.ValueOf(tm)) + } + fieldMap, err := fieldIndicesByJsonTag(iv.Interface()) + if err != nil { + return errors.Wrap(err, "failed enumerating fields") + } + for _, fieldName := range sortedFieldOrValueKeys(pathValues.fields) { + fieldValue := pathValues.fields[fieldName] + fieldIndex, found := fieldMap[fieldName] + if !found { + return fmt.Errorf("field [%s] is not present in destination object", fieldName) + } + field := iv.Field(fieldIndex) + err = assignPathValues(field.Addr().Interface(), fieldValue) + if err != nil { + return errors.Wrapf(err, "error assigning field [%s]", fieldName) + } + } + return nil + case reflect.Ptr: + // If we have a pointer after redirecting, it means we're dealing with + // an optional field, such as *string, which was passed in as &foo. We + // will allocate it if necessary, and call ourselves with a different + // interface. + dstVal := reflect.New(it.Elem()) + dstPtr := dstVal.Interface() + err := assignPathValues(dstPtr, pathValues) + iv.Set(dstVal) + return err + case reflect.Bool: + val, err := strconv.ParseBool(pathValues.value) + if err != nil { + return fmt.Errorf("expected a valid bool, got %s", pathValues.value) + } + iv.SetBool(val) + return nil + case reflect.Float32: + val, err := strconv.ParseFloat(pathValues.value, 32) + if err != nil { + return fmt.Errorf("expected a valid float, got %s", pathValues.value) + } + iv.SetFloat(val) + return nil + case reflect.Float64: + val, err := strconv.ParseFloat(pathValues.value, 64) + if err != nil { + return fmt.Errorf("expected a valid float, got %s", pathValues.value) + } + iv.SetFloat(val) + return nil + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + val, err := strconv.ParseInt(pathValues.value, 10, 64) + if err != nil { + return fmt.Errorf("expected a valid int, got %s", pathValues.value) + } + iv.SetInt(val) + return nil + case reflect.String: + iv.SetString(pathValues.value) + return nil + default: + return errors.New("unhandled type: " + it.String()) + } +} + +func assignSlice(dst reflect.Value, pathValues fieldOrValue) error { + // Gather up the values + nValues := len(pathValues.fields) + values := make([]string, nValues) + // We expect to have consecutive array indices in the map + for i := 0; i < nValues; i++ { + indexStr := strconv.Itoa(i) + fv, found := pathValues.fields[indexStr] + if !found { + return errors.New("array deepObjects must have consecutive indices") + } + values[i] = fv.value + } + + // This could be cleaner, but we can call into assignPathValues to + // avoid recreating this logic. + for i := 0; i < nValues; i++ { + dstElem := dst.Index(i).Addr() + err := assignPathValues(dstElem.Interface(), fieldOrValue{value: values[i]}) + if err != nil { + return errors.Wrap(err, "error binding array") + } + } + + return nil +} + +func sortedFieldOrValueKeys(m map[string]fieldOrValue) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + return keys +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go new file mode 100644 index 000000000..638e8349f --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/runtime/styleparam.go @@ -0,0 +1,352 @@ +// Copyright 2019 DeepMap, Inc. +// +// 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 runtime + +import ( + "fmt" + "net/url" + "reflect" + "sort" + "strconv" + "strings" + "time" + + "github.com/pkg/errors" + + "github.com/deepmap/oapi-codegen/pkg/types" +) + +// Given an input value, such as a primitive type, array or object, turn it +// into a parameter based on style/explode definition. +func StyleParam(style string, explode bool, paramName string, value interface{}) (string, error) { + t := reflect.TypeOf(value) + v := reflect.ValueOf(value) + + // Things may be passed in by pointer, we need to dereference, so return + // error on nil. + if t.Kind() == reflect.Ptr { + if v.IsNil() { + return "", fmt.Errorf("value is a nil pointer") + } + v = reflect.Indirect(v) + t = v.Type() + } + + switch t.Kind() { + case reflect.Slice: + n := v.Len() + sliceVal := make([]interface{}, n) + for i := 0; i < n; i++ { + sliceVal[i] = v.Index(i).Interface() + } + return styleSlice(style, explode, paramName, sliceVal) + case reflect.Struct: + return styleStruct(style, explode, paramName, value) + case reflect.Map: + return styleMap(style, explode, paramName, value) + default: + return stylePrimitive(style, explode, paramName, value) + } +} + +func styleSlice(style string, explode bool, paramName string, values []interface{}) (string, error) { + if style == "deepObject" { + if !explode { + return "", errors.New("deepObjects must be exploded") + } + return MarshalDeepObject(values, paramName) + } + + var prefix string + var separator string + + switch style { + case "simple": + separator = "," + case "label": + prefix = "." + if explode { + separator = "." + } else { + separator = "," + } + case "matrix": + prefix = fmt.Sprintf(";%s=", paramName) + if explode { + separator = prefix + } else { + separator = "," + } + case "form": + prefix = fmt.Sprintf("%s=", paramName) + if explode { + separator = "&" + prefix + } else { + separator = "," + } + case "spaceDelimited": + prefix = fmt.Sprintf("%s=", paramName) + if explode { + separator = "&" + prefix + } else { + separator = " " + } + case "pipeDelimited": + prefix = fmt.Sprintf("%s=", paramName) + if explode { + separator = "&" + prefix + } else { + separator = "|" + } + default: + return "", fmt.Errorf("unsupported style '%s'", style) + } + + // We're going to assume here that the array is one of simple types. + var err error + parts := make([]string, len(values)) + for i, v := range values { + parts[i], err = primitiveToString(v) + if err != nil { + return "", fmt.Errorf("error formatting '%s': %s", paramName, err) + } + } + return prefix + strings.Join(parts, separator), nil +} + +func sortedKeys(strMap map[string]string) []string { + keys := make([]string, len(strMap)) + i := 0 + for k := range strMap { + keys[i] = k + i++ + } + sort.Strings(keys) + return keys +} + +// This is a special case. The struct may be a date or time, in +// which case, marshal it in correct format. +func marshalDateTimeValue(value interface{}) (string, bool) { + v := reflect.Indirect(reflect.ValueOf(value)) + t := v.Type() + + if t.ConvertibleTo(reflect.TypeOf(time.Time{})) { + tt := v.Convert(reflect.TypeOf(time.Time{})) + timeVal := tt.Interface().(time.Time) + return timeVal.Format(time.RFC3339Nano), true + } + + if t.ConvertibleTo(reflect.TypeOf(types.Date{})) { + d := v.Convert(reflect.TypeOf(types.Date{})) + dateVal := d.Interface().(types.Date) + return dateVal.Format(types.DateFormat), true + } + + return "", false +} + +func styleStruct(style string, explode bool, paramName string, value interface{}) (string, error) { + + if timeVal, ok := marshalDateTimeValue(value); ok { + styledVal, err := stylePrimitive(style, explode, paramName, timeVal) + if err != nil { + return "", errors.Wrap(err, "failed to style time") + } + return styledVal, nil + } + + if style == "deepObject" { + if !explode { + return "", errors.New("deepObjects must be exploded") + } + return MarshalDeepObject(value, paramName) + } + + // Otherwise, we need to build a dictionary of the struct's fields. Each + // field may only be a primitive value. + v := reflect.ValueOf(value) + t := reflect.TypeOf(value) + fieldDict := make(map[string]string) + + for i := 0; i < t.NumField(); i++ { + fieldT := t.Field(i) + // Find the json annotation on the field, and use the json specified + // name if available, otherwise, just the field name. + tag := fieldT.Tag.Get("json") + fieldName := fieldT.Name + if tag != "" { + tagParts := strings.Split(tag, ",") + name := tagParts[0] + if name != "" { + fieldName = name + } + } + f := v.Field(i) + + // Unset optional fields will be nil pointers, skip over those. + if f.Type().Kind() == reflect.Ptr && f.IsNil() { + continue + } + str, err := primitiveToString(f.Interface()) + if err != nil { + return "", fmt.Errorf("error formatting '%s': %s", paramName, err) + } + fieldDict[fieldName] = str + } + + return processFieldDict(style, explode, paramName, fieldDict) +} + +func styleMap(style string, explode bool, paramName string, value interface{}) (string, error) { + if style == "deepObject" { + if !explode { + return "", errors.New("deepObjects must be exploded") + } + return MarshalDeepObject(value, paramName) + } + + dict, ok := value.(map[string]interface{}) + if !ok { + return "", errors.New("map not of type map[string]interface{}") + } + + fieldDict := make(map[string]string) + for fieldName, value := range dict { + str, err := primitiveToString(value) + if err != nil { + return "", fmt.Errorf("error formatting '%s': %s", paramName, err) + } + fieldDict[fieldName] = str + } + + return processFieldDict(style, explode, paramName, fieldDict) +} + +func processFieldDict(style string, explode bool, paramName string, fieldDict map[string]string) (string, error) { + var parts []string + + // This works for everything except deepObject. We'll handle that one + // separately. + if style != "deepObject" { + if explode { + for _, k := range sortedKeys(fieldDict) { + v := fieldDict[k] + parts = append(parts, k+"="+v) + } + } else { + for _, k := range sortedKeys(fieldDict) { + v := fieldDict[k] + parts = append(parts, k) + parts = append(parts, v) + } + } + } + + var prefix string + var separator string + + switch style { + case "simple": + separator = "," + case "label": + prefix = "." + if explode { + separator = prefix + } else { + separator = "," + } + case "matrix": + if explode { + separator = ";" + prefix = ";" + } else { + separator = "," + prefix = fmt.Sprintf(";%s=", paramName) + } + case "form": + if explode { + separator = "&" + } else { + prefix = fmt.Sprintf("%s=", paramName) + separator = "," + } + case "deepObject": + { + if !explode { + return "", fmt.Errorf("deepObject parameters must be exploded") + } + for _, k := range sortedKeys(fieldDict) { + v := fieldDict[k] + part := fmt.Sprintf("%s[%s]=%s", paramName, k, v) + parts = append(parts, part) + } + separator = "&" + } + default: + return "", fmt.Errorf("unsupported style '%s'", style) + } + + return prefix + strings.Join(parts, separator), nil +} + +func stylePrimitive(style string, explode bool, paramName string, value interface{}) (string, error) { + strVal, err := primitiveToString(value) + if err != nil { + return "", err + } + + var prefix string + switch style { + case "simple": + case "label": + prefix = "." + case "matrix": + prefix = fmt.Sprintf(";%s=", paramName) + case "form": + prefix = fmt.Sprintf("%s=", paramName) + default: + return "", fmt.Errorf("unsupported style '%s'", style) + } + return prefix + url.QueryEscape(strVal), nil +} + +// Converts a primitive value to a string. We need to do this based on the +// Kind of an interface, not the Type to work with aliased types. +func primitiveToString(value interface{}) (string, error) { + var output string + + // Values may come in by pointer for optionals, so make sure to dereferene. + v := reflect.Indirect(reflect.ValueOf(value)) + t := v.Type() + kind := t.Kind() + + switch kind { + case reflect.Int8, reflect.Int32, reflect.Int64, reflect.Int: + output = strconv.FormatInt(v.Int(), 10) + case reflect.Float32, reflect.Float64: + output = strconv.FormatFloat(v.Float(), 'f', -1, 64) + case reflect.Bool: + if v.Bool() { + output = "true" + } else { + output = "false" + } + case reflect.String: + output = v.String() + default: + return "", fmt.Errorf("unsupported type %s", reflect.TypeOf(value).String()) + } + return output, nil +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go b/vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go new file mode 100644 index 000000000..bdf94a98a --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/types/date.go @@ -0,0 +1,30 @@ +package types + +import ( + "encoding/json" + "time" +) + +const DateFormat = "2006-01-02" + +type Date struct { + time.Time +} + +func (d Date) MarshalJSON() ([]byte, error) { + return json.Marshal(d.Time.Format(DateFormat)) +} + +func (d *Date) UnmarshalJSON(data []byte) error { + var dateStr string + err := json.Unmarshal(data, &dateStr) + if err != nil { + return err + } + parsed, err := time.Parse(DateFormat, dateStr) + if err != nil { + return err + } + d.Time = parsed + return nil +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go b/vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go new file mode 100644 index 000000000..00a4cf6b9 --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/types/email.go @@ -0,0 +1,27 @@ +package types + +import ( + "encoding/json" + "errors" +) + +type Email string + +func (e Email) MarshalJSON() ([]byte, error) { + if !emailRegex.MatchString(string(e)) { + return nil, errors.New("email: failed to pass regex validation") + } + return json.Marshal(string(e)) +} + +func (e *Email) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + if !emailRegex.MatchString(s) { + return errors.New("email: failed to pass regex validation") + } + *e = Email(s) + return nil +} diff --git a/vendor/github.com/deepmap/oapi-codegen/pkg/types/regexes.go b/vendor/github.com/deepmap/oapi-codegen/pkg/types/regexes.go new file mode 100644 index 000000000..94f17df58 --- /dev/null +++ b/vendor/github.com/deepmap/oapi-codegen/pkg/types/regexes.go @@ -0,0 +1,11 @@ +package types + +import "regexp" + +const ( + emailRegexString = "^(?:(?:(?:(?:[a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+(?:\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+)*)|(?:(?:\\x22)(?:(?:(?:(?:\\x20|\\x09)*(?:\\x0d\\x0a))?(?:\\x20|\\x09)+)?(?:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}]))))*(?:(?:(?:\\x20|\\x09)*(?:\\x0d\\x0a))?(\\x20|\\x09)+)?(?:\\x22))))@(?:(?:(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])(?:[a-zA-Z]|\\d|-|\\.|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*(?:[a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.)+(?:(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(?:(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])(?:[a-zA-Z]|\\d|-|\\.|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*(?:[a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.?$" +) + +var ( + emailRegex = regexp.MustCompile(emailRegexString) +) diff --git a/vendor/github.com/exoscale/egoscale/.gitignore b/vendor/github.com/exoscale/egoscale/.gitignore new file mode 100644 index 000000000..800fe1da7 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/.gitignore @@ -0,0 +1,5 @@ +.token +dist +ops.asc +vendor +listApis.json \ No newline at end of file diff --git a/vendor/github.com/exoscale/egoscale/.golangci.yml b/vendor/github.com/exoscale/egoscale/.golangci.yml new file mode 100644 index 000000000..590924ea9 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/.golangci.yml @@ -0,0 +1,30 @@ +run: + timeout: 10m + +linters-settings: + golint: + min-confidence: 0.3 + gocyclo: + min-complexity: 28 + goimports: + local-prefixes: github.com + +linters: + enable: + - deadcode + - errcheck + - gocritic + - gocyclo + - goimports + - golint + - gosimple + - govet + - ineffassign + - megacheck + - nakedret + - scopelint + - staticcheck + - structcheck + - unused + - varcheck + disable-all: true diff --git a/vendor/github.com/exoscale/egoscale/AUTHORS b/vendor/github.com/exoscale/egoscale/AUTHORS new file mode 100644 index 000000000..5c12a2a17 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/AUTHORS @@ -0,0 +1,9 @@ +Pierre-Yves Ritschard +Vincent Bernat +Chris Baumbauer +Marc-Aurèle Brothier +Sebastien Goasguen +Yoan Blanc +Stefano Marengo +Pierre-Emmanuel Jacquier +Fabrizio Steiner diff --git a/vendor/github.com/exoscale/egoscale/CHANGELOG.md b/vendor/github.com/exoscale/egoscale/CHANGELOG.md new file mode 100644 index 000000000..84cf4466d --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/CHANGELOG.md @@ -0,0 +1,706 @@ +Changelog +========= + +0.43.1 +------ + +- change: in `NewClient()`, the `v2.Client` embedded in the `Client` struct doesn't inherit the custom `http.Client` set using `WithHTTPClient()`. + +0.43.0 +------ + +- change: [Exoscale API V2](https://openapi-v2.exoscale.com/) related code has been relocated under the `github.com/exoscale/egoscale/v2` package. + Note: `egoscale.Client` embeds a `v2.Client` initialized implicitly as a convenience. + +0.42.0 +------ + +- feature: new `SKSNodepool.AntiAffinityGroupIDs` field +- change: `SKSCluster.Level` field renamed as `SKSCluster.ServiceLevel` + +0.41.0 +------ + +- feature: new method `ListZones()` + +0.40.1 +------ + +- Improve API v2 async job tests and error reporting (#466) + +0.40.0 +------ + +- feature: new method `UpgradeSKSCluster()` +- feature: new fields `SKSCluster.Level` and `SKSCluster.CNI` +- change: `SKSCluster.EnableExoscaleCloudController` replaced with `SKSCluster.AddOns` + +0.39.1 +------ + +- fix: add missing `UpdateVirtualMachineSecurityGroups` operation metadata + +0.39.0 +------ + +- feature: add `UpdateVirtualMachineSecurityGroups` operation (#464) + +0.38.0 +------ + +- feature: add `SKSCluster.EvictNodepoolMembers()` and `ListSKSClusterVersions()` methods + +0.37.1 +------ + +- fix: `UpdateIPAddress.HealthcheckTLSSkipVerify` field always set to `false` (#462) + +0.37.0 +------ + +- feature: `NewClient()` now accepts options (460) +- fix: NLB service healthcheck TLS SNI bug (#461) + +0.36.2 +------ + +- fix: `CreateInstancePool.AntiAffinityGroupIDs` field is optional (#459) + +0.36.1 +------ + +- feature: add support for Exoscale Cloud Controller in SKS clusters +- fix: add missing tests for SKS Nodepools Security Groups + +0.36.0 +------ + +- feature: add support for Anti-Affinity Groups to Instance Pools +- feature: add support for Security Groups to SKS Nodepools + +0.35.3 +------ + +- Fix typo in version.go + +0.35.2 +------ + +- Improve API v2 errors handling (#455) + +0.35.1 +------ + +- fix: various SKS-related bugs (#454) + +0.35.0 +------ + +- feature: add support for SKS resources (#453) + +0.34.0 +------ + +- change: `BucketUsage.Usage` is now an `int64` (#451) + +0.33.2 +------ + +- fix: make `GetWithContext` return more relevant errors (#450) + +0.33.1 +------ + +- fix: `UpdateNetworkLoadBalancer` call panicking following a public API change + +0.33.0 +------ + +- feature: add support for Network Load Balancer service HTTPS health checking (#449) + +0.32.0 +------ + +- feature: add support for Instance Pool root disk size update (#448) + +0.31.2 +------ + +- fix: add missing TLS-specific parameters to `AssociateIPAddress` + +0.31.1 +------ + +- fix: Instance Pool IPv6 flag handling + +0.31.0 +------ + +- feature: add support for IPv6 in Instance Pools (#446) + +0.30.0 +------ + +- feature: add new TLS-specific parameters to managed EIP + +0.29.0 +------ + +- feature: `ListVirtualMachines` call to allow searching by `ManagerID` (#442) +- fix: remove duplicate `User-Agent` HTTP header in Runstatus calls +- tests: `*NetworkLoadBalancer*` calls are now tested using HTTP mocks +- codegen: `internal/v2` updated + +0.28.1 +------ + +- fix: Fix `ListVolumes` call to allow searching by ID (#440) + +0.28.0 +------ + +- feature: add `Manager`/`ManagerID` fields to `VirtualMachine` structure (#438) +- fix: HTTP request User Agent header handling (#439) + +0.27.0 +------ + +- feature: Add `evictInstancePoolMembers` call to Instance Pool (#437) + +0.26.6 +------ + +- change: Add support for Compute instance templates boot mode (#436) + +0.26.5 +------ + +- fix: bug in the ListNetworkLoadBalancers call (#435) + +0.26.4 +------ + +- Fixing typo in previous release + +0.26.3 +------ + +- change: updated API V2 async operation code (#434) + +0.26.2 +------ + +- change: updated OpenAPI code-generated API V2 bindings + +0.26.1 +------ + +- change: the `DisplayText` property of `RegisterCustomTemplate` is now optional (#433) + +0.26.0 +------ + +- feature: Add support for Network Load Balancer resources (#432) + +0.25.0 +------ + +- feature: Add support for `listBucketsUsage` (#431) +- change: Switch CI to Github Actions (#430) + +0.24.0 +------ + +- feature: Add export snapshot implementation (#427) +- feature: Add support for public API V2 (#425) +- change: Switch module to Go 1.14 (#429) +- change: Travis CI: set minimum Go version to 1.13 +- doc: Annotate API doc regarding use of tags (#423) +- tests: fix request client timeout handling (#422) + +0.23.0 +------ + +- change: Add `Resources` field to `APIKey` (#420) + +0.22.0 +------ + +- change: Remove all references to Network Offerings (#418) + +0.21.0 +------ + +- feature: add const `NotFound` 404 on type `ErrorCode` (#417) + +0.20.1 +------ + +- fix: update the `ListAPIKeysResponse` field (#415) + +0.20.0 +------ + +- feature: Add Instance pool implementation (#410) +- feature: Add IAM implementation (#411) + +0.19.0 +------ + +- feature: add field `Description` on type `IPAddress` (#413) +- change: add Json tag `omitempty` on field `TemplateFilter` in type `ListTemplates` (#412) + +0.18.1 +------ + +- change: make the "User-Agent" HTTP request header more informative and exposed + +0.18.0 +------ + +- feature: add method `DeepCopy` on type `AsyncJobResult` (#403) + +0.17.2 +------ + +- remove: remove the `IsFeatured` parameter from call `RegisterCustomTemplate` (#402) + +0.17.1 +------ + +- feature: add parameter `RescueProfile` to call `StartVirtualMachine` (#401) + +0.17.0 +------ + +- feature: add new call `RegisterCustomTemplate` (#400) +- feature: add new call `DeleteTemplate` (#399) + +0.16.0 +------ + +- feature: Add `Healthcheck*` parameters to call `UpdateIPAddress` +- change: Replace satori/go.uuid by gofrs/uuid + +0.15.0 +------ + +- change: prefix the healthcheck-related params with `Healthcheck` on call `AssociateIPAddress` +- EIP: the healthcheck should be a pointer +- ip addresses: Add the Healthcheck parameters +- readme: point to new lego org (#395) +- dns: user_id is not sent back (#394) + +0.14.3 +------ + +- fix: `AffinityGroup` lists virtual machines with `UUID` rather than string + +0.14.2 +------ + +- fix: `ListVirtualMachines` by `IDs` to accept `UUID` rather than string + +0.14.1 +------ + +- fix: `GetRunstatusPage` to always contain the subresources +- fix: `ListRunstatus*` to fetch all the subresources +- feature: `PaginateRunstatus*` used by list + +0.14.0 +------ + +- change: all DNS calls require a context +- fix: `CreateAffinityGroup` allows empty `name` + +0.13.3 +------ + +- fix: runstatus unmarshalling errors +- feature: `UUID` implements DeepCopy, DeepCopyInto +- change: export `BooleanResponse` + +0.13.2 +------ + +- feat: initial Runstatus API support +- feat: `admin` namespace containing `ListVirtualMachines` for admin usage + +0.13.1 +------ + +- feat: `Iso` support `ListIsos`, `AttachIso`, and `DetachIso` + +0.13.0 +------ + +- change: `Paginate` to accept `Listable` +- change: `ListCommand` is also `Listable` +- change: `client.Get` doesn't modify the given resource, returns a new one +- change: `Command` and `AsyncCommand` are fully public, thus extensible +- remove: `Gettable` + +0.12.5 +------ + +- fix: `AuthorizeSecurityGroupEgress` could return `authorizeSecurityGroupIngress` as name + +0.12.4 +------ + +- feat: `Snapshot` is `Listable` + +0.12.3 +------ + +- change: replace dep by Go modules +- change: remove domainid,domain,regionid,listall,isrecursive,... fields +- remove: `MigrateVirtualMachine`, `CreateUser`, `EnableAccount`, and other admin calls + +0.12.2 +------ + +- fix: `ListNics` has no virtualmachineid limitations anymore +- fix: `PCIDevice` ids are not UUIDs + +0.12.1 +------ + +- fix: `UpdateVMNicIP` is async + +0.12.0 +------ + +- feat: new VM state `Moving` +- feat: `UpdateNetwork` with `startip`, `endip`, `netmask` +- feat: `NetworkOffering` is `Listable` +- feat: when it fails parsing the body, it shows it +- fix: `Snapshot.State` is a string, rather than an scalar +- change: signature are now using the v3 version with expires by default + +0.11.6 +------ + +- fix: `Network.ListRequest` accepts a `Name` argument +- change: `SecurityGroup` and the rules aren't `Taggable` anymore + +0.11.5 +------ + +- feat: addition of `UpdateVMNicIP` +- fix: `UpdateVMAffinityGroup` expected response + +0.11.4 +------ + +*no changes in the core library* + +0.11.3 +------ + +*no changes in the core library* + +0.11.2 +------ + +- fix: empty list responses + +0.11.1 +------ + +- fix: `client.Sign` handles correctly the brackets (kudos to @stffabi) +- change: `client.Payload` returns a `url.Values` + +0.11.0 +------ + +- feat: `listOSCategories` and `OSCategory` type +- feat: `listApis` supports recursive response structures +- feat: `GetRecordsWithFilters` to list records with name or record_type filters +- fix: better `DNSErrorResponse` +- fix: `ListResourceLimits` type +- change: use UUID everywhere + +0.10.5 +------ + +- feat: `Client.Logger` to plug in any `*log.Logger` +- feat: `Client.TraceOn`/`ClientTraceOff` to toggle the HTTP tracing + +0.10.4 +------ + +- feat: `CIDR` to replace string string +- fix: prevent panic on nil + +0.10.3 +------ + +- feat: `Account` is Listable +- feat: `MACAddress` to replace string type +- fix: Go 1.7 support + +0.10.2 +------ + +- fix: ActivateIP6 response + +0.10.1 +------ + +- feat: expose `SyncRequest` and `SyncRequestWithContext` +- feat: addition of reverse DNS calls +- feat: addition of `SecurityGroup.UserSecurityGroup` + +0.10.0 +------ + +- global: cloudstack documentation links are moved into cs +- global: removal of all the `...Response` types +- feat: `Network` is `Listable` +- feat: addition of `deleteUser` +- feat: addition of `listHosts` +- feat: addition of `updateHost` +- feat: exo cmd (kudos to @pierre-emmanuelJ) +- change: refactor `Gettable` to use `ListRequest` + +0.9.31 +------ + +- fix: `IPAddress`.`ListRequest` with boolean fields +- fix: `Network`.`ListRequest` with boolean fields +- fix: `ServiceOffering`.`ListRequest` with boolean fields + +0.9.30 +------ + +- fix: `VirtualMachine` `PCIDevice` representation was incomplete + +0.9.29 +------ + +- change: `DNSErrorResponse` is a proper `error` + +0.9.28 +------ + +- feat: addition of `GetDomains` +- fix: `UpdateDomain` may contain more empty fields than `CreateDomain` + +0.9.27 +------ + +- fix: expects body to be `application/json` + +0.9.26 +------ + +- change: async timeout strategy wait two seconds and not fib(n) seconds + +0.9.25 +------ + +- fix: `GetVirtualUserData` response with `Decode` method handling base64 and gzip + +0.9.24 +------ + +- feat: `Template` is `Gettable` +- feat: `ServiceOffering` is `Gettable` +- feat: addition of `GetAPILimit` +- feat: addition of `CreateTemplate`, `PrepareTemplate`, `CopyTemplate`, `UpdateTemplate`, `RegisterTemplate` +- feat: addition of `MigrateVirtualMachine` +- feat: cmd cli +- change: remove useless fields related to Project and VPC + +0.9.23 +------ + +- feat: `booleanResponse` supports true booleans: https://github.com/apache/cloudstack/pull/2428 + +0.9.22 +------ + +- feat: `ListUsers`, `CreateUser`, `UpdateUser` +- feat: `ListResourceDetails` +- feat: `SecurityGroup` helper `RuleByID` +- feat: `Sign` signs the payload +- feat: `UpdateNetworkOffering` +- feat: `GetVirtualMachineUserData` +- feat: `EnableAccount` and `DisableAccount` (admin stuff) +- feat: `AsyncRequest` and `AsyncRequestWithContext` to examine the polling +- fix: `AuthorizeSecurityGroupIngress` support for ICMPv6 +- change: move `APIName()` into the `Client`, nice godoc +- change: `Payload` doesn't sign the request anymore +- change: `Client` exposes more of its underlying data +- change: requests are sent as GET unless it body size is too big + +0.9.21 +------ + +- feat: `Network` is `Listable` +- feat: `Zone` is `Gettable` +- feat: `Client.Payload` to help preview the HTTP parameters +- feat: generate command utility +- fix: `CreateSnapshot` was missing the `Name` attribute +- fix: `ListSnapshots` was missing the `IDs` attribute +- fix: `ListZones` was missing the `NetworkType` attribute +- fix: `ListAsyncJobs` was missing the `ListAll` attribute +- change: ICMP Type/Code are uint8 and TCP/UDP port are uint16 + +0.9.20 +------ + +- feat: `Template` is `Listable` +- feat: `IPAddress` is `Listable` +- change: `List` and `Paginate` return pointers +- fix: `Template` was missing `tags` + +0.9.19 +------ + +- feat: `SSHKeyPair` is `Listable` + +0.9.18 +------ + +- feat: `VirtualMachine` is `Listable` +- feat: new `Client.Paginate` and `Client.PaginateWithContext` +- change: the inner logic of `Listable` +- remove: not working `Client.AsyncList` + +0.9.17 +------ + +- fix: `AuthorizeSecurityGroup(In|E)gress` startport may be zero + +0.9.16 +------ + +- feat: new `Listable` interface +- feat: `Nic` is `Listable` +- feat: `Volume` is `Listable` +- feat: `Zone` is `Listable` +- feat: `AffinityGroup` is `Listable` +- remove: deprecated methods `ListNics`, `AddIPToNic`, and `RemoveIPFromNic` +- remove: deprecated method `GetRootVolumeForVirtualMachine` + +0.9.15 +------ + +- feat: `IPAddress` is `Gettable` and `Deletable` +- fix: serialization of *bool + +0.9.14 +------ + +- fix: `GetVMPassword` response +- remove: deprecated `GetTopology`, `GetImages`, and al + +0.9.13 +------ + +- feat: IP4 and IP6 flags to DeployVirtualMachine +- feat: add ActivateIP6 +- fix: error message was gobbled on 40x + +0.9.12 +------ + +- feat: add `BooleanRequestWithContext` +- feat: add `client.Get`, `client.GetWithContext` to fetch a resource +- feat: add `cleint.Delete`, `client.DeleteWithContext` to delete a resource +- feat: `SSHKeyPair` is `Gettable` and `Deletable` +- feat: `VirtualMachine` is `Gettable` and `Deletable` +- feat: `AffinityGroup` is `Gettable` and `Deletable` +- feat: `SecurityGroup` is `Gettable` and `Deletable` +- remove: deprecated methods `CreateAffinityGroup`, `DeleteAffinityGroup` +- remove: deprecated methods `CreateKeypair`, `DeleteKeypair`, `RegisterKeypair` +- remove: deprecated method `GetSecurityGroupID` + +0.9.11 +------ + +- feat: CloudStack API name is now public `APIName()` +- feat: enforce the mutual exclusivity of some fields +- feat: add `context.Context` to `RequestWithContext` +- change: `AsyncRequest` and `BooleanAsyncRequest` are gone, use `Request` and `BooleanRequest` instead. +- change: `AsyncInfo` is no more + +0.9.10 +------ + +- fix: typo made ListAll required in ListPublicIPAddresses +- fix: all bool are now *bool, respecting CS default value +- feat: (*VM).DefaultNic() to obtain the main Nic + +0.9.9 +----- + +- fix: affinity groups virtualmachineIds attribute +- fix: uuidList is not a list of strings + +0.9.8 +----- + +- feat: add RootDiskSize to RestoreVirtualMachine +- fix: monotonic polling using Context + +0.9.7 +----- + +- feat: add Taggable interface to expose ResourceType +- feat: add (Create|Update|Delete|List)InstanceGroup(s) +- feat: add RegisterUserKeys +- feat: add ListResourceLimits +- feat: add ListAccounts + +0.9.6 +----- + +- fix: update UpdateVirtualMachine userdata +- fix: Network's name/displaytext might be empty + +0.9.5 +----- + +- fix: serialization of slice + +0.9.4 +----- + +- fix: constants + +0.9.3 +----- + +- change: userdata expects a string +- change: no pointer in sub-struct's + +0.9.2 +----- + +- bug: createNetwork is a sync call +- bug: typo in listVirtualMachines' domainid +- bug: serialization of map[string], e.g. UpdateVirtualMachine +- change: IPAddress's use net.IP type +- feat: helpers VM.NicsByType, VM.NicByNetworkID, VM.NicByID +- feat: addition of CloudStack ApiErrorCode constants + +0.9.1 +----- + +- bug: sync calls returns succes as a string rather than a bool +- change: unexport BooleanResponse types +- feat: original CloudStack error response can be obtained + +0.9.0 +----- + +Big refactoring, addition of the documentation, compliance to golint. + +0.1.0 +----- + +Initial library diff --git a/vendor/github.com/exoscale/egoscale/LICENSE b/vendor/github.com/exoscale/egoscale/LICENSE new file mode 100644 index 000000000..327ecb823 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/LICENSE @@ -0,0 +1,201 @@ +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 2014 exoscale(tm) + + 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. diff --git a/vendor/github.com/exoscale/egoscale/README.md b/vendor/github.com/exoscale/egoscale/README.md new file mode 100644 index 000000000..b3525c5cb --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/README.md @@ -0,0 +1,28 @@ +--- +title: Egoscale +description: the Go library for Exoscale +--- + + + +[![Actions Status](https://github.com/exoscale/egoscale/workflows/CI/badge.svg?branch=master)](https://github.com/exoscale/egoscale/actions?query=workflow%3ACI+branch%3Amaster) +[![GoDoc](https://godoc.org/github.com/exoscale/egoscale?status.svg)](https://godoc.org/github.com/exoscale/egoscale) [![Go Report Card](https://goreportcard.com/badge/github.com/exoscale/egoscale)](https://goreportcard.com/report/github.com/exoscale/egoscale) + +A wrapper for the [Exoscale public cloud](https://www.exoscale.com) API. + +## Known users + +- [Exoscale CLI](https://github.com/exoscale/cli) +- [Exoscale Terraform provider](https://github.com/exoscale/terraform-provider-exoscale) +- [ExoIP](https://github.com/exoscale/exoip): IP Watchdog +- [Lego](https://github.com/go-acme/lego): Let's Encrypt and ACME library +- Kubernetes Incubator: [External DNS](https://github.com/kubernetes-incubator/external-dns) +- [Docker machine](https://docs.docker.com/machine/drivers/exoscale/) +- [etc.](https://godoc.org/github.com/exoscale/egoscale?importers) + +## License + +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 diff --git a/vendor/github.com/exoscale/egoscale/accounts.go b/vendor/github.com/exoscale/egoscale/accounts.go new file mode 100644 index 000000000..9bcdec608 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/accounts.go @@ -0,0 +1,80 @@ +package egoscale + +// Account provides the detailed account information +type Account struct { + AccountDetails map[string]string `json:"accountdetails,omitempty" doc:"details for the account"` + CPUAvailable string `json:"cpuavailable,omitempty" doc:"the total number of cpu cores available to be created for this account"` + CPULimit string `json:"cpulimit,omitempty" doc:"the total number of cpu cores the account can own"` + CPUTotal int64 `json:"cputotal,omitempty" doc:"the total number of cpu cores owned by account"` + DefaultZoneID *UUID `json:"defaultzoneid,omitempty" doc:"the default zone of the account"` + EipLimit string `json:"eiplimit,omitempty" doc:"the total number of public elastic ip addresses this account can acquire"` + Groups []string `json:"groups,omitempty" doc:"the list of acl groups that account belongs to"` + ID *UUID `json:"id,omitempty" doc:"the id of the account"` + IPAvailable string `json:"ipavailable,omitempty" doc:"the total number of public ip addresses available for this account to acquire"` + IPLimit string `json:"iplimit,omitempty" doc:"the total number of public ip addresses this account can acquire"` + IPTotal int64 `json:"iptotal,omitempty" doc:"the total number of public ip addresses allocated for this account"` + IsCleanupRequired bool `json:"iscleanuprequired,omitempty" doc:"true if the account requires cleanup"` + IsDefault bool `json:"isdefault,omitempty" doc:"true if account is default, false otherwise"` + MemoryAvailable string `json:"memoryavailable,omitempty" doc:"the total memory (in MB) available to be created for this account"` + MemoryLimit string `json:"memorylimit,omitempty" doc:"the total memory (in MB) the account can own"` + MemoryTotal int64 `json:"memorytotal,omitempty" doc:"the total memory (in MB) owned by account"` + Name string `json:"name,omitempty" doc:"the name of the account"` + NetworkAvailable string `json:"networkavailable,omitempty" doc:"the total number of networks available to be created for this account"` + NetworkDomain string `json:"networkdomain,omitempty" doc:"the network domain"` + NetworkLimit string `json:"networklimit,omitempty" doc:"the total number of networks the account can own"` + NetworkTotal int64 `json:"networktotal,omitempty" doc:"the total number of networks owned by account"` + PrimaryStorageAvailable string `json:"primarystorageavailable,omitempty" doc:"the total primary storage space (in GiB) available to be used for this account"` + PrimaryStorageLimit string `json:"primarystoragelimit,omitempty" doc:"the total primary storage space (in GiB) the account can own"` + PrimaryStorageTotal int64 `json:"primarystoragetotal,omitempty" doc:"the total primary storage space (in GiB) owned by account"` + ProjectAvailable string `json:"projectavailable,omitempty" doc:"the total number of projects available for administration by this account"` + ProjectLimit string `json:"projectlimit,omitempty" doc:"the total number of projects the account can own"` + ProjectTotal int64 `json:"projecttotal,omitempty" doc:"the total number of projects being administrated by this account"` + SecondaryStorageAvailable string `json:"secondarystorageavailable,omitempty" doc:"the total secondary storage space (in GiB) available to be used for this account"` + SecondaryStorageLimit string `json:"secondarystoragelimit,omitempty" doc:"the total secondary storage space (in GiB) the account can own"` + SecondaryStorageTotal int64 `json:"secondarystoragetotal,omitempty" doc:"the total secondary storage space (in GiB) owned by account"` + SMTP bool `json:"smtp,omitempty" doc:"if SMTP outbound is allowed"` + SnapshotAvailable string `json:"snapshotavailable,omitempty" doc:"the total number of snapshots available for this account"` + SnapshotLimit string `json:"snapshotlimit,omitempty" doc:"the total number of snapshots which can be stored by this account"` + SnapshotTotal int64 `json:"snapshottotal,omitempty" doc:"the total number of snapshots stored by this account"` + State string `json:"state,omitempty" doc:"the state of the account"` + TemplateAvailable string `json:"templateavailable,omitempty" doc:"the total number of templates available to be created by this account"` + TemplateLimit string `json:"templatelimit,omitempty" doc:"the total number of templates which can be created by this account"` + TemplateTotal int64 `json:"templatetotal,omitempty" doc:"the total number of templates which have been created by this account"` + User []User `json:"user,omitempty" doc:"the list of users associated with account"` + VMAvailable string `json:"vmavailable,omitempty" doc:"the total number of virtual machines available for this account to acquire"` + VMLimit string `json:"vmlimit,omitempty" doc:"the total number of virtual machines that can be deployed by this account"` + VMRunning int `json:"vmrunning,omitempty" doc:"the total number of virtual machines running for this account"` + VMStopped int `json:"vmstopped,omitempty" doc:"the total number of virtual machines stopped for this account"` + VMTotal int64 `json:"vmtotal,omitempty" doc:"the total number of virtual machines deployed by this account"` + VolumeAvailable string `json:"volumeavailable,omitempty" doc:"the total volume available for this account"` + VolumeLimit string `json:"volumelimit,omitempty" doc:"the total volume which can be used by this account"` + VolumeTotal int64 `json:"volumetotal,omitempty" doc:"the total volume being used by this account"` +} + +// ListRequest builds the ListAccountsGroups request +func (a Account) ListRequest() (ListCommand, error) { + return &ListAccounts{ + ID: a.ID, + State: a.State, + }, nil +} + +//go:generate go run generate/main.go -interface=Listable ListAccounts + +// ListAccounts represents a query to display the accounts +type ListAccounts struct { + ID *UUID `json:"id,omitempty" doc:"List account by account ID"` + IsCleanUpRequired *bool `json:"iscleanuprequired,omitempty" doc:"list accounts by cleanuprequired attribute (values are true or false)"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"List account by account name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + State string `json:"state,omitempty" doc:"List accounts by state. Valid states are enabled, disabled, and locked."` + _ bool `name:"listAccounts" description:"Lists accounts and provides detailed account information for listed accounts"` +} + +// ListAccountsResponse represents a list of accounts +type ListAccountsResponse struct { + Count int `json:"count"` + Account []Account `json:"account"` +} diff --git a/vendor/github.com/exoscale/egoscale/accounts_response.go b/vendor/github.com/exoscale/egoscale/accounts_response.go new file mode 100644 index 000000000..106daca32 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/accounts_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListAccounts) Response() interface{} { + return new(ListAccountsResponse) +} + +// ListRequest returns itself +func (ls *ListAccounts) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListAccounts) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListAccounts) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListAccounts) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListAccountsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListAccountsResponse was expected, got %T", resp)) + return + } + + for i := range items.Account { + if !callback(&items.Account[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/addresses.go b/vendor/github.com/exoscale/egoscale/addresses.go new file mode 100644 index 000000000..867ef4698 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/addresses.go @@ -0,0 +1,188 @@ +package egoscale + +import ( + "context" + "fmt" + "net" +) + +// Healthcheck represents an Healthcheck attached to an IP +type Healthcheck struct { + Interval int64 `json:"interval,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 10, minimum: 5"` + Mode string `json:"mode,omitempty" doc:"healthcheck definition: healthcheck mode can be either 'tcp' or 'http'"` + Path string `json:"path,omitempty" doc:"healthcheck definition: the path against which the 'http' healthcheck will be performed. Required if mode is 'http', ignored otherwise."` + Port int64 `json:"port,omitempty" doc:"healthcheck definition: the port against which the healthcheck will be performed. Required if a 'mode' is provided."` + StrikesFail int64 `json:"strikes-fail,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'dead'. Default: 3"` + StrikesOk int64 `json:"strikes-ok,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'alive'. Default: 2"` + Timeout int64 `json:"timeout,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 2, cannot be greater than interval."` + TLSSNI string `json:"tls-sni,omitempty" doc:"healthcheck definition: server name to present for HTTPS checks"` + TLSSkipVerify bool `json:"tls-skip-verify" doc:"healthcheck definition: bypass certificate chain verification for HTTPS checks"` +} + +// IPAddress represents an IP Address +type IPAddress struct { + Allocated string `json:"allocated,omitempty" doc:"date the public IP address was acquired"` + Associated string `json:"associated,omitempty" doc:"date the public IP address was associated"` + AssociatedNetworkID *UUID `json:"associatednetworkid,omitempty" doc:"the ID of the Network associated with the IP address"` + AssociatedNetworkName string `json:"associatednetworkname,omitempty" doc:"the name of the Network associated with the IP address"` + Description string `json:"description,omitempty" doc:"The IP address description."` + ForVirtualNetwork bool `json:"forvirtualnetwork,omitempty" doc:"the virtual network for the IP address"` + Healthcheck *Healthcheck `json:"healthcheck,omitempty" doc:"The IP healthcheck configuration"` + ID *UUID `json:"id,omitempty" doc:"public IP address id"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"public IP address"` + IsElastic bool `json:"iselastic,omitempty" doc:"is an elastic ip"` + IsPortable bool `json:"isportable,omitempty" doc:"is public IP portable across the zones"` + IsSourceNat bool `json:"issourcenat,omitempty" doc:"true if the IP address is a source nat address, false otherwise"` + IsStaticNat *bool `json:"isstaticnat,omitempty" doc:"true if this ip is for static nat, false otherwise"` + IsSystem bool `json:"issystem,omitempty" doc:"true if this ip is system ip (was allocated as a part of deployVm or createLbRule)"` + NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the Network where ip belongs to"` + PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"the physical network this belongs to"` + Purpose string `json:"purpose,omitempty" doc:"purpose of the IP address. In Acton this value is not null for Ips with isSystem=true, and can have either StaticNat or LB value"` + ReverseDNS []ReverseDNS `json:"reversedns,omitempty" doc:"the list of PTR record(s) associated with the ip address"` + State string `json:"state,omitempty" doc:"State of the ip address. Can be: Allocatin, Allocated and Releasing"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with ip address"` + VirtualMachineDisplayName string `json:"virtualmachinedisplayname,omitempty" doc:"virtual machine display name the ip address is assigned to (not null only for static nat Ip)"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"virtual machine id the ip address is assigned to (not null only for static nat Ip)"` + VirtualMachineName string `json:"virtualmachinename,omitempty" doc:"virtual machine name the ip address is assigned to (not null only for static nat Ip)"` + VlanID *UUID `json:"vlanid,omitempty" doc:"the ID of the VLAN associated with the IP address. This parameter is visible to ROOT admins only"` + VlanName string `json:"vlanname,omitempty" doc:"the VLAN associated with the IP address"` + VMIPAddress net.IP `json:"vmipaddress,omitempty" doc:"virtual machine (dnat) ip address (not null only for static nat Ip)"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the zone the public IP address belongs to"` + ZoneName string `json:"zonename,omitempty" doc:"the name of the zone the public IP address belongs to"` +} + +// ResourceType returns the type of the resource +func (IPAddress) ResourceType() string { + return "PublicIpAddress" +} + +// ListRequest builds the ListAdresses request +func (ipaddress IPAddress) ListRequest() (ListCommand, error) { + req := &ListPublicIPAddresses{ + AssociatedNetworkID: ipaddress.AssociatedNetworkID, + ID: ipaddress.ID, + IPAddress: ipaddress.IPAddress, + PhysicalNetworkID: ipaddress.PhysicalNetworkID, + VlanID: ipaddress.VlanID, + ZoneID: ipaddress.ZoneID, + } + if ipaddress.IsElastic { + req.IsElastic = &ipaddress.IsElastic + } + if ipaddress.IsSourceNat { + req.IsSourceNat = &ipaddress.IsSourceNat + } + if ipaddress.ForVirtualNetwork { + req.ForVirtualNetwork = &ipaddress.ForVirtualNetwork + } + + return req, nil +} + +// Delete removes the resource +func (ipaddress IPAddress) Delete(ctx context.Context, client *Client) error { + if ipaddress.ID == nil { + return fmt.Errorf("an IPAddress may only be deleted using ID") + } + + return client.BooleanRequestWithContext(ctx, &DisassociateIPAddress{ + ID: ipaddress.ID, + }) +} + +// AssociateIPAddress (Async) represents the IP creation +type AssociateIPAddress struct { + Description string `json:"description,omitempty" doc:"The IP address description."` + HealthcheckInterval int64 `json:"interval,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 10, minimum: 5"` + HealthcheckMode string `json:"mode,omitempty" doc:"healthcheck definition: healthcheck mode can be either 'tcp', 'http', or 'https'"` + HealthcheckPath string `json:"path,omitempty" doc:"healthcheck definition: the path against which the 'http' healthcheck will be performed. Required if mode is 'http' or 'https', ignored otherwise."` + HealthcheckPort int64 `json:"port,omitempty" doc:"healthcheck definition: the port against which the healthcheck will be performed. Required if a 'mode' is provided."` + HealthcheckStrikesFail int64 `json:"strikes-fail,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'dead'. Default: 3"` + HealthcheckStrikesOk int64 `json:"strikes-ok,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'alive'. Default: 2"` + HealthcheckTimeout int64 `json:"timeout,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 2, cannot be greater than interval."` + HealthcheckTLSSkipVerify bool `json:"tls-skip-verify,omitempty" doc:"healthcheck definition: skip TLS verification for HTTPS checks. Default: false"` + HealthcheckTLSSNI string `json:"tls-sni,omitempty" doc:"healthcheck definition: server name to present for HTTPS checks. Default: no server name is presented"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the availability zone you want to acquire a public IP address from"` + _ bool `name:"associateIpAddress" description:"Acquires and associates a public IP to an account."` +} + +// Response returns the struct to unmarshal +func (AssociateIPAddress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (AssociateIPAddress) AsyncResponse() interface{} { + return new(IPAddress) +} + +// DisassociateIPAddress (Async) represents the IP deletion +type DisassociateIPAddress struct { + ID *UUID `json:"id" doc:"the id of the public ip address to disassociate"` + _ bool `name:"disassociateIpAddress" description:"Disassociates an ip address from the account."` +} + +// Response returns the struct to unmarshal +func (DisassociateIPAddress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DisassociateIPAddress) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// UpdateIPAddress (Async) represents the IP modification +type UpdateIPAddress struct { + Description string `json:"description,omitempty" doc:"The IP address description."` + HealthcheckInterval int64 `json:"interval,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 10, minimum: 5"` + HealthcheckMode string `json:"mode,omitempty" doc:"healthcheck definition: healthcheck mode can be either 'tcp', 'http', or 'https'"` + HealthcheckPath string `json:"path,omitempty" doc:"healthcheck definition: the path against which the 'http' healthcheck will be performed. Required if mode is 'http', ignored otherwise."` + HealthcheckPort int64 `json:"port,omitempty" doc:"healthcheck definition: the port against which the healthcheck will be performed. Required if a 'mode' is provided."` + HealthcheckStrikesFail int64 `json:"strikes-fail,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'dead'. Default: 3"` + HealthcheckStrikesOk int64 `json:"strikes-ok,omitempty" doc:"healthcheck definition: number of times to retry before declaring the healthcheck 'alive'. Default: 2"` + HealthcheckTimeout int64 `json:"timeout,omitempty" doc:"healthcheck definition: time in seconds to wait for each check. Default: 2, cannot be greater than interval."` + HealthcheckTLSSNI string `json:"tls-sni,omitempty" doc:"healthcheck definition: server name to present for HTTPS checks"` + HealthcheckTLSSkipVerify bool `json:"tls-skip-verify,omitempty" doc:"healthcheck definition: bypass certificate chain verification for HTTPS checks"` + ID *UUID `json:"id" doc:"the id of the public IP address to update"` + _ bool `name:"updateIpAddress" description:"Updates an IP address"` +} + +// Response returns the struct to unmarshal +func (UpdateIPAddress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (UpdateIPAddress) AsyncResponse() interface{} { + return new(IPAddress) +} + +//go:generate go run generate/main.go -interface=Listable ListPublicIPAddresses + +// ListPublicIPAddresses represents a search for public IP addresses +type ListPublicIPAddresses struct { + AllocatedOnly *bool `json:"allocatedonly,omitempty" doc:"limits search results to allocated public IP addresses"` + AssociatedNetworkID *UUID `json:"associatednetworkid,omitempty" doc:"lists all public IP addresses associated to the network specified"` + ForLoadBalancing *bool `json:"forloadbalancing,omitempty" doc:"list only ips used for load balancing"` + ForVirtualNetwork *bool `json:"forvirtualnetwork,omitempty" doc:"the virtual network for the IP address"` + ID *UUID `json:"id,omitempty" doc:"lists ip address by id"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"lists the specified IP address"` + IsElastic *bool `json:"iselastic,omitempty" doc:"list only elastic ip addresses"` + IsSourceNat *bool `json:"issourcenat,omitempty" doc:"list only source nat ip addresses"` + IsStaticNat *bool `json:"isstaticnat,omitempty" doc:"list only static nat ip addresses"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"lists all public IP addresses by physical network id"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + VlanID *UUID `json:"vlanid,omitempty" doc:"lists all public IP addresses by VLAN ID"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"lists all public IP addresses by Zone ID"` + _ bool `name:"listPublicIpAddresses" description:"Lists all public ip addresses"` +} + +// ListPublicIPAddressesResponse represents a list of public IP addresses +type ListPublicIPAddressesResponse struct { + Count int `json:"count"` + PublicIPAddress []IPAddress `json:"publicipaddress"` +} diff --git a/vendor/github.com/exoscale/egoscale/affinity_groups.go b/vendor/github.com/exoscale/egoscale/affinity_groups.go new file mode 100644 index 000000000..ae909f6bf --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/affinity_groups.go @@ -0,0 +1,158 @@ +package egoscale + +import ( + "context" + "fmt" + "net/url" +) + +// AffinityGroup represents an Affinity Group. +// +// Affinity and Anti-Affinity Groups provide a way to influence where VMs should run. +// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/stable/virtual_machines.html#affinity-groups +type AffinityGroup struct { + Account string `json:"account,omitempty" doc:"the account owning the Affinity Group"` + Description string `json:"description,omitempty" doc:"the description of the Affinity Group"` + ID *UUID `json:"id,omitempty" doc:"the ID of the Affinity Group"` + Name string `json:"name,omitempty" doc:"the name of the Affinity Group"` + Type string `json:"type,omitempty" doc:"the type of the Affinity Group"` + VirtualMachineIDs []UUID `json:"virtualmachineIds,omitempty" doc:"virtual machine IDs associated with this Affinity Group"` +} + +// ListRequest builds the ListAffinityGroups request. +func (ag AffinityGroup) ListRequest() (ListCommand, error) { + return &ListAffinityGroups{ + ID: ag.ID, + Name: ag.Name, + }, nil +} + +// Delete deletes the given Affinity Group. +func (ag AffinityGroup) Delete(ctx context.Context, client *Client) error { + if ag.ID == nil && ag.Name == "" { + return fmt.Errorf("an Affinity Group may only be deleted using ID or Name") + } + + req := &DeleteAffinityGroup{} + + if ag.ID != nil { + req.ID = ag.ID + } else { + req.Name = ag.Name + } + + return client.BooleanRequestWithContext(ctx, req) +} + +// AffinityGroupType represent an Affinity Group type. +type AffinityGroupType struct { + Type string `json:"type,omitempty" doc:"the type of the Affinity Group"` +} + +// CreateAffinityGroup (Async) represents a new Affinity Group. +type CreateAffinityGroup struct { + Description string `json:"description,omitempty" doc:"Optional description of the Affinity Group"` + Name string `json:"name" doc:"Name of the Affinity Group"` + Type string `json:"type" doc:"Type of the Affinity Group from the available Affinity Group Group types"` + _ bool `name:"createAffinityGroup" description:"Creates an Affinity Group Group"` +} + +func (req CreateAffinityGroup) onBeforeSend(params url.Values) error { + // Name must be set, but can be empty. + if req.Name == "" { + params.Set("name", "") + } + return nil +} + +// Response returns the struct to unmarshal. +func (CreateAffinityGroup) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job. +func (CreateAffinityGroup) AsyncResponse() interface{} { + return new(AffinityGroup) +} + +// UpdateVMAffinityGroup (Async) represents a modification of an Affinity Group. +type UpdateVMAffinityGroup struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + AffinityGroupIDs []UUID `json:"affinitygroupids,omitempty" doc:"comma separated list of Affinity Groups id that are going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupnames parameter"` + AffinityGroupNames []string `json:"affinitygroupnames,omitempty" doc:"comma separated list of Affinity Groups names that are going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupids parameter"` + _ bool `name:"updateVMAffinityGroup" description:"Updates the Affinity Group Group associations of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect."` +} + +func (req UpdateVMAffinityGroup) onBeforeSend(params url.Values) error { + // Either AffinityGroupIDs or AffinityGroupNames must be set. + if len(req.AffinityGroupIDs) == 0 && len(req.AffinityGroupNames) == 0 { + params.Set("affinitygroupids", "") + } + return nil +} + +// Response returns the struct to unmarshal. +func (UpdateVMAffinityGroup) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job. +func (UpdateVMAffinityGroup) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// DeleteAffinityGroup (Async) represents an Affinity Group to be deleted. +type DeleteAffinityGroup struct { + ID *UUID `json:"id,omitempty" doc:"The ID of the Affinity Group. Mutually exclusive with name parameter"` + Name string `json:"name,omitempty" doc:"The name of the Affinity Group. Mutually exclusive with ID parameter"` + _ bool `name:"deleteAffinityGroup" description:"Deletes Affinity Group"` +} + +// Response returns the struct to unmarshal. +func (DeleteAffinityGroup) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job. +func (DeleteAffinityGroup) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +//go:generate go run generate/main.go -interface=Listable ListAffinityGroups + +// ListAffinityGroups represents an Affinity Groups search. +type ListAffinityGroups struct { + ID *UUID `json:"id,omitempty" doc:"List the Affinity Group by the ID provided"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"Lists Affinity Groups by name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + Type string `json:"type,omitempty" doc:"Lists Affinity Groups by type"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"Lists Affinity Groups by virtual machine ID"` + _ bool `name:"listAffinityGroups" description:"Lists Affinity Groups"` +} + +// ListAffinityGroupsResponse represents a list of Affinity Groups. +type ListAffinityGroupsResponse struct { + Count int `json:"count"` + AffinityGroup []AffinityGroup `json:"affinitygroup"` +} + +// ListAffinityGroupTypes represents an Affinity Groups types search. +type ListAffinityGroupTypes struct { + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + _ bool `name:"listAffinityGroupTypes" description:"Lists Affinity Group types available"` +} + +// Response returns the struct to unmarshal. +func (ListAffinityGroupTypes) Response() interface{} { + return new(ListAffinityGroupTypesResponse) +} + +// ListAffinityGroupTypesResponse represents a list of Affinity Group types. +type ListAffinityGroupTypesResponse struct { + Count int `json:"count"` + AffinityGroupType []AffinityGroupType `json:"affinitygrouptype"` +} diff --git a/vendor/github.com/exoscale/egoscale/affinitygroups_response.go b/vendor/github.com/exoscale/egoscale/affinitygroups_response.go new file mode 100644 index 000000000..606598887 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/affinitygroups_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal. +func (ListAffinityGroups) Response() interface{} { + return new(ListAffinityGroupsResponse) +} + +// ListRequest returns itself. +func (ls *ListAffinityGroups) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current page. +func (ls *ListAffinityGroups) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size. +func (ls *ListAffinityGroups) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue. +func (ListAffinityGroups) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListAffinityGroupsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListAffinityGroupsResponse was expected, got %T", resp)) + return + } + + for i := range items.AffinityGroup { + if !callback(&items.AffinityGroup[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/antiaffinity_groups.go b/vendor/github.com/exoscale/egoscale/antiaffinity_groups.go new file mode 100644 index 000000000..bc3d6928c --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/antiaffinity_groups.go @@ -0,0 +1,103 @@ +package egoscale + +import ( + "context" + "fmt" + "net/url" +) + +// AntiAffinityGroup represents an Anti-Affinity Group. +type AntiAffinityGroup struct { + Account string `json:"account,omitempty" doc:"the account owning the Anti-Affinity Group"` + Description string `json:"description,omitempty" doc:"the description of the Anti-Affinity Group"` + ID *UUID `json:"id,omitempty" doc:"the ID of the Anti-Affinity Group"` + Name string `json:"name,omitempty" doc:"the name of the Anti-Affinity Group"` + Type string `json:"type,omitempty" doc:"the type of the Anti-Affinity Group"` + VirtualMachineIDs []UUID `json:"virtualmachineIds,omitempty" doc:"virtual machine IDs associated with this Anti-Affinity Group"` +} + +// ListRequest builds the ListAntiAffinityGroups request. +func (ag AntiAffinityGroup) ListRequest() (ListCommand, error) { + return &ListAffinityGroups{ + ID: ag.ID, + Name: ag.Name, + }, nil +} + +// Delete deletes the given Anti-Affinity Group. +func (ag AntiAffinityGroup) Delete(ctx context.Context, client *Client) error { + if ag.ID == nil && ag.Name == "" { + return fmt.Errorf("an Anti-Affinity Group may only be deleted using ID or Name") + } + + req := &DeleteAffinityGroup{} + + if ag.ID != nil { + req.ID = ag.ID + } else { + req.Name = ag.Name + } + + return client.BooleanRequestWithContext(ctx, req) +} + +// CreateAntiAffinityGroup represents an Anti-Affinity Group creation. +type CreateAntiAffinityGroup struct { + Name string `json:"name" doc:"Name of the Anti-Affinity Group"` + Description string `json:"description,omitempty" doc:"Optional description of the Anti-Affinity Group"` + _ bool `name:"createAntiAffinityGroup" description:"Creates an Anti-Affinity Group"` +} + +func (req CreateAntiAffinityGroup) onBeforeSend(params url.Values) error { + // Name must be set, but can be empty. + if req.Name == "" { + params.Set("name", "") + } + return nil +} + +// Response returns the struct to unmarshal. +func (CreateAntiAffinityGroup) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job. +func (CreateAntiAffinityGroup) AsyncResponse() interface{} { + return new(AffinityGroup) +} + +//go:generate go run generate/main.go -interface=Listable ListAntiAffinityGroups + +// ListAntiAffinityGroups represents an Anti-Affinity Groups search. +type ListAntiAffinityGroups struct { + ID *UUID `json:"id,omitempty" doc:"List the Anti-Affinity Group by the ID provided"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"Lists Anti-Affinity Groups by name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"Lists Anti-Affinity Groups by virtual machine ID"` + _ bool `name:"listAntiAffinityGroups" description:"Lists Anti-Affinity Groups"` +} + +// ListAntiAffinityGroupsResponse represents a list of Anti-Affinity Groups. +type ListAntiAffinityGroupsResponse struct { + Count int `json:"count"` + AntiAffinityGroup []AffinityGroup `json:"antiaffinitygroup"` +} + +// DeleteAntiAffinityGroup (Async) represents an Anti-Affinity Group to be deleted. +type DeleteAntiAffinityGroup struct { + ID *UUID `json:"id,omitempty" doc:"The ID of the Anti-Affinity Group. Mutually exclusive with name parameter"` + Name string `json:"name,omitempty" doc:"The name of the Anti-Affinity Group. Mutually exclusive with ID parameter"` + _ bool `name:"deleteAntiAffinityGroup" description:"Deletes Anti-Affinity Group"` +} + +// Response returns the struct to unmarshal. +func (DeleteAntiAffinityGroup) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job. +func (DeleteAntiAffinityGroup) AsyncResponse() interface{} { + return new(BooleanResponse) +} diff --git a/vendor/github.com/exoscale/egoscale/antiaffinity_groups_response.go b/vendor/github.com/exoscale/egoscale/antiaffinity_groups_response.go new file mode 100644 index 000000000..153516be2 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/antiaffinity_groups_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal. +func (ListAntiAffinityGroups) Response() interface{} { + return new(ListAntiAffinityGroupsResponse) +} + +// ListRequest returns itself. +func (ls *ListAntiAffinityGroups) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current page. +func (ls *ListAntiAffinityGroups) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size. +func (ls *ListAntiAffinityGroups) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue. +func (ListAntiAffinityGroups) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListAntiAffinityGroupsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListAntiAffinityGroupsResponse was expected, got %T", resp)) + return + } + + for i := range items.AntiAffinityGroup { + if !callback(&items.AntiAffinityGroup[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/apis.go b/vendor/github.com/exoscale/egoscale/apis.go new file mode 100644 index 000000000..098a03761 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/apis.go @@ -0,0 +1,48 @@ +package egoscale + +// API represents an API service +type API struct { + Description string `json:"description,omitempty" doc:"description of the api"` + IsAsync bool `json:"isasync" doc:"true if api is asynchronous"` + Name string `json:"name,omitempty" doc:"the name of the api command"` + Related string `json:"related,omitempty" doc:"comma separated related apis"` + Since string `json:"since,omitempty" doc:"version of CloudStack the api was introduced in"` + Type string `json:"type,omitempty" doc:"response field type"` + Params []APIParam `json:"params,omitempty" doc:"the list params the api accepts"` + Response []APIField `json:"response,omitempty" doc:"api response fields"` +} + +// APIParam represents an API parameter field +type APIParam struct { + Description string `json:"description"` + Length int64 `json:"length"` + Name string `json:"name"` + Required bool `json:"required"` + Since string `json:"since,omitempty"` + Type string `json:"type"` +} + +// APIField represents an API response field +type APIField struct { + Description string `json:"description"` + Name string `json:"name"` + Response []APIField `json:"response,omitempty"` + Type string `json:"type"` +} + +// ListAPIs represents a query to list the api +type ListAPIs struct { + Name string `json:"name,omitempty" doc:"API name"` + _ bool `name:"listApis" description:"lists all available apis on the server"` +} + +// ListAPIsResponse represents a list of API +type ListAPIsResponse struct { + Count int `json:"count"` + API []API `json:"api"` +} + +// Response returns the struct to unmarshal +func (*ListAPIs) Response() interface{} { + return new(ListAPIsResponse) +} diff --git a/vendor/github.com/exoscale/egoscale/async_jobs.go b/vendor/github.com/exoscale/egoscale/async_jobs.go new file mode 100644 index 000000000..ab4b52cff --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/async_jobs.go @@ -0,0 +1,138 @@ +package egoscale + +import ( + "encoding/json" + "errors" +) + +// AsyncJobResult represents an asynchronous job result +type AsyncJobResult struct { + AccountID *UUID `json:"accountid,omitempty" doc:"the account that executed the async command"` + Cmd string `json:"cmd,omitempty" doc:"the async command executed"` + Created string `json:"created,omitempty" doc:"the created date of the job"` + JobID *UUID `json:"jobid" doc:"extra field for the initial async call"` + JobInstanceID *UUID `json:"jobinstanceid,omitempty" doc:"the unique ID of the instance/entity object related to the job"` + JobInstanceType string `json:"jobinstancetype,omitempty" doc:"the instance/entity object related to the job"` + JobProcStatus int `json:"jobprocstatus,omitempty" doc:"the progress information of the PENDING job"` + JobResult *json.RawMessage `json:"jobresult,omitempty" doc:"the result reason"` + JobResultCode int `json:"jobresultcode,omitempty" doc:"the result code for the job"` + JobResultType string `json:"jobresulttype,omitempty" doc:"the result type"` + JobStatus JobStatusType `json:"jobstatus,omitempty" doc:"the current job status-should be 0 for PENDING"` + UserID *UUID `json:"userid,omitempty" doc:"the user that executed the async command"` +} + +// DeepCopy create a true copy of the receiver. +func (a *AsyncJobResult) DeepCopy() *AsyncJobResult { + if a == nil { + return nil + } + + return &AsyncJobResult{ + AccountID: a.AccountID.DeepCopy(), + Cmd: a.Cmd, + Created: a.Created, + JobID: a.JobID.DeepCopy(), + JobInstanceID: a.JobInstanceID.DeepCopy(), + JobInstanceType: a.JobInstanceType, + JobProcStatus: a.JobProcStatus, + JobResult: a.JobResult, + JobResultCode: a.JobResultCode, + JobResultType: a.JobResultType, + JobStatus: a.JobStatus, + UserID: a.UserID.DeepCopy(), + } +} + +// DeepCopyInto copies the receiver into out. +// +// In (a) must be non nil. out must be non nil +func (a *AsyncJobResult) DeepCopyInto(out *AsyncJobResult) { + *out = AsyncJobResult{ + AccountID: a.AccountID.DeepCopy(), + Cmd: a.Cmd, + Created: a.Created, + JobID: a.JobID.DeepCopy(), + JobInstanceID: a.JobInstanceID.DeepCopy(), + JobInstanceType: a.JobInstanceType, + JobProcStatus: a.JobProcStatus, + JobResult: a.JobResult, + JobResultCode: a.JobResultCode, + JobResultType: a.JobResultType, + JobStatus: a.JobStatus, + UserID: a.UserID.DeepCopy(), + } +} + +// ListRequest buils the (empty) ListAsyncJobs request +func (a AsyncJobResult) ListRequest() (ListCommand, error) { + req := &ListAsyncJobs{ + StartDate: a.Created, + } + + return req, nil +} + +// Error builds an error message from the result +func (a AsyncJobResult) Error() error { + r := new(ErrorResponse) + if e := json.Unmarshal(*a.JobResult, r); e != nil { + return e + } + return r +} + +// QueryAsyncJobResult represents a query to fetch the status of async job +type QueryAsyncJobResult struct { + JobID *UUID `json:"jobid" doc:"the ID of the asynchronous job"` + _ bool `name:"queryAsyncJobResult" description:"Retrieves the current status of asynchronous job."` +} + +// Response returns the struct to unmarshal +func (QueryAsyncJobResult) Response() interface{} { + return new(AsyncJobResult) +} + +//go:generate go run generate/main.go -interface=Listable ListAsyncJobs + +// ListAsyncJobs list the asynchronous jobs +type ListAsyncJobs struct { + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + StartDate string `json:"startdate,omitempty" doc:"the start date of the async job"` + _ bool `name:"listAsyncJobs" description:"Lists all pending asynchronous jobs for the account."` +} + +// ListAsyncJobsResponse represents a list of job results +type ListAsyncJobsResponse struct { + Count int `json:"count"` + AsyncJob []AsyncJobResult `json:"asyncjobs"` +} + +// Result unmarshals the result of an AsyncJobResult into the given interface +func (a AsyncJobResult) Result(i interface{}) error { + if a.JobStatus == Failure { + return a.Error() + } + + if a.JobStatus == Success { + m := map[string]json.RawMessage{} + err := json.Unmarshal(*(a.JobResult), &m) + + if err == nil { + if len(m) >= 1 { + if _, ok := m["success"]; ok { + return json.Unmarshal(*(a.JobResult), i) + } + + // otherwise, pick the first key + for k := range m { + return json.Unmarshal(m[k], i) + } + } + return errors.New("empty response") + } + } + + return nil +} diff --git a/vendor/github.com/exoscale/egoscale/asyncjobs_response.go b/vendor/github.com/exoscale/egoscale/asyncjobs_response.go new file mode 100644 index 000000000..e4744e8bd --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/asyncjobs_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListAsyncJobs) Response() interface{} { + return new(ListAsyncJobsResponse) +} + +// ListRequest returns itself +func (ls *ListAsyncJobs) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListAsyncJobs) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListAsyncJobs) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListAsyncJobs) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListAsyncJobsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListAsyncJobsResponse was expected, got %T", resp)) + return + } + + for i := range items.AsyncJob { + if !callback(&items.AsyncJob[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/cidr.go b/vendor/github.com/exoscale/egoscale/cidr.go new file mode 100644 index 000000000..74c054b71 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/cidr.go @@ -0,0 +1,62 @@ +package egoscale + +import ( + "bytes" + "encoding/json" + "fmt" + "net" +) + +// CIDR represents a nicely JSON serializable net.IPNet +type CIDR struct { + net.IPNet +} + +// UnmarshalJSON unmarshals the raw JSON into the MAC address +func (cidr *CIDR) UnmarshalJSON(b []byte) error { + var s string + if err := json.Unmarshal(b, &s); err != nil { + return err + } + c, err := ParseCIDR(s) + if err != nil { + return err + } + *cidr = CIDR{c.IPNet} + + return nil +} + +// MarshalJSON converts the CIDR to a string representation +func (cidr CIDR) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf("%q", cidr)), nil +} + +// String returns the string representation of a CIDR +func (cidr CIDR) String() string { + return cidr.IPNet.String() +} + +// ParseCIDR parses a CIDR from a string +func ParseCIDR(s string) (*CIDR, error) { + _, net, err := net.ParseCIDR(s) + if err != nil { + return nil, err + } + return &CIDR{*net}, nil +} + +// MustParseCIDR forces parseCIDR or panics +func MustParseCIDR(s string) *CIDR { + cidr, err := ParseCIDR(s) + if err != nil { + panic(err) + } + + return cidr +} + +// Equal compare two CIDR +func (cidr CIDR) Equal(c CIDR) bool { + return (cidr.IPNet.IP.Equal(c.IPNet.IP) && bytes.Equal(cidr.IPNet.Mask, c.IPNet.Mask)) +} diff --git a/vendor/github.com/exoscale/egoscale/client.go b/vendor/github.com/exoscale/egoscale/client.go new file mode 100644 index 000000000..97a747c0b --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/client.go @@ -0,0 +1,484 @@ +package egoscale + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "net/http/httputil" + "os" + "reflect" + "runtime" + "time" + + v2 "github.com/exoscale/egoscale/v2" +) + +const ( + // DefaultTimeout represents the default API client HTTP request timeout. + DefaultTimeout = 60 * time.Second +) + +// UserAgent is the "User-Agent" HTTP request header added to outgoing HTTP requests. +var UserAgent = fmt.Sprintf("egoscale/%s (%s; %s/%s)", + Version, + runtime.Version(), + runtime.GOOS, + runtime.GOARCH) + +// Taggable represents a resource to which tags can be attached +// +// This is a helper to fill the resourcetype of a CreateTags call +type Taggable interface { + // ResourceType is the name of the Taggable type + ResourceType() string +} + +// Deletable represents an Interface that can be "Delete" by the client +type Deletable interface { + // Delete removes the given resource(s) or throws + Delete(context context.Context, client *Client) error +} + +// Listable represents an Interface that can be "List" by the client +type Listable interface { + // ListRequest builds the list command + ListRequest() (ListCommand, error) +} + +// Client represents the API client +type Client struct { + // HTTPClient holds the HTTP client + HTTPClient *http.Client + // Endpoint is the HTTP URL + Endpoint string + // APIKey is the API identifier + APIKey string + // apisecret is the API secret, hence non exposed + apiSecret string + // PageSize represents the default size for a paginated result + PageSize int + // Timeout represents the default timeout for the async requests + Timeout time.Duration + // Expiration representation how long a signed payload may be used + Expiration time.Duration + // RetryStrategy represents the waiting strategy for polling the async requests + RetryStrategy RetryStrategyFunc + // Logger contains any log, plug your own + Logger *log.Logger + + // noV2 represents a flag disabling v2.Client embedding. + noV2 bool + + // Public API secondary client + *v2.Client +} + +// RetryStrategyFunc represents a how much time to wait between two calls to the API +type RetryStrategyFunc func(int64) time.Duration + +// IterateItemFunc represents the callback to iterate a list of results, if false stops +type IterateItemFunc func(interface{}, error) bool + +// WaitAsyncJobResultFunc represents the callback to wait a results of an async request, if false stops +type WaitAsyncJobResultFunc func(*AsyncJobResult, error) bool + +// ClientOpt represents a new Client option. +type ClientOpt func(*Client) + +// WithHTTPClient overrides the Client's default HTTP client. +func WithHTTPClient(hc *http.Client) ClientOpt { + return func(c *Client) { c.HTTPClient = hc } +} + +// WithTimeout overrides the Client's default timeout value (DefaultTimeout). +func WithTimeout(d time.Duration) ClientOpt { + return func(c *Client) { c.Timeout = d } +} + +// WithTrace enables the Client's HTTP request tracing. +func WithTrace() ClientOpt { + return func(c *Client) { c.TraceOn() } +} + +// WithoutV2Client disables implicit v2.Client embedding. +func WithoutV2Client() ClientOpt { + return func(c *Client) { c.noV2 = true } +} + +// NewClient creates an Exoscale API client. +// Note: unless the WithoutV2Client() ClientOpt is passed, this function +// initializes a v2.Client embedded into the returned *Client struct +// inheriting the Exoscale API credentials, endpoint and timeout value, but +// not the custom http.Client. The 2 clients must not share the same +// *http.Client, as it can cause middleware clashes. +func NewClient(endpoint, apiKey, apiSecret string, opts ...ClientOpt) *Client { + client := &Client{ + HTTPClient: &http.Client{ + Transport: &defaultTransport{next: http.DefaultTransport}, + }, + Endpoint: endpoint, + APIKey: apiKey, + apiSecret: apiSecret, + PageSize: 50, + Timeout: DefaultTimeout, + Expiration: 10 * time.Minute, + RetryStrategy: MonotonicRetryStrategyFunc(2), + Logger: log.New(ioutil.Discard, "", 0), + } + + for _, opt := range opts { + opt(client) + } + + if prefix, ok := os.LookupEnv("EXOSCALE_TRACE"); ok { + client.Logger = log.New(os.Stderr, prefix, log.LstdFlags) + client.TraceOn() + } + + if !client.noV2 { + v2Client, err := v2.NewClient( + client.APIKey, + client.apiSecret, + v2.ClientOptWithAPIEndpoint(client.Endpoint), + v2.ClientOptWithTimeout(client.Timeout), + + // Don't use v2.ClientOptWithHTTPClient() with the root API client's http.Client, as the + // v2.Client uses HTTP middleware that can break callers that expect CS-compatible error + // responses. + ) + if err != nil { + panic(fmt.Sprintf("unable to initialize API V2 client: %s", err)) + } + client.Client = v2Client + } + + return client +} + +// Do implemements the v2.HttpRequestDoer interface in order to intercept HTTP response before the +// generated code closes its body, giving us a chance to return meaningful error messages from the API. +// This is only relevant for API v2 operations. +func (c *Client) Do(req *http.Request) (*http.Response, error) { + resp, err := c.HTTPClient.Do(req) + if err != nil { + // If the request returned a Go error don't bother analyzing the response + // body, as there probably won't be any (e.g. connection timeout/refused). + return resp, err + } + + if resp.StatusCode >= 400 && resp.StatusCode <= 599 { + var res struct { + Message string `json:"message"` + } + + data, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("error reading response body: %s", err) + } + + if json.Valid(data) { + if err = json.Unmarshal(data, &res); err != nil { + return nil, fmt.Errorf("error unmarshaling response: %s", err) + } + } else { + res.Message = string(data) + } + + switch { + case resp.StatusCode == http.StatusNotFound: + return nil, ErrNotFound + + case resp.StatusCode >= 400 && resp.StatusCode < 500: + return nil, fmt.Errorf("%w: %s", ErrInvalidRequest, res.Message) + + case resp.StatusCode >= 500: + return nil, fmt.Errorf("%w: %s", ErrAPIError, res.Message) + } + } + + return resp, nil +} + +// Get populates the given resource or fails +func (c *Client) Get(ls Listable) (interface{}, error) { + ctx, cancel := context.WithTimeout(context.Background(), c.Timeout) + defer cancel() + + return c.GetWithContext(ctx, ls) +} + +// GetWithContext populates the given resource or fails +func (c *Client) GetWithContext(ctx context.Context, ls Listable) (interface{}, error) { + gs, err := c.ListWithContext(ctx, ls) + if err != nil { + return nil, err + } + + switch len(gs) { + case 0: + return nil, ErrNotFound + + case 1: + return gs[0], nil + + default: + return nil, ErrTooManyFound + } +} + +// Delete removes the given resource of fails +func (c *Client) Delete(g Deletable) error { + ctx, cancel := context.WithTimeout(context.Background(), c.Timeout) + defer cancel() + + return c.DeleteWithContext(ctx, g) +} + +// DeleteWithContext removes the given resource of fails +func (c *Client) DeleteWithContext(ctx context.Context, g Deletable) error { + return g.Delete(ctx, c) +} + +// List lists the given resource (and paginate till the end) +func (c *Client) List(g Listable) ([]interface{}, error) { + ctx, cancel := context.WithTimeout(context.Background(), c.Timeout) + defer cancel() + + return c.ListWithContext(ctx, g) +} + +// ListWithContext lists the given resources (and paginate till the end) +func (c *Client) ListWithContext(ctx context.Context, g Listable) (s []interface{}, err error) { + s = make([]interface{}, 0) + + defer func() { + if e := recover(); e != nil { + if g == nil || reflect.ValueOf(g).IsNil() { + err = fmt.Errorf("g Listable shouldn't be nil, got %#v", g) + return + } + + panic(e) + } + }() + + req, e := g.ListRequest() + if e != nil { + err = e + return + } + c.PaginateWithContext(ctx, req, func(item interface{}, e error) bool { + if item != nil { + s = append(s, item) + return true + } + err = e + return false + }) + + return +} + +func (c *Client) AsyncListWithContext(ctx context.Context, g Listable) (<-chan interface{}, <-chan error) { + outChan := make(chan interface{}, c.PageSize) + errChan := make(chan error) + + go func() { + defer close(outChan) + defer close(errChan) + + req, err := g.ListRequest() + if err != nil { + errChan <- err + return + } + c.PaginateWithContext(ctx, req, func(item interface{}, e error) bool { + if item != nil { + outChan <- item + return true + } + errChan <- e + return false + }) + }() + + return outChan, errChan +} + +// Paginate runs the ListCommand and paginates +func (c *Client) Paginate(g Listable, callback IterateItemFunc) { + ctx, cancel := context.WithTimeout(context.Background(), c.Timeout) + defer cancel() + + c.PaginateWithContext(ctx, g, callback) +} + +// PaginateWithContext runs the ListCommand as long as the ctx is valid +func (c *Client) PaginateWithContext(ctx context.Context, g Listable, callback IterateItemFunc) { + req, err := g.ListRequest() + if err != nil { + callback(nil, err) + return + } + + pageSize := c.PageSize + + page := 1 + + for { + req.SetPage(page) + req.SetPageSize(pageSize) + resp, err := c.RequestWithContext(ctx, req) + if err != nil { + // in case of 431, the response is knowingly empty + if errResponse, ok := err.(*ErrorResponse); ok && page == 1 && errResponse.ErrorCode == ParamError { + break + } + + callback(nil, err) + break + } + + size := 0 + didErr := false + req.Each(resp, func(element interface{}, err error) bool { + // If the context was cancelled, kill it in flight + if e := ctx.Err(); e != nil { + element = nil + err = e + } + + if callback(element, err) { + size++ + return true + } + + didErr = true + return false + }) + + if size < pageSize || didErr { + break + } + + page++ + } +} + +// APIName returns the name of the given command +func (c *Client) APIName(command Command) string { + // This is due to a limitation of Go<=1.7 + _, ok := command.(*AuthorizeSecurityGroupEgress) + _, okPtr := command.(AuthorizeSecurityGroupEgress) + if ok || okPtr { + return "authorizeSecurityGroupEgress" + } + + info, err := info(command) + if err != nil { + panic(err) + } + return info.Name +} + +// APIDescription returns the description of the given command +func (c *Client) APIDescription(command Command) string { + info, err := info(command) + if err != nil { + return "*missing description*" + } + return info.Description +} + +// Response returns the response structure of the given command +func (c *Client) Response(command Command) interface{} { + switch c := command.(type) { + case AsyncCommand: + return c.AsyncResponse() + default: + return command.Response() + } +} + +// TraceOn activates the HTTP tracer +func (c *Client) TraceOn() { + if _, ok := c.HTTPClient.Transport.(*traceTransport); !ok { + c.HTTPClient.Transport = &traceTransport{ + next: c.HTTPClient.Transport, + logger: c.Logger, + } + } +} + +// TraceOff deactivates the HTTP tracer +func (c *Client) TraceOff() { + if rt, ok := c.HTTPClient.Transport.(*traceTransport); ok { + c.HTTPClient.Transport = rt.next + } +} + +// defaultTransport is the default HTTP client transport. +type defaultTransport struct { + next http.RoundTripper +} + +// RoundTrip executes a single HTTP transaction while augmenting requests with custom headers. +func (t *defaultTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req.Header.Add("User-Agent", UserAgent) + + resp, err := t.next.RoundTrip(req) + if err != nil { + return nil, err + } + + return resp, nil +} + +// traceTransport is a client HTTP middleware that dumps HTTP requests and responses content to a logger. +type traceTransport struct { + logger *log.Logger + next http.RoundTripper +} + +// RoundTrip executes a single HTTP transaction +func (t *traceTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req.Header.Add("User-Agent", UserAgent) + + if dump, err := httputil.DumpRequest(req, true); err == nil { + t.logger.Printf("%s", dump) + } + + resp, err := t.next.RoundTrip(req) + if err != nil { + return nil, err + } + + if dump, err := httputil.DumpResponse(resp, true); err == nil { + t.logger.Printf("%s", dump) + } + + return resp, nil +} + +// MonotonicRetryStrategyFunc returns a function that waits for n seconds for each iteration +func MonotonicRetryStrategyFunc(seconds int) RetryStrategyFunc { + return func(iteration int64) time.Duration { + return time.Duration(seconds) * time.Second + } +} + +// FibonacciRetryStrategy waits for an increasing amount of time following the Fibonacci sequence +func FibonacciRetryStrategy(iteration int64) time.Duration { + var a, b, i, tmp int64 + a = 0 + b = 1 + for i = 0; i < iteration; i++ { + tmp = a + b + a = b + b = tmp + } + return time.Duration(a) * time.Second +} diff --git a/vendor/github.com/exoscale/egoscale/cserrorcode_string.go b/vendor/github.com/exoscale/egoscale/cserrorcode_string.go new file mode 100644 index 000000000..7bfb42100 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/cserrorcode_string.go @@ -0,0 +1,83 @@ +// Code generated by "stringer -type CSErrorCode"; DO NOT EDIT. + +package egoscale + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[CloudRuntimeException-4250] + _ = x[ExecutionException-4260] + _ = x[HypervisorVersionChangedException-4265] + _ = x[CloudException-4275] + _ = x[AccountLimitException-4280] + _ = x[AgentUnavailableException-4285] + _ = x[CloudAuthenticationException-4290] + _ = x[ConcurrentOperationException-4300] + _ = x[ConflictingNetworkSettingsException-4305] + _ = x[DiscoveredWithErrorException-4310] + _ = x[HAStateException-4315] + _ = x[InsufficientAddressCapacityException-4320] + _ = x[InsufficientCapacityException-4325] + _ = x[InsufficientNetworkCapacityException-4330] + _ = x[InsufficientServerCapacityException-4335] + _ = x[InsufficientStorageCapacityException-4340] + _ = x[InternalErrorException-4345] + _ = x[InvalidParameterValueException-4350] + _ = x[ManagementServerException-4355] + _ = x[NetworkRuleConflictException-4360] + _ = x[PermissionDeniedException-4365] + _ = x[ResourceAllocationException-4370] + _ = x[ResourceInUseException-4375] + _ = x[ResourceUnavailableException-4380] + _ = x[StorageUnavailableException-4385] + _ = x[UnsupportedServiceException-4390] + _ = x[VirtualMachineMigrationException-4395] + _ = x[AsyncCommandQueued-4540] + _ = x[RequestLimitException-4545] + _ = x[ServerAPIException-9999] +} + +const _CSErrorCode_name = "CloudRuntimeExceptionExecutionExceptionHypervisorVersionChangedExceptionCloudExceptionAccountLimitExceptionAgentUnavailableExceptionCloudAuthenticationExceptionConcurrentOperationExceptionConflictingNetworkSettingsExceptionDiscoveredWithErrorExceptionHAStateExceptionInsufficientAddressCapacityExceptionInsufficientCapacityExceptionInsufficientNetworkCapacityExceptionInsufficientServerCapacityExceptionInsufficientStorageCapacityExceptionInternalErrorExceptionInvalidParameterValueExceptionManagementServerExceptionNetworkRuleConflictExceptionPermissionDeniedExceptionResourceAllocationExceptionResourceInUseExceptionResourceUnavailableExceptionStorageUnavailableExceptionUnsupportedServiceExceptionVirtualMachineMigrationExceptionAsyncCommandQueuedRequestLimitExceptionServerAPIException" + +var _CSErrorCode_map = map[CSErrorCode]string{ + 4250: _CSErrorCode_name[0:21], + 4260: _CSErrorCode_name[21:39], + 4265: _CSErrorCode_name[39:72], + 4275: _CSErrorCode_name[72:86], + 4280: _CSErrorCode_name[86:107], + 4285: _CSErrorCode_name[107:132], + 4290: _CSErrorCode_name[132:160], + 4300: _CSErrorCode_name[160:188], + 4305: _CSErrorCode_name[188:223], + 4310: _CSErrorCode_name[223:251], + 4315: _CSErrorCode_name[251:267], + 4320: _CSErrorCode_name[267:303], + 4325: _CSErrorCode_name[303:332], + 4330: _CSErrorCode_name[332:368], + 4335: _CSErrorCode_name[368:403], + 4340: _CSErrorCode_name[403:439], + 4345: _CSErrorCode_name[439:461], + 4350: _CSErrorCode_name[461:491], + 4355: _CSErrorCode_name[491:516], + 4360: _CSErrorCode_name[516:544], + 4365: _CSErrorCode_name[544:569], + 4370: _CSErrorCode_name[569:596], + 4375: _CSErrorCode_name[596:618], + 4380: _CSErrorCode_name[618:646], + 4385: _CSErrorCode_name[646:673], + 4390: _CSErrorCode_name[673:700], + 4395: _CSErrorCode_name[700:732], + 4540: _CSErrorCode_name[732:750], + 4545: _CSErrorCode_name[750:771], + 9999: _CSErrorCode_name[771:789], +} + +func (i CSErrorCode) String() string { + if str, ok := _CSErrorCode_map[i]; ok { + return str + } + return "CSErrorCode(" + strconv.FormatInt(int64(i), 10) + ")" +} diff --git a/vendor/github.com/exoscale/egoscale/dns.go b/vendor/github.com/exoscale/egoscale/dns.go new file mode 100644 index 000000000..3d3af4078 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/dns.go @@ -0,0 +1,364 @@ +package egoscale + +import ( + "context" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "strings" +) + +// DNSDomain represents a domain +type DNSDomain struct { + ID int64 `json:"id"` + Name string `json:"name"` + UnicodeName string `json:"unicode_name"` + Token string `json:"token"` + State string `json:"state"` + Language string `json:"language,omitempty"` + Lockable bool `json:"lockable"` + AutoRenew bool `json:"auto_renew"` + WhoisProtected bool `json:"whois_protected"` + RecordCount int64 `json:"record_count"` + ServiceCount int64 `json:"service_count"` + ExpiresOn string `json:"expires_on,omitempty"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` +} + +// DNSDomainResponse represents a domain creation response +type DNSDomainResponse struct { + Domain *DNSDomain `json:"domain"` +} + +// DNSRecord represents a DNS record +type DNSRecord struct { + ID int64 `json:"id,omitempty"` + DomainID int64 `json:"domain_id,omitempty"` + Name string `json:"name"` + TTL int `json:"ttl,omitempty"` + CreatedAt string `json:"created_at,omitempty"` + UpdatedAt string `json:"updated_at,omitempty"` + Content string `json:"content"` + RecordType string `json:"record_type"` + Prio int `json:"prio,omitempty"` +} + +// DNSRecordResponse represents the creation of a DNS record +type DNSRecordResponse struct { + Record DNSRecord `json:"record"` +} + +// UpdateDNSRecord represents a DNS record +type UpdateDNSRecord struct { + ID int64 `json:"id,omitempty"` + DomainID int64 `json:"domain_id,omitempty"` + Name string `json:"name,omitempty"` + TTL int `json:"ttl,omitempty"` + CreatedAt string `json:"created_at,omitempty"` + UpdatedAt string `json:"updated_at,omitempty"` + Content string `json:"content,omitempty"` + RecordType string `json:"record_type,omitempty"` + Prio int `json:"prio,omitempty"` +} + +// UpdateDNSRecordResponse represents the creation of a DNS record +type UpdateDNSRecordResponse struct { + Record UpdateDNSRecord `json:"record"` +} + +// DNSErrorResponse represents an error in the API +type DNSErrorResponse struct { + Message string `json:"message,omitempty"` + Errors map[string][]string `json:"errors"` +} + +// Record represent record type +type Record int + +//go:generate stringer -type=Record +const ( + // A record type + A Record = iota + // AAAA record type + AAAA + // ALIAS record type + ALIAS + // CNAME record type + CNAME + // HINFO record type + HINFO + // MX record type + MX + // NAPTR record type + NAPTR + // NS record type + NS + // POOL record type + POOL + // SPF record type + SPF + // SRV record type + SRV + // SSHFP record type + SSHFP + // TXT record type + TXT + // URL record type + URL +) + +// Error formats the DNSerror into a string +func (req *DNSErrorResponse) Error() string { + if len(req.Errors) > 0 { + errs := []string{} + for name, ss := range req.Errors { + if len(ss) > 0 { + errs = append(errs, fmt.Sprintf("%s: %s", name, strings.Join(ss, ", "))) + } + } + return fmt.Sprintf("dns error: %s (%s)", req.Message, strings.Join(errs, "; ")) + } + return fmt.Sprintf("dns error: %s", req.Message) +} + +// CreateDomain creates a DNS domain +func (client *Client) CreateDomain(ctx context.Context, name string) (*DNSDomain, error) { + m, err := json.Marshal(DNSDomainResponse{ + Domain: &DNSDomain{ + Name: name, + }, + }) + if err != nil { + return nil, err + } + + resp, err := client.dnsRequest(ctx, "/v1/domains", nil, string(m), "POST") + if err != nil { + return nil, err + } + + var d *DNSDomainResponse + if err := json.Unmarshal(resp, &d); err != nil { + return nil, err + } + + return d.Domain, nil +} + +// GetDomain gets a DNS domain +func (client *Client) GetDomain(ctx context.Context, name string) (*DNSDomain, error) { + resp, err := client.dnsRequest(ctx, "/v1/domains/"+name, nil, "", "GET") + if err != nil { + return nil, err + } + + var d *DNSDomainResponse + if err := json.Unmarshal(resp, &d); err != nil { + return nil, err + } + + return d.Domain, nil +} + +// GetDomains gets DNS domains +func (client *Client) GetDomains(ctx context.Context) ([]DNSDomain, error) { + resp, err := client.dnsRequest(ctx, "/v1/domains", nil, "", "GET") + if err != nil { + return nil, err + } + + var d []DNSDomainResponse + if err := json.Unmarshal(resp, &d); err != nil { + return nil, err + } + + domains := make([]DNSDomain, len(d)) + for i := range d { + domains[i] = *d[i].Domain + } + return domains, nil +} + +// DeleteDomain delets a DNS domain +func (client *Client) DeleteDomain(ctx context.Context, name string) error { + _, err := client.dnsRequest(ctx, "/v1/domains/"+name, nil, "", "DELETE") + return err +} + +// GetRecord returns a DNS record +func (client *Client) GetRecord(ctx context.Context, domain string, recordID int64) (*DNSRecord, error) { + id := strconv.FormatInt(recordID, 10) + resp, err := client.dnsRequest(ctx, "/v1/domains/"+domain+"/records/"+id, nil, "", "GET") + if err != nil { + return nil, err + } + + var r DNSRecordResponse + if err = json.Unmarshal(resp, &r); err != nil { + return nil, err + } + + return &(r.Record), nil +} + +// GetRecords returns the DNS records +func (client *Client) GetRecords(ctx context.Context, domain string) ([]DNSRecord, error) { + resp, err := client.dnsRequest(ctx, "/v1/domains/"+domain+"/records", nil, "", "GET") + if err != nil { + return nil, err + } + + var r []DNSRecordResponse + if err = json.Unmarshal(resp, &r); err != nil { + return nil, err + } + + records := make([]DNSRecord, 0, len(r)) + for _, rec := range r { + records = append(records, rec.Record) + } + + return records, nil +} + +// GetRecordsWithFilters returns the DNS records (filters can be empty) +func (client *Client) GetRecordsWithFilters(ctx context.Context, domain, name, recordType string) ([]DNSRecord, error) { + + filters := url.Values{} + if name != "" { + filters.Add("name", name) + } + if recordType != "" { + filters.Add("record_type", recordType) + } + + resp, err := client.dnsRequest(ctx, "/v1/domains/"+domain+"/records", filters, "", "GET") + if err != nil { + return nil, err + } + + var r []DNSRecordResponse + if err = json.Unmarshal(resp, &r); err != nil { + return nil, err + } + + records := make([]DNSRecord, 0, len(r)) + for _, rec := range r { + records = append(records, rec.Record) + } + + return records, nil +} + +// CreateRecord creates a DNS record +func (client *Client) CreateRecord(ctx context.Context, name string, rec DNSRecord) (*DNSRecord, error) { + body, err := json.Marshal(DNSRecordResponse{ + Record: rec, + }) + if err != nil { + return nil, err + } + + resp, err := client.dnsRequest(ctx, "/v1/domains/"+name+"/records", nil, string(body), "POST") + if err != nil { + return nil, err + } + + var r DNSRecordResponse + if err = json.Unmarshal(resp, &r); err != nil { + return nil, err + } + + return &(r.Record), nil +} + +// UpdateRecord updates a DNS record +func (client *Client) UpdateRecord(ctx context.Context, name string, rec UpdateDNSRecord) (*DNSRecord, error) { + body, err := json.Marshal(UpdateDNSRecordResponse{ + Record: rec, + }) + if err != nil { + return nil, err + } + + id := strconv.FormatInt(rec.ID, 10) + resp, err := client.dnsRequest(ctx, "/v1/domains/"+name+"/records/"+id, nil, string(body), "PUT") + if err != nil { + return nil, err + } + + var r DNSRecordResponse + if err = json.Unmarshal(resp, &r); err != nil { + return nil, err + } + + return &(r.Record), nil +} + +// DeleteRecord deletes a record +func (client *Client) DeleteRecord(ctx context.Context, name string, recordID int64) error { + id := strconv.FormatInt(recordID, 10) + _, err := client.dnsRequest(ctx, "/v1/domains/"+name+"/records/"+id, nil, "", "DELETE") + + return err +} + +func (client *Client) dnsRequest(ctx context.Context, uri string, urlValues url.Values, params, method string) (json.RawMessage, error) { + rawURL := client.Endpoint + uri + url, err := url.Parse(rawURL) + if err != nil { + return nil, err + } + + q := url.Query() + for k, vs := range urlValues { + for _, v := range vs { + q.Add(k, v) + } + } + url.RawQuery = q.Encode() + + req, err := http.NewRequest(method, url.String(), strings.NewReader(params)) + if err != nil { + return nil, err + } + + var hdr = make(http.Header) + hdr.Add("X-DNS-TOKEN", client.APIKey+":"+client.apiSecret) + hdr.Add("User-Agent", UserAgent) + hdr.Add("Accept", "application/json") + if params != "" { + hdr.Add("Content-Type", "application/json") + } + req.Header = hdr + + resp, err := client.HTTPClient.Do(req.WithContext(ctx)) + if err != nil { + return nil, err + } + defer resp.Body.Close() // nolint: errcheck + + contentType := resp.Header.Get("content-type") + if !strings.Contains(contentType, "application/json") { + return nil, fmt.Errorf(`response content-type expected to be "application/json", got %q`, contentType) + } + + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + if resp.StatusCode >= 400 { + e := new(DNSErrorResponse) + if err := json.Unmarshal(b, e); err != nil { + return nil, err + } + return nil, e + } + + return b, nil +} diff --git a/vendor/github.com/exoscale/egoscale/doc.go b/vendor/github.com/exoscale/egoscale/doc.go new file mode 100644 index 000000000..ac2a1cd85 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/doc.go @@ -0,0 +1,180 @@ +/* + +Package egoscale is a mapping for the Exoscale API (https://community.exoscale.com/api/compute/). + +Requests and Responses + +To build a request, construct the adequate struct. This library expects a pointer for efficiency reasons only. The response is a struct corresponding to the data at stake. E.g. DeployVirtualMachine gives a VirtualMachine, as a pointer as well to avoid big copies. + +Then everything within the struct is not a pointer. Find below some examples of how egoscale may be used. If anything feels odd or unclear, please let us know: https://github.com/exoscale/egoscale/issues + + req := &egoscale.DeployVirtualMachine{ + Size: 10, + ServiceOfferingID: egoscale.MustParseUUID("..."), + TemplateID: egoscale.MustParseUUID("..."), + ZoneID: egoscale.MastParseUUID("..."), + } + + fmt.Println("Deployment started") + resp, err := cs.Request(req) + if err != nil { + panic(err) + } + + vm := resp.(*egoscale.VirtualMachine) + fmt.Printf("Virtual Machine ID: %s\n", vm.ID) + +This example deploys a virtual machine while controlling the job status as it goes. It enables a finer control over errors, e.g. HTTP timeout, and eventually a way to kill it of (from the client side). + + req := &egoscale.DeployVirtualMachine{ + Size: 10, + ServiceOfferingID: egoscale.MustParseUUID("..."), + TemplateID: egoscale.MustParseUUID("..."), + ZoneID: egoscale.MustParseUUID("..."), + } + vm := &egoscale.VirtualMachine{} + + fmt.Println("Deployment started") + cs.AsyncRequest(req, func(jobResult *egoscale.AsyncJobResult, err error) bool { + if err != nil { + // any kind of error + panic(err) + } + + // Keep waiting + if jobResult.JobStatus == egoscale.Pending { + fmt.Println("wait...") + return true + } + + // Unmarshal the response into the response struct + if err := jobResult.Response(vm); err != nil { + // JSON unmarshaling error + panic(err) + } + + // Stop waiting + return false + }) + + fmt.Printf("Virtual Machine ID: %s\n", vm.ID) + +Debugging and traces + +As this library is mostly an HTTP client, you can reuse all the existing tools around it. + + cs := egoscale.NewClient("https://api.exoscale.com/v1", "EXO...", "...") + // sets a logger on stderr + cs.Logger = log.New(os.Stderr, "prefix", log.LstdFlags) + // activates the HTTP traces + cs.TraceOn() + +Nota bene: when running the tests or the egoscale library via another tool, e.g. the exo cli, the environment variable EXOSCALE_TRACE=prefix does the above configuration for you. As a developer using egoscale as a library, you'll find it more convenient to plug your favorite io.Writer as it's a Logger. + + +APIs + +All the available APIs on the server and provided by the API Discovery plugin. + + cs := egoscale.NewClient("https://api.exoscale.com/v1", "EXO...", "...") + + resp, err := cs.Request(&egoscale.ListAPIs{}) + if err != nil { + panic(err) + } + + for _, api := range resp.(*egoscale.ListAPIsResponse).API { + fmt.Printf("%s %s\n", api.Name, api.Description) + } + // Output: + // listNetworks Lists all available networks + // ... + +Security Groups + +Security Groups provide a way to isolate traffic to VMs. Rules are added via the two Authorization commands. + + resp, err := cs.Request(&egoscale.CreateSecurityGroup{ + Name: "Load balancer", + Description: "Open HTTP/HTTPS ports from the outside world", + }) + securityGroup := resp.(*egoscale.SecurityGroup) + + resp, err = cs.Request(&egoscale.AuthorizeSecurityGroupIngress{ + Description: "SSH traffic", + SecurityGroupID: securityGroup.ID, + CidrList: []CIDR{ + *egoscale.MustParseCIDR("0.0.0.0/0"), + *egoscale.MustParseCIDR("::/0"), + }, + Protocol: "tcp", + StartPort: 22, + EndPort: 22, + }) + // The modified SecurityGroup is returned + securityGroup := resp.(*egoscale.SecurityGroup) + + // ... + err = client.BooleanRequest(&egoscale.DeleteSecurityGroup{ + ID: securityGroup.ID, + }) + // ... + +Security Group also implement the generic List, Get and Delete interfaces (Listable and Deletable). + + // List all Security Groups + sgs, _ := cs.List(&egoscale.SecurityGroup{}) + for _, s := range sgs { + sg := s.(egoscale.SecurityGroup) + // ... + } + + // Get a Security Group + sgQuery := &egoscale.SecurityGroup{Name: "Load balancer"} + resp, err := cs.Get(sgQuery); err != nil { + ... + } + sg := resp.(*egoscale.SecurityGroup) + + if err := cs.Delete(sg); err != nil { + ... + } + // The SecurityGroup has been deleted + +See: https://community.exoscale.com/documentation/compute/security-groups/ + +Zones + +A Zone corresponds to a Data Center. You may list them. Zone implements the Listable interface, which let you perform a list in two different ways. The first exposes the underlying request while the second one hide them and you only manipulate the structs of your interest. + + // Using ListZones request + req := &egoscale.ListZones{} + resp, err := client.Request(req) + if err != nil { + panic(err) + } + + for _, zone := range resp.(*egoscale.ListZonesResponse) { + ... + } + + // Using client.List + zone := &egoscale.Zone{} + zones, err := client.List(zone) + if err != nil { + panic(err) + } + + for _, z := range zones { + zone := z.(egoscale.Zone) + ... + } + +Elastic IPs + +An Elastic IP is a way to attach an IP address to many Virtual Machines. The API side of the story configures the external environment, like the routing. Some work is required within the machine to properly configure the interfaces. + +See: https://community.exoscale.com/documentation/compute/eip/ + +*/ +package egoscale diff --git a/vendor/github.com/exoscale/egoscale/error.go b/vendor/github.com/exoscale/egoscale/error.go new file mode 100644 index 000000000..494c8dc8d --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/error.go @@ -0,0 +1,15 @@ +package egoscale + +import "errors" + +// ErrNotFound represents an error indicating a non-existent resource. +var ErrNotFound = errors.New("resource not found") + +// ErrTooManyFound represents an error indicating multiple results found for a single resource. +var ErrTooManyFound = errors.New("multiple resources found") + +// ErrInvalidRequest represents an error indicating that the caller's request is invalid. +var ErrInvalidRequest = errors.New("invalid request") + +// ErrAPIError represents an error indicating an API-side issue. +var ErrAPIError = errors.New("API error") diff --git a/vendor/github.com/exoscale/egoscale/errorcode_string.go b/vendor/github.com/exoscale/egoscale/errorcode_string.go new file mode 100644 index 000000000..4b46b55bd --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/errorcode_string.go @@ -0,0 +1,60 @@ +// Code generated by "stringer -type ErrorCode"; DO NOT EDIT. + +package egoscale + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[Unauthorized-401] + _ = x[NotFound-404] + _ = x[MethodNotAllowed-405] + _ = x[UnsupportedActionError-422] + _ = x[APILimitExceeded-429] + _ = x[MalformedParameterError-430] + _ = x[ParamError-431] + _ = x[InternalError-530] + _ = x[AccountError-531] + _ = x[AccountResourceLimitError-532] + _ = x[InsufficientCapacityError-533] + _ = x[ResourceUnavailableError-534] + _ = x[ResourceAllocationError-535] + _ = x[ResourceInUseError-536] + _ = x[NetworkRuleConflictError-537] +} + +const ( + _ErrorCode_name_0 = "Unauthorized" + _ErrorCode_name_1 = "NotFoundMethodNotAllowed" + _ErrorCode_name_2 = "UnsupportedActionError" + _ErrorCode_name_3 = "APILimitExceededMalformedParameterErrorParamError" + _ErrorCode_name_4 = "InternalErrorAccountErrorAccountResourceLimitErrorInsufficientCapacityErrorResourceUnavailableErrorResourceAllocationErrorResourceInUseErrorNetworkRuleConflictError" +) + +var ( + _ErrorCode_index_1 = [...]uint8{0, 8, 24} + _ErrorCode_index_3 = [...]uint8{0, 16, 39, 49} + _ErrorCode_index_4 = [...]uint8{0, 13, 25, 50, 75, 99, 122, 140, 164} +) + +func (i ErrorCode) String() string { + switch { + case i == 401: + return _ErrorCode_name_0 + case 404 <= i && i <= 405: + i -= 404 + return _ErrorCode_name_1[_ErrorCode_index_1[i]:_ErrorCode_index_1[i+1]] + case i == 422: + return _ErrorCode_name_2 + case 429 <= i && i <= 431: + i -= 429 + return _ErrorCode_name_3[_ErrorCode_index_3[i]:_ErrorCode_index_3[i+1]] + case 530 <= i && i <= 537: + i -= 530 + return _ErrorCode_name_4[_ErrorCode_index_4[i]:_ErrorCode_index_4[i+1]] + default: + return "ErrorCode(" + strconv.FormatInt(int64(i), 10) + ")" + } +} diff --git a/vendor/github.com/exoscale/egoscale/events.go b/vendor/github.com/exoscale/egoscale/events.go new file mode 100644 index 000000000..c6adbfd69 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/events.go @@ -0,0 +1,76 @@ +package egoscale + +// Event represents an event in the system +type Event struct { + Account string `json:"account,omitempty" doc:"the account name for the account that owns the object being acted on in the event (e.g. the owner of the virtual machine, ip address, or security group)"` + Created string `json:"created,omitempty" doc:"the date the event was created"` + Description string `json:"description,omitempty" doc:"a brief description of the event"` + ID *UUID `json:"id" doc:"the ID of the event"` + Level string `json:"level,omitempty" doc:"the event level (INFO, WARN, ERROR)"` + ParentID *UUID `json:"parentid,omitempty" doc:"whether the event is parented"` + State string `json:"state,omitempty" doc:"the state of the event"` + Type string `json:"type,omitempty" doc:"the type of the event (see event types)"` + UserName string `json:"username,omitempty" doc:"the name of the user who performed the action (can be different from the account if an admin is performing an action for a user, e.g. starting/stopping a user's virtual machine)"` +} + +// ListRequest builds the ListEvents request +func (event Event) ListRequest() (ListCommand, error) { + req := &ListEvents{ + ID: event.ID, + Level: event.Level, + Type: event.Type, + } + + return req, nil +} + +// EventType represent a type of event +type EventType struct { + Name string `json:"name,omitempty" doc:"Event Type"` +} + +// ListRequest builds the ListEventTypes request +func (EventType) ListRequest() (ListCommand, error) { + req := &ListEventTypes{} + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListEvents + +// ListEvents list the events +type ListEvents struct { + Duration int `json:"duration,omitempty" doc:"the duration of the event"` + EndDate string `json:"enddate,omitempty" doc:"the end date range of the list you want to retrieve (use format \"yyyy-MM-dd\" or the new format \"yyyy-MM-dd HH:mm:ss\")"` + EntryTime int `json:"entrytime,omitempty" doc:"the time the event was entered"` + ID *UUID `json:"id,omitempty" doc:"the ID of the event"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Level string `json:"level,omitempty" doc:"the event level (INFO, WARN, ERROR)"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + StartDate string `json:"startdate,omitempty" doc:"the start date range of the list you want to retrieve (use format \"yyyy-MM-dd\" or the new format \"yyyy-MM-dd HH:mm:ss\")"` + Type string `json:"type,omitempty" doc:"the event type (see event types)"` + _ bool `name:"listEvents" description:"A command to list events."` +} + +// ListEventsResponse represents a response of a list query +type ListEventsResponse struct { + Count int `json:"count"` + Event []Event `json:"event"` +} + +//go:generate go run generate/main.go -interface=Listable ListEventTypes + +// ListEventTypes list the event types +type ListEventTypes struct { + Page int `json:"page,omitempty"` // fake + PageSize int `json:"pagesize,omitempty"` // fake + _ bool `name:"listEventTypes" description:"List Event Types"` +} + +// ListEventTypesResponse represents a response of a list query +type ListEventTypesResponse struct { + Count int `json:"count"` + EventType []EventType `json:"eventtype"` + _ bool `name:"listEventTypes" description:"List Event Types"` +} diff --git a/vendor/github.com/exoscale/egoscale/events_response.go b/vendor/github.com/exoscale/egoscale/events_response.go new file mode 100644 index 000000000..2af10cf45 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/events_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListEvents) Response() interface{} { + return new(ListEventsResponse) +} + +// ListRequest returns itself +func (ls *ListEvents) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListEvents) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListEvents) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListEvents) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListEventsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListEventsResponse was expected, got %T", resp)) + return + } + + for i := range items.Event { + if !callback(&items.Event[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/eventtypes_response.go b/vendor/github.com/exoscale/egoscale/eventtypes_response.go new file mode 100644 index 000000000..073d9648f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/eventtypes_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListEventTypes) Response() interface{} { + return new(ListEventTypesResponse) +} + +// ListRequest returns itself +func (ls *ListEventTypes) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListEventTypes) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListEventTypes) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListEventTypes) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListEventTypesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListEventTypesResponse was expected, got %T", resp)) + return + } + + for i := range items.EventType { + if !callback(&items.EventType[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/go.mod b/vendor/github.com/exoscale/egoscale/go.mod new file mode 100644 index 000000000..4a6fe288e --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/go.mod @@ -0,0 +1,13 @@ +module github.com/exoscale/egoscale + +require ( + github.com/deepmap/oapi-codegen v1.3.11 + github.com/gofrs/uuid v3.2.0+incompatible + github.com/jarcoal/httpmock v1.0.6 + github.com/pkg/errors v0.9.1 + github.com/stretchr/objx v0.3.0 // indirect + github.com/stretchr/testify v1.7.0 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) + +go 1.14 diff --git a/vendor/github.com/exoscale/egoscale/go.sum b/vendor/github.com/exoscale/egoscale/go.sum new file mode 100644 index 000000000..a558b1540 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/go.sum @@ -0,0 +1,82 @@ +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/deepmap/oapi-codegen v1.3.11 h1:Nd3tDQfqgquLmCzyRONHzs5SJEwPPoQcFZxT8MKt1Hs= +github.com/deepmap/oapi-codegen v1.3.11/go.mod h1:suMvK7+rKlx3+tpa8ByptmvoXbAV70wERKTOGH3hLp0= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/getkin/kin-openapi v0.13.0/go.mod h1:WGRs2ZMM1Q8LR1QBEwUxC6RJEfaBcD0s+pcEVXFuAjw= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/jarcoal/httpmock v1.0.6 h1:e81vOSexXU3mJuJ4l//geOmKIt+Vkxerk1feQBC8D0g= +github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/labstack/echo/v4 v4.1.11 h1:z0BZoArY4FqdpUEl+wlHp4hnr/oSR6MTmQmv8OHSoww= +github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= +github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= +github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.1.0 h1:RZqt0yGBsps8NGvLSGW804QQqCUYYLsaOjTVHy1Ocw4= +github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708 h1:pXVtWnwHkrWD9ru3sDxY/qFK/bfc0egRovX91EjWjf4= +golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191112182307-2180aed22343 h1:00ohfJ4K98s3m6BGUoBd8nyfp4Yl0GoIKvw5abItTjI= +golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777 h1:wejkGHRTr38uaKRqECZlsCsJ1/TGxIyFbH32x5zUdu4= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/vendor/github.com/exoscale/egoscale/gopher.png b/vendor/github.com/exoscale/egoscale/gopher.png new file mode 100644 index 0000000000000000000000000000000000000000..16420a6182749705d4fbf20d89baecfa266aaad4 GIT binary patch literal 63065 zcmdpd1y@{6ur2QH4hfpz?hu^d6Br=4ySuw<5`qV}1b2tQ-3b!hZGgdD?j+y6??=1^ zvsj#S=ssP&YuB#oB3eyF4ik+G4F(1V^P{}zf3&g#{JypI z1}+9sB8H~p9p#KXO~;DR<)bOvmz5QAIJz%km)_alDBKWx?#qc=(S1>fAPq{$|Bv5{ z?_z$yNeFEEbC4gvW58?$*>}0n5HG?WxMUzm;2`Af;vu)g9Aid#oHgR7!DFPT)Bm*t zYm!|qN8A@=N5U=^LG!@>>93bjG_(VZ4{O==9TPl&{bE=fP8>kk_VN(3GC7(ZdD0Xk{ zbgnpu>|H<5Hm&CCj_s-CcVamW9TFhq@i7P@hB&QwQIKf*%2_C&<%m2JoY&OkF6d+x zgX73JF+dBWA-l{W>x`&Oa4Ey@2oW}6O8+jGjSh}@el3p)Z9(7dO_q@RPv$-3Gp`oU z`FK6IJ<@JDf(^~CcO^iauqA9H37m|a*kCQ#Z2bh3bGd2oizgm09+%2_SfWhO5fO0RBm@HJ z;5tG)*MwXde*dPp=|^+AdAEHyUn6yvC$NDg*bzb#m5bhU{w6&4s=^crlTJ+Rw0iy? zc7~fmKgPdq1zjxI>9@628pki z|3(U#68S;hZhDm)9N#zrJH=D`cx9mt66==B4;prXdH{|DaoFB|xzL_Zn+M&%0L6XV z@8;%5PY~u>nUPsSY|1PP%G-kw8Xjug4}K?+{pj;z)$>Y3$9;gO^(P%01r{+?T~1E zNy_y1B|13LQ-~5)Vo38ZiE}1J>Y96B5&ICQ1({Q%a2R@2)B18|^7|eEbAf zno}4t!=I9@@2B)t+WsOUWU9Uo2_pZ|>aE1>Bk6pT>Q7qhAfQUefA`#em*syWpkC); z^91Eo>bK1=+jFIVgUi4^=9E=H z|Bb<;Erse+&fR*5unH*&ylq{o_|SJ)AZJhnrjjuP$yWX^oDhh7Ixx6!adDMzQ8P5z zOMC$zQO`L!Q)};2d5S#6TmD0452p!gl#f0|LUG*`Z~U>x3HW49>l0e*3rA3PomOSo zzbTzC(j?J*)bqh^Cu)XMp2Rx^;0N=EJ>Fpjix@rBf7`W5@~D}`d!V2m7*aefRuItt zd!-{hczc8r=3&6yh4+8WcA)G2kUD3Bc*XFH6WbDyms+wO5Xsu+89K}ZT&|w@b#+Xu zCG`(t0t(+ZUd;K@Gj%4NTlC*xc*f6Gwnsca-deuLy>WJV_uqgF^;4`w>azhM{XK*0 z0n`_2D%}Q^E&B$@4hwYtlUQ|nSpU7;!E~tdO>x~T;gbWur|66HB7-4|_7L}LIyWNF zeWVB{tT8ce1u@Ti3T|1#FQ6jYry@P3mTTgv=sBxxuyMe*OMsGsR^t5QOjLSy^ z2^J{E6J`=BX%EC+Ytj!bxTWRly!z2pKsQ32`mM*+?4KK)@n3y>Cq!X1>*Ch`!&E`d z)U!LQ8+F=PZfP!$vdV+MZ|LS2qgqQv!Fm-D~`^HiX-=C0?eMR;?d^eHa12>E0{ing3OSF3IwPTAnGri zKk}{^unQt0+O4$4=ge2_gZmYk%6?)z8gouhmp^QXZvB{6YJX@d*9N_59(FPMsYe72 zBN75!La@S|aNA@n8o;>0Ov$b0eoRh;kpe}um{1B!`CSjEs zHL8!3kv$s3p9vnP^dN_N=>2|dR4^|bxnrnHqY%bXHx<59eG--2{7jK+p=&) zi`9W2lOPna3+xT77N!5ZzSj@+2f$bE$Lz4Ls)($n&3oY796@Sol6rM&i2oxK8*@Q^ zX$)BtISddOUA-Kg82yIzUG&7~bh`e2T(H|W5@N;gv)11YuOG1=Wm2kiCx;Z-2DO?h zkgJEy@xmG-S(FIFinn=;q|YXFEhjeW&$qjP%#hZZp&GYp-arJ!$ySf!uI9YZdy9`* z*GHNgCPoQ*Y!X(wLqcv6R;}IVjzMWl!oHTCo2R-KbA*@hlB;PaBvH}v<~?VdKd+Io z1HX*Y|6{B*p7-N;vw3mh*I#yxUtGRrtpWeqd4v#$~#+V!~pqfs$SIQN*`AEE&i z9j$H-zx_O2QGH%vpFhUMVv3o-sU#~h{2T1|{?P^{_oO&--LRVpC^_G0{?0k?;aR@L z>_4MD2WZIg3Y(ctF$zES1#(xVzB3*Co#dU{rpNc+JZ#rW8&D&;O^gVguaE6R1DQl# z0v(LA%i({nDiv30`tlyFqpl7>OTqY(c_@U7dM>?q(k*9#l5zPTuc~-F%pYpRNWN07 zc2zaRIhI(v*=SAb;=oFe6yg5^0oFAAq9o*dI;sykuA4sNyUuLSRW$9L8PtE=87YrO zbhUHmRnYl)RLza$y5IyDaxsqnZv``nNAFv|j>$N_i>XxGc0q<*!Hc!H{kJ&nd%Ev3 zesI1mBQe+HA-An?nKb`dSW<5A|JttJgo6xMMaQuZ6N4NUDP z!Vjcs2n0wk5V+Fd_qlkztL!L$-@je}E$9aMT5n-^y(zJC1eL%oDLOyjU(auuk{~rX z+@^-!C{H+;Dwvhr3b_#W7c8vm&Z4OIBm7o2_72=~@OYPwQNfDXza_DTS9DdwzfQYl zWeK*#S9!1f)~?vu+u^vmNVi*0!Y>V{!Z|DYAlF5;SU!Fgj|ZolsPl+5wy6ah8-yL4 z_|@D0@1};~4?PIk`~uspG-CeVrpV7{@)9*zdwo)5Yk5}1Y($X#vEk}rgoBH&glz|d z9<&h5&arYm=i>WsGbq?okkKF5g*_=jLI;}6cYb4!#<;4J-jS-H$Ig3kbzrv{+#Es% zH4o*JaxI#Jp3x=zWpGtce;1d|)JVX;=^KZ!yMY1~W-XnGkhWB96>^m$e0v ztF6)UrS|lg(o&@H3t46p6EwGDq;yJ}0!q3fDHARM({3}Ys1_R~=7ZLn`{w~oeb`5| zJPvFZ&z@|`YI|-1LW8TkQ+h^4C8kFjg<%b4S{Om?bp1$W5uq0_?(5i1xU%C_GJt1 zG*+lJ5XE0nMgxO*#U&=NhW>cdL2llhaYZP0N;^pWr+$oR&RkC@OX5ie+KF=pf2VB- zBn>Z)SyXGE9WPH_xP$MUuWeE)4Mr>5MLhQQ!gWJ56U*2I5EeEX$ z#b7I)?Xt#rGL9hP(@fdquVbjW%z5mE`jHpX2lZjA6539Da6O-lppHm5;JRgF!~^2pSZI=AH&(%dReq zjf|0o9>;W`p9eq1HGn`UGD)UE;(_fKXb}k%us~o0)4bzYnxaLu)$WK;o2sBA8A$Bz zeG6}Pio2|`MfD#{#pepk&E-iNPvYMil&8tULCZmo@Ne1wQ4R&}zEN|)iTn38yKe9$ z-yyO&9i!_&+Vl@DHYj;0Xx0jo8 z(VX3p-!4+9wNh)c@UYxWt|KlOcYqaxEQ9%X=L!DGcLBV&oGYiI8QbHtNlEDe1BZHE zdxvh2sjn!Jlx5={R)4fjtN%oS#nWbDVnW*}h`70_eSS2lbbNQI2xq_6B%t-G%Ewsq zMKtica#Ba6GQ#J8r=2UOssF6xf`*Xy@o`ouPUJu?{Eu1BX7zSl9G#$8Fe+_?>uB7l z_e9E`u|m3IK4ylb!y#6iI?`3}Zf4Oa*6D>cS%E3#4pz>G8XN0-%g?}W zD%jq^-Xi`F!0^o&&$b@@B#n)SAlN!0)F1eLlEes`9P{_%B;W$_w3}u6`{@$Nv@AWFt~4tB9NAti z9p%athKiYRNHKN!x{#~LEAKimWd|J*sQS{#rgs_%|5|RSM;;)AM*`Cae@Id!hdl%G z^^CZMD7JG)TwWn#_OewK09_3Q=mQFoBSl*bb{gtf!%1WxjziWZS;m+TM86BF@Ib9fGX|I|F z#|B?=r2OKQS90S)6!(i2eVczOa*K*3G8>$_{u*QpX=$2x(PewU6n?$Hpl(&FKdL`u zNcw7VGhw^2-!D7RHf7bt6NkVXGIa#lB|wpsKPDMAsYF^EWV*cPbpo39QEYq_UyE6_ zKriHIZm!V(iIif zFH)1I{*Z3MqC7fz-OIecs&33n7f2-E!rzP$?|My<9IV{b@fi5Ichf9FjQE$*{rlkX zIrR=RgX=iCI(dIup*l}>pevCf&z6t{A2ihHR6L#bSYtAJTf-6^-{pmZchg@TrW3EK z>${mNz+dKY#SGyW)*Pe<76#*LK5dHTcDP~xdqJ_UT@_uaB$d~wk-id-7|j=wUgy+j zhql#srfIjNaU>dsO@o-EN;ZQD%5`Jqq=^2~uK_qM0DgFAZ{oMUm zJE1SV;nHwiw{bgLrp2zrfWM|giw7E%I-EF}a)z<;S#F2-GdK_?$-akKd*TKh6a_ zbL$ARk)_J>tpND@IqULj08CkO=V~qZsC_~4JX=55ebt^sAGr)O;Fi(r3R7MlYi!u4!avU!)GK!cyHXAi%uJfywD{nmYC zq{oj25ghTVAWUrD}A;@Q3dda;Mow5!nv70guy#B z!zu9ftny2>#dTePX@`7{&Lz#=SN#u%qbuZ~nKRo--O=fc`$!7AWX=jQ6^Oh&J88S} z{4sv$mK+i+OvSfyetn2g4lk?7j}K*%Jnus!5oABCzA&3FILKQ12)3OOB{^_ySp{s< zdDanFzn#$qC@S{ttjP|CG0T$!@0|r4hw_%TH}UK0Dg6wZA2hvOu-IGjO?S&vyRlm7(wk+;e&FKZJ zO1>J9I9xL@FYv}xcerL;}$r7rFj1&Ir;oQbiUxdrWuVGy%e z_Q>NtAyu?~i~n17VGYIYa@Yt_L*6#s+$%F4#3SLVKBR8*VD3XAZPxXKIEdb4qt6 zDDG$FsIsz6gVcQ4!#q;akSG*+)RCJ`n{5l7_9sew2@EYO1~N~Co8~08o(a?#O?}gq}YdGbbqQdaa{Mm-kyL#UX9XBY-+6|n%#`O=DQ}3 z5*lma8Z{s-@i=Cbq-;6YdR<{k*;HD~$PQXNEyrlS_E~K2iV{W{ErE0)_8Px1;!F=T zC|&jzEp(eYM%Z$qYGY{^#iIRXc&`UI5L|&IUz;;Sc_#Mr1MJ-3A^9PPpV4zybCcNf*wF6U zOz1X?1yQBm=Y?nE@JdQs%m_WFHNk2Rv6TQ(Y1uIEs@F~oP!5tftJU(?Glx{b@7)&c zH>}JWu?bxwae8O}^pk`LYP(X@!%hrZP6w9i%Us&*fUgKEUz)%G)6%ERXLIxR+g&|c zj7}NdA42PF&%Y+v$_Q(P0iO1q=q9Gn5Y*d)ohz5h0cm=%yxYd`I#3lBn5S#|h2#|qHn zU~-xE+3ZD%w*?`h9pBpH5%ZJ8uhRi6@iBD?ThIbl1FV`B_O}-(g5()$>ynLE!hJcXnOMl2 zcdPv&Pf<(2@!QuIkHZlh`w_)>6t5=oh&bzlrc$i001gkXavivE?{3T=T^ezBi5)Wy z;T9)bE@)vyvV0uG1vs*l$9#8Z^a9)8Qx;+yPlJwe=!Io5$%Z0TMO8kTm^}AE20xE6 zzi0N|+12{{Irjo1lcyF%(%pXx%Ts$KpaWqbXby0b;@yeZ4qF)|w^y=8L!epx(~Sw|L^UI*0_Qa5)KswGR!O>4~k^sg+9 zK=K&kLa1<5C0QhoxC;GA*F}uuAs!!_%inA1x_O+A$zP{iK{wFva{m3Dp4c_Z!_}!d z#gxr+T5oz^sgKp=0-INFjHG7<LRK%rA4@KRS_|E zgDOZ`Kxi)({vcVn?L-a+D(MGhZmhJi2=o{1z+nDY;$r37&a+g;yw~c+!w}DfuIHw% zR7kjx4%!%u7^X;U5k?s_%GL|{z=Dw35b$)CQ~A?r*an8&#e7io{Mdd7eGRp(pB5nT z)2gLTsR$9K4w)lY8M{4MLal70C{_u%GINsV-7vO_V2oQwRs|u|Swvdn?}iD#!V>GD z0txMpQOiQs(F3y(b0$#ddf@fY+SwETsxd3fv|#xSzm3Tc`vrKPfc=Fe4pu+_fH0h? zEUP|E;8VV7bYfJ`p%adAjj^V3nlb~lKurZoRcOkb$#{PQOit3$Q8ES!>U70d90~;} z_g2{+$Q?d3EXR2tfY~D1DB}o98So<+E>5bC<-Bf`y&&AQSQFd!KB}%XYzci{X=1!* z{&+y3vf4=Q0;;$bk18b5$?fTp?*)=rA26^rRpz5Yc@{_vy zJ0>O+Zx$h;jF=cc<6iqNFrtsJ-UAy&7 zJ~|rSSGvNgxhw23_-8YGQ}ZW99)kYr3?6adZqZK4iKXYcm#10eO~e( z!>$Mprm!NeBRQc}B~VaMn`-qJWK1xhLr6M*?**^%lAaH|ULd2iaC{M(J*skOBqZq8 z5YxRL>5g?k0UKIDbFAp=>(llV0~r8;q&KK3DJil60RgrTpBIb^?N4kMOX9cdEByuO z+lZx>%#-%w=s8C|N=ox+w$ake`#d|{6m&i&2W>1Y@rawxB_CIn8U+Fog=5k0jh7iZ zAKfX*(QYXISPeL6gH0o#8A|R#S5Wn%K(nTSr<6l*O+-gCfeRW94HrVwMt6P;Mvw28NhcUPj#xZ3@z^!zs3N>D)!gxmP}2`8sC5qj;5$6`=6hK`9TpY5{>xb3@%P4KG{dPJ{4jWHzncr09w5NWFv93OrMq zYCx|G1Fw@|C)O7Xk>4TytRW~5!xFNxI&wguBOC*)Xy)CCVvu?3MBwe|xbG@>u3?a> zEos@|@iF?Lr3ALgly1c8i}kY{SH-$hgy(_6lTf=;nKWgaTV3p!%f52pHVA2F|YXO zj$%w!9;=@4voV)FbKoo}Ayppbv%amB1x#;Q-yT$a|Nfoe=5*Ef!3>K(`5E@rK$@SbnZd9J<=&9y)ggZ?D2k<~&w)jsJ?q+H2t1!w+ zdtMD9ksYuWwp`;7co@4lKB^#I(#Yh2@|pDAvdm~y032YU)_k=hFad0vgl>WL!`8QN zAz8eF2x`fu&zoHqE9)9FA5mP`W=iQ&V^|c%>A4PT1&|3R^GE zZUMCbvYX>*S%fx|tsSS<_iCR}X9JKgJF#aip3kmvUT(`|A zVOT^&L^HF(>rVu`tTKQH-ib6}we@ z_KEdUAnBuiIg`Te07}c?c7AC)-cdmFPUi}?W64*xO#OIb|6V7xcPv#gd_#qgU@w-ul;3}SRUnvKN&6o0W zo||J_0I`JQo5GS3DDwpx)wd}DzUN`umWNb=we7GTu&9QooGqt175RUhqb?pN=xDYi zlnuzpSaS*rH`UslHS{d1x5M7#wZxrlbwKG-)hel22T7G56FLi$1~cI*E0Zg+U8+m#hS}U5Wv36s}UCx6-{mzp^XO0 z%4R471k?e)ErY*rKY`KQ^m9(n?}&+rPVG;BNkAbv1ZDX^qVM1y%3JRafwu*RqFxBJ zDw&e&-34mOL@Sl={lutSHO1$C<})#s#tfSc>^T{IQrbCQ>6wA-)jD5uH9G3V=D$xH zPw7Sd5MK%A-`UyeAR_silmohz4>V!l_#Agpd@UapxA!n@>2zCYy=d1sUvpeu^x2Gv zeA&hG;%Teu&ShHx>WN~jW+LCmxTNMgO#m<@r9>SQ@(bfC!A)A4nqmez zI;X_M?I=F6G_ZzBnqqS<>UtRjSmM_2@&$)xc~4RmcgN@&CZ zP>WfOYCcS;G(QSyw+IxnnIIG!Bz`rnq=H650wN+R4zW|XT_UpdvyT9bs{DoRfo+fN z>t+Cuu&zJG=F_x0C1^5oVY}as)3jl^<_`t3;R4Fb$+hOHo|@Ww%^;MAXj)cQ%%qPW z)d+S?jWm8HY?M|OPkxzRxnCS5fH2$5@TRvGZ^x-_w5h(1mZ`2p&e;gBJU+VX2Uge4 zcp91&%8ZVW+m8+E;X7P8YAUbzKOjDN&p2{4^}i)!?Q_WidGmq-Au<81W5RaGRAM*= z0T@1JO`EPJ5oL}MT5G7TE2PMd6OlJr%PA#8K={BHO21d{W};ZQP{>Rxk{nt~i|inSaNhROKFzbFM&|v%(re0FjDw{BO#uk>CM&B5^iQutg1yozf;h^fB9|I z7ROWkoQ(bv4WL}i@JiKMxfvBz%n^vqF6M(R%vaHCQ%AMO``|7p=soEPS<4w2ncLY3 zv$H^^LU7ns8<-7sQ&8GGcdarz`r^D%nnIrcnN^*e>1@6ha<_n;Q^)2>JQo?Q+H8cj z;=+n?1b-tRC*5O@$|&-}^t4N@Mrh*=>V>@(MaM6u^38rFx(w5dvw8uoJ80OT+duD_ zXxQp%+T-cCkMP%0<@}Gl7pumYC!zcBOAR+vZpug)G_%+ zb;3^4(!p?`O2huA#Jy_kaV~{ev>NRS%ss3r9(x@JhnH8MtAoB`<>jJv>NY7wD;7dR zSsT@o*?V!BUy#;M1c-8GJPT{*Fbs91Md>WsGJv!Dc4^r`j*H*Ji?mtgI!}~DWxVAL zl}saMCEP-uk2kDkCZ@ulG&RXq`a%GQhZ$<29hZ-o+ga&NT=lN1rtdPQ+7HOA$o!Yx zH)FcDNmeSk4aV1vg42|BH{x$MOXiGtC8|1usn#?xH2LF5kV1WWwa_J_S|^d$17Qix zIXu2Oqc?^BqNyVtP>v|%(Y{drX>P9)S5(Ls+56HlxlhZ@?f<>Blsa^#BCqMjyTeO_ zDk4ER^wM%|NHFy^;iY%L#8p~N|MN#>cS5n8Tcew%4a_dcB|u$2ysR~5u~|AIE>rq7 z&$L?b?Vt7=OC<|+smWT`{DOkcrA~iU2MY_b-QDDw+kQ#$04Q{nfdtpvQ}Zp6?}!b? zo4MJ$a7o>NH#8&?0D*u1`sI3IxmtS+Q?yU7wK6L+DM`Faw~6iPVsw6KP}7Jm`RCyH z_QY1rrA5Ai&>(({>SbM7^OsC9uW)ugo_3dEo8W|#%|m2p4-728k=Yn4c+7=%BA9a1 z1mzJcIPiI42)U{uSp-F>To<-U4~hPF=9UgI_91hYqUFN>bSK@1}`eEZv zt8C$`OX+ON*}DBKjbPKwoB{ zHS7MP=3LKXTfe!q%t>07668<`HuE@^)UjaHWYrI<4A)s2r=z~p#TTKG`WpIT&3wu>FCJA8jp+->KY4$npbOoOW6y>cbz3}03_T9VW zccRG7_g`u>yjROd{@~uw3*UCFKsLs2C0u)>BuKvES1i(2WEibD3AodZ-7`rCwJpFa zf+FL~jK}&KH}j`>Og}H5sptAS-rZb&X*uaIV4s_l%?<9|%q?yIz9uEhxm_%7>M6bD z+*YkqA>H4{tLt7554c4A_)A(^w#IlD@Ap)MY)EBYL4Ll8jETwHxw(8Wbibu#!ku0F z`ve?e9+1&n+ln(j?&~X<*a#g6wHD*z?uxvjM{w6?d_zy^D@~BOz=BO`R0>wp*5>&Q zS>TfTya#%^H*`}_Nov@wD1x>uo#O(OPWVI0BH}F7jj`@`>Aj@JK0ojl+}vrQZ>(2I z`qkI0j2DuPZt60h)NNc?pIu|C)rp%AxM zf}8amMn*?Sc+XiX+s*mrk|RrVWTXXa1S!VX7Tom!@5_v63a zgDy|P;4cW3#*tyUpo$`U!%iVCV_GlRf(u!QK0e7JFebd1d z<#L_IsQeH;Xnycf(&hac5}bj%axZCS*HTV^(PTn}+3k^>GH@5bI(+Tj;Wl(S9FaWA z^nOTCpou!HrM-PC@a>-5Vf|P2DS_JBna5zR#M}_1*5a>oMdZY;I-1Bl z71ju=W_+eK+SAkL&3e$rp23rWrJ&?IYqFSpm;Jf@tzW+i+w;HG)?WCW_g7T2rTQX!Ysm z)yGIJY=YQ(lj^!p(3X{W)6+cqua!FP6zqaa6S}1ZO}#d$Z_iE!T{+T~+^7XYd|$7r zM{bCD(>RLXbpO%%K1rFH^-)Q3h@~D;ET_yr;3eSK1s##k<))jgrv|~ULKl%8uVp=0 zDe*-rL=PauP=^>h?lI;dnz`D&a{JmF+BCKi>uEq=XG)CsY33IbtAmp_H04iIV)(?h zRCBlN4Gn|8ZIkdQN5AR5sAx*oMtPGD*wk`(Z^&1Ya#2<7SsDTn>E||+ya-MrJ;lTK z*Esf8?KPv^f>wtCggXMbbS2&Hsa@>L#-leJb@J$YJ;l6JEy#t1P4UgRGMwet&Xyle z9hgS=zn%V`_0PgA3ou!egKS(rM8&Jp2r*PnTo$yJhA_Uk(4K!BUOdL~urnB)s!4Jh z7@(fx;@4mJsHCzxSS8-Q?Gfp+ZX1(7!OC9sJqB8W8JBZ&bJLOmurdC0sIEa0$*lB8 zn)4=MiV0cYr`;l1D99YMxbT4N{Q6TDZKC=q+f8JhRQ8t%#|sH6m#ci zpvTKgF*+6z5>k9$tsUnaR+{0|X2UeL9$K2gw7Txpd3RK*VBmEurpJ4oW5%xU2Vdd= zVK)ij%Cp_L{sMKgxn5P%Zsps{?eRcUHO+k_Lrr~n@yejV>_~3*$goq6OP#y(!Jx?z z$Us4Uv)7J8R4nS{cFe`*OQx{~ zQTr9i@fy-xazt~}-cd*l8vbOsOxtEmW*n>{ie9CSo3a#uAm+lAX=K^;%=;72VBnpl z^5AZ%*dBe$#A35kwhTT~^bB|6+7SWSrN|UvQ+^nm>*l3byj#qhW811hDQjok^XPXH zt}3#eb?`FSY6N<7Krc}TXd&UD``!-G(oST$#<>}u*0OAMVqV#nlrMmbs)=07ofn#x zISgf_W+&VsJon$^KO7O~u8v6D0)4PBQn%$_XuOWd%X z1c0E?K}T^nn0LE1A-^;(nHE_RvKz=aqnIG2KL16zoOC}lMN!c+!Rwa^Ptzc5T9$D)N3^NX>1oAs z@Web3GOu&KR@G+V)0pd9TUkZkuhsze1J&aPPkK(Hx=y1uBE54i{GK$ zKuW&Omx=@xp>bPudpr20V{^O&+JNNLKdwf=7T2{MLBCF>>xR+CK%&^o@QQ?#Ai$Gv zZLPSjF<0FKoWnWyGzfARmpXi@_FuQ~bh?q@u356P3W!%OOWC^g!mbpD2pW-0Pmq+B zm8vC7pP2Avl4rcHSFj|IaI`?rdM}fQ7FEW*q>)=&i=jN*Q^dnFQ|lvoyqqZ|=^{k` z7}NZ+0?^RXobsJQsqEO6*uqPSR#ocPSJ!7;lm>J`uBTgk#WmUWqxwzg%$V3&i;FeC zU%-0$DFf;61>3w|uPx6JSU*SCFM02NTgN9p#7KYt2?s0TZE$mxe1ylr$nwGyHM^$f z*?}kZ~yxnFlhLAiknp+=+{6)C{hG6v9Cq0@Aum|+_^o7P>Gz9QFUAj zv1p>B4!=8IdqHoSOdH$a#3ylH`h0c3PokyFJC{s|Y`E{SF!f80`bmsE#zcA^oRQPf z;wwLFrN!9XXV<{>I(s{`3Irj{DH0p1La_A7^)lb1T=%Vl-^@5z-uxa-_urH8>#!!w zDc7A)ZELE1Z|OTkP=~qc(M!BeLjJ)F;p!Brqg4`e`XvM5@Yfdt>313myyB`(L)zK!vwZvSZh85N*HyGXiqnf14uqHnu z+SVLGwHdEYVBsGn7ZRo_xa+|v0&qR2*m(D}gnpPzk?I582gb6%)<21)e=ZZESjpp0 zMsMS2TA4~}WMqSB@xINz>45hAlPQjD;n8p{kpLDcB3XRLEw%rM<#47N8ldgctJM>u zxzLCs-w=KP(rW-o3__8h%`H7P4bCIqFVkH%F=pz7U}QZ$PI2lgwZC4dOABGkU==rk zrTtuV(zNqvJCfZ>-;bU@`lW%9_wR#E4xON2RR{7X1!(8y=d9Lm zb=z8FM9dj`B^=`WxoONXl0b9BDzR&)jzr3NvCPlgli!|>CGq1O;(ggTxib2OtdPt+ zb`qlZ>p=N&O`1<#nao7hT$a9FFrq@XmE|joSk)%1?H3NKe5f^FR#98sI2x}shEVLR zhX+1%`5~wZXoUl8=1+pHElIyVy>ac~M*>lgD8yA1xtDzk8PthVU^|EC&pA;qJ@x)4v%&68CZ<2{QV^lW}%;ic$BSXAePnrR`z&pmOt< zD%;OVZJ`~z<^;eLz-ejsx-=>3ZEDX;aOnNvGC&U9@*TVNo&{=16i9z9g)IDNdTKWZKiA;X5^yugH6!4Tm4JzJ5<^BTw$HLg* zFsw8nVcD>qodq{v5@OkK+^S8#Lj&ok1J;4P#n4ZPxx zO3`TLe804Pnte*s;P%Na_^knSnX9;+u2k1D@OpxsXR8uEOeM@5Iz=`py%uYLv$xS* zh=DU;_hnXmSIWWit0%?94cYYq zllD-(?d`^4&DTU<5^`>`$pV7!1WVoBmjZN~<}?AetBdb9kZ_Yl@o2)1MI90+@1C7K zjr~uXL%)QrJl=clNbHF9tvs$(EnGGj2Dl;lpGAaxA*9#LZOXasm`v5YnR_Vo#U1Xn zNP~aP48r-)dpp8WcDLi6G4~*vUbkA$&lO z6w+ljuToLF+p|_n zmCZu<<+j!8n|L-FV<)5&9$Zo=|A(fl0II5a`!tuX3tSqcySrOJNu@gk1nCCJOLqt& z(kd+>-JME^beD94H2nAdX1|>1f%CIKn{%L$ zr2!$#{hXJf5~0sG9G32^tkO>Prh?iqCo+L3k4Rt~iyS|q50Q8v?K<&uFNSR7SnQ?e zhsKR1y%Up|P*K@J*8AJ{k(M5$zyPyRY7vt z3#N}ho2vdUnAZ_^OZu>g%^RMq%$UgtkRLfcXqV}k!_Z_q@UQ~i$iC%B&~S{DaJ<%{ zg@^^5+@4?GZg{tlN-5G47+>uVBsqI~M$Qa%u?nJU;!`Ai(Az;7a7(gL@pO$XV5!nS zKRwvET8-U$icl)j!#b1DF*5STA%3R1(}vWrAew_;^QcMHPYXR+>qmczyO-Oh3(X-Q z*u6OMsJD99(>T41!CO7|@QR$r<7KcW)5?@}mtUfz;rLnz9sXpYWj7kKl!mOAK+NU- z^9RjaP6gLMx`-{}XVPQoBAfaTh@5OMaMDqI5Cw4reXM%k-rH^n>$eq2Y)O-8iQ(Fs zxQM>_Wdu=4$31;R7J=Hs2ksfWClo)_yb}*heF+n)6Hm{sg(<|2nXurMNSV&W;IT0C z&O{fMsOKzkE+QzrS;8pn zLsEg#DHW2vBd5nkj_6&Mw}iW2<+^H!Ok{A5xLw_C=~H8a8DZIUFq?sGkV0oCVCPia zx4`{`V-|Ezjm>1GddClitiq!wUH+zg9c&O?uM^_Eten`>thSNNd4Es+kt5w{!}8~5 zroPYG@7Wta2}n2+z9NCP040C32rk^B(^aAzHGCD7Q(wsITVLTYJ}xSrKnyWzKPCHj z39H|TJwI^W9Mvl;-d#6VRpA5w;?*~n{42~7XC`=@mVbrEy2s~^3pBXA@(i`o`m_tr z&cMRcHG93YF?!g9NANQ`c<07x-j7Ln=``w#y}DKe&ViotNvrw1wT}jT}$PHM}u_aks4Zt^zT~h6XaiM0;j82vicI@SJsDG z0ud`rv)+DYgBnESO<4`SZpiboW-UnOf%MRlV{Am5nc#G%IB^H#BULQp^PBhXglNfa znWNF&iQ;2g8-%bnAS6m%O(Ux13y4WhS3W{DBwhF~&y;QVgE83;xyz_PBj$g}l zq~o6n*Uelg5pi|gJR<+Yq``qI$~xuXE>0;&+eyn5VU*OCA)sB z2JXI`vx*^)C20qTeQvLoisFi|6+3C;{)j}(2}(LTw!A$&Wr(wQfs&NC7G1s>mbdn{ z*3fh{RD*Pjn$0}70g~3ogX6WsJ%o`O2nv#&!~Wp&aZu?53^@hJso>YS&JCs zb^?Yw*h)JaW@3c|eqk7XVFZTRQjh!|<8M7dEjtNC$RX`Kmk==}D)W2Ef>0+UP`6Jy zM!_WXQ^gWGVF#UXfvvgVuW3S(HCZ0t_dV=iw(tgGwT9n?^%;h_Cla3um`(sm>6JTQXb>jnWvy{=3#QWA>u{<{%jI{6KjKeYTuoE&q7Ci%4$u+^_1o zG|Tnx`UnB$br(L`FPu7`_0cjbWXD&5+=|JzQ`15LiqbDZRYlACg_e*?mQI|5I;bs} zXqaNX_>>VuM;=f8u(6!otdDjStT2;LCv~xa|5urR9HA?o$Nw6WiZj<`lv`Ltj zkc%l>7OrlKFmhh)MU;R{`jqqf&N*lQ@9O(r$|t8M)qf9gZBdeC*0~_m-jMt$IAYaP zu1xuFA#xmg@@QH@40>{0dhnAF^BEMopsoZFr_O&u-zfa{Q(JMxd_^<+V2E}cR?azyW{)qC4UtpB>5jNRL*`)Ha; zz*l_Y!{1DMPruJWbDkf?{JB0W%F94f9r1(|@sj;6kKFEepO#QMisKFL(zDrAX5x(4VW+$h>EzLn*{E`6yA0vhg{LcUlz1W>l7i$M9dpcwhdZ{{Z>jJg${}f{Z|D zoj?1@*3mot*VU*FrNeYKlqR%;KZw_vGae|~eN)A$%7vNVcql z2B1&OGpp+z44C)2V`Bt%Sf3$+?06^-Z)P$h#*LSrH&h0ZHuhOT3M65plaC`5G3e?A zPH-3U47aSU5kE``EVDe0jgaPMF+*QfjJC1oz?@0CiKJxf>0Fo!DRX+lQB{Y{NPgJ0 zBjz5d@!4pSF0efJHh&dk2BCw5hkgv4H_-PRd9QM}cJ+FeZ%Kg=7nJ}5od9E?b>2<@ zo0mMCMafFC{*IXJFj1dZt6VX1L!?RqFK5O>4;PD^vsO$JmLAS=JmSy(V0VH=_od}m zl#M74c36En)2no6#jS*j*(NJ~L-IW^_Av?dBvBJ~iH}cen3Ukr$!n=gEsE+kx}UAp z>RbG=%iBWT5kUmdt@Cu1j6`BU)?B|TdT%$(kiv#hSC4j>upk9q45hdric!J`wKOVX z4J&ed=TO1ZAB%0_Q&m|Vf%vDl69gwTr*~B?=oULs+MnI}ML+VL*B*tk$H*TWc|Qz2 zYJEc%;G2{FSGV#4eJj{5(@k^JG1s_ee5cmu?}Y!!gI+GeX?I6j2dR9L*-rnTxpN-Z zeo8w}Ke&9CK5;vPg;}yWhnuZCl*%&dsIro<5`&ymxAGbx$bS=eQ~&%=T#JxFf2OCW z=gRK|S&X)svz$NK9hoW`XweQ4_Fkv8SHTn&px|K;#3`)C!V^08b(M2|g|PB#bTzW_ z^E6sBd=87D8{uQnlB*Y1@5ff;%0aWTLQ@xs`<@`=(>zab;)j3YOMrPxfQg15Ule7n zxQiR+&VkPJ!qMkNYn^(Luv}T<(1)QEEO<T0eSgl?V=#Hy8B(b;N!# zeq5po@uwIw%Y!sB$Te=q!Pm}RbqDU|ys7n1ip(KaWK+;D1uQgE)6=;snc;+fK_|bD z>EIGy{(WLm;yp}5{TOtlsI0ydgQSx{Ow;~IsM~(Wy%Wzgl}n6?;<9HD>$)b`AeZt* zKU}P*;70|Sc!QJ7>ptBB)|Hs_Z+?R*vz*s4ztuQJU4PSIBPVQiI@GdIyCNwiWQS^P zFco&L9sOIpd+(zQ#*7atDn#V(eWUC65XdR?aDwCIv?Q|HGcp}O@#d!}5i_?w%64A< z5*mG9`zU^d&BVlX=$?tVW`j5B+p7aPc~8cGWiFN)D7~3tg8v*wF6od18=?Kjht^vK zk2nh$XvolJwES^FnAa7)2pUd!OCyS51vT74)666~(y0;Bs`R|cm=TJ((cBV<LFQf1D4*>Baf<5q9Oy~XyfyQZB)lcCqWQzQnnZ#(z>*^G3d`rA##~| zhnH7YNaa5)Y;~3Ja<<76xp{uUGPMYX#zAyWcuT}OoB~nQGUsIJ{iwohu{k^Bg2Nip zWgW6?x0l1dl$#8h`ay}Vs0F-_5TLeLfbsjUyeJ#-cjx1G=j+!!o)Sh(?_G@V;(!ke zxfrDtb1qzkIUD;b$s&n?Rj8a%E%J~dqKBm>4sZs|&dBfex(D;^1h2&#EUy0jI`I{= zMEON20^6RAN+mr1d8HQ1ikXz<+_RdZ#X>ELcH>2w<9lEVLCUzeiu#&m=yI5yXs$2^ z|FSD*kOHWh-1uH9IUV*$LDP3~yoWPOms5i?wvMae`T5%>`3P*e*RKUx!0?I2#C%pm zIO9WD8>hg6_sAN*AE1YcxnUy(nkmUGO)o}m=d|K!e)*DP#z5XT$V&t`RzdYQ%$jEd z%9>1Q))zr6HI!KU?3h16)r^fS^x1@AQ%I8Zs4>fo+a*#US?H5EN)UHdaon5Y%^Q+W zEdPclOp|!j*5$Q*C8Mf%X$Od?tv`FS*nFa$wTnhqN>-#q78R-&vm>rBX0{V_)}*Q> zW|f5;J9`?gvrb>y~l-7WC|QoSN3C05;d925QDN z2VG}_$#N8eZ2*<4T0*;1Ey2M{yRArbvMSbwLLS*xK=r3!-w%04tZOiwPYhMd6pe%M>}?l zuc?Sy6W@C?ru%OH{%Z1tiTg6W;S@pl4Ofpk^~&6c$6j9vM&QNMi<66q!T+kimd~IH zL3^;XFPArRrx#lQ(Wz4js&^o%2)S*oCMXItGkh}3AvNdulrKzXF;8WtF1jX4q zFQ|xdRSQ~Iio+o_O7FRZk1SEvS8Bb*In#V~2;#sg1odII@t;~i+Zl4L&>uS3iI;yB zI%zl#iUPd_N7Eij+RMxkO`hTcBPfJCyHq{ZhV0knl+R9oZ2rXCRMg!ZLdBa5F{+}2 zIeFo4+H%L}E+Uk6c6Py2Zw1M*n=ug*tgRhJhkA$`BvG=}J1RTGF+efT@mqZ(@JcUq zBYgSmq!a3QO2U`on#HLd%aaj`j*mjI7?T?PtXM%vku9)RTI?73*0`Vhy;m8eeoOw` z2;SR)<`xpJ2sAiTH~yw7c+FzLY~?DWg&z-}c%>IFSSHo$ZT4M;XBBxtqxE>1#~O^4 z%O%x+lf3uKnzw9WI3st^ipeV|?5AksrEO8q}DDGQVKq-b{dt_Nv0q6#t~lVQeEyBV$01;9q(7Yba_B zhdi{;N3azsTOA#IDs-{Jx)9oy5x_6m>R7Vl9>@CX9JSBmOoRWDYG$upx6Bjog!dh z{gFrx|KzUfdN_;c&2JTR{qHSDHY<0@vYj%8lOY?vAKlMRZhv$P#CV&AFI%gpSm`~! z($NVbYI98+zhgwhVUzRp#94IO{t8dpMsV57`3A{ejyumVOFi}dUp+ll z^RQ>o25og8TY3vKBvSswr+IvOI;6BzQorL7-EpBFXKHF{XKydG%RE@AP=!4^?_Z97 zf_z{;(MC~rT+_BOxD<$1-0zX+t_r< zeHtAuG1g-_6y9eUGUo{PyHUHjxtR+YnG5vC*~KeOR(!HTbBE?@B1oAbP-~FRFDy(< zOduu}VM*oUnV6WI__dv8?--s)1R?BRp-k{|U|p>ee&*R#NP8)UVc52YpJ<{51?|hx zpaacW>TW=v?(<%h-q*||JC&C&V`sM56ild=N|i9$XnMebq95?xOwP_3lNbrqzPA(8 zt1`>PkdmQ3NR^xYz|0N0$Svf06I)>em4$Szc7^e}ZL++`62h_SPoonSCS^)xbuxdh zT&MhL+jqx942B)yM8E1{_wJpnq9STKw^>4E$0Me=cmG?;oJ^x1 z<+*7UzjcQu{8egwn*T9d^$&}sCg4whElZ5K0f|!sMPHx1macBZ@88-Yl_Mug1sbpA-;wE;~1 zV{IYw_`xym;E}EFC<1z(zP6rR~{y(Fq+?)G)OVi2rfAR2#L z$C@toCGqdyHvzZ1Mfz>G?2dCar~vWWIXfRG;C?BxvsR!dNJ~o?*p+UF(f7YV;kMgZ zbiwrO8{na(Ew23DJ3l7Xtw+-l>%#NVanwhfELw@)97aMC3wAi6!UXJil;U8~H8p&3 z+}Py`(M~qwYP_d z`SvJgz};cP^=jBvwbK&tF0tOFs2bF{69|aKab&?!rJJDg$_b)86|%{ft0L4U+3)mk zj`$q)&shQR-)K6&u;wN~!s~Ksu)4k2{V3u}7=c59mN9~wI)t6GO{a1<&oh}Up0nK& zZw*%DyPyB8PfY~K6^)E2O3TWs{jazjms`oq-d{2fj{wCY++2X1|JjuS)l2mpoUcUR zx<02ydYj&ed!WhJ1Zn59oVCu+N4$;g3;q6`%a4pTp9U|d8Ts-O$3+D5l5*gIs z@`sIq5(~7u%A&{RsA=2cXi;=Y?hf1(&d7dGsbK+1Ex7|UZjkz(Z(rAbKx7E;#q`}iQ~CuI-MdfVDVu4+lw`|H!j z>vc8W!24^b9#I|NWE(Qdfi63NZficz5fkU(i~<&*stO7UUT>x*o({8Df^m+CduDYf z&WxZ^S4daDGVBS~33uaCI8efT-Bou6SYu+0xsk6~gXv>5)KX9qHq7e`!S|zZn6{#9 z^vB2gUU!)rQa2W`EGcB4pe1}`sc4v(osA+j3qU+>yW%1zC&!Og_^mAl#EY6C{;Hh< z2Xk*y`iXYMWSf`-eBh3(huMs6EQ~#3B}fNci)o#dOxT$>EbzMj<+#5d*tWPnSv$FV zi2By_g_)P;8G-7|+d7`CU-rt`eneYaTl)0}f&r&}q{S5#A!FP7k4uS!$J2lQWXn50 zW4zb^r3SgK4(IeZyMq>f&q}1N!4fx=%DhoK`PcmRB31L10HgpG{;}WX6MP#?$aPM; z=A+Mxr!nd2BphasbjtzfIOQfSLY!d?){u`y6n_`jOujm+9pvcx!6_yl1U8_Bqj6(bU@(thEGEWHI~` ztB2c5{U$d?sarcyHa0d|NOhOIa&Y`wl|Wfj(}Y^veTzcdbr~{GsMjXHE z)(5?AC-30cu^o-8c81L{MxLn|Xq_}J$@hvfxn2i_tee_xmx`9zwX75Q%HPH3b)mWtqSS-&rheVEB z&t2#3t3}Z={|8QA~)m+WY$ySD0zwMH{{byn!oZLa0VAMLFIwuWIVeMTLvv)H1qIN@r3XjYa=LtO@Yk=GEmJQ5UZ^wFuh6xt zn=h~2Oi*~H|Kp9|QS-j~D_z}h<;1{N4^@h#F>yit%h9~rXkf3J{OPBSN_UNIU?feu zDJn0yN)wkpR1r+=MUTl}BA0(A&4scina)tE$*|Ej|Nf;GZaU3@4{US^uatN7;7P|F zE;M{K+T7NGZjFJf^+vv%4`B5}eyZ2 zri<2!BNxt$SV?q;ha$G#1|_aXPL<)d_-blFdY>h=l>oU^X{B=@zZP_%DAQylE;o;$@nfp+Vk^i3cM{#ei ze+MOU!2A*``>bIOdjs~88lU%(I?S7Jp+gy`O=N)1HU`!lB7&k~LK%id4!UO2o^QuW zA}SWi>QT#a-=C7n-|d~z6W_rgfv|($roB1nC?9#P(1hO2!*6eIzvxuK(iMS3?b9Nr zDddYL*|?z+;z~)r|8G5fWhwHEQ(ERZuaGD{#C$l7wejf@-SupU*%oT52So)ZLxXQ+ zN{t@Q#dH*+AmNh0;>y4>3%o&<%O7838pEN7-w#^zRj#x&H2aOylFrYI?Z{H2?o>!% zGB9;F87Gv%B78ABEnfaJa%v*B&8}nlfftPr=7$IOtNcOi_H2N_PgRW}Mk%v6~qH|I~ zO%02y?Sjy8wn{2Hv`JU7%eSu1(+vEHyszP0j``Gn+}&F>J^Pnk-~*s_oW)1d>i>^?9zTqkRIzy3cb+B0cPL%zI3`nGJhBU^frlL8G>KUk}hIp{wvW=`= zdRSguv;M)_9{`9BXaqi|cvppQG*DqmCLe}suq$+9W4YT=gqN>J;*=ToJ;WM~xjroq zcMlcPNb8~Y~jcqVJKYPtn!s3-cAKe~`4zi)NT%gy3)Z|dYGphWJ(P;SsNb*Ob=|I+EJwK_(d9@qv1=~%&QSny=*Nm@aCZWuxz z^Gsd*9qv)bQy`Q?j5cPM6&hi&>LOzI{Rn2h-mAjG%G#CX+@8#L-|n!W1f9)>33zN0 zaJJ`*crmP9`JJrO91Sd+ETod~0tV8ulrTUOgha%wuIlj0ZGFX+5*=W^!incwmFOz}-V`Z` zuS5u75s8z|u<_js`vwK@okf!>@&N<*^vVgnjjkIfk9Wt+75$9x)w@bP3!hz-&4ujR zuNAp6aY`qnBTtdPRsuhy!K@9GEG+1#{SPp(X{6Spw2cSO+ru8C?(YMB<_3wiKi;y} z*42IGOA~;vLVwI%8B8s_sZ)XN*M8&-+1%MF)U$gPfH6vzt_rU_1AT z=>B%b+j}fTeSjY{dKa;5?(xmTy02tX72@I zOb->Npi&8C9lE@uhDt{9S`CA#ce?CSE}TkpL+a>=wmtoc`vv$M1D#YLp7U*AYkj&KlCwIzdYcd=YH;yY02UMOX>R#hea z-M>Wu5H_;Qyf=n8x7ZIGj$bP@Et_rwgpd!^`ZU2j*j`RIh|Uss{?Aj2RsSL+rKZM4 z(gdRP_4Sd3&vBAqot>YT++Pw3kmIO}ZoLA>zfb|3Q9@mZWL-Yzc(3v9ojik9hk`7| zL)4m^==kz-$fEIxBs^&(Rgx4plGp#Aqr~;9vkXK<{HGINCP2NrvR8E9)Uz>j$H1St zmTk+9x2blxQ-X@2=iALbAFNTps~}xFbR6h-Jk|oxxg<~uNJ2%EYwdTBG~Zrie$qnx zJm(nk>rG+g;>fB9uI*=6rs;}1k`}MS7tMt^_I{2bX8tNB{{*;;#|($dnDf5pf1 z^@u%c1N6d`_%U+qEB=b7=Sa(bYh$ywJ>*lS=kT@rLHdq9fbo7iVSTV61J8|xg(WX? zG4e~hc^BDi`+EwngV|)ZqQI0n$I_KLhhsb;BWf{m$%~VeV5YbfzrS98riD7UYVa%! z&fc#`YDEo6x~&cdpjL^m65SWZZq* z5OYYY{QB1gp-sZ!iBw59*tmQcG@1MGRSY9|t`tzxc?*`}K$c zexJK=_*wh)Yvha(S-b>7zc>E{v?lE*3A)=+WHMgx0-&@0Zz1SIvK!!Dp!L=w6y?%M zOVd=g-x@j+84+%2x8L{&JWZ+k=?@t4@^b7s{9Bdgmipi^7sD~~Uw0d9~-UsDB;fK;fE|)Wd(mO z0=F5v$9?JP|Jn>x3q?gmpNols{K;Lux2&}bhqYs^G{Z|f6U?j9PrmGH$z_sn=;1C* zsVC8MpUcMW-O|PC4#HP0mp}jA^y?Rv+QqGtS)tkp&t0=+|fJio$)p8>voPmBIp(NmC|5Fc(qXZ zwdGK|NcSeu$@AEao41~iE~uRE!jtS{y1xVJP?`VwI5M<9;7a%jx7h1-4yw79zj_M8 z&uno#+uZl+N1XzH`fKbskI9TnYP{jJ8WcG<)SYCSgx$GCu?VAt*!D!H`r z)K2S|cq7jiDm?-@b&Y?55V|^5pv0;2ZG1G?S10K&^mjBnL+g_oJ_>;1ew_~w=i4HSe*5oO zxTrs|#jmgXK0YDjwYMizlQVjF9xR*SWQ_1e;r|V>9zzL}HTK>5z`{zFGeh;JwAjP0O}ewig$=Lj;eh$htFw`Opb z7?IOnqH60Q)F_2+dv>B9b1&rI53o`PoXBo&ZIzHa$2{98OI!(GQMPt1WUs{QcY)z^y|zLN!~Xj6FOXw*J$}~?x<(Ocd`hfQ>weN1fS!Kx7+m}YJL~==4S!$%; zDQ6_)UDm=$JGb1*C>%r4*q42AOb#n(|JaFJMkVu1m*0bY4i78uiswuvLG+hgVOv;) zx}`({!QIc}hzUD&#@xgvW1;r?^nc%UeIS7(3v!0BTjpD3WIB}mU>cf-I~#}x#R38OOYBnb46B9Py3%A0l@!-$gIFG) zlhwEaT7V4=E7GY?T;p`qMN!?iM^$zc3A&e%dX+qN{;Ts<95?c8+=q+qV8e$D18`bZ78dz4&ko7;Xc^IVg zdhQ9tk?Ew@dvlHOff32>7m?A_)($PJY-j3A7qqm2ov9%dS2`EKb3kURLW5=B0ik#_ z6zCw0hxH4S)aC@|{|vw~(NUo^|0o?Kr7q$6Y0ppHAie6QW$MJsb3AN#P~5gUU=B-V z##X6N%h>AS3_Q-k6nzv%&4o_p`rn|##|tRQ^Pq5LaEB9=M14b z8rfl|8v{j>y&we(PU9Ib{f7u%i&N#XOT4!S$A9&~SyuiRwVx)Lf~1$@HOWgAZQ?Z- zSS(4lCrmN0*jpW41V;j2&Sikg``f%{5K<3M(cGcex|fdJn5sy&7m_(O!W28uqg;j< zGr(qtq6%7{oFd6>WElUOp9(4}DujH=C%;M)?dtqLCD~w5Ob2Gx)|lW6{KpUpu+e@$ zW`b!jyn@j8S=3!qH=XTL&S|w#7eSsi-m}%{3HJY+2rtD@$6aH+iD#F^1j`o+=S53&^WdQutMV# za5Oh35 zQjdTAJs*0jlaBAEQ8N>#B(L;-J9^k_FB>la(0trNrFh+6+pZFkmu8i60_14L89BzM zJlO3I2OTPAG(zPlU@rdLvHiU>+Zj2z+uI#(%UEIm4F1zyP-j!+h7p^I6KXBHG0Z^p#iBt@1V+c1lw%3)urO5h^v#cucZZg0A$Sy_E4 zV&~?N4qxdjJ!tr_S^6rVmZ}C{e%AbanKu3d`F$J2( zv?En6YX(E-EiqvKMLVjDq=%r3MB;IWafpll`z(@yQ-B$qlv+l?P%nW~30+!ZtL!EW zR4)1HtP^^)K7ME#EBBx)pO#3#cT1ml0BX{7xd9-vWS8xKH#ap^M))`k+(P!M=oGc8 ziUP3irJBQE;?yu$ffd(TdXb}+0te99@?f@FKujqa3U2UyDT$EqNX?J`hU3D|LIPom z4h3WnV@b`D_G&1R;+2qP^At7bB5uyNdIT(BRp=K&jHAy%bc*KMd7DRXf0oe`4A2tmDT!4hJZ`9#Wcc) zhDRNzRj6dMNd1uXojtdST*OfrQk(g6cCj{R+W zP-J8YZu5g#*U|~H2#ZwQmqTxS#1|%BH3;wSyZ`<9(jP&@?vm8{Tnes zCuxsbq5L+*C5IY)4wzJckJ1ks4>782?2NBK{!=uVn}uG5bD#wSZ$fnk83$NL7=k?P zbNslGR9qSC@51FE`8O>b1HjXo65b~Wea--1S`ZGgu@`@h^y{(?Qugyrh7B1o?D+Rc z@^`snevCDAsdUV}AXR7V*Z8OQf0HO#6x)Vy3_BOFeL?A2#_bl*$=zd{?69 z6OgxMUUUt4_=D>tLJ>AvKU$Dd7(%t?6pAM7G`0C84sY-%2PQ1|pa{WW`h6+=>f-Xb z9@gmv?h=KU4;?~Rit3uL3DGIafvBizWU|D7h3x)nYJ`f4O26rh2>2T$;@(GcIy&?q z8A*VvOshf&p~FW(1bQ8ABr?5HT=!?uqO~~w(J!wjAFxAd&96@gu7OyHd)bSjsaHp| z@$FXx3a`Uhl!g95$!zIf2zyK@c&X#gC7MEEa_y!@+0^f1bW{X$pfI>J8QZ;mtKC9G zF2@r=c#9A=X)lcAQqo2et>E%oh54(b6JLIBB3yre@9pWVRpL6J{YoN~5ezCxHe~Q5 z`9M=1m;x=njFlC=kkevR!?GWdqGH%dFOkM-FHw<>%8~L%J{vaOO4Ij)q4-Fl&21kH zG^BtwI#Z8h{`zb?8q-^Lb&~1AO7Jc}KOYe&kBsg2XIOv0p*C%8$Ur}o7^7z%`0v{P z)5Csd3F9#l;oMwd5yp<;`93{dO%;42mm3@`7mYnQ#fJ$88w+j$WQbKXnfZ^8L=NJU zGZr;oR#tX;F&Q+#KPG{buz?GUNLHOY*0`wQuo}ye1Wk<#1R_Wq0S~gbFqQ5Ck{m&_ z0&YbaEegmSB`NThjVY%v{5h^b>7n+UDV$*GPoT=0;QNxJ>aF;U09dc)H)p`{awHRS zUjAc3)5G%i~~*;_5J#`d^Rp;WFfNZ>bSkdA1BiLX48dn9Co1Ph%xIy&=urIAgEuzdhWVZE_d>_v-b=QsQGIk?qf)*S0krSU|n+iya$K zrg^Uro{yK5k%1n|$Q*s7OwiN0>4tOv%fUc)N7sQG`GaQ(hO=<0Yb6GrlkG7V>u_EO}y zoxtF)*Lo}kFxm0rU-Lhbtub;Eyoym-tPLW1)&^PR`dy9t;nbMnC*$&XYu#Af!CiLU zX1TtI9qo5cAoe>!jM}PYe$X53b5kdLnu^6GQSem^WEZ5LZtAW9=PH)D-~*x>IQdk- z#F7CH+uuWb{99K(n7{84iW^+&%LG9JVH*B_ajD@N?CjnfxBEc}-@ku%;>%#b=uwT> z@DB3B?CVkPvW`-G6qiIyb6$=za&9N66P!}66;uUwVQVlD55S4yzrOw0x`S|xJmcnW ziljcV;m#i^fN0oK{9*bF_PpHRBTX&(X>)JpS=M;~Iv~9EaJ3SqM8A5^NV5mL-rdK?E7)ph_HX&67EMW)% z%90m|2y!qSgx9;j-`0_7d{+IN4RDzMaT_|2==O9)s^cA*?(f?0c;EgMfrO&1vEV24 zch_zdsSm7}`Cv3n7gD@z1m+RQk%X&ynHls`qL)pTs_xV<&_OY+8zPtIzN`Op#gjA$ zlq9-Qi(vn*AJee%hzE-R%T2%a8c8A5de)kZXJ4>!wLop{>Ml`c2H$b9k)X2e9~*Iu zsbH}vlw@8ffD85sXFG{e)I$*=Z+KpU+q$)y)xhT@oHVBg$dW#tDC|I=yrT|)iIV92 zt}CZk`mnAXJ1Sbb1U9?l<-Y&N%9*s!E^GPm%LIW+3O-I`az)mJjh4dr@$1V{kbkHfi4p-av&w*t83G0D9j4sGD{F)o z9|g9G{T#?5^5M$^aGAmsMfZSU^@nE#dK|-o%A@l zqg`lk+tqT5e#6m%ymiVp>it8Bbbi|svY>MAMsT9u`v^~m8A`3>y+G;@COxawWmQ0P8}+7|L zj^yR^uBb6US7;OUVD)XL)A9}ca#j@aUsnS)RAs(R4k4iaEu+x8*GGs!+lkj?SC6HDmsf4s>X=R zCwwvYGskb{C}OyHF?8-S*70~-(=%#C3(qSoq}p$PKwBxlxed0^k`yhN**@3m+F|^1 z`x7ICiDH!2NWvqA=VQ5?p;OXYa|84$CH+UlY4iK!bTsMf{Mb{cM}i|9;d*T z+-zg@(DUnH;6jC4B*({b4UEyx)x~A&jVW@4cG0r2Pnzjv*;5#6ko!UQt8`uh6E({}#Z;pY=X@X;d7CZK4ENPxmNW?NqpZ<9DxO#~d$ z+x!ax?K*6?&j=}BdA;2}dgtsOz+ag<^S};-f4~Uk-C6w9NPk>l*KEFLD@l|8MqF{n zt+VEf3qCjjra1e zc=OA`?;sYPrvcL>eXbl?wI^x#q2IYQlqU?c-BHLN4RaoM3L0B+h zH$8)I6FZWWR;{QtY?p^chf=_Dq`V`cs-}T3!uLKPQ}IP6U!57t4@WqI%Fe;TtJf?b zIyt_V)K(fHgI}w%HMDX1r6P)0QKiXg)^bSJ$;qjs5igZl1Hh24-4kkgI($DO$NR1` zF!N*a`!24MXI{PC5o% z{8C{#&htJVY~aN4ot0~E4dS3711|r2+xNnpC#o-&`%CD=h;0rB_BWQ8G#uNcm+tDggYygGeQYFGCCz?4JMjG(tAk^I3-BlzEXj2i0oWMluOYRiZWx&@!L5$ z4Y6znR>{8S0d`H)=g*&|&VS42;{)I>20?mfu>aD-%j-+C@*yCoxX*?-YC#?yZ;G-h z5*I=GZcY)TGF^u6m#ceAigF@8f2L%cdXLhvlIwBsJ#V7hyvBN~2_FI5!V>LF+bM}BW*a4XW{?_6G$v0%o;#=0*1O6SW>jDQV}&k1(v-p#q78OZIZ!Ze#- znOxZk*tBTzg%`Yekbb--de7(g8aRL;%a=#E6nWw!v9qIj1zx0$1@1?@D1tyHB=mDY zRx^?%3@{z}lrOby9x5rg`|r&>r=~y@v+d|Bk(|qfBI%@4s+5e8ky^}{qJ05eO49?A z&LY@@>3qCx`R89wW~{qkIg%6^rhfL7;miMZlY?F=??sFsKpTeb4xyoy6bYcDU*R%>=W=3@+NlyxI_dk zDm8&X7y3tAj)oR&B#1$3U1gPAg@vYfkQ$D{>S}_avPBhQ#tXzP#ym1M4jMOS83wE<20BP(DCy?T|#OtvS#%EEReeBO5# zGr_15;qV;8`U9#E<$%S^_n2A-Y^b7&cm*Q_$<$|!(b!{xF-pNN=MSR_eCllp~{0jRBXpeiCYv9*dIsc14QvvuNMDS z*nd=UTlxtVWM%l+h8_?=a8Aj{=q^8*P!W+E;(|k+-Udn@2$jWf^k}^*7kiUw0Xvwl zqey=4$3T_!loLo-2AtQzM5&0C$A1&E$G_#zV9^Soh}s3*pJM*}B$$OMM*}#y6&6vYdry+c4SI-MW?AeD(To@Usyho{x6PcNKG3L=*Sd z<$e7sSaG4%eCA!X7I?FzR_%4@{ZabK1L*r6iOIhh_>!I%&K=?|0)MCa?Nm|K!r`m` z(R9^OQFdR~Lb_8x5Ex1t=@g{9Vdxq{x*J3g1f)w^kPuM1^QB|xk?!v9{;t2ZKG&MR zTrQvIx%ZxX&OUqZgK|S+XJ-dg19BJ6!cUBN(mzc6R@Nj?lScXcWB{2d^x|R)Yh9tq z8f3x$IK=sxPqZ{Nf&(6J?V9dRh`tM?Y_6Ur(HyKQIDDyg{1M`C2$gXa`g-_8*$;SOx!Tb+< zbz1E<1Mu;`_nk?dh#namdzQto{XY)0^w!y*U zCBNlRieZgIjX7_#wm3S~-%m1xxT-i3dHSj)3~$0GJ;$@Cr`B@}zeE_UwG%#N49|Wc zE-NmOYd14w&oi69U!~sCDr#XlZEk5H&x2EO+GNPIv^SJ~owRxScbF!4T#qob5MwyA z+5=8f6}%P+e^tIh^0_>qik10c zt*eARU$J(jqZ7gLbc>r?v#P3!DtL-UcI?wz&c^v6rqZSX0LXAMzmM)R1w2ixYkoO- z`TCok;(tGA?SUeN_ZAg^XYv-_-Ug!C9L#y?gB_*sJ}vFY7p|TbB{dDm8poc>O0;Gk z4M1NeGQr>>*jq7|oUCQX^CE?)+x4wjU2(h)L_(SCa~Xzh(d+0%9~mk> z)BYCulnmMKUBB{aK2;DE_(mogwx2e+{>^iLs{FaZWGF#%93;$~GYn^?>>GYE{0n?N zr>H2rP`!W%`|OrrBrP?S9fOAQ2XA%Ni-=GDzh&g*DP>10|GN%tDX}Kqoh+r~fv3Ts zovX*VUZ|&=Y{n0FNbmE-EC1Mu9($5QwSb>O*G2MWSkuLf4S&Hos)?$)C{n?!AX+un zv%!P^@@K+aJw|4lLNAgmbT7HfYpt2=27R^;Z0RW?s4GUFK*jqX+A%mII%#4d35yS)WYR`Ky{`;vnt^ zb7IUy9fy>psLDM1nrGi5KDD^-r}`S(KWXgg*PZGf>z0qJMoUPiP`0sQy1lH$LrK7x z*6SN`rm&u3W5Nmz3JK|68T8GP8PGg8Pdbr@Nog_>RROx^3$*@hQGL|fjEaTok;y}oqYVxBs!iSr~y)Ao3Uf>C#+Xk z_tZb4?ZPCe0Z)m=$ei99I&nk&gE9yYZQJ4HGdW)NH@JUxU+zx)0i0u(5Xt#exx6yw zVwnTZmw7*b1`Ve1ZZ132zVqtVhgh3$ipQBlUQyf+1|0u2qJaD!Sm#W0%Qm33+j;2`<`)r0t9LG&Gr$Z_T9X;R!8_@cEP1 zocDJQE%iy$m6q7kzm(|W{UmK9U!|Q)=;>{3ZFTORZ+P>wz7PbT{o5-7QeJ!VQLBQd z)CJWRwKl)?>z#Yg;-MUhE>nn^aA(`zi9ZgN9*3FfpAOIyR5?ogrw$9JUrRIyUiX*< ztZYQ5w;2WaP=+gdO@3t1(3Bk4c(`fIa#@v(@Y;x7jQ!f9!hQRzN>;$Yu;?S1_v*{% zqPJO(cRgkQK_|~I&EKf0Mo~cPoncfF&X)4>Ha55;(Hz$M^XgQdT(#1W(Z7Es7`TKU z0&V4?s@<7F7gJ_l!hK-F$uWf(BAWp1Q)zMm<+bpo@4D2(xvvUyrZ=v}%!~iEj1`}^xz^J_nps- zLMhqutL0cu)$h1N-)#Yk`>d=neAH!UpAa`JTG@U`(HC$lD8M_p27_Lve9IjfJaEL@ zx8J0HJU+bJkG@We?rK&4w7G;-!c_kQn15? z=Dqnww$i5z!JZ_>yA!V^--}L|w|(Y+A{dOr@A7tfC4Bj9i>rX2glA5K^I1RT!;#?1 z@!a@Qg{j#Bs=PB6^{b=Cif@pW;z3redZOOkKMn(mWngyOgUUHGb!_D{?qgQZMe_rVC3I% z%^q4=T~v&(ZQt|zZq9f4cYjxg3SBcYWvgtJ70*YUJj5D3-e~hT%fKrDcPzKYgfoQ0 z)1Eg&?ik@PC;savVFBC#N5Aq3=y5vnX8`FNkRYTMnN~9L8L;l90^XiruUX%-pE%DD z>@vFo#}c1Cg_M+)v6p3nWw^p2vQsCY+(O)SmM z4VI{OE1NQ6Y_3TZbFBDNiaf_}Xr=emgntruiB9@Ep0zK;hCk}-`7OUID;Mb8w8^`S z`>wxe3=lphc5i8>NE=Kd9;ke;ucZr^#p>UuMr7PHxoHERD1|;(M1UAxm#zeSg-`-b zNc=>n+ku}BPP3t-q!)iACZ<*r(c~UeBJACW#;U7%OB%a7^3K z2J4`^uB++zTRPosx?JIo&hs}Y^V0! z^OaKCr!6yOCB3{BT0I)(eqYUI$#$EucZ$80!!nap)v#dGPj`9!6yycnATJ21X3JLj z<;m9*1GHta7Z(@4yuXn|q z{tmR++ihs_n`>(P(A^vN#-EOcx+uPZY7~A)mc7mkrW9Zw;ggbC+kTHZ9=r9b6h|?K z=2um@>L8i8E1LBTWiT`wH<=*l7W8YeI@oW}wl;=RI{q@MJCm_|0@K7U+TU4SWUt@a z_5bIElyAcB_khZmULv%h9W!3MNHVbiu4q%I9THpw7qt4LW;RDdX%NBhKd<%TkGdg0 zYHNEis5;fJpWK5Sv!J-xX3DSuCuanuHK*y3M(}ReXt>;Av1M+dxCj2Z%MxQ|hV}_m z)pI>7deyb@G|1}%4OSzK1M9-!Iu1xkKcp#Yf~)E|jPNgy(vWqGOdRM23S~|P4O^?c>Mq;J zC0@U0D%bh8nPsH zTl-%%m9B5E#}wxa*$yCS1gdt0I_3(?d6Ln<`R*wUJzuMWs=zzPQBJWH`+!7&bg#@uOxt==FPW7OJhsLkZk_2lJA)16K z;K!uppAY($f^mCgAIFPKLg#5^a~c~PxAG{>@WLeOc1sR%P+mB<9569jwlP{_6kh71 zpcl+$#Lvqltt%M)(YX2s-B^yqOzb^#P)=umS_}UIgX-k>1zxy=AcEjZbwBJ*>JUtV zgn>2rXB94MjT8qVeBmw|Hv+Qx5HV{>LiJ7NcCN^D8=&H}e|Wg0cj5~nVu^>PfC|Qx z^`0cDrslcOwYmQZ6;Wac~_bT zMxRH^>Ej7rA4$W|t4*Vjo?Xhgo{uSX>*Li^`}NnOU~d*TI$}!eDo3LUrkara{reYK z=@k_@|7Zqm@a?UwH+Wbyn^!Gy%$23qWQ#X<^mV5p@UM~`b;2#5?L1O^eWDIim0V`L zfH<=zy>u2ROYSyBvEaKz;sl3_9L$#sw}{W%bcm`0vSOQe-A@g+{(FAi6h3Jb5D8FG z+@?|q>R5)FQF59JvmWY^-Lc_xc0co=aRw@h(=8OCe1lzxky%pH3DvD&Af*5aZELB zb{~M{rCGeWmBMpxms5Xvl!uqWE{yXvHTS=Dj!R8y%V3W!jg3A!KXpI?5N4fvcTw94 zh6O?Mf!CT*gyML}9>?r!rH8{>QTn;@sDuJLMPSLpa|pl9OyTL{+jhMvlfLwxx8E2{ z>DWtoXKia`yjf!Kfz*>a_3X5FSLc&{JVE$?AVQySR2fL{>0lI+UaSk~XgI^Ebr)`mIrO*kkh} zy#!76XXA7Qy6O62#?{C*G(UN~Seal~T~S+Q;iXG;0|P}%OM0N&>hKYza^y3R=r9nv zE2caSD)qO2AKifStN@-^%k$s^?`bvEo}R{`m>SI3@By>Bi> zl0XpAit95!aLOv`XS6i>iV(ii;D)M}F-Hs=xC=Ox24JQQ@-SG*#YyNYS6=^N(aBFK zSRrp;X76UdsXi4p^6=m-Egf2_zyF~(Xc|9=wZK^ zXTQ75na&xC)<@bzQr>Tc0% z!uUzDkTc{!9NAa^Y9hokCoJl>#Pw^O2 zdudZxF|Fb5Fx&noi!aNS6SSwvo&QQvtBbYxZDO^@vWHV+KXHdwZ0+n($I6(uFLj(v zRPx`B+f1&wZus-aqsToIDSF%gRqEZU+^JvqyuIao5#im|E^mDJtu3)kDm_MI4@dMgT)Gy*)zBe3iTEWMbg`6m9**tw%7^?_S2>p;) z?k{68oC$hfJ_=dGWT3`w*Kai=5vX8xS_z}ajHoYa<&=ZqS*7x<@efOSIlw^iIOo)} z?RI!)nmmR0$=YmsioxF)Q^LV zZF3cBkjg$&R7d9K;?k7l#h7rIdcXT{@5K~K3v$G;lg8VY9xuy`{@>g2UVi&@;;{@- zLe2lB&Wma5p*xg#$4bf%cON*Ot3TMtWyxUB zM%}pF^vLdv41;vX_G8cH7Tf?W&Xmr5_vo+7#SDj;ovTgC00 z%Gz3E3~OYT&sAr%Z`=^qNK+fB$zWzn6xGRu{mD!tlvmNjjgEX+r*)& zsXoq+SWn_}F?wb%^64fV=Dx;07rG5_{3Y0acyLQGt_hQ=7`U4GSaQ83dDe+rBgpcI+AaT93#1ZVZ+(y2puUU%aA-fRNa3{8d-(S|;%( zRX`B~-(dHg!X4K{b;0lYte|uqTq4&OLpb7hdJsI!iN6{+k=+rWM3VCI^V26L>=B!% zQna!S43mehZf>f&y4`@pD0Ro5ZyhHC0dy%z718kZ;eZExu#JXYyj|KWj*$B6j+s0N z&n^hMq?+jawM&{`C~7(rS3eCgQ3Ew+B4x{`(;@x#sQKHi1FUQUPX}m{Y+hWIM->7; z`Z7Nk2?Z6J6k}e`CXpcnVP`>ySBxO6frsE=+ncl+TPkua?45Gb{JspMra;M4i?|(2 z+pUncl!DCO;2Yf<+gVv{kAq79`y@3hcA9YzWq9*|q0Fjwkd=D=Nfv~;z8}qPY7Op= zt+aqdpnRMJ07k-d$~=!(Oh%h54zqez89(3L$~;`u_IMt(A*1i5csA76uTvN+1bN|( z_|W>G_=+eOLu5CfXx1le0eBjSqp_FHy`?qkS!LC5|3*7|0WL=UaW@&x=XAqjX1MRw z%rJrvWz`?v`Q23{Dv^mc$DSMwM=t_=!tBin8n&d~xBfdwFR2_;6oUQ;i$hr9zPR=2u^Z z1Ovf36K_B&tbm0s@h81VtO7@Qc~l-fTTXpmWWMm=ubuZQwX?5nXX}UpJ9E^B#g+3$ zBDtg%M0`*KtodhoTT|l2hAb-onOTsM(X-o3{HChplmjGO62I6A>R*)i;4z>rce_Z^ zKT`ASxJV#ZIw z5Nk7o1WUD$+^wIcJulf%oS6vT$cEUU=m9sW-UvxN0ibVqCxG7zZs|eLE0oAl9TM^5 zAkOk2vYy|1hw}wzAcG&wW#yc(o%+lplcvQJfMtw|j^N_J0ASxc(U1jRB5pxvx3YK1 z+sjx^kI}7zeLcg&@a@c}GWd$)e5Zf$r|&M@1sa^=8K+-kEg06O0tZo5{t^-Vwy%<> zAvf~<#ajnfKUwN{m0w6Kk82y5ZI9)>covvV{OaOeQM2KpN$oA+dT&2qKDFInJ_;PB z5Q@)HV$>{TISquzUxa^J0GWJ<3{Y~|gYj0Y?`2tO#{k^ockgL2@SP*)S^aNwVWecZ z=8N;6??HwNK$}g_=r?N%glPL66ennEtRvw-Rlj~|sK33~b=)kh1tqp6n{W#HFn^>> z?&ceBO^`%l2F;|twNS{AL1bFsh5h|nG#Sbyj-r6bsVVwwbbpn`H8Ht{bQ&nat?#=4 z6}oIMb`24qawZWf${(w8dqdx(r2CgD#}FmAP>RgBabpY-}m{K9lrB_yj@&JV(S>W-a0ojJvf#}BWkY~ z7HM%`T}OfU76vOI*6Qlt@gMHxb*`eCL;F`Hbzj^WZVYEeA(ofkOA{~4xJvx~5|kzR z^&C=W!vmsVm+x}7^3tW(C^{kh^+${+`6kY7`~~G72fb$m1d!9Mfh1+X~s%>3hs%AKRoxTjDb@(|ybL*IQO@L@v6 z%9bNrDW)HXmp-b5 zU#iKFYwl&^B!q~%I2AUsd|$R#$k5><(N}AZbC(4y+KXo(zjQ@6k1PY-;aF=#K4NN$ z&(^H7g4wiOr#$bB0eBX7M)DdOIksowtTcjTv}b3hC`=;!6L@X%xYshvr(O(kImP$fMA-e4md+^5qy z#I1P>3kKEGj*aOF$w}TaeqYgt_#^SMk~Q86f870;LUd}OY`I=+ zvxSAp?2FjL;%U7W*fjJe3|Ev?GmrCNKz%2^ZRO275cNV1D+U=t=A|M)vO+42;F zRC&@Z1EDM$xsLHjZaW!;Jtm^Op#8)ZVm+_<*tyVpJYRZ?6+ zd>-PRBcld}B-`@TI2iV1`TG;gWj^BrfM-$B%7Rb8P@U5_jfES=i)RVIMTf1==M5Rp z@69-QR#q;7sWN6KHTJ2B{F0IokPxoq5DK5&sp;ze0fir}@d();1~e8HF@08gK+hzt zF8tVMj%P6G)HvT&lS=aj{LK*Ptv56@oP_9L8f;c5&kw9rvNE7-#1sNp+)G$lWD9m>?I^4kr=5Du5}CKD}6NH>3m7YJu#|d^kKhFu3ujM z$ZHO4{cviU&ZQtNsnzR#xO|wDk4`IW_fvXn4nuHbqfXPFZ!nHks#e*1B^@Hd)sIem z^R}~1JeDHDf_?|rn~z<{qMjmAh7HrP5<3_j|LwaIv%wn~K+`6IwISx<;GpSJ4aJ{2 z_^NqwxAJov^>^Z@emIPb$2TzO4fWEi{zJW_u76z%$7LtLwf+_!m+-H#Hm&{CXka%o z({`pR7S4LhZeWn%wM!U`!z_G>H`I7HBPI+W9gzS=(c2B;(fF`*2;MPIYynDdFZ;?`~;pH@&DACJ;(_wasy1Sg`WNo{C&iyvy-G!BpgirlQ-plc`|5kHJ8|-fJyREz4 z7{<09I(Gzs+Qs3bvb40clMB{|%zy_kk+W=hG@$iC7`InJeQ)F!JGY%T(`WsD)d`7Y z`ki6dHMgXH(#1RCaFe46;c$M>s~DexpySBSu5sv}iS75JMCJEyvo)6-+IBjeuRs6c zc8Vl-y3y-XEl^~!8BXR<&{RQpD9~G>ppHH2q zc?RgMAP0FJ1$?x(zh-(5XeLgh;h#j-X!}sN^0QYj)`kP$hPMNDD$pi0Mt?0p%+D*b zlRz?*h-R ziuCZEnWj~n%F2<_hMiSFl|LvG-vs&;V2JVBeI}Oy8JJkE-RzcH=^X+U(FYphUXNK`{JvGw8n5h&fIr7|E=N$V{*#(d@|O= z_Xby7Mcp6}zD+K}Nz(_eS@hH|4uYNTHdnzEhQC~MDLO`tFO zi|S4)J=m>p$OnYbv{2dr4djE?Zyn%EMd_wI&yE3564aMLk`CFQK)L7yOtOyudwxlL zv4oj%6Nb1N*k7bm;c3c|>as91LTD{m--+;XvX^ILNxr%!EM{iQ>pbk>`g6H2fP4SkSMbzb_I#^$$8WLiFDGTs1u+JO0CIAa;^ z*OJ{izspO{gZcn0Gi-_2?>|wtXyPjLcd7eoTF7teZcz1a`i6F>T?Kgbap{Vxa z9rs5vy7fQYpgZiy2Oe>=Zapc$a=yV0WdFE6yI~Tafw^QuVLK%5wAb#h*UoZ^qD+tQNf4NErr)gtcMkrCQ&eUnTh0>+s~$jWio+;kyM< zXPk&GAkfJJ4{#6V<3_8npHKUzu(>-c5EYv||BU2VX#N>S*$~cD(hB;R!lolt%n=gG z%0sQS(**kV^fX?U9bDi}Gt=#nTBH3_5O&__qRUz|A4?U6du{i$b~w6&yRHDV;s**KX3^*PVg z$bak+Y1<>YiC*B)xwp`qCIjKLXg_KwIRz)j1vm$uT+BL9!JSQ_<>TsZT#VLpic2WV zEf*G7-?<7G5SR3#?Vw!hRWrJ}hp0pa^3TUXM#l;1Ch#fCCX#SGeFF!Y8OkiG+pU zF2$C|d!MTgN`FyL3CLyQnP5hEab29`d&(%QHIuKEg`}zT{7ZOQr_06AioKlAncwG2 zj=R|W12;2oH-F&{6R3Se#v%tU2jCz@LDx;8L~PAx)Rfn~usLTqaW4jLJQ@Q*&{+S+ zlE!^KW|7UD&+i69%coFG2tDoA9Ohq#RhUg0#`S5G2EH*L{(^Jri4;yLy?70oGF>_uV9=P{r%;F$dlV4nHw}&56>c!4fuZ0vJ#g8()q6M zNxb&y8A2I^4QX3XOX$wU!Mr>Ozah)F+qqzKzFNFpxI|m9ESL>KtheFuPY%9x29;kd zb%BZK@wJelY+MOa;ls$JzCESyV#>&5>SsaWd|aG9zA z*^+dXxUe4PA_DQDBAN15Cv~aDMjO9&(Vq->Zbbt!$?%WmMh)trIeew{)U?*_;KE8N z#nJxo_6bazsmjy+r=P69)4eND%7HAA9aBi1WCZtP^-;Y{V z^_FSA5AUeOZu#c^rr_lSIhICR(kXjUQHD)xSvq+Ajq1`3<|KH?V!+u?%7598eIqEP zb*a*t`9Kr~y&DDsY8;fM%iG1;+js@K`rVSotE|WRR_w1KYL1?xn!FWzanUqP{lB~w z!*f8_B*uk-5zfAi6&jm+gByAd+;zAVy;o2ncqp9-}!$pWT-94+a%Bm}O3@FYQ~d zPnq@Hv49cd>wnQvvYzu&_+MLP+3|aLIGTP*`MNP3o@~oiSHNZ;eHJsxdD*lE>;0PI z0KW+%Q>HKE5Q@|OHtN5BVY4LrrJB-vZEisx79&Ne?%Dd~sK&ZSWcYN|&HA&-3_HLN zHUb3bwFy0kpSihf2B?FtLd1N01n1}HUp#v{XMgz%@t1;ey0tZtkV(t&a(@2{@gsGyg z+1A(So1wEkTMUyfn(aS&uy+b5{9|e-TcfPEyn3oEFsm&yy;8vi*r&)l-?`Ey z4@y2#4x<(m5W#z2HfKjWtUXV})2 zoZM-CxjD3m*;E5}Bov=ogBJDjy$u=HpkbLJOYxGZ|EiskZ)<;Q;&Ap_xtyjZtSdZV zbix0Vp8Yj7Ix)p%35Ibj1Qo&cueC~mw(Q6UfO6noL!(vZ!B+v!Keq6hWv2HIV~y?f zxA_ASf&mt|coHlr(}S_V=m@vy;|?f-lCqPu&lurOT=#Yc7-;8avJ)V74noK~8UP__q!dK(AfXESk?o+0QWe zJza(bkaVuZ{tC4nn;uYGb|i#hDx{6|c7}M9r%G`q(#0y6LMH@cKO27NC@HF&SIYF+ z=5Bd3dJIb49NH=*h)7CTwDuwtF7G{>Y_D*v7iI_-hx|1d=^z&WG5uQKb^Tl+RV0)+ z%R3>e=1oyj>#2n1c+1z3vuyY?lW=vb*eNkehPQO5WYD z0Rju(*}A_gj3?#ue_)PE6HH5WA_UAY0%#i^QJ+K{H(Bk`Y^%`F#OsvfeEzJ$%P66v zOYY8`P-Qb)C{gy1`uI!f!0_zuVz1t596bK)+E?GP4axTgF$r3v*lD-G z4o;tyIPm?_*Xrt)*^`kE0j5AGcy@M%F=KZU2rpUwjV?N~dG#wbLvvVoh^^Iw-q7ex zkBE*34{xo1!B-7%mB#@}Kza_t7&^HwGlT4ausxy z4<#kLAFPu)?@BJf`|>FgL;CgWqoMwjTZ-R(HPB2zvs)o{Sz;fuR@4a01y0FY4V-! zIP=A`Bky_sU9^fZe9X$b)(3_A&O$H71nHc9>Sflr56jSGh;32-OyZ+?S3Gw7)+=vU zg-JJn#QIpg#Gaxly2A2vKf3L`F z1mnPuWUKA8_jp&Qm7bJP#0gGp;T>)O3W#+Im1VR=D=-xi%**JrSxI zY4?xAKOafwGm!rsw5g+Rc?kZo@A&xh1L?Pk?VG2-kqhr16a!w#9I*Iu)e3RvrynFU zl>nAU6K|-ddH!ptR+`!b&>L|5ui-{xf2%5u)6@aRjPQt&vdUw@HUt)5+(v^$Y{`vWx09oengL#{_=D0}Bp9cy*t!>K> zN#Qv^b_Lj4?>M7{FSI904CM7@{ei}9(Fa@e`c=bFReg^Wm@Su6;)LcNdMdnIUpuW~ z7_bcWf5@0UMv`+TB}jsqsN24HCK8p#8=s<1ud20js5$Wrju%X=dU0T5vfo{6Wi9-k zGee3OBcZL=Ii$)0Z1eL#hsS0i0*$C(0F>m=4}I<`aJhD?U1DPtG|jS1eOWH^)m*u0 ziDY6grG_~In5tw3oR}==UcM}{pd9m#SXhx)L;!07%Z-5)eeZ1;IHNf&>DSAy7`+wW z1}%WKGzbt%1*gLBda{twOB#udR!Z+J<-6nP0Q2F@dBFQ-7fiZ+Ivu3DkS;vz-Z zij3@MPvvyUg3Q50-UTc?K7HvHEt&=VpY(X7&ab}YFxW2M(G5Q=9-?@7U^d?lS9 zT?0TdhyhELlTP9Lr%^H%zI30odqGgt&)b6wHpiMYH6Qb62^qn5oe8SYpihDsN&rCw zy!1oqBp853+5#Rg*??$|;>4@)SIPQM-nsD7+;4GX;ps>n;wW*)B(=V_uUM6p+J}0; z&NkHe-_9QY&}tBu`_xq`$@*k;*J1S=x`@zTj8A}#;M{!I;=>X8f-ejyqy)S0O%InM z=p`DKCez9%{qrb!=XGLURNMo!^P^mt29wfrYVSxXe0VUjWFTL=a)2~&Y-Xk(FjAqd z{?CELfrcE5Mi$S#(NBj$zPpU0Z1(kE<<#yR^`VX2%AuYENAmKW^Vl4%(;+*dqg98o z^43?Hn&=18?wBtLs!%!1A1;||0lwwgEYc5W`UUuFJAb!@&PK9s-UH88m&^G}$Nm-d zuk?8L6Gq~b2tSvW%Y%715E8ryVtElX=;y;TR%t@|(px~$%Z(nd*WiN-yC;8=u^h*qB9J*WB`XxQ_L$b z52Te>f(@nfb8&I07#apH{#yc9gTs9Sl7(i%Py+G(iaBCh_{JjkAHTi_e=TM6*DpKR z*%d1f`LPsh0ljK#%XqTHpy{}KSLpojA}E7Dd~C*V7gx1a$O?Ey*>tDQH&4;j@}x#c z70_zN3JGcr-B^qA*Jp}}FZR(h4ga@vgd>MZknI}%PY(cF>B^zCjFpRQs^E4BLo`(% zU}j#e2H?+CRvPaPWG4dyDRXEy=$$~Jl3-GZdcFeeV6I*voiFy}#95zJ+vsb{M3-+vw4L51-_8bxa2kX0hTg zrL}kb2Y)NA(uMG&**?Kiq-nMN-linGFfRoAr`n`g*~=F(VA0UJXo00bCv~ z7GSm*paZA@&x=YcrGlxMdc((N|InSIi={zUgh?8dR@YwrgFqG1T*xW1vNWgzOLH-5 zCoc~UvTz{rsNOlt3%W^d9Y+;8BjD<`nYCE(JchbEEPhi|4K)v@{1~H`^aWVPR#hbw zf#i61H-+DY4xN}ax1}X>Y|PnJcop*!d2)Fnr2~qvl^Xyqaj8V08KYI|4~mC?j6Zs{ zV`FizM1C^#$57iOS+BVI@ZH8mzq4631y`%Kt`=}KLcu^R)hMSYvyGL}#iC@5jN&rI zt#7`QiI8`U(O4I`8ls5N zzg6+XhMpAg3Lw5qNJvoA)9V2DPKt=105^B_m9NO1zo=3{Wi)lQXdR{g$eGfCV4~b8 z00#hv9*}^60Tw_b;3Wov(=C32$XHeQky0RlJ$Ekm3x(%LsXXfbN)3u163VJ%eIUsr zO!SkR;)?uvaWwT>iJX-;>#-aAdezUPa(z(K>SFZgJ?PO`amhiU{6MBkD4(1e)nPIm z(|vYOP_mngc$u1iPG||^@4nSmwoDlS!R?jD=&&`bCUVf$F}y(8GU?6M-Y5-Ybp`WrFFQ)FvzC zR$^rY;>M&e0o?TJRLOYbbNtj~RU)CXkc8vqkcpq`;c zrR&R()K*^1pzgxTs}b(3uKnYmQ?>~S+E|%rZ{GctsT7pibWcwYU(ujSdMmC8YC3Ad zde$%))YJDtm8HSCK}g@J!;U;)re5g$C}?k?f&Zsf2=oc9EM9mHV9J7p7@e7EFVZZQ zDL{Z571&nWd;G9|>)tpa4_WPAcBGcY<4OC&yO-3La(>ns*5fnc_H)>#cVnyq?L8=h zViuM+^uOSsz{TTWLWZJ*t2^I)+VP@9_x0tNie%~IuaSR{+bx$Y-1$!i-ute&7@4eB z2CR=0D&rq~JX|fNC?p9HGcXVaT2znkU?+u1C*g9qgRc0E(edsL;`G#$R+OeM>cwVKu!A6;G@Um2I^~Y3!R*xfuSN2A3i)!OiX<7j27&9Aqs4e^Q9^Fu_IlO zVvJD*txFy*y+I7*{;nu&l!1uzk>?Z_M*y4{#56F`7$1NX5gN!LIyD3RC=%?ywTVzaT4#gme_BRyK zi1G3H-NDyFn9Rw^na#%c&9|yI7vJ;0WEVL3_;M*_^nF93=P=n(*r8YGI&cLSS7GO^ zO-mIH5mo`dgY2v25_cu2J4a=dV2T~tWQEf?d~dEI(^VkSq84mN;QpZ!h1gMyUF+u{ z4QT_`mn5S8LSR&h7omCgfAPoO&B5Z?B0;4;e>M-J$QK}(b;{nbeYgBXmqnb$n2GM; zW||^}l{d?#%p$9k6b9e#&{hivQN4`<)s`pn{l9K|oJ3Qo2DQjml?a?mHiZr|-h$nK z45MM@veL4L$lV?~JXFgYvlVu}zwLNvo3A-2c@a(p6Wg~MMUYeBCH_YfABOtL^ zty3Si*to+#2I1lzh0&9O*{(89AdcE`q;8+Df9QYN{#1fN4jjEV^~zPhmz*1-QFgzN z+bk=maA%<+EGqXtXrFYW51*Wf0;d)|oGuG8u1(&*Dsw)HTCpsS>UM7<<1HQAw>LTM z4yf;F*QdOj9~9(uZ~S~dDInVS&rP=&@yZ#nl0&`dSz!;d1=+g-iVhBIf80t(D*(i% zLcG0T$})KHMnxA~dj&8Db&AF@QkAyM;k3)!`@QMPf?>qY-kwApkVEjDZVt1dY&;pY zqR3|pTWG+J?Ws(>8LIww0~HaC+f(8i-Qo&`J+X2}F0$x3@(la(Ay=($A&}?G1P^{a zNRmmh@z-7xOXj; zob@sWx+3K*Mj+Wn%&)|GRC9|6*$pr05Q>aCjw)fUzbC#sev#eGEnm=Y++XD$)R57ry?NcI< zM<8MekxWouXt81R|4QxF+g)4=r1ZTnD}s}elJZ}##e1zr^4mO->YjD0hd&g2|3I-bJa^TaxDCUrFFJ2sHEuyC;outas_Cvz65PBq+%itVsVJesRjQv-?Y~)c>{!TIKr6g@{Eg ziSW!7P4-zMB65*#&!C({>gD|rs080hInCoNwA#W{<2-z!aaAnH@%n~SdAT0I(1&B zw~^`=YP=?L`8M8XeifX>wAfnq9&9&ZGj^CL*eC zGH8D~xNfRINC#K5;hgT9f^xGJ3jIah+1BnaUM*-NxE4#(Lf*uysc;LjM#~B$=F*eC za$VaI?2eq)zEw4Zet@~LR7UB2%TxkFj4dmhJlHT+jRREL$0o)+2iXMGJdYPS>MT=o zu>z?m-}(&`kM9E>-C%l8!ZbRGw&>GF#Fu>7*BFJ4|F&4p&Tj6l+&6#W7(zjdbb}i$ zoaz!F7t=x-E^XB?)IEE8wNm1{OoOV0=Le1r;N256G&q2=3&Qw(Zq$*N<<@<4epCvc znNhW8M@_mzm!V+ZD}CllmoR0Md-mAV)=Pcv9f1~J1ncfDawk_J{@T)CPEI<1``Pe6(KTw_2_5@agHM7x*1NZlW8@%Vk_{YV+f9~*ILV#@8RBtkPlfx% zQ2>w^85!yKxOjDp*?S^r7xs_X7c%4w#tAu#W)+!Ea{lpb2R(T5(0u+IG?r*uRRVy) zMZ))~5*5Y}_-!(ne$=Mj9fPi-U=>s61ADaFJGWi_G*QG#8aaC5$DB=A$d7TgiP_=>lT4;w(A4x-IRJPdg@^S2xCcJ)*ZXk9%CgB*n^MZ&x)nJMxRH-078)$-rjpA%3HxB?hqj zmN;kMKs?)`kW4v~?^5~uWs9UT&FVXQO7u$F7DV@3`1G(V@)LqC#y8UuGr1s}ijAA2 z;zBRzNmi{RZ~p5&jpnTISo*3Bgd zlD_mD9@^Nrdfkz)>iCb`e^!u#z-3KHoAoinUTkapUq@E~4|gBN)#+xsPK{w=YH|+K zCpRXhySt{&IW;wHP9J7+Om}z9^rj}KnVEe5ULTy#onQQa`8?kzz8(tuE&#NK`j%Nr z1Z=pQFd+=oBVlM}Cf*rAn9Ghq+dHyibF(*@cOfIfSFJWzW7SH-Gm?OLZf35^MZRVM zu%%IcT$CIaOMW?0H&v`$qJ!DdfJK~65IKTe%hPfS$`!fN#+($szIQzu#r#z^Tz8-C z*cBqt`!0rhu(=`4U@(`Vw28fpU(FmiC;!kH{TUPSG86 z3hX3Ds*a1NcF`t@Ja6}P{+shGWO;Az;HN4@z^A?7U_&o&k;%20PiNWN(%V5R)qjT2 zgh5D{OincWHX>qdczEO%gS@Ya(wf>t+L3C-f+DJH5oG7$5IT!LWuQ{u6~m;hH6Xwa z_}O5r^mM&sEc{eer4$%wRGHHihB>xzRm&(oDO_wemY0|QO79;*q;-!wE6AkDRcNI} zuED{Os-Q-^?zJ*Uvhw*~aIy;X-LCuvgK6N;3|6V>+-LUM}EF(EL3m6?<~lhP9{+PA|cxJGuOy&CQ@DRZBz1^NWkFvsU@Eb0;UK7f({@bX$yY!=_L10Wh&sxB^ys z^V(0Fnh4C!Iz_`eWl)bQ`zU?pQ@g#A>D1qy*s1yI%J2{h5+=02)W%-An3&g~Ks+~C z<-YdSkT;m9E3ZBgsH1A#gvv2b^lRyZ4sxXD6#W%Bj1yo`PT%~mPB_y70v*A4S@aj( z3{)@w5|F609(PN$o*|Fu+$~KIznHYdb=vBWlpN}P-JY+VK#urA=WNuh0Y4JwX zLQ#-8!R>1ERpgUeBL0G3O|%_bK@voBW1XHR_ddQpJEo@SpUjn<79@^}cTMAK8R*ke zokQrfIxHmkpW{cpgFTH{<@3eAx-8bQ*1A**d^)@}8nJyUDwesg!2wY8q%nK4-d+5< z@AS$h+fL=+Kmk0l+5pNNI5jsXRy_B|4zc3Fyr1V=%5V}EhF)&kA)|H9H_~0erhgn4 zU~+U)oz`3bte8G`+rRzeU*l3Io>!axO{3)Z7}-p0Fi4CsT^5)FZoV}ROuz4laK8^x0b<2bW0Jma3@xudx@tT|a(;WT~OcCbPVkSjV1c09=(R2c#FmZNvjLu=-CITft@Cqq# znoK%(%=ie9f!TqxD_Gf)(jaACfR85aKx~i0>WNIs!n@UumSdA9&r>qbX#s#&3IVvb z#a{lKI8stk!2`lU2X2CZT#h}Ebh;@!-sje*17@@ja6baJoyO4^=Ze?@z!Dr(gxD&D`xa62Y z=x5UkfC(y`2aHOPY92Y1^Dg|pF z+uV>?p?(sBpf8ErXfCC@z?#SHP%(WKuvw5m*&FeO&2WRpvL2sA%HA*mGI;AdVt`C_ zYGEOX!V8Rb*!Gv{-Sv_$25Gf3kG@cS5j#^rdyXo~ZKz`z4JF){tsY%KpGGS&2Y;ci zTG>l^exuCNI8nJVpE$jWo5XFKS4Dl)cw;*CeJWn|ey@a!`4!j&?p(tN;6T4z#C*N# zaEfabS(5}erR4cX?Bh6;Dten-1OJwnFF=cNs?NFY(ZH;}7jyRy=R?$g&a}~ z;Ct>E#zxH&Hf?(r*D`?>R-b%IMKH#m!Xz^f|3#}+wUKSVJ!irNbAIKH8L#)_<3@%r z1)q}cE2mgMi}j{ZNprRmUOQep|9nMs`olS+5f?^mr#AeV<04Q;W&72(xgg4s1ZngT zlUo5%S7U;SF&6SzW*;S9utMbr1Bp}xiPY}aD-OSJwA<@2Uz7L`(?V%doVt}e2z$g! z#R#)OV2uufbbEWKrtO5Gkq~^y40@ax^2CPMupXlVhwh~NS;CsD<_%s@+Yh$_K?T++ z<5HdN;n0|6YiI=!mfHG0R$U@OU4jTVuc(e;0Qrs+D)IZ>sHq=T*%rS7J6-rd9B(Ez zVb7>9`T{!J2ry5?CVl9Z`;8^7EJiAg-QVR>ps6@_w3j!B|!`_}?$ro(ZCNv=7&Jz}R zmj-WUaU9Q=ugmg}eynq8Pm*x#hS~0@@+hdOuKF|S&MJ51r9gzKl!V{HyoAE8P_CV1 zBd=d%aV~q&?Y>{}G~(Ix{qq5vaAf#GBmLO8BbgeW8^cKy=4THg9D$um#XQfPHTj(K zGADL$kqkzRgyn>g_rc<=Q*;24pf)|Rbf+jW`~8Yvj}L1#GHOLp!;uDoHxm7Vn`Bs5 zYjMPT?Sl?PxyLowJR|tyn3J?$#h;?L^=wwl1y*#4th}!b3{-1$7(mketW-twhTIC4 z99l61jNE4CO7+QEqyj~~$0#?iE5pgn=RTTjps#dlY^IASFxHPpAZb~Yd91ZT#8XI& z$}t`{6=4rt021q;scMf{mS62eBgII15n1UiN|GMS3WlpkbI}T!qQrG^$EJ~#=dJVL zJM1L8_l5GfU|kMXNH=Z;C61b-oLos>WT6P;baJiX{jUmB2yP}F9G9qx0A1cOCtr8+ zY$CVQ0|p`Vsa?MT!xKNfNl>heHA72Ff%$fD?f6GyY4Uck;5>XnaV|wvLl~OA&b9Ne zM9XZ@L>c{?g*huwp^)|m@|S+$RJsr1lQh4C)>ja_diWG0@DU^&1eQ;Djv_5zQjwd` zT%~OmE;7~6AcYK4?lujk*JFd(y<=fHzSyALd^J3K0eKiHq*!a>jLG{6s*wxm9=YF{ zMog>ib2ur4^X>H6jK^c(E}__&n6Cy`aR93bKQBJ1o8JtT`2bxtV1e+;SEVOr6YN?7daNq~96ywo~5>JmV^(Q=h zEa`Pg`w|>L49ak+*X-mSBG( zs4m?k_{`9;>lB!~>S#9Wyu9B|rf=!aGi#5i*IxbmI?KjHb0_^WNOpfaykM)DwkR2| z=z~g;PPF+%vT_OeVA1rT)wEk}g1SVUIwz(W62kd62tVg{_lOm+N2DhHbm%il%|)CV z`{m%w{Rycw=6~Fn^E;kYW7A)2_}-tFil98snFf)Y#jVjHk-i(^N`tN50~6NBCcIDpK&I88 zlx;9ll@$qn_?@f@2L4Ef{sW?h6>2ARhp=>_v2=#ei##FO3YIdF)(SxCHdA7)KEMSY4tUNDg;fPhH&$)&DXwf~ z!X!J&Bs&J+`!zeplFt`Zp z?gARg;J@6Ij^Ln3&Iowon}M_-jTdHl9n?WTkUIy55K~R+tLB!exuuAohfmM{`dH>Q z;M@kaDWk~SYrRcY#+si>i6witzS)-CZ#r!iT+gDIDSv^3R~BlDR=D%~Hi39MvP~4- zP7|C-^Fl~az@t#$iLq>>ed6@sOI&rDVi8sgGsA@=KKhdnI)IrdudWrt`cWzuUzNf_ zwki;aThMCp6nHdMe=S2f9-<1pi>7t=7h(A#W=o=Vvthm&buUv2734@v$GR`Vby&`A zu%C~Td}g8`m{KilC?PO8;M;L>l(RMBX_hdYTF43dISc!FI9`4nv+8>+u&Javq>iv( zlKLf!O^eS`>Lkn|okL4y*UvU3zBM~4uc*Pd^?G7pIqP4BktFl0uijDVW3>K}=JTBK z>LX9wqfScXffMTpTmIWD?>CD!j&Z*hn5qF%mV z3tI|_q>+qG+d)4}j-~hmb9f@hbvF$fpo3r=+dL|Eid(zoT1KLl`pxVnojd)JdTp5o zy3|)+xpIx-VwyxsOUt^l%jgsePnNYqlcn*ioox-oO^G7@48g%?Tluxjz=7tq4lk;( zKhTf7cAs)U^;%e|F5$cyH+d? z>rJ3jiq>ONdaoyX9){^z1Dy_Cuz{)nf?9M8W{3f&T2K8MDhmhj*QNBrCCiDF@e7ue zq>_Bz?f& za?eAt9(jHiv~?lc()(x1^LabJte*JQ8CBkwW>I?DL2G{8hS!8<2n z>}t&x(D1L!TZ{;~mv@}kgAk@_Y)4KOL0}C$trHe8`;n!TpMvwPuKKbxRor6}&%kFCuQbz? zq(}HR(%gn%PyIeXB%f1_Tfsu`#pf5#D!DmPQHYiMY?2Nq)?_MEmXSb&^>H5 z&*haq-+IwP)F*VDj~DsCi}M&xp7GqhEg>etyfgY(IXW?OZ_n2`h*nb6Idt1Us((GB z!;X7vj=#S(B34_Zia1r|O#6*ANs=8ebus@T{RM{M?mG~^A9p;AX>T%|U}UFjX(gF$ z6|r{orA;0C+Q+3Yhta6o_nK4qU@0!_PKF)lDsksX=}G2stgDqtgR^Al*kKra6p);J zH(t-S9j>%7#x&>sR7H~m<<8fH4CoIxm*3W?#LcTI~pLR z&Jx|nTCK?*&IH70ab?`2pLkO8%uc`Zr6Q0>TVV0Q+Zup`A9c-nqLSX|!r1B%n?)E#S#m zg$w@mr^+_mo4xsDzmQ~YS1A~C#HZS-ug1XV{KUZPmtbjzQN-!6gTe;K%55kYi6#T z3}ce;9<6p4;A4|ba1%#Ed-UOfBfyAHgXOtEXjnVbxsUJacj~$I&94(?b6e?XQBHKx z=m;1txX;SqhQO1_$7M0Jf_`qDdgWR5e#VCT@{p~?g5cx4A}8W?lr^bEDg2=5{!<;o z+Lp1I=3`2wh`|UF#w6p9!5@RmlB#TWhWI+)cJK(;?P0gqKKcIlG94e1?7MB6X~0(4 zEGYD)6ULiLV8E_F)2}KN82I%H@ftKU#3o2#t0g>V0&X5R6Y898=-WTk73MUYUZS4P z=dNV1W<@!Yvuy|s&7Wz;2hG6n&xyY2Z?{vJbDsm)qUKK%de_Oyr zx1HX%A3mY^Q6Nc$=!rA-0PfGQKRcS=&%JIvK?LmuVgCzQO;_Y8O?PKmfaKBLb0 z-5%dBMCa3sN3=@-9{vY?*if2g*Lo0K@Y?tf%`T8(*2S7x50e!2HQScnYxCWyfsHz` zjz_TxhS6R^ySWV=qT$3N(Qu|Ig05~MKsp{OjF|L4Wy1x-fB7CDxRZdr7T_jpNG!Zw zl^_lGC!pTwj$Mh|9B3yKT2i)Yjd8)P*F@!Y5Swh10wR5Hqc50{!D%_R#ifPz`x*6m zQSDFIqsKWh|Nf|vM)$A!uYsKEW~&RecaE(y?HwQ5!@=t`yEg&U7xAK$sNVIRU5A0a zl^+SV`m*q5wlwoim6C^yze>B=_(i%yXy$VZ_`c@xZv}oqXlI-8u&9lgN z^~eM3+hW=zMK@}I3UtTs0<-TcLl6fF{dIvNR(^UWj$?}p{=M%>fg4LH3Rk6Y1T5=o3CmR><5gueikylCr%&{@CJe4OfwPqG_C zkF(!X=p#S!8Cq`j29Sm+*ECdK`t`gTXYjZxL!{NV+!y%=7L`2t) z&jGz3(8ur>>#h|Y(K>}SIy76-!*nEgE>}^Fq`>J-3Q=BbhJJ%ND|y=PK_15CF`QJV zuF_<98Ly^~EI%)@v&R#H%YB&|u)~W~>Z3fLY-4sMAOnh3eP_VHziRXi0vd=3Ei2P$ zK1UPhf>V;Ja&w`~45q^} z&@c>y2@`Um5}~L>8fBJDn$TG~o#7MTNmeTi!S{_s=gkaw_!3}Hx))v3(o-HYC&+`l9gjAD=Y*f6mxPAn zy9Zpb!EWUYGB-JUJdE|D%uk41r4Oqj*#pBu4_S`$l;WG%xggYY3 z|IB^kzK!@Oeo6Um|FQDX649E%DS`iFh}sjp!XnC=k)M&a+ut`XT0)}Y_}g&@%nwL} z{9%X9ho_i0S-x(1FNJ>V)&oY*bj(JWZkT#%h8p)ts^np(lEahLn^kC0y>mo0@2cB) zJ_?JFVz;fu+}RI(JI9~1Y+Rb;vwqb$((z+)X5gVe)7C_8LQDIFNcPovq4LeuwwCk{ z(zM&GJ_a=v57WkKyk|XO~0w4#KW`j@B^+fgnsD`qpwa=EKq7 zRJ@(xvbT6t_m`5&vbR`yGr#X|A!rbmHcR?!O_Kzpl@N}fH)##WV*uskgg4g?T%8#> zSQl-v5xhCNvYiXk-hO>$T}FAwMN%8q5wis0%M zb0fA$$1R7R(eK{u%mmEuQ(?ohvhbz$V<0@~i`vxRLS}Une%6t$&V-}>KAwcG;SEi* z9i)2iWBW_n7@HIrbZ|!Zl}UJP{2St%1H3#S34@?WLStCiSIxE2!gr(`C9DWzwldvTQVsvnFq&ZEa*?0P+#RmUV{_aOx@z^#a z&}^UX8Y!j66nOMFT9bI0hQ4ogjbbA_85*T4YJC`l##-F>PL!Sn#kIaoklAm_^U((W zNdjPeA5I;>s0g%ieG)AUnC_EbJe|7D|lV&~K`>X!lV3y>t6!I|~5{!Pq&{F|NNg4c3Zz3SogWxih zQ+XNmZ59SZ_oCa;4;JBF{cH&IwF9M^&$1Bm<$$=XspQJEPvn*&8U!D`xBLJ{{ z*r27>24vCNJonjmT7|PvG&%f_DFC%_1GJ_U+wv6Qu8W30quV z-~A;pFKBvYw(=ISJfuL!e*s7UIE8StON4q_9-h=#~yZ< z+-z1~WUX`nZpM)4h}~DEQRCqyKgyTKmhVxo@VEI}@JXbr>Ef>G{d$mEE#h3dAbonF z%v!a)kUWxx;D4g6*E?IP<|BNP>K5 z{gEeH$+#(DO&f8;&np#$!uN;|Lw_v*!3vOg!T`5$`wg|mYuTd#`l@RznHzP?QP%hA z{`dx378}jY;_Wx7A>rGC^NO5Z-f>@z$>Q;WRn}cYqq90kA`?ZCU=(cx^~Z4uu0)U5 zmMW_h*0NB!x$7=G?n^L^{SkOk-O7{6tHSI&?0?ULMjVqHJ}%`YBwg?n%jIg6Puyqa ztZ_F*QPK0F5M8g&X*uL4+2xk4Y_x4|V7vts7Zj95%_*wz_#5v|z4OKuy)1&QK`Nf4 zqlT%hv!n={RD@_b*n^1a-(E&$~MzcjaZnUebtK*Y|U`poq z!fW^C**J0CWgqfHv@A0Hj=QbruR8ypBnKXDetd}wYFoVs&XPe=!gQHwXgVJqb+_VoBPJ3&wj^Z9g6JTFiP> z{a_U%sjl0pHG%s^i7brhx0u$TiW~r} zpqY)VEFnM;<+t4Y}n6R}+Q#`s%o?mkESE*=yapS#4W0t1*k*4}#O)~n&qjTdb9uwj54?cCB;ZYX=c5pwL(-xHG@ z--*hVrms4eiq`z$MKS#eFsDx=HYs< zyL&4-V8gC%gsCs6b5oErWOWQM3!4v&GhX&H-p6&^xY56TTT5@ao4?*qS6xW;^LqDe zQhz$?w`(ieC%qU5G=>!Uiw3J4#DIb7eC8!255N7c|F+LM-83fV8%5(Kg>7Mg97sxE z&L4jur-?8<=pV0C)23MCU5^+`lCs;Rat)ne+Hc~}hUF1e)rdrWv{IWvB;_s6qCg^$ zs&amBV5-pY_>TT*m@19<^|~0VkC&{={jC1U422_L&OkorraB?UZxZ`+e*Uwsh89o$ zaKHYgO`h(Y;YQ8(1oNI)dbe$)uf@UQwHbYqwSFZO^tpp_`f`;@~FS0fUD8mtTkk$|S%HPW(` zr6EW1f?Lt|p-MO@%pY)i=!{O{;qBRH0!m;!BCcp&~FiHCBu>LGf5_ltuY`axVY@a_K$NGVqzFa;krE6a#mcCEDMu2KzK#nnvSX0I7RLunX&!6zZ{GvG zg?%{6qrQIrloCKPzMgnr-M0j3Ca%PK(^|hW*tyv@BV+XajWdh8~ zl#>XrQMDfokMINDGLpPg#RXe6a|E3eAQ>p|17ye_zz-eDcmRum-DUZNJ|H2UZN-4B zMF9XU=)`TAg)iio#Ryw~C+t!U;28-0zeAT;?^4!)vXtj@>y!3Vc;F(IO_To(=2h^= zO862=5B1ErX-{(R{PTI&y7e%XUo3px3AuKv+^GizS>TBn0>(Wmm=b;3`FS0$RsILJ z&eg7tU7J&e2GlKyO)j$ne(1 zynh6um2WF2(&94`Ws?0=bG&Wq@5j7lh%tM=AcMy9njr$n4u%>Tw&=isQ$iTf^GqCX z*-&P9VG>XZol#tH0N+TA2fMO%S)&d&YPrLqqRQS$>R3RDJ^LQ?tpEF-P0igWG~i1` L5vouLF@yaF`QC3= literal 0 HcmV?d00001 diff --git a/vendor/github.com/exoscale/egoscale/iam_apikey.go b/vendor/github.com/exoscale/egoscale/iam_apikey.go new file mode 100644 index 000000000..23cf2a934 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/iam_apikey.go @@ -0,0 +1,92 @@ +package egoscale + +// APIKeyType holds the type of the API key +type APIKeyType string + +const ( + // APIKeyTypeUnrestricted is unrestricted + APIKeyTypeUnrestricted APIKeyType = "unrestricted" + // APIKeyTypeRestricted is restricted + APIKeyTypeRestricted APIKeyType = "restricted" +) + +// APIKey represents an API key +type APIKey struct { + Name string `json:"name"` + Key string `json:"key"` + Secret string `json:"secret,omitempty"` + Operations []string `json:"operations,omitempty"` + Resources []string `json:"resources,omitempty"` + Type APIKeyType `json:"type"` +} + +// CreateAPIKey represents an API key creation +type CreateAPIKey struct { + Name string `json:"name"` + Operations string `json:"operations,omitempty"` + Resources string `json:"resources,omitempty"` + _ bool `name:"createApiKey" description:"Create an API key."` +} + +// Response returns the struct to unmarshal +func (CreateAPIKey) Response() interface{} { + return new(APIKey) +} + +// ListAPIKeys represents a search for API keys +type ListAPIKeys struct { + _ bool `name:"listApiKeys" description:"List API keys."` +} + +// ListAPIKeysResponse represents a list of API keys +type ListAPIKeysResponse struct { + Count int `json:"count"` + APIKeys []APIKey `json:"apikey"` +} + +// Response returns the struct to unmarshal +func (ListAPIKeys) Response() interface{} { + return new(ListAPIKeysResponse) +} + +// ListAPIKeyOperations represents a search for operations for the current API key +type ListAPIKeyOperations struct { + _ bool `name:"listApiKeyOperations" description:"List operations allowed for the current API key."` +} + +// ListAPIKeyOperationsResponse represents a list of operations for the current API key +type ListAPIKeyOperationsResponse struct { + Operations []string `json:"operations"` +} + +// Response returns the struct to unmarshal +func (ListAPIKeyOperations) Response() interface{} { + return new(ListAPIKeyOperationsResponse) +} + +// GetAPIKey get an API key +type GetAPIKey struct { + Key string `json:"key"` + _ bool `name:"getApiKey" description:"Get an API key."` +} + +// Response returns the struct to unmarshal +func (GetAPIKey) Response() interface{} { + return new(APIKey) +} + +// RevokeAPIKey represents a revocation of an API key +type RevokeAPIKey struct { + Key string `json:"key"` + _ bool `name:"revokeApiKey" description:"Revoke an API key."` +} + +// RevokeAPIKeyResponse represents the response to an API key revocation +type RevokeAPIKeyResponse struct { + Success bool `json:"success"` +} + +// Response returns the struct to unmarshal +func (RevokeAPIKey) Response() interface{} { + return new(RevokeAPIKeyResponse) +} diff --git a/vendor/github.com/exoscale/egoscale/instance_groups.go b/vendor/github.com/exoscale/egoscale/instance_groups.go new file mode 100644 index 000000000..52bffba9a --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/instance_groups.go @@ -0,0 +1,71 @@ +package egoscale + +// InstanceGroup represents a group of VM +type InstanceGroup struct { + Account string `json:"account,omitempty" doc:"the account owning the instance group"` + Created string `json:"created,omitempty" doc:"time and date the instance group was created"` + ID *UUID `json:"id,omitempty" doc:"the id of the instance group"` + Name string `json:"name,omitempty" doc:"the name of the instance group"` +} + +// ListRequest builds the ListInstanceGroups request +func (ig InstanceGroup) ListRequest() (ListCommand, error) { + req := &ListInstanceGroups{ + ID: ig.ID, + Name: ig.Name, + } + + return req, nil +} + +// CreateInstanceGroup creates a VM group +type CreateInstanceGroup struct { + Name string `json:"name" doc:"the name of the instance group"` + _ bool `name:"createInstanceGroup" description:"Creates a vm group"` +} + +// Response returns the struct to unmarshal +func (CreateInstanceGroup) Response() interface{} { + return new(InstanceGroup) +} + +// UpdateInstanceGroup updates a VM group +type UpdateInstanceGroup struct { + ID *UUID `json:"id" doc:"Instance group ID"` + Name string `json:"name,omitempty" doc:"new instance group name"` + _ bool `name:"updateInstanceGroup" description:"Updates a vm group"` +} + +// Response returns the struct to unmarshal +func (UpdateInstanceGroup) Response() interface{} { + return new(InstanceGroup) +} + +// DeleteInstanceGroup deletes a VM group +type DeleteInstanceGroup struct { + ID *UUID `json:"id" doc:"the ID of the instance group"` + _ bool `name:"deleteInstanceGroup" description:"Deletes a vm group"` +} + +// Response returns the struct to unmarshal +func (DeleteInstanceGroup) Response() interface{} { + return new(BooleanResponse) +} + +//go:generate go run generate/main.go -interface=Listable ListInstanceGroups + +// ListInstanceGroups lists VM groups +type ListInstanceGroups struct { + ID *UUID `json:"id,omitempty" doc:"List instance groups by ID"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"List instance groups by name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + _ bool `name:"listInstanceGroups" description:"Lists vm groups"` +} + +// ListInstanceGroupsResponse represents a list of instance groups +type ListInstanceGroupsResponse struct { + Count int `json:"count"` + InstanceGroup []InstanceGroup `json:"instancegroup"` +} diff --git a/vendor/github.com/exoscale/egoscale/instance_pool.go b/vendor/github.com/exoscale/egoscale/instance_pool.go new file mode 100644 index 000000000..9c415654f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/instance_pool.go @@ -0,0 +1,170 @@ +package egoscale + +// InstancePoolState represents the state of an Instance Pool. +type InstancePoolState string + +const ( + // InstancePoolCreating creating state. + InstancePoolCreating InstancePoolState = "creating" + // InstancePoolRunning running state. + InstancePoolRunning InstancePoolState = "running" + // InstancePoolDestroying destroying state. + InstancePoolDestroying InstancePoolState = "destroying" + // InstancePoolScalingUp scaling up state. + InstancePoolScalingUp InstancePoolState = "scaling-up" + // InstancePoolScalingDown scaling down state. + InstancePoolScalingDown InstancePoolState = "scaling-down" +) + +// InstancePool represents an Instance Pool. +type InstancePool struct { + ID *UUID `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + ServiceOfferingID *UUID `json:"serviceofferingid"` + TemplateID *UUID `json:"templateid"` + ZoneID *UUID `json:"zoneid"` + AntiAffinityGroupIDs []UUID `json:"affinitygroupids"` + SecurityGroupIDs []UUID `json:"securitygroupids"` + NetworkIDs []UUID `json:"networkids"` + IPv6 bool `json:"ipv6"` + KeyPair string `json:"keypair"` + UserData string `json:"userdata"` + Size int `json:"size"` + RootDiskSize int `json:"rootdisksize"` + State InstancePoolState `json:"state"` + VirtualMachines []VirtualMachine `json:"virtualmachines"` +} + +// CreateInstancePool represents an Instance Pool creation API request. +type CreateInstancePool struct { + Name string `json:"name"` + Description string `json:"description,omitempty"` + ServiceOfferingID *UUID `json:"serviceofferingid"` + TemplateID *UUID `json:"templateid"` + ZoneID *UUID `json:"zoneid"` + AntiAffinityGroupIDs []UUID `json:"affinitygroupids,omitempty"` + SecurityGroupIDs []UUID `json:"securitygroupids,omitempty"` + NetworkIDs []UUID `json:"networkids,omitempty"` + IPv6 bool `json:"ipv6,omitempty"` + KeyPair string `json:"keypair,omitempty"` + UserData string `json:"userdata,omitempty"` + Size int `json:"size"` + RootDiskSize int `json:"rootdisksize,omitempty"` + _ bool `name:"createInstancePool" description:"Create an Instance Pool"` +} + +// CreateInstancePoolResponse represents an Instance Pool creation API response. +type CreateInstancePoolResponse struct { + ID *UUID `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + ServiceOfferingID *UUID `json:"serviceofferingid"` + TemplateID *UUID `json:"templateid"` + ZoneID *UUID `json:"zoneid"` + AntiAffinityGroupIDs []UUID `json:"affinitygroupids"` + SecurityGroupIDs []UUID `json:"securitygroupids"` + NetworkIDs []UUID `json:"networkids"` + IPv6 bool `json:"ipv6"` + KeyPair string `json:"keypair"` + UserData string `json:"userdata"` + Size int64 `json:"size"` + RootDiskSize int `json:"rootdisksize"` + State InstancePoolState `json:"state"` +} + +// Response returns an empty structure to unmarshal an Instance Pool creation API response into. +func (CreateInstancePool) Response() interface{} { + return new(CreateInstancePoolResponse) +} + +// UpdateInstancePool represents an Instance Pool update API request. +type UpdateInstancePool struct { + ID *UUID `json:"id"` + ZoneID *UUID `json:"zoneid"` + Name string `json:"name,omitempty"` + Description string `json:"description,omitempty"` + TemplateID *UUID `json:"templateid,omitempty"` + RootDiskSize int `json:"rootdisksize,omitempty"` + UserData string `json:"userdata,omitempty"` + IPv6 bool `json:"ipv6,omitempty"` + _ bool `name:"updateInstancePool" description:"Update an Instance Pool"` +} + +// Response returns an empty structure to unmarshal an Instance Pool update API response into. +func (UpdateInstancePool) Response() interface{} { + return new(BooleanResponse) +} + +// ScaleInstancePool represents an Instance Pool scaling API request. +type ScaleInstancePool struct { + ID *UUID `json:"id"` + ZoneID *UUID `json:"zoneid"` + Size int `json:"size"` + _ bool `name:"scaleInstancePool" description:"Scale an Instance Pool"` +} + +// Response returns an empty structure to unmarshal an Instance Pool scaling API response into. +func (ScaleInstancePool) Response() interface{} { + return new(BooleanResponse) +} + +// DestroyInstancePool represents an Instance Pool destruction API request. +type DestroyInstancePool struct { + ID *UUID `json:"id"` + ZoneID *UUID `json:"zoneid"` + _ bool `name:"destroyInstancePool" description:"Destroy an Instance Pool"` +} + +// Response returns an empty structure to unmarshal an Instance Pool destruction API response into. +func (DestroyInstancePool) Response() interface{} { + return new(BooleanResponse) +} + +// GetInstancePool retrieves an Instance Pool's details. +type GetInstancePool struct { + ID *UUID `json:"id"` + ZoneID *UUID `json:"zoneid"` + _ bool `name:"getInstancePool" description:"Get an Instance Pool"` +} + +// GetInstancePoolResponse get Instance Pool API response. +type GetInstancePoolResponse struct { + Count int + InstancePools []InstancePool `json:"instancepool"` +} + +// Response returns an empty structure to unmarshal an Instance Pool get API response into. +func (GetInstancePool) Response() interface{} { + return new(GetInstancePoolResponse) +} + +// ListInstancePools represents a list Instance Pool API request. +type ListInstancePools struct { + ZoneID *UUID `json:"zoneid"` + _ bool `name:"listInstancePools" description:"List Instance Pools"` +} + +// ListInstancePoolsResponse represents a list Instance Pool API response. +type ListInstancePoolsResponse struct { + Count int + InstancePools []InstancePool `json:"instancepool"` +} + +// Response returns an empty structure to unmarshal an Instance Pool list API response into. +func (ListInstancePools) Response() interface{} { + return new(ListInstancePoolsResponse) +} + +// EvictInstancePoolMembers represents an Instance Pool members eviction API request. +type EvictInstancePoolMembers struct { + ID *UUID `json:"id"` + ZoneID *UUID `json:"zoneid"` + MemberIDs []UUID `json:"memberids"` + _ bool `name:"evictInstancePoolMembers" description:"Evict some Instance Pool members"` +} + +// Response returns an empty structure to unmarshal an Instance Pool members eviction API response into. +func (EvictInstancePoolMembers) Response() interface{} { + return new(BooleanResponse) +} diff --git a/vendor/github.com/exoscale/egoscale/instancegroups_response.go b/vendor/github.com/exoscale/egoscale/instancegroups_response.go new file mode 100644 index 000000000..90fc1dbac --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/instancegroups_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListInstanceGroups) Response() interface{} { + return new(ListInstanceGroupsResponse) +} + +// ListRequest returns itself +func (ls *ListInstanceGroups) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListInstanceGroups) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListInstanceGroups) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListInstanceGroups) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListInstanceGroupsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListInstanceGroupsResponse was expected, got %T", resp)) + return + } + + for i := range items.InstanceGroup { + if !callback(&items.InstanceGroup[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/isos.go b/vendor/github.com/exoscale/egoscale/isos.go new file mode 100644 index 000000000..9eda54f2f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/isos.go @@ -0,0 +1,94 @@ +package egoscale + +// ISO represents an attachable ISO disc +type ISO Template + +// ResourceType returns the type of the resource +func (ISO) ResourceType() string { + return "ISO" +} + +// ListRequest produces the ListIsos command. +func (iso ISO) ListRequest() (ListCommand, error) { + req := &ListISOs{ + ID: iso.ID, + Name: iso.Name, + ZoneID: iso.ZoneID, + } + if iso.Bootable { + *req.Bootable = true + } + if iso.IsFeatured { + req.IsoFilter = "featured" + } + if iso.IsPublic { + *req.IsPublic = true + } + if iso.IsReady { + *req.IsReady = true + } + + for i := range iso.Tags { + req.Tags = append(req.Tags, iso.Tags[i]) + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListISOs + +// ListISOs represents the list all available ISO files request +type ListISOs struct { + _ bool `name:"listIsos" description:"Lists all available ISO files."` + Bootable *bool `json:"bootable,omitempty" doc:"True if the ISO is bootable, false otherwise"` + ID *UUID `json:"id,omitempty" doc:"List ISO by id"` + IsoFilter string `json:"isofilter,omitempty" doc:"Possible values are \"featured\", \"self\", \"selfexecutable\",\"sharedexecutable\",\"executable\", and \"community\". * featured : templates that have been marked as featured and public. * self : templates that have been registered or created by the calling user. * selfexecutable : same as self, but only returns templates that can be used to deploy a new VM. * sharedexecutable : templates ready to be deployed that have been granted to the calling user by another user. * executable : templates that are owned by the calling user, or public templates, that can be used to deploy a VM. * community : templates that have been marked as public but not featured. * all : all templates (only usable by admins)."` + IsPublic *bool `json:"ispublic,omitempty" doc:"True if the ISO is publicly available to all users, false otherwise."` + IsReady *bool `json:"isready,omitempty" doc:"True if this ISO is ready to be deployed"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"List all isos by name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ShowRemoved *bool `json:"showremoved,omitempty" doc:"Show removed ISOs as well"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + ZoneID *UUID `json:"zoneid,omitempty" doc:"The ID of the zone"` +} + +// ListISOsResponse represents a list of ISO files +type ListISOsResponse struct { + Count int `json:"count"` + ISO []ISO `json:"iso"` +} + +// AttachISO represents the request to attach an ISO to a virtual machine. +type AttachISO struct { + _ bool `name:"attachIso" description:"Attaches an ISO to a virtual machine."` + ID *UUID `json:"id" doc:"the ID of the ISO file"` + VirtualMachineID *UUID `json:"virtualmachineid" doc:"the ID of the virtual machine"` +} + +// Response returns the struct to unmarshal +func (AttachISO) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (AttachISO) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// DetachISO represents the request to detach an ISO to a virtual machine. +type DetachISO struct { + _ bool `name:"detachIso" description:"Detaches any ISO file (if any) currently attached to a virtual machine."` + VirtualMachineID *UUID `json:"virtualmachineid" doc:"The ID of the virtual machine"` +} + +// Response returns the struct to unmarshal +func (DetachISO) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DetachISO) AsyncResponse() interface{} { + return new(VirtualMachine) +} diff --git a/vendor/github.com/exoscale/egoscale/isos_response.go b/vendor/github.com/exoscale/egoscale/isos_response.go new file mode 100644 index 000000000..2faa45a88 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/isos_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListISOs) Response() interface{} { + return new(ListISOsResponse) +} + +// ListRequest returns itself +func (ls *ListISOs) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListISOs) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListISOs) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListISOs) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListISOsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListISOsResponse was expected, got %T", resp)) + return + } + + for i := range items.ISO { + if !callback(&items.ISO[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/jobstatustype_string.go b/vendor/github.com/exoscale/egoscale/jobstatustype_string.go new file mode 100644 index 000000000..12401c454 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/jobstatustype_string.go @@ -0,0 +1,25 @@ +// Code generated by "stringer -type JobStatusType"; DO NOT EDIT. + +package egoscale + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[Pending-0] + _ = x[Success-1] + _ = x[Failure-2] +} + +const _JobStatusType_name = "PendingSuccessFailure" + +var _JobStatusType_index = [...]uint8{0, 7, 14, 21} + +func (i JobStatusType) String() string { + if i < 0 || i >= JobStatusType(len(_JobStatusType_index)-1) { + return "JobStatusType(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _JobStatusType_name[_JobStatusType_index[i]:_JobStatusType_index[i+1]] +} diff --git a/vendor/github.com/exoscale/egoscale/macaddress.go b/vendor/github.com/exoscale/egoscale/macaddress.go new file mode 100644 index 000000000..3c1dcaea4 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/macaddress.go @@ -0,0 +1,63 @@ +package egoscale + +import ( + "encoding/json" + "fmt" + "net" +) + +// MACAddress is a nicely JSON serializable net.HardwareAddr +type MACAddress net.HardwareAddr + +// String returns the MAC address in standard format +func (mac MACAddress) String() string { + return (net.HardwareAddr)(mac).String() +} + +// MAC48 builds a MAC-48 MACAddress +func MAC48(a, b, c, d, e, f byte) MACAddress { + m := make(MACAddress, 6) + m[0] = a + m[1] = b + m[2] = c + m[3] = d + m[4] = e + m[5] = f + return m +} + +// UnmarshalJSON unmarshals the raw JSON into the MAC address +func (mac *MACAddress) UnmarshalJSON(b []byte) error { + var addr string + if err := json.Unmarshal(b, &addr); err != nil { + return err + } + hw, err := ParseMAC(addr) + if err != nil { + return err + } + + *mac = make(MACAddress, 6) + copy(*mac, hw) + return nil +} + +// MarshalJSON converts the MAC Address to a string representation +func (mac MACAddress) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf("%q", mac.String())), nil +} + +// ParseMAC converts a string into a MACAddress +func ParseMAC(s string) (MACAddress, error) { + hw, err := net.ParseMAC(s) + return (MACAddress)(hw), err +} + +// MustParseMAC acts like ParseMAC but panics if in case of an error +func MustParseMAC(s string) MACAddress { + mac, err := ParseMAC(s) + if err != nil { + panic(err) + } + return mac +} diff --git a/vendor/github.com/exoscale/egoscale/networks.go b/vendor/github.com/exoscale/egoscale/networks.go new file mode 100644 index 000000000..7a454a450 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/networks.go @@ -0,0 +1,221 @@ +package egoscale + +import ( + "net" + "net/url" +) + +// Network represents a network +// +// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/networking_and_traffic.html +type Network struct { + Account string `json:"account,omitempty" doc:"the owner of the network"` + AccountID *UUID `json:"accountid,omitempty" doc:"the owner ID of the network"` + BroadcastDomainType string `json:"broadcastdomaintype,omitempty" doc:"Broadcast domain type of the network"` + BroadcastURI string `json:"broadcasturi,omitempty" doc:"broadcast uri of the network."` + CanUseForDeploy bool `json:"canusefordeploy,omitempty" doc:"list networks available for vm deployment"` + CIDR *CIDR `json:"cidr,omitempty" doc:"Cloudstack managed address space, all CloudStack managed VMs get IP address from CIDR"` + DisplayText string `json:"displaytext,omitempty" doc:"the displaytext of the network"` + DNS1 net.IP `json:"dns1,omitempty" doc:"the first DNS for the network"` + DNS2 net.IP `json:"dns2,omitempty" doc:"the second DNS for the network"` + EndIP net.IP `json:"endip,omitempty" doc:"the ending IP address in the network IP range. Required for managed networks."` + Gateway net.IP `json:"gateway,omitempty" doc:"the network's gateway"` + ID *UUID `json:"id,omitempty" doc:"the id of the network"` + IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the cidr of IPv6 network"` + IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of IPv6 network"` + IsDefault bool `json:"isdefault,omitempty" doc:"true if network is default, false otherwise"` + IsPersistent bool `json:"ispersistent,omitempty" doc:"list networks that are persistent"` + IsSystem bool `json:"issystem,omitempty" doc:"true if network is system, false otherwise"` + Name string `json:"name,omitempty" doc:"the name of the network"` + Netmask net.IP `json:"netmask,omitempty" doc:"the network's netmask"` + NetworkCIDR *CIDR `json:"networkcidr,omitempty" doc:"the network CIDR of the guest network configured with IP reservation. It is the summation of CIDR and RESERVED_IP_RANGE"` + NetworkDomain string `json:"networkdomain,omitempty" doc:"the network domain"` + PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"the physical network id"` + Related string `json:"related,omitempty" doc:"related to what other network configuration"` + ReservedIPRange string `json:"reservediprange,omitempty" doc:"the network's IP range not to be used by CloudStack guest VMs and can be used for non CloudStack purposes"` + RestartRequired bool `json:"restartrequired,omitempty" doc:"true network requires restart"` + Service []Service `json:"service,omitempty" doc:"the list of services"` + SpecifyIPRanges bool `json:"specifyipranges,omitempty" doc:"true if network supports specifying ip ranges, false otherwise"` + StartIP net.IP `json:"startip,omitempty" doc:"the beginning IP address in the network IP range. Required for managed networks."` + State string `json:"state,omitempty" doc:"state of the network"` + StrechedL2Subnet bool `json:"strechedl2subnet,omitempty" doc:"true if network can span multiple zones"` + SubdomainAccess bool `json:"subdomainaccess,omitempty" doc:"true if users from subdomains can access the domain level network"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with network"` + TrafficType string `json:"traffictype,omitempty" doc:"the traffic type of the network"` + Type string `json:"type,omitempty" doc:"the type of the network"` + Vlan string `json:"vlan,omitempty" doc:"The vlan of the network. This parameter is visible to ROOT admins only"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"zone id of the network"` + ZoneName string `json:"zonename,omitempty" doc:"the name of the zone the network belongs to"` + ZonesNetworkSpans []Zone `json:"zonesnetworkspans,omitempty" doc:"If a network is enabled for 'streched l2 subnet' then represents zones on which network currently spans"` +} + +// ListRequest builds the ListNetworks request +func (network Network) ListRequest() (ListCommand, error) { + req := &ListNetworks{ + ID: network.ID, + Keyword: network.Name, // this is a hack as listNetworks doesn't support to search by name. + PhysicalNetworkID: network.PhysicalNetworkID, + TrafficType: network.TrafficType, + Type: network.Type, + ZoneID: network.ZoneID, + } + + if network.CanUseForDeploy { + req.CanUseForDeploy = &network.CanUseForDeploy + } + if network.RestartRequired { + req.RestartRequired = &network.RestartRequired + } + + return req, nil +} + +// ResourceType returns the type of the resource +func (Network) ResourceType() string { + return "Network" +} + +// Service is a feature of a network +type Service struct { + Capability []ServiceCapability `json:"capability,omitempty"` + Name string `json:"name"` + Provider []ServiceProvider `json:"provider,omitempty"` +} + +// ServiceCapability represents optional capability of a service +type ServiceCapability struct { + CanChooseServiceCapability bool `json:"canchooseservicecapability"` + Name string `json:"name"` + Value string `json:"value"` +} + +// ServiceProvider represents the provider of the service +type ServiceProvider struct { + CanEnableIndividualService bool `json:"canenableindividualservice"` + DestinationPhysicalNetworkID *UUID `json:"destinationphysicalnetworkid"` + ID *UUID `json:"id"` + Name string `json:"name"` + PhysicalNetworkID *UUID `json:"physicalnetworkid"` + ServiceList []string `json:"servicelist,omitempty"` +} + +// CreateNetwork creates a network +type CreateNetwork struct { + DisplayText string `json:"displaytext,omitempty" doc:"the display text of the network"` // This field is required but might be empty + EndIP net.IP `json:"endip,omitempty" doc:"the ending IP address in the network IP range. Required for managed networks."` + EndIpv6 net.IP `json:"endipv6,omitempty" doc:"the ending IPv6 address in the IPv6 network range"` + Gateway net.IP `json:"gateway,omitempty" doc:"the gateway of the network. Required for Shared networks and Isolated networks when it belongs to VPC"` + IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the CIDR of IPv6 network, must be at least /64"` + IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of the IPv6 network. Required for Shared networks and Isolated networks when it belongs to VPC"` + IsolatedPVlan string `json:"isolatedpvlan,omitempty" doc:"the isolated private vlan for this network"` + Name string `json:"name,omitempty" doc:"the name of the network"` // This field is required but might be empty + Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the network. Required for managed networks."` + NetworkDomain string `json:"networkdomain,omitempty" doc:"network domain"` + PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"the Physical Network ID the network belongs to"` + StartIP net.IP `json:"startip,omitempty" doc:"the beginning IP address in the network IP range. Required for managed networks."` + StartIpv6 net.IP `json:"startipv6,omitempty" doc:"the beginning IPv6 address in the IPv6 network range"` + Vlan string `json:"vlan,omitempty" doc:"the ID or VID of the network"` + ZoneID *UUID `json:"zoneid" doc:"the Zone ID for the network"` + _ bool `name:"createNetwork" description:"Creates a network"` +} + +// Response returns the struct to unmarshal +func (CreateNetwork) Response() interface{} { + return new(Network) +} + +func (req CreateNetwork) onBeforeSend(params url.Values) error { + // Those fields are required but might be empty + if req.Name == "" { + params.Set("name", "") + } + if req.DisplayText == "" { + params.Set("displaytext", "") + } + return nil +} + +// UpdateNetwork (Async) updates a network +type UpdateNetwork struct { + _ bool `name:"updateNetwork" description:"Updates a network"` + ChangeCIDR *bool `json:"changecidr,omitempty" doc:"Force update even if cidr type is different"` + DisplayText string `json:"displaytext,omitempty" doc:"the new display text for the network"` + EndIP net.IP `json:"endip,omitempty" doc:"the ending IP address in the network IP range. Required for managed networks."` + GuestVMCIDR *CIDR `json:"guestvmcidr,omitempty" doc:"CIDR for Guest VMs,Cloudstack allocates IPs to Guest VMs only from this CIDR"` + ID *UUID `json:"id" doc:"the ID of the network"` + Name string `json:"name,omitempty" doc:"the new name for the network"` + Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the network. Required for managed networks."` + NetworkDomain string `json:"networkdomain,omitempty" doc:"network domain"` + StartIP net.IP `json:"startip,omitempty" doc:"the beginning IP address in the network IP range. Required for managed networks."` +} + +// Response returns the struct to unmarshal +func (UpdateNetwork) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (UpdateNetwork) AsyncResponse() interface{} { + return new(Network) +} + +// RestartNetwork (Async) updates a network +type RestartNetwork struct { + ID *UUID `json:"id" doc:"The id of the network to restart."` + Cleanup *bool `json:"cleanup,omitempty" doc:"If cleanup old network elements"` + _ bool `name:"restartNetwork" description:"Restarts the network; includes 1) restarting network elements - virtual routers, dhcp servers 2) reapplying all public ips 3) reapplying loadBalancing/portForwarding rules"` +} + +// Response returns the struct to unmarshal +func (RestartNetwork) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RestartNetwork) AsyncResponse() interface{} { + return new(Network) +} + +// DeleteNetwork deletes a network +type DeleteNetwork struct { + ID *UUID `json:"id" doc:"the ID of the network"` + Forced *bool `json:"forced,omitempty" doc:"Force delete a network. Network will be marked as 'Destroy' even when commands to shutdown and cleanup to the backend fails."` + _ bool `name:"deleteNetwork" description:"Deletes a network"` +} + +// Response returns the struct to unmarshal +func (DeleteNetwork) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DeleteNetwork) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +//go:generate go run generate/main.go -interface=Listable ListNetworks + +// ListNetworks represents a query to a network +type ListNetworks struct { + CanUseForDeploy *bool `json:"canusefordeploy,omitempty" doc:"List networks available for vm deployment"` + ID *UUID `json:"id,omitempty" doc:"List networks by id"` + IsSystem *bool `json:"issystem,omitempty" doc:"true If network is system, false otherwise"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + PhysicalNetworkID *UUID `json:"physicalnetworkid,omitempty" doc:"List networks by physical network id"` + RestartRequired *bool `json:"restartrequired,omitempty" doc:"List networks by restartRequired"` + SpecifyIPRanges *bool `json:"specifyipranges,omitempty" doc:"True if need to list only networks which support specifying ip ranges"` + SupportedServices []Service `json:"supportedservices,omitempty" doc:"List networks supporting certain services"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + TrafficType string `json:"traffictype,omitempty" doc:"Type of the traffic"` + Type string `json:"type,omitempty" doc:"The type of the network. Supported values are: Isolated and Shared"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"The Zone ID of the network"` + _ bool `name:"listNetworks" description:"Lists all available networks."` +} + +// ListNetworksResponse represents the list of networks +type ListNetworksResponse struct { + Count int `json:"count"` + Network []Network `json:"network"` +} diff --git a/vendor/github.com/exoscale/egoscale/networks_response.go b/vendor/github.com/exoscale/egoscale/networks_response.go new file mode 100644 index 000000000..058890624 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/networks_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListNetworks) Response() interface{} { + return new(ListNetworksResponse) +} + +// ListRequest returns itself +func (ls *ListNetworks) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListNetworks) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListNetworks) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListNetworks) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListNetworksResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListNetworksResponse was expected, got %T", resp)) + return + } + + for i := range items.Network { + if !callback(&items.Network[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/nics.go b/vendor/github.com/exoscale/egoscale/nics.go new file mode 100644 index 000000000..755e70395 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/nics.go @@ -0,0 +1,120 @@ +package egoscale + +import ( + "net" +) + +// Nic represents a Network Interface Controller (NIC) +// +// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/networking_and_traffic.html#configuring-multiple-ip-addresses-on-a-single-nic +type Nic struct { + BroadcastURI string `json:"broadcasturi,omitempty" doc:"the broadcast uri of the nic"` + DeviceID *UUID `json:"deviceid,omitempty" doc:"device id for the network when plugged into the virtual machine"` + Gateway net.IP `json:"gateway,omitempty" doc:"the gateway of the nic"` + ID *UUID `json:"id,omitempty" doc:"the ID of the nic"` + IP6Address net.IP `json:"ip6address,omitempty" doc:"the IPv6 address of network"` + IP6CIDR *CIDR `json:"ip6cidr,omitempty" doc:"the cidr of IPv6 network"` + IP6Gateway net.IP `json:"ip6gateway,omitempty" doc:"the gateway of IPv6 network"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"the ip address of the nic"` + IsDefault bool `json:"isdefault,omitempty" doc:"true if nic is default, false otherwise"` + IsolationURI string `json:"isolationuri,omitempty" doc:"the isolation uri of the nic"` + MACAddress MACAddress `json:"macaddress,omitempty" doc:"true if nic is default, false otherwise"` + Netmask net.IP `json:"netmask,omitempty" doc:"the netmask of the nic"` + NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the corresponding network"` + NetworkName string `json:"networkname,omitempty" doc:"the name of the corresponding network"` + ReverseDNS []ReverseDNS `json:"reversedns,omitempty" doc:"the list of PTR record(s) associated with the virtual machine"` + SecondaryIP []NicSecondaryIP `json:"secondaryip,omitempty" doc:"the Secondary ipv4 addr of nic"` + TrafficType string `json:"traffictype,omitempty" doc:"the traffic type of the nic"` + Type string `json:"type,omitempty" doc:"the type of the nic"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"Id of the vm to which the nic belongs"` +} + +// ListRequest build a ListNics request from the given Nic +func (nic Nic) ListRequest() (ListCommand, error) { + req := &ListNics{ + VirtualMachineID: nic.VirtualMachineID, + NicID: nic.ID, + NetworkID: nic.NetworkID, + } + + return req, nil +} + +// NicSecondaryIP represents a link between NicID and IPAddress +type NicSecondaryIP struct { + ID *UUID `json:"id,omitempty" doc:"the ID of the secondary private IP addr"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"Secondary IP address"` + NetworkID *UUID `json:"networkid,omitempty" doc:"the ID of the network"` + NicID *UUID `json:"nicid,omitempty" doc:"the ID of the nic"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the ID of the vm"` +} + +//go:generate go run generate/main.go -interface=Listable ListNics + +// ListNics represents the NIC search +type ListNics struct { + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + NetworkID *UUID `json:"networkid,omitempty" doc:"list nic of the specific vm's network"` + NicID *UUID `json:"nicid,omitempty" doc:"the ID of the nic to to list IPs"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the ID of the vm"` + _ bool `name:"listNics" description:"list the vm nics IP to NIC"` +} + +// ListNicsResponse represents a list of templates +type ListNicsResponse struct { + Count int `json:"count"` + Nic []Nic `json:"nic"` +} + +// AddIPToNic (Async) represents the assignation of a secondary IP +type AddIPToNic struct { + NicID *UUID `json:"nicid" doc:"the ID of the nic to which you want to assign private IP"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"Secondary IP Address"` + _ bool `name:"addIpToNic" description:"Assigns secondary IP to NIC"` +} + +// Response returns the struct to unmarshal +func (AddIPToNic) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (AddIPToNic) AsyncResponse() interface{} { + return new(NicSecondaryIP) +} + +// RemoveIPFromNic (Async) represents a deletion request +type RemoveIPFromNic struct { + ID *UUID `json:"id" doc:"the ID of the secondary ip address to nic"` + _ bool `name:"removeIpFromNic" description:"Removes secondary IP from the NIC."` +} + +// Response returns the struct to unmarshal +func (RemoveIPFromNic) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RemoveIPFromNic) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// ActivateIP6 (Async) activates the IP6 on the given NIC +// +// Exoscale specific API: https://community.exoscale.com/api/compute/#activateip6_GET +type ActivateIP6 struct { + NicID *UUID `json:"nicid" doc:"the ID of the nic to which you want to assign the IPv6"` + _ bool `name:"activateIp6" description:"Activate the IPv6 on the VM's nic"` +} + +// Response returns the struct to unmarshal +func (ActivateIP6) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ActivateIP6) AsyncResponse() interface{} { + return new(Nic) +} diff --git a/vendor/github.com/exoscale/egoscale/nics_response.go b/vendor/github.com/exoscale/egoscale/nics_response.go new file mode 100644 index 000000000..dcf960915 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/nics_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListNics) Response() interface{} { + return new(ListNicsResponse) +} + +// ListRequest returns itself +func (ls *ListNics) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListNics) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListNics) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListNics) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListNicsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListNicsResponse was expected, got %T", resp)) + return + } + + for i := range items.Nic { + if !callback(&items.Nic[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/oscategories_response.go b/vendor/github.com/exoscale/egoscale/oscategories_response.go new file mode 100644 index 000000000..985f875df --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/oscategories_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListOSCategories) Response() interface{} { + return new(ListOSCategoriesResponse) +} + +// ListRequest returns itself +func (ls *ListOSCategories) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListOSCategories) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListOSCategories) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListOSCategories) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListOSCategoriesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListOSCategoriesResponse was expected, got %T", resp)) + return + } + + for i := range items.OSCategory { + if !callback(&items.OSCategory[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/publicipaddresses_response.go b/vendor/github.com/exoscale/egoscale/publicipaddresses_response.go new file mode 100644 index 000000000..2ee92bd7a --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/publicipaddresses_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListPublicIPAddresses) Response() interface{} { + return new(ListPublicIPAddressesResponse) +} + +// ListRequest returns itself +func (ls *ListPublicIPAddresses) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListPublicIPAddresses) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListPublicIPAddresses) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListPublicIPAddresses) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListPublicIPAddressesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListPublicIPAddressesResponse was expected, got %T", resp)) + return + } + + for i := range items.PublicIPAddress { + if !callback(&items.PublicIPAddress[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/record_string.go b/vendor/github.com/exoscale/egoscale/record_string.go new file mode 100644 index 000000000..71285c696 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/record_string.go @@ -0,0 +1,36 @@ +// Code generated by "stringer -type=Record"; DO NOT EDIT. + +package egoscale + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[A-0] + _ = x[AAAA-1] + _ = x[ALIAS-2] + _ = x[CNAME-3] + _ = x[HINFO-4] + _ = x[MX-5] + _ = x[NAPTR-6] + _ = x[NS-7] + _ = x[POOL-8] + _ = x[SPF-9] + _ = x[SRV-10] + _ = x[SSHFP-11] + _ = x[TXT-12] + _ = x[URL-13] +} + +const _Record_name = "AAAAAALIASCNAMEHINFOMXNAPTRNSPOOLSPFSRVSSHFPTXTURL" + +var _Record_index = [...]uint8{0, 1, 5, 10, 15, 20, 22, 27, 29, 33, 36, 39, 44, 47, 50} + +func (i Record) String() string { + if i < 0 || i >= Record(len(_Record_index)-1) { + return "Record(" + strconv.FormatInt(int64(i), 10) + ")" + } + return _Record_name[_Record_index[i]:_Record_index[i+1]] +} diff --git a/vendor/github.com/exoscale/egoscale/request.go b/vendor/github.com/exoscale/egoscale/request.go new file mode 100644 index 000000000..450a56469 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/request.go @@ -0,0 +1,404 @@ +package egoscale + +import ( + "bytes" + "context" + "crypto/hmac" + "crypto/sha1" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "sort" + "strconv" + "strings" + "time" +) + +// Error formats a CloudStack error into a standard error +func (e ErrorResponse) Error() string { + return fmt.Sprintf("API error %s %d (%s %d): %s", e.ErrorCode, e.ErrorCode, e.CSErrorCode, e.CSErrorCode, e.ErrorText) +} + +// Error formats a CloudStack job response into a standard error +func (e BooleanResponse) Error() error { + if !e.Success { + return fmt.Errorf("API error: %s", e.DisplayText) + } + + return nil +} + +func responseKey(key string) (string, bool) { + // XXX: addIpToNic, activateIp6, restorevmresponse are kind of special + var responseKeys = map[string]string{ + "addiptonicresponse": "addiptovmnicresponse", + "activateip6response": "activateip6nicresponse", + "restorevirtualmachineresponse": "restorevmresponse", + "updatevmaffinitygroupresponse": "updatevirtualmachineresponse", + } + + k, ok := responseKeys[key] + return k, ok +} + +func (client *Client) parseResponse(resp *http.Response, apiName string) (json.RawMessage, error) { + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + m := map[string]json.RawMessage{} + if err := json.Unmarshal(b, &m); err != nil { + return nil, err + } + + key := fmt.Sprintf("%sresponse", strings.ToLower(apiName)) + response, ok := m[key] + if !ok { + if resp.StatusCode >= 400 { + response, ok = m["errorresponse"] + } + + if !ok { + // try again with the special keys + value, ok := responseKey(key) + if ok { + key = value + } + + response, ok = m[key] + + if !ok { + return nil, fmt.Errorf("malformed JSON response %d, %q was expected.\n%s", resp.StatusCode, key, b) + } + } + } + + if resp.StatusCode >= 400 { + errorResponse := new(ErrorResponse) + if e := json.Unmarshal(response, errorResponse); e != nil && errorResponse.ErrorCode <= 0 { + return nil, fmt.Errorf("%d %s", resp.StatusCode, b) + } + return nil, errorResponse + } + + n := map[string]json.RawMessage{} + if err := json.Unmarshal(response, &n); err != nil { + return nil, err + } + + // list response may contain only one key + if len(n) > 1 || strings.HasPrefix(key, "list") { + return response, nil + } + + if len(n) == 1 { + for k := range n { + // boolean response and asyncjob result may also contain + // only one key + if k == "success" || k == "jobid" { + return response, nil + } + return n[k], nil + } + } + + return response, nil +} + +// asyncRequest perform an asynchronous job with a context +func (client *Client) asyncRequest(ctx context.Context, asyncCommand AsyncCommand) (interface{}, error) { + var err error + + resp := asyncCommand.AsyncResponse() + client.AsyncRequestWithContext( + ctx, + asyncCommand, + func(j *AsyncJobResult, e error) bool { + if e != nil { + err = e + return false + } + if j.JobStatus != Pending { + if r := j.Result(resp); r != nil { + err = r + } + return false + } + return true + }, + ) + return resp, err +} + +// SyncRequestWithContext performs a sync request with a context +func (client *Client) SyncRequestWithContext(ctx context.Context, command Command) (interface{}, error) { + body, err := client.request(ctx, command) + if err != nil { + return nil, err + } + + response := command.Response() + b, ok := response.(*BooleanResponse) + if ok { + m := make(map[string]interface{}) + if errUnmarshal := json.Unmarshal(body, &m); errUnmarshal != nil { + return nil, errUnmarshal + } + + b.DisplayText, _ = m["displaytext"].(string) + + if success, okSuccess := m["success"].(string); okSuccess { + b.Success = success == "true" + } + + if success, okSuccess := m["success"].(bool); okSuccess { + b.Success = success + } + + return b, nil + } + + if err := json.Unmarshal(body, response); err != nil { + errResponse := new(ErrorResponse) + if e := json.Unmarshal(body, errResponse); e == nil && errResponse.ErrorCode > 0 { + return errResponse, nil + } + return nil, err + } + + return response, nil +} + +// BooleanRequest performs the given boolean command +func (client *Client) BooleanRequest(command Command) error { + resp, err := client.Request(command) + if err != nil { + return err + } + + if b, ok := resp.(*BooleanResponse); ok { + return b.Error() + } + + panic(fmt.Errorf("command %q is not a proper boolean response. %#v", client.APIName(command), resp)) +} + +// BooleanRequestWithContext performs the given boolean command +func (client *Client) BooleanRequestWithContext(ctx context.Context, command Command) error { + resp, err := client.RequestWithContext(ctx, command) + if err != nil { + return err + } + + if b, ok := resp.(*BooleanResponse); ok { + return b.Error() + } + + panic(fmt.Errorf("command %q is not a proper boolean response. %#v", client.APIName(command), resp)) +} + +// Request performs the given command +func (client *Client) Request(command Command) (interface{}, error) { + ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) + defer cancel() + + return client.RequestWithContext(ctx, command) +} + +// RequestWithContext preforms a command with a context +func (client *Client) RequestWithContext(ctx context.Context, command Command) (interface{}, error) { + switch c := command.(type) { + case AsyncCommand: + return client.asyncRequest(ctx, c) + default: + return client.SyncRequestWithContext(ctx, command) + } +} + +// SyncRequest performs the command as is +func (client *Client) SyncRequest(command Command) (interface{}, error) { + ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) + defer cancel() + + return client.SyncRequestWithContext(ctx, command) +} + +// AsyncRequest performs the given command +func (client *Client) AsyncRequest(asyncCommand AsyncCommand, callback WaitAsyncJobResultFunc) { + ctx, cancel := context.WithTimeout(context.Background(), client.Timeout) + defer cancel() + + client.AsyncRequestWithContext(ctx, asyncCommand, callback) +} + +// AsyncRequestWithContext preforms a request with a context +func (client *Client) AsyncRequestWithContext(ctx context.Context, asyncCommand AsyncCommand, callback WaitAsyncJobResultFunc) { + result, err := client.SyncRequestWithContext(ctx, asyncCommand) + if err != nil { + if !callback(nil, err) { + return + } + } + + jobResult, ok := result.(*AsyncJobResult) + if !ok { + callback(nil, fmt.Errorf("wrong type, AsyncJobResult was expected instead of %T", result)) + } + + // Successful response + if jobResult.JobID == nil || jobResult.JobStatus != Pending { + callback(jobResult, nil) + // without a JobID, the next requests will only fail + return + } + + for iteration := 0; ; iteration++ { + time.Sleep(client.RetryStrategy(int64(iteration))) + + req := &QueryAsyncJobResult{JobID: jobResult.JobID} + resp, err := client.SyncRequestWithContext(ctx, req) + if err != nil && !callback(nil, err) { + return + } + + result, ok := resp.(*AsyncJobResult) + if !ok { + if !callback(nil, fmt.Errorf("wrong type. AsyncJobResult expected, got %T", resp)) { + return + } + } + + if !callback(result, nil) { + return + } + } +} + +// Payload builds the HTTP request params from the given command +func (client *Client) Payload(command Command) (url.Values, error) { + params, err := prepareValues("", command) + if err != nil { + return nil, err + } + if hookReq, ok := command.(onBeforeHook); ok { + if err := hookReq.onBeforeSend(params); err != nil { + return params, err + } + } + params.Set("apikey", client.APIKey) + params.Set("command", client.APIName(command)) + params.Set("response", "json") + + if params.Get("expires") == "" && client.Expiration >= 0 { + params.Set("signatureversion", "3") + params.Set("expires", time.Now().Add(client.Expiration).Local().Format("2006-01-02T15:04:05-0700")) + } + + return params, nil +} + +// Sign signs the HTTP request and returns the signature as as base64 encoding +func (client *Client) Sign(params url.Values) (string, error) { + query := encodeValues(params) + query = strings.ToLower(query) + mac := hmac.New(sha1.New, []byte(client.apiSecret)) + _, err := mac.Write([]byte(query)) + if err != nil { + return "", err + } + + signature := base64.StdEncoding.EncodeToString(mac.Sum(nil)) + return signature, nil +} + +// request makes a Request while being close to the metal +func (client *Client) request(ctx context.Context, command Command) (json.RawMessage, error) { + params, err := client.Payload(command) + if err != nil { + return nil, err + } + signature, err := client.Sign(params) + if err != nil { + return nil, err + } + params.Add("signature", signature) + + method := "GET" + query := params.Encode() + url := fmt.Sprintf("%s?%s", client.Endpoint, query) + + var body io.Reader + // respect Internet Explorer limit of 2048 + if len(url) > 2048 { + url = client.Endpoint + method = "POST" + body = strings.NewReader(query) + } + + request, err := http.NewRequest(method, url, body) + if err != nil { + return nil, err + } + request = request.WithContext(ctx) + + if method == "POST" { + request.Header.Add("Content-Type", "application/x-www-form-urlencoded") + request.Header.Add("Content-Length", strconv.Itoa(len(query))) + } + + resp, err := client.HTTPClient.Do(request) + if err != nil { + return nil, err + } + defer resp.Body.Close() // nolint: errcheck + + contentType := resp.Header.Get("content-type") + + if !strings.Contains(contentType, "application/json") { + return nil, fmt.Errorf(`body content-type response expected "application/json", got %q`, contentType) + } + + text, err := client.parseResponse(resp, client.APIName(command)) + if err != nil { + return nil, err + } + + return text, nil +} + +func encodeValues(params url.Values) string { + // This code is borrowed from net/url/url.go + // The way it's encoded by net/url doesn't match + // how CloudStack works to determine the signature. + // + // CloudStack only encodes the values of the query parameters + // and furthermore doesn't use '+' for whitespaces. Therefore + // after encoding the values all '+' are replaced with '%20'. + if params == nil { + return "" + } + + var buf bytes.Buffer + keys := make([]string, 0, len(params)) + for k := range params { + keys = append(keys, k) + } + + sort.Strings(keys) + for _, k := range keys { + prefix := k + "=" + for _, v := range params[k] { + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(prefix) + buf.WriteString(csEncode(v)) + } + } + return buf.String() +} diff --git a/vendor/github.com/exoscale/egoscale/request_type.go b/vendor/github.com/exoscale/egoscale/request_type.go new file mode 100644 index 000000000..6775cde69 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/request_type.go @@ -0,0 +1,186 @@ +package egoscale + +import ( + "net/url" +) + +// Command represents a generic request +type Command interface { + Response() interface{} +} + +// AsyncCommand represents a async request +type AsyncCommand interface { + Command + AsyncResponse() interface{} +} + +// ListCommand represents a listing request +type ListCommand interface { + Listable + Command + // SetPage defines the current pages + SetPage(int) + // SetPageSize defines the size of the page + SetPageSize(int) + // Each reads the data from the response and feeds channels, and returns true if we are on the last page + Each(interface{}, IterateItemFunc) +} + +// onBeforeHook represents an action to be done on the params before sending them +// +// This little took helps with issue of relying on JSON serialization logic only. +// `omitempty` may make sense in some cases but not all the time. +type onBeforeHook interface { + onBeforeSend(params url.Values) error +} + +// CommandInfo represents the meta data related to a Command +type CommandInfo struct { + Name string + Description string + RootOnly bool +} + +// JobStatusType represents the status of a Job +type JobStatusType int + +//go:generate stringer -type JobStatusType +const ( + // Pending represents a job in progress + Pending JobStatusType = iota + // Success represents a successfully completed job + Success + // Failure represents a job that has failed to complete + Failure +) + +// ErrorCode represents the CloudStack ApiErrorCode enum +// +// See: https://github.com/apache/cloudstack/blob/master/api/src/main/java/org/apache/cloudstack/api/ApiErrorCode.java +type ErrorCode int + +//go:generate stringer -type ErrorCode +const ( + // Unauthorized represents ... (TODO) + Unauthorized ErrorCode = 401 + // NotFound represents ... (TODO) + NotFound ErrorCode = 404 + // MethodNotAllowed represents ... (TODO) + MethodNotAllowed ErrorCode = 405 + // UnsupportedActionError represents ... (TODO) + UnsupportedActionError ErrorCode = 422 + // APILimitExceeded represents ... (TODO) + APILimitExceeded ErrorCode = 429 + // MalformedParameterError represents ... (TODO) + MalformedParameterError ErrorCode = 430 + // ParamError represents ... (TODO) + ParamError ErrorCode = 431 + + // InternalError represents a server error + InternalError ErrorCode = 530 + // AccountError represents ... (TODO) + AccountError ErrorCode = 531 + // AccountResourceLimitError represents ... (TODO) + AccountResourceLimitError ErrorCode = 532 + // InsufficientCapacityError represents ... (TODO) + InsufficientCapacityError ErrorCode = 533 + // ResourceUnavailableError represents ... (TODO) + ResourceUnavailableError ErrorCode = 534 + // ResourceAllocationError represents ... (TODO) + ResourceAllocationError ErrorCode = 535 + // ResourceInUseError represents ... (TODO) + ResourceInUseError ErrorCode = 536 + // NetworkRuleConflictError represents ... (TODO) + NetworkRuleConflictError ErrorCode = 537 +) + +// CSErrorCode represents the CloudStack CSExceptionErrorCode enum +// +// See: https://github.com/apache/cloudstack/blob/master/utils/src/main/java/com/cloud/utils/exception/CSExceptionErrorCode.java +type CSErrorCode int + +//go:generate stringer -type CSErrorCode +const ( + // CloudRuntimeException ... (TODO) + CloudRuntimeException CSErrorCode = 4250 + // ExecutionException ... (TODO) + ExecutionException CSErrorCode = 4260 + // HypervisorVersionChangedException ... (TODO) + HypervisorVersionChangedException CSErrorCode = 4265 + // CloudException ... (TODO) + CloudException CSErrorCode = 4275 + // AccountLimitException ... (TODO) + AccountLimitException CSErrorCode = 4280 + // AgentUnavailableException ... (TODO) + AgentUnavailableException CSErrorCode = 4285 + // CloudAuthenticationException ... (TODO) + CloudAuthenticationException CSErrorCode = 4290 + // ConcurrentOperationException ... (TODO) + ConcurrentOperationException CSErrorCode = 4300 + // ConflictingNetworksException ... (TODO) + ConflictingNetworkSettingsException CSErrorCode = 4305 + // DiscoveredWithErrorException ... (TODO) + DiscoveredWithErrorException CSErrorCode = 4310 + // HAStateException ... (TODO) + HAStateException CSErrorCode = 4315 + // InsufficientAddressCapacityException ... (TODO) + InsufficientAddressCapacityException CSErrorCode = 4320 + // InsufficientCapacityException ... (TODO) + InsufficientCapacityException CSErrorCode = 4325 + // InsufficientNetworkCapacityException ... (TODO) + InsufficientNetworkCapacityException CSErrorCode = 4330 + // InsufficientServerCapaticyException ... (TODO) + InsufficientServerCapacityException CSErrorCode = 4335 + // InsufficientStorageCapacityException ... (TODO) + InsufficientStorageCapacityException CSErrorCode = 4340 + // InternalErrorException ... (TODO) + InternalErrorException CSErrorCode = 4345 + // InvalidParameterValueException ... (TODO) + InvalidParameterValueException CSErrorCode = 4350 + // ManagementServerException ... (TODO) + ManagementServerException CSErrorCode = 4355 + // NetworkRuleConflictException ... (TODO) + NetworkRuleConflictException CSErrorCode = 4360 + // PermissionDeniedException ... (TODO) + PermissionDeniedException CSErrorCode = 4365 + // ResourceAllocationException ... (TODO) + ResourceAllocationException CSErrorCode = 4370 + // ResourceInUseException ... (TODO) + ResourceInUseException CSErrorCode = 4375 + // ResourceUnavailableException ... (TODO) + ResourceUnavailableException CSErrorCode = 4380 + // StorageUnavailableException ... (TODO) + StorageUnavailableException CSErrorCode = 4385 + // UnsupportedServiceException ... (TODO) + UnsupportedServiceException CSErrorCode = 4390 + // VirtualMachineMigrationException ... (TODO) + VirtualMachineMigrationException CSErrorCode = 4395 + // AsyncCommandQueued ... (TODO) + AsyncCommandQueued CSErrorCode = 4540 + // RequestLimitException ... (TODO) + RequestLimitException CSErrorCode = 4545 + // ServerAPIException ... (TODO) + ServerAPIException CSErrorCode = 9999 +) + +// ErrorResponse represents the standard error response +type ErrorResponse struct { + CSErrorCode CSErrorCode `json:"cserrorcode"` + ErrorCode ErrorCode `json:"errorcode"` + ErrorText string `json:"errortext"` + UUIDList []UUIDItem `json:"uuidList,omitempty"` // uuid*L*ist is not a typo +} + +// UUIDItem represents an item of the UUIDList part of an ErrorResponse +type UUIDItem struct { + Description string `json:"description,omitempty"` + SerialVersionUID int64 `json:"serialVersionUID,omitempty"` + UUID string `json:"uuid"` +} + +// BooleanResponse represents a boolean response (usually after a deletion) +type BooleanResponse struct { + DisplayText string `json:"displaytext,omitempty"` + Success bool `json:"success"` +} diff --git a/vendor/github.com/exoscale/egoscale/resource_limits.go b/vendor/github.com/exoscale/egoscale/resource_limits.go new file mode 100644 index 000000000..56011dc66 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/resource_limits.go @@ -0,0 +1,100 @@ +package egoscale + +// https://github.com/apache/cloudstack/blob/master/api/src/main/java/com/cloud/configuration/Resource.java + +// ResourceTypeName represents the name of a resource type (for limits) +type ResourceTypeName string + +const ( + // VirtualMachineTypeName is the resource type name of a VM + VirtualMachineTypeName ResourceTypeName = "user_vm" + // IPAddressTypeName is the resource type name of an IP address + IPAddressTypeName ResourceTypeName = "public_ip" + // VolumeTypeName is the resource type name of a volume + VolumeTypeName ResourceTypeName = "volume" + // SnapshotTypeName is the resource type name of a snapshot + SnapshotTypeName ResourceTypeName = "snapshot" + // TemplateTypeName is the resource type name of a template + TemplateTypeName ResourceTypeName = "template" + // ProjectTypeName is the resource type name of a project + ProjectTypeName ResourceTypeName = "project" + // NetworkTypeName is the resource type name of a network + NetworkTypeName ResourceTypeName = "network" + // VPCTypeName is the resource type name of a VPC + VPCTypeName ResourceTypeName = "vpc" + // CPUTypeName is the resource type name of a CPU + CPUTypeName ResourceTypeName = "cpu" + // MemoryTypeName is the resource type name of Memory + MemoryTypeName ResourceTypeName = "memory" + // PrimaryStorageTypeName is the resource type name of primary storage + PrimaryStorageTypeName ResourceTypeName = "primary_storage" + // SecondaryStorageTypeName is the resource type name of secondary storage + SecondaryStorageTypeName ResourceTypeName = "secondary_storage" +) + +// ResourceType represents the ID of a resource type (for limits) +type ResourceType string + +const ( + // VirtualMachineType is the resource type ID of a VM + VirtualMachineType ResourceType = "0" + // IPAddressType is the resource type ID of an IP address + IPAddressType ResourceType = "1" + // VolumeType is the resource type ID of a volume + VolumeType ResourceType = "2" + // SnapshotType is the resource type ID of a snapshot + SnapshotType ResourceType = "3" + // TemplateType is the resource type ID of a template + TemplateType ResourceType = "4" + // ProjectType is the resource type ID of a project + ProjectType ResourceType = "5" + // NetworkType is the resource type ID of a network + NetworkType ResourceType = "6" + // VPCType is the resource type ID of a VPC + VPCType ResourceType = "7" + // CPUType is the resource type ID of a CPU + CPUType ResourceType = "8" + // MemoryType is the resource type ID of Memory + MemoryType ResourceType = "9" + // PrimaryStorageType is the resource type ID of primary storage + PrimaryStorageType ResourceType = "10" + // SecondaryStorageType is the resource type ID of secondary storage + SecondaryStorageType ResourceType = "11" +) + +// ResourceLimit represents the limit on a particular resource +type ResourceLimit struct { + Max int64 `json:"max,omitempty" doc:"the maximum number of the resource. A -1 means the resource currently has no limit."` + ResourceType ResourceType `json:"resourcetype,omitempty" doc:"resource type. Values include 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11. See the resourceType parameter for more information on these values."` + ResourceTypeName string `json:"resourcetypename,omitempty" doc:"resource type name. Values include user_vm, public_ip, volume, snapshot, template, network, cpu, memory, primary_storage, secondary_storage."` +} + +// ListRequest builds the ListResourceLimits request +func (limit ResourceLimit) ListRequest() (ListCommand, error) { + req := &ListResourceLimits{ + ResourceType: limit.ResourceType, + ResourceTypeName: limit.ResourceTypeName, + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListResourceLimits + +// ListResourceLimits lists the resource limits +type ListResourceLimits struct { + ID int64 `json:"id,omitempty" doc:"Lists resource limits by ID."` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ResourceType ResourceType `json:"resourcetype,omitempty" doc:"Type of resource. Values are 0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, and 13. 0 - Instance. Number of instances a user can create. 1 - IP. Number of public IP addresses an account can own. 2 - Volume. Number of disk volumes an account can own. 3 - Snapshot. Number of snapshots an account can own. 4 - Template. Number of templates an account can register/create. 6 - Network. Number of networks an account can own. 8 - CPU. Number of CPU an account can allocate for his resources. 9 - Memory. Amount of RAM an account can allocate for his resources. 10 - PrimaryStorage. Total primary storage space (in GiB) a user can use. 11 - SecondaryStorage. Total secondary storage space (in GiB) a user can use. 12 - Elastic IP. Number of public elastic IP addresses an account can own. 13 - SMTP. If the account is allowed SMTP outbound traffic."` + ResourceTypeName string `json:"resourcetypename,omitempty" doc:"Type of resource (wins over resourceType if both are provided). Values are: user_vm - Instance. Number of instances a user can create. public_ip - IP. Number of public IP addresses an account can own. volume - Volume. Number of disk volumes an account can own. snapshot - Snapshot. Number of snapshots an account can own. template - Template. Number of templates an account can register/create. network - Network. Number of networks an account can own. cpu - CPU. Number of CPU an account can allocate for his resources. memory - Memory. Amount of RAM an account can allocate for his resources. primary_storage - PrimaryStorage. Total primary storage space (in GiB) a user can use. secondary_storage - SecondaryStorage. Total secondary storage space (in GiB) a user can use. public_elastic_ip - IP. Number of public elastic IP addresses an account can own. smtp - SG. If the account is allowed SMTP outbound traffic."` + + _ bool `name:"listResourceLimits" description:"Lists resource limits."` +} + +// ListResourceLimitsResponse represents a list of resource limits +type ListResourceLimitsResponse struct { + Count int `json:"count"` + ResourceLimit []ResourceLimit `json:"resourcelimit"` +} diff --git a/vendor/github.com/exoscale/egoscale/resource_metadata.go b/vendor/github.com/exoscale/egoscale/resource_metadata.go new file mode 100644 index 000000000..52c5ee8b0 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/resource_metadata.go @@ -0,0 +1,41 @@ +package egoscale + +import "fmt" + +// ResourceDetail represents extra details +type ResourceDetail ResourceTag + +// ListRequest builds the ListResourceDetails request +func (detail ResourceDetail) ListRequest() (ListCommand, error) { + if detail.ResourceType == "" { + return nil, fmt.Errorf("the resourcetype parameter is required") + } + + req := &ListResourceDetails{ + ResourceType: detail.ResourceType, + ResourceID: detail.ResourceID, + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListResourceDetails + +// ListResourceDetails lists the resource tag(s) (but different from listTags...) +type ListResourceDetails struct { + ResourceType string `json:"resourcetype" doc:"list by resource type"` + ForDisplay bool `json:"fordisplay,omitempty" doc:"if set to true, only details marked with display=true, are returned. False by default"` + Key string `json:"key,omitempty" doc:"list by key"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ResourceID *UUID `json:"resourceid,omitempty" doc:"list by resource id"` + Value string `json:"value,omitempty" doc:"list by key, value. Needs to be passed only along with key"` + _ bool `name:"listResourceDetails" description:"List resource detail(s)"` +} + +// ListResourceDetailsResponse represents a list of resource details +type ListResourceDetailsResponse struct { + Count int `json:"count"` + ResourceDetail []ResourceTag `json:"resourcedetail"` +} diff --git a/vendor/github.com/exoscale/egoscale/resourcedetails_response.go b/vendor/github.com/exoscale/egoscale/resourcedetails_response.go new file mode 100644 index 000000000..2a08cd825 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/resourcedetails_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListResourceDetails) Response() interface{} { + return new(ListResourceDetailsResponse) +} + +// ListRequest returns itself +func (ls *ListResourceDetails) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListResourceDetails) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListResourceDetails) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListResourceDetails) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListResourceDetailsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListResourceDetailsResponse was expected, got %T", resp)) + return + } + + for i := range items.ResourceDetail { + if !callback(&items.ResourceDetail[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/resourcelimits_response.go b/vendor/github.com/exoscale/egoscale/resourcelimits_response.go new file mode 100644 index 000000000..656febfc9 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/resourcelimits_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListResourceLimits) Response() interface{} { + return new(ListResourceLimitsResponse) +} + +// ListRequest returns itself +func (ls *ListResourceLimits) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListResourceLimits) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListResourceLimits) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListResourceLimits) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListResourceLimitsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListResourceLimitsResponse was expected, got %T", resp)) + return + } + + for i := range items.ResourceLimit { + if !callback(&items.ResourceLimit[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/reversedns.go b/vendor/github.com/exoscale/egoscale/reversedns.go new file mode 100644 index 000000000..e8bd124ce --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/reversedns.go @@ -0,0 +1,83 @@ +package egoscale + +import ( + "net" +) + +// ReverseDNS represents the PTR record linked with an IPAddress or IP6Address belonging to a Virtual Machine or a Public IP Address (Elastic IP) instance +type ReverseDNS struct { + DomainName string `json:"domainname,omitempty" doc:"the domain name of the PTR record"` + IP6Address net.IP `json:"ip6address,omitempty" doc:"the IPv6 address linked with the PTR record (mutually exclusive with ipaddress)"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"the IPv4 address linked with the PTR record (mutually exclusive with ip6address)"` + NicID *UUID `json:"nicid,omitempty" doc:"the virtual machine default NIC ID"` + PublicIPID *UUID `json:"publicipid,omitempty" doc:"the public IP address ID"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the virtual machine ID"` +} + +// DeleteReverseDNSFromPublicIPAddress is a command to create/delete the PTR record of a public IP address +type DeleteReverseDNSFromPublicIPAddress struct { + ID *UUID `json:"id,omitempty" doc:"the ID of the public IP address"` + _ bool `name:"deleteReverseDnsFromPublicIpAddress" description:"delete the PTR DNS record from the public IP address"` +} + +// Response returns the struct to unmarshal +func (*DeleteReverseDNSFromPublicIPAddress) Response() interface{} { + return new(BooleanResponse) +} + +// DeleteReverseDNSFromVirtualMachine is a command to create/delete the PTR record(s) of a virtual machine +type DeleteReverseDNSFromVirtualMachine struct { + ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` + _ bool `name:"deleteReverseDnsFromVirtualMachine" description:"Delete the PTR DNS record(s) from the virtual machine"` +} + +// Response returns the struct to unmarshal +func (*DeleteReverseDNSFromVirtualMachine) Response() interface{} { + return new(BooleanResponse) +} + +// QueryReverseDNSForPublicIPAddress is a command to create/query the PTR record of a public IP address +type QueryReverseDNSForPublicIPAddress struct { + ID *UUID `json:"id,omitempty" doc:"the ID of the public IP address"` + _ bool `name:"queryReverseDnsForPublicIpAddress" description:"Query the PTR DNS record for the public IP address"` +} + +// Response returns the struct to unmarshal +func (*QueryReverseDNSForPublicIPAddress) Response() interface{} { + return new(IPAddress) +} + +// QueryReverseDNSForVirtualMachine is a command to create/query the PTR record(s) of a virtual machine +type QueryReverseDNSForVirtualMachine struct { + ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` + _ bool `name:"queryReverseDnsForVirtualMachine" description:"Query the PTR DNS record(s) for the virtual machine"` +} + +// Response returns the struct to unmarshal +func (*QueryReverseDNSForVirtualMachine) Response() interface{} { + return new(VirtualMachine) +} + +// UpdateReverseDNSForPublicIPAddress is a command to create/update the PTR record of a public IP address +type UpdateReverseDNSForPublicIPAddress struct { + DomainName string `json:"domainname,omitempty" doc:"the domain name for the PTR record. It must have a valid TLD"` + ID *UUID `json:"id,omitempty" doc:"the ID of the public IP address"` + _ bool `name:"updateReverseDnsForPublicIpAddress" description:"Update/create the PTR DNS record for the public IP address"` +} + +// Response returns the struct to unmarshal +func (*UpdateReverseDNSForPublicIPAddress) Response() interface{} { + return new(IPAddress) +} + +// UpdateReverseDNSForVirtualMachine is a command to create/update the PTR record(s) of a virtual machine +type UpdateReverseDNSForVirtualMachine struct { + DomainName string `json:"domainname,omitempty" doc:"the domain name for the PTR record(s). It must have a valid TLD"` + ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` + _ bool `name:"updateReverseDnsForVirtualMachine" description:"Update/create the PTR DNS record(s) for the virtual machine"` +} + +// Response returns the struct to unmarshal +func (*UpdateReverseDNSForVirtualMachine) Response() interface{} { + return new(VirtualMachine) +} diff --git a/vendor/github.com/exoscale/egoscale/runstatus.go b/vendor/github.com/exoscale/egoscale/runstatus.go new file mode 100644 index 000000000..e1b6eb5e6 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/runstatus.go @@ -0,0 +1,130 @@ +package egoscale + +import ( + "context" + "crypto/hmac" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "strings" + "time" +) + +// RunstatusValidationErrorResponse represents an error in the API +type RunstatusValidationErrorResponse map[string][]string + +// RunstatusErrorResponse represents the default errors +type RunstatusErrorResponse struct { + Detail string `json:"detail"` +} + +// runstatusPagesURL is the only URL that cannot be guessed +const runstatusPagesURL = "/pages" + +// Error formats the DNSerror into a string +func (req RunstatusErrorResponse) Error() string { + return fmt.Sprintf("Runstatus error: %s", req.Detail) +} + +// Error formats the DNSerror into a string +func (req RunstatusValidationErrorResponse) Error() string { + if len(req) > 0 { + errs := []string{} + for name, ss := range req { + if len(ss) > 0 { + errs = append(errs, fmt.Sprintf("%s: %s", name, strings.Join(ss, ", "))) + } + } + return fmt.Sprintf("Runstatus error: %s", strings.Join(errs, "; ")) + } + return "Runstatus error" +} + +func (client *Client) runstatusRequest(ctx context.Context, uri string, structParam interface{}, method string) (json.RawMessage, error) { + reqURL, err := url.Parse(uri) + if err != nil { + return nil, err + } + if reqURL.Scheme == "" { + return nil, fmt.Errorf("only absolute URI are considered valid, got %q", uri) + } + + var params string + if structParam != nil { + m, err := json.Marshal(structParam) + if err != nil { + return nil, err + } + params = string(m) + } + + req, err := http.NewRequest(method, reqURL.String(), strings.NewReader(params)) + if err != nil { + return nil, err + } + + time := time.Now().Local().Format("2006-01-02T15:04:05-0700") + + payload := fmt.Sprintf("%s%s%s", req.URL.String(), time, params) + + mac := hmac.New(sha256.New, []byte(client.apiSecret)) + _, err = mac.Write([]byte(payload)) + if err != nil { + return nil, err + } + signature := hex.EncodeToString(mac.Sum(nil)) + + var hdr = make(http.Header) + + hdr.Add("Authorization", fmt.Sprintf("Exoscale-HMAC-SHA256 %s:%s", client.APIKey, signature)) + hdr.Add("Exoscale-Date", time) + hdr.Add("Accept", "application/json") + if params != "" { + hdr.Add("Content-Type", "application/json") + } + req.Header = hdr + + req = req.WithContext(ctx) + + resp, err := client.HTTPClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() // nolint: errcheck + + if resp.StatusCode == 204 { + if method != "DELETE" { + return nil, fmt.Errorf("only DELETE is expected to produce 204, was %q", method) + } + return nil, nil + } + + contentType := resp.Header.Get("content-type") + if !strings.Contains(contentType, "application/json") { + return nil, fmt.Errorf(`response %d content-type expected to be "application/json", got %q`, resp.StatusCode, contentType) + } + + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + if resp.StatusCode >= 400 { + rerr := new(RunstatusValidationErrorResponse) + if err := json.Unmarshal(b, rerr); err == nil { + return nil, rerr + } + rverr := new(RunstatusErrorResponse) + if err := json.Unmarshal(b, rverr); err != nil { + return nil, err + } + + return nil, rverr + } + + return b, nil +} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_event.go b/vendor/github.com/exoscale/egoscale/runstatus_event.go new file mode 100644 index 000000000..1509e43d6 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/runstatus_event.go @@ -0,0 +1,37 @@ +package egoscale + +import ( + "context" + "fmt" + "time" +) + +// RunstatusEvent is a runstatus event +type RunstatusEvent struct { + Created *time.Time `json:"created,omitempty"` + State string `json:"state,omitempty"` + Status string `json:"status"` + Text string `json:"text"` +} + +// UpdateRunstatusIncident create runstatus incident event +// Events can be updates or final message with status completed. +func (client *Client) UpdateRunstatusIncident(ctx context.Context, incident RunstatusIncident, event RunstatusEvent) error { + if incident.EventsURL == "" { + return fmt.Errorf("empty Events URL for %#v", incident) + } + + _, err := client.runstatusRequest(ctx, incident.EventsURL, event, "POST") + return err +} + +// UpdateRunstatusMaintenance adds a event to a maintenance. +// Events can be updates or final message with status completed. +func (client *Client) UpdateRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance, event RunstatusEvent) error { + if maintenance.EventsURL == "" { + return fmt.Errorf("empty Events URL for %#v", maintenance) + } + + _, err := client.runstatusRequest(ctx, maintenance.EventsURL, event, "POST") + return err +} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_incident.go b/vendor/github.com/exoscale/egoscale/runstatus_incident.go new file mode 100644 index 000000000..456f81352 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/runstatus_incident.go @@ -0,0 +1,176 @@ +package egoscale + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "time" +) + +// RunstatusIncident is a runstatus incident +type RunstatusIncident struct { + EndDate *time.Time `json:"end_date,omitempty"` + Events []RunstatusEvent `json:"events,omitempty"` + EventsURL string `json:"events_url,omitempty"` + ID int `json:"id,omitempty"` + PageURL string `json:"page_url,omitempty"` // fake field + PostMortem string `json:"post_mortem,omitempty"` + RealTime bool `json:"real_time,omitempty"` + Services []string `json:"services"` + StartDate *time.Time `json:"start_date,omitempty"` + State string `json:"state"` + Status string `json:"status"` + StatusText string `json:"status_text"` + Title string `json:"title"` + URL string `json:"url,omitempty"` +} + +// Match returns true if the other incident has got similarities with itself +func (incident RunstatusIncident) Match(other RunstatusIncident) bool { + if other.Title != "" && incident.Title == other.Title { + return true + } + + if other.ID > 0 && incident.ID == other.ID { + return true + } + + return false +} + +// RunstatusIncidentList is a list of incident +type RunstatusIncidentList struct { + Next string `json:"next"` + Previous string `json:"previous"` + Incidents []RunstatusIncident `json:"results"` +} + +// GetRunstatusIncident retrieves the details of a specific incident. +func (client *Client) GetRunstatusIncident(ctx context.Context, incident RunstatusIncident) (*RunstatusIncident, error) { + if incident.URL != "" { + return client.getRunstatusIncident(ctx, incident.URL) + } + + if incident.PageURL == "" { + return nil, fmt.Errorf("empty Page URL for %#v", incident) + } + + page, err := client.getRunstatusPage(ctx, incident.PageURL) + if err != nil { + return nil, err + } + + for i := range page.Incidents { + j := &page.Incidents[i] + if j.Match(incident) { + return j, nil + } + } + + return nil, errors.New("incident not found") +} + +func (client *Client) getRunstatusIncident(ctx context.Context, incidentURL string) (*RunstatusIncident, error) { + resp, err := client.runstatusRequest(ctx, incidentURL, nil, "GET") + if err != nil { + return nil, err + } + + i := new(RunstatusIncident) + if err := json.Unmarshal(resp, i); err != nil { + return nil, err + } + return i, nil +} + +// ListRunstatusIncidents lists the incidents for a specific page. +func (client *Client) ListRunstatusIncidents(ctx context.Context, page RunstatusPage) ([]RunstatusIncident, error) { + if page.IncidentsURL == "" { + return nil, fmt.Errorf("empty Incidents URL for %#v", page) + } + + results := make([]RunstatusIncident, 0) + + var err error + client.PaginateRunstatusIncidents(ctx, page, func(incident *RunstatusIncident, e error) bool { + if e != nil { + err = e + return false + } + + results = append(results, *incident) + return true + }) + + return results, err +} + +// PaginateRunstatusIncidents paginate Incidents +func (client *Client) PaginateRunstatusIncidents(ctx context.Context, page RunstatusPage, callback func(*RunstatusIncident, error) bool) { + if page.IncidentsURL == "" { + callback(nil, fmt.Errorf("empty Incidents URL for %#v", page)) + return + } + + incidentsURL := page.IncidentsURL + for incidentsURL != "" { + resp, err := client.runstatusRequest(ctx, incidentsURL, nil, "GET") + if err != nil { + callback(nil, err) + return + } + + var is *RunstatusIncidentList + if err := json.Unmarshal(resp, &is); err != nil { + callback(nil, err) + return + } + + for i := range is.Incidents { + if cont := callback(&is.Incidents[i], nil); !cont { + return + } + } + + incidentsURL = is.Next + } +} + +// CreateRunstatusIncident create runstatus incident +func (client *Client) CreateRunstatusIncident(ctx context.Context, incident RunstatusIncident) (*RunstatusIncident, error) { + if incident.PageURL == "" { + return nil, fmt.Errorf("empty Page URL for %#v", incident) + } + + page, err := client.getRunstatusPage(ctx, incident.PageURL) + if err != nil { + return nil, err + } + + if page.IncidentsURL == "" { + return nil, fmt.Errorf("empty Incidents URL for %#v", page) + } + + resp, err := client.runstatusRequest(ctx, page.IncidentsURL, incident, "POST") + if err != nil { + return nil, err + } + + i := &RunstatusIncident{} + if err := json.Unmarshal(resp, &i); err != nil { + return nil, err + } + + return i, nil +} + +// DeleteRunstatusIncident delete runstatus incident +func (client *Client) DeleteRunstatusIncident(ctx context.Context, incident RunstatusIncident) error { + if incident.URL == "" { + return fmt.Errorf("empty URL for %#v", incident) + } + + _, err := client.runstatusRequest(ctx, incident.URL, nil, "DELETE") + return err +} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_maintenance.go b/vendor/github.com/exoscale/egoscale/runstatus_maintenance.go new file mode 100644 index 000000000..07372466c --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/runstatus_maintenance.go @@ -0,0 +1,209 @@ +package egoscale + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "log" + "net/url" + "path" + "strconv" + "time" +) + +// RunstatusMaintenance is a runstatus maintenance +type RunstatusMaintenance struct { + Created *time.Time `json:"created,omitempty"` + Description string `json:"description,omitempty"` + EndDate *time.Time `json:"end_date"` + Events []RunstatusEvent `json:"events,omitempty"` + EventsURL string `json:"events_url,omitempty"` + ID int `json:"id,omitempty"` // missing field + PageURL string `json:"page_url,omitempty"` // fake field + RealTime bool `json:"real_time,omitempty"` + Services []string `json:"services"` + StartDate *time.Time `json:"start_date"` + Status string `json:"status"` + Title string `json:"title"` + URL string `json:"url,omitempty"` +} + +// Match returns true if the other maintenance has got similarities with itself +func (maintenance RunstatusMaintenance) Match(other RunstatusMaintenance) bool { + if other.Title != "" && maintenance.Title == other.Title { + return true + } + + if other.ID > 0 && maintenance.ID == other.ID { + return true + } + + return false +} + +// FakeID fills up the ID field as it's currently missing +func (maintenance *RunstatusMaintenance) FakeID() error { + if maintenance.ID > 0 { + return nil + } + + if maintenance.URL == "" { + return fmt.Errorf("empty URL for %#v", maintenance) + } + + u, err := url.Parse(maintenance.URL) + if err != nil { + return err + } + + s := path.Base(u.Path) + id, err := strconv.Atoi(s) + if err != nil { + return err + } + maintenance.ID = id + return nil +} + +// RunstatusMaintenanceList is a list of incident +type RunstatusMaintenanceList struct { + Next string `json:"next"` + Previous string `json:"previous"` + Maintenances []RunstatusMaintenance `json:"results"` +} + +// GetRunstatusMaintenance retrieves the details of a specific maintenance. +func (client *Client) GetRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance) (*RunstatusMaintenance, error) { + if maintenance.URL != "" { + return client.getRunstatusMaintenance(ctx, maintenance.URL) + } + + if maintenance.PageURL == "" { + return nil, fmt.Errorf("empty Page URL for %#v", maintenance) + } + + page, err := client.getRunstatusPage(ctx, maintenance.PageURL) + if err != nil { + return nil, err + } + + for i := range page.Maintenances { + m := &page.Maintenances[i] + if m.Match(maintenance) { + if err := m.FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", m, err) + } + return m, nil + } + } + + return nil, errors.New("maintenance not found") +} + +func (client *Client) getRunstatusMaintenance(ctx context.Context, maintenanceURL string) (*RunstatusMaintenance, error) { + resp, err := client.runstatusRequest(ctx, maintenanceURL, nil, "GET") + if err != nil { + return nil, err + } + + m := new(RunstatusMaintenance) + if err := json.Unmarshal(resp, m); err != nil { + return nil, err + } + return m, nil +} + +// ListRunstatusMaintenances returns the list of maintenances for the page. +func (client *Client) ListRunstatusMaintenances(ctx context.Context, page RunstatusPage) ([]RunstatusMaintenance, error) { + if page.MaintenancesURL == "" { + return nil, fmt.Errorf("empty Maintenances URL for %#v", page) + } + + results := make([]RunstatusMaintenance, 0) + + var err error + client.PaginateRunstatusMaintenances(ctx, page, func(maintenance *RunstatusMaintenance, e error) bool { + if e != nil { + err = e + return false + } + + results = append(results, *maintenance) + return true + }) + + return results, err +} + +// PaginateRunstatusMaintenances paginate Maintenances +func (client *Client) PaginateRunstatusMaintenances(ctx context.Context, page RunstatusPage, callback func(*RunstatusMaintenance, error) bool) { // nolint: dupl + if page.MaintenancesURL == "" { + callback(nil, fmt.Errorf("empty Maintenances URL for %#v", page)) + return + } + + maintenancesURL := page.MaintenancesURL + for maintenancesURL != "" { + resp, err := client.runstatusRequest(ctx, maintenancesURL, nil, "GET") + if err != nil { + callback(nil, err) + return + } + + var ms *RunstatusMaintenanceList + if err := json.Unmarshal(resp, &ms); err != nil { + callback(nil, err) + return + } + + for i := range ms.Maintenances { + if err := ms.Maintenances[i].FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", ms.Maintenances[i], err) + } + if cont := callback(&ms.Maintenances[i], nil); !cont { + return + } + } + + maintenancesURL = ms.Next + } +} + +// CreateRunstatusMaintenance create runstatus Maintenance +func (client *Client) CreateRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance) (*RunstatusMaintenance, error) { + if maintenance.PageURL == "" { + return nil, fmt.Errorf("empty Page URL for %#v", maintenance) + } + + page, err := client.getRunstatusPage(ctx, maintenance.PageURL) + if err != nil { + return nil, err + } + + resp, err := client.runstatusRequest(ctx, page.MaintenancesURL, maintenance, "POST") + if err != nil { + return nil, err + } + + m := &RunstatusMaintenance{} + if err := json.Unmarshal(resp, &m); err != nil { + return nil, err + } + + if err := m.FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", m, err) + } + + return m, nil +} + +// DeleteRunstatusMaintenance delete runstatus Maintenance +func (client *Client) DeleteRunstatusMaintenance(ctx context.Context, maintenance RunstatusMaintenance) error { + if maintenance.URL == "" { + return fmt.Errorf("empty URL for %#v", maintenance) + } + + _, err := client.runstatusRequest(ctx, maintenance.URL, nil, "DELETE") + return err +} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_page.go b/vendor/github.com/exoscale/egoscale/runstatus_page.go new file mode 100644 index 000000000..a38f94a51 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/runstatus_page.go @@ -0,0 +1,169 @@ +package egoscale + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "log" + "time" +) + +// RunstatusPage runstatus page +type RunstatusPage struct { + Created *time.Time `json:"created,omitempty"` + DarkTheme bool `json:"dark_theme,omitempty"` + Domain string `json:"domain,omitempty"` + GradientEnd string `json:"gradient_end,omitempty"` + GradientStart string `json:"gradient_start,omitempty"` + HeaderBackground string `json:"header_background,omitempty"` + ID int `json:"id,omitempty"` + Incidents []RunstatusIncident `json:"incidents,omitempty"` + IncidentsURL string `json:"incidents_url,omitempty"` + Logo string `json:"logo,omitempty"` + Maintenances []RunstatusMaintenance `json:"maintenances,omitempty"` + MaintenancesURL string `json:"maintenances_url,omitempty"` + Name string `json:"name"` // fake field (used to post a new runstatus page) + OkText string `json:"ok_text,omitempty"` + Plan string `json:"plan,omitempty"` + PublicURL string `json:"public_url,omitempty"` + Services []RunstatusService `json:"services,omitempty"` + ServicesURL string `json:"services_url,omitempty"` + State string `json:"state,omitempty"` + Subdomain string `json:"subdomain"` + SupportEmail string `json:"support_email,omitempty"` + TimeZone string `json:"time_zone,omitempty"` + Title string `json:"title,omitempty"` + TitleColor string `json:"title_color,omitempty"` + TwitterUsername string `json:"twitter_username,omitempty"` + URL string `json:"url,omitempty"` +} + +// Match returns true if the other page has got similarities with itself +func (page RunstatusPage) Match(other RunstatusPage) bool { + if other.Subdomain != "" && page.Subdomain == other.Subdomain { + return true + } + + if other.ID > 0 && page.ID == other.ID { + return true + } + + return false +} + +// RunstatusPageList runstatus page list +type RunstatusPageList struct { + Next string `json:"next"` + Previous string `json:"previous"` + Pages []RunstatusPage `json:"results"` +} + +// CreateRunstatusPage create runstatus page +func (client *Client) CreateRunstatusPage(ctx context.Context, page RunstatusPage) (*RunstatusPage, error) { + resp, err := client.runstatusRequest(ctx, client.Endpoint+runstatusPagesURL, page, "POST") + if err != nil { + return nil, err + } + + var p *RunstatusPage + if err := json.Unmarshal(resp, &p); err != nil { + return nil, err + } + + return p, nil +} + +// DeleteRunstatusPage delete runstatus page +func (client *Client) DeleteRunstatusPage(ctx context.Context, page RunstatusPage) error { + if page.URL == "" { + return fmt.Errorf("empty URL for %#v", page) + } + _, err := client.runstatusRequest(ctx, page.URL, nil, "DELETE") + return err +} + +// GetRunstatusPage fetches the runstatus page +func (client *Client) GetRunstatusPage(ctx context.Context, page RunstatusPage) (*RunstatusPage, error) { + if page.URL != "" { + return client.getRunstatusPage(ctx, page.URL) + } + + ps, err := client.ListRunstatusPages(ctx) + if err != nil { + return nil, err + } + + for i := range ps { + if ps[i].Match(page) { + return client.getRunstatusPage(ctx, ps[i].URL) + } + } + + return nil, errors.New("page not found") +} + +func (client *Client) getRunstatusPage(ctx context.Context, pageURL string) (*RunstatusPage, error) { + resp, err := client.runstatusRequest(ctx, pageURL, nil, "GET") + if err != nil { + return nil, err + } + + p := new(RunstatusPage) + if err := json.Unmarshal(resp, p); err != nil { + return nil, err + } + + // NOTE: fix the missing IDs + for i := range p.Maintenances { + if err := p.Maintenances[i].FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", p.Maintenances[i], err) + } + } + for i := range p.Services { + if err := p.Services[i].FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", p.Services[i], err) + } + } + + return p, nil +} + +// ListRunstatusPages list all the runstatus pages +func (client *Client) ListRunstatusPages(ctx context.Context) ([]RunstatusPage, error) { + resp, err := client.runstatusRequest(ctx, client.Endpoint+runstatusPagesURL, nil, "GET") + if err != nil { + return nil, err + } + + var p *RunstatusPageList + if err := json.Unmarshal(resp, &p); err != nil { + return nil, err + } + + return p.Pages, nil +} + +// PaginateRunstatusPages paginate on runstatus pages +func (client *Client) PaginateRunstatusPages(ctx context.Context, callback func(pages []RunstatusPage, e error) bool) { + pageURL := client.Endpoint + runstatusPagesURL + for pageURL != "" { + resp, err := client.runstatusRequest(ctx, pageURL, nil, "GET") + if err != nil { + callback(nil, err) + return + } + + var p *RunstatusPageList + if err := json.Unmarshal(resp, &p); err != nil { + callback(nil, err) + return + } + + if ok := callback(p.Pages, nil); ok { + return + } + + pageURL = p.Next + } +} diff --git a/vendor/github.com/exoscale/egoscale/runstatus_service.go b/vendor/github.com/exoscale/egoscale/runstatus_service.go new file mode 100644 index 000000000..764eeea5b --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/runstatus_service.go @@ -0,0 +1,202 @@ +package egoscale + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "log" + "net/url" + "path" + "strconv" +) + +// RunstatusService is a runstatus service +type RunstatusService struct { + ID int `json:"id"` // missing field + Name string `json:"name"` + PageURL string `json:"page_url,omitempty"` // fake field + State string `json:"state,omitempty"` + URL string `json:"url,omitempty"` +} + +// FakeID fills up the ID field as it's currently missing +func (service *RunstatusService) FakeID() error { + if service.ID > 0 { + return nil + } + + if service.URL == "" { + return fmt.Errorf("empty URL for %#v", service) + } + + u, err := url.Parse(service.URL) + if err != nil { + return err + } + + s := path.Base(u.Path) + id, err := strconv.Atoi(s) + if err != nil { + return err + } + service.ID = id + return nil +} + +// Match returns true if the other service has got similarities with itself +func (service RunstatusService) Match(other RunstatusService) bool { + if other.Name != "" && service.Name == other.Name { + return true + } + + if other.ID > 0 && service.ID == other.ID { + return true + } + + return false +} + +// RunstatusServiceList service list +type RunstatusServiceList struct { + Next string `json:"next"` + Previous string `json:"previous"` + Services []RunstatusService `json:"results"` +} + +// DeleteRunstatusService delete runstatus service +func (client *Client) DeleteRunstatusService(ctx context.Context, service RunstatusService) error { + if service.URL == "" { + return fmt.Errorf("empty URL for %#v", service) + } + + _, err := client.runstatusRequest(ctx, service.URL, nil, "DELETE") + return err +} + +// CreateRunstatusService create runstatus service +func (client *Client) CreateRunstatusService(ctx context.Context, service RunstatusService) (*RunstatusService, error) { + if service.PageURL == "" { + return nil, fmt.Errorf("empty Page URL for %#v", service) + } + + page, err := client.GetRunstatusPage(ctx, RunstatusPage{URL: service.PageURL}) + if err != nil { + return nil, err + } + + resp, err := client.runstatusRequest(ctx, page.ServicesURL, service, "POST") + if err != nil { + return nil, err + } + + s := &RunstatusService{} + if err := json.Unmarshal(resp, s); err != nil { + return nil, err + } + + return s, nil +} + +// GetRunstatusService displays service detail. +func (client *Client) GetRunstatusService(ctx context.Context, service RunstatusService) (*RunstatusService, error) { + if service.URL != "" { + return client.getRunstatusService(ctx, service.URL) + } + + if service.PageURL == "" { + return nil, fmt.Errorf("empty Page URL in %#v", service) + } + + page, err := client.getRunstatusPage(ctx, service.PageURL) + if err != nil { + return nil, err + } + + for i := range page.Services { + s := &page.Services[i] + if s.Match(service) { + if err := s.FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", s, err) + } + return s, nil + } + } + + return nil, errors.New("service not found") +} + +func (client *Client) getRunstatusService(ctx context.Context, serviceURL string) (*RunstatusService, error) { + resp, err := client.runstatusRequest(ctx, serviceURL, nil, "GET") + if err != nil { + return nil, err + } + + s := &RunstatusService{} + if err := json.Unmarshal(resp, &s); err != nil { + return nil, err + } + + if err := s.FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", s, err) + } + + return s, nil +} + +// ListRunstatusServices displays the list of services. +func (client *Client) ListRunstatusServices(ctx context.Context, page RunstatusPage) ([]RunstatusService, error) { + if page.ServicesURL == "" { + return nil, fmt.Errorf("empty Services URL for %#v", page) + } + + results := make([]RunstatusService, 0) + + var err error + client.PaginateRunstatusServices(ctx, page, func(service *RunstatusService, e error) bool { + if e != nil { + err = e + return false + } + + results = append(results, *service) + return true + }) + + return results, err +} + +// PaginateRunstatusServices paginates Services +func (client *Client) PaginateRunstatusServices(ctx context.Context, page RunstatusPage, callback func(*RunstatusService, error) bool) { // nolint: dupl + if page.ServicesURL == "" { + callback(nil, fmt.Errorf("empty Services URL for %#v", page)) + return + } + + servicesURL := page.ServicesURL + for servicesURL != "" { + resp, err := client.runstatusRequest(ctx, servicesURL, nil, "GET") + if err != nil { + callback(nil, err) + return + } + + var ss *RunstatusServiceList + if err := json.Unmarshal(resp, &ss); err != nil { + callback(nil, err) + return + } + + for i := range ss.Services { + if err := ss.Services[i].FakeID(); err != nil { + log.Printf("bad fake ID for %#v, %s", ss.Services[i], err) + } + + if cont := callback(&ss.Services[i], nil); !cont { + return + } + } + + servicesURL = ss.Next + } +} diff --git a/vendor/github.com/exoscale/egoscale/security_groups.go b/vendor/github.com/exoscale/egoscale/security_groups.go new file mode 100644 index 000000000..a11e53a4f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/security_groups.go @@ -0,0 +1,226 @@ +package egoscale + +import ( + "context" + "fmt" + "net/url" + "strconv" + "strings" +) + +// SecurityGroup represent a firewalling set of rules +type SecurityGroup struct { + Account string `json:"account,omitempty" doc:"the account owning the security group"` + Description string `json:"description,omitempty" doc:"the description of the security group"` + EgressRule []EgressRule `json:"egressrule,omitempty" doc:"the list of egress rules associated with the security group"` + ID *UUID `json:"id" doc:"the ID of the security group"` + IngressRule []IngressRule `json:"ingressrule,omitempty" doc:"the list of ingress rules associated with the security group"` + Name string `json:"name,omitempty" doc:"the name of the security group"` +} + +// UserSecurityGroup converts a SecurityGroup to a UserSecurityGroup +func (sg SecurityGroup) UserSecurityGroup() UserSecurityGroup { + return UserSecurityGroup{ + Group: sg.Name, + } +} + +// ListRequest builds the ListSecurityGroups request +func (sg SecurityGroup) ListRequest() (ListCommand, error) { + req := &ListSecurityGroups{ + ID: sg.ID, + SecurityGroupName: sg.Name, + } + + return req, nil +} + +// Delete deletes the given Security Group +func (sg SecurityGroup) Delete(ctx context.Context, client *Client) error { + if sg.ID == nil && sg.Name == "" { + return fmt.Errorf("a SecurityGroup may only be deleted using ID or Name") + } + + req := &DeleteSecurityGroup{} + + if sg.ID != nil { + req.ID = sg.ID + } else { + req.Name = sg.Name + } + + return client.BooleanRequestWithContext(ctx, req) +} + +// RuleByID returns IngressRule or EgressRule by a rule ID +func (sg SecurityGroup) RuleByID(ruleID UUID) (*IngressRule, *EgressRule) { + for i, in := range sg.IngressRule { + if in.RuleID.Equal(ruleID) { + return &sg.IngressRule[i], nil + } + } + + for i, out := range sg.EgressRule { + if out.RuleID.Equal(ruleID) { + return nil, &sg.EgressRule[i] + } + } + + return nil, nil +} + +// IngressRule represents the ingress rule +type IngressRule struct { + CIDR *CIDR `json:"cidr,omitempty" doc:"the CIDR notation for the base IP address of the security group rule"` + Description string `json:"description,omitempty" doc:"description of the security group rule"` + EndPort uint16 `json:"endport,omitempty" doc:"the ending port of the security group rule "` + IcmpCode uint8 `json:"icmpcode,omitempty" doc:"the code for the ICMP message response"` + IcmpType uint8 `json:"icmptype,omitempty" doc:"the type of the ICMP message response"` + Protocol string `json:"protocol,omitempty" doc:"the protocol of the security group rule"` + RuleID *UUID `json:"ruleid" doc:"the id of the security group rule"` + SecurityGroupName string `json:"securitygroupname,omitempty" doc:"security group name"` + StartPort uint16 `json:"startport,omitempty" doc:"the starting port of the security group rule"` +} + +// EgressRule represents the ingress rule +type EgressRule IngressRule + +// UserSecurityGroup represents the traffic of another security group +type UserSecurityGroup struct { + Group string `json:"group,omitempty"` +} + +// String gives the UserSecurityGroup name +func (usg UserSecurityGroup) String() string { + return usg.Group +} + +// CreateSecurityGroup represents a security group creation +type CreateSecurityGroup struct { + Name string `json:"name" doc:"name of the security group"` + Description string `json:"description,omitempty" doc:"the description of the security group"` + _ bool `name:"createSecurityGroup" description:"Creates a security group"` +} + +// Response returns the struct to unmarshal +func (CreateSecurityGroup) Response() interface{} { + return new(SecurityGroup) +} + +// DeleteSecurityGroup represents a security group deletion +type DeleteSecurityGroup struct { + ID *UUID `json:"id,omitempty" doc:"The ID of the security group. Mutually exclusive with name parameter"` + Name string `json:"name,omitempty" doc:"The ID of the security group. Mutually exclusive with id parameter"` + _ bool `name:"deleteSecurityGroup" description:"Deletes security group"` +} + +// Response returns the struct to unmarshal +func (DeleteSecurityGroup) Response() interface{} { + return new(BooleanResponse) +} + +// AuthorizeSecurityGroupIngress (Async) represents the ingress rule creation +type AuthorizeSecurityGroupIngress struct { + CIDRList []CIDR `json:"cidrlist,omitempty" doc:"the cidr list associated"` + Description string `json:"description,omitempty" doc:"the description of the ingress/egress rule"` + EndPort uint16 `json:"endport,omitempty" doc:"end port for this ingress/egress rule"` + IcmpCode uint8 `json:"icmpcode,omitempty" doc:"error code for this icmp message"` + IcmpType uint8 `json:"icmptype,omitempty" doc:"type of the icmp message being sent"` + Protocol string `json:"protocol,omitempty" doc:"TCP is default. UDP, ICMP, ICMPv6, AH, ESP, GRE, IPIP are the other supported protocols"` + SecurityGroupID *UUID `json:"securitygroupid,omitempty" doc:"The ID of the security group. Mutually exclusive with securitygroupname parameter"` + SecurityGroupName string `json:"securitygroupname,omitempty" doc:"The name of the security group. Mutually exclusive with securitygroupid parameter"` + StartPort uint16 `json:"startport,omitempty" doc:"start port for this ingress/egress rule"` + UserSecurityGroupList []UserSecurityGroup `json:"usersecuritygrouplist,omitempty" doc:"user to security group mapping"` + _ bool `name:"authorizeSecurityGroupIngress" description:"Authorize a particular ingress/egress rule for this security group"` +} + +// Response returns the struct to unmarshal +func (AuthorizeSecurityGroupIngress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (AuthorizeSecurityGroupIngress) AsyncResponse() interface{} { + return new(SecurityGroup) +} + +func (req AuthorizeSecurityGroupIngress) onBeforeSend(params url.Values) error { + // ICMP code and type may be zero but can also be omitted... + if strings.HasPrefix(strings.ToLower(req.Protocol), "icmp") { + params.Set("icmpcode", strconv.FormatInt(int64(req.IcmpCode), 10)) + params.Set("icmptype", strconv.FormatInt(int64(req.IcmpType), 10)) + } + // StartPort may be zero but can also be omitted... + if req.EndPort != 0 && req.StartPort == 0 { + params.Set("startport", "0") + } + return nil +} + +// AuthorizeSecurityGroupEgress (Async) represents the egress rule creation +type AuthorizeSecurityGroupEgress AuthorizeSecurityGroupIngress + +// Response returns the struct to unmarshal +func (AuthorizeSecurityGroupEgress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (AuthorizeSecurityGroupEgress) AsyncResponse() interface{} { + return new(SecurityGroup) +} + +func (req AuthorizeSecurityGroupEgress) onBeforeSend(params url.Values) error { + return (AuthorizeSecurityGroupIngress)(req).onBeforeSend(params) +} + +// RevokeSecurityGroupIngress (Async) represents the ingress/egress rule deletion +type RevokeSecurityGroupIngress struct { + ID *UUID `json:"id" doc:"The ID of the ingress rule"` + _ bool `name:"revokeSecurityGroupIngress" description:"Deletes a particular ingress rule from this security group"` +} + +// Response returns the struct to unmarshal +func (RevokeSecurityGroupIngress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RevokeSecurityGroupIngress) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// RevokeSecurityGroupEgress (Async) represents the ingress/egress rule deletion +type RevokeSecurityGroupEgress struct { + ID *UUID `json:"id" doc:"The ID of the egress rule"` + _ bool `name:"revokeSecurityGroupEgress" description:"Deletes a particular egress rule from this security group"` +} + +// Response returns the struct to unmarshal +func (RevokeSecurityGroupEgress) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RevokeSecurityGroupEgress) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +//go:generate go run generate/main.go -interface=Listable ListSecurityGroups + +// ListSecurityGroups represents a search for security groups +type ListSecurityGroups struct { + ID *UUID `json:"id,omitempty" doc:"list the security group by the id provided"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + SecurityGroupName string `json:"securitygroupname,omitempty" doc:"lists security groups by name"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"lists security groups by virtual machine id"` + _ bool `name:"listSecurityGroups" description:"Lists security groups"` +} + +// ListSecurityGroupsResponse represents a list of security groups +type ListSecurityGroupsResponse struct { + Count int `json:"count"` + SecurityGroup []SecurityGroup `json:"securitygroup"` +} diff --git a/vendor/github.com/exoscale/egoscale/securitygroups_response.go b/vendor/github.com/exoscale/egoscale/securitygroups_response.go new file mode 100644 index 000000000..ff08f333c --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/securitygroups_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListSecurityGroups) Response() interface{} { + return new(ListSecurityGroupsResponse) +} + +// ListRequest returns itself +func (ls *ListSecurityGroups) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListSecurityGroups) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListSecurityGroups) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListSecurityGroups) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListSecurityGroupsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListSecurityGroupsResponse was expected, got %T", resp)) + return + } + + for i := range items.SecurityGroup { + if !callback(&items.SecurityGroup[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/serialization.go b/vendor/github.com/exoscale/egoscale/serialization.go new file mode 100644 index 000000000..9794c57c0 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/serialization.go @@ -0,0 +1,404 @@ +package egoscale + +import ( + "encoding/base64" + "fmt" + "log" + "net" + "net/url" + "reflect" + "strconv" + "strings" +) + +func csQuotePlus(s string) string { + s = strings.ReplaceAll(s, "+", "%20") + // This line is used to safeguard the "*" when producing the signature + s = strings.ReplaceAll(s, "%2A", "*") + return s +} + +func csEncode(s string) string { + return csQuotePlus(url.QueryEscape(s)) +} + +// info returns the meta info of a command +// +// command is not a Command so it's easier to Test +func info(command interface{}) (*CommandInfo, error) { + typeof := reflect.TypeOf(command) + + // Going up the pointer chain to find the underlying struct + for typeof.Kind() == reflect.Ptr { + typeof = typeof.Elem() + } + + field, ok := typeof.FieldByName("_") + if !ok { + return nil, fmt.Errorf(`missing meta ("_") field in %#v`, command) + } + + name, nameOk := field.Tag.Lookup("name") + description, _ := field.Tag.Lookup("description") + + if !nameOk { + return nil, fmt.Errorf(`missing "name" key in the tag string of %#v`, command) + } + + info := &CommandInfo{ + Name: name, + Description: description, + } + + return info, nil +} + +// prepareValues uses a command to build a POST request +// +// command is not a Command so it's easier to Test +func prepareValues(prefix string, command interface{}) (url.Values, error) { + params := url.Values{} + + value := reflect.ValueOf(command) + typeof := reflect.TypeOf(command) + + // Going up the pointer chain to find the underlying struct + for typeof.Kind() == reflect.Ptr { + typeof = typeof.Elem() + value = value.Elem() + } + + // Checking for nil commands + if !value.IsValid() { + return nil, fmt.Errorf("cannot serialize the invalid value %#v", command) + } + + for i := 0; i < typeof.NumField(); i++ { + field := typeof.Field(i) + if field.Name == "_" { + continue + } + + val := value.Field(i) + tag := field.Tag + + var err error + var name string + var value interface{} + + if json, ok := tag.Lookup("json"); ok { + n, required := ExtractJSONTag(field.Name, json) + name = prefix + n + + switch val.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + value, err = prepareInt(val.Int(), required) + + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + value, err = prepareUint(val.Uint(), required) + + case reflect.Float32, reflect.Float64: + value, err = prepareFloat(val.Float(), required) + + case reflect.String: + value, err = prepareString(val.String(), required) + + case reflect.Bool: + value, err = prepareBool(val.Bool(), required) + + case reflect.Map: + if val.Len() == 0 { + if required { + err = fmt.Errorf("field is required, got empty map") + } + } else { + value, err = prepareMap(name, val.Interface()) + } + + case reflect.Ptr: + value, err = preparePtr(field.Type.Elem().Kind(), val, required) + + case reflect.Slice: + value, err = prepareSlice(name, field.Type, val, required) + + case reflect.Struct: + value, err = prepareStruct(val.Interface(), required) + + default: + if required { + err = fmt.Errorf("unsupported type") + } + } + } else { + switch val.Kind() { + case reflect.Struct: + value, err = prepareEmbedStruct(val.Interface()) + default: + log.Printf("[SKIP] %s.%s no json label found", typeof.Name(), field.Name) + } + } + + if err != nil { + return nil, fmt.Errorf("%s.%s (%v) %s", typeof.Name(), field.Name, val.Kind(), err) + } + + switch v := value.(type) { + case *string: + if name != "" && v != nil { + params.Set(name, *v) + } + case url.Values: + for k, xs := range v { + for _, x := range xs { + params.Add(k, x) + } + } + } + } + + return params, nil +} + +func prepareInt(v int64, required bool) (*string, error) { + if v == 0 { + if required { + return nil, fmt.Errorf("field is required, got %d", v) + } + return nil, nil + } + value := strconv.FormatInt(v, 10) + return &value, nil +} + +func prepareUint(v uint64, required bool) (*string, error) { + if v == 0 { + if required { + return nil, fmt.Errorf("field is required, got %d", v) + } + return nil, nil + } + + value := strconv.FormatUint(v, 10) + return &value, nil +} + +func prepareFloat(v float64, required bool) (*string, error) { + if v == 0 { + if required { + return nil, fmt.Errorf("field is required, got %f", v) + } + return nil, nil + } + value := strconv.FormatFloat(v, 'f', -1, 64) + return &value, nil +} + +func prepareString(v string, required bool) (*string, error) { + if v == "" { + if required { + return nil, fmt.Errorf("field is required, got %q", v) + } + return nil, nil + } + return &v, nil +} + +func prepareBool(v bool, required bool) (*string, error) { + value := strconv.FormatBool(v) + if !v { + if required { + return &value, nil + } + return nil, nil + } + + return &value, nil +} + +func prepareList(prefix string, slice interface{}) (url.Values, error) { + params := url.Values{} + value := reflect.ValueOf(slice) + + for i := 0; i < value.Len(); i++ { + ps, err := prepareValues(fmt.Sprintf("%s[%d].", prefix, i), value.Index(i).Interface()) + if err != nil { + return nil, err + } + + for k, xs := range ps { + for _, x := range xs { + params.Add(k, x) + } + } + } + + return params, nil +} + +func prepareMap(prefix string, m interface{}) (url.Values, error) { + value := url.Values{} + v := reflect.ValueOf(m) + + for i, key := range v.MapKeys() { + var keyName string + var keyValue string + + switch key.Kind() { + case reflect.String: + keyName = key.String() + default: + return value, fmt.Errorf("only map[string]string are supported (XXX)") + } + + val := v.MapIndex(key) + switch val.Kind() { + case reflect.String: + keyValue = val.String() + default: + return value, fmt.Errorf("only map[string]string are supported (XXX)") + } + + value.Set(fmt.Sprintf("%s[%d].%s", prefix, i, keyName), keyValue) + } + + return value, nil +} + +func preparePtr(kind reflect.Kind, val reflect.Value, required bool) (*string, error) { + if val.IsNil() { + if required { + return nil, fmt.Errorf("field is required, got empty ptr") + } + return nil, nil + } + + switch kind { + case reflect.Bool: + return prepareBool(val.Elem().Bool(), true) + case reflect.Struct: + return prepareStruct(val.Interface(), required) + default: + return nil, fmt.Errorf("kind %v is not supported as a ptr", kind) + } +} + +func prepareSlice(name string, fieldType reflect.Type, val reflect.Value, required bool) (interface{}, error) { + switch fieldType.Elem().Kind() { + case reflect.Uint8: + switch fieldType { + case reflect.TypeOf(net.IPv4zero): + ip := (net.IP)(val.Bytes()) + if ip == nil || ip.Equal(net.IP{}) { + if required { + return nil, fmt.Errorf("field is required, got zero IPv4 address") + } + } else { + value := ip.String() + return &value, nil + } + + case reflect.TypeOf(MAC48(0, 0, 0, 0, 0, 0)): + mac := val.Interface().(MACAddress) + s := mac.String() + if s == "" { + if required { + return nil, fmt.Errorf("field is required, got empty MAC address") + } + } else { + return &s, nil + } + default: + if val.Len() == 0 { + if required { + return nil, fmt.Errorf("field is required, got empty slice") + } + } else { + value := base64.StdEncoding.EncodeToString(val.Bytes()) + return &value, nil + } + } + case reflect.String: + if val.Len() == 0 { + if required { + return nil, fmt.Errorf("field is required, got empty slice") + } + } else { + elems := make([]string, 0, val.Len()) + for i := 0; i < val.Len(); i++ { + // XXX what if the value contains a comma? Double encode? + s := val.Index(i).String() + elems = append(elems, s) + } + value := strings.Join(elems, ",") + return &value, nil + } + default: + switch fieldType.Elem() { + case reflect.TypeOf(CIDR{}), reflect.TypeOf(UUID{}): + if val.Len() == 0 { + if required { + return nil, fmt.Errorf("field is required, got empty slice") + } + } else { + v := reflect.ValueOf(val.Interface()) + ss := make([]string, val.Len()) + for i := 0; i < v.Len(); i++ { + e := v.Index(i).Interface() + s, ok := e.(fmt.Stringer) + if !ok { + return nil, fmt.Errorf("not a String, %T", e) + } + ss[i] = s.String() + } + value := strings.Join(ss, ",") + return &value, nil + } + default: + if val.Len() == 0 { + if required { + return nil, fmt.Errorf("field is required, got empty slice") + } + } else { + return prepareList(name, val.Interface()) + } + } + } + + return nil, nil +} + +func prepareStruct(i interface{}, required bool) (*string, error) { + s, ok := i.(fmt.Stringer) + if !ok { + return nil, fmt.Errorf("struct field not a Stringer") + } + + if s == nil { + if required { + return nil, fmt.Errorf("field is required, got %#v", s) + } + } + + return prepareString(s.String(), required) +} + +func prepareEmbedStruct(i interface{}) (url.Values, error) { + return prepareValues("", i) +} + +// ExtractJSONTag returns the variable name or defaultName as well as if the field is required (!omitempty) +func ExtractJSONTag(defaultName, jsonTag string) (string, bool) { + tags := strings.Split(jsonTag, ",") + name := tags[0] + required := true + for _, tag := range tags { + if tag == "omitempty" { + required = false + } + } + + if name == "" || name == "omitempty" { + name = defaultName + } + return name, required +} diff --git a/vendor/github.com/exoscale/egoscale/service_offerings.go b/vendor/github.com/exoscale/egoscale/service_offerings.go new file mode 100644 index 000000000..8d3551467 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/service_offerings.go @@ -0,0 +1,77 @@ +package egoscale + +// ServiceOffering corresponds to the Compute Offerings +// +// A service offering correspond to some hardware features (CPU, RAM). +// +// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/service_offerings.html +type ServiceOffering struct { + Authorized bool `json:"authorized,omitempty" doc:"is the account/domain authorized to use this service offering"` + CPUNumber int `json:"cpunumber,omitempty" doc:"the number of CPU"` + CPUSpeed int `json:"cpuspeed,omitempty" doc:"the clock rate CPU speed in Mhz"` + Created string `json:"created,omitempty" doc:"the date this service offering was created"` + DefaultUse bool `json:"defaultuse,omitempty" doc:"is this a default system vm offering"` + DeploymentPlanner string `json:"deploymentplanner,omitempty" doc:"deployment strategy used to deploy VM."` + DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty" doc:"bytes read rate of the service offering"` + DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty" doc:"bytes write rate of the service offering"` + DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty" doc:"io requests read rate of the service offering"` + DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty" doc:"io requests write rate of the service offering"` + Displaytext string `json:"displaytext,omitempty" doc:"an alternate display text of the service offering."` + HostTags string `json:"hosttags,omitempty" doc:"the host tag for the service offering"` + HypervisorSnapshotReserve int `json:"hypervisorsnapshotreserve,omitempty" doc:"Hypervisor snapshot reserve space as a percent of a volume (for managed storage using Xen or VMware)"` + ID *UUID `json:"id" doc:"the id of the service offering"` + IsCustomized bool `json:"iscustomized,omitempty" doc:"is true if the offering is customized"` + IsCustomizedIops bool `json:"iscustomizediops,omitempty" doc:"true if disk offering uses custom iops, false otherwise"` + IsSystem bool `json:"issystem,omitempty" doc:"is this a system vm offering"` + IsVolatile bool `json:"isvolatile,omitempty" doc:"true if the vm needs to be volatile, i.e., on every reboot of vm from API root disk is discarded and creates a new root disk"` + LimitCPUUse bool `json:"limitcpuuse,omitempty" doc:"restrict the CPU usage to committed service offering"` + MaxIops int64 `json:"maxiops,omitempty" doc:"the max iops of the disk offering"` + Memory int `json:"memory,omitempty" doc:"the memory in MB"` + MinIops int64 `json:"miniops,omitempty" doc:"the min iops of the disk offering"` + Name string `json:"name,omitempty" doc:"the name of the service offering"` + NetworkRate int `json:"networkrate,omitempty" doc:"data transfer rate in megabits per second allowed."` + OfferHA bool `json:"offerha,omitempty" doc:"the ha support in the service offering"` + Restricted bool `json:"restricted,omitempty" doc:"is this offering restricted"` + ServiceOfferingDetails map[string]string `json:"serviceofferingdetails,omitempty" doc:"additional key/value details tied with this service offering"` + StorageType string `json:"storagetype,omitempty" doc:"the storage type for this service offering"` + SystemVMType string `json:"systemvmtype,omitempty" doc:"is this a the systemvm type for system vm offering"` + Tags string `json:"tags,omitempty" doc:"the tags for the service offering"` +} + +// ListRequest builds the ListSecurityGroups request +func (so ServiceOffering) ListRequest() (ListCommand, error) { + // Restricted cannot be applied here because it really has three states + req := &ListServiceOfferings{ + ID: so.ID, + Name: so.Name, + SystemVMType: so.SystemVMType, + } + + if so.IsSystem { + req.IsSystem = &so.IsSystem + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListServiceOfferings + +// ListServiceOfferings represents a query for service offerings +type ListServiceOfferings struct { + ID *UUID `json:"id,omitempty" doc:"ID of the service offering"` + IsSystem *bool `json:"issystem,omitempty" doc:"is this a system vm offering"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"name of the service offering"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + Restricted *bool `json:"restricted,omitempty" doc:"filter by the restriction flag: true to list only the restricted service offerings, false to list non-restricted service offerings, or nothing for all."` + SystemVMType string `json:"systemvmtype,omitempty" doc:"the system VM type. Possible types are \"consoleproxy\", \"secondarystoragevm\" or \"domainrouter\"."` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"the ID of the virtual machine. Pass this in if you want to see the available service offering that a virtual machine can be changed to."` + _ bool `name:"listServiceOfferings" description:"Lists all available service offerings."` +} + +// ListServiceOfferingsResponse represents a list of service offerings +type ListServiceOfferingsResponse struct { + Count int `json:"count"` + ServiceOffering []ServiceOffering `json:"serviceoffering"` +} diff --git a/vendor/github.com/exoscale/egoscale/serviceofferings_response.go b/vendor/github.com/exoscale/egoscale/serviceofferings_response.go new file mode 100644 index 000000000..a01d4aaf4 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/serviceofferings_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListServiceOfferings) Response() interface{} { + return new(ListServiceOfferingsResponse) +} + +// ListRequest returns itself +func (ls *ListServiceOfferings) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListServiceOfferings) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListServiceOfferings) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListServiceOfferings) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListServiceOfferingsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListServiceOfferingsResponse was expected, got %T", resp)) + return + } + + for i := range items.ServiceOffering { + if !callback(&items.ServiceOffering[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/snapshots.go b/vendor/github.com/exoscale/egoscale/snapshots.go new file mode 100644 index 000000000..ecd99d5b7 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/snapshots.go @@ -0,0 +1,160 @@ +package egoscale + +// SnapshotState represents the Snapshot.State enum +// +// See: https://github.com/apache/cloudstack/blob/master/api/src/main/java/com/cloud/storage/Snapshot.java +type SnapshotState string + +const ( + // Allocated ... (TODO) + Allocated SnapshotState = "Allocated" + // Creating ... (TODO) + Creating SnapshotState = "Creating" + // CreatedOnPrimary ... (TODO) + CreatedOnPrimary SnapshotState = "CreatedOnPrimary" + // BackingUp ... (TODO) + BackingUp SnapshotState = "BackingUp" + // BackedUp ... (TODO) + BackedUp SnapshotState = "BackedUp" + // Copying ... (TODO) + Copying SnapshotState = "Copying" + // Destroying ... (TODO) + Destroying SnapshotState = "Destroying" + // Destroyed ... (TODO) + Destroyed SnapshotState = "Destroyed" + // Error is a state where the user can't see the snapshot while the snapshot may still exist on the storage + Error SnapshotState = "Error" +) + +// Snapshot represents a volume snapshot +type Snapshot struct { + Account string `json:"account,omitempty" doc:"the account associated with the snapshot"` + AccountID *UUID `json:"accountid,omitempty" doc:"the account ID associated with the snapshot"` + Created string `json:"created,omitempty" doc:"the date the snapshot was created"` + ID *UUID `json:"id,omitempty" doc:"ID of the snapshot"` + IntervalType string `json:"intervaltype,omitempty" doc:"valid types are hourly, daily, weekly, monthy, template, and none."` + Name string `json:"name,omitempty" doc:"name of the snapshot"` + PhysicalSize int64 `json:"physicalsize,omitempty" doc:"physical size of the snapshot on image store"` + Revertable *bool `json:"revertable,omitempty" doc:"indicates whether the underlying storage supports reverting the volume to this snapshot"` + Size int64 `json:"size,omitempty" doc:"the size of original volume"` + SnapshotType string `json:"snapshottype,omitempty" doc:"the type of the snapshot"` + State string `json:"state,omitempty" doc:"the state of the snapshot. BackedUp means that snapshot is ready to be used; Creating - the snapshot is being allocated on the primary storage; BackingUp - the snapshot is being backed up on secondary storage"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with snapshot"` + VolumeID *UUID `json:"volumeid,omitempty" doc:"ID of the disk volume"` + VolumeName string `json:"volumename,omitempty" doc:"name of the disk volume"` + VolumeType string `json:"volumetype,omitempty" doc:"type of the disk volume"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"id of the availability zone"` +} + +// ResourceType returns the type of the resource +func (Snapshot) ResourceType() string { + return "Snapshot" +} + +// CreateSnapshot (Async) creates an instant snapshot of a volume +type CreateSnapshot struct { + VolumeID *UUID `json:"volumeid" doc:"The ID of the disk volume"` + QuiesceVM *bool `json:"quiescevm,omitempty" doc:"quiesce vm if true"` + _ bool `name:"createSnapshot" description:"Creates an instant snapshot of a volume."` +} + +// Response returns the struct to unmarshal +func (CreateSnapshot) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (CreateSnapshot) AsyncResponse() interface{} { + return new(Snapshot) +} + +// ListRequest builds the ListSnapshot request +func (ss Snapshot) ListRequest() (ListCommand, error) { + // Restricted cannot be applied here because it really has three states + req := &ListSnapshots{ + ID: ss.ID, + Name: ss.Name, + VolumeID: ss.VolumeID, + SnapshotType: ss.SnapshotType, + ZoneID: ss.ZoneID, + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListSnapshots + +// ListSnapshots lists the volume snapshots +type ListSnapshots struct { + ID *UUID `json:"id,omitempty" doc:"lists snapshot by snapshot ID"` + IntervalType string `json:"intervaltype,omitempty" doc:"valid values are HOURLY, DAILY, WEEKLY, and MONTHLY."` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"lists snapshot by snapshot name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + SnapshotType string `json:"snapshottype,omitempty" doc:"valid values are MANUAL or RECURRING."` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + VolumeID *UUID `json:"volumeid,omitempty" doc:"the ID of the disk volume"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"list snapshots by zone id"` + _ bool `name:"listSnapshots" description:"Lists all available snapshots for the account."` +} + +// ListSnapshotsResponse represents a list of volume snapshots +type ListSnapshotsResponse struct { + Count int `json:"count"` + Snapshot []Snapshot `json:"snapshot"` +} + +// DeleteSnapshot (Async) deletes a snapshot of a disk volume +type DeleteSnapshot struct { + ID *UUID `json:"id" doc:"The ID of the snapshot"` + _ bool `name:"deleteSnapshot" description:"Deletes a snapshot of a disk volume."` +} + +// Response returns the struct to unmarshal +func (DeleteSnapshot) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DeleteSnapshot) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// RevertSnapshot (Async) reverts a volume snapshot +type RevertSnapshot struct { + ID *UUID `json:"id" doc:"The ID of the snapshot"` + _ bool `name:"revertSnapshot" description:"revert a volume snapshot."` +} + +// Response returns the struct to unmarshal +func (RevertSnapshot) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RevertSnapshot) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// ExportSnapshot (Async) exports a volume snapshot +type ExportSnapshot struct { + ID *UUID `json:"id" doc:"The ID of the snapshot"` + _ bool `name:"exportSnapshot" description:"Exports an instant snapshot of a volume."` +} + +// ExportSnapshotResponse represents the response of a snapshot export operation +type ExportSnapshotResponse struct { + PresignedURL string `json:"presignedurl"` + MD5sum string `json:"md5sum"` +} + +// Response returns the struct to unmarshal +func (ExportSnapshot) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ExportSnapshot) AsyncResponse() interface{} { + return new(ExportSnapshotResponse) +} diff --git a/vendor/github.com/exoscale/egoscale/snapshots_response.go b/vendor/github.com/exoscale/egoscale/snapshots_response.go new file mode 100644 index 000000000..2ca9cff5a --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/snapshots_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListSnapshots) Response() interface{} { + return new(ListSnapshotsResponse) +} + +// ListRequest returns itself +func (ls *ListSnapshots) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListSnapshots) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListSnapshots) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListSnapshots) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListSnapshotsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListSnapshotsResponse was expected, got %T", resp)) + return + } + + for i := range items.Snapshot { + if !callback(&items.Snapshot[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/sos_buckets_usage.go b/vendor/github.com/exoscale/egoscale/sos_buckets_usage.go new file mode 100644 index 000000000..4d0b49495 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/sos_buckets_usage.go @@ -0,0 +1,25 @@ +package egoscale + +// BucketUsage represents the usage (in bytes) for a bucket +type BucketUsage struct { + Created string `json:"created"` + Name string `json:"name"` + Region string `json:"region"` + Usage int64 `json:"usage"` +} + +// ListBucketsUsage represents a listBucketsUsage API request +type ListBucketsUsage struct { + _ bool `name:"listBucketsUsage" description:"List"` +} + +// ListBucketsUsageResponse represents a listBucketsUsage API response +type ListBucketsUsageResponse struct { + Count int `json:"count"` + BucketsUsage []BucketUsage `json:"bucketsusage"` +} + +// Response returns the struct to unmarshal +func (ListBucketsUsage) Response() interface{} { + return new(ListBucketsUsageResponse) +} diff --git a/vendor/github.com/exoscale/egoscale/ssh_keypairs.go b/vendor/github.com/exoscale/egoscale/ssh_keypairs.go new file mode 100644 index 000000000..9f2bedca0 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/ssh_keypairs.go @@ -0,0 +1,105 @@ +package egoscale + +import ( + "context" + "fmt" +) + +// SSHKeyPair represents an SSH key pair +// +// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/stable/virtual_machines.html#creating-the-ssh-keypair +type SSHKeyPair struct { + Fingerprint string `json:"fingerprint,omitempty" doc:"Fingerprint of the public key"` + Name string `json:"name,omitempty" doc:"Name of the keypair"` + PrivateKey string `json:"privatekey,omitempty" doc:"Private key"` +} + +// Delete removes the given SSH key, by Name +func (ssh SSHKeyPair) Delete(ctx context.Context, client *Client) error { + if ssh.Name == "" { + return fmt.Errorf("an SSH Key Pair may only be deleted using Name") + } + + return client.BooleanRequestWithContext(ctx, &DeleteSSHKeyPair{ + Name: ssh.Name, + }) +} + +// ListRequest builds the ListSSHKeyPairs request +func (ssh SSHKeyPair) ListRequest() (ListCommand, error) { + req := &ListSSHKeyPairs{ + Fingerprint: ssh.Fingerprint, + Name: ssh.Name, + } + + return req, nil +} + +// CreateSSHKeyPair represents a new keypair to be created +type CreateSSHKeyPair struct { + Name string `json:"name" doc:"Name of the keypair"` + _ bool `name:"createSSHKeyPair" description:"Create a new keypair and returns the private key"` +} + +// Response returns the struct to unmarshal +func (CreateSSHKeyPair) Response() interface{} { + return new(SSHKeyPair) +} + +// DeleteSSHKeyPair represents a new keypair to be created +type DeleteSSHKeyPair struct { + Name string `json:"name" doc:"Name of the keypair"` + _ bool `name:"deleteSSHKeyPair" description:"Deletes a keypair by name"` +} + +// Response returns the struct to unmarshal +func (DeleteSSHKeyPair) Response() interface{} { + return new(BooleanResponse) +} + +// RegisterSSHKeyPair represents a new registration of a public key in a keypair +type RegisterSSHKeyPair struct { + Name string `json:"name" doc:"Name of the keypair"` + PublicKey string `json:"publickey" doc:"Public key material of the keypair"` + _ bool `name:"registerSSHKeyPair" description:"Register a public key in a keypair under a certain name"` +} + +// Response returns the struct to unmarshal +func (RegisterSSHKeyPair) Response() interface{} { + return new(SSHKeyPair) +} + +//go:generate go run generate/main.go -interface=Listable ListSSHKeyPairs + +// ListSSHKeyPairs represents a query for a list of SSH KeyPairs +type ListSSHKeyPairs struct { + Fingerprint string `json:"fingerprint,omitempty" doc:"A public key fingerprint to look for"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"A key pair name to look for"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + _ bool `name:"listSSHKeyPairs" description:"List registered keypairs"` +} + +// ListSSHKeyPairsResponse represents a list of SSH key pairs +type ListSSHKeyPairsResponse struct { + Count int `json:"count"` + SSHKeyPair []SSHKeyPair `json:"sshkeypair"` +} + +// ResetSSHKeyForVirtualMachine (Async) represents a change for the key pairs +type ResetSSHKeyForVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + KeyPair string `json:"keypair" doc:"Name of the ssh key pair used to login to the virtual machine"` + _ bool `name:"resetSSHKeyForVirtualMachine" description:"Resets the SSH Key for virtual machine. The virtual machine must be in a \"Stopped\" state."` +} + +// Response returns the struct to unmarshal +func (ResetSSHKeyForVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ResetSSHKeyForVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} diff --git a/vendor/github.com/exoscale/egoscale/sshkeypairs_response.go b/vendor/github.com/exoscale/egoscale/sshkeypairs_response.go new file mode 100644 index 000000000..31c471df2 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/sshkeypairs_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListSSHKeyPairs) Response() interface{} { + return new(ListSSHKeyPairsResponse) +} + +// ListRequest returns itself +func (ls *ListSSHKeyPairs) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListSSHKeyPairs) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListSSHKeyPairs) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListSSHKeyPairs) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListSSHKeyPairsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListSSHKeyPairsResponse was expected, got %T", resp)) + return + } + + for i := range items.SSHKeyPair { + if !callback(&items.SSHKeyPair[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/tags.go b/vendor/github.com/exoscale/egoscale/tags.go new file mode 100644 index 000000000..56e014850 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/tags.go @@ -0,0 +1,84 @@ +package egoscale + +// ResourceTag is a tag associated with a resource +// +// https://community.exoscale.com/documentation/compute/instance-tags/ +type ResourceTag struct { + Account string `json:"account,omitempty" doc:"the account associated with the tag"` + Customer string `json:"customer,omitempty" doc:"customer associated with the tag"` + Key string `json:"key,omitempty" doc:"tag key name"` + ResourceID *UUID `json:"resourceid,omitempty" doc:"id of the resource"` + ResourceType string `json:"resourcetype,omitempty" doc:"resource type"` + Value string `json:"value,omitempty" doc:"tag value"` +} + +// ListRequest builds the ListZones request +func (tag ResourceTag) ListRequest() (ListCommand, error) { + req := &ListTags{ + Customer: tag.Customer, + Key: tag.Key, + ResourceID: tag.ResourceID, + ResourceType: tag.ResourceType, + Value: tag.Value, + } + + return req, nil +} + +// CreateTags (Async) creates resource tag(s) +type CreateTags struct { + ResourceIDs []UUID `json:"resourceids" doc:"list of resources to create the tags for"` + ResourceType string `json:"resourcetype" doc:"type of the resource"` + Tags []ResourceTag `json:"tags" doc:"Map of tags (key/value pairs)"` + Customer string `json:"customer,omitempty" doc:"identifies client specific tag. When the value is not null, the tag can't be used by cloudStack code internally"` + _ bool `name:"createTags" description:"Creates resource tag(s)"` +} + +// Response returns the struct to unmarshal +func (CreateTags) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (CreateTags) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// DeleteTags (Async) deletes the resource tag(s) +type DeleteTags struct { + ResourceIDs []UUID `json:"resourceids" doc:"Delete tags for resource id(s)"` + ResourceType string `json:"resourcetype" doc:"Delete tag by resource type"` + Tags []ResourceTag `json:"tags,omitempty" doc:"Delete tags matching key/value pairs"` + _ bool `name:"deleteTags" description:"Deleting resource tag(s)"` +} + +// Response returns the struct to unmarshal +func (DeleteTags) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DeleteTags) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +//go:generate go run generate/main.go -interface=Listable ListTags + +// ListTags list resource tag(s) +type ListTags struct { + Customer string `json:"customer,omitempty" doc:"list by customer name"` + Key string `json:"key,omitempty" doc:"list by key"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ResourceID *UUID `json:"resourceid,omitempty" doc:"list by resource id"` + ResourceType string `json:"resourcetype,omitempty" doc:"list by resource type"` + Value string `json:"value,omitempty" doc:"list by value"` + _ bool `name:"listTags" description:"List resource tag(s)"` +} + +// ListTagsResponse represents a list of resource tags +type ListTagsResponse struct { + Count int `json:"count"` + Tag []ResourceTag `json:"tag"` +} diff --git a/vendor/github.com/exoscale/egoscale/tags_response.go b/vendor/github.com/exoscale/egoscale/tags_response.go new file mode 100644 index 000000000..870ef49a8 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/tags_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListTags) Response() interface{} { + return new(ListTagsResponse) +} + +// ListRequest returns itself +func (ls *ListTags) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListTags) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListTags) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListTags) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListTagsResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListTagsResponse was expected, got %T", resp)) + return + } + + for i := range items.Tag { + if !callback(&items.Tag[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/templates.go b/vendor/github.com/exoscale/egoscale/templates.go new file mode 100644 index 000000000..51d57fe7f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/templates.go @@ -0,0 +1,165 @@ +package egoscale + +// Template represents a machine to be deployed. +type Template struct { + Account string `json:"account,omitempty" doc:"the account name to which the template belongs"` + AccountID *UUID `json:"accountid,omitempty" doc:"the account id to which the template belongs"` + Bootable bool `json:"bootable,omitempty" doc:"true if the ISO is bootable, false otherwise"` + BootMode string `json:"bootmode" doc:"the template boot mode (legacy/uefi)"` + Checksum string `json:"checksum,omitempty" doc:"checksum of the template"` + Created string `json:"created,omitempty" doc:"the date this template was created"` + CrossZones bool `json:"crossZones,omitempty" doc:"true if the template is managed across all Zones, false otherwise"` + Details map[string]string `json:"details,omitempty" doc:"additional key/value details tied with template"` + DisplayText string `json:"displaytext,omitempty" doc:"the template display text"` + Format string `json:"format,omitempty" doc:"the format of the template."` + HostID *UUID `json:"hostid,omitempty" doc:"the ID of the secondary storage host for the template"` + HostName string `json:"hostname,omitempty" doc:"the name of the secondary storage host for the template"` + Hypervisor string `json:"hypervisor,omitempty" doc:"the target hypervisor for the template"` + ID *UUID `json:"id,omitempty" doc:"the template ID"` + IsDynamicallyScalable bool `json:"isdynamicallyscalable,omitempty" doc:"true if template contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory"` + IsExtractable bool `json:"isextractable,omitempty" doc:"true if the template is extractable, false otherwise"` + IsFeatured bool `json:"isfeatured,omitempty" doc:"true if this template is a featured template, false otherwise"` + IsPublic bool `json:"ispublic,omitempty" doc:"true if this template is a public template, false otherwise"` + IsReady bool `json:"isready,omitempty" doc:"true if the template is ready to be deployed from, false otherwise."` + Name string `json:"name,omitempty" doc:"the template name"` + OsCategoryID *UUID `json:"oscategoryid,omitempty" doc:"the ID of the OS category for this template"` + OsCategoryName string `json:"oscategoryname,omitempty" doc:"the name of the OS category for this template"` + OsTypeID *UUID `json:"ostypeid,omitempty" doc:"the ID of the OS type for this template"` + OsTypeName string `json:"ostypename,omitempty" doc:"the name of the OS type for this template"` + PasswordEnabled bool `json:"passwordenabled,omitempty" doc:"true if the reset password feature is enabled, false otherwise"` + Removed string `json:"removed,omitempty" doc:"the date this template was removed"` + Size int64 `json:"size,omitempty" doc:"the size of the template"` + SourceTemplateID *UUID `json:"sourcetemplateid,omitempty" doc:"the template ID of the parent template if present"` + SSHKeyEnabled bool `json:"sshkeyenabled,omitempty" doc:"true if template is sshkey enabled, false otherwise"` + Status string `json:"status,omitempty" doc:"the status of the template"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with tempate"` + TemplateDirectory string `json:"templatedirectory,omitempty" doc:"Template directory"` + TemplateTag string `json:"templatetag,omitempty" doc:"the tag of this template"` + TemplateType string `json:"templatetype,omitempty" doc:"the type of the template"` + URL string `json:"url,omitempty" doc:"Original URL of the template where it was downloaded"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the zone for this template"` + ZoneName string `json:"zonename,omitempty" doc:"the name of the zone for this template"` +} + +// ResourceType returns the type of the resource +func (Template) ResourceType() string { + return "Template" +} + +// ListRequest builds the ListTemplates request +func (template Template) ListRequest() (ListCommand, error) { + req := &ListTemplates{ + ID: template.ID, + Name: template.Name, + ZoneID: template.ZoneID, + } + if template.IsFeatured { + req.TemplateFilter = "featured" + } + if template.Removed != "" { + *req.ShowRemoved = true + } + + for i := range template.Tags { + req.Tags = append(req.Tags, template.Tags[i]) + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListTemplates + +// ListTemplates represents a template query filter +type ListTemplates struct { + TemplateFilter string `json:"templatefilter,omitempty" doc:"Possible values are \"featured\", \"self\", \"selfexecutable\",\"sharedexecutable\",\"executable\", and \"community\". * featured : templates that have been marked as featured and public. * self : templates that have been registered or created by the calling user. * selfexecutable : same as self, but only returns templates that can be used to deploy a new VM. * sharedexecutable : templates ready to be deployed that have been granted to the calling user by another user. * executable : templates that are owned by the calling user, or public templates, that can be used to deploy a VM. * community : templates that have been marked as public but not featured."` + ID *UUID `json:"id,omitempty" doc:"the template ID"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"the template name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ShowRemoved *bool `json:"showremoved,omitempty" doc:"Show removed templates as well"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + ZoneID *UUID `json:"zoneid,omitempty" doc:"list templates by zoneid"` + _ bool `name:"listTemplates" description:"List all public, private, and privileged templates."` +} + +// ListTemplatesResponse represents a list of templates +type ListTemplatesResponse struct { + Count int `json:"count"` + Template []Template `json:"template"` +} + +// OSCategory represents an OS category +type OSCategory struct { + ID *UUID `json:"id,omitempty" doc:"the ID of the OS category"` + Name string `json:"name,omitempty" doc:"the name of the OS category"` +} + +// ListRequest builds the ListOSCategories request +func (osCat OSCategory) ListRequest() (ListCommand, error) { + req := &ListOSCategories{ + Name: osCat.Name, + ID: osCat.ID, + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListOSCategories + +// ListOSCategories lists the OS categories +type ListOSCategories struct { + ID *UUID `json:"id,omitempty" doc:"list Os category by id"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"list os category by name"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + _ bool `name:"listOsCategories" description:"Lists all supported OS categories for this cloud."` +} + +// ListOSCategoriesResponse represents a list of OS categories +type ListOSCategoriesResponse struct { + Count int `json:"count"` + OSCategory []OSCategory `json:"oscategory"` +} + +// DeleteTemplate deletes a template by ID +type DeleteTemplate struct { + _ bool `name:"deleteTemplate" description:"Deletes a template"` + ID *UUID `json:"id" doc:"the ID of the template"` +} + +// Response returns the struct to unmarshal +func (DeleteTemplate) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DeleteTemplate) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// RegisterCustomTemplate registers a new template +type RegisterCustomTemplate struct { + _ bool `name:"registerCustomTemplate" description:"Register a new template."` + BootMode string `json:"bootmode" doc:"the template boot mode (legacy/uefi)"` + Checksum string `json:"checksum" doc:"the MD5 checksum value of this template"` + Details map[string]string `json:"details,omitempty" doc:"Template details in key/value pairs"` + Displaytext string `json:"displaytext,omitempty" doc:"the display text of the template"` + Name string `json:"name" doc:"the name of the template"` + PasswordEnabled *bool `json:"passwordenabled,omitempty" doc:"true if the template supports the password reset feature; default is false"` + SSHKeyEnabled *bool `json:"sshkeyenabled,omitempty" doc:"true if the template supports the sshkey upload feature; default is false"` + TemplateTag string `json:"templatetag,omitempty" doc:"the tag for this template"` + URL string `json:"url" doc:"the URL of where the template is hosted"` + ZoneID *UUID `json:"zoneid" doc:"the ID of the zone the template is to be hosted on"` +} + +// Response returns the struct to unmarshal +func (RegisterCustomTemplate) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RegisterCustomTemplate) AsyncResponse() interface{} { + return new([]Template) +} diff --git a/vendor/github.com/exoscale/egoscale/templates_response.go b/vendor/github.com/exoscale/egoscale/templates_response.go new file mode 100644 index 000000000..b9d61b546 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/templates_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListTemplates) Response() interface{} { + return new(ListTemplatesResponse) +} + +// ListRequest returns itself +func (ls *ListTemplates) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListTemplates) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListTemplates) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListTemplates) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListTemplatesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListTemplatesResponse was expected, got %T", resp)) + return + } + + for i := range items.Template { + if !callback(&items.Template[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/users.go b/vendor/github.com/exoscale/egoscale/users.go new file mode 100644 index 000000000..71078a97b --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/users.go @@ -0,0 +1,63 @@ +package egoscale + +// User represents a User +type User struct { + APIKey string `json:"apikey,omitempty" doc:"the api key of the user"` + Account string `json:"account,omitempty" doc:"the account name of the user"` + AccountID *UUID `json:"accountid,omitempty" doc:"the account ID of the user"` + Created string `json:"created,omitempty" doc:"the date and time the user account was created"` + Email string `json:"email,omitempty" doc:"the user email address"` + FirstName string `json:"firstname,omitempty" doc:"the user firstname"` + ID *UUID `json:"id,omitempty" doc:"the user ID"` + IsDefault bool `json:"isdefault,omitempty" doc:"true if user is default, false otherwise"` + LastName string `json:"lastname,omitempty" doc:"the user lastname"` + RoleID *UUID `json:"roleid,omitempty" doc:"the ID of the role"` + RoleName string `json:"rolename,omitempty" doc:"the name of the role"` + RoleType string `json:"roletype,omitempty" doc:"the type of the role"` + SecretKey string `json:"secretkey,omitempty" doc:"the secret key of the user"` + State string `json:"state,omitempty" doc:"the user state"` + Timezone string `json:"timezone,omitempty" doc:"the timezone user was created in"` + UserName string `json:"username,omitempty" doc:"the user name"` +} + +// ListRequest builds the ListUsers request +func (user User) ListRequest() (ListCommand, error) { + req := &ListUsers{ + ID: user.ID, + UserName: user.UserName, + } + + return req, nil +} + +// RegisterUserKeys registers a new set of key of the given user +// +// NB: only the APIKey and SecretKey will be filled +type RegisterUserKeys struct { + ID *UUID `json:"id" doc:"User id"` + _ bool `name:"registerUserKeys" description:"This command allows a user to register for the developer API, returning a secret key and an API key. This request is made through the integration API port, so it is a privileged command and must be made on behalf of a user. It is up to the implementer just how the username and password are entered, and then how that translates to an integration API request. Both secret key and API key should be returned to the user"` +} + +// Response returns the struct to unmarshal +func (RegisterUserKeys) Response() interface{} { + return new(User) +} + +//go:generate go run generate/main.go -interface=Listable ListUsers + +// ListUsers represents the search for Users +type ListUsers struct { + ID *UUID `json:"id,omitempty" doc:"List user by ID."` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + State string `json:"state,omitempty" doc:"List users by state of the user account."` + UserName string `json:"username,omitempty" doc:"List user by the username"` + _ bool `name:"listUsers" description:"Lists user accounts"` +} + +// ListUsersResponse represents a list of users +type ListUsersResponse struct { + Count int `json:"count"` + User []User `json:"user"` +} diff --git a/vendor/github.com/exoscale/egoscale/users_response.go b/vendor/github.com/exoscale/egoscale/users_response.go new file mode 100644 index 000000000..4bd4bf473 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/users_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListUsers) Response() interface{} { + return new(ListUsersResponse) +} + +// ListRequest returns itself +func (ls *ListUsers) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListUsers) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListUsers) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListUsers) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListUsersResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListUsersResponse was expected, got %T", resp)) + return + } + + for i := range items.User { + if !callback(&items.User[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/uuid.go b/vendor/github.com/exoscale/egoscale/uuid.go new file mode 100644 index 000000000..dd8be1557 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/uuid.go @@ -0,0 +1,79 @@ +package egoscale + +import ( + "encoding/json" + "fmt" + + uuid "github.com/gofrs/uuid" +) + +// UUID holds a UUID v4 +type UUID struct { + uuid.UUID +} + +// DeepCopy create a true copy of the receiver. +func (u *UUID) DeepCopy() *UUID { + if u == nil { + return nil + } + + out := [uuid.Size]byte{} + copy(out[:], u.Bytes()) + + return &UUID{ + (uuid.UUID)(out), + } +} + +// DeepCopyInto copies the receiver into out. +// +// In must be non nil. +func (u *UUID) DeepCopyInto(out *UUID) { + o := [uuid.Size]byte{} + copy(o[:], u.Bytes()) + + out.UUID = (uuid.UUID)(o) +} + +// Equal returns true if itself is equal to other. +func (u UUID) Equal(other UUID) bool { + return u == other +} + +// UnmarshalJSON unmarshals the raw JSON into the UUID. +func (u *UUID) UnmarshalJSON(b []byte) error { + var s string + if err := json.Unmarshal(b, &s); err != nil { + return err + } + + new, err := ParseUUID(s) + if err == nil { + u.UUID = new.UUID + } + return err +} + +// MarshalJSON converts the UUID to a string representation. +func (u UUID) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf("%q", u.String())), nil +} + +// ParseUUID parses a string into a UUID. +func ParseUUID(s string) (*UUID, error) { + u, err := uuid.FromString(s) + if err != nil { + return nil, err + } + return &UUID{u}, nil +} + +// MustParseUUID acts like ParseUUID but panic in case of a failure. +func MustParseUUID(s string) *UUID { + u, e := ParseUUID(s) + if e != nil { + panic(e) + } + return u +} diff --git a/vendor/github.com/exoscale/egoscale/v2/api/api.go b/vendor/github.com/exoscale/egoscale/v2/api/api.go new file mode 100644 index 000000000..c0660f863 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/api/api.go @@ -0,0 +1,3 @@ +// Package api implements low-level primitives for interacting with the +// Exoscale API. +package api diff --git a/vendor/github.com/exoscale/egoscale/v2/api/error.go b/vendor/github.com/exoscale/egoscale/v2/api/error.go new file mode 100644 index 000000000..cc90d8cee --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/api/error.go @@ -0,0 +1,14 @@ +package api + +import "errors" + +var ( + // ErrNotFound represents an error indicating a non-existent resource. + ErrNotFound = errors.New("resource not found") + + // ErrInvalidRequest represents an error indicating that the caller's request is invalid. + ErrInvalidRequest = errors.New("invalid request") + + // ErrAPIError represents an error indicating an API-side issue. + ErrAPIError = errors.New("API error") +) diff --git a/vendor/github.com/exoscale/egoscale/v2/api/middleware.go b/vendor/github.com/exoscale/egoscale/v2/api/middleware.go new file mode 100644 index 000000000..3020f2eda --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/api/middleware.go @@ -0,0 +1,67 @@ +package api + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" +) + +type Middleware interface { + http.RoundTripper +} + +// ErrorHandlerMiddleware is an Exoscale API HTTP client middleware that +// returns concrete Go errors according to API response errors. +type ErrorHandlerMiddleware struct { + next http.RoundTripper +} + +func NewAPIErrorHandlerMiddleware(next http.RoundTripper) Middleware { + if next == nil { + next = http.DefaultTransport + } + + return &ErrorHandlerMiddleware{next: next} +} + +func (m *ErrorHandlerMiddleware) RoundTrip(req *http.Request) (*http.Response, error) { + resp, err := m.next.RoundTrip(req) + if err != nil { + // If the request returned a Go error don't bother analyzing the response + // body, as there probably won't be any (e.g. connection timeout/refused). + return resp, err + } + + if resp.StatusCode >= 400 && resp.StatusCode <= 599 { + var res struct { + Message string `json:"message"` + } + + data, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("error reading response body: %s", err) + } + + if json.Valid(data) { + if err = json.Unmarshal(data, &res); err != nil { + return nil, fmt.Errorf("error unmarshaling response: %s", err) + } + } else { + res.Message = string(data) + } + + switch { + case resp.StatusCode == http.StatusNotFound: + return nil, ErrNotFound + + case resp.StatusCode >= 400 && resp.StatusCode < 500: + return nil, fmt.Errorf("%w: %s", ErrInvalidRequest, res.Message) + + case resp.StatusCode >= 500: + return nil, fmt.Errorf("%w: %s", ErrAPIError, res.Message) + } + } + + return resp, err +} diff --git a/vendor/github.com/exoscale/egoscale/v2/api/request.go b/vendor/github.com/exoscale/egoscale/v2/api/request.go new file mode 100644 index 000000000..36bd7286b --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/api/request.go @@ -0,0 +1,67 @@ +package api + +import ( + "context" + "fmt" +) + +const ( + EndpointURL = "https://api.exoscale.com/" + Prefix = "v2.alpha" +) + +const defaultReqEndpointEnv = "api" + +// ReqEndpoint represents an Exoscale API request endpoint. +type ReqEndpoint struct { + env string + zone string +} + +// NewReqEndpoint returns a new Exoscale API request endpoint from an environment and zone. +func NewReqEndpoint(env, zone string) ReqEndpoint { + re := ReqEndpoint{ + env: env, + zone: zone, + } + + if re.env == "" { + re.env = defaultReqEndpointEnv + } + + return re +} + +// Env returns the Exoscale API endpoint environment. +func (r *ReqEndpoint) Env() string { + return r.env +} + +// Zone returns the Exoscale API endpoint zone. +func (r *ReqEndpoint) Zone() string { + return r.zone +} + +// Host returns the Exoscale API endpoint host FQDN. +func (r *ReqEndpoint) Host() string { + return fmt.Sprintf("%s-%s.exoscale.com", r.env, r.zone) +} + +// WithEndpoint returns an augmented context instance containing the Exoscale endpoint to send +// the request to. +func WithEndpoint(ctx context.Context, endpoint ReqEndpoint) context.Context { + return context.WithValue(ctx, ReqEndpoint{}, endpoint) +} + +// WithZone is a shorthand to WithEndpoint where only the endpoint zone has to be specified. +// If a request endpoint is already set in the specified context instance, the value currently +// set for the environment will be reused. +func WithZone(ctx context.Context, zone string) context.Context { + var env string + + if v, ok := ctx.Value(ReqEndpoint{}).(ReqEndpoint); ok { + env = v.Env() + } + + return WithEndpoint(ctx, NewReqEndpoint(env, zone)) +} diff --git a/vendor/github.com/exoscale/egoscale/v2/api/security.go b/vendor/github.com/exoscale/egoscale/v2/api/security.go new file mode 100644 index 000000000..dd925be66 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/api/security.go @@ -0,0 +1,127 @@ +package api + +import ( + "bytes" + "context" + "crypto/hmac" + "crypto/sha256" + "encoding/base64" + "errors" + "fmt" + "io/ioutil" + "net/http" + "sort" + "strings" + "time" +) + +// SecurityProviderExoscale represents an Exoscale public API security +// provider. +type SecurityProviderExoscale struct { + // ReqExpire represents the request expiration duration. + ReqExpire time.Duration + + apiKey string + apiSecret string +} + +// NewSecurityProvider returns a new Exoscale public API security +// provider to sign API requests using the specified API key/secret. +func NewSecurityProvider(apiKey, apiSecret string) (*SecurityProviderExoscale, error) { + if apiKey == "" { + return nil, errors.New("missing API key") + } + + if apiSecret == "" { + return nil, errors.New("missing API secret") + } + + return &SecurityProviderExoscale{ + ReqExpire: 10 * time.Minute, + apiKey: apiKey, + apiSecret: apiSecret, + }, nil +} + +// Intercept is an HTTP middleware that intercepts and signs client requests +// before sending them to the API endpoint. +func (s *SecurityProviderExoscale) Intercept(_ context.Context, req *http.Request) error { + return s.signRequest(req, time.Now().UTC().Add(s.ReqExpire)) +} + +func (s *SecurityProviderExoscale) signRequest(req *http.Request, expiration time.Time) error { + var ( + sigParts []string + headerParts []string + ) + + // Request method/URL path + sigParts = append(sigParts, fmt.Sprintf("%s %s", req.Method, req.URL.Path)) + headerParts = append(headerParts, "EXO2-HMAC-SHA256 credential="+s.apiKey) + + // Request body if present + body := "" + if req.Body != nil { + data, err := ioutil.ReadAll(req.Body) + if err != nil { + return err + } + err = req.Body.Close() + if err != nil { + return err + } + body = string(data) + req.Body = ioutil.NopCloser(bytes.NewReader(data)) + } + sigParts = append(sigParts, body) + + // Request query string parameters + // Important: this is order-sensitive, we have to have to sort parameters alphabetically to ensure signed + // values match the names listed in the "signed-query-args=" signature pragma. + signedParams, paramsValues := extractRequestParameters(req) + sigParts = append(sigParts, paramsValues) + if len(signedParams) > 0 { + headerParts = append(headerParts, "signed-query-args="+strings.Join(signedParams, ";")) + } + + // Request headers -- none at the moment + // Note: the same order-sensitive caution for query string parameters applies to headers. + sigParts = append(sigParts, "") + + // Request expiration date (UNIX timestamp, no line return) + sigParts = append(sigParts, fmt.Sprint(expiration.Unix())) + headerParts = append(headerParts, "expires="+fmt.Sprint(expiration.Unix())) + + h := hmac.New(sha256.New, []byte(s.apiSecret)) + if _, err := h.Write([]byte(strings.Join(sigParts, "\n"))); err != nil { + return err + } + headerParts = append(headerParts, "signature="+base64.StdEncoding.EncodeToString(h.Sum(nil))) + + req.Header.Set("Authorization", strings.Join(headerParts, ",")) + + return nil +} + +// extractRequestParameters returns the list of request URL parameters names +// and a strings concatenating the values of the parameters. +func extractRequestParameters(req *http.Request) ([]string, string) { + var ( + names []string + values string + ) + + for param, values := range req.URL.Query() { + // Keep only parameters that hold exactly 1 value (i.e. no empty or multi-valued parameters) + if len(values) == 1 { + names = append(names, param) + } + } + sort.Strings(names) + + for _, param := range names { + values += req.URL.Query().Get(param) + } + + return names, values +} diff --git a/vendor/github.com/exoscale/egoscale/v2/client.go b/vendor/github.com/exoscale/egoscale/v2/client.go new file mode 100644 index 000000000..2ec492492 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/client.go @@ -0,0 +1,133 @@ +package v2 + +import ( + "context" + "errors" + "fmt" + "net/http" + "net/url" + "time" + + "github.com/exoscale/egoscale/v2/api" + papi "github.com/exoscale/egoscale/v2/internal/public-api" +) + +const defaultTimeout = 60 * time.Second + +// ClientOpt represents a function setting Exoscale API client option. +type ClientOpt func(*Client) error + +// ClientOptWithAPIEndpoint returns a ClientOpt overriding the default Exoscale API endpoint. +func ClientOptWithAPIEndpoint(v string) ClientOpt { + return func(c *Client) error { + endpointURL, err := url.Parse(v) + if err != nil { + return fmt.Errorf("failed to parse URL: %s", err) + } + + endpointURL = endpointURL.ResolveReference(&url.URL{Path: api.Prefix}) + c.apiEndpoint = endpointURL.String() + + return nil + } +} + +// ClientOptWithTimeout returns a ClientOpt overriding the default client timeout. +func ClientOptWithTimeout(v time.Duration) ClientOpt { + return func(c *Client) error { + c.timeout = v + + if v <= 0 { + return errors.New("timeout value must be greater than 0") + } + + return nil + } +} + +// ClientOptWithHTTPClient returns a ClientOpt overriding the default http.Client. +// Note: the Exoscale API client will chain additional middleware +// (http.RoundTripper) on the HTTP client internally, which can alter the HTTP +// requests and responses. If you don't want any other middleware than the ones +// currently set to your HTTP client, you should duplicate it and pass a copy +// instead. +func ClientOptWithHTTPClient(v *http.Client) ClientOpt { + return func(c *Client) error { + c.httpClient = v + + return nil + } +} + +// Client represents an Exoscale API client. +type Client struct { + apiKey string + apiSecret string + apiEndpoint string + timeout time.Duration + httpClient *http.Client + + *papi.ClientWithResponses +} + +// NewClient returns a new Exoscale API client, or an error if one couldn't be initialized. +func NewClient(apiKey, apiSecret string, opts ...ClientOpt) (*Client, error) { + client := Client{ + apiKey: apiKey, + apiSecret: apiSecret, + apiEndpoint: api.EndpointURL, + httpClient: http.DefaultClient, + timeout: defaultTimeout, + } + + if client.apiKey == "" || client.apiSecret == "" { + return nil, fmt.Errorf("%w: missing or incomplete API credentials", ErrClientConfig) + } + + for _, opt := range opts { + if err := opt(&client); err != nil { + return nil, fmt.Errorf("%w: %s", ErrClientConfig, err) + } + } + + apiSecurityProvider, err := api.NewSecurityProvider(client.apiKey, client.apiSecret) + if err != nil { + return nil, fmt.Errorf("unable to initialize API security provider: %s", err) + } + + apiURL, err := url.Parse(client.apiEndpoint) + if err != nil { + return nil, fmt.Errorf("unable to initialize API client: %s", err) + } + apiURL = apiURL.ResolveReference(&url.URL{Path: api.Prefix}) + + client.httpClient.Transport = api.NewAPIErrorHandlerMiddleware(client.httpClient.Transport) + + papiOpts := []papi.ClientOption{ + papi.WithHTTPClient(client.httpClient), + papi.WithRequestEditorFn( + papi.MultiRequestsEditor( + apiSecurityProvider.Intercept, + setEndpointFromContext, + ), + ), + } + + if client.ClientWithResponses, err = papi.NewClientWithResponses(apiURL.String(), papiOpts...); err != nil { + return nil, fmt.Errorf("unable to initialize API client: %s", err) + } + + return &client, nil +} + +// setEndpointFromContext is an HTTP client request interceptor that overrides the "Host" header +// with information from a request endpoint optionally set in the context instance. If none is +// found, the request is left untouched. +func setEndpointFromContext(ctx context.Context, req *http.Request) error { + if v, ok := ctx.Value(api.ReqEndpoint{}).(api.ReqEndpoint); ok { + req.Host = v.Host() + req.URL.Host = v.Host() + } + + return nil +} diff --git a/vendor/github.com/exoscale/egoscale/v2/error.go b/vendor/github.com/exoscale/egoscale/v2/error.go new file mode 100644 index 000000000..62d7b4086 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/error.go @@ -0,0 +1,5 @@ +package v2 + +import "errors" + +var ErrClientConfig = errors.New("client configuration error") diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/async.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/async.go new file mode 100644 index 000000000..dedbfb1d5 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/async.go @@ -0,0 +1,123 @@ +package publicapi + +import ( + "context" + "errors" + "fmt" + "net/http" + "time" + + v2 "github.com/exoscale/egoscale/v2/api" +) + +const ( + operationStatePending = "pending" + operationStateSuccess = "success" + operationStateFailure = "failure" + operationStateTimeout = "timeout" + + defaultPollingInterval = 3 * time.Second +) + +// PollFunc represents a function invoked periodically in a polling loop. It returns a boolean flag +// true if the job is completed or false if polling must continue, and any error that occurred +// during the polling (which interrupts the polling regardless of the boolean flag value). +// Upon successful completion, an interface descring an opaque operation can be returned to the +// caller, which will have to perform type assertion depending on the PollFunc implementation. +type PollFunc func(ctx context.Context) (bool, interface{}, error) + +// Poller represents a poller instance. +type Poller struct { + interval time.Duration + timeout time.Duration +} + +// NewPoller returns a Poller instance. +func NewPoller() *Poller { + return &Poller{ + interval: defaultPollingInterval, + } +} + +// WithInterval sets the interval at which the polling function will be executed (default: 3s). +func (p *Poller) WithInterval(interval time.Duration) *Poller { + if interval > 0 { + p.interval = interval + } + + return p +} + +// WithTimeout sets the time out value after which the polling routine will be cancelled +// (default: no time out). +func (p *Poller) WithTimeout(timeout time.Duration) *Poller { + if timeout > 0 { + p.timeout = timeout + } + + return p +} + +// Poll starts the polling routine, executing the provided polling function at the configured +// polling interval. Upon successful polling, an opaque operation is returned to the caller, which +// actual type has to asserted depending on the PollFunc executed. +func (p *Poller) Poll(ctx context.Context, pf PollFunc) (interface{}, error) { + if p.timeout > 0 { + ctxWithTimeout, cancel := context.WithTimeout(ctx, p.timeout) + defer cancel() + ctx = ctxWithTimeout + } + + ticker := time.NewTicker(p.interval) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + done, res, err := pf(ctx) + if err != nil { + return nil, err + } + if !done { + continue + } + + return res, nil + + case <-ctx.Done(): + return nil, ctx.Err() + } + } +} + +// OperationPoller returns a PollFunc function which queries the state of the specified job. +// Upon successful job completion, the type of the interface{} returned by the PollFunc is a +// pointer to a Resource object (*Resource). +func (c *ClientWithResponses) OperationPoller(zone string, jobID string) PollFunc { + return func(ctx context.Context) (bool, interface{}, error) { + resp, err := c.GetOperationWithResponse(v2.WithZone(ctx, zone), jobID) + if err != nil { + return true, nil, err + } + if resp.StatusCode() != http.StatusOK { + return true, nil, fmt.Errorf("unexpected response from API: %s", resp.Status()) + } + + switch *resp.JSON200.State { + case operationStatePending: + return false, nil, nil + + case operationStateSuccess: + return true, resp.JSON200.Reference, nil + + case operationStateFailure: + return true, nil, errors.New("job failed") + + case operationStateTimeout: + return true, nil, errors.New("job timed out") + + default: + return true, nil, fmt.Errorf("unknown job state: %s", *resp.JSON200.State) + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/loadbalancer.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/loadbalancer.go new file mode 100644 index 000000000..cfd51d1ea --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/loadbalancer.go @@ -0,0 +1,70 @@ +package publicapi + +import ( + "encoding/json" + "time" +) + +// UnmarshalJSON unmarshals a LoadBalancer structure into a temporary structure whose "CreatedAt" field of type +// string to be able to parse the original timestamp (ISO 8601) into a time.Time object, since json.Unmarshal() +// only supports RFC 3339 format. +func (lb *LoadBalancer) UnmarshalJSON(data []byte) error { + raw := struct { + CreatedAt *string `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + Ip *string `json:"ip,omitempty"` // nolint:golint + Name *string `json:"name,omitempty"` + Services *[]LoadBalancerService `json:"services,omitempty"` + State *string `json:"state,omitempty"` + }{} + + if err := json.Unmarshal(data, &raw); err != nil { + return err + } + + if raw.CreatedAt != nil { + createdAt, err := time.Parse(iso8601Format, *raw.CreatedAt) + if err != nil { + return err + } + lb.CreatedAt = &createdAt + } + + lb.Description = raw.Description + lb.Id = raw.Id + lb.Ip = raw.Ip + lb.Name = raw.Name + lb.Services = raw.Services + lb.State = raw.State + + return nil +} + +// MarshalJSON returns the JSON encoding of a LoadBalancer structure after having formatted the CreatedAt field +// in the original timestamp (ISO 8601), since time.MarshalJSON() only supports RFC 3339 format. +func (lb *LoadBalancer) MarshalJSON() ([]byte, error) { + raw := struct { + CreatedAt *string `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + Ip *string `json:"ip,omitempty"` // nolint:golint + Name *string `json:"name,omitempty"` + Services *[]LoadBalancerService `json:"services,omitempty"` + State *string `json:"state,omitempty"` + }{} + + if lb.CreatedAt != nil { + createdAt := lb.CreatedAt.Format(iso8601Format) + raw.CreatedAt = &createdAt + } + + raw.Description = lb.Description + raw.Id = lb.Id + raw.Ip = lb.Ip + raw.Name = lb.Name + raw.Services = lb.Services + raw.State = lb.State + + return json.Marshal(raw) +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/mock.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/mock.go new file mode 100644 index 000000000..0d5c918db --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/mock.go @@ -0,0 +1,28 @@ +package publicapi + +import ( + "net/http" + + "github.com/jarcoal/httpmock" + "github.com/stretchr/testify/mock" +) + +type MockClient struct { + mock.Mock + *httpmock.MockTransport + ClientWithResponsesInterface +} + +func NewMockClient() *MockClient { + var c MockClient + + c.MockTransport = httpmock.NewMockTransport() + + return &c +} + +func (c *MockClient) Do(req *http.Request) (*http.Response, error) { + hc := http.Client{Transport: c.MockTransport} + + return hc.Do(req) +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.gen.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.gen.go new file mode 100644 index 000000000..ace97c7b4 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.gen.go @@ -0,0 +1,9554 @@ +// Package publicapi provides primitives to interact the openapi HTTP API. +// +// Code generated by github.com/deepmap/oapi-codegen DO NOT EDIT. +package publicapi + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "strings" + "time" + + "github.com/deepmap/oapi-codegen/pkg/runtime" + "github.com/pkg/errors" +) + +// AntiAffinityGroup defines model for anti-affinity-group. +type AntiAffinityGroup struct { + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Instances *[]Instance `json:"instances,omitempty"` + Name *string `json:"name,omitempty"` +} + +// ElasticIp defines model for elastic-ip. +type ElasticIp struct { + Id *string `json:"id,omitempty"` + Ip *string `json:"ip,omitempty"` +} + +// Event defines model for event. +type Event struct { + Payload *Event_Payload `json:"payload,omitempty"` + Timestamp *time.Time `json:"timestamp,omitempty"` +} + +// Event_Payload defines model for Event.Payload. +type Event_Payload struct { + AdditionalProperties map[string]interface{} `json:"-"` +} + +// Healthcheck defines model for healthcheck. +type Healthcheck struct { + Interval *int64 `json:"interval,omitempty"` + Mode string `json:"mode"` + Port int64 `json:"port"` + Retries *int64 `json:"retries,omitempty"` + Timeout *int64 `json:"timeout,omitempty"` + TlsSni *string `json:"tls-sni,omitempty"` + Uri *string `json:"uri,omitempty"` +} + +// Instance defines model for instance. +type Instance struct { + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` +} + +// InstancePool defines model for instance-pool. +type InstancePool struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize *int64 `json:"disk-size,omitempty"` + ElasticIps *[]ElasticIp `json:"elastic-ips,omitempty"` + Id *string `json:"id,omitempty"` + InstanceType *InstanceType `json:"instance-type,omitempty"` + Instances *[]Instance `json:"instances,omitempty"` + Ipv6Enabled *bool `json:"ipv6-enabled,omitempty"` + Manager *Manager `json:"manager,omitempty"` + Name *string `json:"name,omitempty"` + PrivateNetworks *[]PrivateNetwork `json:"private-networks,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + Size *int64 `json:"size,omitempty"` + SshKey *SshKey `json:"ssh-key,omitempty"` + State *string `json:"state,omitempty"` + Template *Template `json:"template,omitempty"` + UserData *string `json:"user-data,omitempty"` +} + +// InstanceType defines model for instance-type. +type InstanceType struct { + Authorized *bool `json:"authorized,omitempty"` + Cpus *int64 `json:"cpus,omitempty"` + Family *string `json:"family,omitempty"` + Gpus *int64 `json:"gpus,omitempty"` + Id *string `json:"id,omitempty"` + Memory *int64 `json:"memory,omitempty"` + Size *string `json:"size,omitempty"` +} + +// LoadBalancer defines model for load-balancer. +type LoadBalancer struct { + CreatedAt *time.Time `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Ip *string `json:"ip,omitempty"` + Name *string `json:"name,omitempty"` + Services *[]LoadBalancerService `json:"services,omitempty"` + State *string `json:"state,omitempty"` +} + +// LoadBalancerServerStatus defines model for load-balancer-server-status. +type LoadBalancerServerStatus struct { + PublicIp *string `json:"public-ip,omitempty"` + Status *string `json:"status,omitempty"` +} + +// LoadBalancerService defines model for load-balancer-service. +type LoadBalancerService struct { + Description *string `json:"description,omitempty"` + Healthcheck *Healthcheck `json:"healthcheck,omitempty"` + HealthcheckStatus *[]LoadBalancerServerStatus `json:"healthcheck-status,omitempty"` + Id *string `json:"id,omitempty"` + InstancePool *InstancePool `json:"instance-pool,omitempty"` + Name *string `json:"name,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *string `json:"protocol,omitempty"` + State *string `json:"state,omitempty"` + Strategy *string `json:"strategy,omitempty"` + TargetPort *int64 `json:"target-port,omitempty"` +} + +// Manager defines model for manager. +type Manager struct { + Id *string `json:"id,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Operation defines model for operation. +type Operation struct { + Id *string `json:"id,omitempty"` + Message *string `json:"message,omitempty"` + Reason *string `json:"reason,omitempty"` + Reference *Reference `json:"reference,omitempty"` + State *string `json:"state,omitempty"` +} + +// PrivateNetwork defines model for private-network. +type PrivateNetwork struct { + Description *string `json:"description,omitempty"` + EndIp *string `json:"end-ip,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Netmask *string `json:"netmask,omitempty"` + StartIp *string `json:"start-ip,omitempty"` +} + +// Reference defines model for reference. +type Reference struct { + Command *string `json:"command,omitempty"` + Id *string `json:"id,omitempty"` + Link *string `json:"link,omitempty"` +} + +// SecurityGroup defines model for security-group. +type SecurityGroup struct { + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Rules *[]SecurityGroupRule `json:"rules,omitempty"` +} + +// SecurityGroupResource defines model for security-group-resource. +type SecurityGroupResource struct { + Id *string `json:"id,omitempty"` + Name string `json:"name"` +} + +// SecurityGroupRule defines model for security-group-rule. +type SecurityGroupRule struct { + Description *string `json:"description,omitempty"` + EndPort *int64 `json:"end-port,omitempty"` + FlowDirection *string `json:"flow-direction,omitempty"` + Icmp *struct { + Code *int64 `json:"code,omitempty"` + Type *int64 `json:"type,omitempty"` + } `json:"icmp,omitempty"` + Id *string `json:"id,omitempty"` + Network *string `json:"network,omitempty"` + Protocol *string `json:"protocol,omitempty"` + SecurityGroup *SecurityGroupResource `json:"security-group,omitempty"` + StartPort *int64 `json:"start-port,omitempty"` +} + +// SksCluster defines model for sks-cluster. +type SksCluster struct { + Addons *[]string `json:"addons,omitempty"` + Cni *string `json:"cni,omitempty"` + CreatedAt *time.Time `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Endpoint *string `json:"endpoint,omitempty"` + Id *string `json:"id,omitempty"` + Level *string `json:"level,omitempty"` + Name *string `json:"name,omitempty"` + Nodepools *[]SksNodepool `json:"nodepools,omitempty"` + State *string `json:"state,omitempty"` + Version *string `json:"version,omitempty"` +} + +// SksKubeconfigRequest defines model for sks-kubeconfig-request. +type SksKubeconfigRequest struct { + Groups *[]string `json:"groups,omitempty"` + Ttl *int64 `json:"ttl,omitempty"` + User *string `json:"user,omitempty"` +} + +// SksNodepool defines model for sks-nodepool. +type SksNodepool struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + CreatedAt *time.Time `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize *int64 `json:"disk-size,omitempty"` + Id *string `json:"id,omitempty"` + InstancePool *InstancePool `json:"instance-pool,omitempty"` + InstanceType *InstanceType `json:"instance-type,omitempty"` + Name *string `json:"name,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + Size *int64 `json:"size,omitempty"` + State *string `json:"state,omitempty"` + Template *Template `json:"template,omitempty"` + Version *string `json:"version,omitempty"` +} + +// Snapshot defines model for snapshot. +type Snapshot struct { + CreatedAt *time.Time `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Export *struct { + Md5sum *string `json:"md5sum,omitempty"` + PresignedUrl *string `json:"presigned-url,omitempty"` + } `json:"export,omitempty"` + Id *string `json:"id,omitempty"` + Instance *Instance `json:"instance,omitempty"` + Name *string `json:"name,omitempty"` + State *string `json:"state,omitempty"` +} + +// SshKey defines model for ssh-key. +type SshKey struct { + Fingerprint *string `json:"fingerprint,omitempty"` + Name *string `json:"name,omitempty"` +} + +// Template defines model for template. +type Template struct { + BootMode *string `json:"boot-mode,omitempty"` + Build *string `json:"build,omitempty"` + Checksum *string `json:"checksum,omitempty"` + CreatedAt *time.Time `json:"created-at,omitempty"` + DefaultUser *string `json:"default-user,omitempty"` + Description *string `json:"description,omitempty"` + Family *string `json:"family,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + PasswordEnabled *bool `json:"password-enabled,omitempty"` + Size *int64 `json:"size,omitempty"` + SshKeyEnabled *bool `json:"ssh-key-enabled,omitempty"` + Url *string `json:"url,omitempty"` + Version *string `json:"version,omitempty"` + Visibility *string `json:"visibility,omitempty"` +} + +// Zone defines model for zone. +type Zone struct { + Name *string `json:"name,omitempty"` +} + +// CreateAntiAffinityGroupJSONBody defines parameters for CreateAntiAffinityGroup. +type CreateAntiAffinityGroupJSONBody struct { + Description *string `json:"description,omitempty"` + Name string `json:"name"` +} + +// ListEventsParams defines parameters for ListEvents. +type ListEventsParams struct { + From *time.Time `json:"from,omitempty"` + To *time.Time `json:"to,omitempty"` +} + +// CreateInstanceJSONBody defines parameters for CreateInstance. +type CreateInstanceJSONBody Instance + +// CreateInstanceParams defines parameters for CreateInstance. +type CreateInstanceParams struct { + Start *bool `json:"start,omitempty"` +} + +// CreateInstancePoolJSONBody defines parameters for CreateInstancePool. +type CreateInstancePoolJSONBody struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize int64 `json:"disk-size"` + ElasticIps *[]ElasticIp `json:"elastic-ips,omitempty"` + InstanceType InstanceType `json:"instance-type"` + Ipv6Enabled *bool `json:"ipv6-enabled,omitempty"` + Name string `json:"name"` + PrivateNetworks *[]PrivateNetwork `json:"private-networks,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + Size int64 `json:"size"` + SshKey *SshKey `json:"ssh-key,omitempty"` + Template Template `json:"template"` + UserData *string `json:"user-data,omitempty"` +} + +// UpdateInstancePoolJSONBody defines parameters for UpdateInstancePool. +type UpdateInstancePoolJSONBody struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize *int64 `json:"disk-size,omitempty"` + ElasticIps *[]ElasticIp `json:"elastic-ips,omitempty"` + InstanceType *InstanceType `json:"instance-type,omitempty"` + Ipv6Enabled *bool `json:"ipv6-enabled,omitempty"` + Name *string `json:"name,omitempty"` + PrivateNetworks *[]PrivateNetwork `json:"private-networks,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + SshKey *SshKey `json:"ssh-key,omitempty"` + Template *Template `json:"template,omitempty"` + UserData *string `json:"user-data,omitempty"` +} + +// EvictInstancePoolMembersJSONBody defines parameters for EvictInstancePoolMembers. +type EvictInstancePoolMembersJSONBody struct { + Instances *[]string `json:"instances,omitempty"` +} + +// ScaleInstancePoolJSONBody defines parameters for ScaleInstancePool. +type ScaleInstancePoolJSONBody struct { + Size int64 `json:"size"` +} + +// RevertInstanceToSnapshotJSONBody defines parameters for RevertInstanceToSnapshot. +type RevertInstanceToSnapshotJSONBody struct { + Id string `json:"id"` +} + +// CreateLoadBalancerJSONBody defines parameters for CreateLoadBalancer. +type CreateLoadBalancerJSONBody struct { + Description *string `json:"description,omitempty"` + Name string `json:"name"` +} + +// UpdateLoadBalancerJSONBody defines parameters for UpdateLoadBalancer. +type UpdateLoadBalancerJSONBody struct { + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +// AddServiceToLoadBalancerJSONBody defines parameters for AddServiceToLoadBalancer. +type AddServiceToLoadBalancerJSONBody struct { + Description *string `json:"description,omitempty"` + Healthcheck Healthcheck `json:"healthcheck"` + InstancePool InstancePool `json:"instance-pool"` + Name string `json:"name"` + Port int64 `json:"port"` + Protocol string `json:"protocol"` + Strategy string `json:"strategy"` + TargetPort int64 `json:"target-port"` +} + +// UpdateLoadBalancerServiceJSONBody defines parameters for UpdateLoadBalancerService. +type UpdateLoadBalancerServiceJSONBody struct { + Description *string `json:"description,omitempty"` + Healthcheck *Healthcheck `json:"healthcheck,omitempty"` + Name *string `json:"name,omitempty"` + Port *int64 `json:"port,omitempty"` + Protocol *string `json:"protocol,omitempty"` + Strategy *string `json:"strategy,omitempty"` + TargetPort *int64 `json:"target-port,omitempty"` +} + +// CreatePrivateNetworkJSONBody defines parameters for CreatePrivateNetwork. +type CreatePrivateNetworkJSONBody struct { + Description *string `json:"description,omitempty"` + EndIp *string `json:"end-ip,omitempty"` + Name string `json:"name"` + Netmask *string `json:"netmask,omitempty"` + StartIp *string `json:"start-ip,omitempty"` +} + +// UpdatePrivateNetworkJSONBody defines parameters for UpdatePrivateNetwork. +type UpdatePrivateNetworkJSONBody struct { + Description *string `json:"description,omitempty"` + EndIp *string `json:"end-ip,omitempty"` + Name *string `json:"name,omitempty"` + Netmask *string `json:"netmask,omitempty"` + StartIp *string `json:"start-ip,omitempty"` +} + +// CreateSecurityGroupJSONBody defines parameters for CreateSecurityGroup. +type CreateSecurityGroupJSONBody struct { + Description *string `json:"description,omitempty"` + Name string `json:"name"` +} + +// AddRuleToSecurityGroupJSONBody defines parameters for AddRuleToSecurityGroup. +type AddRuleToSecurityGroupJSONBody struct { + Description *string `json:"description,omitempty"` + EndPort *int64 `json:"end-port,omitempty"` + FlowDirection string `json:"flow-direction"` + Icmp *struct { + Code *int64 `json:"code,omitempty"` + Type *int64 `json:"type,omitempty"` + } `json:"icmp,omitempty"` + Network *string `json:"network,omitempty"` + Protocol *string `json:"protocol,omitempty"` + SecurityGroup *SecurityGroupResource `json:"security-group,omitempty"` + StartPort *int64 `json:"start-port,omitempty"` +} + +// CreateSksClusterJSONBody defines parameters for CreateSksCluster. +type CreateSksClusterJSONBody struct { + Addons *[]string `json:"addons,omitempty"` + Cni *string `json:"cni,omitempty"` + Description *string `json:"description,omitempty"` + Level string `json:"level"` + Name string `json:"name"` + Version string `json:"version"` +} + +// GenerateSksClusterKubeconfigJSONBody defines parameters for GenerateSksClusterKubeconfig. +type GenerateSksClusterKubeconfigJSONBody SksKubeconfigRequest + +// UpdateSksClusterJSONBody defines parameters for UpdateSksCluster. +type UpdateSksClusterJSONBody struct { + Description *string `json:"description,omitempty"` + Name *string `json:"name,omitempty"` +} + +// CreateSksNodepoolJSONBody defines parameters for CreateSksNodepool. +type CreateSksNodepoolJSONBody struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize int64 `json:"disk-size"` + InstanceType InstanceType `json:"instance-type"` + Name string `json:"name"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + Size int64 `json:"size"` +} + +// UpdateSksNodepoolJSONBody defines parameters for UpdateSksNodepool. +type UpdateSksNodepoolJSONBody struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize *int64 `json:"disk-size,omitempty"` + InstanceType *InstanceType `json:"instance-type,omitempty"` + Name *string `json:"name,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` +} + +// EvictSksNodepoolMembersJSONBody defines parameters for EvictSksNodepoolMembers. +type EvictSksNodepoolMembersJSONBody struct { + Instances *[]string `json:"instances,omitempty"` +} + +// ScaleSksNodepoolJSONBody defines parameters for ScaleSksNodepool. +type ScaleSksNodepoolJSONBody struct { + Size int64 `json:"size"` +} + +// UpgradeSksClusterJSONBody defines parameters for UpgradeSksCluster. +type UpgradeSksClusterJSONBody struct { + Version string `json:"version"` +} + +// GetSosPresignedUrlParams defines parameters for GetSosPresignedUrl. +type GetSosPresignedUrlParams struct { + Key *string `json:"key,omitempty"` +} + +// ListTemplatesParams defines parameters for ListTemplates. +type ListTemplatesParams struct { + Visibility *string `json:"visibility,omitempty"` + Family *string `json:"family,omitempty"` +} + +// RegisterTemplateJSONBody defines parameters for RegisterTemplate. +type RegisterTemplateJSONBody struct { + BootMode *string `json:"boot-mode,omitempty"` + Checksum string `json:"checksum"` + DefaultUser *string `json:"default-user,omitempty"` + Description *string `json:"description,omitempty"` + Name string `json:"name"` + PasswordEnabled bool `json:"password-enabled"` + Size *int64 `json:"size,omitempty"` + SshKeyEnabled bool `json:"ssh-key-enabled"` + Url string `json:"url"` +} + +// CopyTemplateJSONBody defines parameters for CopyTemplate. +type CopyTemplateJSONBody struct { + TargetZone string `json:"target-zone"` +} + +// CreateAntiAffinityGroupRequestBody defines body for CreateAntiAffinityGroup for application/json ContentType. +type CreateAntiAffinityGroupJSONRequestBody CreateAntiAffinityGroupJSONBody + +// CreateInstanceRequestBody defines body for CreateInstance for application/json ContentType. +type CreateInstanceJSONRequestBody CreateInstanceJSONBody + +// CreateInstancePoolRequestBody defines body for CreateInstancePool for application/json ContentType. +type CreateInstancePoolJSONRequestBody CreateInstancePoolJSONBody + +// UpdateInstancePoolRequestBody defines body for UpdateInstancePool for application/json ContentType. +type UpdateInstancePoolJSONRequestBody UpdateInstancePoolJSONBody + +// EvictInstancePoolMembersRequestBody defines body for EvictInstancePoolMembers for application/json ContentType. +type EvictInstancePoolMembersJSONRequestBody EvictInstancePoolMembersJSONBody + +// ScaleInstancePoolRequestBody defines body for ScaleInstancePool for application/json ContentType. +type ScaleInstancePoolJSONRequestBody ScaleInstancePoolJSONBody + +// RevertInstanceToSnapshotRequestBody defines body for RevertInstanceToSnapshot for application/json ContentType. +type RevertInstanceToSnapshotJSONRequestBody RevertInstanceToSnapshotJSONBody + +// CreateLoadBalancerRequestBody defines body for CreateLoadBalancer for application/json ContentType. +type CreateLoadBalancerJSONRequestBody CreateLoadBalancerJSONBody + +// UpdateLoadBalancerRequestBody defines body for UpdateLoadBalancer for application/json ContentType. +type UpdateLoadBalancerJSONRequestBody UpdateLoadBalancerJSONBody + +// AddServiceToLoadBalancerRequestBody defines body for AddServiceToLoadBalancer for application/json ContentType. +type AddServiceToLoadBalancerJSONRequestBody AddServiceToLoadBalancerJSONBody + +// UpdateLoadBalancerServiceRequestBody defines body for UpdateLoadBalancerService for application/json ContentType. +type UpdateLoadBalancerServiceJSONRequestBody UpdateLoadBalancerServiceJSONBody + +// CreatePrivateNetworkRequestBody defines body for CreatePrivateNetwork for application/json ContentType. +type CreatePrivateNetworkJSONRequestBody CreatePrivateNetworkJSONBody + +// UpdatePrivateNetworkRequestBody defines body for UpdatePrivateNetwork for application/json ContentType. +type UpdatePrivateNetworkJSONRequestBody UpdatePrivateNetworkJSONBody + +// CreateSecurityGroupRequestBody defines body for CreateSecurityGroup for application/json ContentType. +type CreateSecurityGroupJSONRequestBody CreateSecurityGroupJSONBody + +// AddRuleToSecurityGroupRequestBody defines body for AddRuleToSecurityGroup for application/json ContentType. +type AddRuleToSecurityGroupJSONRequestBody AddRuleToSecurityGroupJSONBody + +// CreateSksClusterRequestBody defines body for CreateSksCluster for application/json ContentType. +type CreateSksClusterJSONRequestBody CreateSksClusterJSONBody + +// GenerateSksClusterKubeconfigRequestBody defines body for GenerateSksClusterKubeconfig for application/json ContentType. +type GenerateSksClusterKubeconfigJSONRequestBody GenerateSksClusterKubeconfigJSONBody + +// UpdateSksClusterRequestBody defines body for UpdateSksCluster for application/json ContentType. +type UpdateSksClusterJSONRequestBody UpdateSksClusterJSONBody + +// CreateSksNodepoolRequestBody defines body for CreateSksNodepool for application/json ContentType. +type CreateSksNodepoolJSONRequestBody CreateSksNodepoolJSONBody + +// UpdateSksNodepoolRequestBody defines body for UpdateSksNodepool for application/json ContentType. +type UpdateSksNodepoolJSONRequestBody UpdateSksNodepoolJSONBody + +// EvictSksNodepoolMembersRequestBody defines body for EvictSksNodepoolMembers for application/json ContentType. +type EvictSksNodepoolMembersJSONRequestBody EvictSksNodepoolMembersJSONBody + +// ScaleSksNodepoolRequestBody defines body for ScaleSksNodepool for application/json ContentType. +type ScaleSksNodepoolJSONRequestBody ScaleSksNodepoolJSONBody + +// UpgradeSksClusterRequestBody defines body for UpgradeSksCluster for application/json ContentType. +type UpgradeSksClusterJSONRequestBody UpgradeSksClusterJSONBody + +// RegisterTemplateRequestBody defines body for RegisterTemplate for application/json ContentType. +type RegisterTemplateJSONRequestBody RegisterTemplateJSONBody + +// CopyTemplateRequestBody defines body for CopyTemplate for application/json ContentType. +type CopyTemplateJSONRequestBody CopyTemplateJSONBody + +// Getter for additional properties for Event_Payload. Returns the specified +// element and whether it was found +func (a Event_Payload) Get(fieldName string) (value interface{}, found bool) { + if a.AdditionalProperties != nil { + value, found = a.AdditionalProperties[fieldName] + } + return +} + +// Setter for additional properties for Event_Payload +func (a *Event_Payload) Set(fieldName string, value interface{}) { + if a.AdditionalProperties == nil { + a.AdditionalProperties = make(map[string]interface{}) + } + a.AdditionalProperties[fieldName] = value +} + +// Override default JSON handling for Event_Payload to handle AdditionalProperties +func (a *Event_Payload) UnmarshalJSON(b []byte) error { + object := make(map[string]json.RawMessage) + err := json.Unmarshal(b, &object) + if err != nil { + return err + } + + if len(object) != 0 { + a.AdditionalProperties = make(map[string]interface{}) + for fieldName, fieldBuf := range object { + var fieldVal interface{} + err := json.Unmarshal(fieldBuf, &fieldVal) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + } + a.AdditionalProperties[fieldName] = fieldVal + } + } + return nil +} + +// Override default JSON handling for Event_Payload to handle AdditionalProperties +func (a Event_Payload) MarshalJSON() ([]byte, error) { + var err error + object := make(map[string]json.RawMessage) + + for fieldName, field := range a.AdditionalProperties { + object[fieldName], err = json.Marshal(field) + if err != nil { + return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + } + } + return json.Marshal(object) +} + +// RequestEditorFn is the function signature for the RequestEditor callback function +type RequestEditorFn func(ctx context.Context, req *http.Request) error + +// Doer performs HTTP requests. +// +// The standard http.Client implements this interface. +type HttpRequestDoer interface { + Do(req *http.Request) (*http.Response, error) +} + +// Client which conforms to the OpenAPI3 specification for this service. +type Client struct { + // The endpoint of the server conforming to this interface, with scheme, + // https://api.deepmap.com for example. This can contain a path relative + // to the server, such as https://api.deepmap.com/dev-test, and all the + // paths in the swagger spec will be appended to the server. + Server string + + // Doer for performing requests, typically a *http.Client with any + // customized settings, such as certificate chains. + Client HttpRequestDoer + + // A callback for modifying requests which are generated before sending over + // the network. + RequestEditor RequestEditorFn +} + +// ClientOption allows setting custom parameters during construction +type ClientOption func(*Client) error + +// Creates a new Client, with reasonable defaults +func NewClient(server string, opts ...ClientOption) (*Client, error) { + // create a client with sane default values + client := Client{ + Server: server, + } + // mutate client and add all optional params + for _, o := range opts { + if err := o(&client); err != nil { + return nil, err + } + } + // ensure the server URL always has a trailing slash + if !strings.HasSuffix(client.Server, "/") { + client.Server += "/" + } + // create httpClient, if not already present + if client.Client == nil { + client.Client = http.DefaultClient + } + return &client, nil +} + +// WithHTTPClient allows overriding the default Doer, which is +// automatically created using http.Client. This is useful for tests. +func WithHTTPClient(doer HttpRequestDoer) ClientOption { + return func(c *Client) error { + c.Client = doer + return nil + } +} + +// WithRequestEditorFn allows setting up a callback function, which will be +// called right before sending the request. This can be used to mutate the request. +func WithRequestEditorFn(fn RequestEditorFn) ClientOption { + return func(c *Client) error { + c.RequestEditor = fn + return nil + } +} + +// The interface specification for the client above. +type ClientInterface interface { + // ListAntiAffinityGroups request + ListAntiAffinityGroups(ctx context.Context) (*http.Response, error) + + // CreateAntiAffinityGroup request with any body + CreateAntiAffinityGroupWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + CreateAntiAffinityGroup(ctx context.Context, body CreateAntiAffinityGroupJSONRequestBody) (*http.Response, error) + + // DeleteAntiAffinityGroup request + DeleteAntiAffinityGroup(ctx context.Context, id string) (*http.Response, error) + + // GetAntiAffinityGroup request + GetAntiAffinityGroup(ctx context.Context, id string) (*http.Response, error) + + // GetElasticIp request + GetElasticIp(ctx context.Context, id string) (*http.Response, error) + + // ListEvents request + ListEvents(ctx context.Context, params *ListEventsParams) (*http.Response, error) + + // CreateInstance request with any body + CreateInstanceWithBody(ctx context.Context, params *CreateInstanceParams, contentType string, body io.Reader) (*http.Response, error) + + CreateInstance(ctx context.Context, params *CreateInstanceParams, body CreateInstanceJSONRequestBody) (*http.Response, error) + + // ListInstancePools request + ListInstancePools(ctx context.Context) (*http.Response, error) + + // CreateInstancePool request with any body + CreateInstancePoolWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + CreateInstancePool(ctx context.Context, body CreateInstancePoolJSONRequestBody) (*http.Response, error) + + // DeleteInstancePool request + DeleteInstancePool(ctx context.Context, id string) (*http.Response, error) + + // GetInstancePool request + GetInstancePool(ctx context.Context, id string) (*http.Response, error) + + // UpdateInstancePool request with any body + UpdateInstancePoolWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + UpdateInstancePool(ctx context.Context, id string, body UpdateInstancePoolJSONRequestBody) (*http.Response, error) + + // DeleteInstancePoolField request + DeleteInstancePoolField(ctx context.Context, id string, field string) (*http.Response, error) + + // EvictInstancePoolMembers request with any body + EvictInstancePoolMembersWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + EvictInstancePoolMembers(ctx context.Context, id string, body EvictInstancePoolMembersJSONRequestBody) (*http.Response, error) + + // ScaleInstancePool request with any body + ScaleInstancePoolWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + ScaleInstancePool(ctx context.Context, id string, body ScaleInstancePoolJSONRequestBody) (*http.Response, error) + + // ListInstanceTypes request + ListInstanceTypes(ctx context.Context) (*http.Response, error) + + // GetInstanceType request + GetInstanceType(ctx context.Context, id string) (*http.Response, error) + + // CreateSnapshot request + CreateSnapshot(ctx context.Context, id string) (*http.Response, error) + + // RevertInstanceToSnapshot request with any body + RevertInstanceToSnapshotWithBody(ctx context.Context, instanceId string, contentType string, body io.Reader) (*http.Response, error) + + RevertInstanceToSnapshot(ctx context.Context, instanceId string, body RevertInstanceToSnapshotJSONRequestBody) (*http.Response, error) + + // ListLoadBalancers request + ListLoadBalancers(ctx context.Context) (*http.Response, error) + + // CreateLoadBalancer request with any body + CreateLoadBalancerWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + CreateLoadBalancer(ctx context.Context, body CreateLoadBalancerJSONRequestBody) (*http.Response, error) + + // DeleteLoadBalancer request + DeleteLoadBalancer(ctx context.Context, id string) (*http.Response, error) + + // GetLoadBalancer request + GetLoadBalancer(ctx context.Context, id string) (*http.Response, error) + + // UpdateLoadBalancer request with any body + UpdateLoadBalancerWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + UpdateLoadBalancer(ctx context.Context, id string, body UpdateLoadBalancerJSONRequestBody) (*http.Response, error) + + // AddServiceToLoadBalancer request with any body + AddServiceToLoadBalancerWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + AddServiceToLoadBalancer(ctx context.Context, id string, body AddServiceToLoadBalancerJSONRequestBody) (*http.Response, error) + + // DeleteLoadBalancerService request + DeleteLoadBalancerService(ctx context.Context, id string, serviceId string) (*http.Response, error) + + // GetLoadBalancerService request + GetLoadBalancerService(ctx context.Context, id string, serviceId string) (*http.Response, error) + + // UpdateLoadBalancerService request with any body + UpdateLoadBalancerServiceWithBody(ctx context.Context, id string, serviceId string, contentType string, body io.Reader) (*http.Response, error) + + UpdateLoadBalancerService(ctx context.Context, id string, serviceId string, body UpdateLoadBalancerServiceJSONRequestBody) (*http.Response, error) + + // GetOperation request + GetOperation(ctx context.Context, id string) (*http.Response, error) + + // ListPrivateNetworks request + ListPrivateNetworks(ctx context.Context) (*http.Response, error) + + // CreatePrivateNetwork request with any body + CreatePrivateNetworkWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + CreatePrivateNetwork(ctx context.Context, body CreatePrivateNetworkJSONRequestBody) (*http.Response, error) + + // DeletePrivateNetwork request + DeletePrivateNetwork(ctx context.Context, id string) (*http.Response, error) + + // GetPrivateNetwork request + GetPrivateNetwork(ctx context.Context, id string) (*http.Response, error) + + // UpdatePrivateNetwork request with any body + UpdatePrivateNetworkWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + UpdatePrivateNetwork(ctx context.Context, id string, body UpdatePrivateNetworkJSONRequestBody) (*http.Response, error) + + // DeletePrivateNetworkField request + DeletePrivateNetworkField(ctx context.Context, id string, field string) (*http.Response, error) + + // ListSecurityGroups request + ListSecurityGroups(ctx context.Context) (*http.Response, error) + + // CreateSecurityGroup request with any body + CreateSecurityGroupWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + CreateSecurityGroup(ctx context.Context, body CreateSecurityGroupJSONRequestBody) (*http.Response, error) + + // DeleteSecurityGroup request + DeleteSecurityGroup(ctx context.Context, id string) (*http.Response, error) + + // GetSecurityGroup request + GetSecurityGroup(ctx context.Context, id string) (*http.Response, error) + + // AddRuleToSecurityGroup request with any body + AddRuleToSecurityGroupWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + AddRuleToSecurityGroup(ctx context.Context, id string, body AddRuleToSecurityGroupJSONRequestBody) (*http.Response, error) + + // DeleteRuleFromSecurityGroup request + DeleteRuleFromSecurityGroup(ctx context.Context, id string, ruleId string) (*http.Response, error) + + // ListSksClusters request + ListSksClusters(ctx context.Context) (*http.Response, error) + + // CreateSksCluster request with any body + CreateSksClusterWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + CreateSksCluster(ctx context.Context, body CreateSksClusterJSONRequestBody) (*http.Response, error) + + // GenerateSksClusterKubeconfig request with any body + GenerateSksClusterKubeconfigWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + GenerateSksClusterKubeconfig(ctx context.Context, id string, body GenerateSksClusterKubeconfigJSONRequestBody) (*http.Response, error) + + // ListSksClusterVersions request + ListSksClusterVersions(ctx context.Context) (*http.Response, error) + + // DeleteSksCluster request + DeleteSksCluster(ctx context.Context, id string) (*http.Response, error) + + // GetSksCluster request + GetSksCluster(ctx context.Context, id string) (*http.Response, error) + + // UpdateSksCluster request with any body + UpdateSksClusterWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + UpdateSksCluster(ctx context.Context, id string, body UpdateSksClusterJSONRequestBody) (*http.Response, error) + + // CreateSksNodepool request with any body + CreateSksNodepoolWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + CreateSksNodepool(ctx context.Context, id string, body CreateSksNodepoolJSONRequestBody) (*http.Response, error) + + // DeleteSksNodepool request + DeleteSksNodepool(ctx context.Context, id string, sksNodepoolId string) (*http.Response, error) + + // GetSksNodepool request + GetSksNodepool(ctx context.Context, id string, sksNodepoolId string) (*http.Response, error) + + // UpdateSksNodepool request with any body + UpdateSksNodepoolWithBody(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Response, error) + + UpdateSksNodepool(ctx context.Context, id string, sksNodepoolId string, body UpdateSksNodepoolJSONRequestBody) (*http.Response, error) + + // DeleteSksNodepoolField request + DeleteSksNodepoolField(ctx context.Context, id string, sksNodepoolId string, field string) (*http.Response, error) + + // EvictSksNodepoolMembers request with any body + EvictSksNodepoolMembersWithBody(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Response, error) + + EvictSksNodepoolMembers(ctx context.Context, id string, sksNodepoolId string, body EvictSksNodepoolMembersJSONRequestBody) (*http.Response, error) + + // ScaleSksNodepool request with any body + ScaleSksNodepoolWithBody(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Response, error) + + ScaleSksNodepool(ctx context.Context, id string, sksNodepoolId string, body ScaleSksNodepoolJSONRequestBody) (*http.Response, error) + + // UpgradeSksCluster request with any body + UpgradeSksClusterWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + UpgradeSksCluster(ctx context.Context, id string, body UpgradeSksClusterJSONRequestBody) (*http.Response, error) + + // DeleteSksClusterField request + DeleteSksClusterField(ctx context.Context, id string, field string) (*http.Response, error) + + // ListSnapshots request + ListSnapshots(ctx context.Context) (*http.Response, error) + + // DeleteSnapshot request + DeleteSnapshot(ctx context.Context, id string) (*http.Response, error) + + // GetSnapshot request + GetSnapshot(ctx context.Context, id string) (*http.Response, error) + + // ExportSnapshot request + ExportSnapshot(ctx context.Context, id string) (*http.Response, error) + + // GetSosPresignedUrl request + GetSosPresignedUrl(ctx context.Context, bucket string, params *GetSosPresignedUrlParams) (*http.Response, error) + + // GetSshKey request + GetSshKey(ctx context.Context, name string) (*http.Response, error) + + // ListTemplates request + ListTemplates(ctx context.Context, params *ListTemplatesParams) (*http.Response, error) + + // RegisterTemplate request with any body + RegisterTemplateWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) + + RegisterTemplate(ctx context.Context, body RegisterTemplateJSONRequestBody) (*http.Response, error) + + // DeleteTemplate request + DeleteTemplate(ctx context.Context, id string) (*http.Response, error) + + // GetTemplate request + GetTemplate(ctx context.Context, id string) (*http.Response, error) + + // CopyTemplate request with any body + CopyTemplateWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) + + CopyTemplate(ctx context.Context, id string, body CopyTemplateJSONRequestBody) (*http.Response, error) + + // ListZones request + ListZones(ctx context.Context) (*http.Response, error) +} + +func (c *Client) ListAntiAffinityGroups(ctx context.Context) (*http.Response, error) { + req, err := NewListAntiAffinityGroupsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateAntiAffinityGroupWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateAntiAffinityGroupRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateAntiAffinityGroup(ctx context.Context, body CreateAntiAffinityGroupJSONRequestBody) (*http.Response, error) { + req, err := NewCreateAntiAffinityGroupRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteAntiAffinityGroup(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteAntiAffinityGroupRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetAntiAffinityGroup(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetAntiAffinityGroupRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetElasticIp(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetElasticIpRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListEvents(ctx context.Context, params *ListEventsParams) (*http.Response, error) { + req, err := NewListEventsRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateInstanceWithBody(ctx context.Context, params *CreateInstanceParams, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateInstanceRequestWithBody(c.Server, params, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateInstance(ctx context.Context, params *CreateInstanceParams, body CreateInstanceJSONRequestBody) (*http.Response, error) { + req, err := NewCreateInstanceRequest(c.Server, params, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListInstancePools(ctx context.Context) (*http.Response, error) { + req, err := NewListInstancePoolsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateInstancePoolWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateInstancePoolRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateInstancePool(ctx context.Context, body CreateInstancePoolJSONRequestBody) (*http.Response, error) { + req, err := NewCreateInstancePoolRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteInstancePool(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteInstancePoolRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetInstancePool(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetInstancePoolRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateInstancePoolWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpdateInstancePoolRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateInstancePool(ctx context.Context, id string, body UpdateInstancePoolJSONRequestBody) (*http.Response, error) { + req, err := NewUpdateInstancePoolRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteInstancePoolField(ctx context.Context, id string, field string) (*http.Response, error) { + req, err := NewDeleteInstancePoolFieldRequest(c.Server, id, field) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) EvictInstancePoolMembersWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewEvictInstancePoolMembersRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) EvictInstancePoolMembers(ctx context.Context, id string, body EvictInstancePoolMembersJSONRequestBody) (*http.Response, error) { + req, err := NewEvictInstancePoolMembersRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ScaleInstancePoolWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewScaleInstancePoolRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ScaleInstancePool(ctx context.Context, id string, body ScaleInstancePoolJSONRequestBody) (*http.Response, error) { + req, err := NewScaleInstancePoolRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListInstanceTypes(ctx context.Context) (*http.Response, error) { + req, err := NewListInstanceTypesRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetInstanceType(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetInstanceTypeRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSnapshot(ctx context.Context, id string) (*http.Response, error) { + req, err := NewCreateSnapshotRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) RevertInstanceToSnapshotWithBody(ctx context.Context, instanceId string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewRevertInstanceToSnapshotRequestWithBody(c.Server, instanceId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) RevertInstanceToSnapshot(ctx context.Context, instanceId string, body RevertInstanceToSnapshotJSONRequestBody) (*http.Response, error) { + req, err := NewRevertInstanceToSnapshotRequest(c.Server, instanceId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListLoadBalancers(ctx context.Context) (*http.Response, error) { + req, err := NewListLoadBalancersRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateLoadBalancerWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateLoadBalancerRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateLoadBalancer(ctx context.Context, body CreateLoadBalancerJSONRequestBody) (*http.Response, error) { + req, err := NewCreateLoadBalancerRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteLoadBalancer(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteLoadBalancerRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetLoadBalancer(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetLoadBalancerRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateLoadBalancerWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpdateLoadBalancerRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateLoadBalancer(ctx context.Context, id string, body UpdateLoadBalancerJSONRequestBody) (*http.Response, error) { + req, err := NewUpdateLoadBalancerRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) AddServiceToLoadBalancerWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewAddServiceToLoadBalancerRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) AddServiceToLoadBalancer(ctx context.Context, id string, body AddServiceToLoadBalancerJSONRequestBody) (*http.Response, error) { + req, err := NewAddServiceToLoadBalancerRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteLoadBalancerService(ctx context.Context, id string, serviceId string) (*http.Response, error) { + req, err := NewDeleteLoadBalancerServiceRequest(c.Server, id, serviceId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetLoadBalancerService(ctx context.Context, id string, serviceId string) (*http.Response, error) { + req, err := NewGetLoadBalancerServiceRequest(c.Server, id, serviceId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateLoadBalancerServiceWithBody(ctx context.Context, id string, serviceId string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpdateLoadBalancerServiceRequestWithBody(c.Server, id, serviceId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateLoadBalancerService(ctx context.Context, id string, serviceId string, body UpdateLoadBalancerServiceJSONRequestBody) (*http.Response, error) { + req, err := NewUpdateLoadBalancerServiceRequest(c.Server, id, serviceId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetOperation(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetOperationRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListPrivateNetworks(ctx context.Context) (*http.Response, error) { + req, err := NewListPrivateNetworksRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreatePrivateNetworkWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreatePrivateNetworkRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreatePrivateNetwork(ctx context.Context, body CreatePrivateNetworkJSONRequestBody) (*http.Response, error) { + req, err := NewCreatePrivateNetworkRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeletePrivateNetwork(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeletePrivateNetworkRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetPrivateNetwork(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetPrivateNetworkRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdatePrivateNetworkWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpdatePrivateNetworkRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdatePrivateNetwork(ctx context.Context, id string, body UpdatePrivateNetworkJSONRequestBody) (*http.Response, error) { + req, err := NewUpdatePrivateNetworkRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeletePrivateNetworkField(ctx context.Context, id string, field string) (*http.Response, error) { + req, err := NewDeletePrivateNetworkFieldRequest(c.Server, id, field) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListSecurityGroups(ctx context.Context) (*http.Response, error) { + req, err := NewListSecurityGroupsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSecurityGroupWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateSecurityGroupRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSecurityGroup(ctx context.Context, body CreateSecurityGroupJSONRequestBody) (*http.Response, error) { + req, err := NewCreateSecurityGroupRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSecurityGroup(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteSecurityGroupRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetSecurityGroup(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetSecurityGroupRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) AddRuleToSecurityGroupWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewAddRuleToSecurityGroupRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) AddRuleToSecurityGroup(ctx context.Context, id string, body AddRuleToSecurityGroupJSONRequestBody) (*http.Response, error) { + req, err := NewAddRuleToSecurityGroupRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteRuleFromSecurityGroup(ctx context.Context, id string, ruleId string) (*http.Response, error) { + req, err := NewDeleteRuleFromSecurityGroupRequest(c.Server, id, ruleId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListSksClusters(ctx context.Context) (*http.Response, error) { + req, err := NewListSksClustersRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSksClusterWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateSksClusterRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSksCluster(ctx context.Context, body CreateSksClusterJSONRequestBody) (*http.Response, error) { + req, err := NewCreateSksClusterRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GenerateSksClusterKubeconfigWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewGenerateSksClusterKubeconfigRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GenerateSksClusterKubeconfig(ctx context.Context, id string, body GenerateSksClusterKubeconfigJSONRequestBody) (*http.Response, error) { + req, err := NewGenerateSksClusterKubeconfigRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListSksClusterVersions(ctx context.Context) (*http.Response, error) { + req, err := NewListSksClusterVersionsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSksCluster(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteSksClusterRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetSksCluster(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetSksClusterRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateSksClusterWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpdateSksClusterRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateSksCluster(ctx context.Context, id string, body UpdateSksClusterJSONRequestBody) (*http.Response, error) { + req, err := NewUpdateSksClusterRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSksNodepoolWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCreateSksNodepoolRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CreateSksNodepool(ctx context.Context, id string, body CreateSksNodepoolJSONRequestBody) (*http.Response, error) { + req, err := NewCreateSksNodepoolRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSksNodepool(ctx context.Context, id string, sksNodepoolId string) (*http.Response, error) { + req, err := NewDeleteSksNodepoolRequest(c.Server, id, sksNodepoolId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetSksNodepool(ctx context.Context, id string, sksNodepoolId string) (*http.Response, error) { + req, err := NewGetSksNodepoolRequest(c.Server, id, sksNodepoolId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateSksNodepoolWithBody(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpdateSksNodepoolRequestWithBody(c.Server, id, sksNodepoolId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpdateSksNodepool(ctx context.Context, id string, sksNodepoolId string, body UpdateSksNodepoolJSONRequestBody) (*http.Response, error) { + req, err := NewUpdateSksNodepoolRequest(c.Server, id, sksNodepoolId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSksNodepoolField(ctx context.Context, id string, sksNodepoolId string, field string) (*http.Response, error) { + req, err := NewDeleteSksNodepoolFieldRequest(c.Server, id, sksNodepoolId, field) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) EvictSksNodepoolMembersWithBody(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewEvictSksNodepoolMembersRequestWithBody(c.Server, id, sksNodepoolId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) EvictSksNodepoolMembers(ctx context.Context, id string, sksNodepoolId string, body EvictSksNodepoolMembersJSONRequestBody) (*http.Response, error) { + req, err := NewEvictSksNodepoolMembersRequest(c.Server, id, sksNodepoolId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ScaleSksNodepoolWithBody(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewScaleSksNodepoolRequestWithBody(c.Server, id, sksNodepoolId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ScaleSksNodepool(ctx context.Context, id string, sksNodepoolId string, body ScaleSksNodepoolJSONRequestBody) (*http.Response, error) { + req, err := NewScaleSksNodepoolRequest(c.Server, id, sksNodepoolId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpgradeSksClusterWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewUpgradeSksClusterRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) UpgradeSksCluster(ctx context.Context, id string, body UpgradeSksClusterJSONRequestBody) (*http.Response, error) { + req, err := NewUpgradeSksClusterRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSksClusterField(ctx context.Context, id string, field string) (*http.Response, error) { + req, err := NewDeleteSksClusterFieldRequest(c.Server, id, field) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListSnapshots(ctx context.Context) (*http.Response, error) { + req, err := NewListSnapshotsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteSnapshot(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteSnapshotRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetSnapshot(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetSnapshotRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ExportSnapshot(ctx context.Context, id string) (*http.Response, error) { + req, err := NewExportSnapshotRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetSosPresignedUrl(ctx context.Context, bucket string, params *GetSosPresignedUrlParams) (*http.Response, error) { + req, err := NewGetSosPresignedUrlRequest(c.Server, bucket, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetSshKey(ctx context.Context, name string) (*http.Response, error) { + req, err := NewGetSshKeyRequest(c.Server, name) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListTemplates(ctx context.Context, params *ListTemplatesParams) (*http.Response, error) { + req, err := NewListTemplatesRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) RegisterTemplateWithBody(ctx context.Context, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewRegisterTemplateRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) RegisterTemplate(ctx context.Context, body RegisterTemplateJSONRequestBody) (*http.Response, error) { + req, err := NewRegisterTemplateRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) DeleteTemplate(ctx context.Context, id string) (*http.Response, error) { + req, err := NewDeleteTemplateRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) GetTemplate(ctx context.Context, id string) (*http.Response, error) { + req, err := NewGetTemplateRequest(c.Server, id) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CopyTemplateWithBody(ctx context.Context, id string, contentType string, body io.Reader) (*http.Response, error) { + req, err := NewCopyTemplateRequestWithBody(c.Server, id, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) CopyTemplate(ctx context.Context, id string, body CopyTemplateJSONRequestBody) (*http.Response, error) { + req, err := NewCopyTemplateRequest(c.Server, id, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +func (c *Client) ListZones(ctx context.Context) (*http.Response, error) { + req, err := NewListZonesRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if c.RequestEditor != nil { + err = c.RequestEditor(ctx, req) + if err != nil { + return nil, err + } + } + return c.Client.Do(req) +} + +// NewListAntiAffinityGroupsRequest generates requests for ListAntiAffinityGroups +func NewListAntiAffinityGroupsRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/anti-affinity-group") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateAntiAffinityGroupRequest calls the generic CreateAntiAffinityGroup builder with application/json body +func NewCreateAntiAffinityGroupRequest(server string, body CreateAntiAffinityGroupJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateAntiAffinityGroupRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateAntiAffinityGroupRequestWithBody generates requests for CreateAntiAffinityGroup with any type of body +func NewCreateAntiAffinityGroupRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/anti-affinity-group") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteAntiAffinityGroupRequest generates requests for DeleteAntiAffinityGroup +func NewDeleteAntiAffinityGroupRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/anti-affinity-group/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetAntiAffinityGroupRequest generates requests for GetAntiAffinityGroup +func NewGetAntiAffinityGroupRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/anti-affinity-group/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetElasticIpRequest generates requests for GetElasticIp +func NewGetElasticIpRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/elastic-ip/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListEventsRequest generates requests for ListEvents +func NewListEventsRequest(server string, params *ListEventsParams) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/event") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + queryValues := queryUrl.Query() + + if params.From != nil { + + if queryFrag, err := runtime.StyleParam("form", true, "from", *params.From); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.To != nil { + + if queryFrag, err := runtime.StyleParam("form", true, "to", *params.To); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryUrl.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateInstanceRequest calls the generic CreateInstance builder with application/json body +func NewCreateInstanceRequest(server string, params *CreateInstanceParams, body CreateInstanceJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateInstanceRequestWithBody(server, params, "application/json", bodyReader) +} + +// NewCreateInstanceRequestWithBody generates requests for CreateInstance with any type of body +func NewCreateInstanceRequestWithBody(server string, params *CreateInstanceParams, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + queryValues := queryUrl.Query() + + if params.Start != nil { + + if queryFrag, err := runtime.StyleParam("form", true, "start", *params.Start); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryUrl.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewListInstancePoolsRequest generates requests for ListInstancePools +func NewListInstancePoolsRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateInstancePoolRequest calls the generic CreateInstancePool builder with application/json body +func NewCreateInstancePoolRequest(server string, body CreateInstancePoolJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateInstancePoolRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateInstancePoolRequestWithBody generates requests for CreateInstancePool with any type of body +func NewCreateInstancePoolRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteInstancePoolRequest generates requests for DeleteInstancePool +func NewDeleteInstancePoolRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetInstancePoolRequest generates requests for GetInstancePool +func NewGetInstancePoolRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateInstancePoolRequest calls the generic UpdateInstancePool builder with application/json body +func NewUpdateInstancePoolRequest(server string, id string, body UpdateInstancePoolJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateInstancePoolRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewUpdateInstancePoolRequestWithBody generates requests for UpdateInstancePool with any type of body +func NewUpdateInstancePoolRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteInstancePoolFieldRequest generates requests for DeleteInstancePoolField +func NewDeleteInstancePoolFieldRequest(server string, id string, field string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "field", field) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool/%s/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewEvictInstancePoolMembersRequest calls the generic EvictInstancePoolMembers builder with application/json body +func NewEvictInstancePoolMembersRequest(server string, id string, body EvictInstancePoolMembersJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewEvictInstancePoolMembersRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewEvictInstancePoolMembersRequestWithBody generates requests for EvictInstancePoolMembers with any type of body +func NewEvictInstancePoolMembersRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool/%s:evict", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewScaleInstancePoolRequest calls the generic ScaleInstancePool builder with application/json body +func NewScaleInstancePoolRequest(server string, id string, body ScaleInstancePoolJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewScaleInstancePoolRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewScaleInstancePoolRequestWithBody generates requests for ScaleInstancePool with any type of body +func NewScaleInstancePoolRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-pool/%s:scale", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewListInstanceTypesRequest generates requests for ListInstanceTypes +func NewListInstanceTypesRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-type") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetInstanceTypeRequest generates requests for GetInstanceType +func NewGetInstanceTypeRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance-type/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateSnapshotRequest generates requests for CreateSnapshot +func NewCreateSnapshotRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance/%s:create-snapshot", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewRevertInstanceToSnapshotRequest calls the generic RevertInstanceToSnapshot builder with application/json body +func NewRevertInstanceToSnapshotRequest(server string, instanceId string, body RevertInstanceToSnapshotJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewRevertInstanceToSnapshotRequestWithBody(server, instanceId, "application/json", bodyReader) +} + +// NewRevertInstanceToSnapshotRequestWithBody generates requests for RevertInstanceToSnapshot with any type of body +func NewRevertInstanceToSnapshotRequestWithBody(server string, instanceId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "instance-id", instanceId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/instance/%s:revert-snapshot", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewListLoadBalancersRequest generates requests for ListLoadBalancers +func NewListLoadBalancersRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateLoadBalancerRequest calls the generic CreateLoadBalancer builder with application/json body +func NewCreateLoadBalancerRequest(server string, body CreateLoadBalancerJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateLoadBalancerRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateLoadBalancerRequestWithBody generates requests for CreateLoadBalancer with any type of body +func NewCreateLoadBalancerRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteLoadBalancerRequest generates requests for DeleteLoadBalancer +func NewDeleteLoadBalancerRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetLoadBalancerRequest generates requests for GetLoadBalancer +func NewGetLoadBalancerRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateLoadBalancerRequest calls the generic UpdateLoadBalancer builder with application/json body +func NewUpdateLoadBalancerRequest(server string, id string, body UpdateLoadBalancerJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateLoadBalancerRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewUpdateLoadBalancerRequestWithBody generates requests for UpdateLoadBalancer with any type of body +func NewUpdateLoadBalancerRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewAddServiceToLoadBalancerRequest calls the generic AddServiceToLoadBalancer builder with application/json body +func NewAddServiceToLoadBalancerRequest(server string, id string, body AddServiceToLoadBalancerJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAddServiceToLoadBalancerRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewAddServiceToLoadBalancerRequestWithBody generates requests for AddServiceToLoadBalancer with any type of body +func NewAddServiceToLoadBalancerRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s/service", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteLoadBalancerServiceRequest generates requests for DeleteLoadBalancerService +func NewDeleteLoadBalancerServiceRequest(server string, id string, serviceId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "service-id", serviceId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s/service/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetLoadBalancerServiceRequest generates requests for GetLoadBalancerService +func NewGetLoadBalancerServiceRequest(server string, id string, serviceId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "service-id", serviceId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s/service/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateLoadBalancerServiceRequest calls the generic UpdateLoadBalancerService builder with application/json body +func NewUpdateLoadBalancerServiceRequest(server string, id string, serviceId string, body UpdateLoadBalancerServiceJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateLoadBalancerServiceRequestWithBody(server, id, serviceId, "application/json", bodyReader) +} + +// NewUpdateLoadBalancerServiceRequestWithBody generates requests for UpdateLoadBalancerService with any type of body +func NewUpdateLoadBalancerServiceRequestWithBody(server string, id string, serviceId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "service-id", serviceId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/load-balancer/%s/service/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewGetOperationRequest generates requests for GetOperation +func NewGetOperationRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/operation/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListPrivateNetworksRequest generates requests for ListPrivateNetworks +func NewListPrivateNetworksRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/private-network") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreatePrivateNetworkRequest calls the generic CreatePrivateNetwork builder with application/json body +func NewCreatePrivateNetworkRequest(server string, body CreatePrivateNetworkJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreatePrivateNetworkRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreatePrivateNetworkRequestWithBody generates requests for CreatePrivateNetwork with any type of body +func NewCreatePrivateNetworkRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/private-network") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeletePrivateNetworkRequest generates requests for DeletePrivateNetwork +func NewDeletePrivateNetworkRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/private-network/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetPrivateNetworkRequest generates requests for GetPrivateNetwork +func NewGetPrivateNetworkRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/private-network/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdatePrivateNetworkRequest calls the generic UpdatePrivateNetwork builder with application/json body +func NewUpdatePrivateNetworkRequest(server string, id string, body UpdatePrivateNetworkJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdatePrivateNetworkRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewUpdatePrivateNetworkRequestWithBody generates requests for UpdatePrivateNetwork with any type of body +func NewUpdatePrivateNetworkRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/private-network/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeletePrivateNetworkFieldRequest generates requests for DeletePrivateNetworkField +func NewDeletePrivateNetworkFieldRequest(server string, id string, field string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "field", field) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/private-network/%s/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListSecurityGroupsRequest generates requests for ListSecurityGroups +func NewListSecurityGroupsRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/security-group") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateSecurityGroupRequest calls the generic CreateSecurityGroup builder with application/json body +func NewCreateSecurityGroupRequest(server string, body CreateSecurityGroupJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateSecurityGroupRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateSecurityGroupRequestWithBody generates requests for CreateSecurityGroup with any type of body +func NewCreateSecurityGroupRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/security-group") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteSecurityGroupRequest generates requests for DeleteSecurityGroup +func NewDeleteSecurityGroupRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/security-group/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSecurityGroupRequest generates requests for GetSecurityGroup +func NewGetSecurityGroupRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/security-group/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewAddRuleToSecurityGroupRequest calls the generic AddRuleToSecurityGroup builder with application/json body +func NewAddRuleToSecurityGroupRequest(server string, id string, body AddRuleToSecurityGroupJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewAddRuleToSecurityGroupRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewAddRuleToSecurityGroupRequestWithBody generates requests for AddRuleToSecurityGroup with any type of body +func NewAddRuleToSecurityGroupRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/security-group/%s/rules", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteRuleFromSecurityGroupRequest generates requests for DeleteRuleFromSecurityGroup +func NewDeleteRuleFromSecurityGroupRequest(server string, id string, ruleId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "rule-id", ruleId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/security-group/%s/rules/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListSksClustersRequest generates requests for ListSksClusters +func NewListSksClustersRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateSksClusterRequest calls the generic CreateSksCluster builder with application/json body +func NewCreateSksClusterRequest(server string, body CreateSksClusterJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateSksClusterRequestWithBody(server, "application/json", bodyReader) +} + +// NewCreateSksClusterRequestWithBody generates requests for CreateSksCluster with any type of body +func NewCreateSksClusterRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewGenerateSksClusterKubeconfigRequest calls the generic GenerateSksClusterKubeconfig builder with application/json body +func NewGenerateSksClusterKubeconfigRequest(server string, id string, body GenerateSksClusterKubeconfigJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewGenerateSksClusterKubeconfigRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewGenerateSksClusterKubeconfigRequestWithBody generates requests for GenerateSksClusterKubeconfig with any type of body +func NewGenerateSksClusterKubeconfigRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster-kubeconfig/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewListSksClusterVersionsRequest generates requests for ListSksClusterVersions +func NewListSksClusterVersionsRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster-version") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewDeleteSksClusterRequest generates requests for DeleteSksCluster +func NewDeleteSksClusterRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSksClusterRequest generates requests for GetSksCluster +func NewGetSksClusterRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateSksClusterRequest calls the generic UpdateSksCluster builder with application/json body +func NewUpdateSksClusterRequest(server string, id string, body UpdateSksClusterJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateSksClusterRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewUpdateSksClusterRequestWithBody generates requests for UpdateSksCluster with any type of body +func NewUpdateSksClusterRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewCreateSksNodepoolRequest calls the generic CreateSksNodepool builder with application/json body +func NewCreateSksNodepoolRequest(server string, id string, body CreateSksNodepoolJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateSksNodepoolRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewCreateSksNodepoolRequestWithBody generates requests for CreateSksNodepool with any type of body +func NewCreateSksNodepoolRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteSksNodepoolRequest generates requests for DeleteSksNodepool +func NewDeleteSksNodepoolRequest(server string, id string, sksNodepoolId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "sks-nodepool-id", sksNodepoolId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSksNodepoolRequest generates requests for GetSksNodepool +func NewGetSksNodepoolRequest(server string, id string, sksNodepoolId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "sks-nodepool-id", sksNodepoolId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateSksNodepoolRequest calls the generic UpdateSksNodepool builder with application/json body +func NewUpdateSksNodepoolRequest(server string, id string, sksNodepoolId string, body UpdateSksNodepoolJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateSksNodepoolRequestWithBody(server, id, sksNodepoolId, "application/json", bodyReader) +} + +// NewUpdateSksNodepoolRequestWithBody generates requests for UpdateSksNodepool with any type of body +func NewUpdateSksNodepoolRequestWithBody(server string, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "sks-nodepool-id", sksNodepoolId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteSksNodepoolFieldRequest generates requests for DeleteSksNodepoolField +func NewDeleteSksNodepoolFieldRequest(server string, id string, sksNodepoolId string, field string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "sks-nodepool-id", sksNodepoolId) + if err != nil { + return nil, err + } + + var pathParam2 string + + pathParam2, err = runtime.StyleParam("simple", false, "field", field) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool/%s/%s", pathParam0, pathParam1, pathParam2) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewEvictSksNodepoolMembersRequest calls the generic EvictSksNodepoolMembers builder with application/json body +func NewEvictSksNodepoolMembersRequest(server string, id string, sksNodepoolId string, body EvictSksNodepoolMembersJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewEvictSksNodepoolMembersRequestWithBody(server, id, sksNodepoolId, "application/json", bodyReader) +} + +// NewEvictSksNodepoolMembersRequestWithBody generates requests for EvictSksNodepoolMembers with any type of body +func NewEvictSksNodepoolMembersRequestWithBody(server string, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "sks-nodepool-id", sksNodepoolId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool/%s:evict", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewScaleSksNodepoolRequest calls the generic ScaleSksNodepool builder with application/json body +func NewScaleSksNodepoolRequest(server string, id string, sksNodepoolId string, body ScaleSksNodepoolJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewScaleSksNodepoolRequestWithBody(server, id, sksNodepoolId, "application/json", bodyReader) +} + +// NewScaleSksNodepoolRequestWithBody generates requests for ScaleSksNodepool with any type of body +func NewScaleSksNodepoolRequestWithBody(server string, id string, sksNodepoolId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "sks-nodepool-id", sksNodepoolId) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/nodepool/%s:scale", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewUpgradeSksClusterRequest calls the generic UpgradeSksCluster builder with application/json body +func NewUpgradeSksClusterRequest(server string, id string, body UpgradeSksClusterJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpgradeSksClusterRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewUpgradeSksClusterRequestWithBody generates requests for UpgradeSksCluster with any type of body +func NewUpgradeSksClusterRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/upgrade", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteSksClusterFieldRequest generates requests for DeleteSksClusterField +func NewDeleteSksClusterFieldRequest(server string, id string, field string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParam("simple", false, "field", field) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sks-cluster/%s/%s", pathParam0, pathParam1) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListSnapshotsRequest generates requests for ListSnapshots +func NewListSnapshotsRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/snapshot") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewDeleteSnapshotRequest generates requests for DeleteSnapshot +func NewDeleteSnapshotRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/snapshot/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSnapshotRequest generates requests for GetSnapshot +func NewGetSnapshotRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/snapshot/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewExportSnapshotRequest generates requests for ExportSnapshot +func NewExportSnapshotRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/snapshot/%s:export", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSosPresignedUrlRequest generates requests for GetSosPresignedUrl +func NewGetSosPresignedUrlRequest(server string, bucket string, params *GetSosPresignedUrlParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "bucket", bucket) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/sos/%s/presigned-url", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + queryValues := queryUrl.Query() + + if params.Key != nil { + + if queryFrag, err := runtime.StyleParam("form", true, "key", *params.Key); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryUrl.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetSshKeyRequest generates requests for GetSshKey +func NewGetSshKeyRequest(server string, name string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "name", name) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/ssh-key/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListTemplatesRequest generates requests for ListTemplates +func NewListTemplatesRequest(server string, params *ListTemplatesParams) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/template") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + queryValues := queryUrl.Query() + + if params.Visibility != nil { + + if queryFrag, err := runtime.StyleParam("form", true, "visibility", *params.Visibility); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.Family != nil { + + if queryFrag, err := runtime.StyleParam("form", true, "family", *params.Family); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryUrl.RawQuery = queryValues.Encode() + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewRegisterTemplateRequest calls the generic RegisterTemplate builder with application/json body +func NewRegisterTemplateRequest(server string, body RegisterTemplateJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewRegisterTemplateRequestWithBody(server, "application/json", bodyReader) +} + +// NewRegisterTemplateRequestWithBody generates requests for RegisterTemplate with any type of body +func NewRegisterTemplateRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/template") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewDeleteTemplateRequest generates requests for DeleteTemplate +func NewDeleteTemplateRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/template/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetTemplateRequest generates requests for GetTemplate +func NewGetTemplateRequest(server string, id string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/template/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCopyTemplateRequest calls the generic CopyTemplate builder with application/json body +func NewCopyTemplateRequest(server string, id string, body CopyTemplateJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCopyTemplateRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewCopyTemplateRequestWithBody generates requests for CopyTemplate with any type of body +func NewCopyTemplateRequestWithBody(server string, id string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParam("simple", false, "id", id) + if err != nil { + return nil, err + } + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/template/%s", pathParam0) + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryUrl.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + return req, nil +} + +// NewListZonesRequest generates requests for ListZones +func NewListZonesRequest(server string) (*http.Request, error) { + var err error + + queryUrl, err := url.Parse(server) + if err != nil { + return nil, err + } + + basePath := fmt.Sprintf("/zone") + if basePath[0] == '/' { + basePath = basePath[1:] + } + + queryUrl, err = queryUrl.Parse(basePath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryUrl.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// ClientWithResponses builds on ClientInterface to offer response payloads +type ClientWithResponses struct { + ClientInterface +} + +// NewClientWithResponses creates a new ClientWithResponses, which wraps +// Client with return type handling +func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) { + client, err := NewClient(server, opts...) + if err != nil { + return nil, err + } + return &ClientWithResponses{client}, nil +} + +// WithBaseURL overrides the baseURL. +func WithBaseURL(baseURL string) ClientOption { + return func(c *Client) error { + newBaseURL, err := url.Parse(baseURL) + if err != nil { + return err + } + c.Server = newBaseURL.String() + return nil + } +} + +// ClientWithResponsesInterface is the interface specification for the client with responses above. +type ClientWithResponsesInterface interface { + // ListAntiAffinityGroups request + ListAntiAffinityGroupsWithResponse(ctx context.Context) (*ListAntiAffinityGroupsResponse, error) + + // CreateAntiAffinityGroup request with any body + CreateAntiAffinityGroupWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateAntiAffinityGroupResponse, error) + + CreateAntiAffinityGroupWithResponse(ctx context.Context, body CreateAntiAffinityGroupJSONRequestBody) (*CreateAntiAffinityGroupResponse, error) + + // DeleteAntiAffinityGroup request + DeleteAntiAffinityGroupWithResponse(ctx context.Context, id string) (*DeleteAntiAffinityGroupResponse, error) + + // GetAntiAffinityGroup request + GetAntiAffinityGroupWithResponse(ctx context.Context, id string) (*GetAntiAffinityGroupResponse, error) + + // GetElasticIp request + GetElasticIpWithResponse(ctx context.Context, id string) (*GetElasticIpResponse, error) + + // ListEvents request + ListEventsWithResponse(ctx context.Context, params *ListEventsParams) (*ListEventsResponse, error) + + // CreateInstance request with any body + CreateInstanceWithBodyWithResponse(ctx context.Context, params *CreateInstanceParams, contentType string, body io.Reader) (*CreateInstanceResponse, error) + + CreateInstanceWithResponse(ctx context.Context, params *CreateInstanceParams, body CreateInstanceJSONRequestBody) (*CreateInstanceResponse, error) + + // ListInstancePools request + ListInstancePoolsWithResponse(ctx context.Context) (*ListInstancePoolsResponse, error) + + // CreateInstancePool request with any body + CreateInstancePoolWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateInstancePoolResponse, error) + + CreateInstancePoolWithResponse(ctx context.Context, body CreateInstancePoolJSONRequestBody) (*CreateInstancePoolResponse, error) + + // DeleteInstancePool request + DeleteInstancePoolWithResponse(ctx context.Context, id string) (*DeleteInstancePoolResponse, error) + + // GetInstancePool request + GetInstancePoolWithResponse(ctx context.Context, id string) (*GetInstancePoolResponse, error) + + // UpdateInstancePool request with any body + UpdateInstancePoolWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdateInstancePoolResponse, error) + + UpdateInstancePoolWithResponse(ctx context.Context, id string, body UpdateInstancePoolJSONRequestBody) (*UpdateInstancePoolResponse, error) + + // DeleteInstancePoolField request + DeleteInstancePoolFieldWithResponse(ctx context.Context, id string, field string) (*DeleteInstancePoolFieldResponse, error) + + // EvictInstancePoolMembers request with any body + EvictInstancePoolMembersWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*EvictInstancePoolMembersResponse, error) + + EvictInstancePoolMembersWithResponse(ctx context.Context, id string, body EvictInstancePoolMembersJSONRequestBody) (*EvictInstancePoolMembersResponse, error) + + // ScaleInstancePool request with any body + ScaleInstancePoolWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*ScaleInstancePoolResponse, error) + + ScaleInstancePoolWithResponse(ctx context.Context, id string, body ScaleInstancePoolJSONRequestBody) (*ScaleInstancePoolResponse, error) + + // ListInstanceTypes request + ListInstanceTypesWithResponse(ctx context.Context) (*ListInstanceTypesResponse, error) + + // GetInstanceType request + GetInstanceTypeWithResponse(ctx context.Context, id string) (*GetInstanceTypeResponse, error) + + // CreateSnapshot request + CreateSnapshotWithResponse(ctx context.Context, id string) (*CreateSnapshotResponse, error) + + // RevertInstanceToSnapshot request with any body + RevertInstanceToSnapshotWithBodyWithResponse(ctx context.Context, instanceId string, contentType string, body io.Reader) (*RevertInstanceToSnapshotResponse, error) + + RevertInstanceToSnapshotWithResponse(ctx context.Context, instanceId string, body RevertInstanceToSnapshotJSONRequestBody) (*RevertInstanceToSnapshotResponse, error) + + // ListLoadBalancers request + ListLoadBalancersWithResponse(ctx context.Context) (*ListLoadBalancersResponse, error) + + // CreateLoadBalancer request with any body + CreateLoadBalancerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateLoadBalancerResponse, error) + + CreateLoadBalancerWithResponse(ctx context.Context, body CreateLoadBalancerJSONRequestBody) (*CreateLoadBalancerResponse, error) + + // DeleteLoadBalancer request + DeleteLoadBalancerWithResponse(ctx context.Context, id string) (*DeleteLoadBalancerResponse, error) + + // GetLoadBalancer request + GetLoadBalancerWithResponse(ctx context.Context, id string) (*GetLoadBalancerResponse, error) + + // UpdateLoadBalancer request with any body + UpdateLoadBalancerWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdateLoadBalancerResponse, error) + + UpdateLoadBalancerWithResponse(ctx context.Context, id string, body UpdateLoadBalancerJSONRequestBody) (*UpdateLoadBalancerResponse, error) + + // AddServiceToLoadBalancer request with any body + AddServiceToLoadBalancerWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*AddServiceToLoadBalancerResponse, error) + + AddServiceToLoadBalancerWithResponse(ctx context.Context, id string, body AddServiceToLoadBalancerJSONRequestBody) (*AddServiceToLoadBalancerResponse, error) + + // DeleteLoadBalancerService request + DeleteLoadBalancerServiceWithResponse(ctx context.Context, id string, serviceId string) (*DeleteLoadBalancerServiceResponse, error) + + // GetLoadBalancerService request + GetLoadBalancerServiceWithResponse(ctx context.Context, id string, serviceId string) (*GetLoadBalancerServiceResponse, error) + + // UpdateLoadBalancerService request with any body + UpdateLoadBalancerServiceWithBodyWithResponse(ctx context.Context, id string, serviceId string, contentType string, body io.Reader) (*UpdateLoadBalancerServiceResponse, error) + + UpdateLoadBalancerServiceWithResponse(ctx context.Context, id string, serviceId string, body UpdateLoadBalancerServiceJSONRequestBody) (*UpdateLoadBalancerServiceResponse, error) + + // GetOperation request + GetOperationWithResponse(ctx context.Context, id string) (*GetOperationResponse, error) + + // ListPrivateNetworks request + ListPrivateNetworksWithResponse(ctx context.Context) (*ListPrivateNetworksResponse, error) + + // CreatePrivateNetwork request with any body + CreatePrivateNetworkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreatePrivateNetworkResponse, error) + + CreatePrivateNetworkWithResponse(ctx context.Context, body CreatePrivateNetworkJSONRequestBody) (*CreatePrivateNetworkResponse, error) + + // DeletePrivateNetwork request + DeletePrivateNetworkWithResponse(ctx context.Context, id string) (*DeletePrivateNetworkResponse, error) + + // GetPrivateNetwork request + GetPrivateNetworkWithResponse(ctx context.Context, id string) (*GetPrivateNetworkResponse, error) + + // UpdatePrivateNetwork request with any body + UpdatePrivateNetworkWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdatePrivateNetworkResponse, error) + + UpdatePrivateNetworkWithResponse(ctx context.Context, id string, body UpdatePrivateNetworkJSONRequestBody) (*UpdatePrivateNetworkResponse, error) + + // DeletePrivateNetworkField request + DeletePrivateNetworkFieldWithResponse(ctx context.Context, id string, field string) (*DeletePrivateNetworkFieldResponse, error) + + // ListSecurityGroups request + ListSecurityGroupsWithResponse(ctx context.Context) (*ListSecurityGroupsResponse, error) + + // CreateSecurityGroup request with any body + CreateSecurityGroupWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateSecurityGroupResponse, error) + + CreateSecurityGroupWithResponse(ctx context.Context, body CreateSecurityGroupJSONRequestBody) (*CreateSecurityGroupResponse, error) + + // DeleteSecurityGroup request + DeleteSecurityGroupWithResponse(ctx context.Context, id string) (*DeleteSecurityGroupResponse, error) + + // GetSecurityGroup request + GetSecurityGroupWithResponse(ctx context.Context, id string) (*GetSecurityGroupResponse, error) + + // AddRuleToSecurityGroup request with any body + AddRuleToSecurityGroupWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*AddRuleToSecurityGroupResponse, error) + + AddRuleToSecurityGroupWithResponse(ctx context.Context, id string, body AddRuleToSecurityGroupJSONRequestBody) (*AddRuleToSecurityGroupResponse, error) + + // DeleteRuleFromSecurityGroup request + DeleteRuleFromSecurityGroupWithResponse(ctx context.Context, id string, ruleId string) (*DeleteRuleFromSecurityGroupResponse, error) + + // ListSksClusters request + ListSksClustersWithResponse(ctx context.Context) (*ListSksClustersResponse, error) + + // CreateSksCluster request with any body + CreateSksClusterWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateSksClusterResponse, error) + + CreateSksClusterWithResponse(ctx context.Context, body CreateSksClusterJSONRequestBody) (*CreateSksClusterResponse, error) + + // GenerateSksClusterKubeconfig request with any body + GenerateSksClusterKubeconfigWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*GenerateSksClusterKubeconfigResponse, error) + + GenerateSksClusterKubeconfigWithResponse(ctx context.Context, id string, body GenerateSksClusterKubeconfigJSONRequestBody) (*GenerateSksClusterKubeconfigResponse, error) + + // ListSksClusterVersions request + ListSksClusterVersionsWithResponse(ctx context.Context) (*ListSksClusterVersionsResponse, error) + + // DeleteSksCluster request + DeleteSksClusterWithResponse(ctx context.Context, id string) (*DeleteSksClusterResponse, error) + + // GetSksCluster request + GetSksClusterWithResponse(ctx context.Context, id string) (*GetSksClusterResponse, error) + + // UpdateSksCluster request with any body + UpdateSksClusterWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdateSksClusterResponse, error) + + UpdateSksClusterWithResponse(ctx context.Context, id string, body UpdateSksClusterJSONRequestBody) (*UpdateSksClusterResponse, error) + + // CreateSksNodepool request with any body + CreateSksNodepoolWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*CreateSksNodepoolResponse, error) + + CreateSksNodepoolWithResponse(ctx context.Context, id string, body CreateSksNodepoolJSONRequestBody) (*CreateSksNodepoolResponse, error) + + // DeleteSksNodepool request + DeleteSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string) (*DeleteSksNodepoolResponse, error) + + // GetSksNodepool request + GetSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string) (*GetSksNodepoolResponse, error) + + // UpdateSksNodepool request with any body + UpdateSksNodepoolWithBodyWithResponse(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*UpdateSksNodepoolResponse, error) + + UpdateSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string, body UpdateSksNodepoolJSONRequestBody) (*UpdateSksNodepoolResponse, error) + + // DeleteSksNodepoolField request + DeleteSksNodepoolFieldWithResponse(ctx context.Context, id string, sksNodepoolId string, field string) (*DeleteSksNodepoolFieldResponse, error) + + // EvictSksNodepoolMembers request with any body + EvictSksNodepoolMembersWithBodyWithResponse(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*EvictSksNodepoolMembersResponse, error) + + EvictSksNodepoolMembersWithResponse(ctx context.Context, id string, sksNodepoolId string, body EvictSksNodepoolMembersJSONRequestBody) (*EvictSksNodepoolMembersResponse, error) + + // ScaleSksNodepool request with any body + ScaleSksNodepoolWithBodyWithResponse(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*ScaleSksNodepoolResponse, error) + + ScaleSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string, body ScaleSksNodepoolJSONRequestBody) (*ScaleSksNodepoolResponse, error) + + // UpgradeSksCluster request with any body + UpgradeSksClusterWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpgradeSksClusterResponse, error) + + UpgradeSksClusterWithResponse(ctx context.Context, id string, body UpgradeSksClusterJSONRequestBody) (*UpgradeSksClusterResponse, error) + + // DeleteSksClusterField request + DeleteSksClusterFieldWithResponse(ctx context.Context, id string, field string) (*DeleteSksClusterFieldResponse, error) + + // ListSnapshots request + ListSnapshotsWithResponse(ctx context.Context) (*ListSnapshotsResponse, error) + + // DeleteSnapshot request + DeleteSnapshotWithResponse(ctx context.Context, id string) (*DeleteSnapshotResponse, error) + + // GetSnapshot request + GetSnapshotWithResponse(ctx context.Context, id string) (*GetSnapshotResponse, error) + + // ExportSnapshot request + ExportSnapshotWithResponse(ctx context.Context, id string) (*ExportSnapshotResponse, error) + + // GetSosPresignedUrl request + GetSosPresignedUrlWithResponse(ctx context.Context, bucket string, params *GetSosPresignedUrlParams) (*GetSosPresignedUrlResponse, error) + + // GetSshKey request + GetSshKeyWithResponse(ctx context.Context, name string) (*GetSshKeyResponse, error) + + // ListTemplates request + ListTemplatesWithResponse(ctx context.Context, params *ListTemplatesParams) (*ListTemplatesResponse, error) + + // RegisterTemplate request with any body + RegisterTemplateWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*RegisterTemplateResponse, error) + + RegisterTemplateWithResponse(ctx context.Context, body RegisterTemplateJSONRequestBody) (*RegisterTemplateResponse, error) + + // DeleteTemplate request + DeleteTemplateWithResponse(ctx context.Context, id string) (*DeleteTemplateResponse, error) + + // GetTemplate request + GetTemplateWithResponse(ctx context.Context, id string) (*GetTemplateResponse, error) + + // CopyTemplate request with any body + CopyTemplateWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*CopyTemplateResponse, error) + + CopyTemplateWithResponse(ctx context.Context, id string, body CopyTemplateJSONRequestBody) (*CopyTemplateResponse, error) + + // ListZones request + ListZonesWithResponse(ctx context.Context) (*ListZonesResponse, error) +} + +type ListAntiAffinityGroupsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListAntiAffinityGroupsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListAntiAffinityGroupsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateAntiAffinityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateAntiAffinityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateAntiAffinityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteAntiAffinityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteAntiAffinityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteAntiAffinityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetAntiAffinityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *AntiAffinityGroup +} + +// Status returns HTTPResponse.Status +func (r GetAntiAffinityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetAntiAffinityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetElasticIpResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ElasticIp +} + +// Status returns HTTPResponse.Status +func (r GetElasticIpResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetElasticIpResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListEventsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Event +} + +// Status returns HTTPResponse.Status +func (r ListEventsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListEventsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateInstanceResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateInstanceResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateInstanceResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListInstancePoolsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + InstancePools *[]InstancePool `json:"instance-pools,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListInstancePoolsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListInstancePoolsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateInstancePoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateInstancePoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateInstancePoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteInstancePoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteInstancePoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteInstancePoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetInstancePoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *InstancePool +} + +// Status returns HTTPResponse.Status +func (r GetInstancePoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetInstancePoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateInstancePoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpdateInstancePoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateInstancePoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteInstancePoolFieldResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteInstancePoolFieldResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteInstancePoolFieldResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type EvictInstancePoolMembersResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r EvictInstancePoolMembersResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r EvictInstancePoolMembersResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ScaleInstancePoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r ScaleInstancePoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ScaleInstancePoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListInstanceTypesResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + InstanceTypes *[]InstanceType `json:"instance-types,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListInstanceTypesResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListInstanceTypesResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetInstanceTypeResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *InstanceType +} + +// Status returns HTTPResponse.Status +func (r GetInstanceTypeResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetInstanceTypeResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateSnapshotResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateSnapshotResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateSnapshotResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type RevertInstanceToSnapshotResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r RevertInstanceToSnapshotResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r RevertInstanceToSnapshotResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListLoadBalancersResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + LoadBalancers *[]LoadBalancer `json:"load-balancers,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListLoadBalancersResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListLoadBalancersResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateLoadBalancerResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateLoadBalancerResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateLoadBalancerResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteLoadBalancerResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteLoadBalancerResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteLoadBalancerResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetLoadBalancerResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *LoadBalancer +} + +// Status returns HTTPResponse.Status +func (r GetLoadBalancerResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetLoadBalancerResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateLoadBalancerResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpdateLoadBalancerResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateLoadBalancerResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type AddServiceToLoadBalancerResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r AddServiceToLoadBalancerResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r AddServiceToLoadBalancerResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteLoadBalancerServiceResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteLoadBalancerServiceResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteLoadBalancerServiceResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetLoadBalancerServiceResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *LoadBalancerService +} + +// Status returns HTTPResponse.Status +func (r GetLoadBalancerServiceResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetLoadBalancerServiceResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateLoadBalancerServiceResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpdateLoadBalancerServiceResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateLoadBalancerServiceResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetOperationResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r GetOperationResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetOperationResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListPrivateNetworksResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + PrivateNetworks *[]PrivateNetwork `json:"private-networks,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListPrivateNetworksResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListPrivateNetworksResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreatePrivateNetworkResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreatePrivateNetworkResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreatePrivateNetworkResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeletePrivateNetworkResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeletePrivateNetworkResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeletePrivateNetworkResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetPrivateNetworkResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *PrivateNetwork +} + +// Status returns HTTPResponse.Status +func (r GetPrivateNetworkResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetPrivateNetworkResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdatePrivateNetworkResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpdatePrivateNetworkResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdatePrivateNetworkResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeletePrivateNetworkFieldResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeletePrivateNetworkFieldResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeletePrivateNetworkFieldResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListSecurityGroupsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListSecurityGroupsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListSecurityGroupsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateSecurityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateSecurityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateSecurityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSecurityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteSecurityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteSecurityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetSecurityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *SecurityGroup +} + +// Status returns HTTPResponse.Status +func (r GetSecurityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSecurityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type AddRuleToSecurityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r AddRuleToSecurityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r AddRuleToSecurityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteRuleFromSecurityGroupResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteRuleFromSecurityGroupResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteRuleFromSecurityGroupResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListSksClustersResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + SksClusters *[]SksCluster `json:"sks-clusters,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListSksClustersResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListSksClustersResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateSksClusterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateSksClusterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateSksClusterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GenerateSksClusterKubeconfigResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + Kubeconfig *string `json:"kubeconfig,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r GenerateSksClusterKubeconfigResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GenerateSksClusterKubeconfigResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListSksClusterVersionsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + SksClusterVersions *[]string `json:"sks-cluster-versions,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListSksClusterVersionsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListSksClusterVersionsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSksClusterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteSksClusterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteSksClusterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetSksClusterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *SksCluster +} + +// Status returns HTTPResponse.Status +func (r GetSksClusterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSksClusterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateSksClusterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpdateSksClusterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateSksClusterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateSksNodepoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CreateSksNodepoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateSksNodepoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSksNodepoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteSksNodepoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteSksNodepoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetSksNodepoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *SksNodepool +} + +// Status returns HTTPResponse.Status +func (r GetSksNodepoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSksNodepoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateSksNodepoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpdateSksNodepoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateSksNodepoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSksNodepoolFieldResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteSksNodepoolFieldResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteSksNodepoolFieldResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type EvictSksNodepoolMembersResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r EvictSksNodepoolMembersResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r EvictSksNodepoolMembersResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ScaleSksNodepoolResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r ScaleSksNodepoolResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ScaleSksNodepoolResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpgradeSksClusterResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r UpgradeSksClusterResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpgradeSksClusterResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSksClusterFieldResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteSksClusterFieldResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteSksClusterFieldResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListSnapshotsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + Snapshots *[]Snapshot `json:"snapshots,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListSnapshotsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListSnapshotsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteSnapshotResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteSnapshotResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteSnapshotResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetSnapshotResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Snapshot +} + +// Status returns HTTPResponse.Status +func (r GetSnapshotResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSnapshotResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ExportSnapshotResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r ExportSnapshotResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ExportSnapshotResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetSosPresignedUrlResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + Url *string `json:"url,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r GetSosPresignedUrlResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSosPresignedUrlResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetSshKeyResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *SshKey +} + +// Status returns HTTPResponse.Status +func (r GetSshKeyResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetSshKeyResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListTemplatesResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + Templates *[]Template `json:"templates,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListTemplatesResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListTemplatesResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type RegisterTemplateResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r RegisterTemplateResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r RegisterTemplateResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteTemplateResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r DeleteTemplateResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteTemplateResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetTemplateResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Template +} + +// Status returns HTTPResponse.Status +func (r GetTemplateResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetTemplateResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CopyTemplateResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *Operation +} + +// Status returns HTTPResponse.Status +func (r CopyTemplateResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CopyTemplateResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ListZonesResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + Zones *[]Zone `json:"zones,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ListZonesResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListZonesResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ListAntiAffinityGroupsWithResponse request returning *ListAntiAffinityGroupsResponse +func (c *ClientWithResponses) ListAntiAffinityGroupsWithResponse(ctx context.Context) (*ListAntiAffinityGroupsResponse, error) { + rsp, err := c.ListAntiAffinityGroups(ctx) + if err != nil { + return nil, err + } + return ParseListAntiAffinityGroupsResponse(rsp) +} + +// CreateAntiAffinityGroupWithBodyWithResponse request with arbitrary body returning *CreateAntiAffinityGroupResponse +func (c *ClientWithResponses) CreateAntiAffinityGroupWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateAntiAffinityGroupResponse, error) { + rsp, err := c.CreateAntiAffinityGroupWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateAntiAffinityGroupResponse(rsp) +} + +func (c *ClientWithResponses) CreateAntiAffinityGroupWithResponse(ctx context.Context, body CreateAntiAffinityGroupJSONRequestBody) (*CreateAntiAffinityGroupResponse, error) { + rsp, err := c.CreateAntiAffinityGroup(ctx, body) + if err != nil { + return nil, err + } + return ParseCreateAntiAffinityGroupResponse(rsp) +} + +// DeleteAntiAffinityGroupWithResponse request returning *DeleteAntiAffinityGroupResponse +func (c *ClientWithResponses) DeleteAntiAffinityGroupWithResponse(ctx context.Context, id string) (*DeleteAntiAffinityGroupResponse, error) { + rsp, err := c.DeleteAntiAffinityGroup(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteAntiAffinityGroupResponse(rsp) +} + +// GetAntiAffinityGroupWithResponse request returning *GetAntiAffinityGroupResponse +func (c *ClientWithResponses) GetAntiAffinityGroupWithResponse(ctx context.Context, id string) (*GetAntiAffinityGroupResponse, error) { + rsp, err := c.GetAntiAffinityGroup(ctx, id) + if err != nil { + return nil, err + } + return ParseGetAntiAffinityGroupResponse(rsp) +} + +// GetElasticIpWithResponse request returning *GetElasticIpResponse +func (c *ClientWithResponses) GetElasticIpWithResponse(ctx context.Context, id string) (*GetElasticIpResponse, error) { + rsp, err := c.GetElasticIp(ctx, id) + if err != nil { + return nil, err + } + return ParseGetElasticIpResponse(rsp) +} + +// ListEventsWithResponse request returning *ListEventsResponse +func (c *ClientWithResponses) ListEventsWithResponse(ctx context.Context, params *ListEventsParams) (*ListEventsResponse, error) { + rsp, err := c.ListEvents(ctx, params) + if err != nil { + return nil, err + } + return ParseListEventsResponse(rsp) +} + +// CreateInstanceWithBodyWithResponse request with arbitrary body returning *CreateInstanceResponse +func (c *ClientWithResponses) CreateInstanceWithBodyWithResponse(ctx context.Context, params *CreateInstanceParams, contentType string, body io.Reader) (*CreateInstanceResponse, error) { + rsp, err := c.CreateInstanceWithBody(ctx, params, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateInstanceResponse(rsp) +} + +func (c *ClientWithResponses) CreateInstanceWithResponse(ctx context.Context, params *CreateInstanceParams, body CreateInstanceJSONRequestBody) (*CreateInstanceResponse, error) { + rsp, err := c.CreateInstance(ctx, params, body) + if err != nil { + return nil, err + } + return ParseCreateInstanceResponse(rsp) +} + +// ListInstancePoolsWithResponse request returning *ListInstancePoolsResponse +func (c *ClientWithResponses) ListInstancePoolsWithResponse(ctx context.Context) (*ListInstancePoolsResponse, error) { + rsp, err := c.ListInstancePools(ctx) + if err != nil { + return nil, err + } + return ParseListInstancePoolsResponse(rsp) +} + +// CreateInstancePoolWithBodyWithResponse request with arbitrary body returning *CreateInstancePoolResponse +func (c *ClientWithResponses) CreateInstancePoolWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateInstancePoolResponse, error) { + rsp, err := c.CreateInstancePoolWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateInstancePoolResponse(rsp) +} + +func (c *ClientWithResponses) CreateInstancePoolWithResponse(ctx context.Context, body CreateInstancePoolJSONRequestBody) (*CreateInstancePoolResponse, error) { + rsp, err := c.CreateInstancePool(ctx, body) + if err != nil { + return nil, err + } + return ParseCreateInstancePoolResponse(rsp) +} + +// DeleteInstancePoolWithResponse request returning *DeleteInstancePoolResponse +func (c *ClientWithResponses) DeleteInstancePoolWithResponse(ctx context.Context, id string) (*DeleteInstancePoolResponse, error) { + rsp, err := c.DeleteInstancePool(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteInstancePoolResponse(rsp) +} + +// GetInstancePoolWithResponse request returning *GetInstancePoolResponse +func (c *ClientWithResponses) GetInstancePoolWithResponse(ctx context.Context, id string) (*GetInstancePoolResponse, error) { + rsp, err := c.GetInstancePool(ctx, id) + if err != nil { + return nil, err + } + return ParseGetInstancePoolResponse(rsp) +} + +// UpdateInstancePoolWithBodyWithResponse request with arbitrary body returning *UpdateInstancePoolResponse +func (c *ClientWithResponses) UpdateInstancePoolWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdateInstancePoolResponse, error) { + rsp, err := c.UpdateInstancePoolWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseUpdateInstancePoolResponse(rsp) +} + +func (c *ClientWithResponses) UpdateInstancePoolWithResponse(ctx context.Context, id string, body UpdateInstancePoolJSONRequestBody) (*UpdateInstancePoolResponse, error) { + rsp, err := c.UpdateInstancePool(ctx, id, body) + if err != nil { + return nil, err + } + return ParseUpdateInstancePoolResponse(rsp) +} + +// DeleteInstancePoolFieldWithResponse request returning *DeleteInstancePoolFieldResponse +func (c *ClientWithResponses) DeleteInstancePoolFieldWithResponse(ctx context.Context, id string, field string) (*DeleteInstancePoolFieldResponse, error) { + rsp, err := c.DeleteInstancePoolField(ctx, id, field) + if err != nil { + return nil, err + } + return ParseDeleteInstancePoolFieldResponse(rsp) +} + +// EvictInstancePoolMembersWithBodyWithResponse request with arbitrary body returning *EvictInstancePoolMembersResponse +func (c *ClientWithResponses) EvictInstancePoolMembersWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*EvictInstancePoolMembersResponse, error) { + rsp, err := c.EvictInstancePoolMembersWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseEvictInstancePoolMembersResponse(rsp) +} + +func (c *ClientWithResponses) EvictInstancePoolMembersWithResponse(ctx context.Context, id string, body EvictInstancePoolMembersJSONRequestBody) (*EvictInstancePoolMembersResponse, error) { + rsp, err := c.EvictInstancePoolMembers(ctx, id, body) + if err != nil { + return nil, err + } + return ParseEvictInstancePoolMembersResponse(rsp) +} + +// ScaleInstancePoolWithBodyWithResponse request with arbitrary body returning *ScaleInstancePoolResponse +func (c *ClientWithResponses) ScaleInstancePoolWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*ScaleInstancePoolResponse, error) { + rsp, err := c.ScaleInstancePoolWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseScaleInstancePoolResponse(rsp) +} + +func (c *ClientWithResponses) ScaleInstancePoolWithResponse(ctx context.Context, id string, body ScaleInstancePoolJSONRequestBody) (*ScaleInstancePoolResponse, error) { + rsp, err := c.ScaleInstancePool(ctx, id, body) + if err != nil { + return nil, err + } + return ParseScaleInstancePoolResponse(rsp) +} + +// ListInstanceTypesWithResponse request returning *ListInstanceTypesResponse +func (c *ClientWithResponses) ListInstanceTypesWithResponse(ctx context.Context) (*ListInstanceTypesResponse, error) { + rsp, err := c.ListInstanceTypes(ctx) + if err != nil { + return nil, err + } + return ParseListInstanceTypesResponse(rsp) +} + +// GetInstanceTypeWithResponse request returning *GetInstanceTypeResponse +func (c *ClientWithResponses) GetInstanceTypeWithResponse(ctx context.Context, id string) (*GetInstanceTypeResponse, error) { + rsp, err := c.GetInstanceType(ctx, id) + if err != nil { + return nil, err + } + return ParseGetInstanceTypeResponse(rsp) +} + +// CreateSnapshotWithResponse request returning *CreateSnapshotResponse +func (c *ClientWithResponses) CreateSnapshotWithResponse(ctx context.Context, id string) (*CreateSnapshotResponse, error) { + rsp, err := c.CreateSnapshot(ctx, id) + if err != nil { + return nil, err + } + return ParseCreateSnapshotResponse(rsp) +} + +// RevertInstanceToSnapshotWithBodyWithResponse request with arbitrary body returning *RevertInstanceToSnapshotResponse +func (c *ClientWithResponses) RevertInstanceToSnapshotWithBodyWithResponse(ctx context.Context, instanceId string, contentType string, body io.Reader) (*RevertInstanceToSnapshotResponse, error) { + rsp, err := c.RevertInstanceToSnapshotWithBody(ctx, instanceId, contentType, body) + if err != nil { + return nil, err + } + return ParseRevertInstanceToSnapshotResponse(rsp) +} + +func (c *ClientWithResponses) RevertInstanceToSnapshotWithResponse(ctx context.Context, instanceId string, body RevertInstanceToSnapshotJSONRequestBody) (*RevertInstanceToSnapshotResponse, error) { + rsp, err := c.RevertInstanceToSnapshot(ctx, instanceId, body) + if err != nil { + return nil, err + } + return ParseRevertInstanceToSnapshotResponse(rsp) +} + +// ListLoadBalancersWithResponse request returning *ListLoadBalancersResponse +func (c *ClientWithResponses) ListLoadBalancersWithResponse(ctx context.Context) (*ListLoadBalancersResponse, error) { + rsp, err := c.ListLoadBalancers(ctx) + if err != nil { + return nil, err + } + return ParseListLoadBalancersResponse(rsp) +} + +// CreateLoadBalancerWithBodyWithResponse request with arbitrary body returning *CreateLoadBalancerResponse +func (c *ClientWithResponses) CreateLoadBalancerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateLoadBalancerResponse, error) { + rsp, err := c.CreateLoadBalancerWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateLoadBalancerResponse(rsp) +} + +func (c *ClientWithResponses) CreateLoadBalancerWithResponse(ctx context.Context, body CreateLoadBalancerJSONRequestBody) (*CreateLoadBalancerResponse, error) { + rsp, err := c.CreateLoadBalancer(ctx, body) + if err != nil { + return nil, err + } + return ParseCreateLoadBalancerResponse(rsp) +} + +// DeleteLoadBalancerWithResponse request returning *DeleteLoadBalancerResponse +func (c *ClientWithResponses) DeleteLoadBalancerWithResponse(ctx context.Context, id string) (*DeleteLoadBalancerResponse, error) { + rsp, err := c.DeleteLoadBalancer(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteLoadBalancerResponse(rsp) +} + +// GetLoadBalancerWithResponse request returning *GetLoadBalancerResponse +func (c *ClientWithResponses) GetLoadBalancerWithResponse(ctx context.Context, id string) (*GetLoadBalancerResponse, error) { + rsp, err := c.GetLoadBalancer(ctx, id) + if err != nil { + return nil, err + } + return ParseGetLoadBalancerResponse(rsp) +} + +// UpdateLoadBalancerWithBodyWithResponse request with arbitrary body returning *UpdateLoadBalancerResponse +func (c *ClientWithResponses) UpdateLoadBalancerWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdateLoadBalancerResponse, error) { + rsp, err := c.UpdateLoadBalancerWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseUpdateLoadBalancerResponse(rsp) +} + +func (c *ClientWithResponses) UpdateLoadBalancerWithResponse(ctx context.Context, id string, body UpdateLoadBalancerJSONRequestBody) (*UpdateLoadBalancerResponse, error) { + rsp, err := c.UpdateLoadBalancer(ctx, id, body) + if err != nil { + return nil, err + } + return ParseUpdateLoadBalancerResponse(rsp) +} + +// AddServiceToLoadBalancerWithBodyWithResponse request with arbitrary body returning *AddServiceToLoadBalancerResponse +func (c *ClientWithResponses) AddServiceToLoadBalancerWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*AddServiceToLoadBalancerResponse, error) { + rsp, err := c.AddServiceToLoadBalancerWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseAddServiceToLoadBalancerResponse(rsp) +} + +func (c *ClientWithResponses) AddServiceToLoadBalancerWithResponse(ctx context.Context, id string, body AddServiceToLoadBalancerJSONRequestBody) (*AddServiceToLoadBalancerResponse, error) { + rsp, err := c.AddServiceToLoadBalancer(ctx, id, body) + if err != nil { + return nil, err + } + return ParseAddServiceToLoadBalancerResponse(rsp) +} + +// DeleteLoadBalancerServiceWithResponse request returning *DeleteLoadBalancerServiceResponse +func (c *ClientWithResponses) DeleteLoadBalancerServiceWithResponse(ctx context.Context, id string, serviceId string) (*DeleteLoadBalancerServiceResponse, error) { + rsp, err := c.DeleteLoadBalancerService(ctx, id, serviceId) + if err != nil { + return nil, err + } + return ParseDeleteLoadBalancerServiceResponse(rsp) +} + +// GetLoadBalancerServiceWithResponse request returning *GetLoadBalancerServiceResponse +func (c *ClientWithResponses) GetLoadBalancerServiceWithResponse(ctx context.Context, id string, serviceId string) (*GetLoadBalancerServiceResponse, error) { + rsp, err := c.GetLoadBalancerService(ctx, id, serviceId) + if err != nil { + return nil, err + } + return ParseGetLoadBalancerServiceResponse(rsp) +} + +// UpdateLoadBalancerServiceWithBodyWithResponse request with arbitrary body returning *UpdateLoadBalancerServiceResponse +func (c *ClientWithResponses) UpdateLoadBalancerServiceWithBodyWithResponse(ctx context.Context, id string, serviceId string, contentType string, body io.Reader) (*UpdateLoadBalancerServiceResponse, error) { + rsp, err := c.UpdateLoadBalancerServiceWithBody(ctx, id, serviceId, contentType, body) + if err != nil { + return nil, err + } + return ParseUpdateLoadBalancerServiceResponse(rsp) +} + +func (c *ClientWithResponses) UpdateLoadBalancerServiceWithResponse(ctx context.Context, id string, serviceId string, body UpdateLoadBalancerServiceJSONRequestBody) (*UpdateLoadBalancerServiceResponse, error) { + rsp, err := c.UpdateLoadBalancerService(ctx, id, serviceId, body) + if err != nil { + return nil, err + } + return ParseUpdateLoadBalancerServiceResponse(rsp) +} + +// GetOperationWithResponse request returning *GetOperationResponse +func (c *ClientWithResponses) GetOperationWithResponse(ctx context.Context, id string) (*GetOperationResponse, error) { + rsp, err := c.GetOperation(ctx, id) + if err != nil { + return nil, err + } + return ParseGetOperationResponse(rsp) +} + +// ListPrivateNetworksWithResponse request returning *ListPrivateNetworksResponse +func (c *ClientWithResponses) ListPrivateNetworksWithResponse(ctx context.Context) (*ListPrivateNetworksResponse, error) { + rsp, err := c.ListPrivateNetworks(ctx) + if err != nil { + return nil, err + } + return ParseListPrivateNetworksResponse(rsp) +} + +// CreatePrivateNetworkWithBodyWithResponse request with arbitrary body returning *CreatePrivateNetworkResponse +func (c *ClientWithResponses) CreatePrivateNetworkWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreatePrivateNetworkResponse, error) { + rsp, err := c.CreatePrivateNetworkWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseCreatePrivateNetworkResponse(rsp) +} + +func (c *ClientWithResponses) CreatePrivateNetworkWithResponse(ctx context.Context, body CreatePrivateNetworkJSONRequestBody) (*CreatePrivateNetworkResponse, error) { + rsp, err := c.CreatePrivateNetwork(ctx, body) + if err != nil { + return nil, err + } + return ParseCreatePrivateNetworkResponse(rsp) +} + +// DeletePrivateNetworkWithResponse request returning *DeletePrivateNetworkResponse +func (c *ClientWithResponses) DeletePrivateNetworkWithResponse(ctx context.Context, id string) (*DeletePrivateNetworkResponse, error) { + rsp, err := c.DeletePrivateNetwork(ctx, id) + if err != nil { + return nil, err + } + return ParseDeletePrivateNetworkResponse(rsp) +} + +// GetPrivateNetworkWithResponse request returning *GetPrivateNetworkResponse +func (c *ClientWithResponses) GetPrivateNetworkWithResponse(ctx context.Context, id string) (*GetPrivateNetworkResponse, error) { + rsp, err := c.GetPrivateNetwork(ctx, id) + if err != nil { + return nil, err + } + return ParseGetPrivateNetworkResponse(rsp) +} + +// UpdatePrivateNetworkWithBodyWithResponse request with arbitrary body returning *UpdatePrivateNetworkResponse +func (c *ClientWithResponses) UpdatePrivateNetworkWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdatePrivateNetworkResponse, error) { + rsp, err := c.UpdatePrivateNetworkWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseUpdatePrivateNetworkResponse(rsp) +} + +func (c *ClientWithResponses) UpdatePrivateNetworkWithResponse(ctx context.Context, id string, body UpdatePrivateNetworkJSONRequestBody) (*UpdatePrivateNetworkResponse, error) { + rsp, err := c.UpdatePrivateNetwork(ctx, id, body) + if err != nil { + return nil, err + } + return ParseUpdatePrivateNetworkResponse(rsp) +} + +// DeletePrivateNetworkFieldWithResponse request returning *DeletePrivateNetworkFieldResponse +func (c *ClientWithResponses) DeletePrivateNetworkFieldWithResponse(ctx context.Context, id string, field string) (*DeletePrivateNetworkFieldResponse, error) { + rsp, err := c.DeletePrivateNetworkField(ctx, id, field) + if err != nil { + return nil, err + } + return ParseDeletePrivateNetworkFieldResponse(rsp) +} + +// ListSecurityGroupsWithResponse request returning *ListSecurityGroupsResponse +func (c *ClientWithResponses) ListSecurityGroupsWithResponse(ctx context.Context) (*ListSecurityGroupsResponse, error) { + rsp, err := c.ListSecurityGroups(ctx) + if err != nil { + return nil, err + } + return ParseListSecurityGroupsResponse(rsp) +} + +// CreateSecurityGroupWithBodyWithResponse request with arbitrary body returning *CreateSecurityGroupResponse +func (c *ClientWithResponses) CreateSecurityGroupWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateSecurityGroupResponse, error) { + rsp, err := c.CreateSecurityGroupWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateSecurityGroupResponse(rsp) +} + +func (c *ClientWithResponses) CreateSecurityGroupWithResponse(ctx context.Context, body CreateSecurityGroupJSONRequestBody) (*CreateSecurityGroupResponse, error) { + rsp, err := c.CreateSecurityGroup(ctx, body) + if err != nil { + return nil, err + } + return ParseCreateSecurityGroupResponse(rsp) +} + +// DeleteSecurityGroupWithResponse request returning *DeleteSecurityGroupResponse +func (c *ClientWithResponses) DeleteSecurityGroupWithResponse(ctx context.Context, id string) (*DeleteSecurityGroupResponse, error) { + rsp, err := c.DeleteSecurityGroup(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteSecurityGroupResponse(rsp) +} + +// GetSecurityGroupWithResponse request returning *GetSecurityGroupResponse +func (c *ClientWithResponses) GetSecurityGroupWithResponse(ctx context.Context, id string) (*GetSecurityGroupResponse, error) { + rsp, err := c.GetSecurityGroup(ctx, id) + if err != nil { + return nil, err + } + return ParseGetSecurityGroupResponse(rsp) +} + +// AddRuleToSecurityGroupWithBodyWithResponse request with arbitrary body returning *AddRuleToSecurityGroupResponse +func (c *ClientWithResponses) AddRuleToSecurityGroupWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*AddRuleToSecurityGroupResponse, error) { + rsp, err := c.AddRuleToSecurityGroupWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseAddRuleToSecurityGroupResponse(rsp) +} + +func (c *ClientWithResponses) AddRuleToSecurityGroupWithResponse(ctx context.Context, id string, body AddRuleToSecurityGroupJSONRequestBody) (*AddRuleToSecurityGroupResponse, error) { + rsp, err := c.AddRuleToSecurityGroup(ctx, id, body) + if err != nil { + return nil, err + } + return ParseAddRuleToSecurityGroupResponse(rsp) +} + +// DeleteRuleFromSecurityGroupWithResponse request returning *DeleteRuleFromSecurityGroupResponse +func (c *ClientWithResponses) DeleteRuleFromSecurityGroupWithResponse(ctx context.Context, id string, ruleId string) (*DeleteRuleFromSecurityGroupResponse, error) { + rsp, err := c.DeleteRuleFromSecurityGroup(ctx, id, ruleId) + if err != nil { + return nil, err + } + return ParseDeleteRuleFromSecurityGroupResponse(rsp) +} + +// ListSksClustersWithResponse request returning *ListSksClustersResponse +func (c *ClientWithResponses) ListSksClustersWithResponse(ctx context.Context) (*ListSksClustersResponse, error) { + rsp, err := c.ListSksClusters(ctx) + if err != nil { + return nil, err + } + return ParseListSksClustersResponse(rsp) +} + +// CreateSksClusterWithBodyWithResponse request with arbitrary body returning *CreateSksClusterResponse +func (c *ClientWithResponses) CreateSksClusterWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*CreateSksClusterResponse, error) { + rsp, err := c.CreateSksClusterWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateSksClusterResponse(rsp) +} + +func (c *ClientWithResponses) CreateSksClusterWithResponse(ctx context.Context, body CreateSksClusterJSONRequestBody) (*CreateSksClusterResponse, error) { + rsp, err := c.CreateSksCluster(ctx, body) + if err != nil { + return nil, err + } + return ParseCreateSksClusterResponse(rsp) +} + +// GenerateSksClusterKubeconfigWithBodyWithResponse request with arbitrary body returning *GenerateSksClusterKubeconfigResponse +func (c *ClientWithResponses) GenerateSksClusterKubeconfigWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*GenerateSksClusterKubeconfigResponse, error) { + rsp, err := c.GenerateSksClusterKubeconfigWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseGenerateSksClusterKubeconfigResponse(rsp) +} + +func (c *ClientWithResponses) GenerateSksClusterKubeconfigWithResponse(ctx context.Context, id string, body GenerateSksClusterKubeconfigJSONRequestBody) (*GenerateSksClusterKubeconfigResponse, error) { + rsp, err := c.GenerateSksClusterKubeconfig(ctx, id, body) + if err != nil { + return nil, err + } + return ParseGenerateSksClusterKubeconfigResponse(rsp) +} + +// ListSksClusterVersionsWithResponse request returning *ListSksClusterVersionsResponse +func (c *ClientWithResponses) ListSksClusterVersionsWithResponse(ctx context.Context) (*ListSksClusterVersionsResponse, error) { + rsp, err := c.ListSksClusterVersions(ctx) + if err != nil { + return nil, err + } + return ParseListSksClusterVersionsResponse(rsp) +} + +// DeleteSksClusterWithResponse request returning *DeleteSksClusterResponse +func (c *ClientWithResponses) DeleteSksClusterWithResponse(ctx context.Context, id string) (*DeleteSksClusterResponse, error) { + rsp, err := c.DeleteSksCluster(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteSksClusterResponse(rsp) +} + +// GetSksClusterWithResponse request returning *GetSksClusterResponse +func (c *ClientWithResponses) GetSksClusterWithResponse(ctx context.Context, id string) (*GetSksClusterResponse, error) { + rsp, err := c.GetSksCluster(ctx, id) + if err != nil { + return nil, err + } + return ParseGetSksClusterResponse(rsp) +} + +// UpdateSksClusterWithBodyWithResponse request with arbitrary body returning *UpdateSksClusterResponse +func (c *ClientWithResponses) UpdateSksClusterWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpdateSksClusterResponse, error) { + rsp, err := c.UpdateSksClusterWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseUpdateSksClusterResponse(rsp) +} + +func (c *ClientWithResponses) UpdateSksClusterWithResponse(ctx context.Context, id string, body UpdateSksClusterJSONRequestBody) (*UpdateSksClusterResponse, error) { + rsp, err := c.UpdateSksCluster(ctx, id, body) + if err != nil { + return nil, err + } + return ParseUpdateSksClusterResponse(rsp) +} + +// CreateSksNodepoolWithBodyWithResponse request with arbitrary body returning *CreateSksNodepoolResponse +func (c *ClientWithResponses) CreateSksNodepoolWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*CreateSksNodepoolResponse, error) { + rsp, err := c.CreateSksNodepoolWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseCreateSksNodepoolResponse(rsp) +} + +func (c *ClientWithResponses) CreateSksNodepoolWithResponse(ctx context.Context, id string, body CreateSksNodepoolJSONRequestBody) (*CreateSksNodepoolResponse, error) { + rsp, err := c.CreateSksNodepool(ctx, id, body) + if err != nil { + return nil, err + } + return ParseCreateSksNodepoolResponse(rsp) +} + +// DeleteSksNodepoolWithResponse request returning *DeleteSksNodepoolResponse +func (c *ClientWithResponses) DeleteSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string) (*DeleteSksNodepoolResponse, error) { + rsp, err := c.DeleteSksNodepool(ctx, id, sksNodepoolId) + if err != nil { + return nil, err + } + return ParseDeleteSksNodepoolResponse(rsp) +} + +// GetSksNodepoolWithResponse request returning *GetSksNodepoolResponse +func (c *ClientWithResponses) GetSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string) (*GetSksNodepoolResponse, error) { + rsp, err := c.GetSksNodepool(ctx, id, sksNodepoolId) + if err != nil { + return nil, err + } + return ParseGetSksNodepoolResponse(rsp) +} + +// UpdateSksNodepoolWithBodyWithResponse request with arbitrary body returning *UpdateSksNodepoolResponse +func (c *ClientWithResponses) UpdateSksNodepoolWithBodyWithResponse(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*UpdateSksNodepoolResponse, error) { + rsp, err := c.UpdateSksNodepoolWithBody(ctx, id, sksNodepoolId, contentType, body) + if err != nil { + return nil, err + } + return ParseUpdateSksNodepoolResponse(rsp) +} + +func (c *ClientWithResponses) UpdateSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string, body UpdateSksNodepoolJSONRequestBody) (*UpdateSksNodepoolResponse, error) { + rsp, err := c.UpdateSksNodepool(ctx, id, sksNodepoolId, body) + if err != nil { + return nil, err + } + return ParseUpdateSksNodepoolResponse(rsp) +} + +// DeleteSksNodepoolFieldWithResponse request returning *DeleteSksNodepoolFieldResponse +func (c *ClientWithResponses) DeleteSksNodepoolFieldWithResponse(ctx context.Context, id string, sksNodepoolId string, field string) (*DeleteSksNodepoolFieldResponse, error) { + rsp, err := c.DeleteSksNodepoolField(ctx, id, sksNodepoolId, field) + if err != nil { + return nil, err + } + return ParseDeleteSksNodepoolFieldResponse(rsp) +} + +// EvictSksNodepoolMembersWithBodyWithResponse request with arbitrary body returning *EvictSksNodepoolMembersResponse +func (c *ClientWithResponses) EvictSksNodepoolMembersWithBodyWithResponse(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*EvictSksNodepoolMembersResponse, error) { + rsp, err := c.EvictSksNodepoolMembersWithBody(ctx, id, sksNodepoolId, contentType, body) + if err != nil { + return nil, err + } + return ParseEvictSksNodepoolMembersResponse(rsp) +} + +func (c *ClientWithResponses) EvictSksNodepoolMembersWithResponse(ctx context.Context, id string, sksNodepoolId string, body EvictSksNodepoolMembersJSONRequestBody) (*EvictSksNodepoolMembersResponse, error) { + rsp, err := c.EvictSksNodepoolMembers(ctx, id, sksNodepoolId, body) + if err != nil { + return nil, err + } + return ParseEvictSksNodepoolMembersResponse(rsp) +} + +// ScaleSksNodepoolWithBodyWithResponse request with arbitrary body returning *ScaleSksNodepoolResponse +func (c *ClientWithResponses) ScaleSksNodepoolWithBodyWithResponse(ctx context.Context, id string, sksNodepoolId string, contentType string, body io.Reader) (*ScaleSksNodepoolResponse, error) { + rsp, err := c.ScaleSksNodepoolWithBody(ctx, id, sksNodepoolId, contentType, body) + if err != nil { + return nil, err + } + return ParseScaleSksNodepoolResponse(rsp) +} + +func (c *ClientWithResponses) ScaleSksNodepoolWithResponse(ctx context.Context, id string, sksNodepoolId string, body ScaleSksNodepoolJSONRequestBody) (*ScaleSksNodepoolResponse, error) { + rsp, err := c.ScaleSksNodepool(ctx, id, sksNodepoolId, body) + if err != nil { + return nil, err + } + return ParseScaleSksNodepoolResponse(rsp) +} + +// UpgradeSksClusterWithBodyWithResponse request with arbitrary body returning *UpgradeSksClusterResponse +func (c *ClientWithResponses) UpgradeSksClusterWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*UpgradeSksClusterResponse, error) { + rsp, err := c.UpgradeSksClusterWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseUpgradeSksClusterResponse(rsp) +} + +func (c *ClientWithResponses) UpgradeSksClusterWithResponse(ctx context.Context, id string, body UpgradeSksClusterJSONRequestBody) (*UpgradeSksClusterResponse, error) { + rsp, err := c.UpgradeSksCluster(ctx, id, body) + if err != nil { + return nil, err + } + return ParseUpgradeSksClusterResponse(rsp) +} + +// DeleteSksClusterFieldWithResponse request returning *DeleteSksClusterFieldResponse +func (c *ClientWithResponses) DeleteSksClusterFieldWithResponse(ctx context.Context, id string, field string) (*DeleteSksClusterFieldResponse, error) { + rsp, err := c.DeleteSksClusterField(ctx, id, field) + if err != nil { + return nil, err + } + return ParseDeleteSksClusterFieldResponse(rsp) +} + +// ListSnapshotsWithResponse request returning *ListSnapshotsResponse +func (c *ClientWithResponses) ListSnapshotsWithResponse(ctx context.Context) (*ListSnapshotsResponse, error) { + rsp, err := c.ListSnapshots(ctx) + if err != nil { + return nil, err + } + return ParseListSnapshotsResponse(rsp) +} + +// DeleteSnapshotWithResponse request returning *DeleteSnapshotResponse +func (c *ClientWithResponses) DeleteSnapshotWithResponse(ctx context.Context, id string) (*DeleteSnapshotResponse, error) { + rsp, err := c.DeleteSnapshot(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteSnapshotResponse(rsp) +} + +// GetSnapshotWithResponse request returning *GetSnapshotResponse +func (c *ClientWithResponses) GetSnapshotWithResponse(ctx context.Context, id string) (*GetSnapshotResponse, error) { + rsp, err := c.GetSnapshot(ctx, id) + if err != nil { + return nil, err + } + return ParseGetSnapshotResponse(rsp) +} + +// ExportSnapshotWithResponse request returning *ExportSnapshotResponse +func (c *ClientWithResponses) ExportSnapshotWithResponse(ctx context.Context, id string) (*ExportSnapshotResponse, error) { + rsp, err := c.ExportSnapshot(ctx, id) + if err != nil { + return nil, err + } + return ParseExportSnapshotResponse(rsp) +} + +// GetSosPresignedUrlWithResponse request returning *GetSosPresignedUrlResponse +func (c *ClientWithResponses) GetSosPresignedUrlWithResponse(ctx context.Context, bucket string, params *GetSosPresignedUrlParams) (*GetSosPresignedUrlResponse, error) { + rsp, err := c.GetSosPresignedUrl(ctx, bucket, params) + if err != nil { + return nil, err + } + return ParseGetSosPresignedUrlResponse(rsp) +} + +// GetSshKeyWithResponse request returning *GetSshKeyResponse +func (c *ClientWithResponses) GetSshKeyWithResponse(ctx context.Context, name string) (*GetSshKeyResponse, error) { + rsp, err := c.GetSshKey(ctx, name) + if err != nil { + return nil, err + } + return ParseGetSshKeyResponse(rsp) +} + +// ListTemplatesWithResponse request returning *ListTemplatesResponse +func (c *ClientWithResponses) ListTemplatesWithResponse(ctx context.Context, params *ListTemplatesParams) (*ListTemplatesResponse, error) { + rsp, err := c.ListTemplates(ctx, params) + if err != nil { + return nil, err + } + return ParseListTemplatesResponse(rsp) +} + +// RegisterTemplateWithBodyWithResponse request with arbitrary body returning *RegisterTemplateResponse +func (c *ClientWithResponses) RegisterTemplateWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader) (*RegisterTemplateResponse, error) { + rsp, err := c.RegisterTemplateWithBody(ctx, contentType, body) + if err != nil { + return nil, err + } + return ParseRegisterTemplateResponse(rsp) +} + +func (c *ClientWithResponses) RegisterTemplateWithResponse(ctx context.Context, body RegisterTemplateJSONRequestBody) (*RegisterTemplateResponse, error) { + rsp, err := c.RegisterTemplate(ctx, body) + if err != nil { + return nil, err + } + return ParseRegisterTemplateResponse(rsp) +} + +// DeleteTemplateWithResponse request returning *DeleteTemplateResponse +func (c *ClientWithResponses) DeleteTemplateWithResponse(ctx context.Context, id string) (*DeleteTemplateResponse, error) { + rsp, err := c.DeleteTemplate(ctx, id) + if err != nil { + return nil, err + } + return ParseDeleteTemplateResponse(rsp) +} + +// GetTemplateWithResponse request returning *GetTemplateResponse +func (c *ClientWithResponses) GetTemplateWithResponse(ctx context.Context, id string) (*GetTemplateResponse, error) { + rsp, err := c.GetTemplate(ctx, id) + if err != nil { + return nil, err + } + return ParseGetTemplateResponse(rsp) +} + +// CopyTemplateWithBodyWithResponse request with arbitrary body returning *CopyTemplateResponse +func (c *ClientWithResponses) CopyTemplateWithBodyWithResponse(ctx context.Context, id string, contentType string, body io.Reader) (*CopyTemplateResponse, error) { + rsp, err := c.CopyTemplateWithBody(ctx, id, contentType, body) + if err != nil { + return nil, err + } + return ParseCopyTemplateResponse(rsp) +} + +func (c *ClientWithResponses) CopyTemplateWithResponse(ctx context.Context, id string, body CopyTemplateJSONRequestBody) (*CopyTemplateResponse, error) { + rsp, err := c.CopyTemplate(ctx, id, body) + if err != nil { + return nil, err + } + return ParseCopyTemplateResponse(rsp) +} + +// ListZonesWithResponse request returning *ListZonesResponse +func (c *ClientWithResponses) ListZonesWithResponse(ctx context.Context) (*ListZonesResponse, error) { + rsp, err := c.ListZones(ctx) + if err != nil { + return nil, err + } + return ParseListZonesResponse(rsp) +} + +// ParseListAntiAffinityGroupsResponse parses an HTTP response from a ListAntiAffinityGroupsWithResponse call +func ParseListAntiAffinityGroupsResponse(rsp *http.Response) (*ListAntiAffinityGroupsResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListAntiAffinityGroupsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateAntiAffinityGroupResponse parses an HTTP response from a CreateAntiAffinityGroupWithResponse call +func ParseCreateAntiAffinityGroupResponse(rsp *http.Response) (*CreateAntiAffinityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateAntiAffinityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteAntiAffinityGroupResponse parses an HTTP response from a DeleteAntiAffinityGroupWithResponse call +func ParseDeleteAntiAffinityGroupResponse(rsp *http.Response) (*DeleteAntiAffinityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteAntiAffinityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetAntiAffinityGroupResponse parses an HTTP response from a GetAntiAffinityGroupWithResponse call +func ParseGetAntiAffinityGroupResponse(rsp *http.Response) (*GetAntiAffinityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetAntiAffinityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest AntiAffinityGroup + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetElasticIpResponse parses an HTTP response from a GetElasticIpWithResponse call +func ParseGetElasticIpResponse(rsp *http.Response) (*GetElasticIpResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetElasticIpResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ElasticIp + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListEventsResponse parses an HTTP response from a ListEventsWithResponse call +func ParseListEventsResponse(rsp *http.Response) (*ListEventsResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListEventsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []Event + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateInstanceResponse parses an HTTP response from a CreateInstanceWithResponse call +func ParseCreateInstanceResponse(rsp *http.Response) (*CreateInstanceResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateInstanceResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListInstancePoolsResponse parses an HTTP response from a ListInstancePoolsWithResponse call +func ParseListInstancePoolsResponse(rsp *http.Response) (*ListInstancePoolsResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListInstancePoolsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + InstancePools *[]InstancePool `json:"instance-pools,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateInstancePoolResponse parses an HTTP response from a CreateInstancePoolWithResponse call +func ParseCreateInstancePoolResponse(rsp *http.Response) (*CreateInstancePoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateInstancePoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteInstancePoolResponse parses an HTTP response from a DeleteInstancePoolWithResponse call +func ParseDeleteInstancePoolResponse(rsp *http.Response) (*DeleteInstancePoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteInstancePoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetInstancePoolResponse parses an HTTP response from a GetInstancePoolWithResponse call +func ParseGetInstancePoolResponse(rsp *http.Response) (*GetInstancePoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetInstancePoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest InstancePool + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpdateInstancePoolResponse parses an HTTP response from a UpdateInstancePoolWithResponse call +func ParseUpdateInstancePoolResponse(rsp *http.Response) (*UpdateInstancePoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpdateInstancePoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteInstancePoolFieldResponse parses an HTTP response from a DeleteInstancePoolFieldWithResponse call +func ParseDeleteInstancePoolFieldResponse(rsp *http.Response) (*DeleteInstancePoolFieldResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteInstancePoolFieldResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseEvictInstancePoolMembersResponse parses an HTTP response from a EvictInstancePoolMembersWithResponse call +func ParseEvictInstancePoolMembersResponse(rsp *http.Response) (*EvictInstancePoolMembersResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &EvictInstancePoolMembersResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseScaleInstancePoolResponse parses an HTTP response from a ScaleInstancePoolWithResponse call +func ParseScaleInstancePoolResponse(rsp *http.Response) (*ScaleInstancePoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ScaleInstancePoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListInstanceTypesResponse parses an HTTP response from a ListInstanceTypesWithResponse call +func ParseListInstanceTypesResponse(rsp *http.Response) (*ListInstanceTypesResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListInstanceTypesResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + InstanceTypes *[]InstanceType `json:"instance-types,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetInstanceTypeResponse parses an HTTP response from a GetInstanceTypeWithResponse call +func ParseGetInstanceTypeResponse(rsp *http.Response) (*GetInstanceTypeResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetInstanceTypeResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest InstanceType + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateSnapshotResponse parses an HTTP response from a CreateSnapshotWithResponse call +func ParseCreateSnapshotResponse(rsp *http.Response) (*CreateSnapshotResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateSnapshotResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseRevertInstanceToSnapshotResponse parses an HTTP response from a RevertInstanceToSnapshotWithResponse call +func ParseRevertInstanceToSnapshotResponse(rsp *http.Response) (*RevertInstanceToSnapshotResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &RevertInstanceToSnapshotResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListLoadBalancersResponse parses an HTTP response from a ListLoadBalancersWithResponse call +func ParseListLoadBalancersResponse(rsp *http.Response) (*ListLoadBalancersResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListLoadBalancersResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + LoadBalancers *[]LoadBalancer `json:"load-balancers,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateLoadBalancerResponse parses an HTTP response from a CreateLoadBalancerWithResponse call +func ParseCreateLoadBalancerResponse(rsp *http.Response) (*CreateLoadBalancerResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateLoadBalancerResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteLoadBalancerResponse parses an HTTP response from a DeleteLoadBalancerWithResponse call +func ParseDeleteLoadBalancerResponse(rsp *http.Response) (*DeleteLoadBalancerResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteLoadBalancerResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetLoadBalancerResponse parses an HTTP response from a GetLoadBalancerWithResponse call +func ParseGetLoadBalancerResponse(rsp *http.Response) (*GetLoadBalancerResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetLoadBalancerResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest LoadBalancer + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpdateLoadBalancerResponse parses an HTTP response from a UpdateLoadBalancerWithResponse call +func ParseUpdateLoadBalancerResponse(rsp *http.Response) (*UpdateLoadBalancerResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpdateLoadBalancerResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseAddServiceToLoadBalancerResponse parses an HTTP response from a AddServiceToLoadBalancerWithResponse call +func ParseAddServiceToLoadBalancerResponse(rsp *http.Response) (*AddServiceToLoadBalancerResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &AddServiceToLoadBalancerResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteLoadBalancerServiceResponse parses an HTTP response from a DeleteLoadBalancerServiceWithResponse call +func ParseDeleteLoadBalancerServiceResponse(rsp *http.Response) (*DeleteLoadBalancerServiceResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteLoadBalancerServiceResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetLoadBalancerServiceResponse parses an HTTP response from a GetLoadBalancerServiceWithResponse call +func ParseGetLoadBalancerServiceResponse(rsp *http.Response) (*GetLoadBalancerServiceResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetLoadBalancerServiceResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest LoadBalancerService + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpdateLoadBalancerServiceResponse parses an HTTP response from a UpdateLoadBalancerServiceWithResponse call +func ParseUpdateLoadBalancerServiceResponse(rsp *http.Response) (*UpdateLoadBalancerServiceResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpdateLoadBalancerServiceResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetOperationResponse parses an HTTP response from a GetOperationWithResponse call +func ParseGetOperationResponse(rsp *http.Response) (*GetOperationResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetOperationResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListPrivateNetworksResponse parses an HTTP response from a ListPrivateNetworksWithResponse call +func ParseListPrivateNetworksResponse(rsp *http.Response) (*ListPrivateNetworksResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListPrivateNetworksResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + PrivateNetworks *[]PrivateNetwork `json:"private-networks,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreatePrivateNetworkResponse parses an HTTP response from a CreatePrivateNetworkWithResponse call +func ParseCreatePrivateNetworkResponse(rsp *http.Response) (*CreatePrivateNetworkResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreatePrivateNetworkResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeletePrivateNetworkResponse parses an HTTP response from a DeletePrivateNetworkWithResponse call +func ParseDeletePrivateNetworkResponse(rsp *http.Response) (*DeletePrivateNetworkResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeletePrivateNetworkResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetPrivateNetworkResponse parses an HTTP response from a GetPrivateNetworkWithResponse call +func ParseGetPrivateNetworkResponse(rsp *http.Response) (*GetPrivateNetworkResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetPrivateNetworkResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest PrivateNetwork + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpdatePrivateNetworkResponse parses an HTTP response from a UpdatePrivateNetworkWithResponse call +func ParseUpdatePrivateNetworkResponse(rsp *http.Response) (*UpdatePrivateNetworkResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpdatePrivateNetworkResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeletePrivateNetworkFieldResponse parses an HTTP response from a DeletePrivateNetworkFieldWithResponse call +func ParseDeletePrivateNetworkFieldResponse(rsp *http.Response) (*DeletePrivateNetworkFieldResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeletePrivateNetworkFieldResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListSecurityGroupsResponse parses an HTTP response from a ListSecurityGroupsWithResponse call +func ParseListSecurityGroupsResponse(rsp *http.Response) (*ListSecurityGroupsResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListSecurityGroupsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateSecurityGroupResponse parses an HTTP response from a CreateSecurityGroupWithResponse call +func ParseCreateSecurityGroupResponse(rsp *http.Response) (*CreateSecurityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateSecurityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteSecurityGroupResponse parses an HTTP response from a DeleteSecurityGroupWithResponse call +func ParseDeleteSecurityGroupResponse(rsp *http.Response) (*DeleteSecurityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteSecurityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetSecurityGroupResponse parses an HTTP response from a GetSecurityGroupWithResponse call +func ParseGetSecurityGroupResponse(rsp *http.Response) (*GetSecurityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetSecurityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SecurityGroup + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseAddRuleToSecurityGroupResponse parses an HTTP response from a AddRuleToSecurityGroupWithResponse call +func ParseAddRuleToSecurityGroupResponse(rsp *http.Response) (*AddRuleToSecurityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &AddRuleToSecurityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteRuleFromSecurityGroupResponse parses an HTTP response from a DeleteRuleFromSecurityGroupWithResponse call +func ParseDeleteRuleFromSecurityGroupResponse(rsp *http.Response) (*DeleteRuleFromSecurityGroupResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteRuleFromSecurityGroupResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListSksClustersResponse parses an HTTP response from a ListSksClustersWithResponse call +func ParseListSksClustersResponse(rsp *http.Response) (*ListSksClustersResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListSksClustersResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + SksClusters *[]SksCluster `json:"sks-clusters,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateSksClusterResponse parses an HTTP response from a CreateSksClusterWithResponse call +func ParseCreateSksClusterResponse(rsp *http.Response) (*CreateSksClusterResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateSksClusterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGenerateSksClusterKubeconfigResponse parses an HTTP response from a GenerateSksClusterKubeconfigWithResponse call +func ParseGenerateSksClusterKubeconfigResponse(rsp *http.Response) (*GenerateSksClusterKubeconfigResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GenerateSksClusterKubeconfigResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + Kubeconfig *string `json:"kubeconfig,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListSksClusterVersionsResponse parses an HTTP response from a ListSksClusterVersionsWithResponse call +func ParseListSksClusterVersionsResponse(rsp *http.Response) (*ListSksClusterVersionsResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListSksClusterVersionsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + SksClusterVersions *[]string `json:"sks-cluster-versions,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteSksClusterResponse parses an HTTP response from a DeleteSksClusterWithResponse call +func ParseDeleteSksClusterResponse(rsp *http.Response) (*DeleteSksClusterResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteSksClusterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetSksClusterResponse parses an HTTP response from a GetSksClusterWithResponse call +func ParseGetSksClusterResponse(rsp *http.Response) (*GetSksClusterResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetSksClusterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SksCluster + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpdateSksClusterResponse parses an HTTP response from a UpdateSksClusterWithResponse call +func ParseUpdateSksClusterResponse(rsp *http.Response) (*UpdateSksClusterResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpdateSksClusterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCreateSksNodepoolResponse parses an HTTP response from a CreateSksNodepoolWithResponse call +func ParseCreateSksNodepoolResponse(rsp *http.Response) (*CreateSksNodepoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CreateSksNodepoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteSksNodepoolResponse parses an HTTP response from a DeleteSksNodepoolWithResponse call +func ParseDeleteSksNodepoolResponse(rsp *http.Response) (*DeleteSksNodepoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteSksNodepoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetSksNodepoolResponse parses an HTTP response from a GetSksNodepoolWithResponse call +func ParseGetSksNodepoolResponse(rsp *http.Response) (*GetSksNodepoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetSksNodepoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SksNodepool + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpdateSksNodepoolResponse parses an HTTP response from a UpdateSksNodepoolWithResponse call +func ParseUpdateSksNodepoolResponse(rsp *http.Response) (*UpdateSksNodepoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpdateSksNodepoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteSksNodepoolFieldResponse parses an HTTP response from a DeleteSksNodepoolFieldWithResponse call +func ParseDeleteSksNodepoolFieldResponse(rsp *http.Response) (*DeleteSksNodepoolFieldResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteSksNodepoolFieldResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseEvictSksNodepoolMembersResponse parses an HTTP response from a EvictSksNodepoolMembersWithResponse call +func ParseEvictSksNodepoolMembersResponse(rsp *http.Response) (*EvictSksNodepoolMembersResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &EvictSksNodepoolMembersResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseScaleSksNodepoolResponse parses an HTTP response from a ScaleSksNodepoolWithResponse call +func ParseScaleSksNodepoolResponse(rsp *http.Response) (*ScaleSksNodepoolResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ScaleSksNodepoolResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseUpgradeSksClusterResponse parses an HTTP response from a UpgradeSksClusterWithResponse call +func ParseUpgradeSksClusterResponse(rsp *http.Response) (*UpgradeSksClusterResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &UpgradeSksClusterResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteSksClusterFieldResponse parses an HTTP response from a DeleteSksClusterFieldWithResponse call +func ParseDeleteSksClusterFieldResponse(rsp *http.Response) (*DeleteSksClusterFieldResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteSksClusterFieldResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListSnapshotsResponse parses an HTTP response from a ListSnapshotsWithResponse call +func ParseListSnapshotsResponse(rsp *http.Response) (*ListSnapshotsResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListSnapshotsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + Snapshots *[]Snapshot `json:"snapshots,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteSnapshotResponse parses an HTTP response from a DeleteSnapshotWithResponse call +func ParseDeleteSnapshotResponse(rsp *http.Response) (*DeleteSnapshotResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteSnapshotResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetSnapshotResponse parses an HTTP response from a GetSnapshotWithResponse call +func ParseGetSnapshotResponse(rsp *http.Response) (*GetSnapshotResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetSnapshotResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Snapshot + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseExportSnapshotResponse parses an HTTP response from a ExportSnapshotWithResponse call +func ParseExportSnapshotResponse(rsp *http.Response) (*ExportSnapshotResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ExportSnapshotResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetSosPresignedUrlResponse parses an HTTP response from a GetSosPresignedUrlWithResponse call +func ParseGetSosPresignedUrlResponse(rsp *http.Response) (*GetSosPresignedUrlResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetSosPresignedUrlResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + Url *string `json:"url,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetSshKeyResponse parses an HTTP response from a GetSshKeyWithResponse call +func ParseGetSshKeyResponse(rsp *http.Response) (*GetSshKeyResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetSshKeyResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest SshKey + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListTemplatesResponse parses an HTTP response from a ListTemplatesWithResponse call +func ParseListTemplatesResponse(rsp *http.Response) (*ListTemplatesResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListTemplatesResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + Templates *[]Template `json:"templates,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseRegisterTemplateResponse parses an HTTP response from a RegisterTemplateWithResponse call +func ParseRegisterTemplateResponse(rsp *http.Response) (*RegisterTemplateResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &RegisterTemplateResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseDeleteTemplateResponse parses an HTTP response from a DeleteTemplateWithResponse call +func ParseDeleteTemplateResponse(rsp *http.Response) (*DeleteTemplateResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &DeleteTemplateResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetTemplateResponse parses an HTTP response from a GetTemplateWithResponse call +func ParseGetTemplateResponse(rsp *http.Response) (*GetTemplateResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &GetTemplateResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Template + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseCopyTemplateResponse parses an HTTP response from a CopyTemplateWithResponse call +func ParseCopyTemplateResponse(rsp *http.Response) (*CopyTemplateResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &CopyTemplateResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest Operation + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseListZonesResponse parses an HTTP response from a ListZonesWithResponse call +func ParseListZonesResponse(rsp *http.Response) (*ListZonesResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer rsp.Body.Close() + if err != nil { + return nil, err + } + + response := &ListZonesResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + Zones *[]Zone `json:"zones,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.go new file mode 100644 index 000000000..af308381f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/public-api.go @@ -0,0 +1,24 @@ +// Package publicapi is an internal package containing code generated from the +// Exoscale API OpenAPI specs, as well as helpers and transition types exposed +// in the public-facing package. +package publicapi + +//go:generate oapi-codegen -generate types,client -package publicapi -o public-api.gen.go ../../../public-api.json + +// OptionalString returns the dereferenced string value of v if not nil, otherwise an empty string. +func OptionalString(v *string) string { + if v != nil { + return *v + } + + return "" +} + +// OptionalInt64 returns the dereferenced int64 value of v if not nil, otherwise 0. +func OptionalInt64(v *int64) int64 { + if v != nil { + return *v + } + + return 0 +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/request.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/request.go new file mode 100644 index 000000000..a1b2cfcec --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/request.go @@ -0,0 +1,20 @@ +package publicapi + +import ( + "context" + "net/http" +) + +// MultiRequestsEditor is an oapi-codegen compatible RequestEditorFn function that executes multiple +// RequestEditorFn functions sequentially. +func MultiRequestsEditor(fns ...RequestEditorFn) RequestEditorFn { + return func(ctx context.Context, req *http.Request) error { + for _, fn := range fns { + if err := fn(ctx, req); err != nil { + return err + } + } + + return nil + } +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_cluster.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_cluster.go new file mode 100644 index 000000000..203dfa835 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_cluster.go @@ -0,0 +1,86 @@ +package publicapi + +import ( + "encoding/json" + "time" +) + +// UnmarshalJSON unmarshals a SksCluster structure into a temporary structure whose "CreatedAt" field of type +// string to be able to parse the original timestamp (ISO 8601) into a time.Time object, since json.Unmarshal() +// only supports RFC 3339 format. +func (c *SksCluster) UnmarshalJSON(data []byte) error { + raw := struct { + Addons *[]string `json:"addons,omitempty"` + Cni *string `json:"cni,omitempty"` + CreatedAt *string `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Endpoint *string `json:"endpoint,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + Level *string `json:"level,omitempty"` + Name *string `json:"name,omitempty"` + Nodepools *[]SksNodepool `json:"nodepools,omitempty"` + State *string `json:"state,omitempty"` + Version *string `json:"version,omitempty"` + }{} + + if err := json.Unmarshal(data, &raw); err != nil { + return err + } + + if raw.CreatedAt != nil { + createdAt, err := time.Parse(iso8601Format, *raw.CreatedAt) + if err != nil { + return err + } + c.CreatedAt = &createdAt + } + + c.Addons = raw.Addons + c.Cni = raw.Cni + c.Description = raw.Description + c.Endpoint = raw.Endpoint + c.Id = raw.Id + c.Level = raw.Level + c.Name = raw.Name + c.Nodepools = raw.Nodepools + c.State = raw.State + c.Version = raw.Version + + return nil +} + +// MarshalJSON returns the JSON encoding of a SksCluster structure after having formatted the CreatedAt field +// in the original timestamp (ISO 8601), since time.MarshalJSON() only supports RFC 3339 format. +func (c *SksCluster) MarshalJSON() ([]byte, error) { + raw := struct { + Addons *[]string `json:"addons,omitempty"` + Cni *string `json:"cni,omitempty"` + CreatedAt *string `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + Endpoint *string `json:"endpoint,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + Level *string `json:"level,omitempty"` + Name *string `json:"name,omitempty"` + Nodepools *[]SksNodepool `json:"nodepools,omitempty"` + State *string `json:"state,omitempty"` + Version *string `json:"version,omitempty"` + }{} + + if c.CreatedAt != nil { + createdAt := c.CreatedAt.Format(iso8601Format) + raw.CreatedAt = &createdAt + } + + raw.Addons = c.Addons + raw.Cni = c.Cni + raw.Description = c.Description + raw.Endpoint = c.Endpoint + raw.Id = c.Id + raw.Level = c.Level + raw.Name = c.Name + raw.Nodepools = c.Nodepools + raw.State = c.State + raw.Version = c.Version + + return json.Marshal(raw) +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_nodepool.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_nodepool.go new file mode 100644 index 000000000..ec0d5dd14 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/sks_nodepool.go @@ -0,0 +1,94 @@ +package publicapi + +import ( + "encoding/json" + "time" +) + +// UnmarshalJSON unmarshals a SksNodepool structure into a temporary structure whose "CreatedAt" field of type +// string to be able to parse the original timestamp (ISO 8601) into a time.Time object, since json.Unmarshal() +// only supports RFC 3339 format. +func (n *SksNodepool) UnmarshalJSON(data []byte) error { + raw := struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + CreatedAt *string `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize *int64 `json:"disk-size,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + InstancePool *InstancePool `json:"instance-pool,omitempty"` + InstanceType *InstanceType `json:"instance-type,omitempty"` + Name *string `json:"name,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + Size *int64 `json:"size,omitempty"` + State *string `json:"state,omitempty"` + Template *Template `json:"template,omitempty"` + Version *string `json:"version,omitempty"` + }{} + + if err := json.Unmarshal(data, &raw); err != nil { + return err + } + + if raw.CreatedAt != nil { + createdAt, err := time.Parse(iso8601Format, *raw.CreatedAt) + if err != nil { + return err + } + n.CreatedAt = &createdAt + } + + n.AntiAffinityGroups = raw.AntiAffinityGroups + n.Description = raw.Description + n.DiskSize = raw.DiskSize + n.Id = raw.Id + n.InstancePool = raw.InstancePool + n.InstanceType = raw.InstanceType + n.Name = raw.Name + n.SecurityGroups = raw.SecurityGroups + n.Size = raw.Size + n.State = raw.State + n.Template = raw.Template + n.Version = raw.Version + + return nil +} + +// MarshalJSON returns the JSON encoding of a SksNodepool structure after having formatted the CreatedAt field +// in the original timestamp (ISO 8601), since time.MarshalJSON() only supports RFC 3339 format. +func (n *SksNodepool) MarshalJSON() ([]byte, error) { + raw := struct { + AntiAffinityGroups *[]AntiAffinityGroup `json:"anti-affinity-groups,omitempty"` + CreatedAt *string `json:"created-at,omitempty"` + Description *string `json:"description,omitempty"` + DiskSize *int64 `json:"disk-size,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + InstancePool *InstancePool `json:"instance-pool,omitempty"` + InstanceType *InstanceType `json:"instance-type,omitempty"` + Name *string `json:"name,omitempty"` + SecurityGroups *[]SecurityGroup `json:"security-groups,omitempty"` + Size *int64 `json:"size,omitempty"` + State *string `json:"state,omitempty"` + Template *Template `json:"template,omitempty"` + Version *string `json:"version,omitempty"` + }{} + + if n.CreatedAt != nil { + createdAt := n.CreatedAt.Format(iso8601Format) + raw.CreatedAt = &createdAt + } + + raw.AntiAffinityGroups = n.AntiAffinityGroups + raw.Description = n.Description + raw.DiskSize = n.DiskSize + raw.Id = n.Id + raw.InstancePool = n.InstancePool + raw.InstanceType = n.InstanceType + raw.Name = n.Name + raw.SecurityGroups = n.SecurityGroups + raw.Size = n.Size + raw.State = n.State + raw.Template = n.Template + raw.Version = n.Version + + return json.Marshal(raw) +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/template.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/template.go new file mode 100644 index 000000000..c887e5644 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/template.go @@ -0,0 +1,102 @@ +package publicapi + +import ( + "encoding/json" + "time" +) + +// UnmarshalJSON unmarshals a Template structure into a temporary structure whose "CreatedAt" field of type +// string to be able to parse the original timestamp (ISO 8601) into a time.Time object, since json.Unmarshal() +// only supports RFC 3339 format. +func (t *Template) UnmarshalJSON(data []byte) error { + raw := struct { + CreatedAt *string `json:"created-at,omitempty"` + BootMode *string `json:"boot-mode,omitempty"` + Build *string `json:"build,omitempty"` + Checksum *string `json:"checksum,omitempty"` + DefaultUser *string `json:"default-user,omitempty"` + Description *string `json:"description,omitempty"` + Family *string `json:"family,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + Name *string `json:"name,omitempty"` + PasswordEnabled *bool `json:"password-enabled,omitempty"` + Size *int64 `json:"size,omitempty"` + SshKeyEnabled *bool `json:"ssh-key-enabled,omitempty"` // nolint:golint + Url *string `json:"url,omitempty"` // nolint:golint + Version *string `json:"version,omitempty"` + Visibility *string `json:"visibility,omitempty"` + }{} + + if err := json.Unmarshal(data, &raw); err != nil { + return err + } + + if raw.CreatedAt != nil { + createdAt, err := time.Parse(iso8601Format, *raw.CreatedAt) + if err != nil { + return err + } + t.CreatedAt = &createdAt + } + + t.BootMode = raw.BootMode + t.Build = raw.Build + t.Checksum = raw.Checksum + t.DefaultUser = raw.DefaultUser + t.Description = raw.Description + t.Family = raw.Family + t.Id = raw.Id + t.Name = raw.Name + t.PasswordEnabled = raw.PasswordEnabled + t.Size = raw.Size + t.SshKeyEnabled = raw.SshKeyEnabled + t.Url = raw.Url + t.Version = raw.Version + t.Visibility = raw.Visibility + + return nil +} + +// MarshalJSON returns the JSON encoding of a Template structure after having formatted the CreatedAt field +// in the original timestamp (ISO 8601), since time.MarshalJSON() only supports RFC 3339 format. +func (t *Template) MarshalJSON() ([]byte, error) { + raw := struct { + CreatedAt *string `json:"created-at,omitempty"` + BootMode *string `json:"boot-mode,omitempty"` + Build *string `json:"build,omitempty"` + Checksum *string `json:"checksum,omitempty"` + DefaultUser *string `json:"default-user,omitempty"` + Description *string `json:"description,omitempty"` + Family *string `json:"family,omitempty"` + Id *string `json:"id,omitempty"` // nolint:golint + Name *string `json:"name,omitempty"` + PasswordEnabled *bool `json:"password-enabled,omitempty"` + Size *int64 `json:"size,omitempty"` + SshKeyEnabled *bool `json:"ssh-key-enabled,omitempty"` // nolint:golint + Url *string `json:"url,omitempty"` // nolint:golint + Version *string `json:"version,omitempty"` + Visibility *string `json:"visibility,omitempty"` + }{} + + if t.CreatedAt != nil { + createdAt := t.CreatedAt.Format(iso8601Format) + raw.CreatedAt = &createdAt + } + + raw.BootMode = t.BootMode + raw.Build = t.Build + raw.Checksum = t.Checksum + raw.DefaultUser = t.DefaultUser + raw.Description = t.Description + raw.Family = t.Family + raw.Id = t.Id + raw.Name = t.Name + raw.PasswordEnabled = t.PasswordEnabled + raw.Size = t.Size + raw.SshKeyEnabled = t.SshKeyEnabled + raw.Url = t.Url + raw.Version = t.Version + raw.Visibility = t.Visibility + + return json.Marshal(raw) +} diff --git a/vendor/github.com/exoscale/egoscale/v2/internal/public-api/time.go b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/time.go new file mode 100644 index 000000000..d8440566d --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/internal/public-api/time.go @@ -0,0 +1,3 @@ +package publicapi + +const iso8601Format = "2006-01-02T15:04:05Z" diff --git a/vendor/github.com/exoscale/egoscale/v2/loadbalancer.go b/vendor/github.com/exoscale/egoscale/v2/loadbalancer.go new file mode 100644 index 000000000..9ef29e79f --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/loadbalancer.go @@ -0,0 +1,382 @@ +package v2 + +import ( + "context" + "errors" + "net" + "strings" + "time" + + apiv2 "github.com/exoscale/egoscale/v2/api" + papi "github.com/exoscale/egoscale/v2/internal/public-api" +) + +// NetworkLoadBalancerServerStatus represents a Network Load Balancer service target server status. +type NetworkLoadBalancerServerStatus struct { + InstanceIP net.IP + Status string +} + +func nlbServerStatusFromAPI(st *papi.LoadBalancerServerStatus) *NetworkLoadBalancerServerStatus { + return &NetworkLoadBalancerServerStatus{ + InstanceIP: net.ParseIP(papi.OptionalString(st.PublicIp)), + Status: papi.OptionalString(st.Status), + } +} + +// NetworkLoadBalancerServiceHealthcheck represents a Network Load Balancer service healthcheck. +type NetworkLoadBalancerServiceHealthcheck struct { + Mode string + Port uint16 + Interval time.Duration + Timeout time.Duration + Retries int64 + URI string + TLSSNI string +} + +// NetworkLoadBalancerService represents a Network Load Balancer service. +type NetworkLoadBalancerService struct { + ID string + Name string + Description string + InstancePoolID string + Protocol string + Port uint16 + TargetPort uint16 + Strategy string + Healthcheck NetworkLoadBalancerServiceHealthcheck + State string + HealthcheckStatus []*NetworkLoadBalancerServerStatus +} + +func nlbServiceFromAPI(svc *papi.LoadBalancerService) *NetworkLoadBalancerService { + return &NetworkLoadBalancerService{ + ID: papi.OptionalString(svc.Id), + Name: papi.OptionalString(svc.Name), + Description: papi.OptionalString(svc.Description), + InstancePoolID: papi.OptionalString(svc.InstancePool.Id), + Protocol: papi.OptionalString(svc.Protocol), + Port: uint16(papi.OptionalInt64(svc.Port)), + TargetPort: uint16(papi.OptionalInt64(svc.TargetPort)), + Strategy: papi.OptionalString(svc.Strategy), + Healthcheck: NetworkLoadBalancerServiceHealthcheck{ + Mode: svc.Healthcheck.Mode, + Port: uint16(svc.Healthcheck.Port), + Interval: time.Duration(papi.OptionalInt64(svc.Healthcheck.Interval)) * time.Second, + Timeout: time.Duration(papi.OptionalInt64(svc.Healthcheck.Timeout)) * time.Second, + Retries: papi.OptionalInt64(svc.Healthcheck.Retries), + URI: papi.OptionalString(svc.Healthcheck.Uri), + TLSSNI: papi.OptionalString(svc.Healthcheck.TlsSni), + }, + HealthcheckStatus: func() []*NetworkLoadBalancerServerStatus { + statuses := make([]*NetworkLoadBalancerServerStatus, 0) + + if svc.HealthcheckStatus != nil { + for _, st := range *svc.HealthcheckStatus { + st := st + statuses = append(statuses, nlbServerStatusFromAPI(&st)) + } + } + + return statuses + }(), + State: papi.OptionalString(svc.State), + } +} + +// NetworkLoadBalancer represents a Network Load Balancer instance. +type NetworkLoadBalancer struct { + ID string + Name string + Description string + CreatedAt time.Time + IPAddress net.IP + Services []*NetworkLoadBalancerService + State string + + c *Client + zone string +} + +func nlbFromAPI(nlb *papi.LoadBalancer) *NetworkLoadBalancer { + return &NetworkLoadBalancer{ + ID: papi.OptionalString(nlb.Id), + Name: papi.OptionalString(nlb.Name), + Description: papi.OptionalString(nlb.Description), + CreatedAt: *nlb.CreatedAt, + IPAddress: net.ParseIP(papi.OptionalString(nlb.Ip)), + State: papi.OptionalString(nlb.State), + Services: func() []*NetworkLoadBalancerService { + services := make([]*NetworkLoadBalancerService, 0) + + if nlb.Services != nil { + for _, svc := range *nlb.Services { + svc := svc + services = append(services, nlbServiceFromAPI(&svc)) + } + } + + return services + }(), + } +} + +// AddService adds a service to the Network Load Balancer instance. +func (nlb *NetworkLoadBalancer) AddService(ctx context.Context, + svc *NetworkLoadBalancerService) (*NetworkLoadBalancerService, error) { + var ( + port = int64(svc.Port) + targetPort = int64(svc.TargetPort) + healthcheckPort = int64(svc.Healthcheck.Port) + healthcheckInterval = int64(svc.Healthcheck.Interval.Seconds()) + healthcheckTimeout = int64(svc.Healthcheck.Timeout.Seconds()) + ) + + // The API doesn't return the NLB service created directly, so in order to return a + // *NetworkLoadBalancerService corresponding to the new service we have to manually + // compare the list of services on the NLB instance before and after the service + // creation, and identify the service that wasn't there before. + // Note: in case of multiple services creation in parallel this technique is subject + // to race condition as we could return an unrelated service. To prevent this, we + // also compare the name of the new service to the name specified in the svc + // parameter. + services := make(map[string]struct{}) + for _, svc := range nlb.Services { + services[svc.ID] = struct{}{} + } + + resp, err := nlb.c.AddServiceToLoadBalancerWithResponse( + apiv2.WithZone(ctx, nlb.zone), + nlb.ID, + papi.AddServiceToLoadBalancerJSONRequestBody{ + Name: svc.Name, + Description: &svc.Description, + Healthcheck: papi.Healthcheck{ + Mode: svc.Healthcheck.Mode, + Port: healthcheckPort, + Interval: &healthcheckInterval, + Timeout: &healthcheckTimeout, + Retries: &svc.Healthcheck.Retries, + Uri: func() *string { + if strings.HasPrefix(svc.Healthcheck.Mode, "http") { + return &svc.Healthcheck.URI + } + return nil + }(), + TlsSni: func() *string { + if svc.Healthcheck.Mode == "https" && svc.Healthcheck.TLSSNI != "" { + return &svc.Healthcheck.TLSSNI + } + return nil + }(), + }, + InstancePool: papi.InstancePool{Id: &svc.InstancePoolID}, + Port: port, + TargetPort: targetPort, + Protocol: svc.Protocol, + Strategy: svc.Strategy, + }) + if err != nil { + return nil, err + } + + res, err := papi.NewPoller(). + WithTimeout(nlb.c.timeout). + Poll(ctx, nlb.c.OperationPoller(nlb.zone, *resp.JSON200.Id)) + if err != nil { + return nil, err + } + + nlbUpdated, err := nlb.c.GetNetworkLoadBalancer(ctx, nlb.zone, *res.(*papi.Reference).Id) + if err != nil { + return nil, err + } + + // Look for an unknown service: if we find one we hope it's the one we've just created. + for _, s := range nlbUpdated.Services { + if _, ok := services[svc.ID]; !ok && s.Name == svc.Name { + return s, nil + } + } + + return nil, errors.New("unable to identify the service created") +} + +// UpdateService updates the specified Network Load Balancer service. +func (nlb *NetworkLoadBalancer) UpdateService(ctx context.Context, svc *NetworkLoadBalancerService) error { + var ( + port = int64(svc.Port) + targetPort = int64(svc.TargetPort) + healthcheckPort = int64(svc.Healthcheck.Port) + healthcheckInterval = int64(svc.Healthcheck.Interval.Seconds()) + healthcheckTimeout = int64(svc.Healthcheck.Timeout.Seconds()) + ) + + resp, err := nlb.c.UpdateLoadBalancerServiceWithResponse( + apiv2.WithZone(ctx, nlb.zone), + nlb.ID, + svc.ID, + papi.UpdateLoadBalancerServiceJSONRequestBody{ + Name: &svc.Name, + Description: &svc.Description, + Port: &port, + TargetPort: &targetPort, + Protocol: &svc.Protocol, + Strategy: &svc.Strategy, + Healthcheck: &papi.Healthcheck{ + Mode: svc.Healthcheck.Mode, + Port: healthcheckPort, + Interval: &healthcheckInterval, + Timeout: &healthcheckTimeout, + Retries: &svc.Healthcheck.Retries, + Uri: func() *string { + if strings.HasPrefix(svc.Healthcheck.Mode, "http") { + return &svc.Healthcheck.URI + } + return nil + }(), + TlsSni: func() *string { + if svc.Healthcheck.Mode == "https" && svc.Healthcheck.TLSSNI != "" { + return &svc.Healthcheck.TLSSNI + } + return nil + }(), + }, + }) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(nlb.c.timeout). + Poll(ctx, nlb.c.OperationPoller(nlb.zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// DeleteService deletes the specified service from the Network Load Balancer instance. +func (nlb *NetworkLoadBalancer) DeleteService(ctx context.Context, svc *NetworkLoadBalancerService) error { + resp, err := nlb.c.DeleteLoadBalancerServiceWithResponse( + apiv2.WithZone(ctx, nlb.zone), + nlb.ID, + svc.ID, + ) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(nlb.c.timeout). + Poll(ctx, nlb.c.OperationPoller(nlb.zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// CreateNetworkLoadBalancer creates a Network Load Balancer instance in the specified zone. +func (c *Client) CreateNetworkLoadBalancer(ctx context.Context, zone string, + nlb *NetworkLoadBalancer) (*NetworkLoadBalancer, error) { + resp, err := c.CreateLoadBalancerWithResponse( + apiv2.WithZone(ctx, zone), + papi.CreateLoadBalancerJSONRequestBody{ + Name: nlb.Name, + Description: &nlb.Description, + }) + if err != nil { + return nil, err + } + + res, err := papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return nil, err + } + + return c.GetNetworkLoadBalancer(ctx, zone, *res.(*papi.Reference).Id) +} + +// ListNetworkLoadBalancers returns the list of existing Network Load Balancers in the +// specified zone. +func (c *Client) ListNetworkLoadBalancers(ctx context.Context, zone string) ([]*NetworkLoadBalancer, error) { + list := make([]*NetworkLoadBalancer, 0) + + resp, err := c.ListLoadBalancersWithResponse(apiv2.WithZone(ctx, zone)) + if err != nil { + return nil, err + } + + if resp.JSON200.LoadBalancers != nil { + for i := range *resp.JSON200.LoadBalancers { + nlb := nlbFromAPI(&(*resp.JSON200.LoadBalancers)[i]) + nlb.c = c + nlb.zone = zone + + list = append(list, nlb) + } + } + + return list, nil +} + +// GetNetworkLoadBalancer returns the Network Load Balancer instance corresponding to the +// specified ID in the specified zone. +func (c *Client) GetNetworkLoadBalancer(ctx context.Context, zone, id string) (*NetworkLoadBalancer, error) { + resp, err := c.GetLoadBalancerWithResponse(apiv2.WithZone(ctx, zone), id) + if err != nil { + return nil, err + } + + nlb := nlbFromAPI(resp.JSON200) + nlb.c = c + nlb.zone = zone + + return nlb, nil +} + +// UpdateNetworkLoadBalancer updates the specified Network Load Balancer instance in the specified zone. +func (c *Client) UpdateNetworkLoadBalancer(ctx context.Context, zone string, // nolint:dupl + nlb *NetworkLoadBalancer) (*NetworkLoadBalancer, error) { + resp, err := c.UpdateLoadBalancerWithResponse( + apiv2.WithZone(ctx, zone), + nlb.ID, + papi.UpdateLoadBalancerJSONRequestBody{ + Name: &nlb.Name, + Description: &nlb.Description, + }) + if err != nil { + return nil, err + } + + res, err := papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return nil, err + } + + return c.GetNetworkLoadBalancer(ctx, zone, *res.(*papi.Reference).Id) +} + +// DeleteNetworkLoadBalancer deletes the specified Network Load Balancer instance in the specified zone. +func (c *Client) DeleteNetworkLoadBalancer(ctx context.Context, zone, id string) error { + resp, err := c.DeleteLoadBalancerWithResponse(apiv2.WithZone(ctx, zone), id) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/exoscale/egoscale/v2/sks.go b/vendor/github.com/exoscale/egoscale/v2/sks.go new file mode 100644 index 000000000..fcfc55fe4 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/sks.go @@ -0,0 +1,442 @@ +package v2 + +import ( + "context" + "errors" + "fmt" + "time" + + apiv2 "github.com/exoscale/egoscale/v2/api" + papi "github.com/exoscale/egoscale/v2/internal/public-api" +) + +// SKSNodepool represents a SKS Nodepool. +type SKSNodepool struct { + ID string + Name string + Description string + CreatedAt time.Time + InstancePoolID string + InstanceTypeID string + TemplateID string + DiskSize int64 + AntiAffinityGroupIDs []string + SecurityGroupIDs []string + Version string + Size int64 + State string +} + +func sksNodepoolFromAPI(n *papi.SksNodepool) *SKSNodepool { + return &SKSNodepool{ + ID: papi.OptionalString(n.Id), + Name: papi.OptionalString(n.Name), + Description: papi.OptionalString(n.Description), + CreatedAt: *n.CreatedAt, + InstancePoolID: papi.OptionalString(n.InstancePool.Id), + InstanceTypeID: papi.OptionalString(n.InstanceType.Id), + TemplateID: papi.OptionalString(n.Template.Id), + DiskSize: papi.OptionalInt64(n.DiskSize), + AntiAffinityGroupIDs: func() []string { + aags := make([]string, 0) + + if n.AntiAffinityGroups != nil { + for _, aag := range *n.AntiAffinityGroups { + aag := aag + aags = append(aags, *aag.Id) + } + } + + return aags + }(), + SecurityGroupIDs: func() []string { + sgs := make([]string, 0) + + if n.SecurityGroups != nil { + for _, sg := range *n.SecurityGroups { + sg := sg + sgs = append(sgs, *sg.Id) + } + } + + return sgs + }(), + Version: papi.OptionalString(n.Version), + Size: papi.OptionalInt64(n.Size), + State: papi.OptionalString(n.State), + } +} + +// SKSCluster represents a SKS cluster. +type SKSCluster struct { + ID string + Name string + Description string + CreatedAt time.Time + Endpoint string + Nodepools []*SKSNodepool + Version string + ServiceLevel string + CNI string + AddOns []string + State string + + c *Client + zone string +} + +func sksClusterFromAPI(c *papi.SksCluster) *SKSCluster { + return &SKSCluster{ + ID: papi.OptionalString(c.Id), + Name: papi.OptionalString(c.Name), + Description: papi.OptionalString(c.Description), + CreatedAt: *c.CreatedAt, + Endpoint: papi.OptionalString(c.Endpoint), + Nodepools: func() []*SKSNodepool { + nodepools := make([]*SKSNodepool, 0) + + if c.Nodepools != nil { + for _, n := range *c.Nodepools { + n := n + nodepools = append(nodepools, sksNodepoolFromAPI(&n)) + } + } + + return nodepools + }(), + Version: papi.OptionalString(c.Version), + ServiceLevel: papi.OptionalString(c.Level), + CNI: papi.OptionalString(c.Cni), + AddOns: func() []string { + addOns := make([]string, 0) + if c.Addons != nil { + addOns = append(addOns, *c.Addons...) + } + return addOns + }(), + State: papi.OptionalString(c.State), + } +} + +// RequestKubeconfig returns a base64-encoded kubeconfig content for the specified user name, +// optionally associated to specified groups for a duration d (default API-set TTL applies if not specified). +// Fore more information: https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/ +func (c *SKSCluster) RequestKubeconfig(ctx context.Context, user string, groups []string, + d time.Duration) (string, error) { + if user == "" { + return "", errors.New("user not specified") + } + + resp, err := c.c.GenerateSksClusterKubeconfigWithResponse( + apiv2.WithZone(ctx, c.zone), + c.ID, + papi.GenerateSksClusterKubeconfigJSONRequestBody{ + User: &user, + Groups: &groups, + Ttl: func() *int64 { + ttl := int64(d.Seconds()) + if ttl > 0 { + return &ttl + } + return nil + }(), + }) + if err != nil { + return "", err + } + + return papi.OptionalString(resp.JSON200.Kubeconfig), nil +} + +// AddNodepool adds a Nodepool to the SKS cluster. +func (c *SKSCluster) AddNodepool(ctx context.Context, np *SKSNodepool) (*SKSNodepool, error) { + resp, err := c.c.CreateSksNodepoolWithResponse( + apiv2.WithZone(ctx, c.zone), + c.ID, + papi.CreateSksNodepoolJSONRequestBody{ + Description: &np.Description, + DiskSize: np.DiskSize, + InstanceType: papi.InstanceType{Id: &np.InstanceTypeID}, + Name: np.Name, + AntiAffinityGroups: func() *[]papi.AntiAffinityGroup { + aags := make([]papi.AntiAffinityGroup, len(np.AntiAffinityGroupIDs)) + for i, aagID := range np.AntiAffinityGroupIDs { + aagID := aagID + aags[i] = papi.AntiAffinityGroup{Id: &aagID} + } + return &aags + }(), + SecurityGroups: func() *[]papi.SecurityGroup { + sgs := make([]papi.SecurityGroup, len(np.SecurityGroupIDs)) + for i, sgID := range np.SecurityGroupIDs { + sgID := sgID + sgs[i] = papi.SecurityGroup{Id: &sgID} + } + return &sgs + }(), + Size: np.Size, + }) + if err != nil { + return nil, err + } + + res, err := papi.NewPoller(). + WithTimeout(c.c.timeout). + Poll(ctx, c.c.OperationPoller(c.zone, *resp.JSON200.Id)) + if err != nil { + return nil, err + } + + nodepoolRes, err := c.c.GetSksNodepoolWithResponse(ctx, c.ID, *res.(*papi.Reference).Id) + if err != nil { + return nil, fmt.Errorf("unable to retrieve Nodepool: %s", err) + } + + return sksNodepoolFromAPI(nodepoolRes.JSON200), nil +} + +// UpdateNodepool updates the specified SKS cluster Nodepool. +func (c *SKSCluster) UpdateNodepool(ctx context.Context, np *SKSNodepool) error { + resp, err := c.c.UpdateSksNodepoolWithResponse( + apiv2.WithZone(ctx, c.zone), + c.ID, + np.ID, + papi.UpdateSksNodepoolJSONRequestBody{ + Name: &np.Name, + Description: &np.Description, + InstanceType: &papi.InstanceType{Id: &np.InstanceTypeID}, + DiskSize: &np.DiskSize, + }) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.c.timeout). + Poll(ctx, c.c.OperationPoller(c.zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// ScaleNodepool scales the SKS cluster Nodepool to the specified number of Kubernetes Nodes. +func (c *SKSCluster) ScaleNodepool(ctx context.Context, np *SKSNodepool, nodes int64) error { + resp, err := c.c.ScaleSksNodepoolWithResponse( + apiv2.WithZone(ctx, c.zone), + c.ID, + np.ID, + papi.ScaleSksNodepoolJSONRequestBody{Size: nodes}, + ) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.c.timeout). + Poll(ctx, c.c.OperationPoller(c.zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// EvictNodepoolMembers evicts the specified members (identified by their Compute instance ID) from the +// SKS cluster Nodepool. +func (c *SKSCluster) EvictNodepoolMembers(ctx context.Context, np *SKSNodepool, members []string) error { + resp, err := c.c.EvictSksNodepoolMembersWithResponse( + apiv2.WithZone(ctx, c.zone), + c.ID, + np.ID, + papi.EvictSksNodepoolMembersJSONRequestBody{Instances: &members}, + ) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.c.timeout). + Poll(ctx, c.c.OperationPoller(c.zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// DeleteNodepool deletes the specified Nodepool from the SKS cluster. +func (c *SKSCluster) DeleteNodepool(ctx context.Context, np *SKSNodepool) error { + resp, err := c.c.DeleteSksNodepoolWithResponse( + apiv2.WithZone(ctx, c.zone), + c.ID, + np.ID, + ) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.c.timeout). + Poll(ctx, c.c.OperationPoller(c.zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// CreateSKSCluster creates a SKS cluster in the specified zone. +func (c *Client) CreateSKSCluster(ctx context.Context, zone string, cluster *SKSCluster) (*SKSCluster, error) { + resp, err := c.CreateSksClusterWithResponse( + apiv2.WithZone(ctx, zone), + papi.CreateSksClusterJSONRequestBody{ + Name: cluster.Name, + Description: &cluster.Description, + Version: cluster.Version, + Level: cluster.ServiceLevel, + Cni: func() *string { + var cni *string + if cluster.CNI != "" { + cni = &cluster.CNI + } + return cni + }(), + Addons: func() *[]string { + var addOns *[]string + if len(cluster.AddOns) > 0 { + addOns = &cluster.AddOns + } + return addOns + }(), + }) + if err != nil { + return nil, err + } + + res, err := papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return nil, err + } + + return c.GetSKSCluster(ctx, zone, *res.(*papi.Reference).Id) +} + +// ListSKSClusters returns the list of existing SKS clusters in the specified zone. +func (c *Client) ListSKSClusters(ctx context.Context, zone string) ([]*SKSCluster, error) { + list := make([]*SKSCluster, 0) + + resp, err := c.ListSksClustersWithResponse(apiv2.WithZone(ctx, zone)) + if err != nil { + return nil, err + } + + if resp.JSON200.SksClusters != nil { + for i := range *resp.JSON200.SksClusters { + cluster := sksClusterFromAPI(&(*resp.JSON200.SksClusters)[i]) + cluster.c = c + cluster.zone = zone + + list = append(list, cluster) + } + } + + return list, nil +} + +// ListSKSClusterVersions returns the list of Kubernetes versions supported during SKS cluster creation. +func (c *Client) ListSKSClusterVersions(ctx context.Context) ([]string, error) { + list := make([]string, 0) + + resp, err := c.ListSksClusterVersionsWithResponse(ctx) + if err != nil { + return nil, err + } + + if resp.JSON200.SksClusterVersions != nil { + for i := range *resp.JSON200.SksClusterVersions { + version := &(*resp.JSON200.SksClusterVersions)[i] + list = append(list, *version) + } + } + + return list, nil +} + +// GetSKSCluster returns the SKS cluster corresponding to the specified ID in the specified zone. +func (c *Client) GetSKSCluster(ctx context.Context, zone, id string) (*SKSCluster, error) { + resp, err := c.GetSksClusterWithResponse(apiv2.WithZone(ctx, zone), id) + if err != nil { + return nil, err + } + + cluster := sksClusterFromAPI(resp.JSON200) + cluster.c = c + cluster.zone = zone + + return cluster, nil +} + +// UpdateSKSCluster updates the specified SKS cluster in the specified zone. +func (c *Client) UpdateSKSCluster(ctx context.Context, zone string, cluster *SKSCluster) error { + resp, err := c.UpdateSksClusterWithResponse( + apiv2.WithZone(ctx, zone), + cluster.ID, + papi.UpdateSksClusterJSONRequestBody{ + Name: &cluster.Name, + Description: &cluster.Description, + }) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// UpgradeSKSCluster upgrades the SKS cluster corresponding to the specified ID in the specified zone to the +// requested Kubernetes version. +func (c *Client) UpgradeSKSCluster(ctx context.Context, zone, id, version string) error { + resp, err := c.UpgradeSksClusterWithResponse( + apiv2.WithZone(ctx, zone), + id, + papi.UpgradeSksClusterJSONRequestBody{Version: version}) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} + +// DeleteSKSCluster deletes the specified SKS cluster in the specified zone. +func (c *Client) DeleteSKSCluster(ctx context.Context, zone, id string) error { + resp, err := c.DeleteSksClusterWithResponse(apiv2.WithZone(ctx, zone), id) + if err != nil { + return err + } + + _, err = papi.NewPoller(). + WithTimeout(c.timeout). + Poll(ctx, c.OperationPoller(zone, *resp.JSON200.Id)) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/exoscale/egoscale/v2/test.go b/vendor/github.com/exoscale/egoscale/v2/test.go new file mode 100644 index 000000000..543f0ec3e --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/test.go @@ -0,0 +1,3 @@ +package v2 + +var testZone = "ch-gva-2" diff --git a/vendor/github.com/exoscale/egoscale/v2/v2.go b/vendor/github.com/exoscale/egoscale/v2/v2.go new file mode 100644 index 000000000..0472584bf --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/v2.go @@ -0,0 +1,3 @@ +// Package v2 is the new Exoscale client API binding. +// Reference: https://openapi-v2.exoscale.com/ +package v2 diff --git a/vendor/github.com/exoscale/egoscale/v2/zone.go b/vendor/github.com/exoscale/egoscale/v2/zone.go new file mode 100644 index 000000000..2c5ed70f6 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/v2/zone.go @@ -0,0 +1,24 @@ +package v2 + +import ( + "context" +) + +// ListZones returns the list of Exoscale zones. +func (c *Client) ListZones(ctx context.Context) ([]string, error) { + list := make([]string, 0) + + resp, err := c.ListZonesWithResponse(ctx) + if err != nil { + return nil, err + } + + if resp.JSON200.Zones != nil { + for i := range *resp.JSON200.Zones { + zone := &(*resp.JSON200.Zones)[i] + list = append(list, *zone.Name) + } + } + + return list, nil +} diff --git a/vendor/github.com/exoscale/egoscale/version.go b/vendor/github.com/exoscale/egoscale/version.go new file mode 100644 index 000000000..4bb4e923e --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/version.go @@ -0,0 +1,4 @@ +package egoscale + +// Version of the library +const Version = "0.43.1" diff --git a/vendor/github.com/exoscale/egoscale/virtual_machines.go b/vendor/github.com/exoscale/egoscale/virtual_machines.go new file mode 100644 index 000000000..baf95adde --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/virtual_machines.go @@ -0,0 +1,632 @@ +package egoscale + +import ( + "bytes" + "compress/gzip" + "context" + "encoding/base64" + "fmt" + "io/ioutil" + "net" + "net/url" +) + +// VirtualMachineState holds the state of the instance +// +// https://github.com/apache/cloudstack/blob/master/api/src/main/java/com/cloud/vm/VirtualMachine.java +type VirtualMachineState string + +const ( + // VirtualMachineStarting VM is being started. At this state, you should find host id filled which means it's being started on that host + VirtualMachineStarting VirtualMachineState = "Starting" + // VirtualMachineRunning VM is running. host id has the host that it is running on + VirtualMachineRunning VirtualMachineState = "Running" + // VirtualMachineStopping VM is being stopped. host id has the host that it is being stopped on + VirtualMachineStopping VirtualMachineState = "Stopping" + // VirtualMachineStopped VM is stopped. host id should be null + VirtualMachineStopped VirtualMachineState = "Stopped" + // VirtualMachineDestroyed VM is marked for destroy + VirtualMachineDestroyed VirtualMachineState = "Destroyed" + // VirtualMachineExpunging "VM is being expunged + VirtualMachineExpunging VirtualMachineState = "Expunging" + // VirtualMachineMigrating VM is being live migrated. host id holds destination host, last host id holds source host + VirtualMachineMigrating VirtualMachineState = "Migrating" + // VirtualMachineMoving VM is being migrated offline (volume is being moved). + VirtualMachineMoving VirtualMachineState = "Moving" + // VirtualMachineError VM is in error + VirtualMachineError VirtualMachineState = "Error" + // VirtualMachineUnknown VM state is unknown + VirtualMachineUnknown VirtualMachineState = "Unknown" + // VirtualMachineShutdowned VM is shutdowned from inside + VirtualMachineShutdowned VirtualMachineState = "Shutdowned" +) + +// VirtualMachine represents a virtual machine +// +// See: http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/stable/virtual_machines.html +type VirtualMachine struct { + Account string `json:"account,omitempty" doc:"the account associated with the virtual machine"` + AccountID *UUID `json:"accountid,omitempty" doc:"the account ID associated with the virtual machine"` + AffinityGroup []AffinityGroup `json:"affinitygroup,omitempty" doc:"list of affinity groups associated with the virtual machine"` + ClusterID *UUID `json:"clusterid,omitempty" doc:"the ID of the vm's cluster"` + ClusterName string `json:"clustername,omitempty" doc:"the name of the vm's cluster"` + CPUNumber int `json:"cpunumber,omitempty" doc:"the number of cpu this virtual machine is running with"` + CPUSpeed int `json:"cpuspeed,omitempty" doc:"the speed of each cpu"` + CPUUsed string `json:"cpuused,omitempty" doc:"the amount of the vm's CPU currently used"` + Created string `json:"created,omitempty" doc:"the date when this virtual machine was created"` + Details map[string]string `json:"details,omitempty" doc:"Vm details in key/value pairs."` + DiskIoRead int64 `json:"diskioread,omitempty" doc:"the read (io) of disk on the vm"` + DiskIoWrite int64 `json:"diskiowrite,omitempty" doc:"the write (io) of disk on the vm"` + DiskKbsRead int64 `json:"diskkbsread,omitempty" doc:"the read (bytes) of disk on the vm"` + DiskKbsWrite int64 `json:"diskkbswrite,omitempty" doc:"the write (bytes) of disk on the vm"` + DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"the ID of the disk offering of the virtual machine"` + DiskOfferingName string `json:"diskofferingname,omitempty" doc:"the name of the disk offering of the virtual machine"` + DisplayName string `json:"displayname,omitempty" doc:"user generated name. The name of the virtual machine is returned if no displayname exists."` + ForVirtualNetwork bool `json:"forvirtualnetwork,omitempty" doc:"the virtual network for the service offering"` + Group string `json:"group,omitempty" doc:"the group name of the virtual machine"` + GroupID *UUID `json:"groupid,omitempty" doc:"the group ID of the virtual machine"` + HAEnable bool `json:"haenable,omitempty" doc:"true if high-availability is enabled, false otherwise"` + HostName string `json:"hostname,omitempty" doc:"the name of the host for the virtual machine"` + ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` + InstanceName string `json:"instancename,omitempty" doc:"instance name of the user vm; this parameter is returned to the ROOT admin only"` + IsoDisplayText string `json:"isodisplaytext,omitempty" doc:"an alternate display text of the ISO attached to the virtual machine"` + IsoID *UUID `json:"isoid,omitempty" doc:"the ID of the ISO attached to the virtual machine"` + IsoName string `json:"isoname,omitempty" doc:"the name of the ISO attached to the virtual machine"` + KeyPair string `json:"keypair,omitempty" doc:"ssh key-pair"` + Manager string `json:"manager,omitempty" doc:"type of virtual machine manager"` + ManagerID *UUID `json:"managerid,omitempty" doc:"ID of the virtual machine manager"` + Memory int `json:"memory,omitempty" doc:"the memory allocated for the virtual machine"` + Name string `json:"name,omitempty" doc:"the name of the virtual machine"` + NetworkKbsRead int64 `json:"networkkbsread,omitempty" doc:"the incoming network traffic on the vm"` + NetworkKbsWrite int64 `json:"networkkbswrite,omitempty" doc:"the outgoing network traffic on the host"` + Nic []Nic `json:"nic,omitempty" doc:"the list of nics associated with vm"` + OSCategoryID *UUID `json:"oscategoryid,omitempty" doc:"Os category ID of the virtual machine"` + OSCategoryName string `json:"oscategoryname,omitempty" doc:"Os category name of the virtual machine"` + OSTypeID *UUID `json:"ostypeid,omitempty" doc:"OS type id of the vm"` + Password string `json:"password,omitempty" doc:"the password (if exists) of the virtual machine"` + PasswordEnabled bool `json:"passwordenabled,omitempty" doc:"true if the password rest feature is enabled, false otherwise"` + PCIDevices []PCIDevice `json:"pcidevices,omitempty" doc:"list of PCI devices"` + PodID *UUID `json:"podid,omitempty" doc:"the ID of the vm's pod"` + PodName string `json:"podname,omitempty" doc:"the name of the vm's pod"` + PublicIP string `json:"publicip,omitempty" doc:"public IP address id associated with vm via Static nat rule"` + PublicIPID *UUID `json:"publicipid,omitempty" doc:"public IP address id associated with vm via Static nat rule"` + RootDeviceID int64 `json:"rootdeviceid,omitempty" doc:"device ID of the root volume"` + RootDeviceType string `json:"rootdevicetype,omitempty" doc:"device type of the root volume"` + SecurityGroup []SecurityGroup `json:"securitygroup,omitempty" doc:"list of security groups associated with the virtual machine"` + ServiceOfferingID *UUID `json:"serviceofferingid,omitempty" doc:"the ID of the service offering of the virtual machine"` + ServiceOfferingName string `json:"serviceofferingname,omitempty" doc:"the name of the service offering of the virtual machine"` + ServiceState string `json:"servicestate,omitempty" doc:"State of the Service from LB rule"` + State string `json:"state,omitempty" doc:"the state of the virtual machine"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with vm"` + TemplateDisplayText string `json:"templatedisplaytext,omitempty" doc:"an alternate display text of the template for the virtual machine"` + TemplateID *UUID `json:"templateid,omitempty" doc:"the ID of the template for the virtual machine. A -1 is returned if the virtual machine was created from an ISO file."` + TemplateName string `json:"templatename,omitempty" doc:"the name of the template for the virtual machine"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"the ID of the availablility zone for the virtual machine"` + ZoneName string `json:"zonename,omitempty" doc:"the name of the availability zone for the virtual machine"` +} + +// ResourceType returns the type of the resource +func (VirtualMachine) ResourceType() string { + return "UserVM" +} + +// Delete destroys the VM +func (vm VirtualMachine) Delete(ctx context.Context, client *Client) error { + _, err := client.RequestWithContext(ctx, &DestroyVirtualMachine{ + ID: vm.ID, + }) + + return err +} + +// ListRequest builds the ListVirtualMachines request +func (vm VirtualMachine) ListRequest() (ListCommand, error) { + // XXX: AffinityGroupID, SecurityGroupID + + req := &ListVirtualMachines{ + GroupID: vm.GroupID, + ID: vm.ID, + ManagerID: vm.ManagerID, + Name: vm.Name, + State: vm.State, + TemplateID: vm.TemplateID, + ZoneID: vm.ZoneID, + } + + nic := vm.DefaultNic() + if nic != nil { + req.IPAddress = nic.IPAddress + } + + for i := range vm.Tags { + req.Tags = append(req.Tags, vm.Tags[i]) + } + + return req, nil +} + +// DefaultNic returns the default nic +func (vm VirtualMachine) DefaultNic() *Nic { + for i, nic := range vm.Nic { + if nic.IsDefault { + return &vm.Nic[i] + } + } + + return nil +} + +// IP returns the default nic IP address +func (vm VirtualMachine) IP() *net.IP { + nic := vm.DefaultNic() + if nic != nil { + ip := nic.IPAddress + return &ip + } + + return nil +} + +// NicsByType returns the corresponding interfaces base on the given type +func (vm VirtualMachine) NicsByType(nicType string) []Nic { + nics := make([]Nic, 0) + for _, nic := range vm.Nic { + if nic.Type == nicType { + // XXX The API forgets to specify it + n := nic + n.VirtualMachineID = vm.ID + nics = append(nics, n) + } + } + return nics +} + +// NicByNetworkID returns the corresponding interface based on the given NetworkID +// +// A VM cannot be connected twice to a same network. +func (vm VirtualMachine) NicByNetworkID(networkID UUID) *Nic { + for _, nic := range vm.Nic { + if nic.NetworkID.Equal(networkID) { + n := nic + n.VirtualMachineID = vm.ID + return &n + } + } + return nil +} + +// NicByID returns the corresponding interface base on its ID +func (vm VirtualMachine) NicByID(nicID UUID) *Nic { + for _, nic := range vm.Nic { + if nic.ID.Equal(nicID) { + n := nic + n.VirtualMachineID = vm.ID + return &n + } + } + + return nil +} + +// IPToNetwork represents a mapping between ip and networks +type IPToNetwork struct { + IP net.IP `json:"ip,omitempty"` + Ipv6 net.IP `json:"ipv6,omitempty"` + NetworkID *UUID `json:"networkid,omitempty"` +} + +// PCIDevice represents a PCI card present in the host +type PCIDevice struct { + PCIVendorName string `json:"pcivendorname,omitempty" doc:"Device vendor name of pci card"` + DeviceID string `json:"deviceid,omitempty" doc:"Device model ID of pci card"` + RemainingCapacity int `json:"remainingcapacity,omitempty" doc:"Remaining capacity in terms of no. of more VMs that can be deployped with this vGPU type"` + MaxCapacity int `json:"maxcapacity,omitempty" doc:"Maximum vgpu can be created with this vgpu type on the given pci group"` + PCIVendorID string `json:"pcivendorid,omitempty" doc:"Device vendor ID of pci card"` + PCIDeviceName string `json:"pcidevicename,omitempty" doc:"Device model name of pci card"` +} + +// Password represents an encrypted password +type Password struct { + EncryptedPassword string `json:"encryptedpassword"` +} + +// VirtualMachineUserData represents the base64 encoded user-data +type VirtualMachineUserData struct { + UserData string `json:"userdata" doc:"Base 64 encoded VM user data"` + VirtualMachineID *UUID `json:"virtualmachineid" doc:"the ID of the virtual machine"` +} + +// Decode decodes as a readable string the content of the user-data (base64 · gzip) +func (userdata VirtualMachineUserData) Decode() (string, error) { + data, err := base64.StdEncoding.DecodeString(userdata.UserData) + if err != nil { + return "", err + } + // 0x1f8b is the magic number for gzip + if len(data) < 2 || data[0] != 0x1f || data[1] != 0x8b { + return string(data), nil + } + gr, err := gzip.NewReader(bytes.NewBuffer(data)) + if err != nil { + return "", err + } + defer gr.Close() // nolint: errcheck + + str, err := ioutil.ReadAll(gr) + if err != nil { + return "", err + } + return string(str), nil +} + +// DeployVirtualMachine (Async) represents the machine creation +// +// Regarding the UserData field, the client is responsible to base64 (and probably gzip) it. Doing it within this library would make the integration with other tools, e.g. Terraform harder. +type DeployVirtualMachine struct { + AffinityGroupIDs []UUID `json:"affinitygroupids,omitempty" doc:"comma separated list of affinity groups id that are going to be applied to the virtual machine. Mutually exclusive with affinitygroupnames parameter"` + AffinityGroupNames []string `json:"affinitygroupnames,omitempty" doc:"comma separated list of affinity groups names that are going to be applied to the virtual machine.Mutually exclusive with affinitygroupids parameter"` + Details map[string]string `json:"details,omitempty" doc:"used to specify the custom parameters."` + DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"the ID of the disk offering for the virtual machine. If the template is of ISO format, the diskofferingid is for the root disk volume. Otherwise this parameter is used to indicate the offering for the data disk volume. If the templateid parameter passed is from a Template object, the diskofferingid refers to a DATA Disk Volume created. If the templateid parameter passed is from an ISO object, the diskofferingid refers to a ROOT Disk Volume created."` + DisplayName string `json:"displayname,omitempty" doc:"an optional user generated name for the virtual machine"` + Group string `json:"group,omitempty" doc:"an optional group for the virtual machine"` + IP4 *bool `json:"ip4,omitempty" doc:"True to set an IPv4 to the default interface"` + IP6 *bool `json:"ip6,omitempty" doc:"True to set an IPv6 to the default interface"` + IP6Address net.IP `json:"ip6address,omitempty" doc:"the ipv6 address for default vm's network"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"the ip address for default vm's network"` + Keyboard string `json:"keyboard,omitempty" doc:"an optional keyboard device type for the virtual machine. valid value can be one of de,de-ch,es,fi,fr,fr-be,fr-ch,is,it,jp,nl-be,no,pt,uk,us"` + KeyPair string `json:"keypair,omitempty" doc:"name of the ssh key pair used to login to the virtual machine"` + Name string `json:"name,omitempty" doc:"host name for the virtual machine"` + NetworkIDs []UUID `json:"networkids,omitempty" doc:"list of network ids used by virtual machine. Can't be specified with ipToNetworkList parameter"` + RootDiskSize int64 `json:"rootdisksize,omitempty" doc:"Optional field to resize root disk on deploy. Value is in GB. Only applies to template-based deployments. Analogous to details[0].rootdisksize, which takes precedence over this parameter if both are provided"` + SecurityGroupIDs []UUID `json:"securitygroupids,omitempty" doc:"comma separated list of security groups id that going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupnames parameter"` + SecurityGroupNames []string `json:"securitygroupnames,omitempty" doc:"comma separated list of security groups names that going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupids parameter"` + ServiceOfferingID *UUID `json:"serviceofferingid" doc:"the ID of the service offering for the virtual machine"` + Size int64 `json:"size,omitempty" doc:"the arbitrary size for the DATADISK volume. Mutually exclusive with diskofferingid"` + StartVM *bool `json:"startvm,omitempty" doc:"true if start vm after creating. Default value is true"` + TemplateID *UUID `json:"templateid" doc:"the ID of the template for the virtual machine"` + UserData string `json:"userdata,omitempty" doc:"an optional binary data that can be sent to the virtual machine upon a successful deployment. This binary data must be base64 encoded before adding it to the request. Using HTTP GET (via querystring), you can send up to 2KB of data after base64 encoding. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding."` + ZoneID *UUID `json:"zoneid" doc:"availability zone for the virtual machine"` + _ bool `name:"deployVirtualMachine" description:"Creates and automatically starts a virtual machine based on a service offering, disk offering, and template."` +} + +func (req DeployVirtualMachine) onBeforeSend(_ url.Values) error { + // Either AffinityGroupIDs or AffinityGroupNames must be set + if len(req.AffinityGroupIDs) > 0 && len(req.AffinityGroupNames) > 0 { + return fmt.Errorf("either AffinityGroupIDs or AffinityGroupNames must be set") + } + + // Either SecurityGroupIDs or SecurityGroupNames must be set + if len(req.SecurityGroupIDs) > 0 && len(req.SecurityGroupNames) > 0 { + return fmt.Errorf("either SecurityGroupIDs or SecurityGroupNames must be set") + } + + return nil +} + +// Response returns the struct to unmarshal +func (DeployVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DeployVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// StartVirtualMachine (Async) represents the creation of the virtual machine +type StartVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + RescueProfile string `json:"rescueprofile,omitempty" doc:"An optional rescue profile to use when booting"` + _ bool `name:"startVirtualMachine" description:"Starts a virtual machine."` +} + +// Response returns the struct to unmarshal +func (StartVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (StartVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// StopVirtualMachine (Async) represents the stopping of the virtual machine +type StopVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + Forced *bool `json:"forced,omitempty" doc:"Force stop the VM (vm is marked as Stopped even when command fails to be send to the backend). The caller knows the VM is stopped."` + _ bool `name:"stopVirtualMachine" description:"Stops a virtual machine."` +} + +// Response returns the struct to unmarshal +func (StopVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (StopVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// RebootVirtualMachine (Async) represents the rebooting of the virtual machine +type RebootVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + _ bool `name:"rebootVirtualMachine" description:"Reboots a virtual machine."` +} + +// Response returns the struct to unmarshal +func (RebootVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RebootVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// RestoreVirtualMachine (Async) represents the restoration of the virtual machine +type RestoreVirtualMachine struct { + VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` + TemplateID *UUID `json:"templateid,omitempty" doc:"an optional template Id to restore vm from the new template. This can be an ISO id in case of restore vm deployed using ISO"` + RootDiskSize int64 `json:"rootdisksize,omitempty" doc:"Optional field to resize root disk on restore. Value is in GB. Only applies to template-based deployments."` + _ bool `name:"restoreVirtualMachine" description:"Restore a VM to original template/ISO or new template/ISO"` +} + +// Response returns the struct to unmarshal +func (RestoreVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RestoreVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// RecoverVirtualMachine represents the restoration of the virtual machine +type RecoverVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + _ bool `name:"recoverVirtualMachine" description:"Recovers a virtual machine."` +} + +// Response returns the struct to unmarshal +func (RecoverVirtualMachine) Response() interface{} { + return new(VirtualMachine) +} + +// DestroyVirtualMachine (Async) represents the destruction of the virtual machine +type DestroyVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + _ bool `name:"destroyVirtualMachine" description:"Destroys a virtual machine."` +} + +// Response returns the struct to unmarshal +func (DestroyVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (DestroyVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// UpdateVirtualMachine represents the update of the virtual machine +type UpdateVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + Details map[string]string `json:"details,omitempty" doc:"Details in key/value pairs."` + DisplayName string `json:"displayname,omitempty" doc:"user generated name"` + Group string `json:"group,omitempty" doc:"group of the virtual machine"` + Name string `json:"name,omitempty" doc:"new host name of the vm. The VM has to be stopped/started for this update to take affect"` + SecurityGroupIDs []UUID `json:"securitygroupids,omitempty" doc:"list of security group ids to be applied on the virtual machine."` + UserData string `json:"userdata,omitempty" doc:"an optional binary data that can be sent to the virtual machine upon a successful deployment. This binary data must be base64 encoded before adding it to the request. Using HTTP GET (via querystring), you can send up to 2KB of data after base64 encoding. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding."` + _ bool `name:"updateVirtualMachine" description:"Updates properties of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect. UpdateVirtualMachine does not first check whether the VM is stopped. Therefore, stop the VM manually before issuing this call."` +} + +// Response returns the struct to unmarshal +func (UpdateVirtualMachine) Response() interface{} { + return new(VirtualMachine) +} + +// UpdateVirtualMachineSecurityGroups represents the update of the virtual machine security group membership +type UpdateVirtualMachineSecurityGroups struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + SecurityGroupIDs []UUID `json:"securitygroupids,omitempty" doc:"list of security group ids to be applied on the virtual machine."` + _ bool `name:"updateVirtualMachineSecurityGroups" description:"Updates a virtual machine Security Group membership'."` +} + +// Response returns the struct to unmarshal +func (UpdateVirtualMachineSecurityGroups) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (UpdateVirtualMachineSecurityGroups) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// ExpungeVirtualMachine represents the annihilation of a VM +type ExpungeVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + _ bool `name:"expungeVirtualMachine" description:"Expunge a virtual machine. Once expunged, it cannot be recoverd."` +} + +// Response returns the struct to unmarshal +func (ExpungeVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ExpungeVirtualMachine) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// ScaleVirtualMachine (Async) scales the virtual machine to a new service offering. +// +// ChangeServiceForVirtualMachine does the same thing but returns the +// new Virtual Machine which is more consistent with the rest of the API. +type ScaleVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + ServiceOfferingID *UUID `json:"serviceofferingid" doc:"the ID of the service offering for the virtual machine"` + Details map[string]string `json:"details,omitempty" doc:"name value pairs of custom parameters for cpu,memory and cpunumber. example details[i].name=value"` + _ bool `name:"scaleVirtualMachine" description:"Scales the virtual machine to a new service offering."` +} + +// Response returns the struct to unmarshal +func (ScaleVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ScaleVirtualMachine) AsyncResponse() interface{} { + return new(BooleanResponse) +} + +// ChangeServiceForVirtualMachine changes the service offering for a virtual machine. The virtual machine must be in a "Stopped" state for this command to take effect. +type ChangeServiceForVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + ServiceOfferingID *UUID `json:"serviceofferingid" doc:"the service offering ID to apply to the virtual machine"` + Details map[string]string `json:"details,omitempty" doc:"name value pairs of custom parameters for cpu, memory and cpunumber. example details[i].name=value"` + _ bool `name:"changeServiceForVirtualMachine" description:"Changes the service offering for a virtual machine. The virtual machine must be in a \"Stopped\" state for this command to take effect."` +} + +// Response returns the struct to unmarshal +func (ChangeServiceForVirtualMachine) Response() interface{} { + return new(VirtualMachine) +} + +// ResetPasswordForVirtualMachine resets the password for virtual machine. The virtual machine must be in a "Stopped" state... +type ResetPasswordForVirtualMachine struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + _ bool `name:"resetPasswordForVirtualMachine" description:"Resets the password for virtual machine. The virtual machine must be in a \"Stopped\" state and the template must already support this feature for this command to take effect."` +} + +// Response returns the struct to unmarshal +func (ResetPasswordForVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ResetPasswordForVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// GetVMPassword asks for an encrypted password +type GetVMPassword struct { + ID *UUID `json:"id" doc:"The ID of the virtual machine"` + _ bool `name:"getVMPassword" description:"Returns an encrypted password for the VM"` +} + +// Response returns the struct to unmarshal +func (GetVMPassword) Response() interface{} { + return new(Password) +} + +//go:generate go run generate/main.go -interface=Listable ListVirtualMachines + +// ListVirtualMachines represents a search for a VM +type ListVirtualMachines struct { + AffinityGroupID *UUID `json:"affinitygroupid,omitempty" doc:"list vms by affinity group"` + Details []string `json:"details,omitempty" doc:"comma separated list of host details requested, value can be a list of [all, group, nics, stats, secgrp, tmpl, servoff, diskoff, iso, volume, min, affgrp]. If no parameter is passed in, the details will be defaulted to all"` + ForVirtualNetwork *bool `json:"forvirtualnetwork,omitempty" doc:"list by network type; true if need to list vms using Virtual Network, false otherwise"` + GroupID *UUID `json:"groupid,omitempty" doc:"the group ID"` + ID *UUID `json:"id,omitempty" doc:"the ID of the virtual machine"` + IDs []UUID `json:"ids,omitempty" doc:"the IDs of the virtual machines, mutually exclusive with id"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"an IP address to filter the result"` + IsoID *UUID `json:"isoid,omitempty" doc:"list vms by iso"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + ManagerID *UUID `json:"managerid,omitempty" doc:"list by manager id"` + Name string `json:"name,omitempty" doc:"name of the virtual machine"` + NetworkID *UUID `json:"networkid,omitempty" doc:"list by network id"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ServiceOfferindID *UUID `json:"serviceofferingid,omitempty" doc:"list by the service offering"` + State string `json:"state,omitempty" doc:"state of the virtual machine"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + TemplateID *UUID `json:"templateid,omitempty" doc:"list vms by template"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"the availability zone ID"` + _ bool `name:"listVirtualMachines" description:"List the virtual machines owned by the account."` +} + +// ListVirtualMachinesResponse represents a list of virtual machines +type ListVirtualMachinesResponse struct { + Count int `json:"count"` + VirtualMachine []VirtualMachine `json:"virtualmachine"` +} + +// AddNicToVirtualMachine (Async) adds a NIC to a VM +type AddNicToVirtualMachine struct { + NetworkID *UUID `json:"networkid" doc:"Network ID"` + VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"Static IP address lease for the corresponding NIC and network which should be in the range defined in the network"` + _ bool `name:"addNicToVirtualMachine" description:"Adds VM to specified network by creating a NIC"` +} + +// Response returns the struct to unmarshal +func (AddNicToVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (AddNicToVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// RemoveNicFromVirtualMachine (Async) removes a NIC from a VM +type RemoveNicFromVirtualMachine struct { + NicID *UUID `json:"nicid" doc:"NIC ID"` + VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` + _ bool `name:"removeNicFromVirtualMachine" description:"Removes VM from specified network by deleting a NIC"` +} + +// Response returns the struct to unmarshal +func (RemoveNicFromVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (RemoveNicFromVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// UpdateDefaultNicForVirtualMachine (Async) adds a NIC to a VM +type UpdateDefaultNicForVirtualMachine struct { + NicID *UUID `json:"nicid" doc:"NIC ID"` + VirtualMachineID *UUID `json:"virtualmachineid" doc:"Virtual Machine ID"` + _ bool `name:"updateDefaultNicForVirtualMachine" description:"Changes the default NIC on a VM"` +} + +// Response returns the struct to unmarshal +func (UpdateDefaultNicForVirtualMachine) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (UpdateDefaultNicForVirtualMachine) AsyncResponse() interface{} { + return new(VirtualMachine) +} + +// GetVirtualMachineUserData returns the user-data of the given VM +type GetVirtualMachineUserData struct { + VirtualMachineID *UUID `json:"virtualmachineid" doc:"The ID of the virtual machine"` + _ bool `name:"getVirtualMachineUserData" description:"Returns user data associated with the VM"` +} + +// Response returns the struct to unmarshal +func (GetVirtualMachineUserData) Response() interface{} { + return new(VirtualMachineUserData) +} + +// UpdateVMNicIP updates the default IP address of a VM Nic +type UpdateVMNicIP struct { + _ bool `name:"updateVmNicIp" description:"Update the default Ip of a VM Nic"` + IPAddress net.IP `json:"ipaddress,omitempty" doc:"Static IP address lease for the corresponding NIC and network which should be in the range defined in the network. If absent, the call removes the lease associated with the nic."` + NicID *UUID `json:"nicid" doc:"the ID of the nic."` +} + +// Response returns the struct to unmarshal +func (UpdateVMNicIP) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (UpdateVMNicIP) AsyncResponse() interface{} { + return new(VirtualMachine) +} diff --git a/vendor/github.com/exoscale/egoscale/virtualmachines_response.go b/vendor/github.com/exoscale/egoscale/virtualmachines_response.go new file mode 100644 index 000000000..9aafb01a3 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/virtualmachines_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListVirtualMachines) Response() interface{} { + return new(ListVirtualMachinesResponse) +} + +// ListRequest returns itself +func (ls *ListVirtualMachines) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListVirtualMachines) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListVirtualMachines) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListVirtualMachines) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListVirtualMachinesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListVirtualMachinesResponse was expected, got %T", resp)) + return + } + + for i := range items.VirtualMachine { + if !callback(&items.VirtualMachine[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/volumes.go b/vendor/github.com/exoscale/egoscale/volumes.go new file mode 100644 index 000000000..877127f01 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/volumes.go @@ -0,0 +1,114 @@ +package egoscale + +// Volume represents a volume linked to a VM +type Volume struct { + Account string `json:"account,omitempty" doc:"the account associated with the disk volume"` + Attached string `json:"attached,omitempty" doc:"the date the volume was attached to a VM instance"` + ChainInfo string `json:"chaininfo,omitempty" doc:"the chain info of the volume"` + ClusterID *UUID `json:"clusterid,omitempty" doc:"ID of the cluster"` + ClusterName string `json:"clustername,omitempty" doc:"name of the cluster"` + Created string `json:"created,omitempty" doc:"the date the disk volume was created"` + Destroyed bool `json:"destroyed,omitempty" doc:"the boolean state of whether the volume is destroyed or not"` + DeviceID int64 `json:"deviceid,omitempty" doc:"the ID of the device on user vm the volume is attahed to. This tag is not returned when the volume is detached."` + DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty" doc:"bytes read rate of the disk volume"` + DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty" doc:"bytes write rate of the disk volume"` + DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty" doc:"io requests read rate of the disk volume"` + DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty" doc:"io requests write rate of the disk volume"` + DiskOfferingDisplayText string `json:"diskofferingdisplaytext,omitempty" doc:"the display text of the disk offering"` + DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"ID of the disk offering"` + DiskOfferingName string `json:"diskofferingname,omitempty" doc:"name of the disk offering"` + DisplayVolume bool `json:"displayvolume,omitempty" doc:"an optional field whether to the display the volume to the end user or not."` + Hypervisor string `json:"hypervisor,omitempty" doc:"Hypervisor the volume belongs to"` + ID *UUID `json:"id,omitempty" doc:"ID of the disk volume"` + IsExtractable *bool `json:"isextractable,omitempty" doc:"true if the volume is extractable, false otherwise"` + IsoDisplayText string `json:"isodisplaytext,omitempty" doc:"an alternate display text of the ISO attached to the virtual machine"` + IsoID *UUID `json:"isoid,omitempty" doc:"the ID of the ISO attached to the virtual machine"` + IsoName string `json:"isoname,omitempty" doc:"the name of the ISO attached to the virtual machine"` + MaxIops int64 `json:"maxiops,omitempty" doc:"max iops of the disk volume"` + MinIops int64 `json:"miniops,omitempty" doc:"min iops of the disk volume"` + Name string `json:"name,omitempty" doc:"name of the disk volume"` + Path string `json:"path,omitempty" doc:"the path of the volume"` + PodID *UUID `json:"podid,omitempty" doc:"ID of the pod"` + PodName string `json:"podname,omitempty" doc:"name of the pod"` + QuiesceVM bool `json:"quiescevm,omitempty" doc:"need quiesce vm or not when taking snapshot"` + ServiceOfferingDisplayText string `json:"serviceofferingdisplaytext,omitempty" doc:"the display text of the service offering for root disk"` + ServiceOfferingID *UUID `json:"serviceofferingid,omitempty" doc:"ID of the service offering for root disk"` + ServiceOfferingName string `json:"serviceofferingname,omitempty" doc:"name of the service offering for root disk"` + Size uint64 `json:"size,omitempty" doc:"size of the disk volume"` + SnapshotID *UUID `json:"snapshotid,omitempty" doc:"ID of the snapshot from which this volume was created"` + State string `json:"state,omitempty" doc:"the state of the disk volume"` + Status string `json:"status,omitempty" doc:"the status of the volume"` + Storage string `json:"storage,omitempty" doc:"name of the primary storage hosting the disk volume"` + StorageID *UUID `json:"storageid,omitempty" doc:"id of the primary storage hosting the disk volume; returned to admin user only"` + StorageType string `json:"storagetype,omitempty" doc:"shared or local storage"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with volume"` + TemplateDisplayText string `json:"templatedisplaytext,omitempty" doc:"an alternate display text of the template for the virtual machine"` + TemplateID *UUID `json:"templateid,omitempty" doc:"the ID of the template for the virtual machine. A -1 is returned if the virtual machine was created from an ISO file."` // no *UUID because of the -1 thingy... + TemplateName string `json:"templatename,omitempty" doc:"the name of the template for the virtual machine"` + Type string `json:"type,omitempty" doc:"type of the disk volume (ROOT or DATADISK)"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"id of the virtual machine"` + VMDisplayName string `json:"vmdisplayname,omitempty" doc:"display name of the virtual machine"` + VMName string `json:"vmname,omitempty" doc:"name of the virtual machine"` + VMState string `json:"vmstate,omitempty" doc:"state of the virtual machine"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"ID of the availability zone"` + ZoneName string `json:"zonename,omitempty" doc:"name of the availability zone"` +} + +// ResourceType returns the type of the resource +func (Volume) ResourceType() string { + return "Volume" +} + +// ListRequest builds the ListVolumes request +func (vol Volume) ListRequest() (ListCommand, error) { + req := &ListVolumes{ + ID: vol.ID, + Name: vol.Name, + Type: vol.Type, + VirtualMachineID: vol.VirtualMachineID, + ZoneID: vol.ZoneID, + } + + return req, nil +} + +// ResizeVolume (Async) resizes a volume +type ResizeVolume struct { + ID *UUID `json:"id" doc:"the ID of the disk volume"` + DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"new disk offering id"` + Size int64 `json:"size,omitempty" doc:"New volume size in G (must be larger than current size since shrinking the disk is not supported)"` + _ bool `name:"resizeVolume" description:"Resizes a volume"` +} + +// Response returns the struct to unmarshal +func (ResizeVolume) Response() interface{} { + return new(AsyncJobResult) +} + +// AsyncResponse returns the struct to unmarshal the async job +func (ResizeVolume) AsyncResponse() interface{} { + return new(Volume) +} + +//go:generate go run generate/main.go -interface=Listable ListVolumes + +// ListVolumes represents a query listing volumes +type ListVolumes struct { + DiskOfferingID *UUID `json:"diskofferingid,omitempty" doc:"List volumes by disk offering"` + ID *UUID `json:"id,omitempty" doc:"The ID of the disk volume"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"The name of the disk volume"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List resources by tags (key/value pairs). Note: multiple tags are OR'ed, not AND'ed."` + Type string `json:"type,omitempty" doc:"The type of disk volume"` + VirtualMachineID *UUID `json:"virtualmachineid,omitempty" doc:"The ID of the virtual machine"` + ZoneID *UUID `json:"zoneid,omitempty" doc:"The ID of the availability zone"` + _ bool `name:"listVolumes" description:"Lists all volumes."` +} + +// ListVolumesResponse represents a list of volumes +type ListVolumesResponse struct { + Count int `json:"count"` + Volume []Volume `json:"volume"` +} diff --git a/vendor/github.com/exoscale/egoscale/volumes_response.go b/vendor/github.com/exoscale/egoscale/volumes_response.go new file mode 100644 index 000000000..c7486bc1e --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/volumes_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListVolumes) Response() interface{} { + return new(ListVolumesResponse) +} + +// ListRequest returns itself +func (ls *ListVolumes) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListVolumes) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListVolumes) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListVolumes) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListVolumesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListVolumesResponse was expected, got %T", resp)) + return + } + + for i := range items.Volume { + if !callback(&items.Volume[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/egoscale/zones.go b/vendor/github.com/exoscale/egoscale/zones.go new file mode 100644 index 000000000..d021e44a4 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/zones.go @@ -0,0 +1,60 @@ +package egoscale + +import ( + "net" +) + +// Zone represents a data center +type Zone struct { + AllocationState string `json:"allocationstate,omitempty" doc:"the allocation state of the cluster"` + Description string `json:"description,omitempty" doc:"Zone description"` + DhcpProvider string `json:"dhcpprovider,omitempty" doc:"the dhcp Provider for the Zone"` + DisplayText string `json:"displaytext,omitempty" doc:"the display text of the zone"` + DNS1 net.IP `json:"dns1,omitempty" doc:"the first DNS for the Zone"` + DNS2 net.IP `json:"dns2,omitempty" doc:"the second DNS for the Zone"` + GuestCIDRAddress *CIDR `json:"guestcidraddress,omitempty" doc:"the guest CIDR address for the Zone"` + ID *UUID `json:"id,omitempty" doc:"Zone id"` + InternalDNS1 net.IP `json:"internaldns1,omitempty" doc:"the first internal DNS for the Zone"` + InternalDNS2 net.IP `json:"internaldns2,omitempty" doc:"the second internal DNS for the Zone"` + IP6DNS1 net.IP `json:"ip6dns1,omitempty" doc:"the first IPv6 DNS for the Zone"` + IP6DNS2 net.IP `json:"ip6dns2,omitempty" doc:"the second IPv6 DNS for the Zone"` + LocalStorageEnabled *bool `json:"localstorageenabled,omitempty" doc:"true if local storage offering enabled, false otherwise"` + Name string `json:"name,omitempty" doc:"Zone name"` + NetworkType string `json:"networktype,omitempty" doc:"the network type of the zone; can be Basic or Advanced"` + ResourceDetails map[string]string `json:"resourcedetails,omitempty" doc:"Meta data associated with the zone (key/value pairs)"` + SecurityGroupsEnabled *bool `json:"securitygroupsenabled,omitempty" doc:"true if security groups support is enabled, false otherwise"` + Tags []ResourceTag `json:"tags,omitempty" doc:"the list of resource tags associated with zone."` + Vlan string `json:"vlan,omitempty" doc:"the vlan range of the zone"` + ZoneToken string `json:"zonetoken,omitempty" doc:"Zone Token"` +} + +// ListRequest builds the ListZones request +func (zone Zone) ListRequest() (ListCommand, error) { + req := &ListZones{ + ID: zone.ID, + Name: zone.Name, + } + + return req, nil +} + +//go:generate go run generate/main.go -interface=Listable ListZones + +// ListZones represents a query for zones +type ListZones struct { + Available *bool `json:"available,omitempty" doc:"true if you want to retrieve all available Zones. False if you only want to return the Zones from which you have at least one VM. Default is false."` + ID *UUID `json:"id,omitempty" doc:"the ID of the zone"` + Keyword string `json:"keyword,omitempty" doc:"List by keyword"` + Name string `json:"name,omitempty" doc:"the name of the zone"` + Page int `json:"page,omitempty"` + PageSize int `json:"pagesize,omitempty"` + ShowCapacities *bool `json:"showcapacities,omitempty" doc:"flag to display the capacity of the zones"` + Tags []ResourceTag `json:"tags,omitempty" doc:"List zones by resource tags (key/value pairs)"` + _ bool `name:"listZones" description:"Lists zones"` +} + +// ListZonesResponse represents a list of zones +type ListZonesResponse struct { + Count int `json:"count"` + Zone []Zone `json:"zone"` +} diff --git a/vendor/github.com/exoscale/egoscale/zones_response.go b/vendor/github.com/exoscale/egoscale/zones_response.go new file mode 100644 index 000000000..0fe7d06d7 --- /dev/null +++ b/vendor/github.com/exoscale/egoscale/zones_response.go @@ -0,0 +1,43 @@ +// code generated; DO NOT EDIT. + +package egoscale + +import "fmt" + +// Response returns the struct to unmarshal +func (ListZones) Response() interface{} { + return new(ListZonesResponse) +} + +// ListRequest returns itself +func (ls *ListZones) ListRequest() (ListCommand, error) { + if ls == nil { + return nil, fmt.Errorf("%T cannot be nil", ls) + } + return ls, nil +} + +// SetPage sets the current apge +func (ls *ListZones) SetPage(page int) { + ls.Page = page +} + +// SetPageSize sets the page size +func (ls *ListZones) SetPageSize(pageSize int) { + ls.PageSize = pageSize +} + +// Each triggers the callback for each, valid answer or any non 404 issue +func (ListZones) Each(resp interface{}, callback IterateItemFunc) { + items, ok := resp.(*ListZonesResponse) + if !ok { + callback(nil, fmt.Errorf("wrong type, ListZonesResponse was expected, got %T", resp)) + return + } + + for i := range items.Zone { + if !callback(&items.Zone[i], nil) { + break + } + } +} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/LICENSE b/vendor/github.com/exoscale/packer-plugin-exoscale/LICENSE new file mode 100644 index 000000000..a612ad981 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/artifact.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/artifact.go new file mode 100644 index 000000000..3878fc660 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/artifact.go @@ -0,0 +1,47 @@ +package exoscaleimport + +import ( + "context" + "fmt" + + "github.com/exoscale/egoscale" +) + +const BuilderId = "packer.post-processor.exoscale-import" + +type Artifact struct { + template egoscale.Template + exo *egoscale.Client +} + +func (a *Artifact) BuilderId() string { + return BuilderId +} + +func (a *Artifact) Id() string { + return a.template.ID.String() +} + +func (a *Artifact) Files() []string { + return nil +} + +func (a *Artifact) String() string { + return fmt.Sprintf("%s @ %s (%s)", + a.template.Name, + a.template.ZoneName, + a.template.ID.String()) +} + +func (a *Artifact) State(name string) interface{} { + return nil +} + +func (a *Artifact) Destroy() error { + _, err := a.exo.RequestWithContext(context.Background(), &egoscale.DeleteTemplate{ID: a.template.ID}) + if err != nil { + return fmt.Errorf("unable to delete template: %s", err) + } + + return nil +} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.go new file mode 100644 index 000000000..cc655080f --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.go @@ -0,0 +1,93 @@ +//go:generate mapstructure-to-hcl2 -type Config + +package exoscaleimport + +import ( + "fmt" + + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-sdk/common" + "github.com/hashicorp/packer-plugin-sdk/packer" + pkrconfig "github.com/hashicorp/packer-plugin-sdk/template/config" + "github.com/hashicorp/packer-plugin-sdk/template/interpolate" +) + +const ( + defaultAPIEndpoint = "https://api.exoscale.com/v1" + defaultTemplateBootMode = "legacy" +) + +type Config struct { + SOSEndpoint string `mapstructure:"sos_endpoint"` + APIEndpoint string `mapstructure:"api_endpoint"` + APIKey string `mapstructure:"api_key"` + APISecret string `mapstructure:"api_secret"` + ImageBucket string `mapstructure:"image_bucket"` + TemplateZone string `mapstructure:"template_zone"` + TemplateName string `mapstructure:"template_name"` + TemplateDescription string `mapstructure:"template_description"` + TemplateUsername string `mapstructure:"template_username"` + TemplateBootMode string `mapstructure:"template_boot_mode"` + TemplateDisablePassword bool `mapstructure:"template_disable_password"` + TemplateDisableSSHKey bool `mapstructure:"template_disable_sshkey"` + SkipClean bool `mapstructure:"skip_clean"` + + ctx interpolate.Context + + common.PackerConfig `mapstructure:",squash"` +} + +func NewConfig(raws ...interface{}) (*Config, error) { + var config Config + + err := pkrconfig.Decode(&config, &pkrconfig.DecodeOpts{ + PluginType: BuilderId, + Interpolate: true, + InterpolateContext: &config.ctx, + InterpolateFilter: &interpolate.RenderFilter{ + Exclude: []string{}, + }, + }, raws...) + if err != nil { + return nil, err + } + + requiredArgs := map[string]*string{ + "api_key": &config.APIKey, + "api_secret": &config.APISecret, + "image_bucket": &config.ImageBucket, + "template_zone": &config.TemplateZone, + "template_name": &config.TemplateName, + } + + errs := new(packer.MultiError) + for k, v := range requiredArgs { + if *v == "" { + errs = packer.MultiErrorAppend( + errs, fmt.Errorf("%s must be set", k)) + } + } + + if len(errs.Errors) > 0 { + return nil, errs + } + + if config.APIEndpoint == "" { + config.APIEndpoint = defaultAPIEndpoint + } + + if config.TemplateBootMode == "" { + config.TemplateBootMode = defaultTemplateBootMode + } + + if config.SOSEndpoint == "" { + config.SOSEndpoint = "https://sos-" + config.TemplateZone + ".exo.io" + } + + return &config, nil +} + +// ConfigSpec returns HCL object spec +func (p *PostProcessor) ConfigSpec() hcldec.ObjectSpec { + return p.config.FlatMapstructure().HCL2Spec() +} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.hcl2spec.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.hcl2spec.go new file mode 100644 index 000000000..f2d872833 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/config.hcl2spec.go @@ -0,0 +1,70 @@ +// Code generated by "mapstructure-to-hcl2 -type Config"; DO NOT EDIT. +package exoscaleimport + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables"` + SkipClean *bool `mapstructure:"skip_clean" cty:"skip_clean"` + SOSEndpoint *string `mapstructure:"sos_endpoint" cty:"sos_endpoint"` + APIEndpoint *string `mapstructure:"api_endpoint" cty:"api_endpoint"` + APIKey *string `mapstructure:"api_key" cty:"api_key"` + APISecret *string `mapstructure:"api_secret" cty:"api_secret"` + ImageBucket *string `mapstructure:"image_bucket" cty:"image_bucket"` + TemplateZone *string `mapstructure:"template_zone" cty:"template_zone"` + TemplateName *string `mapstructure:"template_name" cty:"template_name"` + TemplateDescription *string `mapstructure:"template_description" cty:"template_description"` + TemplateUsername *string `mapstructure:"template_username" cty:"template_username"` + TemplateBootMode *string `mapstructure:"template_boot_mode" cty:"template_boot_mode"` + TemplateDisablePassword *bool `mapstructure:"template_disable_password" cty:"template_disable_password"` + TemplateDisableSSHKey *bool `mapstructure:"template_disable_sshkey" cty:"template_disable_sshkey"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "skip_clean": &hcldec.AttrSpec{Name: "skip_clean", Type: cty.Bool, Required: false}, + "sos_endpoint": &hcldec.AttrSpec{Name: "sos_endpoint", Type: cty.String, Required: false}, + "api_endpoint": &hcldec.AttrSpec{Name: "api_endpoint", Type: cty.String, Required: false}, + "api_key": &hcldec.AttrSpec{Name: "api_key", Type: cty.String, Required: false}, + "api_secret": &hcldec.AttrSpec{Name: "api_secret", Type: cty.String, Required: false}, + "image_bucket": &hcldec.AttrSpec{Name: "image_bucket", Type: cty.String, Required: false}, + "template_zone": &hcldec.AttrSpec{Name: "template_zone", Type: cty.String, Required: false}, + "template_name": &hcldec.AttrSpec{Name: "template_name", Type: cty.String, Required: false}, + "template_description": &hcldec.AttrSpec{Name: "template_description", Type: cty.String, Required: false}, + "template_username": &hcldec.AttrSpec{Name: "template_username", Type: cty.String, Required: false}, + "template_boot_mode": &hcldec.AttrSpec{Name: "template_boot_mode", Type: cty.String, Required: false}, + "template_disable_password": &hcldec.AttrSpec{Name: "template_disable_password", Type: cty.Bool, Required: false}, + "template_disable_sshkey": &hcldec.AttrSpec{Name: "template_disable_sshkey", Type: cty.Bool, Required: false}, + } + return s +} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/post-processor.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/post-processor.go new file mode 100644 index 000000000..5c3678559 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/post-processor.go @@ -0,0 +1,92 @@ +package exoscaleimport + +import ( + "context" + "errors" + "fmt" + + "github.com/exoscale/egoscale" + "github.com/hashicorp/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps" + "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/version" +) + +const ( + qemuBuilderID = "transcend.qemu" + fileBuilderID = "packer.file" + artificeBuilderID = "packer.post-processor.artifice" +) + +func init() { + egoscale.UserAgent = fmt.Sprintf("Exoscale-Packer-Post-Processor/%s %s", + version.SDKVersion.FormattedVersion(), egoscale.UserAgent) +} + +type PostProcessor struct { + config *Config + runner multistep.Runner + exo *egoscale.Client +} + +func (p *PostProcessor) Configure(raws ...interface{}) error { + config, err := NewConfig(raws...) + if err != nil { + return err + } + p.config = config + + packer.LogSecretFilter.Set(p.config.APIKey, p.config.APISecret) + + return nil +} + +func (p *PostProcessor) PostProcess(ctx context.Context, ui packer.Ui, a packer.Artifact) (packer.Artifact, bool, bool, error) { + switch a.BuilderId() { + case qemuBuilderID, fileBuilderID, artificeBuilderID: + break + default: + err := fmt.Errorf("unsupported artifact type %q: this post-processor only imports "+ + "artifacts from QEMU/file builders and Artifice post-processor", a.BuilderId()) + return nil, false, false, err + } + + p.exo = egoscale.NewClient(p.config.APIEndpoint, p.config.APIKey, p.config.APISecret) + + state := new(multistep.BasicStateBag) + state.Put("config", p.config) + state.Put("exo", p.exo) + state.Put("ui", ui) + state.Put("artifact", a) + + steps := []multistep.Step{ + new(stepUploadImage), + new(stepRegisterTemplate), + new(stepDeleteImage), + } + + p.runner = commonsteps.NewRunnerWithPauseFn(steps, p.config.PackerConfig, ui, state) + p.runner.Run(ctx, state) + + if rawErr, ok := state.GetOk("error"); ok { + return nil, false, false, rawErr.(error) + } + + if _, ok := state.GetOk(multistep.StateCancelled); ok { + return nil, false, false, errors.New("post-processing cancelled") + } + + if _, ok := state.GetOk(multistep.StateHalted); ok { + return nil, false, false, errors.New("post-processing halted") + } + + v, ok := state.GetOk("template") + if !ok { + return nil, false, false, errors.New("unable to find template in state") + } + + return &Artifact{ + template: v.(egoscale.Template), + exo: p.exo, + }, false, false, nil +} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_delete_image.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_delete_image.go new file mode 100644 index 000000000..e75f6fad9 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_delete_image.go @@ -0,0 +1,55 @@ +package exoscaleimport + +import ( + "context" + "fmt" + "path/filepath" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/hashicorp/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer-plugin-sdk/packer" +) + +type stepDeleteImage struct{} + +func (s *stepDeleteImage) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { + var ( + ui = state.Get("ui").(packer.Ui) + config = state.Get("config").(*Config) + artifact = state.Get("artifact").(packer.Artifact) + + imageFile = artifact.Files()[0] + bucketFile = filepath.Base(imageFile) + ) + + if config.SkipClean { + return multistep.ActionContinue + } + + ui.Say("Deleting uploaded template image") + + sess, err := session.NewSessionWithOptions(session.Options{Config: aws.Config{ + Region: aws.String(config.TemplateZone), + Endpoint: aws.String(config.SOSEndpoint), + Credentials: credentials.NewStaticCredentials(config.APIKey, config.APISecret, "")}}) + if err != nil { + ui.Error(fmt.Sprintf("unable to initialize session: %v", err)) + return multistep.ActionHalt + } + + svc := s3.New(sess) + if _, err := svc.DeleteObject(&s3.DeleteObjectInput{ + Bucket: aws.String(config.ImageBucket), + Key: aws.String(bucketFile), + }); err != nil { + ui.Error(fmt.Sprintf("unable to delete template image: %v", err)) + return multistep.ActionHalt + } + + return multistep.ActionContinue +} + +func (s *stepDeleteImage) Cleanup(state multistep.StateBag) {} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_register_template.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_register_template.go new file mode 100644 index 000000000..c73b65405 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_register_template.go @@ -0,0 +1,62 @@ +package exoscaleimport + +import ( + "context" + "fmt" + + "github.com/exoscale/egoscale" + "github.com/hashicorp/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer-plugin-sdk/packer" +) + +type stepRegisterTemplate struct{} + +func (s *stepRegisterTemplate) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { + var ( + exo = state.Get("exo").(*egoscale.Client) + ui = state.Get("ui").(packer.Ui) + config = state.Get("config").(*Config) + imageURL = state.Get("image_url").(string) + imageChecksum = state.Get("image_checksum").(string) + + passwordEnabled = !config.TemplateDisablePassword + sshkeyEnabled = !config.TemplateDisableSSHKey + ) + + ui.Say("Registering Compute instance template") + + resp, err := exo.GetWithContext(ctx, &egoscale.ListZones{Name: config.TemplateZone}) + if err != nil { + ui.Error(fmt.Sprintf("unable to list zones: %s", err)) + return multistep.ActionHalt + } + zone := resp.(*egoscale.Zone) + + resp, err = exo.RequestWithContext(ctx, &egoscale.RegisterCustomTemplate{ + Name: config.TemplateName, + Displaytext: config.TemplateDescription, + BootMode: config.TemplateBootMode, + URL: imageURL, + Checksum: imageChecksum, + PasswordEnabled: &passwordEnabled, + SSHKeyEnabled: &sshkeyEnabled, + Details: func() map[string]string { + if config.TemplateUsername != "" { + return map[string]string{"username": config.TemplateUsername} + } + return nil + }(), + ZoneID: zone.ID, + }) + if err != nil { + ui.Error(fmt.Sprintf("unable to export Compute instance snapshot: %s", err)) + return multistep.ActionHalt + } + templates := resp.(*[]egoscale.Template) + + state.Put("template", (*templates)[0]) + + return multistep.ActionContinue +} + +func (s *stepRegisterTemplate) Cleanup(state multistep.StateBag) {} diff --git a/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_upload_image.go b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_upload_image.go new file mode 100644 index 000000000..e88de4bf0 --- /dev/null +++ b/vendor/github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import/step_upload_image.go @@ -0,0 +1,89 @@ +package exoscaleimport + +import ( + "context" + "crypto/md5" + "encoding/base64" + "fmt" + "io" + "os" + "path/filepath" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3/s3manager" + "github.com/hashicorp/packer-plugin-sdk/multistep" + "github.com/hashicorp/packer-plugin-sdk/packer" +) + +type stepUploadImage struct{} + +func (s *stepUploadImage) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { + var ( + ui = state.Get("ui").(packer.Ui) + config = state.Get("config").(*Config) + artifact = state.Get("artifact").(packer.Artifact) + + imageFile = artifact.Files()[0] + bucketFile = filepath.Base(imageFile) + ) + + ui.Say("Uploading template image") + + f, err := os.Open(imageFile) + if err != nil { + ui.Error(fmt.Sprint(err)) + return multistep.ActionHalt + } + defer f.Close() + + fileInfo, err := f.Stat() + if err != nil { + ui.Error(fmt.Sprint(err)) + return multistep.ActionHalt + } + + // For tracking image file upload progress + pf := ui.TrackProgress(imageFile, 0, fileInfo.Size(), f) + defer pf.Close() + + hash := md5.New() + if _, err := io.Copy(hash, f); err != nil { + ui.Error(fmt.Sprintf("unable to compute template file checksum: %v", err)) + return multistep.ActionHalt + } + if _, err := f.Seek(0, 0); err != nil { + ui.Error(fmt.Sprintf("unable to compute template file checksum: %v", err)) + return multistep.ActionHalt + } + + sess, err := session.NewSessionWithOptions(session.Options{Config: aws.Config{ + Region: aws.String(config.TemplateZone), + Endpoint: aws.String(config.SOSEndpoint), + Credentials: credentials.NewStaticCredentials(config.APIKey, config.APISecret, "")}}) + if err != nil { + ui.Error(fmt.Sprintf("unable to initialize session: %v", err)) + return multistep.ActionHalt + } + + uploader := s3manager.NewUploader(sess) + output, err := uploader.UploadWithContext(ctx, &s3manager.UploadInput{ + Body: pf, + Bucket: aws.String(config.ImageBucket), + Key: aws.String(bucketFile), + ContentMD5: aws.String(base64.StdEncoding.EncodeToString(hash.Sum(nil))), + ACL: aws.String("public-read"), + }) + if err != nil { + ui.Error(fmt.Sprintf("unable to upload template image: %v", err)) + return multistep.ActionHalt + } + + state.Put("image_url", output.Location) + state.Put("image_checksum", fmt.Sprintf("%x", hash.Sum(nil))) + + return multistep.ActionContinue +} + +func (s *stepUploadImage) Cleanup(state multistep.StateBag) {} diff --git a/vendor/github.com/gofrs/uuid/.travis.yml b/vendor/github.com/gofrs/uuid/.travis.yml index ee1e4fa00..0783aaa9c 100644 --- a/vendor/github.com/gofrs/uuid/.travis.yml +++ b/vendor/github.com/gofrs/uuid/.travis.yml @@ -6,13 +6,12 @@ go: - 1.9.x - 1.10.x - 1.11.x + - 1.12.x - tip matrix: allow_failures: - go: tip fast_finish: true -env: - - GO111MODULE=on before_install: - go get golang.org/x/tools/cmd/cover script: diff --git a/vendor/github.com/gofrs/uuid/README.md b/vendor/github.com/gofrs/uuid/README.md index efc3204fc..2685a832e 100644 --- a/vendor/github.com/gofrs/uuid/README.md +++ b/vendor/github.com/gofrs/uuid/README.md @@ -12,7 +12,6 @@ and parsing of UUIDs in different formats. This package supports the following UUID versions: * Version 1, based on timestamp and MAC address (RFC-4122) -* Version 2, based on timestamp, MAC address and POSIX UID/GID (DCE 1.1) * Version 3, based on MD5 hashing of a named value (RFC-4122) * Version 4, based on random numbers (RFC-4122) * Version 5, based on SHA-1 hashing of a named value (RFC-4122) diff --git a/vendor/github.com/gofrs/uuid/codec.go b/vendor/github.com/gofrs/uuid/codec.go index e3d8cfb4d..e3014c68c 100644 --- a/vendor/github.com/gofrs/uuid/codec.go +++ b/vendor/github.com/gofrs/uuid/codec.go @@ -114,7 +114,7 @@ func (u *UUID) UnmarshalText(text []byte) error { case 41, 45: return u.decodeURN(text) default: - return fmt.Errorf("uuid: incorrect UUID length: %s", text) + return fmt.Errorf("uuid: incorrect UUID length %d in string %q", len(text), text) } } @@ -122,7 +122,7 @@ func (u *UUID) UnmarshalText(text []byte) error { // "6ba7b810-9dad-11d1-80b4-00c04fd430c8". func (u *UUID) decodeCanonical(t []byte) error { if t[8] != '-' || t[13] != '-' || t[18] != '-' || t[23] != '-' { - return fmt.Errorf("uuid: incorrect UUID format %s", t) + return fmt.Errorf("uuid: incorrect UUID format in string %q", t) } src := t @@ -160,7 +160,7 @@ func (u *UUID) decodeBraced(t []byte) error { l := len(t) if t[0] != '{' || t[l-1] != '}' { - return fmt.Errorf("uuid: incorrect UUID format %s", t) + return fmt.Errorf("uuid: incorrect UUID format in string %q", t) } return u.decodePlain(t[1 : l-1]) @@ -175,7 +175,7 @@ func (u *UUID) decodeURN(t []byte) error { urnUUIDPrefix := t[:9] if !bytes.Equal(urnUUIDPrefix, urnPrefix) { - return fmt.Errorf("uuid: incorrect UUID format: %s", t) + return fmt.Errorf("uuid: incorrect UUID format in string %q", t) } return u.decodePlain(t[9:total]) @@ -191,7 +191,7 @@ func (u *UUID) decodePlain(t []byte) error { case 36: return u.decodeCanonical(t) default: - return fmt.Errorf("uuid: incorrect UUID length: %s", t) + return fmt.Errorf("uuid: incorrect UUID length %d in string %q", len(t), t) } } diff --git a/vendor/github.com/gofrs/uuid/generator.go b/vendor/github.com/gofrs/uuid/generator.go index 4257761f1..2783d9e77 100644 --- a/vendor/github.com/gofrs/uuid/generator.go +++ b/vendor/github.com/gofrs/uuid/generator.go @@ -30,7 +30,6 @@ import ( "hash" "io" "net" - "os" "sync" "time" ) @@ -47,21 +46,11 @@ type HWAddrFunc func() (net.HardwareAddr, error) // DefaultGenerator is the default UUID Generator used by this package. var DefaultGenerator Generator = NewGen() -var ( - posixUID = uint32(os.Getuid()) - posixGID = uint32(os.Getgid()) -) - // NewV1 returns a UUID based on the current timestamp and MAC address. func NewV1() (UUID, error) { return DefaultGenerator.NewV1() } -// NewV2 returns a DCE Security UUID based on the POSIX UID/GID. -func NewV2(domain byte) (UUID, error) { - return DefaultGenerator.NewV2(domain) -} - // NewV3 returns a UUID based on the MD5 hash of the namespace UUID and name. func NewV3(ns UUID, name string) UUID { return DefaultGenerator.NewV3(ns, name) @@ -80,7 +69,6 @@ func NewV5(ns UUID, name string) UUID { // Generator provides an interface for generating UUIDs. type Generator interface { NewV1() (UUID, error) - NewV2(domain byte) (UUID, error) NewV3(ns UUID, name string) UUID NewV4() (UUID, error) NewV5(ns UUID, name string) UUID @@ -164,28 +152,6 @@ func (g *Gen) NewV1() (UUID, error) { return u, nil } -// NewV2 returns a DCE Security UUID based on the POSIX UID/GID. -func (g *Gen) NewV2(domain byte) (UUID, error) { - u, err := g.NewV1() - if err != nil { - return Nil, err - } - - switch domain { - case DomainPerson: - binary.BigEndian.PutUint32(u[:], posixUID) - case DomainGroup: - binary.BigEndian.PutUint32(u[:], posixGID) - } - - u[9] = domain - - u.SetVersion(V2) - u.SetVariant(VariantRFC4122) - - return u, nil -} - // NewV3 returns a UUID based on the MD5 hash of the namespace UUID and name. func (g *Gen) NewV3(ns UUID, name string) UUID { u := newFromHash(md5.New(), ns, name) @@ -216,7 +182,7 @@ func (g *Gen) NewV5(ns UUID, name string) UUID { return u } -// Returns the epoch and clock sequence. +// getClockSequence returns the epoch and clock sequence. func (g *Gen) getClockSequence() (uint64, uint16, error) { var err error g.clockSequenceOnce.Do(func() { diff --git a/vendor/github.com/gofrs/uuid/uuid.go b/vendor/github.com/gofrs/uuid/uuid.go index 29ef44059..78aed6e25 100644 --- a/vendor/github.com/gofrs/uuid/uuid.go +++ b/vendor/github.com/gofrs/uuid/uuid.go @@ -19,11 +19,19 @@ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// Package uuid provides implementations of the Universally Unique Identifier (UUID), as specified in RFC-4122 and DCE 1.1. +// Package uuid provides implementations of the Universally Unique Identifier +// (UUID), as specified in RFC-4122, // // RFC-4122[1] provides the specification for versions 1, 3, 4, and 5. // -// DCE 1.1[2] provides the specification for version 2. +// DCE 1.1[2] provides the specification for version 2, but version 2 support +// was removed from this package in v4 due to some concerns with the +// specification itself. Reading the spec, it seems that it would result in +// generating UUIDs that aren't very unique. In having read the spec it seemed +// that our implementation did not meet the spec. It also seems to be at-odds +// with RFC 4122, meaning we would need quite a bit of special code to support +// it. Lastly, there were no Version 2 implementations that we could find to +// ensure we were understanding the specification correctly. // // [1] https://tools.ietf.org/html/rfc4122 // [2] http://pubs.opengroup.org/onlinepubs/9696989899/chap5.htm#tagcjh_08_02_01_01 @@ -33,6 +41,8 @@ import ( "encoding/binary" "encoding/hex" "fmt" + "io" + "strings" "time" ) @@ -46,7 +56,7 @@ type UUID [Size]byte const ( _ byte = iota V1 // Version 1 (date-time and MAC address) - V2 // Version 2 (date-time and MAC address, DCE security version) + _ // Version 2 (date-time and MAC address, DCE security version) [removed] V3 // Version 3 (namespace name-based) V4 // Version 4 (random) V5 // Version 5 (namespace name-based) @@ -68,8 +78,8 @@ const ( ) // Timestamp is the count of 100-nanosecond intervals since 00:00:00.00, -// 15 October 1582 within a V1 UUID. This type has no meaning for V2-V5 -// UUIDs since they don't have an embedded timestamp. +// 15 October 1582 within a V1 UUID. This type has no meaning for other +// UUID versions since they don't have an embedded timestamp. type Timestamp uint64 const _100nsPerSecond = 10000000 @@ -156,6 +166,65 @@ func (u UUID) String() string { return string(buf) } +// Format implements fmt.Formatter for UUID values. +// +// The behavior is as follows: +// The 'x' and 'X' verbs output only the hex digits of the UUID, using a-f for 'x' and A-F for 'X'. +// The 'v', '+v', 's' and 'q' verbs return the canonical RFC-4122 string representation. +// The 'S' verb returns the RFC-4122 format, but with capital hex digits. +// The '#v' verb returns the "Go syntax" representation, which is a 16 byte array initializer. +// All other verbs not handled directly by the fmt package (like '%p') are unsupported and will return +// "%!verb(uuid.UUID=value)" as recommended by the fmt package. +func (u UUID) Format(f fmt.State, c rune) { + switch c { + case 'x', 'X': + s := hex.EncodeToString(u.Bytes()) + if c == 'X' { + s = strings.Map(toCapitalHexDigits, s) + } + _, _ = io.WriteString(f, s) + case 'v': + var s string + if f.Flag('#') { + s = fmt.Sprintf("%#v", [Size]byte(u)) + } else { + s = u.String() + } + _, _ = io.WriteString(f, s) + case 's', 'S': + s := u.String() + if c == 'S' { + s = strings.Map(toCapitalHexDigits, s) + } + _, _ = io.WriteString(f, s) + case 'q': + _, _ = io.WriteString(f, `"`+u.String()+`"`) + default: + // invalid/unsupported format verb + fmt.Fprintf(f, "%%!%c(uuid.UUID=%s)", c, u.String()) + } +} + +func toCapitalHexDigits(ch rune) rune { + // convert a-f hex digits to A-F + switch ch { + case 'a': + return 'A' + case 'b': + return 'B' + case 'c': + return 'C' + case 'd': + return 'D' + case 'e': + return 'E' + case 'f': + return 'F' + default: + return ch + } +} + // SetVersion sets the version bits. func (u *UUID) SetVersion(v byte) { u[6] = (u[6] & 0x0f) | (v << 4) diff --git a/vendor/github.com/jarcoal/httpmock/.gitignore b/vendor/github.com/jarcoal/httpmock/.gitignore new file mode 100644 index 000000000..00268614f --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/.gitignore @@ -0,0 +1,22 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe diff --git a/vendor/github.com/jarcoal/httpmock/LICENSE b/vendor/github.com/jarcoal/httpmock/LICENSE new file mode 100644 index 000000000..438fbf545 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Jared Morse + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/jarcoal/httpmock/README.md b/vendor/github.com/jarcoal/httpmock/README.md new file mode 100644 index 000000000..e5fe0b6a1 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/README.md @@ -0,0 +1,252 @@ +# httpmock [![Build Status](https://github.com/jarcoal/httpmock/workflows/Build/badge.svg?branch=v1)](https://github.com/jarcoal/httpmock/actions?query=workflow%3ABuild) [![Coverage Status](https://coveralls.io/repos/github/jarcoal/httpmock/badge.svg?branch=v1)](https://coveralls.io/github/jarcoal/httpmock?branch=v1) [![GoDoc](https://godoc.org/github.com/jarcoal/httpmock?status.svg)](https://godoc.org/github.com/jarcoal/httpmock) [![Version](https://img.shields.io/github/tag/jarcoal/httpmock.svg)](https://github.com/jarcoal/httpmock/releases) [![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go/#testing) + +Easy mocking of http responses from external resources. + +## Install + +Currently supports Go 1.7 - 1.15. + +`v1` branch has to be used instead of `master`. + + +### Using go modules (aka. `go mod`) + +In your go files, simply use: +```go +import "github.com/jarcoal/httpmock" +``` + +Then next `go mod tidy` or `go test` invocation will automatically +populate your `go.mod` with the last httpmock release, now +[![Version](https://img.shields.io/github/tag/jarcoal/httpmock.svg)](https://github.com/jarcoal/httpmock/releases). + +Note you can use `go mod vendor` to vendor your dependencies. + + +### Using `$GOPATH` + +`v1` branch is configured as the default branch in github, so: +``` +go get github.com/jarcoal/httpmock +``` + +automatically downloads the `v1` branch in `$GOPATH/src`. Then in your +go files use: +```go +import "github.com/jarcoal/httpmock" +``` + + +### Vendoring, using [`govendor`](https://github.com/kardianos/govendor) for example + +When vendoring is used, `v1` branch has to be specified. Two choices here: + +- preferred way: + ``` + govendor fetch github.com/jarcoal/httpmock@v1 + ``` + then in go files: + ```go + import "github.com/jarcoal/httpmock" + ``` +- old way (before `v1` was set as default branch), use gopkg to read from + `v1` branch: + ``` + govendor fetch gopkg.in/jarcoal/httpmock.v1 + ``` + then in go files: + ```go + import "gopkg.in/jarcoal/httpmock.v1" + ``` + + +## Usage + +### Simple Example: +```go +func TestFetchArticles(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + // Exact URL match + httpmock.RegisterResponder("GET", "https://api.mybiz.com/articles", + httpmock.NewStringResponder(200, `[{"id": 1, "name": "My Great Article"}]`)) + + // Regexp match (could use httpmock.RegisterRegexpResponder instead) + httpmock.RegisterResponder("GET", `=~^https://api\.mybiz\.com/articles/id/\d+\z`, + httpmock.NewStringResponder(200, `{"id": 1, "name": "My Great Article"}`)) + + // do stuff that makes a request to articles + ... + + // get count info + httpmock.GetTotalCallCount() + + // get the amount of calls for the registered responder + info := httpmock.GetCallCountInfo() + info["GET https://api.mybiz.com/articles"] // number of GET calls made to https://api.mybiz.com/articles + info["GET https://api.mybiz.com/articles/id/12"] // number of GET calls made to https://api.mybiz.com/articles/id/12 + info[`GET =~^https://api\.mybiz\.com/articles/id/\d+\z`] // number of GET calls made to https://api.mybiz.com/articles/id/ +} +``` + +### Advanced Example: +```go +func TestFetchArticles(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + // our database of articles + articles := make([]map[string]interface{}, 0) + + // mock to list out the articles + httpmock.RegisterResponder("GET", "https://api.mybiz.com/articles", + func(req *http.Request) (*http.Response, error) { + resp, err := httpmock.NewJsonResponse(200, articles) + if err != nil { + return httpmock.NewStringResponse(500, ""), nil + } + return resp, nil + }, + ) + + // return an article related to the request with the help of regexp submatch (\d+) + httpmock.RegisterResponder("GET", `=~^https://api\.mybiz\.com/articles/id/(\d+)\z`, + func(req *http.Request) (*http.Response, error) { + // Get ID from request + id := httpmock.MustGetSubmatchAsUint(req, 1) // 1=first regexp submatch + return httpmock.NewJsonResponse(200, map[string]interface{}{ + "id": id, + "name": "My Great Article", + }) + }, + ) + + // mock to add a new article + httpmock.RegisterResponder("POST", "https://api.mybiz.com/articles", + func(req *http.Request) (*http.Response, error) { + article := make(map[string]interface{}) + if err := json.NewDecoder(req.Body).Decode(&article); err != nil { + return httpmock.NewStringResponse(400, ""), nil + } + + articles = append(articles, article) + + resp, err := httpmock.NewJsonResponse(200, article) + if err != nil { + return httpmock.NewStringResponse(500, ""), nil + } + return resp, nil + }, + ) + + // do stuff that adds and checks articles +} +``` + +### Algorithm + +When `GET http://example.tld/some/path?b=12&a=foo&a=bar` request is +caught, all standard responders are checked against the following URL +or paths, the first match stops the search: + +1. `http://example.tld/some/path?b=12&a=foo&a=bar` (original URL) +1. `http://example.tld/some/path?a=bar&a=foo&b=12` (sorted query params) +1. `http://example.tld/some/path` (without query params) +1. `/some/path?b=12&a=foo&a=bar` (original URL without scheme and host) +1. `/some/path?a=bar&a=foo&b=12` (same, but sorted query params) +1. `/some/path` (path only) + +If no standard responder matched, the regexp responders are checked, +in the same order, the first match stops the search. + + +### [Ginkgo](https://onsi.github.io/ginkgo/) Example: +```go +// article_suite_test.go + +import ( + // ... + "github.com/jarcoal/httpmock" +) +// ... +var _ = BeforeSuite(func() { + // block all HTTP requests + httpmock.Activate() +}) + +var _ = BeforeEach(func() { + // remove any mocks + httpmock.Reset() +}) + +var _ = AfterSuite(func() { + httpmock.DeactivateAndReset() +}) + + +// article_test.go + +import ( + // ... + "github.com/jarcoal/httpmock" +) + +var _ = Describe("Articles", func() { + It("returns a list of articles", func() { + httpmock.RegisterResponder("GET", "https://api.mybiz.com/articles.json", + httpmock.NewStringResponder(200, `[{"id": 1, "name": "My Great Article"}]`)) + + // do stuff that makes a request to articles.json + }) +}) +``` + +### [Ginkgo](https://onsi.github.io/ginkgo/) + [Resty](https://github.com/go-resty/resty) Example: +```go +// article_suite_test.go + +import ( + // ... + "github.com/jarcoal/httpmock" + "github.com/go-resty/resty" +) +// ... +var _ = BeforeSuite(func() { + // block all HTTP requests + httpmock.ActivateNonDefault(resty.DefaultClient.GetClient()) +}) + +var _ = BeforeEach(func() { + // remove any mocks + httpmock.Reset() +}) + +var _ = AfterSuite(func() { + httpmock.DeactivateAndReset() +}) + + +// article_test.go + +import ( + // ... + "github.com/jarcoal/httpmock" + "github.com/go-resty/resty" +) + +var _ = Describe("Articles", func() { + It("returns a list of articles", func() { + fixture := `{"status":{"message": "Your message", "code": 200}}` + responder := httpmock.NewStringResponder(200, fixture) + fakeUrl := "https://api.mybiz.com/articles.json" + httpmock.RegisterResponder("GET", fakeUrl, responder) + + // fetch the article into struct + articleObject := &models.Article{} + _, err := resty.R().SetResult(articleObject).Get(fakeUrl) + + // do stuff with the article object ... + }) +}) +``` diff --git a/vendor/github.com/jarcoal/httpmock/doc.go b/vendor/github.com/jarcoal/httpmock/doc.go new file mode 100644 index 000000000..b743af020 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/doc.go @@ -0,0 +1,81 @@ +/* +Package httpmock provides tools for mocking HTTP responses. + +Simple Example: + func TestFetchArticles(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + // Exact URL match + httpmock.RegisterResponder("GET", "https://api.mybiz.com/articles", + httpmock.NewStringResponder(200, `[{"id": 1, "name": "My Great Article"}]`)) + + // Regexp match (could use httpmock.RegisterRegexpResponder instead) + httpmock.RegisterResponder("GET", `=~^https://api\.mybiz\.com/articles/id/\d+\z`, + httpmock.NewStringResponder(200, `{"id": 1, "name": "My Great Article"}`)) + + // do stuff that makes a request to articles + + // get count info + httpmock.GetTotalCallCount() + + // get the amount of calls for the registered responder + info := httpmock.GetCallCountInfo() + info["GET https://api.mybiz.com/articles"] // number of GET calls made to https://api.mybiz.com/articles + info["GET https://api.mybiz.com/articles/id/12"] // number of GET calls made to https://api.mybiz.com/articles/id/12 + info[`GET =~^https://api\.mybiz\.com/articles/id/\d+\z`] // number of GET calls made to https://api.mybiz.com/articles/id/ + } + +Advanced Example: + func TestFetchArticles(t *testing.T) { + httpmock.Activate() + defer httpmock.DeactivateAndReset() + + // our database of articles + articles := make([]map[string]interface{}, 0) + + // mock to list out the articles + httpmock.RegisterResponder("GET", "https://api.mybiz.com/articles", + func(req *http.Request) (*http.Response, error) { + resp, err := httpmock.NewJsonResponse(200, articles) + if err != nil { + return httpmock.NewStringResponse(500, ""), nil + } + return resp, nil + }, + ) + + // return an article related to the request with the help of regexp submatch (\d+) + httpmock.RegisterResponder("GET", `=~^https://api\.mybiz\.com/articles/id/(\d+)\z`, + func(req *http.Request) (*http.Response, error) { + // Get ID from request + id := httpmock.MustGetSubmatchAsUint(req, 1) // 1=first regexp submatch + return httpmock.NewJsonResponse(200, map[string]interface{}{ + "id": id, + "name": "My Great Article", + }) + }, + ) + + // mock to add a new article + httpmock.RegisterResponder("POST", "https://api.mybiz.com/articles", + func(req *http.Request) (*http.Response, error) { + article := make(map[string]interface{}) + if err := json.NewDecoder(req.Body).Decode(&article); err != nil { + return httpmock.NewStringResponse(400, ""), nil + } + + articles = append(articles, article) + + resp, err := httpmock.NewJsonResponse(200, article) + if err != nil { + return httpmock.NewStringResponse(500, ""), nil + } + return resp, nil + }, + ) + + // do stuff that adds and checks articles + } +*/ +package httpmock diff --git a/vendor/github.com/jarcoal/httpmock/env.go b/vendor/github.com/jarcoal/httpmock/env.go new file mode 100644 index 000000000..41224683c --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/env.go @@ -0,0 +1,13 @@ +package httpmock + +import ( + "os" +) + +var envVarName = "GONOMOCKS" + +// Disabled allows to test whether httpmock is enabled or not. It +// depends on GONOMOCKS environment variable. +func Disabled() bool { + return os.Getenv(envVarName) != "" +} diff --git a/vendor/github.com/jarcoal/httpmock/file.go b/vendor/github.com/jarcoal/httpmock/file.go new file mode 100644 index 000000000..a363ed65f --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/file.go @@ -0,0 +1,57 @@ +package httpmock + +import ( + "fmt" + "io/ioutil" +) + +// File is a file name. The contents of this file is loaded on demand +// by the following methods. +// +// Note that: +// file := httpmock.File("file.txt") +// fmt.Printf("file: %s\n", file) +// +// prints the content of file "file.txt" as String() method is used. +// +// To print the file name, and not its content, simply do: +// file := httpmock.File("file.txt") +// fmt.Printf("file: %s\n", string(file)) +type File string + +// MarshalJSON implements json.Marshaler. +// +// Useful to be used in conjunction with NewJsonResponse() or +// NewJsonResponder() as in: +// httpmock.NewJsonResponder(200, httpmock.File("body.json")) +func (f File) MarshalJSON() ([]byte, error) { + return f.bytes() +} + +func (f File) bytes() ([]byte, error) { + return ioutil.ReadFile(string(f)) +} + +// Bytes returns the content of file as a []byte. If an error occurs +// during the opening or reading of the file, it panics. +// +// Useful to be used in conjunction with NewBytesResponse() or +// NewBytesResponder() as in: +// httpmock.NewBytesResponder(200, httpmock.File("body.raw").Bytes()) +func (f File) Bytes() []byte { + b, err := f.bytes() + if err != nil { + panic(fmt.Sprintf("Cannot read %s: %s", string(f), err)) + } + return b +} + +// String returns the content of file as a string. If an error occurs +// during the opening or reading of the file, it panics. +// +// Useful to be used in conjunction with NewStringResponse() or +// NewStringResponder() as in: +// httpmock.NewStringResponder(200, httpmock.File("body.txt").String()) +func (f File) String() string { + return string(f.Bytes()) +} diff --git a/vendor/github.com/jarcoal/httpmock/go.mod b/vendor/github.com/jarcoal/httpmock/go.mod new file mode 100644 index 000000000..de84fc993 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/go.mod @@ -0,0 +1,3 @@ +module github.com/jarcoal/httpmock + +go 1.7 diff --git a/vendor/github.com/jarcoal/httpmock/internal/route_key.go b/vendor/github.com/jarcoal/httpmock/internal/route_key.go new file mode 100644 index 000000000..dbbad5047 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/internal/route_key.go @@ -0,0 +1,15 @@ +package internal + +type RouteKey struct { + Method string + URL string +} + +var NoResponder RouteKey + +func (r RouteKey) String() string { + if r == NoResponder { + return "NO_RESPONDER" + } + return r.Method + " " + r.URL +} diff --git a/vendor/github.com/jarcoal/httpmock/internal/stack_tracer.go b/vendor/github.com/jarcoal/httpmock/internal/stack_tracer.go new file mode 100644 index 000000000..c77198340 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/internal/stack_tracer.go @@ -0,0 +1,85 @@ +package internal + +import ( + "bytes" + "fmt" + "net/http" + "runtime" + "strings" +) + +type StackTracer struct { + CustomFn func(...interface{}) + Err error +} + +func (n StackTracer) Error() string { + if n.Err == nil { + return "" + } + return n.Err.Error() +} + +// CheckStackTracer checks for specific error returned by +// NewNotFoundResponder function or Trace Responder method. +func CheckStackTracer(req *http.Request, err error) error { + if nf, ok := err.(StackTracer); ok { + if nf.CustomFn != nil { + pc := make([]uintptr, 128) + npc := runtime.Callers(2, pc) + pc = pc[:npc] + + var mesg bytes.Buffer + var netHTTPBegin, netHTTPEnd bool + + // Start recording at first net/http call if any... + for { + frames := runtime.CallersFrames(pc) + + var lastFn string + for { + frame, more := frames.Next() + + if !netHTTPEnd { + if netHTTPBegin { + netHTTPEnd = !strings.HasPrefix(frame.Function, "net/http.") + } else { + netHTTPBegin = strings.HasPrefix(frame.Function, "net/http.") + } + } + + if netHTTPEnd { + if lastFn != "" { + if mesg.Len() == 0 { + if nf.Err != nil { + mesg.WriteString(nf.Err.Error()) + } else { + fmt.Fprintf(&mesg, "%s %s", req.Method, req.URL) + } + mesg.WriteString("\nCalled from ") + } else { + mesg.WriteString("\n ") + } + fmt.Fprintf(&mesg, "%s()\n at %s:%d", lastFn, frame.File, frame.Line) + } + } + lastFn = frame.Function + + if !more { + break + } + } + + // At least one net/http frame found + if mesg.Len() > 0 { + break + } + netHTTPEnd = true // retry without looking at net/http frames + } + + nf.CustomFn(mesg.String()) + } + err = nf.Err + } + return err +} diff --git a/vendor/github.com/jarcoal/httpmock/internal/submatches.go b/vendor/github.com/jarcoal/httpmock/internal/submatches.go new file mode 100644 index 000000000..8d071e07a --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/internal/submatches.go @@ -0,0 +1,22 @@ +package internal + +import ( + "context" + "net/http" +) + +type submatchesKeyType struct{} + +var submatchesKey submatchesKeyType + +func SetSubmatches(req *http.Request, submatches []string) *http.Request { + if len(submatches) > 0 { + return req.WithContext(context.WithValue(req.Context(), submatchesKey, submatches)) + } + return req +} + +func GetSubmatches(req *http.Request) []string { + sm, _ := req.Context().Value(submatchesKey).([]string) + return sm +} diff --git a/vendor/github.com/jarcoal/httpmock/response.go b/vendor/github.com/jarcoal/httpmock/response.go new file mode 100644 index 000000000..5d3bc9f7a --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/response.go @@ -0,0 +1,451 @@ +package httpmock + +import ( + "bytes" + "encoding/json" + "encoding/xml" + "fmt" + "io" + "net/http" + "strconv" + "strings" + "sync" + + "github.com/jarcoal/httpmock/internal" +) + +// Responder is a callback that receives an http request and returns +// a mocked response. +type Responder func(*http.Request) (*http.Response, error) + +func (r Responder) times(name string, n int, fn ...func(...interface{})) Responder { + count := 0 + return func(req *http.Request) (*http.Response, error) { + count++ + if count > n { + err := internal.StackTracer{ + Err: fmt.Errorf("Responder not found for %s %s (coz %s and already called %d times)", req.Method, req.URL, name, count), + } + if len(fn) > 0 { + err.CustomFn = fn[0] + } + return nil, err + } + return r(req) + } +} + +// Times returns a Responder callable n times before returning an +// error. If the Responder is called more than n times and fn is +// passed and non-nil, it acts as the fn parameter of +// NewNotFoundResponder, allowing to dump the stack trace to localize +// the origin of the call. +// import ( +// "testing" +// "github.com/jarcoal/httpmock" +// ) +// ... +// func TestMyApp(t *testing.T) { +// ... +// // This responder is callable 3 times, then an error is returned and +// // the stacktrace of the call logged using t.Log() +// httpmock.RegisterResponder("GET", "/foo/bar", +// httpmock.NewStringResponder(200, "{}").Times(3, t.Log), +// ) +func (r Responder) Times(n int, fn ...func(...interface{})) Responder { + return r.times("Times", n, fn...) +} + +// Once returns a new Responder callable once before returning an +// error. If the Responder is called 2 or more times and fn is passed +// and non-nil, it acts as the fn parameter of NewNotFoundResponder, +// allowing to dump the stack trace to localize the origin of the +// call. +// import ( +// "testing" +// "github.com/jarcoal/httpmock" +// ) +// ... +// func TestMyApp(t *testing.T) { +// ... +// // This responder is callable only once, then an error is returned and +// // the stacktrace of the call logged using t.Log() +// httpmock.RegisterResponder("GET", "/foo/bar", +// httpmock.NewStringResponder(200, "{}").Once(t.Log), +// ) +func (r Responder) Once(fn ...func(...interface{})) Responder { + return r.times("Once", 1, fn...) +} + +// Trace returns a new Responder that allows to easily trace the calls +// of the original Responder using fn. It can be used in conjunction +// with the testing package as in the example below with the help of +// (*testing.T).Log method: +// import ( +// "testing" +// "github.com/jarcoal/httpmock" +// ) +// ... +// func TestMyApp(t *testing.T) { +// ... +// httpmock.RegisterResponder("GET", "/foo/bar", +// httpmock.NewStringResponder(200, "{}").Trace(t.Log), +// ) +func (r Responder) Trace(fn func(...interface{})) Responder { + return func(req *http.Request) (*http.Response, error) { + resp, err := r(req) + return resp, internal.StackTracer{ + CustomFn: fn, + Err: err, + } + } +} + +// ResponderFromResponse wraps an *http.Response in a Responder. +// +// Be careful, except for responses generated by httpmock +// (NewStringResponse and NewBytesResponse functions) for which there +// is no problems, it is the caller responsibility to ensure the +// response body can be read several times and concurrently if needed, +// as it is shared among all Responder returned responses. +// +// For home-made responses, NewRespBodyFromString and +// NewRespBodyFromBytes functions can be used to produce response +// bodies that can be read several times and concurrently. +func ResponderFromResponse(resp *http.Response) Responder { + return func(req *http.Request) (*http.Response, error) { + res := *resp + + // Our stuff: generate a new io.ReadCloser instance sharing the same buffer + if body, ok := resp.Body.(*dummyReadCloser); ok { + res.Body = body.copy() + } + + res.Request = req + return &res, nil + } +} + +// ResponderFromMultipleResponses wraps an *http.Response list in a Responder. +// +// Each response will be returned in the order of the provided list. +// If the responder is called more than the size of the provided list, an error +// will be thrown. +// +// Be careful, except for responses generated by httpmock +// (NewStringResponse and NewBytesResponse functions) for which there +// is no problems, it is the caller responsibility to ensure the +// response body can be read several times and concurrently if needed, +// as it is shared among all Responder returned responses. +// +// For home-made responses, NewRespBodyFromString and +// NewRespBodyFromBytes functions can be used to produce response +// bodies that can be read several times and concurrently. +// +// If all responses have been returned and fn is passed +// and non-nil, it acts as the fn parameter of NewNotFoundResponder, +// allowing to dump the stack trace to localize the origin of the +// call. +// import ( +// "github.com/jarcoal/httpmock" +// "testing" +// ) +// ... +// func TestMyApp(t *testing.T) { +// ... +// // This responder is callable only once, then an error is returned and +// // the stacktrace of the call logged using t.Log() +// httpmock.RegisterResponder("GET", "/foo/bar", +// httpmock.ResponderFromMultipleResponses( +// []*http.Response{ +// httpmock.NewStringResponse(200, `{"name":"bar"}`), +// httpmock.NewStringResponse(404, `{"mesg":"Not found"}`), +// }, +// t.Log), +// ) +// } +func ResponderFromMultipleResponses(responses []*http.Response, fn ...func(...interface{})) Responder { + responseIndex := 0 + mutex := sync.Mutex{} + return func(req *http.Request) (*http.Response, error) { + mutex.Lock() + defer mutex.Unlock() + defer func() { responseIndex++ }() + if responseIndex >= len(responses) { + err := internal.StackTracer{ + Err: fmt.Errorf("not enough responses provided: responder called %d time(s) but %d response(s) provided", responseIndex+1, len(responses)), + } + if len(fn) > 0 { + err.CustomFn = fn[0] + } + return nil, err + } + res := *responses[responseIndex] + // Our stuff: generate a new io.ReadCloser instance sharing the same buffer + if body, ok := responses[responseIndex].Body.(*dummyReadCloser); ok { + res.Body = body.copy() + } + + res.Request = req + return &res, nil + } +} + +// NewErrorResponder creates a Responder that returns an empty request and the +// given error. This can be used to e.g. imitate more deep http errors for the +// client. +func NewErrorResponder(err error) Responder { + return func(req *http.Request) (*http.Response, error) { + return nil, err + } +} + +// NewNotFoundResponder creates a Responder typically used in +// conjunction with RegisterNoResponder() function and testing +// package, to be proactive when a Responder is not found. fn is +// called with a unique string parameter containing the name of the +// missing route and the stack trace to localize the origin of the +// call. If fn returns (= if it does not panic), the responder returns +// an error of the form: "Responder not found for GET http://foo.bar/path". +// Note that fn can be nil. +// +// It is useful when writing tests to ensure that all routes have been +// mocked. +// +// Example of use: +// import ( +// "testing" +// "github.com/jarcoal/httpmock" +// ) +// ... +// func TestMyApp(t *testing.T) { +// ... +// // Calls testing.Fatal with the name of Responder-less route and +// // the stack trace of the call. +// httpmock.RegisterNoResponder(httpmock.NewNotFoundResponder(t.Fatal)) +// +// Will abort the current test and print something like: +// transport_test.go:735: Called from net/http.Get() +// at /go/src/github.com/jarcoal/httpmock/transport_test.go:714 +// github.com/jarcoal/httpmock.TestCheckStackTracer() +// at /go/src/testing/testing.go:865 +// testing.tRunner() +// at /go/src/runtime/asm_amd64.s:1337 +func NewNotFoundResponder(fn func(...interface{})) Responder { + return func(req *http.Request) (*http.Response, error) { + return nil, internal.StackTracer{ + CustomFn: fn, + Err: fmt.Errorf("Responder not found for %s %s", req.Method, req.URL), + } + } +} + +// NewStringResponse creates an *http.Response with a body based on +// the given string. Also accepts an http status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewStringResponse(200, httpmock.File("body.txt").String()) +func NewStringResponse(status int, body string) *http.Response { + return &http.Response{ + Status: strconv.Itoa(status), + StatusCode: status, + Body: NewRespBodyFromString(body), + Header: http.Header{}, + ContentLength: -1, + } +} + +// NewStringResponder creates a Responder from a given body (as a string) and status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewStringResponder(200, httpmock.File("body.txt").String()) +func NewStringResponder(status int, body string) Responder { + return ResponderFromResponse(NewStringResponse(status, body)) +} + +// NewBytesResponse creates an *http.Response with a body based on the +// given bytes. Also accepts an http status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewBytesResponse(200, httpmock.File("body.raw").Bytes()) +func NewBytesResponse(status int, body []byte) *http.Response { + return &http.Response{ + Status: strconv.Itoa(status), + StatusCode: status, + Body: NewRespBodyFromBytes(body), + Header: http.Header{}, + ContentLength: -1, + } +} + +// NewBytesResponder creates a Responder from a given body (as a byte +// slice) and status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewBytesResponder(200, httpmock.File("body.raw").Bytes()) +func NewBytesResponder(status int, body []byte) Responder { + return ResponderFromResponse(NewBytesResponse(status, body)) +} + +// NewJsonResponse creates an *http.Response with a body that is a +// json encoded representation of the given interface{}. Also accepts +// an http status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewJsonResponse(200, httpmock.File("body.json")) +func NewJsonResponse(status int, body interface{}) (*http.Response, error) { // nolint: golint + encoded, err := json.Marshal(body) + if err != nil { + return nil, err + } + response := NewBytesResponse(status, encoded) + response.Header.Set("Content-Type", "application/json") + return response, nil +} + +// NewJsonResponder creates a Responder from a given body (as an +// interface{} that is encoded to json) and status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewJsonResponder(200, httpmock.File("body.json")) +func NewJsonResponder(status int, body interface{}) (Responder, error) { // nolint: golint + resp, err := NewJsonResponse(status, body) + if err != nil { + return nil, err + } + return ResponderFromResponse(resp), nil +} + +// NewJsonResponderOrPanic is like NewJsonResponder but panics in case of error. +// +// It simplifies the call of RegisterResponder, avoiding the use of a +// temporary variable and an error check, and so can be used as +// NewStringResponder or NewBytesResponder in such context: +// httpmock.RegisterResponder( +// "GET", +// "/test/path", +// httpmock.NewJSONResponderOrPanic(200, &MyBody), +// ) +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewJsonResponderOrPanic(200, httpmock.File("body.json")) +func NewJsonResponderOrPanic(status int, body interface{}) Responder { // nolint: golint + responder, err := NewJsonResponder(status, body) + if err != nil { + panic(err) + } + return responder +} + +// NewXmlResponse creates an *http.Response with a body that is an xml +// encoded representation of the given interface{}. Also accepts an +// http status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewXmlResponse(200, httpmock.File("body.xml")) +func NewXmlResponse(status int, body interface{}) (*http.Response, error) { // nolint: golint + var ( + encoded []byte + err error + ) + if f, ok := body.(File); ok { + encoded, err = f.bytes() + } else { + encoded, err = xml.Marshal(body) + } + if err != nil { + return nil, err + } + response := NewBytesResponse(status, encoded) + response.Header.Set("Content-Type", "application/xml") + return response, nil +} + +// NewXmlResponder creates a Responder from a given body (as an +// interface{} that is encoded to xml) and status code. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewXmlResponder(200, httpmock.File("body.xml")) +func NewXmlResponder(status int, body interface{}) (Responder, error) { // nolint: golint + resp, err := NewXmlResponse(status, body) + if err != nil { + return nil, err + } + return ResponderFromResponse(resp), nil +} + +// NewXmlResponderOrPanic is like NewXmlResponder but panics in case of error. +// +// It simplifies the call of RegisterResponder, avoiding the use of a +// temporary variable and an error check, and so can be used as +// NewStringResponder or NewBytesResponder in such context: +// httpmock.RegisterResponder( +// "GET", +// "/test/path", +// httpmock.NewXmlResponderOrPanic(200, &MyBody), +// ) +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewXmlResponderOrPanic(200, httpmock.File("body.xml")) +func NewXmlResponderOrPanic(status int, body interface{}) Responder { // nolint: golint + responder, err := NewXmlResponder(status, body) + if err != nil { + panic(err) + } + return responder +} + +// NewRespBodyFromString creates an io.ReadCloser from a string that +// is suitable for use as an http response body. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewRespBodyFromString(httpmock.File("body.txt").String()) +func NewRespBodyFromString(body string) io.ReadCloser { + return &dummyReadCloser{orig: body} +} + +// NewRespBodyFromBytes creates an io.ReadCloser from a byte slice +// that is suitable for use as an http response body. +// +// To pass the content of an existing file as body use httpmock.File as in: +// httpmock.NewRespBodyFromBytes(httpmock.File("body.txt").Bytes()) +func NewRespBodyFromBytes(body []byte) io.ReadCloser { + return &dummyReadCloser{orig: body} +} + +type dummyReadCloser struct { + orig interface{} // string or []byte + body io.ReadSeeker // instanciated on demand from orig +} + +// copy returns a new instance resetting d.body to nil. +func (d *dummyReadCloser) copy() *dummyReadCloser { + return &dummyReadCloser{orig: d.orig} +} + +// setup ensures d.body is correctly initialized. +func (d *dummyReadCloser) setup() { + if d.body == nil { + switch body := d.orig.(type) { + case string: + d.body = strings.NewReader(body) + case []byte: + d.body = bytes.NewReader(body) + } + } +} + +func (d *dummyReadCloser) Read(p []byte) (n int, err error) { + d.setup() + n, err = d.body.Read(p) + if err == io.EOF { + d.body.Seek(0, 0) // nolint: errcheck + } + return n, err +} + +func (d *dummyReadCloser) Close() error { + d.setup() + d.body.Seek(0, 0) // nolint: errcheck + return nil +} diff --git a/vendor/github.com/jarcoal/httpmock/transport.go b/vendor/github.com/jarcoal/httpmock/transport.go new file mode 100644 index 000000000..0394f7c64 --- /dev/null +++ b/vendor/github.com/jarcoal/httpmock/transport.go @@ -0,0 +1,1040 @@ +package httpmock + +import ( + "bytes" + "errors" + "fmt" + "net/http" + "net/url" + "regexp" + "sort" + "strconv" + "strings" + "sync" + + "github.com/jarcoal/httpmock/internal" +) + +const regexpPrefix = "=~" + +// NoResponderFound is returned when no responders are found for a +// given HTTP method and URL. +var NoResponderFound = errors.New("no responder found") // nolint: golint + +// ConnectionFailure is a responder that returns a connection failure. +// This is the default responder, and is called when no other matching +// responder is found. +func ConnectionFailure(*http.Request) (*http.Response, error) { + return nil, NoResponderFound +} + +// NewMockTransport creates a new *MockTransport with no responders. +func NewMockTransport() *MockTransport { + return &MockTransport{ + responders: make(map[internal.RouteKey]Responder), + callCountInfo: make(map[internal.RouteKey]int), + } +} + +type regexpResponder struct { + origRx string + method string + rx *regexp.Regexp + responder Responder +} + +// MockTransport implements http.RoundTripper, which fulfills single +// http requests issued by an http.Client. This implementation +// doesn't actually make the call, instead deferring to the registered +// list of responders. +type MockTransport struct { + mu sync.RWMutex + responders map[internal.RouteKey]Responder + regexpResponders []regexpResponder + noResponder Responder + callCountInfo map[internal.RouteKey]int + totalCallCount int +} + +// RoundTrip receives HTTP requests and routes them to the appropriate +// responder. It is required to implement the http.RoundTripper +// interface. You will not interact with this directly, instead the +// *http.Client you are using will call it for you. +func (m *MockTransport) RoundTrip(req *http.Request) (*http.Response, error) { + url := req.URL.String() + + method := req.Method + if method == "" { + // http.Request.Method is documented to default to GET: + method = http.MethodGet + } + + var ( + responder Responder + respKey internal.RouteKey + submatches []string + ) + key := internal.RouteKey{ + Method: method, + } + for _, getResponder := range []func(internal.RouteKey) (Responder, internal.RouteKey, []string){ + m.responderForKey, // Exact match + m.regexpResponderForKey, // Regexp match + } { + // try and get a responder that matches the method and URL with + // query params untouched: http://z.tld/path?q... + key.URL = url + responder, respKey, submatches = getResponder(key) + if responder != nil { + break + } + + // if we weren't able to find a responder, try with the URL *and* + // sorted query params + query := sortedQuery(req.URL.Query()) + if query != "" { + // Replace unsorted query params by sorted ones: + // http://z.tld/path?sorted_q... + key.URL = strings.Replace(url, req.URL.RawQuery, query, 1) + responder, respKey, submatches = getResponder(key) + if responder != nil { + break + } + } + + // if we weren't able to find a responder, try without any query params + strippedURL := *req.URL + strippedURL.RawQuery = "" + strippedURL.Fragment = "" + + // go1.6 does not handle URL.ForceQuery, so in case it is set in go>1.6, + // remove the "?" manually if present. + surl := strings.TrimSuffix(strippedURL.String(), "?") + + hasQueryString := url != surl + + // if the URL contains a querystring then we strip off the + // querystring and try again: http://z.tld/path + if hasQueryString { + key.URL = surl + responder, respKey, submatches = getResponder(key) + if responder != nil { + break + } + } + + // if we weren't able to find a responder for the full URL, try with + // the path part only + pathAlone := req.URL.Path + + // First with unsorted querystring: /path?q... + if hasQueryString { + key.URL = pathAlone + strings.TrimPrefix(url, surl) // concat after-path part + responder, respKey, submatches = getResponder(key) + if responder != nil { + break + } + + // Then with sorted querystring: /path?sorted_q... + key.URL = pathAlone + "?" + sortedQuery(req.URL.Query()) + if req.URL.Fragment != "" { + key.URL += "#" + req.URL.Fragment + } + responder, respKey, submatches = getResponder(key) + if responder != nil { + break + } + } + + // Then using path alone: /path + key.URL = pathAlone + responder, respKey, submatches = getResponder(key) + if responder != nil { + break + } + } + + m.mu.Lock() + // if we found a responder, call it + if responder != nil { + m.callCountInfo[key]++ + if key != respKey { + m.callCountInfo[respKey]++ + } + m.totalCallCount++ + } else if m.noResponder != nil { + // we didn't find a responder, so fire the 'no responder' responder + m.callCountInfo[internal.NoResponder]++ + m.totalCallCount++ + responder = m.noResponder + } + m.mu.Unlock() + + if responder == nil { + return ConnectionFailure(req) + } + return runCancelable(responder, internal.SetSubmatches(req, submatches)) +} + +// NumResponders returns the number of responders currently in use. +func (m *MockTransport) NumResponders() int { + m.mu.RLock() + defer m.mu.RUnlock() + return len(m.responders) + len(m.regexpResponders) +} + +func runCancelable(responder Responder, req *http.Request) (*http.Response, error) { + ctx := req.Context() + if req.Cancel == nil && ctx.Done() == nil { // nolint: staticcheck + resp, err := responder(req) + return resp, internal.CheckStackTracer(req, err) + } + + // Set up a goroutine that translates a close(req.Cancel) into a + // "request canceled" error, and another one that runs the + // responder. Then race them: first to the result channel wins. + + type result struct { + response *http.Response + err error + } + resultch := make(chan result, 1) + done := make(chan struct{}, 1) + + go func() { + select { + case <-req.Cancel: // nolint: staticcheck + resultch <- result{ + response: nil, + err: errors.New("request canceled"), + } + case <-ctx.Done(): + resultch <- result{ + response: nil, + err: ctx.Err(), + } + case <-done: + } + }() + + go func() { + defer func() { + if err := recover(); err != nil { + resultch <- result{ + response: nil, + err: fmt.Errorf("panic in responder: got %q", err), + } + } + }() + + response, err := responder(req) + resultch <- result{ + response: response, + err: err, + } + }() + + r := <-resultch + + // if a cancel() issued from context.WithCancel() or a + // close(req.Cancel) are never coming, we'll need to unblock the + // first goroutine. + done <- struct{}{} + + return r.response, internal.CheckStackTracer(req, r.err) +} + +// responderForKey returns a responder for a given key. +func (m *MockTransport) responderForKey(key internal.RouteKey) (Responder, internal.RouteKey, []string) { + m.mu.RLock() + defer m.mu.RUnlock() + return m.responders[key], key, nil +} + +// responderForKeyUsingRegexp returns the first responder matching a +// given key using regexps. +func (m *MockTransport) regexpResponderForKey(key internal.RouteKey) (Responder, internal.RouteKey, []string) { + m.mu.RLock() + defer m.mu.RUnlock() + for _, regInfo := range m.regexpResponders { + if regInfo.method == key.Method { + if sm := regInfo.rx.FindStringSubmatch(key.URL); sm != nil { + if len(sm) == 1 { + sm = nil + } else { + sm = sm[1:] + } + return regInfo.responder, internal.RouteKey{ + Method: key.Method, + URL: regInfo.origRx, + }, sm + } + } + } + return nil, key, nil +} + +func isRegexpURL(url string) bool { + return strings.HasPrefix(url, regexpPrefix) +} + +// RegisterResponder adds a new responder, associated with a given +// HTTP method and URL (or path). +// +// When a request comes in that matches, the responder is called and +// the response returned to the client. +// +// If url contains query parameters, their order matters as well as +// their content. All following URLs are here considered as different: +// http://z.tld?a=1&b=1 +// http://z.tld?b=1&a=1 +// http://z.tld?a&b +// http://z.tld?a=&b= +// +// If url begins with "=~", the following chars are considered as a +// regular expression. If this regexp can not be compiled, it panics. +// Note that the "=~" prefix remains in statistics returned by +// GetCallCountInfo(). As 2 regexps can match the same URL, the regexp +// responders are tested in the order they are registered. Registering +// an already existing regexp responder (same method & same regexp +// string) replaces its responder but does not change its position. +// +// See RegisterRegexpResponder() to directly pass a *regexp.Regexp. +// +// Example: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.DeactivateAndReset() +// +// httpmock.RegisterResponder("GET", "http://example.com/", +// httpmock.NewStringResponder(200, "hello world")) +// +// httpmock.RegisterResponder("GET", "/path/only", +// httpmock.NewStringResponder("any host hello world", 200)) +// +// httpmock.RegisterResponder("GET", `=~^/item/id/\d+\z`, +// httpmock.NewStringResponder("any item get", 200)) +// +// // requests to http://example.com/ now return "hello world" and +// // requests to any host with path /path/only return "any host hello world" +// // requests to any host with path matching ^/item/id/\d+\z regular expression return "any item get" +// } +func (m *MockTransport) RegisterResponder(method, url string, responder Responder) { + if isRegexpURL(url) { + m.registerRegexpResponder(regexpResponder{ + origRx: url, + method: method, + rx: regexp.MustCompile(url[2:]), + responder: responder, + }) + return + } + + key := internal.RouteKey{ + Method: method, + URL: url, + } + + m.mu.Lock() + m.responders[key] = responder + m.callCountInfo[key] = 0 + m.mu.Unlock() +} + +func (m *MockTransport) registerRegexpResponder(regexpResponder regexpResponder) { + m.mu.Lock() + defer m.mu.Unlock() + +found: + for { + for i, rr := range m.regexpResponders { + if rr.method == regexpResponder.method && rr.origRx == regexpResponder.origRx { + m.regexpResponders[i] = regexpResponder + break found + } + } + m.regexpResponders = append(m.regexpResponders, regexpResponder) + break // nolint: staticcheck + } + + m.callCountInfo[internal.RouteKey{ + Method: regexpResponder.method, + URL: regexpResponder.origRx, + }] = 0 +} + +// RegisterRegexpResponder adds a new responder, associated with a given +// HTTP method and URL (or path) regular expression. +// +// When a request comes in that matches, the responder is called and +// the response returned to the client. +// +// As 2 regexps can match the same URL, the regexp responders are +// tested in the order they are registered. Registering an already +// existing regexp responder (same method & same regexp string) +// replaces its responder but does not change its position. +// +// A "=~" prefix is added to the stringified regexp in the statistics +// returned by GetCallCountInfo(). +// +// See RegisterResponder function and the "=~" prefix in its url +// parameter to avoid compiling the regexp by yourself. +func (m *MockTransport) RegisterRegexpResponder(method string, urlRegexp *regexp.Regexp, responder Responder) { + m.registerRegexpResponder(regexpResponder{ + origRx: regexpPrefix + urlRegexp.String(), + method: method, + rx: urlRegexp, + responder: responder, + }) +} + +// RegisterResponderWithQuery is same as RegisterResponder, but it +// doesn't depend on query items order. +// +// If query is non-nil, its type can be: +// url.Values +// map[string]string +// string, a query string like "a=12&a=13&b=z&c" (see net/url.ParseQuery function) +// +// If the query type is not recognized or the string cannot be parsed +// using net/url.ParseQuery, a panic() occurs. +// +// Unlike RegisterResponder, path cannot be prefixed by "=~" to say it +// is a regexp. If it is, a panic occurs. +func (m *MockTransport) RegisterResponderWithQuery(method, path string, query interface{}, responder Responder) { + if isRegexpURL(path) { + panic(`path begins with "=~", RegisterResponder should be used instead of RegisterResponderWithQuery`) + } + + var mapQuery url.Values + switch q := query.(type) { + case url.Values: + mapQuery = q + + case map[string]string: + mapQuery = make(url.Values, len(q)) + for key, e := range q { + mapQuery[key] = []string{e} + } + + case string: + var err error + mapQuery, err = url.ParseQuery(q) + if err != nil { + panic("RegisterResponderWithQuery bad query string: " + err.Error()) + } + + default: + if query != nil { + panic(fmt.Sprintf("RegisterResponderWithQuery bad query type %T. Only url.Values, map[string]string and string are allowed", query)) + } + } + + if queryString := sortedQuery(mapQuery); queryString != "" { + path += "?" + queryString + } + m.RegisterResponder(method, path, responder) +} + +func sortedQuery(m url.Values) string { + if len(m) == 0 { + return "" + } + + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + + var b bytes.Buffer + var values []string // nolint: prealloc + + for _, k := range keys { + // Do not alter the passed url.Values + values = append(values, m[k]...) + sort.Strings(values) + + k = url.QueryEscape(k) + + for _, v := range values { + if b.Len() > 0 { + b.WriteByte('&') + } + fmt.Fprintf(&b, "%v=%v", k, url.QueryEscape(v)) + } + + values = values[:0] + } + + return b.String() +} + +// RegisterNoResponder is used to register a responder that is called +// if no other responder is found. The default is httpmock.ConnectionFailure. +func (m *MockTransport) RegisterNoResponder(responder Responder) { + m.mu.Lock() + m.noResponder = responder + m.mu.Unlock() +} + +// Reset removes all registered responders (including the no +// responder) from the MockTransport. It zeroes call counters too. +func (m *MockTransport) Reset() { + m.mu.Lock() + m.responders = make(map[internal.RouteKey]Responder) + m.regexpResponders = nil + m.noResponder = nil + m.callCountInfo = make(map[internal.RouteKey]int) + m.totalCallCount = 0 + m.mu.Unlock() +} + +// ZeroCallCounters zeroes call counters without touching registered responders. +func (m *MockTransport) ZeroCallCounters() { + m.mu.Lock() + for k := range m.callCountInfo { + m.callCountInfo[k] = 0 + } + m.totalCallCount = 0 + m.mu.Unlock() +} + +// GetCallCountInfo gets the info on all the calls httpmock has caught +// since it was activated or reset. The info is returned as a map of +// the calling keys with the number of calls made to them as their +// value. The key is the method, a space, and the url all concatenated +// together. +// +// As a special case, regexp responders generate 2 entries for each +// call. One for the call caught and the other for the rule that +// matched. For example: +// RegisterResponder("GET", `=~z\.com\z`, NewStringResponder(200, "body")) +// http.Get("http://z.com") +// +// will generate the following result: +// map[string]int{ +// `GET http://z.com`: 1, +// `GET =~z\.com\z`: 1, +// } +func (m *MockTransport) GetCallCountInfo() map[string]int { + m.mu.RLock() + res := make(map[string]int, len(m.callCountInfo)) + for k, v := range m.callCountInfo { + res[k.String()] = v + } + m.mu.RUnlock() + return res +} + +// GetTotalCallCount returns the totalCallCount. +func (m *MockTransport) GetTotalCallCount() int { + m.mu.RLock() + count := m.totalCallCount + m.mu.RUnlock() + return count +} + +// DefaultTransport is the default mock transport used by Activate, +// Deactivate, Reset, DeactivateAndReset, RegisterResponder, and +// RegisterNoResponder. +var DefaultTransport = NewMockTransport() + +// InitialTransport is a cache of the original transport used so we +// can put it back when Deactivate is called. +var InitialTransport = http.DefaultTransport + +// oldClients is used to handle custom http clients (i.e clients other +// than http.DefaultClient). +var oldClients = map[*http.Client]http.RoundTripper{} + +// Activate starts the mock environment. This should be called before +// your tests run. Under the hood this replaces the Transport on the +// http.DefaultClient with httpmock.DefaultTransport. +// +// To enable mocks for a test, simply activate at the beginning of a test: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// // all http requests using http.DefaultTransport will now be intercepted +// } +// +// If you want all of your tests in a package to be mocked, just call +// Activate from init(): +// func init() { +// httpmock.Activate() +// } +// +// or using a TestMain function: +// func TestMain(m *testing.M) { +// httpmock.Activate() +// os.Exit(m.Run()) +// } +func Activate() { + if Disabled() { + return + } + + // make sure that if Activate is called multiple times it doesn't + // overwrite the InitialTransport with a mock transport. + if http.DefaultTransport != DefaultTransport { + InitialTransport = http.DefaultTransport + } + + http.DefaultTransport = DefaultTransport +} + +// ActivateNonDefault starts the mock environment with a non-default +// http.Client. This emulates the Activate function, but allows for +// custom clients that do not use http.DefaultTransport +// +// To enable mocks for a test using a custom client, activate at the +// beginning of a test: +// client := &http.Client{Transport: &http.Transport{TLSHandshakeTimeout: 60 * time.Second}} +// httpmock.ActivateNonDefault(client) +func ActivateNonDefault(client *http.Client) { + if Disabled() { + return + } + + // save the custom client & it's RoundTripper + if _, ok := oldClients[client]; !ok { + oldClients[client] = client.Transport + } + client.Transport = DefaultTransport +} + +// GetCallCountInfo gets the info on all the calls httpmock has caught +// since it was activated or reset. The info is returned as a map of +// the calling keys with the number of calls made to them as their +// value. The key is the method, a space, and the url all concatenated +// together. +// +// As a special case, regexp responders generate 2 entries for each +// call. One for the call caught and the other for the rule that +// matched. For example: +// RegisterResponder("GET", `=~z\.com\z`, NewStringResponder(200, "body")) +// http.Get("http://z.com") +// +// will generate the following result: +// map[string]int{ +// `GET http://z.com`: 1, +// `GET =~z\.com\z`: 1, +// } +func GetCallCountInfo() map[string]int { + return DefaultTransport.GetCallCountInfo() +} + +// GetTotalCallCount gets the total number of calls httpmock has taken +// since it was activated or reset. +func GetTotalCallCount() int { + return DefaultTransport.GetTotalCallCount() +} + +// Deactivate shuts down the mock environment. Any HTTP calls made +// after this will use a live transport. +// +// Usually you'll call it in a defer right after activating the mock +// environment: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.Deactivate() +// +// // when this test ends, the mock environment will close +// } +// +// Since go 1.14 you can also use (*testing.T).Cleanup() method as in: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// t.Cleanup(httpmock.Deactivate) +// +// // when this test ends, the mock environment will close +// } +// +// useful in test helpers to save your callers from calling defer themselves. +func Deactivate() { + if Disabled() { + return + } + http.DefaultTransport = InitialTransport + + // reset the custom clients to use their original RoundTripper + for oldClient, oldTransport := range oldClients { + oldClient.Transport = oldTransport + delete(oldClients, oldClient) + } +} + +// Reset removes any registered mocks and returns the mock +// environment to its initial state. It zeroes call counters too. +func Reset() { + DefaultTransport.Reset() +} + +// ZeroCallCounters zeroes call counters without touching registered responders. +func ZeroCallCounters() { + DefaultTransport.ZeroCallCounters() +} + +// DeactivateAndReset is just a convenience method for calling +// Deactivate() and then Reset(). +// +// Happy deferring! +func DeactivateAndReset() { + Deactivate() + Reset() +} + +// RegisterResponder adds a new responder, associated with a given +// HTTP method and URL (or path). +// +// When a request comes in that matches, the responder is called and +// the response returned to the client. +// +// If url contains query parameters, their order matters as well as +// their content. All following URLs are here considered as different: +// http://z.tld?a=1&b=1 +// http://z.tld?b=1&a=1 +// http://z.tld?a&b +// http://z.tld?a=&b= +// +// If url begins with "=~", the following chars are considered as a +// regular expression. If this regexp can not be compiled, it panics. +// Note that the "=~" prefix remains in statistics returned by +// GetCallCountInfo(). As 2 regexps can match the same URL, the regexp +// responders are tested in the order they are registered. Registering +// an already existing regexp responder (same method & same regexp +// string) replaces its responder but does not change its position. +// +// See RegisterRegexpResponder() to directly pass a *regexp.Regexp. +// +// Example: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.DeactivateAndReset() +// +// httpmock.RegisterResponder("GET", "http://example.com/", +// httpmock.NewStringResponder(200, "hello world")) +// +// httpmock.RegisterResponder("GET", "/path/only", +// httpmock.NewStringResponder("any host hello world", 200)) +// +// httpmock.RegisterResponder("GET", `=~^/item/id/\d+\z`, +// httpmock.NewStringResponder("any item get", 200)) +// +// // requests to http://example.com/ now return "hello world" and +// // requests to any host with path /path/only return "any host hello world" +// // requests to any host with path matching ^/item/id/\d+\z regular expression return "any item get" +// } +func RegisterResponder(method, url string, responder Responder) { + DefaultTransport.RegisterResponder(method, url, responder) +} + +// RegisterRegexpResponder adds a new responder, associated with a given +// HTTP method and URL (or path) regular expression. +// +// When a request comes in that matches, the responder is called and +// the response returned to the client. +// +// As 2 regexps can match the same URL, the regexp responders are +// tested in the order they are registered. Registering an already +// existing regexp responder (same method & same regexp string) +// replaces its responder but does not change its position. +// +// A "=~" prefix is added to the stringified regexp in the statistics +// returned by GetCallCountInfo(). +// +// See RegisterResponder function and the "=~" prefix in its url +// parameter to avoid compiling the regexp by yourself. +func RegisterRegexpResponder(method string, urlRegexp *regexp.Regexp, responder Responder) { + DefaultTransport.RegisterRegexpResponder(method, urlRegexp, responder) +} + +// RegisterResponderWithQuery it is same as RegisterResponder, but +// doesn't depends on query items order. +// +// query type can be: +// url.Values +// map[string]string +// string, a query string like "a=12&a=13&b=z&c" (see net/url.ParseQuery function) +// +// If the query type is not recognized or the string cannot be parsed +// using net/url.ParseQuery, a panic() occurs. +// +// Example using a net/url.Values: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.DeactivateAndReset() +// +// expectedQuery := net.Values{ +// "a": []string{"3", "1", "8"}, +// "b": []string{"4", "2"}, +// } +// httpmock.RegisterResponderWithQueryValues( +// "GET", "http://example.com/", expectedQuery, +// httpmock.NewStringResponder("hello world", 200)) +// +// // requests to http://example.com?a=1&a=3&a=8&b=2&b=4 +// // and to http://example.com?b=4&a=2&b=2&a=8&a=1 +// // now return 'hello world' +// } +// +// or using a map[string]string: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.DeactivateAndReset() +// +// expectedQuery := map[string]string{ +// "a": "1", +// "b": "2" +// } +// httpmock.RegisterResponderWithQuery( +// "GET", "http://example.com/", expectedQuery, +// httpmock.NewStringResponder("hello world", 200)) +// +// // requests to http://example.com?a=1&b=2 and http://example.com?b=2&a=1 now return 'hello world' +// } +// +// or using a query string: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.DeactivateAndReset() +// +// expectedQuery := "a=3&b=4&b=2&a=1&a=8" +// httpmock.RegisterResponderWithQueryValues( +// "GET", "http://example.com/", expectedQuery, +// httpmock.NewStringResponder("hello world", 200)) +// +// // requests to http://example.com?a=1&a=3&a=8&b=2&b=4 +// // and to http://example.com?b=4&a=2&b=2&a=8&a=1 +// // now return 'hello world' +// } +func RegisterResponderWithQuery(method, path string, query interface{}, responder Responder) { + DefaultTransport.RegisterResponderWithQuery(method, path, query, responder) +} + +// RegisterNoResponder adds a mock that is called whenever a request +// for an unregistered URL is received. The default behavior is to +// return a connection error. +// +// In some cases you may not want all URLs to be mocked, in which case +// you can do this: +// func TestFetchArticles(t *testing.T) { +// httpmock.Activate() +// defer httpmock.DeactivateAndReset() +// httpmock.RegisterNoResponder(httpmock.InitialTransport.RoundTrip) +// +// // any requests that don't have a registered URL will be fetched normally +// } +func RegisterNoResponder(responder Responder) { + DefaultTransport.RegisterNoResponder(responder) +} + +// ErrSubmatchNotFound is the error returned by GetSubmatch* functions +// when the given submatch index cannot be found. +var ErrSubmatchNotFound = errors.New("submatch not found") + +// GetSubmatch has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as a +// string. Example: +// RegisterResponder("GET", `=~^/item/name/([^/]+)\z`, +// func(req *http.Request) (*http.Response, error) { +// name, err := GetSubmatch(req, 1) // 1=first regexp submatch +// if err != nil { +// return nil, err +// } +// return NewJsonResponse(200, map[string]interface{}{ +// "id": 123, +// "name": name, +// }) +// }) +// +// It panics if n < 1. See MustGetSubmatch to avoid testing the +// returned error. +func GetSubmatch(req *http.Request, n int) (string, error) { + if n <= 0 { + panic(fmt.Sprintf("getting submatches starts at 1, not %d", n)) + } + n-- + + submatches := internal.GetSubmatches(req) + if n >= len(submatches) { + return "", ErrSubmatchNotFound + } + return submatches[n], nil +} + +// GetSubmatchAsInt has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as an +// int64. Example: +// RegisterResponder("GET", `=~^/item/id/(\d+)\z`, +// func(req *http.Request) (*http.Response, error) { +// id, err := GetSubmatchAsInt(req, 1) // 1=first regexp submatch +// if err != nil { +// return nil, err +// } +// return NewJsonResponse(200, map[string]interface{}{ +// "id": id, +// "name": "The beautiful name", +// }) +// }) +// +// It panics if n < 1. See MustGetSubmatchAsInt to avoid testing the +// returned error. +func GetSubmatchAsInt(req *http.Request, n int) (int64, error) { + sm, err := GetSubmatch(req, n) + if err != nil { + return 0, err + } + return strconv.ParseInt(sm, 10, 64) +} + +// GetSubmatchAsUint has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as a +// uint64. Example: +// RegisterResponder("GET", `=~^/item/id/(\d+)\z`, +// func(req *http.Request) (*http.Response, error) { +// id, err := GetSubmatchAsUint(req, 1) // 1=first regexp submatch +// if err != nil { +// return nil, err +// } +// return NewJsonResponse(200, map[string]interface{}{ +// "id": id, +// "name": "The beautiful name", +// }) +// }) +// +// It panics if n < 1. See MustGetSubmatchAsUint to avoid testing the +// returned error. +func GetSubmatchAsUint(req *http.Request, n int) (uint64, error) { + sm, err := GetSubmatch(req, n) + if err != nil { + return 0, err + } + return strconv.ParseUint(sm, 10, 64) +} + +// GetSubmatchAsFloat has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as a +// float64. Example: +// RegisterResponder("PATCH", `=~^/item/id/\d+\?height=(\d+(?:\.\d*)?)\z`, +// func(req *http.Request) (*http.Response, error) { +// height, err := GetSubmatchAsFloat(req, 1) // 1=first regexp submatch +// if err != nil { +// return nil, err +// } +// return NewJsonResponse(200, map[string]interface{}{ +// "id": id, +// "name": "The beautiful name", +// "height": height, +// }) +// }) +// +// It panics if n < 1. See MustGetSubmatchAsFloat to avoid testing the +// returned error. +func GetSubmatchAsFloat(req *http.Request, n int) (float64, error) { + sm, err := GetSubmatch(req, n) + if err != nil { + return 0, err + } + return strconv.ParseFloat(sm, 64) +} + +// MustGetSubmatch works as GetSubmatch except that it panics in case +// of error (submatch not found). It has to be used in Responders +// installed by RegisterRegexpResponder or RegisterResponder + "=~" +// URL prefix. It allows to retrieve the n-th submatch of the matching +// regexp, as a string. Example: +// RegisterResponder("GET", `=~^/item/name/([^/]+)\z`, +// func(req *http.Request) (*http.Response, error) { +// name := MustGetSubmatch(req, 1) // 1=first regexp submatch +// return NewJsonResponse(200, map[string]interface{}{ +// "id": 123, +// "name": name, +// }) +// }) +// +// It panics if n < 1. +func MustGetSubmatch(req *http.Request, n int) string { + s, err := GetSubmatch(req, n) + if err != nil { + panic("GetSubmatch failed: " + err.Error()) + } + return s +} + +// MustGetSubmatchAsInt works as GetSubmatchAsInt except that it +// panics in case of error (submatch not found or invalid int64 +// format). It has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as an +// int64. Example: +// RegisterResponder("GET", `=~^/item/id/(\d+)\z`, +// func(req *http.Request) (*http.Response, error) { +// id := MustGetSubmatchAsInt(req, 1) // 1=first regexp submatch +// return NewJsonResponse(200, map[string]interface{}{ +// "id": id, +// "name": "The beautiful name", +// }) +// }) +// +// It panics if n < 1. +func MustGetSubmatchAsInt(req *http.Request, n int) int64 { + i, err := GetSubmatchAsInt(req, n) + if err != nil { + panic("GetSubmatchAsInt failed: " + err.Error()) + } + return i +} + +// MustGetSubmatchAsUint works as GetSubmatchAsUint except that it +// panics in case of error (submatch not found or invalid uint64 +// format). It has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as a +// uint64. Example: +// RegisterResponder("GET", `=~^/item/id/(\d+)\z`, +// func(req *http.Request) (*http.Response, error) { +// id, err := MustGetSubmatchAsUint(req, 1) // 1=first regexp submatch +// return NewJsonResponse(200, map[string]interface{}{ +// "id": id, +// "name": "The beautiful name", +// }) +// }) +// +// It panics if n < 1. +func MustGetSubmatchAsUint(req *http.Request, n int) uint64 { + u, err := GetSubmatchAsUint(req, n) + if err != nil { + panic("GetSubmatchAsUint failed: " + err.Error()) + } + return u +} + +// MustGetSubmatchAsFloat works as GetSubmatchAsFloat except that it +// panics in case of error (submatch not found or invalid float64 +// format). It has to be used in Responders installed by +// RegisterRegexpResponder or RegisterResponder + "=~" URL prefix. It +// allows to retrieve the n-th submatch of the matching regexp, as a +// float64. Example: +// RegisterResponder("PATCH", `=~^/item/id/\d+\?height=(\d+(?:\.\d*)?)\z`, +// func(req *http.Request) (*http.Response, error) { +// height := MustGetSubmatchAsFloat(req, 1) // 1=first regexp submatch +// return NewJsonResponse(200, map[string]interface{}{ +// "id": id, +// "name": "The beautiful name", +// "height": height, +// }) +// }) +// +// It panics if n < 1. +func MustGetSubmatchAsFloat(req *http.Request, n int) float64 { + f, err := GetSubmatchAsFloat(req, n) + if err != nil { + panic("GetSubmatchAsFloat failed: " + err.Error()) + } + return f +} diff --git a/vendor/github.com/mattn/go-colorable/colorable_windows.go b/vendor/github.com/mattn/go-colorable/colorable_windows.go index b9e936344..41215d7fc 100644 --- a/vendor/github.com/mattn/go-colorable/colorable_windows.go +++ b/vendor/github.com/mattn/go-colorable/colorable_windows.go @@ -10,6 +10,7 @@ import ( "os" "strconv" "strings" + "sync" "syscall" "unsafe" @@ -27,6 +28,7 @@ const ( backgroundRed = 0x40 backgroundIntensity = 0x80 backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity) + commonLvbUnderscore = 0x8000 cENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 ) @@ -93,6 +95,7 @@ type Writer struct { oldattr word oldpos coord rest bytes.Buffer + mutex sync.Mutex } // NewColorable returns new instance of Writer which handles escape sequence from File. @@ -432,6 +435,8 @@ func atoiWithDefault(s string, def int) (int, error) { // Write writes data on console func (w *Writer) Write(data []byte) (n int, err error) { + w.mutex.Lock() + defer w.mutex.Unlock() var csbi consoleScreenBufferInfo procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) @@ -683,14 +688,19 @@ loop: switch { case n == 0 || n == 100: attr = w.oldattr - case 1 <= n && n <= 5: + case n == 4: + attr |= commonLvbUnderscore + case (1 <= n && n <= 3) || n == 5: attr |= foregroundIntensity - case n == 7: - attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) - case n == 22 || n == 25: - attr |= foregroundIntensity - case n == 27: - attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) + case n == 7 || n == 27: + attr = + (attr &^ (foregroundMask | backgroundMask)) | + ((attr & foregroundMask) << 4) | + ((attr & backgroundMask) >> 4) + case n == 22: + attr &^= foregroundIntensity + case n == 24: + attr &^= commonLvbUnderscore case 30 <= n && n <= 37: attr &= backgroundMask if (n-30)&1 != 0 { @@ -709,7 +719,7 @@ loop: n256setup() } attr &= backgroundMask - attr |= n256foreAttr[n256] + attr |= n256foreAttr[n256%len(n256foreAttr)] i += 2 } } else if len(token) == 5 && token[i+1] == "2" { @@ -751,7 +761,7 @@ loop: n256setup() } attr &= foregroundMask - attr |= n256backAttr[n256] + attr |= n256backAttr[n256%len(n256backAttr)] i += 2 } } else if len(token) == 5 && token[i+1] == "2" { diff --git a/vendor/github.com/stretchr/objx/.codeclimate.yml b/vendor/github.com/stretchr/objx/.codeclimate.yml new file mode 100644 index 000000000..559fa399c --- /dev/null +++ b/vendor/github.com/stretchr/objx/.codeclimate.yml @@ -0,0 +1,21 @@ +engines: + gofmt: + enabled: true + golint: + enabled: true + govet: + enabled: true + +exclude_patterns: +- ".github/" +- "vendor/" +- "codegen/" +- "*.yml" +- ".*.yml" +- "*.md" +- "Gopkg.*" +- "doc.go" +- "type_specific_codegen_test.go" +- "type_specific_codegen.go" +- ".gitignore" +- "LICENSE" diff --git a/vendor/github.com/stretchr/objx/.gitignore b/vendor/github.com/stretchr/objx/.gitignore new file mode 100644 index 000000000..ea58090bd --- /dev/null +++ b/vendor/github.com/stretchr/objx/.gitignore @@ -0,0 +1,11 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out diff --git a/vendor/github.com/stretchr/objx/.travis.yml b/vendor/github.com/stretchr/objx/.travis.yml new file mode 100644 index 000000000..cde6eb2af --- /dev/null +++ b/vendor/github.com/stretchr/objx/.travis.yml @@ -0,0 +1,30 @@ +language: go +go: + - "1.10.x" + - "1.11.x" + - "1.12.x" + - master + +matrix: + allow_failures: + - go: master +fast_finish: true + +env: + global: + - CC_TEST_REPORTER_ID=68feaa3410049ce73e145287acbcdacc525087a30627f96f04e579e75bd71c00 + +before_script: + - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + - chmod +x ./cc-test-reporter + - ./cc-test-reporter before-build + +install: + - curl -sL https://taskfile.dev/install.sh | sh + +script: + - diff -u <(echo -n) <(./bin/task lint) + - ./bin/task test-coverage + +after_script: + - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT diff --git a/vendor/github.com/stretchr/objx/LICENSE b/vendor/github.com/stretchr/objx/LICENSE new file mode 100644 index 000000000..44d4d9d5a --- /dev/null +++ b/vendor/github.com/stretchr/objx/LICENSE @@ -0,0 +1,22 @@ +The MIT License + +Copyright (c) 2014 Stretchr, Inc. +Copyright (c) 2017-2018 objx contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/stretchr/objx/README.md b/vendor/github.com/stretchr/objx/README.md new file mode 100644 index 000000000..246660b21 --- /dev/null +++ b/vendor/github.com/stretchr/objx/README.md @@ -0,0 +1,80 @@ +# Objx +[![Build Status](https://travis-ci.org/stretchr/objx.svg?branch=master)](https://travis-ci.org/stretchr/objx) +[![Go Report Card](https://goreportcard.com/badge/github.com/stretchr/objx)](https://goreportcard.com/report/github.com/stretchr/objx) +[![Maintainability](https://api.codeclimate.com/v1/badges/1d64bc6c8474c2074f2b/maintainability)](https://codeclimate.com/github/stretchr/objx/maintainability) +[![Test Coverage](https://api.codeclimate.com/v1/badges/1d64bc6c8474c2074f2b/test_coverage)](https://codeclimate.com/github/stretchr/objx/test_coverage) +[![Sourcegraph](https://sourcegraph.com/github.com/stretchr/objx/-/badge.svg)](https://sourcegraph.com/github.com/stretchr/objx) +[![GoDoc](https://godoc.org/github.com/stretchr/objx?status.svg)](https://godoc.org/github.com/stretchr/objx) + +Objx - Go package for dealing with maps, slices, JSON and other data. + +Get started: + +- Install Objx with [one line of code](#installation), or [update it with another](#staying-up-to-date) +- Check out the API Documentation http://godoc.org/github.com/stretchr/objx + +## Overview +Objx provides the `objx.Map` type, which is a `map[string]interface{}` that exposes a powerful `Get` method (among others) that allows you to easily and quickly get access to data within the map, without having to worry too much about type assertions, missing data, default values etc. + +### Pattern +Objx uses a preditable pattern to make access data from within `map[string]interface{}` easy. Call one of the `objx.` functions to create your `objx.Map` to get going: + + m, err := objx.FromJSON(json) + +NOTE: Any methods or functions with the `Must` prefix will panic if something goes wrong, the rest will be optimistic and try to figure things out without panicking. + +Use `Get` to access the value you're interested in. You can use dot and array +notation too: + + m.Get("places[0].latlng") + +Once you have sought the `Value` you're interested in, you can use the `Is*` methods to determine its type. + + if m.Get("code").IsStr() { // Your code... } + +Or you can just assume the type, and use one of the strong type methods to extract the real value: + + m.Get("code").Int() + +If there's no value there (or if it's the wrong type) then a default value will be returned, or you can be explicit about the default value. + + Get("code").Int(-1) + +If you're dealing with a slice of data as a value, Objx provides many useful methods for iterating, manipulating and selecting that data. You can find out more by exploring the index below. + +### Reading data +A simple example of how to use Objx: + + // Use MustFromJSON to make an objx.Map from some JSON + m := objx.MustFromJSON(`{"name": "Mat", "age": 30}`) + + // Get the details + name := m.Get("name").Str() + age := m.Get("age").Int() + + // Get their nickname (or use their name if they don't have one) + nickname := m.Get("nickname").Str(name) + +### Ranging +Since `objx.Map` is a `map[string]interface{}` you can treat it as such. For example, to `range` the data, do what you would expect: + + m := objx.MustFromJSON(json) + for key, value := range m { + // Your code... + } + +## Installation +To install Objx, use go get: + + go get github.com/stretchr/objx + +### Staying up to date +To update Objx to the latest version, run: + + go get -u github.com/stretchr/objx + +### Supported go versions +We support the lastest three major Go versions, which are 1.10, 1.11 and 1.12 at the moment. + +## Contributing +Please feel free to submit issues, fork the repository and send pull requests! diff --git a/vendor/github.com/stretchr/objx/Taskfile.yml b/vendor/github.com/stretchr/objx/Taskfile.yml new file mode 100644 index 000000000..a749ac549 --- /dev/null +++ b/vendor/github.com/stretchr/objx/Taskfile.yml @@ -0,0 +1,30 @@ +version: '2' + +env: + GOFLAGS: -mod=vendor + +tasks: + default: + deps: [test] + + lint: + desc: Checks code style + cmds: + - gofmt -d -s *.go + - go vet ./... + silent: true + + lint-fix: + desc: Fixes code style + cmds: + - gofmt -w -s *.go + + test: + desc: Runs go tests + cmds: + - go test -race ./... + + test-coverage: + desc: Runs go tests and calucates test coverage + cmds: + - go test -race -coverprofile=c.out ./... diff --git a/vendor/github.com/stretchr/objx/accessors.go b/vendor/github.com/stretchr/objx/accessors.go new file mode 100644 index 000000000..80ad16740 --- /dev/null +++ b/vendor/github.com/stretchr/objx/accessors.go @@ -0,0 +1,179 @@ +package objx + +import ( + "reflect" + "regexp" + "strconv" + "strings" +) + +const ( + // PathSeparator is the character used to separate the elements + // of the keypath. + // + // For example, `location.address.city` + PathSeparator string = "." + + // arrayAccesRegexString is the regex used to extract the array number + // from the access path + arrayAccesRegexString = `^(.+)\[([0-9]+)\]$` + + // mapAccessRegexString is the regex used to extract the map key + // from the access path + mapAccessRegexString = `^([^\[]*)\[([^\]]+)\](.*)$` +) + +// arrayAccesRegex is the compiled arrayAccesRegexString +var arrayAccesRegex = regexp.MustCompile(arrayAccesRegexString) + +// mapAccessRegex is the compiled mapAccessRegexString +var mapAccessRegex = regexp.MustCompile(mapAccessRegexString) + +// Get gets the value using the specified selector and +// returns it inside a new Obj object. +// +// If it cannot find the value, Get will return a nil +// value inside an instance of Obj. +// +// Get can only operate directly on map[string]interface{} and []interface. +// +// Example +// +// To access the title of the third chapter of the second book, do: +// +// o.Get("books[1].chapters[2].title") +func (m Map) Get(selector string) *Value { + rawObj := access(m, selector, nil, false) + return &Value{data: rawObj} +} + +// Set sets the value using the specified selector and +// returns the object on which Set was called. +// +// Set can only operate directly on map[string]interface{} and []interface +// +// Example +// +// To set the title of the third chapter of the second book, do: +// +// o.Set("books[1].chapters[2].title","Time to Go") +func (m Map) Set(selector string, value interface{}) Map { + access(m, selector, value, true) + return m +} + +// getIndex returns the index, which is hold in s by two braches. +// It also returns s withour the index part, e.g. name[1] will return (1, name). +// If no index is found, -1 is returned +func getIndex(s string) (int, string) { + arrayMatches := arrayAccesRegex.FindStringSubmatch(s) + if len(arrayMatches) > 0 { + // Get the key into the map + selector := arrayMatches[1] + // Get the index into the array at the key + // We know this cannt fail because arrayMatches[2] is an int for sure + index, _ := strconv.Atoi(arrayMatches[2]) + return index, selector + } + return -1, s +} + +// getKey returns the key which is held in s by two brackets. +// It also returns the next selector. +func getKey(s string) (string, string) { + selSegs := strings.SplitN(s, PathSeparator, 2) + thisSel := selSegs[0] + nextSel := "" + + if len(selSegs) > 1 { + nextSel = selSegs[1] + } + + mapMatches := mapAccessRegex.FindStringSubmatch(s) + if len(mapMatches) > 0 { + if _, err := strconv.Atoi(mapMatches[2]); err != nil { + thisSel = mapMatches[1] + nextSel = "[" + mapMatches[2] + "]" + mapMatches[3] + + if thisSel == "" { + thisSel = mapMatches[2] + nextSel = mapMatches[3] + } + + if nextSel == "" { + selSegs = []string{"", ""} + } else if nextSel[0] == '.' { + nextSel = nextSel[1:] + } + } + } + + return thisSel, nextSel +} + +// access accesses the object using the selector and performs the +// appropriate action. +func access(current interface{}, selector string, value interface{}, isSet bool) interface{} { + thisSel, nextSel := getKey(selector) + + index := -1 + if strings.Contains(thisSel, "[") { + index, thisSel = getIndex(thisSel) + } + + if curMap, ok := current.(Map); ok { + current = map[string]interface{}(curMap) + } + // get the object in question + switch current.(type) { + case map[string]interface{}: + curMSI := current.(map[string]interface{}) + if nextSel == "" && isSet { + curMSI[thisSel] = value + return nil + } + + _, ok := curMSI[thisSel].(map[string]interface{}) + if (curMSI[thisSel] == nil || !ok) && index == -1 && isSet { + curMSI[thisSel] = map[string]interface{}{} + } + + current = curMSI[thisSel] + default: + current = nil + } + + // do we need to access the item of an array? + if index > -1 { + if array, ok := interSlice(current); ok { + if index < len(array) { + current = array[index] + } else { + current = nil + } + } + } + if nextSel != "" { + current = access(current, nextSel, value, isSet) + } + return current +} + +func interSlice(slice interface{}) ([]interface{}, bool) { + if array, ok := slice.([]interface{}); ok { + return array, ok + } + + s := reflect.ValueOf(slice) + if s.Kind() != reflect.Slice { + return nil, false + } + + ret := make([]interface{}, s.Len()) + + for i := 0; i < s.Len(); i++ { + ret[i] = s.Index(i).Interface() + } + + return ret, true +} diff --git a/vendor/github.com/stretchr/objx/conversions.go b/vendor/github.com/stretchr/objx/conversions.go new file mode 100644 index 000000000..080aa46e4 --- /dev/null +++ b/vendor/github.com/stretchr/objx/conversions.go @@ -0,0 +1,280 @@ +package objx + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "net/url" + "strconv" +) + +// SignatureSeparator is the character that is used to +// separate the Base64 string from the security signature. +const SignatureSeparator = "_" + +// URLValuesSliceKeySuffix is the character that is used to +// specify a suffic for slices parsed by URLValues. +// If the suffix is set to "[i]", then the index of the slice +// is used in place of i +// Ex: Suffix "[]" would have the form a[]=b&a[]=c +// OR Suffix "[i]" would have the form a[0]=b&a[1]=c +// OR Suffix "" would have the form a=b&a=c +var urlValuesSliceKeySuffix = "[]" + +const ( + URLValuesSliceKeySuffixEmpty = "" + URLValuesSliceKeySuffixArray = "[]" + URLValuesSliceKeySuffixIndex = "[i]" +) + +// SetURLValuesSliceKeySuffix sets the character that is used to +// specify a suffic for slices parsed by URLValues. +// If the suffix is set to "[i]", then the index of the slice +// is used in place of i +// Ex: Suffix "[]" would have the form a[]=b&a[]=c +// OR Suffix "[i]" would have the form a[0]=b&a[1]=c +// OR Suffix "" would have the form a=b&a=c +func SetURLValuesSliceKeySuffix(s string) error { + if s == URLValuesSliceKeySuffixEmpty || s == URLValuesSliceKeySuffixArray || s == URLValuesSliceKeySuffixIndex { + urlValuesSliceKeySuffix = s + return nil + } + + return errors.New("objx: Invalid URLValuesSliceKeySuffix provided.") +} + +// JSON converts the contained object to a JSON string +// representation +func (m Map) JSON() (string, error) { + for k, v := range m { + m[k] = cleanUp(v) + } + + result, err := json.Marshal(m) + if err != nil { + err = errors.New("objx: JSON encode failed with: " + err.Error()) + } + return string(result), err +} + +func cleanUpInterfaceArray(in []interface{}) []interface{} { + result := make([]interface{}, len(in)) + for i, v := range in { + result[i] = cleanUp(v) + } + return result +} + +func cleanUpInterfaceMap(in map[interface{}]interface{}) Map { + result := Map{} + for k, v := range in { + result[fmt.Sprintf("%v", k)] = cleanUp(v) + } + return result +} + +func cleanUpStringMap(in map[string]interface{}) Map { + result := Map{} + for k, v := range in { + result[k] = cleanUp(v) + } + return result +} + +func cleanUpMSIArray(in []map[string]interface{}) []Map { + result := make([]Map, len(in)) + for i, v := range in { + result[i] = cleanUpStringMap(v) + } + return result +} + +func cleanUpMapArray(in []Map) []Map { + result := make([]Map, len(in)) + for i, v := range in { + result[i] = cleanUpStringMap(v) + } + return result +} + +func cleanUp(v interface{}) interface{} { + switch v := v.(type) { + case []interface{}: + return cleanUpInterfaceArray(v) + case []map[string]interface{}: + return cleanUpMSIArray(v) + case map[interface{}]interface{}: + return cleanUpInterfaceMap(v) + case Map: + return cleanUpStringMap(v) + case []Map: + return cleanUpMapArray(v) + default: + return v + } +} + +// MustJSON converts the contained object to a JSON string +// representation and panics if there is an error +func (m Map) MustJSON() string { + result, err := m.JSON() + if err != nil { + panic(err.Error()) + } + return result +} + +// Base64 converts the contained object to a Base64 string +// representation of the JSON string representation +func (m Map) Base64() (string, error) { + var buf bytes.Buffer + + jsonData, err := m.JSON() + if err != nil { + return "", err + } + + encoder := base64.NewEncoder(base64.StdEncoding, &buf) + _, _ = encoder.Write([]byte(jsonData)) + _ = encoder.Close() + + return buf.String(), nil +} + +// MustBase64 converts the contained object to a Base64 string +// representation of the JSON string representation and panics +// if there is an error +func (m Map) MustBase64() string { + result, err := m.Base64() + if err != nil { + panic(err.Error()) + } + return result +} + +// SignedBase64 converts the contained object to a Base64 string +// representation of the JSON string representation and signs it +// using the provided key. +func (m Map) SignedBase64(key string) (string, error) { + base64, err := m.Base64() + if err != nil { + return "", err + } + + sig := HashWithKey(base64, key) + return base64 + SignatureSeparator + sig, nil +} + +// MustSignedBase64 converts the contained object to a Base64 string +// representation of the JSON string representation and signs it +// using the provided key and panics if there is an error +func (m Map) MustSignedBase64(key string) string { + result, err := m.SignedBase64(key) + if err != nil { + panic(err.Error()) + } + return result +} + +/* + URL Query + ------------------------------------------------ +*/ + +// URLValues creates a url.Values object from an Obj. This +// function requires that the wrapped object be a map[string]interface{} +func (m Map) URLValues() url.Values { + vals := make(url.Values) + + m.parseURLValues(m, vals, "") + + return vals +} + +func (m Map) parseURLValues(queryMap Map, vals url.Values, key string) { + useSliceIndex := false + if urlValuesSliceKeySuffix == "[i]" { + useSliceIndex = true + } + + for k, v := range queryMap { + val := &Value{data: v} + switch { + case val.IsObjxMap(): + if key == "" { + m.parseURLValues(val.ObjxMap(), vals, k) + } else { + m.parseURLValues(val.ObjxMap(), vals, key+"["+k+"]") + } + case val.IsObjxMapSlice(): + sliceKey := k + if key != "" { + sliceKey = key + "[" + k + "]" + } + + if useSliceIndex { + for i, sv := range val.MustObjxMapSlice() { + sk := sliceKey + "[" + strconv.FormatInt(int64(i), 10) + "]" + m.parseURLValues(sv, vals, sk) + } + } else { + sliceKey = sliceKey + urlValuesSliceKeySuffix + for _, sv := range val.MustObjxMapSlice() { + m.parseURLValues(sv, vals, sliceKey) + } + } + case val.IsMSISlice(): + sliceKey := k + if key != "" { + sliceKey = key + "[" + k + "]" + } + + if useSliceIndex { + for i, sv := range val.MustMSISlice() { + sk := sliceKey + "[" + strconv.FormatInt(int64(i), 10) + "]" + m.parseURLValues(New(sv), vals, sk) + } + } else { + sliceKey = sliceKey + urlValuesSliceKeySuffix + for _, sv := range val.MustMSISlice() { + m.parseURLValues(New(sv), vals, sliceKey) + } + } + case val.IsStrSlice(), val.IsBoolSlice(), + val.IsFloat32Slice(), val.IsFloat64Slice(), + val.IsIntSlice(), val.IsInt8Slice(), val.IsInt16Slice(), val.IsInt32Slice(), val.IsInt64Slice(), + val.IsUintSlice(), val.IsUint8Slice(), val.IsUint16Slice(), val.IsUint32Slice(), val.IsUint64Slice(): + + sliceKey := k + if key != "" { + sliceKey = key + "[" + k + "]" + } + + if useSliceIndex { + for i, sv := range val.StringSlice() { + sk := sliceKey + "[" + strconv.FormatInt(int64(i), 10) + "]" + vals.Set(sk, sv) + } + } else { + sliceKey = sliceKey + urlValuesSliceKeySuffix + vals[sliceKey] = val.StringSlice() + } + + default: + if key == "" { + vals.Set(k, val.String()) + } else { + vals.Set(key+"["+k+"]", val.String()) + } + } + } +} + +// URLQuery gets an encoded URL query representing the given +// Obj. This function requires that the wrapped object be a +// map[string]interface{} +func (m Map) URLQuery() (string, error) { + return m.URLValues().Encode(), nil +} diff --git a/vendor/github.com/stretchr/objx/doc.go b/vendor/github.com/stretchr/objx/doc.go new file mode 100644 index 000000000..6d6af1a83 --- /dev/null +++ b/vendor/github.com/stretchr/objx/doc.go @@ -0,0 +1,66 @@ +/* +Objx - Go package for dealing with maps, slices, JSON and other data. + +Overview + +Objx provides the `objx.Map` type, which is a `map[string]interface{}` that exposes +a powerful `Get` method (among others) that allows you to easily and quickly get +access to data within the map, without having to worry too much about type assertions, +missing data, default values etc. + +Pattern + +Objx uses a preditable pattern to make access data from within `map[string]interface{}` easy. +Call one of the `objx.` functions to create your `objx.Map` to get going: + + m, err := objx.FromJSON(json) + +NOTE: Any methods or functions with the `Must` prefix will panic if something goes wrong, +the rest will be optimistic and try to figure things out without panicking. + +Use `Get` to access the value you're interested in. You can use dot and array +notation too: + + m.Get("places[0].latlng") + +Once you have sought the `Value` you're interested in, you can use the `Is*` methods to determine its type. + + if m.Get("code").IsStr() { // Your code... } + +Or you can just assume the type, and use one of the strong type methods to extract the real value: + + m.Get("code").Int() + +If there's no value there (or if it's the wrong type) then a default value will be returned, +or you can be explicit about the default value. + + Get("code").Int(-1) + +If you're dealing with a slice of data as a value, Objx provides many useful methods for iterating, +manipulating and selecting that data. You can find out more by exploring the index below. + +Reading data + +A simple example of how to use Objx: + + // Use MustFromJSON to make an objx.Map from some JSON + m := objx.MustFromJSON(`{"name": "Mat", "age": 30}`) + + // Get the details + name := m.Get("name").Str() + age := m.Get("age").Int() + + // Get their nickname (or use their name if they don't have one) + nickname := m.Get("nickname").Str(name) + +Ranging + +Since `objx.Map` is a `map[string]interface{}` you can treat it as such. +For example, to `range` the data, do what you would expect: + + m := objx.MustFromJSON(json) + for key, value := range m { + // Your code... + } +*/ +package objx diff --git a/vendor/github.com/stretchr/objx/go.mod b/vendor/github.com/stretchr/objx/go.mod new file mode 100644 index 000000000..31ec5a7d9 --- /dev/null +++ b/vendor/github.com/stretchr/objx/go.mod @@ -0,0 +1,8 @@ +module github.com/stretchr/objx + +go 1.12 + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/stretchr/testify v1.3.0 +) diff --git a/vendor/github.com/stretchr/objx/go.sum b/vendor/github.com/stretchr/objx/go.sum new file mode 100644 index 000000000..4f8984150 --- /dev/null +++ b/vendor/github.com/stretchr/objx/go.sum @@ -0,0 +1,8 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/vendor/github.com/stretchr/objx/map.go b/vendor/github.com/stretchr/objx/map.go new file mode 100644 index 000000000..95149c06a --- /dev/null +++ b/vendor/github.com/stretchr/objx/map.go @@ -0,0 +1,228 @@ +package objx + +import ( + "encoding/base64" + "encoding/json" + "errors" + "io/ioutil" + "net/url" + "strings" +) + +// MSIConvertable is an interface that defines methods for converting your +// custom types to a map[string]interface{} representation. +type MSIConvertable interface { + // MSI gets a map[string]interface{} (msi) representing the + // object. + MSI() map[string]interface{} +} + +// Map provides extended functionality for working with +// untyped data, in particular map[string]interface (msi). +type Map map[string]interface{} + +// Value returns the internal value instance +func (m Map) Value() *Value { + return &Value{data: m} +} + +// Nil represents a nil Map. +var Nil = New(nil) + +// New creates a new Map containing the map[string]interface{} in the data argument. +// If the data argument is not a map[string]interface, New attempts to call the +// MSI() method on the MSIConvertable interface to create one. +func New(data interface{}) Map { + if _, ok := data.(map[string]interface{}); !ok { + if converter, ok := data.(MSIConvertable); ok { + data = converter.MSI() + } else { + return nil + } + } + return Map(data.(map[string]interface{})) +} + +// MSI creates a map[string]interface{} and puts it inside a new Map. +// +// The arguments follow a key, value pattern. +// +// +// Returns nil if any key argument is non-string or if there are an odd number of arguments. +// +// Example +// +// To easily create Maps: +// +// m := objx.MSI("name", "Mat", "age", 29, "subobj", objx.MSI("active", true)) +// +// // creates an Map equivalent to +// m := objx.Map{"name": "Mat", "age": 29, "subobj": objx.Map{"active": true}} +func MSI(keyAndValuePairs ...interface{}) Map { + newMap := Map{} + keyAndValuePairsLen := len(keyAndValuePairs) + if keyAndValuePairsLen%2 != 0 { + return nil + } + for i := 0; i < keyAndValuePairsLen; i = i + 2 { + key := keyAndValuePairs[i] + value := keyAndValuePairs[i+1] + + // make sure the key is a string + keyString, keyStringOK := key.(string) + if !keyStringOK { + return nil + } + newMap[keyString] = value + } + return newMap +} + +// ****** Conversion Constructors + +// MustFromJSON creates a new Map containing the data specified in the +// jsonString. +// +// Panics if the JSON is invalid. +func MustFromJSON(jsonString string) Map { + o, err := FromJSON(jsonString) + if err != nil { + panic("objx: MustFromJSON failed with error: " + err.Error()) + } + return o +} + +// FromJSON creates a new Map containing the data specified in the +// jsonString. +// +// Returns an error if the JSON is invalid. +func FromJSON(jsonString string) (Map, error) { + var m Map + err := json.Unmarshal([]byte(jsonString), &m) + if err != nil { + return Nil, err + } + m.tryConvertFloat64() + return m, nil +} + +func (m Map) tryConvertFloat64() { + for k, v := range m { + switch v.(type) { + case float64: + f := v.(float64) + if float64(int(f)) == f { + m[k] = int(f) + } + case map[string]interface{}: + t := New(v) + t.tryConvertFloat64() + m[k] = t + case []interface{}: + m[k] = tryConvertFloat64InSlice(v.([]interface{})) + } + } +} + +func tryConvertFloat64InSlice(s []interface{}) []interface{} { + for k, v := range s { + switch v.(type) { + case float64: + f := v.(float64) + if float64(int(f)) == f { + s[k] = int(f) + } + case map[string]interface{}: + t := New(v) + t.tryConvertFloat64() + s[k] = t + case []interface{}: + s[k] = tryConvertFloat64InSlice(v.([]interface{})) + } + } + return s +} + +// FromBase64 creates a new Obj containing the data specified +// in the Base64 string. +// +// The string is an encoded JSON string returned by Base64 +func FromBase64(base64String string) (Map, error) { + decoder := base64.NewDecoder(base64.StdEncoding, strings.NewReader(base64String)) + decoded, err := ioutil.ReadAll(decoder) + if err != nil { + return nil, err + } + return FromJSON(string(decoded)) +} + +// MustFromBase64 creates a new Obj containing the data specified +// in the Base64 string and panics if there is an error. +// +// The string is an encoded JSON string returned by Base64 +func MustFromBase64(base64String string) Map { + result, err := FromBase64(base64String) + if err != nil { + panic("objx: MustFromBase64 failed with error: " + err.Error()) + } + return result +} + +// FromSignedBase64 creates a new Obj containing the data specified +// in the Base64 string. +// +// The string is an encoded JSON string returned by SignedBase64 +func FromSignedBase64(base64String, key string) (Map, error) { + parts := strings.Split(base64String, SignatureSeparator) + if len(parts) != 2 { + return nil, errors.New("objx: Signed base64 string is malformed") + } + + sig := HashWithKey(parts[0], key) + if parts[1] != sig { + return nil, errors.New("objx: Signature for base64 data does not match") + } + return FromBase64(parts[0]) +} + +// MustFromSignedBase64 creates a new Obj containing the data specified +// in the Base64 string and panics if there is an error. +// +// The string is an encoded JSON string returned by Base64 +func MustFromSignedBase64(base64String, key string) Map { + result, err := FromSignedBase64(base64String, key) + if err != nil { + panic("objx: MustFromSignedBase64 failed with error: " + err.Error()) + } + return result +} + +// FromURLQuery generates a new Obj by parsing the specified +// query. +// +// For queries with multiple values, the first value is selected. +func FromURLQuery(query string) (Map, error) { + vals, err := url.ParseQuery(query) + if err != nil { + return nil, err + } + m := Map{} + for k, vals := range vals { + m[k] = vals[0] + } + return m, nil +} + +// MustFromURLQuery generates a new Obj by parsing the specified +// query. +// +// For queries with multiple values, the first value is selected. +// +// Panics if it encounters an error +func MustFromURLQuery(query string) Map { + o, err := FromURLQuery(query) + if err != nil { + panic("objx: MustFromURLQuery failed with error: " + err.Error()) + } + return o +} diff --git a/vendor/github.com/stretchr/objx/mutations.go b/vendor/github.com/stretchr/objx/mutations.go new file mode 100644 index 000000000..c3400a3f7 --- /dev/null +++ b/vendor/github.com/stretchr/objx/mutations.go @@ -0,0 +1,77 @@ +package objx + +// Exclude returns a new Map with the keys in the specified []string +// excluded. +func (m Map) Exclude(exclude []string) Map { + excluded := make(Map) + for k, v := range m { + if !contains(exclude, k) { + excluded[k] = v + } + } + return excluded +} + +// Copy creates a shallow copy of the Obj. +func (m Map) Copy() Map { + copied := Map{} + for k, v := range m { + copied[k] = v + } + return copied +} + +// Merge blends the specified map with a copy of this map and returns the result. +// +// Keys that appear in both will be selected from the specified map. +// This method requires that the wrapped object be a map[string]interface{} +func (m Map) Merge(merge Map) Map { + return m.Copy().MergeHere(merge) +} + +// MergeHere blends the specified map with this map and returns the current map. +// +// Keys that appear in both will be selected from the specified map. The original map +// will be modified. This method requires that +// the wrapped object be a map[string]interface{} +func (m Map) MergeHere(merge Map) Map { + for k, v := range merge { + m[k] = v + } + return m +} + +// Transform builds a new Obj giving the transformer a chance +// to change the keys and values as it goes. This method requires that +// the wrapped object be a map[string]interface{} +func (m Map) Transform(transformer func(key string, value interface{}) (string, interface{})) Map { + newMap := Map{} + for k, v := range m { + modifiedKey, modifiedVal := transformer(k, v) + newMap[modifiedKey] = modifiedVal + } + return newMap +} + +// TransformKeys builds a new map using the specified key mapping. +// +// Unspecified keys will be unaltered. +// This method requires that the wrapped object be a map[string]interface{} +func (m Map) TransformKeys(mapping map[string]string) Map { + return m.Transform(func(key string, value interface{}) (string, interface{}) { + if newKey, ok := mapping[key]; ok { + return newKey, value + } + return key, value + }) +} + +// Checks if a string slice contains a string +func contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false +} diff --git a/vendor/github.com/stretchr/objx/security.go b/vendor/github.com/stretchr/objx/security.go new file mode 100644 index 000000000..692be8e2a --- /dev/null +++ b/vendor/github.com/stretchr/objx/security.go @@ -0,0 +1,12 @@ +package objx + +import ( + "crypto/sha1" + "encoding/hex" +) + +// HashWithKey hashes the specified string using the security key +func HashWithKey(data, key string) string { + d := sha1.Sum([]byte(data + ":" + key)) + return hex.EncodeToString(d[:]) +} diff --git a/vendor/github.com/stretchr/objx/tests.go b/vendor/github.com/stretchr/objx/tests.go new file mode 100644 index 000000000..d9e0b479a --- /dev/null +++ b/vendor/github.com/stretchr/objx/tests.go @@ -0,0 +1,17 @@ +package objx + +// Has gets whether there is something at the specified selector +// or not. +// +// If m is nil, Has will always return false. +func (m Map) Has(selector string) bool { + if m == nil { + return false + } + return !m.Get(selector).IsNil() +} + +// IsNil gets whether the data is nil or not. +func (v *Value) IsNil() bool { + return v == nil || v.data == nil +} diff --git a/vendor/github.com/stretchr/objx/type_specific.go b/vendor/github.com/stretchr/objx/type_specific.go new file mode 100644 index 000000000..80f88d9fa --- /dev/null +++ b/vendor/github.com/stretchr/objx/type_specific.go @@ -0,0 +1,346 @@ +package objx + +/* + MSI (map[string]interface{} and []map[string]interface{}) +*/ + +// MSI gets the value as a map[string]interface{}, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) MSI(optionalDefault ...map[string]interface{}) map[string]interface{} { + if s, ok := v.data.(map[string]interface{}); ok { + return s + } + if s, ok := v.data.(Map); ok { + return map[string]interface{}(s) + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustMSI gets the value as a map[string]interface{}. +// +// Panics if the object is not a map[string]interface{}. +func (v *Value) MustMSI() map[string]interface{} { + if s, ok := v.data.(Map); ok { + return map[string]interface{}(s) + } + return v.data.(map[string]interface{}) +} + +// MSISlice gets the value as a []map[string]interface{}, returns the optionalDefault +// value or nil if the value is not a []map[string]interface{}. +func (v *Value) MSISlice(optionalDefault ...[]map[string]interface{}) []map[string]interface{} { + if s, ok := v.data.([]map[string]interface{}); ok { + return s + } + + s := v.ObjxMapSlice() + if s == nil { + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil + } + + result := make([]map[string]interface{}, len(s)) + for i := range s { + result[i] = s[i].Value().MSI() + } + return result +} + +// MustMSISlice gets the value as a []map[string]interface{}. +// +// Panics if the object is not a []map[string]interface{}. +func (v *Value) MustMSISlice() []map[string]interface{} { + if s := v.MSISlice(); s != nil { + return s + } + + return v.data.([]map[string]interface{}) +} + +// IsMSI gets whether the object contained is a map[string]interface{} or not. +func (v *Value) IsMSI() bool { + _, ok := v.data.(map[string]interface{}) + if !ok { + _, ok = v.data.(Map) + } + return ok +} + +// IsMSISlice gets whether the object contained is a []map[string]interface{} or not. +func (v *Value) IsMSISlice() bool { + _, ok := v.data.([]map[string]interface{}) + if !ok { + _, ok = v.data.([]Map) + if !ok { + s, ok := v.data.([]interface{}) + if ok { + for i := range s { + switch s[i].(type) { + case Map: + case map[string]interface{}: + default: + return false + } + } + return true + } + } + } + return ok +} + +// EachMSI calls the specified callback for each object +// in the []map[string]interface{}. +// +// Panics if the object is the wrong type. +func (v *Value) EachMSI(callback func(int, map[string]interface{}) bool) *Value { + for index, val := range v.MustMSISlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereMSI uses the specified decider function to select items +// from the []map[string]interface{}. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereMSI(decider func(int, map[string]interface{}) bool) *Value { + var selected []map[string]interface{} + v.EachMSI(func(index int, val map[string]interface{}) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupMSI uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]map[string]interface{}. +func (v *Value) GroupMSI(grouper func(int, map[string]interface{}) string) *Value { + groups := make(map[string][]map[string]interface{}) + v.EachMSI(func(index int, val map[string]interface{}) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]map[string]interface{}, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceMSI uses the specified function to replace each map[string]interface{}s +// by iterating each item. The data in the returned result will be a +// []map[string]interface{} containing the replaced items. +func (v *Value) ReplaceMSI(replacer func(int, map[string]interface{}) map[string]interface{}) *Value { + arr := v.MustMSISlice() + replaced := make([]map[string]interface{}, len(arr)) + v.EachMSI(func(index int, val map[string]interface{}) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectMSI uses the specified collector function to collect a value +// for each of the map[string]interface{}s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectMSI(collector func(int, map[string]interface{}) interface{}) *Value { + arr := v.MustMSISlice() + collected := make([]interface{}, len(arr)) + v.EachMSI(func(index int, val map[string]interface{}) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + ObjxMap ((Map) and [](Map)) +*/ + +// ObjxMap gets the value as a (Map), returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) ObjxMap(optionalDefault ...(Map)) Map { + if s, ok := v.data.((Map)); ok { + return s + } + if s, ok := v.data.(map[string]interface{}); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return New(nil) +} + +// MustObjxMap gets the value as a (Map). +// +// Panics if the object is not a (Map). +func (v *Value) MustObjxMap() Map { + if s, ok := v.data.(map[string]interface{}); ok { + return s + } + return v.data.((Map)) +} + +// ObjxMapSlice gets the value as a [](Map), returns the optionalDefault +// value or nil if the value is not a [](Map). +func (v *Value) ObjxMapSlice(optionalDefault ...[](Map)) [](Map) { + if s, ok := v.data.([]Map); ok { + return s + } + + if s, ok := v.data.([]map[string]interface{}); ok { + result := make([]Map, len(s)) + for i := range s { + result[i] = s[i] + } + return result + } + + s, ok := v.data.([]interface{}) + if !ok { + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil + } + + result := make([]Map, len(s)) + for i := range s { + switch s[i].(type) { + case Map: + result[i] = s[i].(Map) + case map[string]interface{}: + result[i] = New(s[i]) + default: + return nil + } + } + return result +} + +// MustObjxMapSlice gets the value as a [](Map). +// +// Panics if the object is not a [](Map). +func (v *Value) MustObjxMapSlice() [](Map) { + if s := v.ObjxMapSlice(); s != nil { + return s + } + return v.data.([](Map)) +} + +// IsObjxMap gets whether the object contained is a (Map) or not. +func (v *Value) IsObjxMap() bool { + _, ok := v.data.((Map)) + if !ok { + _, ok = v.data.(map[string]interface{}) + } + return ok +} + +// IsObjxMapSlice gets whether the object contained is a [](Map) or not. +func (v *Value) IsObjxMapSlice() bool { + _, ok := v.data.([](Map)) + if !ok { + _, ok = v.data.([]map[string]interface{}) + if !ok { + s, ok := v.data.([]interface{}) + if ok { + for i := range s { + switch s[i].(type) { + case Map: + case map[string]interface{}: + default: + return false + } + } + return true + } + } + } + + return ok +} + +// EachObjxMap calls the specified callback for each object +// in the [](Map). +// +// Panics if the object is the wrong type. +func (v *Value) EachObjxMap(callback func(int, Map) bool) *Value { + for index, val := range v.MustObjxMapSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereObjxMap uses the specified decider function to select items +// from the [](Map). The object contained in the result will contain +// only the selected items. +func (v *Value) WhereObjxMap(decider func(int, Map) bool) *Value { + var selected [](Map) + v.EachObjxMap(func(index int, val Map) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupObjxMap uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][](Map). +func (v *Value) GroupObjxMap(grouper func(int, Map) string) *Value { + groups := make(map[string][](Map)) + v.EachObjxMap(func(index int, val Map) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([](Map), 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceObjxMap uses the specified function to replace each (Map)s +// by iterating each item. The data in the returned result will be a +// [](Map) containing the replaced items. +func (v *Value) ReplaceObjxMap(replacer func(int, Map) Map) *Value { + arr := v.MustObjxMapSlice() + replaced := make([](Map), len(arr)) + v.EachObjxMap(func(index int, val Map) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectObjxMap uses the specified collector function to collect a value +// for each of the (Map)s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectObjxMap(collector func(int, Map) interface{}) *Value { + arr := v.MustObjxMapSlice() + collected := make([]interface{}, len(arr)) + v.EachObjxMap(func(index int, val Map) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} diff --git a/vendor/github.com/stretchr/objx/type_specific_codegen.go b/vendor/github.com/stretchr/objx/type_specific_codegen.go new file mode 100644 index 000000000..9859b407f --- /dev/null +++ b/vendor/github.com/stretchr/objx/type_specific_codegen.go @@ -0,0 +1,2251 @@ +package objx + +/* + Inter (interface{} and []interface{}) +*/ + +// Inter gets the value as a interface{}, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Inter(optionalDefault ...interface{}) interface{} { + if s, ok := v.data.(interface{}); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustInter gets the value as a interface{}. +// +// Panics if the object is not a interface{}. +func (v *Value) MustInter() interface{} { + return v.data.(interface{}) +} + +// InterSlice gets the value as a []interface{}, returns the optionalDefault +// value or nil if the value is not a []interface{}. +func (v *Value) InterSlice(optionalDefault ...[]interface{}) []interface{} { + if s, ok := v.data.([]interface{}); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustInterSlice gets the value as a []interface{}. +// +// Panics if the object is not a []interface{}. +func (v *Value) MustInterSlice() []interface{} { + return v.data.([]interface{}) +} + +// IsInter gets whether the object contained is a interface{} or not. +func (v *Value) IsInter() bool { + _, ok := v.data.(interface{}) + return ok +} + +// IsInterSlice gets whether the object contained is a []interface{} or not. +func (v *Value) IsInterSlice() bool { + _, ok := v.data.([]interface{}) + return ok +} + +// EachInter calls the specified callback for each object +// in the []interface{}. +// +// Panics if the object is the wrong type. +func (v *Value) EachInter(callback func(int, interface{}) bool) *Value { + for index, val := range v.MustInterSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereInter uses the specified decider function to select items +// from the []interface{}. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereInter(decider func(int, interface{}) bool) *Value { + var selected []interface{} + v.EachInter(func(index int, val interface{}) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupInter uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]interface{}. +func (v *Value) GroupInter(grouper func(int, interface{}) string) *Value { + groups := make(map[string][]interface{}) + v.EachInter(func(index int, val interface{}) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]interface{}, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceInter uses the specified function to replace each interface{}s +// by iterating each item. The data in the returned result will be a +// []interface{} containing the replaced items. +func (v *Value) ReplaceInter(replacer func(int, interface{}) interface{}) *Value { + arr := v.MustInterSlice() + replaced := make([]interface{}, len(arr)) + v.EachInter(func(index int, val interface{}) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectInter uses the specified collector function to collect a value +// for each of the interface{}s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectInter(collector func(int, interface{}) interface{}) *Value { + arr := v.MustInterSlice() + collected := make([]interface{}, len(arr)) + v.EachInter(func(index int, val interface{}) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Bool (bool and []bool) +*/ + +// Bool gets the value as a bool, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Bool(optionalDefault ...bool) bool { + if s, ok := v.data.(bool); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return false +} + +// MustBool gets the value as a bool. +// +// Panics if the object is not a bool. +func (v *Value) MustBool() bool { + return v.data.(bool) +} + +// BoolSlice gets the value as a []bool, returns the optionalDefault +// value or nil if the value is not a []bool. +func (v *Value) BoolSlice(optionalDefault ...[]bool) []bool { + if s, ok := v.data.([]bool); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustBoolSlice gets the value as a []bool. +// +// Panics if the object is not a []bool. +func (v *Value) MustBoolSlice() []bool { + return v.data.([]bool) +} + +// IsBool gets whether the object contained is a bool or not. +func (v *Value) IsBool() bool { + _, ok := v.data.(bool) + return ok +} + +// IsBoolSlice gets whether the object contained is a []bool or not. +func (v *Value) IsBoolSlice() bool { + _, ok := v.data.([]bool) + return ok +} + +// EachBool calls the specified callback for each object +// in the []bool. +// +// Panics if the object is the wrong type. +func (v *Value) EachBool(callback func(int, bool) bool) *Value { + for index, val := range v.MustBoolSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereBool uses the specified decider function to select items +// from the []bool. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereBool(decider func(int, bool) bool) *Value { + var selected []bool + v.EachBool(func(index int, val bool) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupBool uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]bool. +func (v *Value) GroupBool(grouper func(int, bool) string) *Value { + groups := make(map[string][]bool) + v.EachBool(func(index int, val bool) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]bool, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceBool uses the specified function to replace each bools +// by iterating each item. The data in the returned result will be a +// []bool containing the replaced items. +func (v *Value) ReplaceBool(replacer func(int, bool) bool) *Value { + arr := v.MustBoolSlice() + replaced := make([]bool, len(arr)) + v.EachBool(func(index int, val bool) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectBool uses the specified collector function to collect a value +// for each of the bools in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectBool(collector func(int, bool) interface{}) *Value { + arr := v.MustBoolSlice() + collected := make([]interface{}, len(arr)) + v.EachBool(func(index int, val bool) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Str (string and []string) +*/ + +// Str gets the value as a string, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Str(optionalDefault ...string) string { + if s, ok := v.data.(string); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return "" +} + +// MustStr gets the value as a string. +// +// Panics if the object is not a string. +func (v *Value) MustStr() string { + return v.data.(string) +} + +// StrSlice gets the value as a []string, returns the optionalDefault +// value or nil if the value is not a []string. +func (v *Value) StrSlice(optionalDefault ...[]string) []string { + if s, ok := v.data.([]string); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustStrSlice gets the value as a []string. +// +// Panics if the object is not a []string. +func (v *Value) MustStrSlice() []string { + return v.data.([]string) +} + +// IsStr gets whether the object contained is a string or not. +func (v *Value) IsStr() bool { + _, ok := v.data.(string) + return ok +} + +// IsStrSlice gets whether the object contained is a []string or not. +func (v *Value) IsStrSlice() bool { + _, ok := v.data.([]string) + return ok +} + +// EachStr calls the specified callback for each object +// in the []string. +// +// Panics if the object is the wrong type. +func (v *Value) EachStr(callback func(int, string) bool) *Value { + for index, val := range v.MustStrSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereStr uses the specified decider function to select items +// from the []string. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereStr(decider func(int, string) bool) *Value { + var selected []string + v.EachStr(func(index int, val string) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupStr uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]string. +func (v *Value) GroupStr(grouper func(int, string) string) *Value { + groups := make(map[string][]string) + v.EachStr(func(index int, val string) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]string, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceStr uses the specified function to replace each strings +// by iterating each item. The data in the returned result will be a +// []string containing the replaced items. +func (v *Value) ReplaceStr(replacer func(int, string) string) *Value { + arr := v.MustStrSlice() + replaced := make([]string, len(arr)) + v.EachStr(func(index int, val string) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectStr uses the specified collector function to collect a value +// for each of the strings in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectStr(collector func(int, string) interface{}) *Value { + arr := v.MustStrSlice() + collected := make([]interface{}, len(arr)) + v.EachStr(func(index int, val string) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Int (int and []int) +*/ + +// Int gets the value as a int, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Int(optionalDefault ...int) int { + if s, ok := v.data.(int); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustInt gets the value as a int. +// +// Panics if the object is not a int. +func (v *Value) MustInt() int { + return v.data.(int) +} + +// IntSlice gets the value as a []int, returns the optionalDefault +// value or nil if the value is not a []int. +func (v *Value) IntSlice(optionalDefault ...[]int) []int { + if s, ok := v.data.([]int); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustIntSlice gets the value as a []int. +// +// Panics if the object is not a []int. +func (v *Value) MustIntSlice() []int { + return v.data.([]int) +} + +// IsInt gets whether the object contained is a int or not. +func (v *Value) IsInt() bool { + _, ok := v.data.(int) + return ok +} + +// IsIntSlice gets whether the object contained is a []int or not. +func (v *Value) IsIntSlice() bool { + _, ok := v.data.([]int) + return ok +} + +// EachInt calls the specified callback for each object +// in the []int. +// +// Panics if the object is the wrong type. +func (v *Value) EachInt(callback func(int, int) bool) *Value { + for index, val := range v.MustIntSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereInt uses the specified decider function to select items +// from the []int. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereInt(decider func(int, int) bool) *Value { + var selected []int + v.EachInt(func(index int, val int) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupInt uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]int. +func (v *Value) GroupInt(grouper func(int, int) string) *Value { + groups := make(map[string][]int) + v.EachInt(func(index int, val int) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]int, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceInt uses the specified function to replace each ints +// by iterating each item. The data in the returned result will be a +// []int containing the replaced items. +func (v *Value) ReplaceInt(replacer func(int, int) int) *Value { + arr := v.MustIntSlice() + replaced := make([]int, len(arr)) + v.EachInt(func(index int, val int) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectInt uses the specified collector function to collect a value +// for each of the ints in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectInt(collector func(int, int) interface{}) *Value { + arr := v.MustIntSlice() + collected := make([]interface{}, len(arr)) + v.EachInt(func(index int, val int) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Int8 (int8 and []int8) +*/ + +// Int8 gets the value as a int8, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Int8(optionalDefault ...int8) int8 { + if s, ok := v.data.(int8); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustInt8 gets the value as a int8. +// +// Panics if the object is not a int8. +func (v *Value) MustInt8() int8 { + return v.data.(int8) +} + +// Int8Slice gets the value as a []int8, returns the optionalDefault +// value or nil if the value is not a []int8. +func (v *Value) Int8Slice(optionalDefault ...[]int8) []int8 { + if s, ok := v.data.([]int8); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustInt8Slice gets the value as a []int8. +// +// Panics if the object is not a []int8. +func (v *Value) MustInt8Slice() []int8 { + return v.data.([]int8) +} + +// IsInt8 gets whether the object contained is a int8 or not. +func (v *Value) IsInt8() bool { + _, ok := v.data.(int8) + return ok +} + +// IsInt8Slice gets whether the object contained is a []int8 or not. +func (v *Value) IsInt8Slice() bool { + _, ok := v.data.([]int8) + return ok +} + +// EachInt8 calls the specified callback for each object +// in the []int8. +// +// Panics if the object is the wrong type. +func (v *Value) EachInt8(callback func(int, int8) bool) *Value { + for index, val := range v.MustInt8Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereInt8 uses the specified decider function to select items +// from the []int8. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereInt8(decider func(int, int8) bool) *Value { + var selected []int8 + v.EachInt8(func(index int, val int8) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupInt8 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]int8. +func (v *Value) GroupInt8(grouper func(int, int8) string) *Value { + groups := make(map[string][]int8) + v.EachInt8(func(index int, val int8) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]int8, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceInt8 uses the specified function to replace each int8s +// by iterating each item. The data in the returned result will be a +// []int8 containing the replaced items. +func (v *Value) ReplaceInt8(replacer func(int, int8) int8) *Value { + arr := v.MustInt8Slice() + replaced := make([]int8, len(arr)) + v.EachInt8(func(index int, val int8) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectInt8 uses the specified collector function to collect a value +// for each of the int8s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectInt8(collector func(int, int8) interface{}) *Value { + arr := v.MustInt8Slice() + collected := make([]interface{}, len(arr)) + v.EachInt8(func(index int, val int8) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Int16 (int16 and []int16) +*/ + +// Int16 gets the value as a int16, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Int16(optionalDefault ...int16) int16 { + if s, ok := v.data.(int16); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustInt16 gets the value as a int16. +// +// Panics if the object is not a int16. +func (v *Value) MustInt16() int16 { + return v.data.(int16) +} + +// Int16Slice gets the value as a []int16, returns the optionalDefault +// value or nil if the value is not a []int16. +func (v *Value) Int16Slice(optionalDefault ...[]int16) []int16 { + if s, ok := v.data.([]int16); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustInt16Slice gets the value as a []int16. +// +// Panics if the object is not a []int16. +func (v *Value) MustInt16Slice() []int16 { + return v.data.([]int16) +} + +// IsInt16 gets whether the object contained is a int16 or not. +func (v *Value) IsInt16() bool { + _, ok := v.data.(int16) + return ok +} + +// IsInt16Slice gets whether the object contained is a []int16 or not. +func (v *Value) IsInt16Slice() bool { + _, ok := v.data.([]int16) + return ok +} + +// EachInt16 calls the specified callback for each object +// in the []int16. +// +// Panics if the object is the wrong type. +func (v *Value) EachInt16(callback func(int, int16) bool) *Value { + for index, val := range v.MustInt16Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereInt16 uses the specified decider function to select items +// from the []int16. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereInt16(decider func(int, int16) bool) *Value { + var selected []int16 + v.EachInt16(func(index int, val int16) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupInt16 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]int16. +func (v *Value) GroupInt16(grouper func(int, int16) string) *Value { + groups := make(map[string][]int16) + v.EachInt16(func(index int, val int16) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]int16, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceInt16 uses the specified function to replace each int16s +// by iterating each item. The data in the returned result will be a +// []int16 containing the replaced items. +func (v *Value) ReplaceInt16(replacer func(int, int16) int16) *Value { + arr := v.MustInt16Slice() + replaced := make([]int16, len(arr)) + v.EachInt16(func(index int, val int16) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectInt16 uses the specified collector function to collect a value +// for each of the int16s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectInt16(collector func(int, int16) interface{}) *Value { + arr := v.MustInt16Slice() + collected := make([]interface{}, len(arr)) + v.EachInt16(func(index int, val int16) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Int32 (int32 and []int32) +*/ + +// Int32 gets the value as a int32, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Int32(optionalDefault ...int32) int32 { + if s, ok := v.data.(int32); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustInt32 gets the value as a int32. +// +// Panics if the object is not a int32. +func (v *Value) MustInt32() int32 { + return v.data.(int32) +} + +// Int32Slice gets the value as a []int32, returns the optionalDefault +// value or nil if the value is not a []int32. +func (v *Value) Int32Slice(optionalDefault ...[]int32) []int32 { + if s, ok := v.data.([]int32); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustInt32Slice gets the value as a []int32. +// +// Panics if the object is not a []int32. +func (v *Value) MustInt32Slice() []int32 { + return v.data.([]int32) +} + +// IsInt32 gets whether the object contained is a int32 or not. +func (v *Value) IsInt32() bool { + _, ok := v.data.(int32) + return ok +} + +// IsInt32Slice gets whether the object contained is a []int32 or not. +func (v *Value) IsInt32Slice() bool { + _, ok := v.data.([]int32) + return ok +} + +// EachInt32 calls the specified callback for each object +// in the []int32. +// +// Panics if the object is the wrong type. +func (v *Value) EachInt32(callback func(int, int32) bool) *Value { + for index, val := range v.MustInt32Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereInt32 uses the specified decider function to select items +// from the []int32. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereInt32(decider func(int, int32) bool) *Value { + var selected []int32 + v.EachInt32(func(index int, val int32) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupInt32 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]int32. +func (v *Value) GroupInt32(grouper func(int, int32) string) *Value { + groups := make(map[string][]int32) + v.EachInt32(func(index int, val int32) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]int32, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceInt32 uses the specified function to replace each int32s +// by iterating each item. The data in the returned result will be a +// []int32 containing the replaced items. +func (v *Value) ReplaceInt32(replacer func(int, int32) int32) *Value { + arr := v.MustInt32Slice() + replaced := make([]int32, len(arr)) + v.EachInt32(func(index int, val int32) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectInt32 uses the specified collector function to collect a value +// for each of the int32s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectInt32(collector func(int, int32) interface{}) *Value { + arr := v.MustInt32Slice() + collected := make([]interface{}, len(arr)) + v.EachInt32(func(index int, val int32) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Int64 (int64 and []int64) +*/ + +// Int64 gets the value as a int64, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Int64(optionalDefault ...int64) int64 { + if s, ok := v.data.(int64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustInt64 gets the value as a int64. +// +// Panics if the object is not a int64. +func (v *Value) MustInt64() int64 { + return v.data.(int64) +} + +// Int64Slice gets the value as a []int64, returns the optionalDefault +// value or nil if the value is not a []int64. +func (v *Value) Int64Slice(optionalDefault ...[]int64) []int64 { + if s, ok := v.data.([]int64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustInt64Slice gets the value as a []int64. +// +// Panics if the object is not a []int64. +func (v *Value) MustInt64Slice() []int64 { + return v.data.([]int64) +} + +// IsInt64 gets whether the object contained is a int64 or not. +func (v *Value) IsInt64() bool { + _, ok := v.data.(int64) + return ok +} + +// IsInt64Slice gets whether the object contained is a []int64 or not. +func (v *Value) IsInt64Slice() bool { + _, ok := v.data.([]int64) + return ok +} + +// EachInt64 calls the specified callback for each object +// in the []int64. +// +// Panics if the object is the wrong type. +func (v *Value) EachInt64(callback func(int, int64) bool) *Value { + for index, val := range v.MustInt64Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereInt64 uses the specified decider function to select items +// from the []int64. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereInt64(decider func(int, int64) bool) *Value { + var selected []int64 + v.EachInt64(func(index int, val int64) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupInt64 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]int64. +func (v *Value) GroupInt64(grouper func(int, int64) string) *Value { + groups := make(map[string][]int64) + v.EachInt64(func(index int, val int64) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]int64, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceInt64 uses the specified function to replace each int64s +// by iterating each item. The data in the returned result will be a +// []int64 containing the replaced items. +func (v *Value) ReplaceInt64(replacer func(int, int64) int64) *Value { + arr := v.MustInt64Slice() + replaced := make([]int64, len(arr)) + v.EachInt64(func(index int, val int64) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectInt64 uses the specified collector function to collect a value +// for each of the int64s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectInt64(collector func(int, int64) interface{}) *Value { + arr := v.MustInt64Slice() + collected := make([]interface{}, len(arr)) + v.EachInt64(func(index int, val int64) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Uint (uint and []uint) +*/ + +// Uint gets the value as a uint, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Uint(optionalDefault ...uint) uint { + if s, ok := v.data.(uint); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustUint gets the value as a uint. +// +// Panics if the object is not a uint. +func (v *Value) MustUint() uint { + return v.data.(uint) +} + +// UintSlice gets the value as a []uint, returns the optionalDefault +// value or nil if the value is not a []uint. +func (v *Value) UintSlice(optionalDefault ...[]uint) []uint { + if s, ok := v.data.([]uint); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustUintSlice gets the value as a []uint. +// +// Panics if the object is not a []uint. +func (v *Value) MustUintSlice() []uint { + return v.data.([]uint) +} + +// IsUint gets whether the object contained is a uint or not. +func (v *Value) IsUint() bool { + _, ok := v.data.(uint) + return ok +} + +// IsUintSlice gets whether the object contained is a []uint or not. +func (v *Value) IsUintSlice() bool { + _, ok := v.data.([]uint) + return ok +} + +// EachUint calls the specified callback for each object +// in the []uint. +// +// Panics if the object is the wrong type. +func (v *Value) EachUint(callback func(int, uint) bool) *Value { + for index, val := range v.MustUintSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereUint uses the specified decider function to select items +// from the []uint. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereUint(decider func(int, uint) bool) *Value { + var selected []uint + v.EachUint(func(index int, val uint) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupUint uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]uint. +func (v *Value) GroupUint(grouper func(int, uint) string) *Value { + groups := make(map[string][]uint) + v.EachUint(func(index int, val uint) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]uint, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceUint uses the specified function to replace each uints +// by iterating each item. The data in the returned result will be a +// []uint containing the replaced items. +func (v *Value) ReplaceUint(replacer func(int, uint) uint) *Value { + arr := v.MustUintSlice() + replaced := make([]uint, len(arr)) + v.EachUint(func(index int, val uint) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectUint uses the specified collector function to collect a value +// for each of the uints in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectUint(collector func(int, uint) interface{}) *Value { + arr := v.MustUintSlice() + collected := make([]interface{}, len(arr)) + v.EachUint(func(index int, val uint) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Uint8 (uint8 and []uint8) +*/ + +// Uint8 gets the value as a uint8, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Uint8(optionalDefault ...uint8) uint8 { + if s, ok := v.data.(uint8); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustUint8 gets the value as a uint8. +// +// Panics if the object is not a uint8. +func (v *Value) MustUint8() uint8 { + return v.data.(uint8) +} + +// Uint8Slice gets the value as a []uint8, returns the optionalDefault +// value or nil if the value is not a []uint8. +func (v *Value) Uint8Slice(optionalDefault ...[]uint8) []uint8 { + if s, ok := v.data.([]uint8); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustUint8Slice gets the value as a []uint8. +// +// Panics if the object is not a []uint8. +func (v *Value) MustUint8Slice() []uint8 { + return v.data.([]uint8) +} + +// IsUint8 gets whether the object contained is a uint8 or not. +func (v *Value) IsUint8() bool { + _, ok := v.data.(uint8) + return ok +} + +// IsUint8Slice gets whether the object contained is a []uint8 or not. +func (v *Value) IsUint8Slice() bool { + _, ok := v.data.([]uint8) + return ok +} + +// EachUint8 calls the specified callback for each object +// in the []uint8. +// +// Panics if the object is the wrong type. +func (v *Value) EachUint8(callback func(int, uint8) bool) *Value { + for index, val := range v.MustUint8Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereUint8 uses the specified decider function to select items +// from the []uint8. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereUint8(decider func(int, uint8) bool) *Value { + var selected []uint8 + v.EachUint8(func(index int, val uint8) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupUint8 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]uint8. +func (v *Value) GroupUint8(grouper func(int, uint8) string) *Value { + groups := make(map[string][]uint8) + v.EachUint8(func(index int, val uint8) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]uint8, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceUint8 uses the specified function to replace each uint8s +// by iterating each item. The data in the returned result will be a +// []uint8 containing the replaced items. +func (v *Value) ReplaceUint8(replacer func(int, uint8) uint8) *Value { + arr := v.MustUint8Slice() + replaced := make([]uint8, len(arr)) + v.EachUint8(func(index int, val uint8) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectUint8 uses the specified collector function to collect a value +// for each of the uint8s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectUint8(collector func(int, uint8) interface{}) *Value { + arr := v.MustUint8Slice() + collected := make([]interface{}, len(arr)) + v.EachUint8(func(index int, val uint8) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Uint16 (uint16 and []uint16) +*/ + +// Uint16 gets the value as a uint16, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Uint16(optionalDefault ...uint16) uint16 { + if s, ok := v.data.(uint16); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustUint16 gets the value as a uint16. +// +// Panics if the object is not a uint16. +func (v *Value) MustUint16() uint16 { + return v.data.(uint16) +} + +// Uint16Slice gets the value as a []uint16, returns the optionalDefault +// value or nil if the value is not a []uint16. +func (v *Value) Uint16Slice(optionalDefault ...[]uint16) []uint16 { + if s, ok := v.data.([]uint16); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustUint16Slice gets the value as a []uint16. +// +// Panics if the object is not a []uint16. +func (v *Value) MustUint16Slice() []uint16 { + return v.data.([]uint16) +} + +// IsUint16 gets whether the object contained is a uint16 or not. +func (v *Value) IsUint16() bool { + _, ok := v.data.(uint16) + return ok +} + +// IsUint16Slice gets whether the object contained is a []uint16 or not. +func (v *Value) IsUint16Slice() bool { + _, ok := v.data.([]uint16) + return ok +} + +// EachUint16 calls the specified callback for each object +// in the []uint16. +// +// Panics if the object is the wrong type. +func (v *Value) EachUint16(callback func(int, uint16) bool) *Value { + for index, val := range v.MustUint16Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereUint16 uses the specified decider function to select items +// from the []uint16. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereUint16(decider func(int, uint16) bool) *Value { + var selected []uint16 + v.EachUint16(func(index int, val uint16) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupUint16 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]uint16. +func (v *Value) GroupUint16(grouper func(int, uint16) string) *Value { + groups := make(map[string][]uint16) + v.EachUint16(func(index int, val uint16) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]uint16, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceUint16 uses the specified function to replace each uint16s +// by iterating each item. The data in the returned result will be a +// []uint16 containing the replaced items. +func (v *Value) ReplaceUint16(replacer func(int, uint16) uint16) *Value { + arr := v.MustUint16Slice() + replaced := make([]uint16, len(arr)) + v.EachUint16(func(index int, val uint16) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectUint16 uses the specified collector function to collect a value +// for each of the uint16s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectUint16(collector func(int, uint16) interface{}) *Value { + arr := v.MustUint16Slice() + collected := make([]interface{}, len(arr)) + v.EachUint16(func(index int, val uint16) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Uint32 (uint32 and []uint32) +*/ + +// Uint32 gets the value as a uint32, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Uint32(optionalDefault ...uint32) uint32 { + if s, ok := v.data.(uint32); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustUint32 gets the value as a uint32. +// +// Panics if the object is not a uint32. +func (v *Value) MustUint32() uint32 { + return v.data.(uint32) +} + +// Uint32Slice gets the value as a []uint32, returns the optionalDefault +// value or nil if the value is not a []uint32. +func (v *Value) Uint32Slice(optionalDefault ...[]uint32) []uint32 { + if s, ok := v.data.([]uint32); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustUint32Slice gets the value as a []uint32. +// +// Panics if the object is not a []uint32. +func (v *Value) MustUint32Slice() []uint32 { + return v.data.([]uint32) +} + +// IsUint32 gets whether the object contained is a uint32 or not. +func (v *Value) IsUint32() bool { + _, ok := v.data.(uint32) + return ok +} + +// IsUint32Slice gets whether the object contained is a []uint32 or not. +func (v *Value) IsUint32Slice() bool { + _, ok := v.data.([]uint32) + return ok +} + +// EachUint32 calls the specified callback for each object +// in the []uint32. +// +// Panics if the object is the wrong type. +func (v *Value) EachUint32(callback func(int, uint32) bool) *Value { + for index, val := range v.MustUint32Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereUint32 uses the specified decider function to select items +// from the []uint32. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereUint32(decider func(int, uint32) bool) *Value { + var selected []uint32 + v.EachUint32(func(index int, val uint32) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupUint32 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]uint32. +func (v *Value) GroupUint32(grouper func(int, uint32) string) *Value { + groups := make(map[string][]uint32) + v.EachUint32(func(index int, val uint32) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]uint32, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceUint32 uses the specified function to replace each uint32s +// by iterating each item. The data in the returned result will be a +// []uint32 containing the replaced items. +func (v *Value) ReplaceUint32(replacer func(int, uint32) uint32) *Value { + arr := v.MustUint32Slice() + replaced := make([]uint32, len(arr)) + v.EachUint32(func(index int, val uint32) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectUint32 uses the specified collector function to collect a value +// for each of the uint32s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectUint32(collector func(int, uint32) interface{}) *Value { + arr := v.MustUint32Slice() + collected := make([]interface{}, len(arr)) + v.EachUint32(func(index int, val uint32) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Uint64 (uint64 and []uint64) +*/ + +// Uint64 gets the value as a uint64, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Uint64(optionalDefault ...uint64) uint64 { + if s, ok := v.data.(uint64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustUint64 gets the value as a uint64. +// +// Panics if the object is not a uint64. +func (v *Value) MustUint64() uint64 { + return v.data.(uint64) +} + +// Uint64Slice gets the value as a []uint64, returns the optionalDefault +// value or nil if the value is not a []uint64. +func (v *Value) Uint64Slice(optionalDefault ...[]uint64) []uint64 { + if s, ok := v.data.([]uint64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustUint64Slice gets the value as a []uint64. +// +// Panics if the object is not a []uint64. +func (v *Value) MustUint64Slice() []uint64 { + return v.data.([]uint64) +} + +// IsUint64 gets whether the object contained is a uint64 or not. +func (v *Value) IsUint64() bool { + _, ok := v.data.(uint64) + return ok +} + +// IsUint64Slice gets whether the object contained is a []uint64 or not. +func (v *Value) IsUint64Slice() bool { + _, ok := v.data.([]uint64) + return ok +} + +// EachUint64 calls the specified callback for each object +// in the []uint64. +// +// Panics if the object is the wrong type. +func (v *Value) EachUint64(callback func(int, uint64) bool) *Value { + for index, val := range v.MustUint64Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereUint64 uses the specified decider function to select items +// from the []uint64. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereUint64(decider func(int, uint64) bool) *Value { + var selected []uint64 + v.EachUint64(func(index int, val uint64) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupUint64 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]uint64. +func (v *Value) GroupUint64(grouper func(int, uint64) string) *Value { + groups := make(map[string][]uint64) + v.EachUint64(func(index int, val uint64) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]uint64, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceUint64 uses the specified function to replace each uint64s +// by iterating each item. The data in the returned result will be a +// []uint64 containing the replaced items. +func (v *Value) ReplaceUint64(replacer func(int, uint64) uint64) *Value { + arr := v.MustUint64Slice() + replaced := make([]uint64, len(arr)) + v.EachUint64(func(index int, val uint64) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectUint64 uses the specified collector function to collect a value +// for each of the uint64s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectUint64(collector func(int, uint64) interface{}) *Value { + arr := v.MustUint64Slice() + collected := make([]interface{}, len(arr)) + v.EachUint64(func(index int, val uint64) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Uintptr (uintptr and []uintptr) +*/ + +// Uintptr gets the value as a uintptr, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Uintptr(optionalDefault ...uintptr) uintptr { + if s, ok := v.data.(uintptr); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustUintptr gets the value as a uintptr. +// +// Panics if the object is not a uintptr. +func (v *Value) MustUintptr() uintptr { + return v.data.(uintptr) +} + +// UintptrSlice gets the value as a []uintptr, returns the optionalDefault +// value or nil if the value is not a []uintptr. +func (v *Value) UintptrSlice(optionalDefault ...[]uintptr) []uintptr { + if s, ok := v.data.([]uintptr); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustUintptrSlice gets the value as a []uintptr. +// +// Panics if the object is not a []uintptr. +func (v *Value) MustUintptrSlice() []uintptr { + return v.data.([]uintptr) +} + +// IsUintptr gets whether the object contained is a uintptr or not. +func (v *Value) IsUintptr() bool { + _, ok := v.data.(uintptr) + return ok +} + +// IsUintptrSlice gets whether the object contained is a []uintptr or not. +func (v *Value) IsUintptrSlice() bool { + _, ok := v.data.([]uintptr) + return ok +} + +// EachUintptr calls the specified callback for each object +// in the []uintptr. +// +// Panics if the object is the wrong type. +func (v *Value) EachUintptr(callback func(int, uintptr) bool) *Value { + for index, val := range v.MustUintptrSlice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereUintptr uses the specified decider function to select items +// from the []uintptr. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereUintptr(decider func(int, uintptr) bool) *Value { + var selected []uintptr + v.EachUintptr(func(index int, val uintptr) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupUintptr uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]uintptr. +func (v *Value) GroupUintptr(grouper func(int, uintptr) string) *Value { + groups := make(map[string][]uintptr) + v.EachUintptr(func(index int, val uintptr) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]uintptr, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceUintptr uses the specified function to replace each uintptrs +// by iterating each item. The data in the returned result will be a +// []uintptr containing the replaced items. +func (v *Value) ReplaceUintptr(replacer func(int, uintptr) uintptr) *Value { + arr := v.MustUintptrSlice() + replaced := make([]uintptr, len(arr)) + v.EachUintptr(func(index int, val uintptr) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectUintptr uses the specified collector function to collect a value +// for each of the uintptrs in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectUintptr(collector func(int, uintptr) interface{}) *Value { + arr := v.MustUintptrSlice() + collected := make([]interface{}, len(arr)) + v.EachUintptr(func(index int, val uintptr) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Float32 (float32 and []float32) +*/ + +// Float32 gets the value as a float32, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Float32(optionalDefault ...float32) float32 { + if s, ok := v.data.(float32); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustFloat32 gets the value as a float32. +// +// Panics if the object is not a float32. +func (v *Value) MustFloat32() float32 { + return v.data.(float32) +} + +// Float32Slice gets the value as a []float32, returns the optionalDefault +// value or nil if the value is not a []float32. +func (v *Value) Float32Slice(optionalDefault ...[]float32) []float32 { + if s, ok := v.data.([]float32); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustFloat32Slice gets the value as a []float32. +// +// Panics if the object is not a []float32. +func (v *Value) MustFloat32Slice() []float32 { + return v.data.([]float32) +} + +// IsFloat32 gets whether the object contained is a float32 or not. +func (v *Value) IsFloat32() bool { + _, ok := v.data.(float32) + return ok +} + +// IsFloat32Slice gets whether the object contained is a []float32 or not. +func (v *Value) IsFloat32Slice() bool { + _, ok := v.data.([]float32) + return ok +} + +// EachFloat32 calls the specified callback for each object +// in the []float32. +// +// Panics if the object is the wrong type. +func (v *Value) EachFloat32(callback func(int, float32) bool) *Value { + for index, val := range v.MustFloat32Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereFloat32 uses the specified decider function to select items +// from the []float32. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereFloat32(decider func(int, float32) bool) *Value { + var selected []float32 + v.EachFloat32(func(index int, val float32) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupFloat32 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]float32. +func (v *Value) GroupFloat32(grouper func(int, float32) string) *Value { + groups := make(map[string][]float32) + v.EachFloat32(func(index int, val float32) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]float32, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceFloat32 uses the specified function to replace each float32s +// by iterating each item. The data in the returned result will be a +// []float32 containing the replaced items. +func (v *Value) ReplaceFloat32(replacer func(int, float32) float32) *Value { + arr := v.MustFloat32Slice() + replaced := make([]float32, len(arr)) + v.EachFloat32(func(index int, val float32) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectFloat32 uses the specified collector function to collect a value +// for each of the float32s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectFloat32(collector func(int, float32) interface{}) *Value { + arr := v.MustFloat32Slice() + collected := make([]interface{}, len(arr)) + v.EachFloat32(func(index int, val float32) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Float64 (float64 and []float64) +*/ + +// Float64 gets the value as a float64, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Float64(optionalDefault ...float64) float64 { + if s, ok := v.data.(float64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustFloat64 gets the value as a float64. +// +// Panics if the object is not a float64. +func (v *Value) MustFloat64() float64 { + return v.data.(float64) +} + +// Float64Slice gets the value as a []float64, returns the optionalDefault +// value or nil if the value is not a []float64. +func (v *Value) Float64Slice(optionalDefault ...[]float64) []float64 { + if s, ok := v.data.([]float64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustFloat64Slice gets the value as a []float64. +// +// Panics if the object is not a []float64. +func (v *Value) MustFloat64Slice() []float64 { + return v.data.([]float64) +} + +// IsFloat64 gets whether the object contained is a float64 or not. +func (v *Value) IsFloat64() bool { + _, ok := v.data.(float64) + return ok +} + +// IsFloat64Slice gets whether the object contained is a []float64 or not. +func (v *Value) IsFloat64Slice() bool { + _, ok := v.data.([]float64) + return ok +} + +// EachFloat64 calls the specified callback for each object +// in the []float64. +// +// Panics if the object is the wrong type. +func (v *Value) EachFloat64(callback func(int, float64) bool) *Value { + for index, val := range v.MustFloat64Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereFloat64 uses the specified decider function to select items +// from the []float64. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereFloat64(decider func(int, float64) bool) *Value { + var selected []float64 + v.EachFloat64(func(index int, val float64) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupFloat64 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]float64. +func (v *Value) GroupFloat64(grouper func(int, float64) string) *Value { + groups := make(map[string][]float64) + v.EachFloat64(func(index int, val float64) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]float64, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceFloat64 uses the specified function to replace each float64s +// by iterating each item. The data in the returned result will be a +// []float64 containing the replaced items. +func (v *Value) ReplaceFloat64(replacer func(int, float64) float64) *Value { + arr := v.MustFloat64Slice() + replaced := make([]float64, len(arr)) + v.EachFloat64(func(index int, val float64) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectFloat64 uses the specified collector function to collect a value +// for each of the float64s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectFloat64(collector func(int, float64) interface{}) *Value { + arr := v.MustFloat64Slice() + collected := make([]interface{}, len(arr)) + v.EachFloat64(func(index int, val float64) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Complex64 (complex64 and []complex64) +*/ + +// Complex64 gets the value as a complex64, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Complex64(optionalDefault ...complex64) complex64 { + if s, ok := v.data.(complex64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustComplex64 gets the value as a complex64. +// +// Panics if the object is not a complex64. +func (v *Value) MustComplex64() complex64 { + return v.data.(complex64) +} + +// Complex64Slice gets the value as a []complex64, returns the optionalDefault +// value or nil if the value is not a []complex64. +func (v *Value) Complex64Slice(optionalDefault ...[]complex64) []complex64 { + if s, ok := v.data.([]complex64); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustComplex64Slice gets the value as a []complex64. +// +// Panics if the object is not a []complex64. +func (v *Value) MustComplex64Slice() []complex64 { + return v.data.([]complex64) +} + +// IsComplex64 gets whether the object contained is a complex64 or not. +func (v *Value) IsComplex64() bool { + _, ok := v.data.(complex64) + return ok +} + +// IsComplex64Slice gets whether the object contained is a []complex64 or not. +func (v *Value) IsComplex64Slice() bool { + _, ok := v.data.([]complex64) + return ok +} + +// EachComplex64 calls the specified callback for each object +// in the []complex64. +// +// Panics if the object is the wrong type. +func (v *Value) EachComplex64(callback func(int, complex64) bool) *Value { + for index, val := range v.MustComplex64Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereComplex64 uses the specified decider function to select items +// from the []complex64. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereComplex64(decider func(int, complex64) bool) *Value { + var selected []complex64 + v.EachComplex64(func(index int, val complex64) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupComplex64 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]complex64. +func (v *Value) GroupComplex64(grouper func(int, complex64) string) *Value { + groups := make(map[string][]complex64) + v.EachComplex64(func(index int, val complex64) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]complex64, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceComplex64 uses the specified function to replace each complex64s +// by iterating each item. The data in the returned result will be a +// []complex64 containing the replaced items. +func (v *Value) ReplaceComplex64(replacer func(int, complex64) complex64) *Value { + arr := v.MustComplex64Slice() + replaced := make([]complex64, len(arr)) + v.EachComplex64(func(index int, val complex64) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectComplex64 uses the specified collector function to collect a value +// for each of the complex64s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectComplex64(collector func(int, complex64) interface{}) *Value { + arr := v.MustComplex64Slice() + collected := make([]interface{}, len(arr)) + v.EachComplex64(func(index int, val complex64) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} + +/* + Complex128 (complex128 and []complex128) +*/ + +// Complex128 gets the value as a complex128, returns the optionalDefault +// value or a system default object if the value is the wrong type. +func (v *Value) Complex128(optionalDefault ...complex128) complex128 { + if s, ok := v.data.(complex128); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return 0 +} + +// MustComplex128 gets the value as a complex128. +// +// Panics if the object is not a complex128. +func (v *Value) MustComplex128() complex128 { + return v.data.(complex128) +} + +// Complex128Slice gets the value as a []complex128, returns the optionalDefault +// value or nil if the value is not a []complex128. +func (v *Value) Complex128Slice(optionalDefault ...[]complex128) []complex128 { + if s, ok := v.data.([]complex128); ok { + return s + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + return nil +} + +// MustComplex128Slice gets the value as a []complex128. +// +// Panics if the object is not a []complex128. +func (v *Value) MustComplex128Slice() []complex128 { + return v.data.([]complex128) +} + +// IsComplex128 gets whether the object contained is a complex128 or not. +func (v *Value) IsComplex128() bool { + _, ok := v.data.(complex128) + return ok +} + +// IsComplex128Slice gets whether the object contained is a []complex128 or not. +func (v *Value) IsComplex128Slice() bool { + _, ok := v.data.([]complex128) + return ok +} + +// EachComplex128 calls the specified callback for each object +// in the []complex128. +// +// Panics if the object is the wrong type. +func (v *Value) EachComplex128(callback func(int, complex128) bool) *Value { + for index, val := range v.MustComplex128Slice() { + carryon := callback(index, val) + if !carryon { + break + } + } + return v +} + +// WhereComplex128 uses the specified decider function to select items +// from the []complex128. The object contained in the result will contain +// only the selected items. +func (v *Value) WhereComplex128(decider func(int, complex128) bool) *Value { + var selected []complex128 + v.EachComplex128(func(index int, val complex128) bool { + shouldSelect := decider(index, val) + if !shouldSelect { + selected = append(selected, val) + } + return true + }) + return &Value{data: selected} +} + +// GroupComplex128 uses the specified grouper function to group the items +// keyed by the return of the grouper. The object contained in the +// result will contain a map[string][]complex128. +func (v *Value) GroupComplex128(grouper func(int, complex128) string) *Value { + groups := make(map[string][]complex128) + v.EachComplex128(func(index int, val complex128) bool { + group := grouper(index, val) + if _, ok := groups[group]; !ok { + groups[group] = make([]complex128, 0) + } + groups[group] = append(groups[group], val) + return true + }) + return &Value{data: groups} +} + +// ReplaceComplex128 uses the specified function to replace each complex128s +// by iterating each item. The data in the returned result will be a +// []complex128 containing the replaced items. +func (v *Value) ReplaceComplex128(replacer func(int, complex128) complex128) *Value { + arr := v.MustComplex128Slice() + replaced := make([]complex128, len(arr)) + v.EachComplex128(func(index int, val complex128) bool { + replaced[index] = replacer(index, val) + return true + }) + return &Value{data: replaced} +} + +// CollectComplex128 uses the specified collector function to collect a value +// for each of the complex128s in the slice. The data returned will be a +// []interface{}. +func (v *Value) CollectComplex128(collector func(int, complex128) interface{}) *Value { + arr := v.MustComplex128Slice() + collected := make([]interface{}, len(arr)) + v.EachComplex128(func(index int, val complex128) bool { + collected[index] = collector(index, val) + return true + }) + return &Value{data: collected} +} diff --git a/vendor/github.com/stretchr/objx/value.go b/vendor/github.com/stretchr/objx/value.go new file mode 100644 index 000000000..4e5f9b77e --- /dev/null +++ b/vendor/github.com/stretchr/objx/value.go @@ -0,0 +1,159 @@ +package objx + +import ( + "fmt" + "strconv" +) + +// Value provides methods for extracting interface{} data in various +// types. +type Value struct { + // data contains the raw data being managed by this Value + data interface{} +} + +// Data returns the raw data contained by this Value +func (v *Value) Data() interface{} { + return v.data +} + +// String returns the value always as a string +func (v *Value) String() string { + switch { + case v.IsNil(): + return "" + case v.IsStr(): + return v.Str() + case v.IsBool(): + return strconv.FormatBool(v.Bool()) + case v.IsFloat32(): + return strconv.FormatFloat(float64(v.Float32()), 'f', -1, 32) + case v.IsFloat64(): + return strconv.FormatFloat(v.Float64(), 'f', -1, 64) + case v.IsInt(): + return strconv.FormatInt(int64(v.Int()), 10) + case v.IsInt8(): + return strconv.FormatInt(int64(v.Int8()), 10) + case v.IsInt16(): + return strconv.FormatInt(int64(v.Int16()), 10) + case v.IsInt32(): + return strconv.FormatInt(int64(v.Int32()), 10) + case v.IsInt64(): + return strconv.FormatInt(v.Int64(), 10) + case v.IsUint(): + return strconv.FormatUint(uint64(v.Uint()), 10) + case v.IsUint8(): + return strconv.FormatUint(uint64(v.Uint8()), 10) + case v.IsUint16(): + return strconv.FormatUint(uint64(v.Uint16()), 10) + case v.IsUint32(): + return strconv.FormatUint(uint64(v.Uint32()), 10) + case v.IsUint64(): + return strconv.FormatUint(v.Uint64(), 10) + } + return fmt.Sprintf("%#v", v.Data()) +} + +// StringSlice returns the value always as a []string +func (v *Value) StringSlice(optionalDefault ...[]string) []string { + switch { + case v.IsStrSlice(): + return v.MustStrSlice() + case v.IsBoolSlice(): + slice := v.MustBoolSlice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatBool(iv) + } + return vals + case v.IsFloat32Slice(): + slice := v.MustFloat32Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatFloat(float64(iv), 'f', -1, 32) + } + return vals + case v.IsFloat64Slice(): + slice := v.MustFloat64Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatFloat(iv, 'f', -1, 64) + } + return vals + case v.IsIntSlice(): + slice := v.MustIntSlice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatInt(int64(iv), 10) + } + return vals + case v.IsInt8Slice(): + slice := v.MustInt8Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatInt(int64(iv), 10) + } + return vals + case v.IsInt16Slice(): + slice := v.MustInt16Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatInt(int64(iv), 10) + } + return vals + case v.IsInt32Slice(): + slice := v.MustInt32Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatInt(int64(iv), 10) + } + return vals + case v.IsInt64Slice(): + slice := v.MustInt64Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatInt(iv, 10) + } + return vals + case v.IsUintSlice(): + slice := v.MustUintSlice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatUint(uint64(iv), 10) + } + return vals + case v.IsUint8Slice(): + slice := v.MustUint8Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatUint(uint64(iv), 10) + } + return vals + case v.IsUint16Slice(): + slice := v.MustUint16Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatUint(uint64(iv), 10) + } + return vals + case v.IsUint32Slice(): + slice := v.MustUint32Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatUint(uint64(iv), 10) + } + return vals + case v.IsUint64Slice(): + slice := v.MustUint64Slice() + vals := make([]string, len(slice)) + for i, iv := range slice { + vals[i] = strconv.FormatUint(iv, 10) + } + return vals + } + if len(optionalDefault) == 1 { + return optionalDefault[0] + } + + return []string{} +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go index dc200395c..41649d267 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_compare.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_compare.go @@ -13,12 +13,42 @@ const ( compareGreater ) +var ( + intType = reflect.TypeOf(int(1)) + int8Type = reflect.TypeOf(int8(1)) + int16Type = reflect.TypeOf(int16(1)) + int32Type = reflect.TypeOf(int32(1)) + int64Type = reflect.TypeOf(int64(1)) + + uintType = reflect.TypeOf(uint(1)) + uint8Type = reflect.TypeOf(uint8(1)) + uint16Type = reflect.TypeOf(uint16(1)) + uint32Type = reflect.TypeOf(uint32(1)) + uint64Type = reflect.TypeOf(uint64(1)) + + float32Type = reflect.TypeOf(float32(1)) + float64Type = reflect.TypeOf(float64(1)) + + stringType = reflect.TypeOf("") +) + func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { + obj1Value := reflect.ValueOf(obj1) + obj2Value := reflect.ValueOf(obj2) + + // throughout this switch we try and avoid calling .Convert() if possible, + // as this has a pretty big performance impact switch kind { case reflect.Int: { - intobj1 := obj1.(int) - intobj2 := obj2.(int) + intobj1, ok := obj1.(int) + if !ok { + intobj1 = obj1Value.Convert(intType).Interface().(int) + } + intobj2, ok := obj2.(int) + if !ok { + intobj2 = obj2Value.Convert(intType).Interface().(int) + } if intobj1 > intobj2 { return compareGreater, true } @@ -31,8 +61,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int8: { - int8obj1 := obj1.(int8) - int8obj2 := obj2.(int8) + int8obj1, ok := obj1.(int8) + if !ok { + int8obj1 = obj1Value.Convert(int8Type).Interface().(int8) + } + int8obj2, ok := obj2.(int8) + if !ok { + int8obj2 = obj2Value.Convert(int8Type).Interface().(int8) + } if int8obj1 > int8obj2 { return compareGreater, true } @@ -45,8 +81,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int16: { - int16obj1 := obj1.(int16) - int16obj2 := obj2.(int16) + int16obj1, ok := obj1.(int16) + if !ok { + int16obj1 = obj1Value.Convert(int16Type).Interface().(int16) + } + int16obj2, ok := obj2.(int16) + if !ok { + int16obj2 = obj2Value.Convert(int16Type).Interface().(int16) + } if int16obj1 > int16obj2 { return compareGreater, true } @@ -59,8 +101,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int32: { - int32obj1 := obj1.(int32) - int32obj2 := obj2.(int32) + int32obj1, ok := obj1.(int32) + if !ok { + int32obj1 = obj1Value.Convert(int32Type).Interface().(int32) + } + int32obj2, ok := obj2.(int32) + if !ok { + int32obj2 = obj2Value.Convert(int32Type).Interface().(int32) + } if int32obj1 > int32obj2 { return compareGreater, true } @@ -73,8 +121,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Int64: { - int64obj1 := obj1.(int64) - int64obj2 := obj2.(int64) + int64obj1, ok := obj1.(int64) + if !ok { + int64obj1 = obj1Value.Convert(int64Type).Interface().(int64) + } + int64obj2, ok := obj2.(int64) + if !ok { + int64obj2 = obj2Value.Convert(int64Type).Interface().(int64) + } if int64obj1 > int64obj2 { return compareGreater, true } @@ -87,8 +141,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint: { - uintobj1 := obj1.(uint) - uintobj2 := obj2.(uint) + uintobj1, ok := obj1.(uint) + if !ok { + uintobj1 = obj1Value.Convert(uintType).Interface().(uint) + } + uintobj2, ok := obj2.(uint) + if !ok { + uintobj2 = obj2Value.Convert(uintType).Interface().(uint) + } if uintobj1 > uintobj2 { return compareGreater, true } @@ -101,8 +161,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint8: { - uint8obj1 := obj1.(uint8) - uint8obj2 := obj2.(uint8) + uint8obj1, ok := obj1.(uint8) + if !ok { + uint8obj1 = obj1Value.Convert(uint8Type).Interface().(uint8) + } + uint8obj2, ok := obj2.(uint8) + if !ok { + uint8obj2 = obj2Value.Convert(uint8Type).Interface().(uint8) + } if uint8obj1 > uint8obj2 { return compareGreater, true } @@ -115,8 +181,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint16: { - uint16obj1 := obj1.(uint16) - uint16obj2 := obj2.(uint16) + uint16obj1, ok := obj1.(uint16) + if !ok { + uint16obj1 = obj1Value.Convert(uint16Type).Interface().(uint16) + } + uint16obj2, ok := obj2.(uint16) + if !ok { + uint16obj2 = obj2Value.Convert(uint16Type).Interface().(uint16) + } if uint16obj1 > uint16obj2 { return compareGreater, true } @@ -129,8 +201,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint32: { - uint32obj1 := obj1.(uint32) - uint32obj2 := obj2.(uint32) + uint32obj1, ok := obj1.(uint32) + if !ok { + uint32obj1 = obj1Value.Convert(uint32Type).Interface().(uint32) + } + uint32obj2, ok := obj2.(uint32) + if !ok { + uint32obj2 = obj2Value.Convert(uint32Type).Interface().(uint32) + } if uint32obj1 > uint32obj2 { return compareGreater, true } @@ -143,8 +221,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Uint64: { - uint64obj1 := obj1.(uint64) - uint64obj2 := obj2.(uint64) + uint64obj1, ok := obj1.(uint64) + if !ok { + uint64obj1 = obj1Value.Convert(uint64Type).Interface().(uint64) + } + uint64obj2, ok := obj2.(uint64) + if !ok { + uint64obj2 = obj2Value.Convert(uint64Type).Interface().(uint64) + } if uint64obj1 > uint64obj2 { return compareGreater, true } @@ -157,8 +241,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Float32: { - float32obj1 := obj1.(float32) - float32obj2 := obj2.(float32) + float32obj1, ok := obj1.(float32) + if !ok { + float32obj1 = obj1Value.Convert(float32Type).Interface().(float32) + } + float32obj2, ok := obj2.(float32) + if !ok { + float32obj2 = obj2Value.Convert(float32Type).Interface().(float32) + } if float32obj1 > float32obj2 { return compareGreater, true } @@ -171,8 +261,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.Float64: { - float64obj1 := obj1.(float64) - float64obj2 := obj2.(float64) + float64obj1, ok := obj1.(float64) + if !ok { + float64obj1 = obj1Value.Convert(float64Type).Interface().(float64) + } + float64obj2, ok := obj2.(float64) + if !ok { + float64obj2 = obj2Value.Convert(float64Type).Interface().(float64) + } if float64obj1 > float64obj2 { return compareGreater, true } @@ -185,8 +281,14 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { } case reflect.String: { - stringobj1 := obj1.(string) - stringobj2 := obj2.(string) + stringobj1, ok := obj1.(string) + if !ok { + stringobj1 = obj1Value.Convert(stringType).Interface().(string) + } + stringobj2, ok := obj2.(string) + if !ok { + stringobj2 = obj2Value.Convert(stringType).Interface().(string) + } if stringobj1 > stringobj2 { return compareGreater, true } @@ -240,6 +342,24 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter return compareTwoValues(t, e1, e2, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs) } +// Positive asserts that the specified element is positive +// +// assert.Positive(t, 1) +// assert.Positive(t, 1.23) +func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { + zero := reflect.Zero(reflect.TypeOf(e)) + return compareTwoValues(t, e, zero.Interface(), []CompareType{compareGreater}, "\"%v\" is not positive", msgAndArgs) +} + +// Negative asserts that the specified element is negative +// +// assert.Negative(t, -1) +// assert.Negative(t, -1.23) +func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { + zero := reflect.Zero(reflect.TypeOf(e)) + return compareTwoValues(t, e, zero.Interface(), []CompareType{compareLess}, "\"%v\" is not negative", msgAndArgs) +} + func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go index 49370eb16..4dfd1229a 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_format.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -114,6 +114,24 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) bool { return Error(t, err, append([]interface{}{msg}, args...)...) } +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return ErrorAs(t, err, target, append([]interface{}{msg}, args...)...) +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return ErrorIs(t, err, target, append([]interface{}{msg}, args...)...) +} + // Eventuallyf asserts that given condition will be met in waitFor time, // periodically checking target function each tick. // @@ -321,6 +339,54 @@ func InEpsilonSlicef(t TestingT, expected interface{}, actual interface{}, epsil return InEpsilonSlice(t, expected, actual, epsilon, append([]interface{}{msg}, args...)...) } +// IsDecreasingf asserts that the collection is decreasing +// +// assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsDecreasing(t, object, append([]interface{}{msg}, args...)...) +} + +// IsIncreasingf asserts that the collection is increasing +// +// assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsIncreasing(t, object, append([]interface{}{msg}, args...)...) +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsNonDecreasing(t, object, append([]interface{}{msg}, args...)...) +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return IsNonIncreasing(t, object, append([]interface{}{msg}, args...)...) +} + // IsTypef asserts that the specified objects are of the same type. func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { @@ -375,6 +441,17 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args . return LessOrEqual(t, e1, e2, append([]interface{}{msg}, args...)...) } +// Negativef asserts that the specified element is negative +// +// assert.Negativef(t, -1, "error message %s", "formatted") +// assert.Negativef(t, -1.23, "error message %s", "formatted") +func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Negative(t, e, append([]interface{}{msg}, args...)...) +} + // Neverf asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -476,6 +553,15 @@ func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg s return NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...) } +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotErrorIs(t, err, target, append([]interface{}{msg}, args...)...) +} + // NotNilf asserts that the specified object is not nil. // // assert.NotNilf(t, err, "error message %s", "formatted") @@ -572,6 +658,17 @@ func PanicsWithValuef(t TestingT, expected interface{}, f PanicTestFunc, msg str return PanicsWithValue(t, expected, f, append([]interface{}{msg}, args...)...) } +// Positivef asserts that the specified element is positive +// +// assert.Positivef(t, 1, "error message %s", "formatted") +// assert.Positivef(t, 1.23, "error message %s", "formatted") +func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return Positive(t, e, append([]interface{}{msg}, args...)...) +} + // Regexpf asserts that a specified regexp matches a string. // // assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go index 9db889427..25337a6f0 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -204,6 +204,42 @@ func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { return Error(a.t, err, msgAndArgs...) } +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorAs(a.t, err, target, msgAndArgs...) +} + +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorAsf(a.t, err, target, msg, args...) +} + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorIs(a.t, err, target, msgAndArgs...) +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return ErrorIsf(a.t, err, target, msg, args...) +} + // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() @@ -631,6 +667,102 @@ func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilo return InEpsilonf(a.t, expected, actual, epsilon, msg, args...) } +// IsDecreasing asserts that the collection is decreasing +// +// a.IsDecreasing([]int{2, 1, 0}) +// a.IsDecreasing([]float{2, 1}) +// a.IsDecreasing([]string{"b", "a"}) +func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsDecreasing(a.t, object, msgAndArgs...) +} + +// IsDecreasingf asserts that the collection is decreasing +// +// a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") +// a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsDecreasingf(a.t, object, msg, args...) +} + +// IsIncreasing asserts that the collection is increasing +// +// a.IsIncreasing([]int{1, 2, 3}) +// a.IsIncreasing([]float{1, 2}) +// a.IsIncreasing([]string{"a", "b"}) +func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsIncreasing(a.t, object, msgAndArgs...) +} + +// IsIncreasingf asserts that the collection is increasing +// +// a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") +// a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsIncreasingf(a.t, object, msg, args...) +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// a.IsNonDecreasing([]int{1, 1, 2}) +// a.IsNonDecreasing([]float{1, 2}) +// a.IsNonDecreasing([]string{"a", "b"}) +func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonDecreasing(a.t, object, msgAndArgs...) +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonDecreasingf(a.t, object, msg, args...) +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// a.IsNonIncreasing([]int{2, 1, 1}) +// a.IsNonIncreasing([]float{2, 1}) +// a.IsNonIncreasing([]string{"b", "a"}) +func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonIncreasing(a.t, object, msgAndArgs...) +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return IsNonIncreasingf(a.t, object, msg, args...) +} + // IsType asserts that the specified objects are of the same type. func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { @@ -739,6 +871,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i return Lessf(a.t, e1, e2, msg, args...) } +// Negative asserts that the specified element is negative +// +// a.Negative(-1) +// a.Negative(-1.23) +func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Negative(a.t, e, msgAndArgs...) +} + +// Negativef asserts that the specified element is negative +// +// a.Negativef(-1, "error message %s", "formatted") +// a.Negativef(-1.23, "error message %s", "formatted") +func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Negativef(a.t, e, msg, args...) +} + // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -941,6 +1095,24 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str return NotEqualf(a.t, expected, actual, msg, args...) } +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotErrorIs(a.t, err, target, msgAndArgs...) +} + +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotErrorIsf(a.t, err, target, msg, args...) +} + // NotNil asserts that the specified object is not nil. // // a.NotNil(err) @@ -1133,6 +1305,28 @@ func (a *Assertions) Panicsf(f PanicTestFunc, msg string, args ...interface{}) b return Panicsf(a.t, f, msg, args...) } +// Positive asserts that the specified element is positive +// +// a.Positive(1) +// a.Positive(1.23) +func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Positive(a.t, e, msgAndArgs...) +} + +// Positivef asserts that the specified element is positive +// +// a.Positivef(1, "error message %s", "formatted") +// a.Positivef(1.23, "error message %s", "formatted") +func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return Positivef(a.t, e, msg, args...) +} + // Regexp asserts that a specified regexp matches a string. // // a.Regexp(regexp.MustCompile("start"), "it's starting") diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_order.go new file mode 100644 index 000000000..1c3b47182 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_order.go @@ -0,0 +1,81 @@ +package assert + +import ( + "fmt" + "reflect" +) + +// isOrdered checks that collection contains orderable elements. +func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool { + objKind := reflect.TypeOf(object).Kind() + if objKind != reflect.Slice && objKind != reflect.Array { + return false + } + + objValue := reflect.ValueOf(object) + objLen := objValue.Len() + + if objLen <= 1 { + return true + } + + value := objValue.Index(0) + valueInterface := value.Interface() + firstValueKind := value.Kind() + + for i := 1; i < objLen; i++ { + prevValue := value + prevValueInterface := valueInterface + + value = objValue.Index(i) + valueInterface = value.Interface() + + compareResult, isComparable := compare(prevValueInterface, valueInterface, firstValueKind) + + if !isComparable { + return Fail(t, fmt.Sprintf("Can not compare type \"%s\" and \"%s\"", reflect.TypeOf(value), reflect.TypeOf(prevValue)), msgAndArgs...) + } + + if !containsValue(allowedComparesResults, compareResult) { + return Fail(t, fmt.Sprintf(failMessage, prevValue, value), msgAndArgs...) + } + } + + return true +} + +// IsIncreasing asserts that the collection is increasing +// +// assert.IsIncreasing(t, []int{1, 2, 3}) +// assert.IsIncreasing(t, []float{1, 2}) +// assert.IsIncreasing(t, []string{"a", "b"}) +func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs) +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// assert.IsNonIncreasing(t, []int{2, 1, 1}) +// assert.IsNonIncreasing(t, []float{2, 1}) +// assert.IsNonIncreasing(t, []string{"b", "a"}) +func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs) +} + +// IsDecreasing asserts that the collection is decreasing +// +// assert.IsDecreasing(t, []int{2, 1, 0}) +// assert.IsDecreasing(t, []float{2, 1}) +// assert.IsDecreasing(t, []string{"b", "a"}) +func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs) +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// assert.IsNonDecreasing(t, []int{1, 1, 2}) +// assert.IsNonDecreasing(t, []float{1, 2}) +// assert.IsNonDecreasing(t, []string{"a", "b"}) +func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + return isOrdered(t, object, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go index 914a10d83..bcac4401f 100644 --- a/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -172,8 +172,8 @@ func isTest(name, prefix string) bool { if len(name) == len(prefix) { // "Test" is ok return true } - rune, _ := utf8.DecodeRuneInString(name[len(prefix):]) - return !unicode.IsLower(rune) + r, _ := utf8.DecodeRuneInString(name[len(prefix):]) + return !unicode.IsLower(r) } func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { @@ -1622,6 +1622,7 @@ var spewConfig = spew.ConfigState{ DisableCapacities: true, SortKeys: true, DisableMethods: true, + MaxDepth: 10, } type tHelper interface { @@ -1693,3 +1694,81 @@ func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.D } } } + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if errors.Is(err, target) { + return true + } + + var expectedText string + if target != nil { + expectedText = target.Error() + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Target error should be in err chain:\n"+ + "expected: %q\n"+ + "in chain: %s", expectedText, chain, + ), msgAndArgs...) +} + +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if !errors.Is(err, target) { + return true + } + + var expectedText string + if target != nil { + expectedText = target.Error() + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Target error should not be in err chain:\n"+ + "found: %q\n"+ + "in chain: %s", expectedText, chain, + ), msgAndArgs...) +} + +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if errors.As(err, target) { + return true + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Should be in error chain:\n"+ + "expected: %q\n"+ + "in chain: %s", target, chain, + ), msgAndArgs...) +} + +func buildErrorChainString(err error) string { + if err == nil { + return "" + } + + e := errors.Unwrap(err) + chain := fmt.Sprintf("%q", err.Error()) + for e != nil { + chain += fmt.Sprintf("\n\t%q", e.Error()) + e = errors.Unwrap(e) + } + return chain +} diff --git a/vendor/github.com/stretchr/testify/mock/doc.go b/vendor/github.com/stretchr/testify/mock/doc.go new file mode 100644 index 000000000..7324128ef --- /dev/null +++ b/vendor/github.com/stretchr/testify/mock/doc.go @@ -0,0 +1,44 @@ +// Package mock provides a system by which it is possible to mock your objects +// and verify calls are happening as expected. +// +// Example Usage +// +// The mock package provides an object, Mock, that tracks activity on another object. It is usually +// embedded into a test object as shown below: +// +// type MyTestObject struct { +// // add a Mock object instance +// mock.Mock +// +// // other fields go here as normal +// } +// +// When implementing the methods of an interface, you wire your functions up +// to call the Mock.Called(args...) method, and return the appropriate values. +// +// For example, to mock a method that saves the name and age of a person and returns +// the year of their birth or an error, you might write this: +// +// func (o *MyTestObject) SavePersonDetails(firstname, lastname string, age int) (int, error) { +// args := o.Called(firstname, lastname, age) +// return args.Int(0), args.Error(1) +// } +// +// The Int, Error and Bool methods are examples of strongly typed getters that take the argument +// index position. Given this argument list: +// +// (12, true, "Something") +// +// You could read them out strongly typed like this: +// +// args.Int(0) +// args.Bool(1) +// args.String(2) +// +// For objects of your own type, use the generic Arguments.Get(index) method and make a type assertion: +// +// return args.Get(0).(*MyObject), args.Get(1).(*AnotherObjectOfMine) +// +// This may cause a panic if the object you are getting is nil (the type assertion will fail), in those +// cases you should check for nil first. +package mock diff --git a/vendor/github.com/stretchr/testify/mock/mock.go b/vendor/github.com/stretchr/testify/mock/mock.go new file mode 100644 index 000000000..e2e6a2d23 --- /dev/null +++ b/vendor/github.com/stretchr/testify/mock/mock.go @@ -0,0 +1,1008 @@ +package mock + +import ( + "errors" + "fmt" + "reflect" + "regexp" + "runtime" + "strings" + "sync" + "time" + + "github.com/davecgh/go-spew/spew" + "github.com/pmezard/go-difflib/difflib" + "github.com/stretchr/objx" + "github.com/stretchr/testify/assert" +) + +// TestingT is an interface wrapper around *testing.T +type TestingT interface { + Logf(format string, args ...interface{}) + Errorf(format string, args ...interface{}) + FailNow() +} + +/* + Call +*/ + +// Call represents a method call and is used for setting expectations, +// as well as recording activity. +type Call struct { + Parent *Mock + + // The name of the method that was or will be called. + Method string + + // Holds the arguments of the method. + Arguments Arguments + + // Holds the arguments that should be returned when + // this method is called. + ReturnArguments Arguments + + // Holds the caller info for the On() call + callerInfo []string + + // The number of times to return the return arguments when setting + // expectations. 0 means to always return the value. + Repeatability int + + // Amount of times this call has been called + totalCalls int + + // Call to this method can be optional + optional bool + + // Holds a channel that will be used to block the Return until it either + // receives a message or is closed. nil means it returns immediately. + WaitFor <-chan time.Time + + waitTime time.Duration + + // Holds a handler used to manipulate arguments content that are passed by + // reference. It's useful when mocking methods such as unmarshalers or + // decoders. + RunFn func(Arguments) + + // PanicMsg holds msg to be used to mock panic on the function call + // if the PanicMsg is set to a non nil string the function call will panic + // irrespective of other settings + PanicMsg *string +} + +func newCall(parent *Mock, methodName string, callerInfo []string, methodArguments ...interface{}) *Call { + return &Call{ + Parent: parent, + Method: methodName, + Arguments: methodArguments, + ReturnArguments: make([]interface{}, 0), + callerInfo: callerInfo, + Repeatability: 0, + WaitFor: nil, + RunFn: nil, + PanicMsg: nil, + } +} + +func (c *Call) lock() { + c.Parent.mutex.Lock() +} + +func (c *Call) unlock() { + c.Parent.mutex.Unlock() +} + +// Return specifies the return arguments for the expectation. +// +// Mock.On("DoSomething").Return(errors.New("failed")) +func (c *Call) Return(returnArguments ...interface{}) *Call { + c.lock() + defer c.unlock() + + c.ReturnArguments = returnArguments + + return c +} + +// Panic specifies if the functon call should fail and the panic message +// +// Mock.On("DoSomething").Panic("test panic") +func (c *Call) Panic(msg string) *Call { + c.lock() + defer c.unlock() + + c.PanicMsg = &msg + + return c +} + +// Once indicates that that the mock should only return the value once. +// +// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Once() +func (c *Call) Once() *Call { + return c.Times(1) +} + +// Twice indicates that that the mock should only return the value twice. +// +// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Twice() +func (c *Call) Twice() *Call { + return c.Times(2) +} + +// Times indicates that that the mock should only return the indicated number +// of times. +// +// Mock.On("MyMethod", arg1, arg2).Return(returnArg1, returnArg2).Times(5) +func (c *Call) Times(i int) *Call { + c.lock() + defer c.unlock() + c.Repeatability = i + return c +} + +// WaitUntil sets the channel that will block the mock's return until its closed +// or a message is received. +// +// Mock.On("MyMethod", arg1, arg2).WaitUntil(time.After(time.Second)) +func (c *Call) WaitUntil(w <-chan time.Time) *Call { + c.lock() + defer c.unlock() + c.WaitFor = w + return c +} + +// After sets how long to block until the call returns +// +// Mock.On("MyMethod", arg1, arg2).After(time.Second) +func (c *Call) After(d time.Duration) *Call { + c.lock() + defer c.unlock() + c.waitTime = d + return c +} + +// Run sets a handler to be called before returning. It can be used when +// mocking a method (such as an unmarshaler) that takes a pointer to a struct and +// sets properties in such struct +// +// Mock.On("Unmarshal", AnythingOfType("*map[string]interface{}")).Return().Run(func(args Arguments) { +// arg := args.Get(0).(*map[string]interface{}) +// arg["foo"] = "bar" +// }) +func (c *Call) Run(fn func(args Arguments)) *Call { + c.lock() + defer c.unlock() + c.RunFn = fn + return c +} + +// Maybe allows the method call to be optional. Not calling an optional method +// will not cause an error while asserting expectations +func (c *Call) Maybe() *Call { + c.lock() + defer c.unlock() + c.optional = true + return c +} + +// On chains a new expectation description onto the mocked interface. This +// allows syntax like. +// +// Mock. +// On("MyMethod", 1).Return(nil). +// On("MyOtherMethod", 'a', 'b', 'c').Return(errors.New("Some Error")) +//go:noinline +func (c *Call) On(methodName string, arguments ...interface{}) *Call { + return c.Parent.On(methodName, arguments...) +} + +// Mock is the workhorse used to track activity on another object. +// For an example of its usage, refer to the "Example Usage" section at the top +// of this document. +type Mock struct { + // Represents the calls that are expected of + // an object. + ExpectedCalls []*Call + + // Holds the calls that were made to this mocked object. + Calls []Call + + // test is An optional variable that holds the test struct, to be used when an + // invalid mock call was made. + test TestingT + + // TestData holds any data that might be useful for testing. Testify ignores + // this data completely allowing you to do whatever you like with it. + testData objx.Map + + mutex sync.Mutex +} + +// TestData holds any data that might be useful for testing. Testify ignores +// this data completely allowing you to do whatever you like with it. +func (m *Mock) TestData() objx.Map { + + if m.testData == nil { + m.testData = make(objx.Map) + } + + return m.testData +} + +/* + Setting expectations +*/ + +// Test sets the test struct variable of the mock object +func (m *Mock) Test(t TestingT) { + m.mutex.Lock() + defer m.mutex.Unlock() + m.test = t +} + +// fail fails the current test with the given formatted format and args. +// In case that a test was defined, it uses the test APIs for failing a test, +// otherwise it uses panic. +func (m *Mock) fail(format string, args ...interface{}) { + m.mutex.Lock() + defer m.mutex.Unlock() + + if m.test == nil { + panic(fmt.Sprintf(format, args...)) + } + m.test.Errorf(format, args...) + m.test.FailNow() +} + +// On starts a description of an expectation of the specified method +// being called. +// +// Mock.On("MyMethod", arg1, arg2) +func (m *Mock) On(methodName string, arguments ...interface{}) *Call { + for _, arg := range arguments { + if v := reflect.ValueOf(arg); v.Kind() == reflect.Func { + panic(fmt.Sprintf("cannot use Func in expectations. Use mock.AnythingOfType(\"%T\")", arg)) + } + } + + m.mutex.Lock() + defer m.mutex.Unlock() + c := newCall(m, methodName, assert.CallerInfo(), arguments...) + m.ExpectedCalls = append(m.ExpectedCalls, c) + return c +} + +// /* +// Recording and responding to activity +// */ + +func (m *Mock) findExpectedCall(method string, arguments ...interface{}) (int, *Call) { + var expectedCall *Call + + for i, call := range m.ExpectedCalls { + if call.Method == method { + _, diffCount := call.Arguments.Diff(arguments) + if diffCount == 0 { + expectedCall = call + if call.Repeatability > -1 { + return i, call + } + } + } + } + + return -1, expectedCall +} + +type matchCandidate struct { + call *Call + mismatch string + diffCount int +} + +func (c matchCandidate) isBetterMatchThan(other matchCandidate) bool { + if c.call == nil { + return false + } + if other.call == nil { + return true + } + + if c.diffCount > other.diffCount { + return false + } + if c.diffCount < other.diffCount { + return true + } + + if c.call.Repeatability > 0 && other.call.Repeatability <= 0 { + return true + } + return false +} + +func (m *Mock) findClosestCall(method string, arguments ...interface{}) (*Call, string) { + var bestMatch matchCandidate + + for _, call := range m.expectedCalls() { + if call.Method == method { + + errInfo, tempDiffCount := call.Arguments.Diff(arguments) + tempCandidate := matchCandidate{ + call: call, + mismatch: errInfo, + diffCount: tempDiffCount, + } + if tempCandidate.isBetterMatchThan(bestMatch) { + bestMatch = tempCandidate + } + } + } + + return bestMatch.call, bestMatch.mismatch +} + +func callString(method string, arguments Arguments, includeArgumentValues bool) string { + + var argValsString string + if includeArgumentValues { + var argVals []string + for argIndex, arg := range arguments { + argVals = append(argVals, fmt.Sprintf("%d: %#v", argIndex, arg)) + } + argValsString = fmt.Sprintf("\n\t\t%s", strings.Join(argVals, "\n\t\t")) + } + + return fmt.Sprintf("%s(%s)%s", method, arguments.String(), argValsString) +} + +// Called tells the mock object that a method has been called, and gets an array +// of arguments to return. Panics if the call is unexpected (i.e. not preceded by +// appropriate .On .Return() calls) +// If Call.WaitFor is set, blocks until the channel is closed or receives a message. +func (m *Mock) Called(arguments ...interface{}) Arguments { + // get the calling function's name + pc, _, _, ok := runtime.Caller(1) + if !ok { + panic("Couldn't get the caller information") + } + functionPath := runtime.FuncForPC(pc).Name() + //Next four lines are required to use GCCGO function naming conventions. + //For Ex: github_com_docker_libkv_store_mock.WatchTree.pN39_github_com_docker_libkv_store_mock.Mock + //uses interface information unlike golang github.com/docker/libkv/store/mock.(*Mock).WatchTree + //With GCCGO we need to remove interface information starting from pN
. + re := regexp.MustCompile("\\.pN\\d+_") + if re.MatchString(functionPath) { + functionPath = re.Split(functionPath, -1)[0] + } + parts := strings.Split(functionPath, ".") + functionName := parts[len(parts)-1] + return m.MethodCalled(functionName, arguments...) +} + +// MethodCalled tells the mock object that the given method has been called, and gets +// an array of arguments to return. Panics if the call is unexpected (i.e. not preceded +// by appropriate .On .Return() calls) +// If Call.WaitFor is set, blocks until the channel is closed or receives a message. +func (m *Mock) MethodCalled(methodName string, arguments ...interface{}) Arguments { + m.mutex.Lock() + //TODO: could combine expected and closes in single loop + found, call := m.findExpectedCall(methodName, arguments...) + + if found < 0 { + // expected call found but it has already been called with repeatable times + if call != nil { + m.mutex.Unlock() + m.fail("\nassert: mock: The method has been called over %d times.\n\tEither do one more Mock.On(\"%s\").Return(...), or remove extra call.\n\tThis call was unexpected:\n\t\t%s\n\tat: %s", call.totalCalls, methodName, callString(methodName, arguments, true), assert.CallerInfo()) + } + // we have to fail here - because we don't know what to do + // as the return arguments. This is because: + // + // a) this is a totally unexpected call to this method, + // b) the arguments are not what was expected, or + // c) the developer has forgotten to add an accompanying On...Return pair. + closestCall, mismatch := m.findClosestCall(methodName, arguments...) + m.mutex.Unlock() + + if closestCall != nil { + m.fail("\n\nmock: Unexpected Method Call\n-----------------------------\n\n%s\n\nThe closest call I have is: \n\n%s\n\n%s\nDiff: %s", + callString(methodName, arguments, true), + callString(methodName, closestCall.Arguments, true), + diffArguments(closestCall.Arguments, arguments), + strings.TrimSpace(mismatch), + ) + } else { + m.fail("\nassert: mock: I don't know what to return because the method call was unexpected.\n\tEither do Mock.On(\"%s\").Return(...) first, or remove the %s() call.\n\tThis method was unexpected:\n\t\t%s\n\tat: %s", methodName, methodName, callString(methodName, arguments, true), assert.CallerInfo()) + } + } + + if call.Repeatability == 1 { + call.Repeatability = -1 + } else if call.Repeatability > 1 { + call.Repeatability-- + } + call.totalCalls++ + + // add the call + m.Calls = append(m.Calls, *newCall(m, methodName, assert.CallerInfo(), arguments...)) + m.mutex.Unlock() + + // block if specified + if call.WaitFor != nil { + <-call.WaitFor + } else { + time.Sleep(call.waitTime) + } + + m.mutex.Lock() + panicMsg := call.PanicMsg + m.mutex.Unlock() + if panicMsg != nil { + panic(*panicMsg) + } + + m.mutex.Lock() + runFn := call.RunFn + m.mutex.Unlock() + + if runFn != nil { + runFn(arguments) + } + + m.mutex.Lock() + returnArgs := call.ReturnArguments + m.mutex.Unlock() + + return returnArgs +} + +/* + Assertions +*/ + +type assertExpectationser interface { + AssertExpectations(TestingT) bool +} + +// AssertExpectationsForObjects asserts that everything specified with On and Return +// of the specified objects was in fact called as expected. +// +// Calls may have occurred in any order. +func AssertExpectationsForObjects(t TestingT, testObjects ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + for _, obj := range testObjects { + if m, ok := obj.(Mock); ok { + t.Logf("Deprecated mock.AssertExpectationsForObjects(myMock.Mock) use mock.AssertExpectationsForObjects(myMock)") + obj = &m + } + m := obj.(assertExpectationser) + if !m.AssertExpectations(t) { + t.Logf("Expectations didn't match for Mock: %+v", reflect.TypeOf(m)) + return false + } + } + return true +} + +// AssertExpectations asserts that everything specified with On and Return was +// in fact called as expected. Calls may have occurred in any order. +func (m *Mock) AssertExpectations(t TestingT) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + m.mutex.Lock() + defer m.mutex.Unlock() + var somethingMissing bool + var failedExpectations int + + // iterate through each expectation + expectedCalls := m.expectedCalls() + for _, expectedCall := range expectedCalls { + if !expectedCall.optional && !m.methodWasCalled(expectedCall.Method, expectedCall.Arguments) && expectedCall.totalCalls == 0 { + somethingMissing = true + failedExpectations++ + t.Logf("FAIL:\t%s(%s)\n\t\tat: %s", expectedCall.Method, expectedCall.Arguments.String(), expectedCall.callerInfo) + } else { + if expectedCall.Repeatability > 0 { + somethingMissing = true + failedExpectations++ + t.Logf("FAIL:\t%s(%s)\n\t\tat: %s", expectedCall.Method, expectedCall.Arguments.String(), expectedCall.callerInfo) + } else { + t.Logf("PASS:\t%s(%s)", expectedCall.Method, expectedCall.Arguments.String()) + } + } + } + + if somethingMissing { + t.Errorf("FAIL: %d out of %d expectation(s) were met.\n\tThe code you are testing needs to make %d more call(s).\n\tat: %s", len(expectedCalls)-failedExpectations, len(expectedCalls), failedExpectations, assert.CallerInfo()) + } + + return !somethingMissing +} + +// AssertNumberOfCalls asserts that the method was called expectedCalls times. +func (m *Mock) AssertNumberOfCalls(t TestingT, methodName string, expectedCalls int) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + m.mutex.Lock() + defer m.mutex.Unlock() + var actualCalls int + for _, call := range m.calls() { + if call.Method == methodName { + actualCalls++ + } + } + return assert.Equal(t, expectedCalls, actualCalls, fmt.Sprintf("Expected number of calls (%d) does not match the actual number of calls (%d).", expectedCalls, actualCalls)) +} + +// AssertCalled asserts that the method was called. +// It can produce a false result when an argument is a pointer type and the underlying value changed after calling the mocked method. +func (m *Mock) AssertCalled(t TestingT, methodName string, arguments ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + m.mutex.Lock() + defer m.mutex.Unlock() + if !m.methodWasCalled(methodName, arguments) { + var calledWithArgs []string + for _, call := range m.calls() { + calledWithArgs = append(calledWithArgs, fmt.Sprintf("%v", call.Arguments)) + } + if len(calledWithArgs) == 0 { + return assert.Fail(t, "Should have called with given arguments", + fmt.Sprintf("Expected %q to have been called with:\n%v\nbut no actual calls happened", methodName, arguments)) + } + return assert.Fail(t, "Should have called with given arguments", + fmt.Sprintf("Expected %q to have been called with:\n%v\nbut actual calls were:\n %v", methodName, arguments, strings.Join(calledWithArgs, "\n"))) + } + return true +} + +// AssertNotCalled asserts that the method was not called. +// It can produce a false result when an argument is a pointer type and the underlying value changed after calling the mocked method. +func (m *Mock) AssertNotCalled(t TestingT, methodName string, arguments ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + m.mutex.Lock() + defer m.mutex.Unlock() + if m.methodWasCalled(methodName, arguments) { + return assert.Fail(t, "Should not have called with given arguments", + fmt.Sprintf("Expected %q to not have been called with:\n%v\nbut actually it was.", methodName, arguments)) + } + return true +} + +// IsMethodCallable checking that the method can be called +// If the method was called more than `Repeatability` return false +func (m *Mock) IsMethodCallable(t TestingT, methodName string, arguments ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + m.mutex.Lock() + defer m.mutex.Unlock() + + for _, v := range m.ExpectedCalls { + if v.Method != methodName { + continue + } + if len(arguments) != len(v.Arguments) { + continue + } + if v.Repeatability < v.totalCalls { + continue + } + if isArgsEqual(v.Arguments, arguments) { + return true + } + } + return false +} + +// isArgsEqual compares arguments +func isArgsEqual(expected Arguments, args []interface{}) bool { + if len(expected) != len(args) { + return false + } + for i, v := range args { + if !reflect.DeepEqual(expected[i], v) { + return false + } + } + return true +} + +func (m *Mock) methodWasCalled(methodName string, expected []interface{}) bool { + for _, call := range m.calls() { + if call.Method == methodName { + + _, differences := Arguments(expected).Diff(call.Arguments) + + if differences == 0 { + // found the expected call + return true + } + + } + } + // we didn't find the expected call + return false +} + +func (m *Mock) expectedCalls() []*Call { + return append([]*Call{}, m.ExpectedCalls...) +} + +func (m *Mock) calls() []Call { + return append([]Call{}, m.Calls...) +} + +/* + Arguments +*/ + +// Arguments holds an array of method arguments or return values. +type Arguments []interface{} + +const ( + // Anything is used in Diff and Assert when the argument being tested + // shouldn't be taken into consideration. + Anything = "mock.Anything" +) + +// AnythingOfTypeArgument is a string that contains the type of an argument +// for use when type checking. Used in Diff and Assert. +type AnythingOfTypeArgument string + +// AnythingOfType returns an AnythingOfTypeArgument object containing the +// name of the type to check for. Used in Diff and Assert. +// +// For example: +// Assert(t, AnythingOfType("string"), AnythingOfType("int")) +func AnythingOfType(t string) AnythingOfTypeArgument { + return AnythingOfTypeArgument(t) +} + +// IsTypeArgument is a struct that contains the type of an argument +// for use when type checking. This is an alternative to AnythingOfType. +// Used in Diff and Assert. +type IsTypeArgument struct { + t interface{} +} + +// IsType returns an IsTypeArgument object containing the type to check for. +// You can provide a zero-value of the type to check. This is an +// alternative to AnythingOfType. Used in Diff and Assert. +// +// For example: +// Assert(t, IsType(""), IsType(0)) +func IsType(t interface{}) *IsTypeArgument { + return &IsTypeArgument{t: t} +} + +// argumentMatcher performs custom argument matching, returning whether or +// not the argument is matched by the expectation fixture function. +type argumentMatcher struct { + // fn is a function which accepts one argument, and returns a bool. + fn reflect.Value +} + +func (f argumentMatcher) Matches(argument interface{}) bool { + expectType := f.fn.Type().In(0) + expectTypeNilSupported := false + switch expectType.Kind() { + case reflect.Interface, reflect.Chan, reflect.Func, reflect.Map, reflect.Slice, reflect.Ptr: + expectTypeNilSupported = true + } + + argType := reflect.TypeOf(argument) + var arg reflect.Value + if argType == nil { + arg = reflect.New(expectType).Elem() + } else { + arg = reflect.ValueOf(argument) + } + + if argType == nil && !expectTypeNilSupported { + panic(errors.New("attempting to call matcher with nil for non-nil expected type")) + } + if argType == nil || argType.AssignableTo(expectType) { + result := f.fn.Call([]reflect.Value{arg}) + return result[0].Bool() + } + return false +} + +func (f argumentMatcher) String() string { + return fmt.Sprintf("func(%s) bool", f.fn.Type().In(0).Name()) +} + +// MatchedBy can be used to match a mock call based on only certain properties +// from a complex struct or some calculation. It takes a function that will be +// evaluated with the called argument and will return true when there's a match +// and false otherwise. +// +// Example: +// m.On("Do", MatchedBy(func(req *http.Request) bool { return req.Host == "example.com" })) +// +// |fn|, must be a function accepting a single argument (of the expected type) +// which returns a bool. If |fn| doesn't match the required signature, +// MatchedBy() panics. +func MatchedBy(fn interface{}) argumentMatcher { + fnType := reflect.TypeOf(fn) + + if fnType.Kind() != reflect.Func { + panic(fmt.Sprintf("assert: arguments: %s is not a func", fn)) + } + if fnType.NumIn() != 1 { + panic(fmt.Sprintf("assert: arguments: %s does not take exactly one argument", fn)) + } + if fnType.NumOut() != 1 || fnType.Out(0).Kind() != reflect.Bool { + panic(fmt.Sprintf("assert: arguments: %s does not return a bool", fn)) + } + + return argumentMatcher{fn: reflect.ValueOf(fn)} +} + +// Get Returns the argument at the specified index. +func (args Arguments) Get(index int) interface{} { + if index+1 > len(args) { + panic(fmt.Sprintf("assert: arguments: Cannot call Get(%d) because there are %d argument(s).", index, len(args))) + } + return args[index] +} + +// Is gets whether the objects match the arguments specified. +func (args Arguments) Is(objects ...interface{}) bool { + for i, obj := range args { + if obj != objects[i] { + return false + } + } + return true +} + +// Diff gets a string describing the differences between the arguments +// and the specified objects. +// +// Returns the diff string and number of differences found. +func (args Arguments) Diff(objects []interface{}) (string, int) { + //TODO: could return string as error and nil for No difference + + var output = "\n" + var differences int + + var maxArgCount = len(args) + if len(objects) > maxArgCount { + maxArgCount = len(objects) + } + + for i := 0; i < maxArgCount; i++ { + var actual, expected interface{} + var actualFmt, expectedFmt string + + if len(objects) <= i { + actual = "(Missing)" + actualFmt = "(Missing)" + } else { + actual = objects[i] + actualFmt = fmt.Sprintf("(%[1]T=%[1]v)", actual) + } + + if len(args) <= i { + expected = "(Missing)" + expectedFmt = "(Missing)" + } else { + expected = args[i] + expectedFmt = fmt.Sprintf("(%[1]T=%[1]v)", expected) + } + + if matcher, ok := expected.(argumentMatcher); ok { + if matcher.Matches(actual) { + output = fmt.Sprintf("%s\t%d: PASS: %s matched by %s\n", output, i, actualFmt, matcher) + } else { + differences++ + output = fmt.Sprintf("%s\t%d: FAIL: %s not matched by %s\n", output, i, actualFmt, matcher) + } + } else if reflect.TypeOf(expected) == reflect.TypeOf((*AnythingOfTypeArgument)(nil)).Elem() { + + // type checking + if reflect.TypeOf(actual).Name() != string(expected.(AnythingOfTypeArgument)) && reflect.TypeOf(actual).String() != string(expected.(AnythingOfTypeArgument)) { + // not match + differences++ + output = fmt.Sprintf("%s\t%d: FAIL: type %s != type %s - %s\n", output, i, expected, reflect.TypeOf(actual).Name(), actualFmt) + } + + } else if reflect.TypeOf(expected) == reflect.TypeOf((*IsTypeArgument)(nil)) { + t := expected.(*IsTypeArgument).t + if reflect.TypeOf(t) != reflect.TypeOf(actual) { + differences++ + output = fmt.Sprintf("%s\t%d: FAIL: type %s != type %s - %s\n", output, i, reflect.TypeOf(t).Name(), reflect.TypeOf(actual).Name(), actualFmt) + } + } else { + + // normal checking + + if assert.ObjectsAreEqual(expected, Anything) || assert.ObjectsAreEqual(actual, Anything) || assert.ObjectsAreEqual(actual, expected) { + // match + output = fmt.Sprintf("%s\t%d: PASS: %s == %s\n", output, i, actualFmt, expectedFmt) + } else { + // not match + differences++ + output = fmt.Sprintf("%s\t%d: FAIL: %s != %s\n", output, i, actualFmt, expectedFmt) + } + } + + } + + if differences == 0 { + return "No differences.", differences + } + + return output, differences + +} + +// Assert compares the arguments with the specified objects and fails if +// they do not exactly match. +func (args Arguments) Assert(t TestingT, objects ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + + // get the differences + diff, diffCount := args.Diff(objects) + + if diffCount == 0 { + return true + } + + // there are differences... report them... + t.Logf(diff) + t.Errorf("%sArguments do not match.", assert.CallerInfo()) + + return false + +} + +// String gets the argument at the specified index. Panics if there is no argument, or +// if the argument is of the wrong type. +// +// If no index is provided, String() returns a complete string representation +// of the arguments. +func (args Arguments) String(indexOrNil ...int) string { + + if len(indexOrNil) == 0 { + // normal String() method - return a string representation of the args + var argsStr []string + for _, arg := range args { + argsStr = append(argsStr, fmt.Sprintf("%T", arg)) // handles nil nicely + } + return strings.Join(argsStr, ",") + } else if len(indexOrNil) == 1 { + // Index has been specified - get the argument at that index + var index = indexOrNil[0] + var s string + var ok bool + if s, ok = args.Get(index).(string); !ok { + panic(fmt.Sprintf("assert: arguments: String(%d) failed because object wasn't correct type: %s", index, args.Get(index))) + } + return s + } + + panic(fmt.Sprintf("assert: arguments: Wrong number of arguments passed to String. Must be 0 or 1, not %d", len(indexOrNil))) + +} + +// Int gets the argument at the specified index. Panics if there is no argument, or +// if the argument is of the wrong type. +func (args Arguments) Int(index int) int { + var s int + var ok bool + if s, ok = args.Get(index).(int); !ok { + panic(fmt.Sprintf("assert: arguments: Int(%d) failed because object wasn't correct type: %v", index, args.Get(index))) + } + return s +} + +// Error gets the argument at the specified index. Panics if there is no argument, or +// if the argument is of the wrong type. +func (args Arguments) Error(index int) error { + obj := args.Get(index) + var s error + var ok bool + if obj == nil { + return nil + } + if s, ok = obj.(error); !ok { + panic(fmt.Sprintf("assert: arguments: Error(%d) failed because object wasn't correct type: %v", index, args.Get(index))) + } + return s +} + +// Bool gets the argument at the specified index. Panics if there is no argument, or +// if the argument is of the wrong type. +func (args Arguments) Bool(index int) bool { + var s bool + var ok bool + if s, ok = args.Get(index).(bool); !ok { + panic(fmt.Sprintf("assert: arguments: Bool(%d) failed because object wasn't correct type: %v", index, args.Get(index))) + } + return s +} + +func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) { + t := reflect.TypeOf(v) + k := t.Kind() + + if k == reflect.Ptr { + t = t.Elem() + k = t.Kind() + } + return t, k +} + +func diffArguments(expected Arguments, actual Arguments) string { + if len(expected) != len(actual) { + return fmt.Sprintf("Provided %v arguments, mocked for %v arguments", len(expected), len(actual)) + } + + for x := range expected { + if diffString := diff(expected[x], actual[x]); diffString != "" { + return fmt.Sprintf("Difference found in argument %v:\n\n%s", x, diffString) + } + } + + return "" +} + +// diff returns a diff of both values as long as both are of the same type and +// are a struct, map, slice or array. Otherwise it returns an empty string. +func diff(expected interface{}, actual interface{}) string { + if expected == nil || actual == nil { + return "" + } + + et, ek := typeAndKind(expected) + at, _ := typeAndKind(actual) + + if et != at { + return "" + } + + if ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array { + return "" + } + + e := spewConfig.Sdump(expected) + a := spewConfig.Sdump(actual) + + diff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{ + A: difflib.SplitLines(e), + B: difflib.SplitLines(a), + FromFile: "Expected", + FromDate: "", + ToFile: "Actual", + ToDate: "", + Context: 1, + }) + + return diff +} + +var spewConfig = spew.ConfigState{ + Indent: " ", + DisablePointerAddresses: true, + DisableCapacities: true, + SortKeys: true, +} + +type tHelper interface { + Helper() +} diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go index ec4624b28..51820df2e 100644 --- a/vendor/github.com/stretchr/testify/require/require.go +++ b/vendor/github.com/stretchr/testify/require/require.go @@ -256,6 +256,54 @@ func Error(t TestingT, err error, msgAndArgs ...interface{}) { t.FailNow() } +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorAs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorAsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorIs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.ErrorIsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() @@ -806,6 +854,126 @@ func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon fl t.FailNow() } +// IsDecreasing asserts that the collection is decreasing +// +// assert.IsDecreasing(t, []int{2, 1, 0}) +// assert.IsDecreasing(t, []float{2, 1}) +// assert.IsDecreasing(t, []string{"b", "a"}) +func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsDecreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsDecreasingf asserts that the collection is decreasing +// +// assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsDecreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// IsIncreasing asserts that the collection is increasing +// +// assert.IsIncreasing(t, []int{1, 2, 3}) +// assert.IsIncreasing(t, []float{1, 2}) +// assert.IsIncreasing(t, []string{"a", "b"}) +func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsIncreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsIncreasingf asserts that the collection is increasing +// +// assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsIncreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// assert.IsNonDecreasing(t, []int{1, 1, 2}) +// assert.IsNonDecreasing(t, []float{1, 2}) +// assert.IsNonDecreasing(t, []string{"a", "b"}) +func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonDecreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +// assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonDecreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// assert.IsNonIncreasing(t, []int{2, 1, 1}) +// assert.IsNonIncreasing(t, []float{2, 1}) +// assert.IsNonIncreasing(t, []string{"b", "a"}) +func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonIncreasing(t, object, msgAndArgs...) { + return + } + t.FailNow() +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +// assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.IsNonIncreasingf(t, object, msg, args...) { + return + } + t.FailNow() +} + // IsType asserts that the specified objects are of the same type. func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { @@ -944,6 +1112,34 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter t.FailNow() } +// Negative asserts that the specified element is negative +// +// assert.Negative(t, -1) +// assert.Negative(t, -1.23) +func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Negative(t, e, msgAndArgs...) { + return + } + t.FailNow() +} + +// Negativef asserts that the specified element is negative +// +// assert.Negativef(t, -1, "error message %s", "formatted") +// assert.Negativef(t, -1.23, "error message %s", "formatted") +func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Negativef(t, e, msg, args...) { + return + } + t.FailNow() +} + // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -1200,6 +1396,30 @@ func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, t.FailNow() } +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotErrorIs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotErrorIsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + // NotNil asserts that the specified object is not nil. // // assert.NotNil(t, err) @@ -1446,6 +1666,34 @@ func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{} t.FailNow() } +// Positive asserts that the specified element is positive +// +// assert.Positive(t, 1) +// assert.Positive(t, 1.23) +func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Positive(t, e, msgAndArgs...) { + return + } + t.FailNow() +} + +// Positivef asserts that the specified element is positive +// +// assert.Positivef(t, 1, "error message %s", "formatted") +// assert.Positivef(t, 1.23, "error message %s", "formatted") +func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.Positivef(t, e, msg, args...) { + return + } + t.FailNow() +} + // Regexp asserts that a specified regexp matches a string. // // assert.Regexp(t, regexp.MustCompile("start"), "it's starting") diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go index 103d7dcb6..ed54a9d83 100644 --- a/vendor/github.com/stretchr/testify/require/require_forward.go +++ b/vendor/github.com/stretchr/testify/require/require_forward.go @@ -205,6 +205,42 @@ func (a *Assertions) Error(err error, msgAndArgs ...interface{}) { Error(a.t, err, msgAndArgs...) } +// ErrorAs asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAs(err error, target interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorAs(a.t, err, target, msgAndArgs...) +} + +// ErrorAsf asserts that at least one of the errors in err's chain matches target, and if so, sets target to that error value. +// This is a wrapper for errors.As. +func (a *Assertions) ErrorAsf(err error, target interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorAsf(a.t, err, target, msg, args...) +} + +// ErrorIs asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIs(err error, target error, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorIs(a.t, err, target, msgAndArgs...) +} + +// ErrorIsf asserts that at least one of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) ErrorIsf(err error, target error, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + ErrorIsf(a.t, err, target, msg, args...) +} + // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() @@ -632,6 +668,102 @@ func (a *Assertions) InEpsilonf(expected interface{}, actual interface{}, epsilo InEpsilonf(a.t, expected, actual, epsilon, msg, args...) } +// IsDecreasing asserts that the collection is decreasing +// +// a.IsDecreasing([]int{2, 1, 0}) +// a.IsDecreasing([]float{2, 1}) +// a.IsDecreasing([]string{"b", "a"}) +func (a *Assertions) IsDecreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsDecreasing(a.t, object, msgAndArgs...) +} + +// IsDecreasingf asserts that the collection is decreasing +// +// a.IsDecreasingf([]int{2, 1, 0}, "error message %s", "formatted") +// a.IsDecreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsDecreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsDecreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsDecreasingf(a.t, object, msg, args...) +} + +// IsIncreasing asserts that the collection is increasing +// +// a.IsIncreasing([]int{1, 2, 3}) +// a.IsIncreasing([]float{1, 2}) +// a.IsIncreasing([]string{"a", "b"}) +func (a *Assertions) IsIncreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsIncreasing(a.t, object, msgAndArgs...) +} + +// IsIncreasingf asserts that the collection is increasing +// +// a.IsIncreasingf([]int{1, 2, 3}, "error message %s", "formatted") +// a.IsIncreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsIncreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsIncreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsIncreasingf(a.t, object, msg, args...) +} + +// IsNonDecreasing asserts that the collection is not decreasing +// +// a.IsNonDecreasing([]int{1, 1, 2}) +// a.IsNonDecreasing([]float{1, 2}) +// a.IsNonDecreasing([]string{"a", "b"}) +func (a *Assertions) IsNonDecreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonDecreasing(a.t, object, msgAndArgs...) +} + +// IsNonDecreasingf asserts that the collection is not decreasing +// +// a.IsNonDecreasingf([]int{1, 1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]float{1, 2}, "error message %s", "formatted") +// a.IsNonDecreasingf([]string{"a", "b"}, "error message %s", "formatted") +func (a *Assertions) IsNonDecreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonDecreasingf(a.t, object, msg, args...) +} + +// IsNonIncreasing asserts that the collection is not increasing +// +// a.IsNonIncreasing([]int{2, 1, 1}) +// a.IsNonIncreasing([]float{2, 1}) +// a.IsNonIncreasing([]string{"b", "a"}) +func (a *Assertions) IsNonIncreasing(object interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonIncreasing(a.t, object, msgAndArgs...) +} + +// IsNonIncreasingf asserts that the collection is not increasing +// +// a.IsNonIncreasingf([]int{2, 1, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]float{2, 1}, "error message %s", "formatted") +// a.IsNonIncreasingf([]string{"b", "a"}, "error message %s", "formatted") +func (a *Assertions) IsNonIncreasingf(object interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + IsNonIncreasingf(a.t, object, msg, args...) +} + // IsType asserts that the specified objects are of the same type. func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { @@ -740,6 +872,28 @@ func (a *Assertions) Lessf(e1 interface{}, e2 interface{}, msg string, args ...i Lessf(a.t, e1, e2, msg, args...) } +// Negative asserts that the specified element is negative +// +// a.Negative(-1) +// a.Negative(-1.23) +func (a *Assertions) Negative(e interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Negative(a.t, e, msgAndArgs...) +} + +// Negativef asserts that the specified element is negative +// +// a.Negativef(-1, "error message %s", "formatted") +// a.Negativef(-1.23, "error message %s", "formatted") +func (a *Assertions) Negativef(e interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Negativef(a.t, e, msg, args...) +} + // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // @@ -942,6 +1096,24 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str NotEqualf(a.t, expected, actual, msg, args...) } +// NotErrorIs asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotErrorIs(a.t, err, target, msgAndArgs...) +} + +// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// This is a wrapper for errors.Is. +func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotErrorIsf(a.t, err, target, msg, args...) +} + // NotNil asserts that the specified object is not nil. // // a.NotNil(err) @@ -1134,6 +1306,28 @@ func (a *Assertions) Panicsf(f assert.PanicTestFunc, msg string, args ...interfa Panicsf(a.t, f, msg, args...) } +// Positive asserts that the specified element is positive +// +// a.Positive(1) +// a.Positive(1.23) +func (a *Assertions) Positive(e interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Positive(a.t, e, msgAndArgs...) +} + +// Positivef asserts that the specified element is positive +// +// a.Positivef(1, "error message %s", "formatted") +// a.Positivef(1.23, "error message %s", "formatted") +func (a *Assertions) Positivef(e interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + Positivef(a.t, e, msg, args...) +} + // Regexp asserts that a specified regexp matches a string. // // a.Regexp(regexp.MustCompile("start"), "it's starting") diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index 7d42a8c88..b6911e830 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -572,6 +572,10 @@ userAuthLoop: perms = candidate.perms } case "gssapi-with-mic": + if config.GSSAPIWithMICConfig == nil { + authErr = errors.New("ssh: gssapi-with-mic auth not configured") + break + } gssapiConfig := config.GSSAPIWithMICConfig userAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload) if err != nil { diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go index ec2bde8cb..31a034c5d 100644 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ b/vendor/golang.org/x/net/publicsuffix/table.go @@ -2,7 +2,7 @@ package publicsuffix -const version = "publicsuffix.org's public_suffix_list.dat, git revision bdbe9dfd268d040fc826766b1d4e27dc4416fe73 (2020-08-10T09:26:55Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision f9f612a3386dd9a1e4a1892722e3418549520b49 (2020-11-30T21:55:23Z)" const ( nodesBitsChildren = 10 @@ -23,492 +23,499 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1518 +const numTLD = 1513 // Text is the combined text of all labels. const text = "9guacuiababia-goracleaningroks-theatree12hpalermomahachijolstere" + - "trosnubalsfjorddnslivelanddnss3-ap-south-1kappchizip6116-b-datai" + - "ji234lima-cityeatselinogradult3l3p0rtatamotors3-ap-northeast-133" + - "7birkenesoddtangenovaranzaninohekinannestadivttasvuotnakamuratak" + - "ahamalselvendrellimitediyukuhashimojindianapolis-a-bloggerbirthp" + - "lacebjarkoyurihonjournalistjohninomiyakonojorpelandnpanamatta-va" + - "rjjatjeldsundrangedalimoliseminebjerkreimdbamblebesbyglandroverh" + - "alla-speziaustevollaziobihirosakikamijimatsuzakibigawagrocerybni" + - "keisenbahnatuurwetenschappenaumburgdyniabogadobeaemcloud66bjugni" + - "eznord-frontierblackfridayusuharabloombergbauernirasakindianmark" + - "etingjesdalinkyard-cloudyclusterbloxcms3-website-us-west-2blueda" + - "gestangeologyusuisservehumourbmoattachments5yuulmemorialivornoce" + - "anographiquebmsakyotanabellunord-aurdalpha-myqnapcloudaccesscamb" + - "ridgeiseiyoichippubetsubetsugarugbydgoszczecinemagentositechnolo" + - "gyuzawabmweddingjovikariyameinforumzjampagexlombardynaliaskimits" + - "ubatamibugattiffanycateringebuildingladefinimakanegasakirabnrwed" + - "eploybomloabathsbcatholicaxiashorokanaiebondray-dnstracebonnishi" + - "azaindielddanuorrindigenaklodzkodairabookinghostedpictethnologyb" + - "oomlair-traffic-controlleyboschaefflerdalomzaporizhzhegurindustr" + - "iabostikarlsoybostonakijinsekikogentappsselfipanasonichernihivgu" + - "bsalangenishigocelotenkawabotanicalgardenishiharabotanicgardenis" + - "hiizunazukindustriesteamsterdamnserverbaniabotanynysagaeroclubme" + - "decincinnationwidealerbouncemerckmsdnipropetrovskjervoyagets-itj" + - "maxxxboxenapponazure-mobilebounty-fullensakerrypropertiesalondon" + - "etskarmoyboutiquebechernivtsiciliabozen-sudtirolondrinamsskogane" + - "infinitintelligencebozen-suedtirolorenskoglassassinationalherita" + - "gebplacedogawarabikomaezakirunorddalottebrandywinevalleybrasilia" + - "brindisibenikinderoybristoloseyouriparachutingleezebritishcolumb" + - "ialowiezaganishikatakinouebroadcastlebtimnetzlglitchattanooganor" + - "dlandrayddnsfreebox-osascoli-picenordre-landraydnsupdaternopilaw" + - "atchesaltdalottokonamegatakazakinternationalfirearmsaludrivefsni" + - "llfjordrobaknoluoktachikawakuyabukievennodesadoes-itvedestrandru" + - "dupontariobranconakaniikawatanagurabroadwaybroke-itjomeloyalisto" + - "ragebrokerbronnoysundurbanamexhibitionishikatsuragit-reposalvado" + - "rdalibabalena-devicesalzburgliwicebrothermesaverdealstahaugesund" + - "erseaportsinfolldalouvreisenishikawazukamisunagawabrowsersafetym" + - "arketsamegawabrumunddalowiczest-le-patronishimerabrunelastxfinit" + - "ybrusselsamnangerbruxellesampalacebryansklepparaglidinglobalasho" + - "vhachinohedmarkarpaczeladzparisor-fronishinomiyashironocparliame" + - "ntjxjavald-aostarnbergloboavistanbulsan-sudtirolpusercontentkmax" + - "xn--0trq7p7nnishinoomotegoddabrynewhollandurhamburglogowegroweib" + - "olognagareyamakeupowiathletajimabaridagawalbrzycharitydalaskanit" + - "tedallasalleangaviikaascolipicenodumemsettsupportksatxn--11b4c3d" + - "ynathomebuiltwithdarkaruizawabuskerudinewjerseybuzentsujiiebuzzw" + - "eirbwellbeingzonebzhitomirumalatvuopmicrolightingloppenzaolbia-t" + - "empio-olbiatempioolbialystokkepnogatagajobojintuitmparmattelekom" + - "munikationishinoshimatsuurabzzcolumbusheycommunexus-2community-p" + - "rochowicecomoarekecomparemarkerryhotelsaobernardocompute-1comput" + - "erhistoryofscience-fictioncomsecuritytacticsxn--12cfi8ixb8luxury" + - "condoshichinohealth-carereformitakeharaconferenceconstructioncon" + - "suladonnagatorodoyconsultanthropologyconsultingrondarcontactozsd" + - "eltajirittogliattis-a-chefashioncontagematsubaracontemporaryarte" + - "ducationalchikugodontexistmein-iservebeercontractorskenconventur" + - "eshinodearthruherecipescaravantaacookingchannelsdvrdnsdojoburgro" + - "ngausdaluzerncoolvivanovoldacooperativano-frankivskolefrakkestad" + - "yndns1copenhagencyclopedichitosetogakushimotoganewspapercoproduc" + - "tionsaogoncartoonartdecologiacorporationcorsicagliaricoharuovatm" + - "allorcadaquesaotomeldalcorvettemasekashiwazakiyosemitecosenzakop" + - "anelblagrarchaeologyeongbuk0cosidnsfor-better-thanawassamukawata" + - "rikuzentakatajimidorissagamiharacostumedicinaharimalopolskanland" + - "ynnsapporocouchpotatofriesardegnaroycouklugsmilegallocus-3counci" + - "lcouponsardiniacozoracq-acranbrookuwanalyticsarlcrdynservebbsarp" + - "sborgrossetouchihayaakasakawaharacreditcardynulvikasserversaille" + - "sarufutsunomiyawakasaikaitakofuefukihaboromskogroundhandlingrozn" + - "ycreditunioncremonashgabadaddjaguarqcxn--12co0c3b4evalleaostavan" + - "gercrewiencricketrzyncrimeast-kazakhstanangercrotonecrownipartsa" + - "sayamacrsvpartycruisesasebofageometre-experts-comptablesaskatche" + - "wancryptonomichigangwoncuisinellajollamericanexpressexyculturalc" + - "entertainmentrani-andria-barletta-trani-andriacuneocupcakecuriti" + - "backyardsassaris-a-conservativegarsheis-a-cpadualstackhero-netwo" + - "rkinggroupasadenarashinocurvalled-aostaverncymrussiacyonabarumet" + - "lifeinsurancecyouthachiojiyaitakanezawafetsundyroyrvikingrpassag" + - "ensaudafguidegreefhvalerfidoomdnsiskinkyotobetsulikes-piedmontic" + - "ellodingenfieldfigueresinstaginguitarsavonarusawafilateliafilege" + - "ar-audnedalnfilegear-deatnunusualpersonfilegear-gbizfilegear-ief" + - "ilegear-jpmorganfilegear-sgujoinvilleitungsenfilminamiechizenfin" + - "alfinancefineartsaxofinlandfinnoyfirebaseappassenger-association" + - "firenetranoyfirenzefirestonefirmdalegoldpoint2thisamitsukefishin" + - "golffanschoenbrunnfitjarvodkafjordvalledaostargetmyiphostre-tote" + - "ndofinternet-dnschokokekschokoladenfitnessettlementransportefjal" + - "erflesbergulenflickragerogerscholarshipschoolschulezajskasuyanai" + - "zunzenflightschulserverflirfloginlinefloraflorencefloridatsunanj" + - "oetsuwanouchikujogaszkolancashirecreationfloripaderbornfloristan" + - "ohatakaharuslivinghistoryflorokunohealthcareerschwarzgwangjunipe" + - "rflowerschweizfltransurlflynnhosting-clusterfndfor-ourfor-somedi" + - "zinhistorischesciencecentersciencehistoryfor-theaterforexrothach" + - "irogatakaokalmykiaforgotdnscientistordalforli-cesena-forlicesena" + - "forlillehammerfeste-ipatriaforsaleikangerforsandasuologoipavianc" + - "arrdfortalfortmissoulancasterfortworthadanorthwesternmutualfosne" + - "scjohnsonfotaruis-a-democratrapaniizafoxfordebianfozfredrikstadt" + - "vscrapper-sitefreeddnsgeekgalaxyfreedesktopensocialfreemasonryfr" + - "eesitexaskoyabearalvahkikuchikuseikarugalsaceofreetlscrappingunm" + - "anxn--1ctwolominamatarnobrzegyptianfreiburguovdageaidnusrcfastly" + - "lbananarepublicaseihicampobassociatest-iservecounterstrikehimeji" + - "itatebayashijonawatempresashibetsukuiiyamanouchikuhokuryugasakit" + - "auraustinnaval-d-aosta-valleyokosukanumazuryokoteastcoastaldefen" + - "ceatonsbergivingjemnes3-eu-central-1freseniuscountryestateofdela" + - "wareggio-calabriafribourgushikamifuranorth-kazakhstanfriuli-v-gi" + - "uliafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-v" + - "eneziagiuliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriuliveg" + - "iuliafriulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfrog" + - "anscrysechocolatelemarkarumaifarsundyndns-homednsamsungmodelling" + - "mxn--12c1fe0bradescotlandyndns-iparochernigovernmentoyotaparsand" + - "nessjoenishiokoppegardyndns-mailubindalublindesnesandoyfrognfrol" + - "andfrom-akrehamnfrom-alfrom-arfrom-azfrom-capetownnews-stagingwi" + - "ddleksvikaszubyfrom-coffeedbackplaneapplinzis-a-designerfrom-ctr" + - "avelchannelfrom-dchofunatoriginstitutelevisionthewifiatoyotomiya" + - "zakinuyamashinatsukigatakashimarnardalucaniafrom-dedyn-berlincol" + - "nfrom-flanderserveirchonanbulsan-suedtiroluccarbonia-iglesias-ca" + - "rboniaiglesiascarboniafrom-gaulardalfrom-hichisochildrensgardenf" + - "rom-iafrom-idfrom-ilfrom-in-brbar0emmafann-arboretumbriamallamac" + - "eiobbcg12038from-kserveminecraftravelersinsurancefrom-kyowariasa" + - "hikawawiiheyakumoduminamifuranofrom-lanciafrom-mamurogawafrom-md" + - "from-meeresistancefrom-mifunefrom-mnfrom-modalenfrom-mservemp3fr" + - "om-mtnfrom-nctulangevagrigentomologyeonggiehtavuoatnabudapest-a-" + - "la-masion-riopretobamaceratabuseating-organichoseiroumuenchenish" + - "itosashimizunaminamibosogndalucernefrom-ndfrom-nefrom-nh-servebl" + - "ogsiteleafamilycompanyanagawafflecellclaimservep2pfizerfrom-njaw" + - "orznoticiasnesoddenmarkhangelskjakdnepropetrovskiervaapsteiermar" + - "katowicefrom-nminamiiserniafrom-nvallee-aosteroyfrom-nyfrom-ohku" + - "rafrom-oketogurafrom-orfrom-padovaksdalfrom-pratohmandalfrom-ris" + - "-a-doctorayfrom-schmidtre-gauldalfrom-sdfrom-tnfrom-txn--1lqs03n" + - "from-utsiracusaikisarazurecontainerdpolicefrom-val-daostavalleyf" + - "rom-vtrdfrom-wafrom-wiardwebhostingxn--1lqs71dfrom-wvallee-d-aos" + - "teigenfrom-wyfrosinonefrostalowa-wolawafroyahooguyfstcgroupgfogg" + - "iafujiiderafujikawaguchikonefujiminokamoenairguardiannakadomarin" + - "ebraskauniversitychyattorneyagawakembuchikumagayagawakkanaibetsu" + - "bamericanfamilydsclouderackmazerbaijan-mayen-rootaribeiraogashim" + - "adachicagoboatservepicservequakefujinomiyadattowebcampinashikimi" + - "nohostfoldnavyfujiokayamangonohejis-a-financialadvisor-aurdalfuj" + - "isatoshonairlinedre-eikerfujisawafujishiroishidakabiratoridefens" + - "eljordfujitsurugashimangyshlakasamatsudopaasiafujixeroxn--1qqw23" + - "afujiyoshidavvenjargap-northeast-3fukayabeatservesarcasmatartand" + - "designfukuchiyamadavvesiidappnodebalancertificationfukudomigawaf" + - "ukuis-a-geekatsushikabeeldengeluidfukumitsubishigakishiwadazaifu" + - "daigojomedio-campidano-mediocampidanomediofukuokazakisofukushima" + - "niwakuratextileirfjordfukuroishikarikaturindalfukusakisosakitaga" + - "wafukuyamagatakahatakaishimoichinosekigaharafunabashiriuchinadaf" + - "unagatakamatsukawafunahashikamiamakusatsumasendaisennangooglecod" + - "espotrentin-sud-tirolfundaciofunkfeuerfuoiskujukuriyamannore-og-" + - "uvdalfuosskoczowildlifedorainfracloudfrontdoorfurnitureggio-emil" + - "ia-romagnakasatsunairportland-4-salernoboribetsuckservicesevasto" + - "polefurubirafurudonostiaafurukawairtelebitbridgestonekobayashiks" + - "hacknetcimbar1fusodegaurafussaintlouis-a-anarchistoireggiocalabr" + - "iafutabayamaguchinomihachimanagementrentin-sudtirolfutboldlygoin" + - "gnowhere-for-morenakatombetsumitakagiizefuttsurugimperiafuturecm" + - "sevenassisicilyfuturehostingfuturemailingfvgfyresdalhangoutsyste" + - "mscloudhannanmokuizumodenakayamapartmentsharpharmacienshawaiijim" + - "aritimoldeloittemp-dnshellaspeziahannosegawahanyuzenhapmircloudh" + - "arstadharvestcelebrationhasamarburghasaminami-alpshimokawahashba" + - "nghasudahasura-appharmacyshimokitayamahasvikatsuyamarugame-hosty" + - "hostinghatogayaizuwakamatsubushikusakadogawahatoyamazakitakamiiz" + - "umisanofidelityhatsukaichikaiseiheijis-a-landscaperugiahattfjell" + - "dalhayashimamotobungotakadancehazuminobusells-for-utwentehelsink" + - "itakatakarazukaluganskygearapphdfcbankaufenhembygdsforbundhemnes" + - "himonitayanagithubusercontentrentin-suedtirolhemsedalhepforgeher" + - "okusslattuminamiizukaminoyamaxunjargaheroyhgtvalleeaosteinkjerus" + - "alembroideryhidorahigashiagatsumagoianiahigashichichibunkyonanao" + - "shimageandsoundandvisionrenderhigashihiroshimanehigashiizumozaki" + - "takyushuaiahigashikagawahigashikagurasoedahigashikawakitaaikitam" + - "ihamadahigashikurumeetrentino-a-adigehigashimatsushimarcheapigee" + - "lvinckautokeinotteroyhigashimatsuyamakitaakitadaitoigawahigashim" + - "urayamamotorcycleshimonosekikawahigashinarusells-itrentino-aadig" + - "ehigashinehigashiomitamamurausukitamotosumy-gatewayhigashiosakas" + - "ayamanakakogawahigashishirakawamatakasagopocznorfolkebibleirvika" + - "zoologyhigashisumiyoshikawaminamiaikitanakagusukumodernhigashits" + - "unoshiroomurahigashiurawa-mazowszexnetrentino-alto-adigehigashiy" + - "amatokoriyamanashiibahccavuotnagaraholtaleniwaizumiotsukumiyamaz" + - "onawsmpplanetariuminamimakis-a-lawyerhigashiyodogawahigashiyoshi" + - "nogaris-a-liberalhiraizumisatohnoshoooshikamaishimofusartshimosu" + - "walkis-a-libertarianhirakatashinagawahiranairtrafficplexus-1hira" + - "rahiratsukagawahirayakagehistorichouseshimotsukehitachiomiyagild" + - "eskaliszhitachiotagotembaixadahitraeumtgeradelmenhorstalbanshimo" + - "tsumahjartdalhjelmelandholeckochikushinonsenergyholidayhomegoods" + - "hinichinanhomeiphiladelphiaareadmyblogspotrentino-altoadigehomel" + - "inkitoolsztynsettlershinjournalismailillesandefjordhomelinuxn--2" + - "m4a15ehomeofficehomesecuritymacaparecidahomesecuritypchoshibuyac" + - "htsandvikcoromantovalle-d-aostatic-accessanfranciscofreakunemuro" + - "rangehirnrtoyotsukaidohtawaramotoineppueblockbustermezhomesensee" + - "ringhomeunixn--2scrj9choyodobashichikashukujitawarahondahongotpa" + - "ntheonsitehonjyoitakasakitashiobarahornindalhorsellsyourhomeftph" + - "ilatelyhorteneis-a-linux-useranishiaritabashikaoirminamiminowaho" + - "spitalhoteleshinjukumanowtvalleedaostehotmailhoyangerhoylandetro" + - "itskypehumanitieshinkamigotoyohashimototalhurdalhurumajis-a-llam" + - "arriottrentino-s-tirolhyllestadhyogoris-a-musicianhyugawarahyund" + - "aiwafuneis-very-evillageis-very-goodyearis-very-niceis-very-swee" + - "tpepperis-with-thebandownloadisleofmanaustdaljetztrentino-sudtir" + - "oljevnakershuscultureggioemiliaromagnamsosnowiechristiansburgret" + - "akanabeautysvardoesntexisteingeekasaokamikoaniikappuboliviajessh" + - "eimpertrixcdn77-ssldyndns-office-on-the-weberjewelryjewishartgal" + - "leryjfkfhappoujgorajlljls-sto1jmphotographysiojnjcloudjiffylkesb" + - "iblackbaudcdn77-securebungoonord-odaljoyentrentino-sued-tiroljoy" + - "okaichibajddarchitecturealtorlandjpnjprshirakokamiminershiranuka" + - "mitsuejurkosakaerodromegallupinbarclaycards3-sa-east-1koseis-a-p" + - "ainteractivegaskvollkosherbrookegawakoshimizumakizunokunimimatak" + - "ayamarylandkoshunantankharkivanylvenicekosugekotohiradomainsureg" + - "ruhostingkotourakouhokutamakis-a-patsfankounosupplieshiraois-a-p" + - "ersonaltrainerkouyamashikekouzushimashikis-a-photographerokuapph" + - "ilipsynology-diskstationkozagawakozakis-a-playershifteditchyouri" + - "phoenixn--30rr7ykozowinbarclays3-us-east-2kpnkppspdnshiraokamoga" + - "wakrasnikahokutokashikis-a-republicancerresearchaeologicaliforni" + - "akrasnodarkredstonekristiansandcatshiratakahagitlaborkristiansun" + - "dkrodsheradkrokstadelvaldaostarostwodzislawindmillkryminamioguni" + - "5kumatorinokumejimasoykumenantokigawakunisakis-a-rockstarachowic" + - "ekunitachiarailwaykunitomigusukumamotoyamashikokuchuokunneppubtl" + - "shishikuis-a-socialistdlibestadkunstsammlungkunstunddesignkuokgr" + - "oupilotshisognekurehabmerkurgankurobelaudibleasingleshisuifuette" + - "rtdasnetzkurogiminamiashigarakuroisoftwarezzokuromatsunais-a-sox" + - "fankurotakikawasakis-a-studentalkushirogawakustanais-a-teacherka" + - "ssyno-dshinshinotsurgerykusupplynxn--3bst00minamisanrikubetsurfa" + - "uskedsmokorsetagayaseralingenoamishirasatogokasells-for-lessauhe" + - "radynv6kutchanelkutnokuzumakis-a-techietis-a-nascarfankvafjordkv" + - "alsundkvamfamberkeleykvanangenkvinesdalkvinnheradkviteseidatingk" + - "vitsoykwpspectruminamitanekzmishimatsumaebashimodatemissileluxem" + - "bourgmisugitokuyamatsumotofukemitourismolanxesshitaramamitoyoake" + - "miuramiyazurewebsiteshikagamiishibukawamiyotamanomjondalenmlbfan" + - "montrealestatefarmequipmentrentinoa-adigemonza-brianzapposhizuku" + - "ishimogosenmonza-e-della-brianzaptokyotangotsukitahatakamoriokak" + - "egawamonzabrianzaramonzaebrianzamonzaedellabrianzamoonscaleforce" + - "mordoviamoriyamatsunomoriyoshiminamiawajikis-an-actormormonsterm" + - "oroyamatsusakahoginankokubunjis-an-actresshintokushimamortgagemo" + - "scowindowskrakowinnershizuokanagawamoseushistorymosjoenmoskenesh" + - "oppingmosshopwarendalenugmosvikhersonmoteginowaniihamatamakawaji" + - "mansionshoujis-an-anarchistoricalsocietymoviemovimientolgamozill" + - "a-iotrentinoaadigemtranbymuenstermuginozawaonsenmuikamiokameokam" + - "akurazakiwakunigamiharumukoebenhavnmulhouseoullensvanguardmunaka" + - "tanemuncienciamuosattemupimientakkoelnmurmanskhmelnitskiyamarumo" + - "rimachidamurotorcraftrentinoalto-adigemusashimurayamatsushigemus" + - "ashinoharamuseetrentinoaltoadigemuseumverenigingmusicargodaddyn-" + - "vpndnshowamutsuzawamy-vigorgemy-wanggouvichristmaseratiresangomu" + - "tashinainvestmentsanjotoyouramyactivedirectorymyasustor-elvdalmy" + - "cdmydattolocalhistorymyddnskingmydissentrentinos-tirolmydobisshi" + - "kis-an-artistgorymydroboehringerikemydshowtimelhusdecorativearts" + - "hriramlidlugolekadenagahamaroygardendoftheinternetlifyis-an-engi" + - "neeringmyeffectrentinostirolmyfastly-terrariuminamiuonumasudamyf" + - "irewallonieruchomoscienceandindustrynmyforuminamiyamashirokawana" + - "belembetsukubankharkovaomyfritzmyftpaccesshwiosienarutomobellevu" + - "elosangelesjabbottrentinosud-tirolmyhome-servermyjinomykolaivare" + - "servehalflifestylemymailermymediapchromedicaltanissettaishinomak" + - "inkobeardubaiduckdnsannanishiwakinzais-a-candidatemyokohamamatsu" + - "damypepinkhmelnytskyivaporcloudmypetsigdalmyphotoshibalatinogift" + - "silkhplaystation-cloudmypicturesimple-urlmypsxn--3ds443gmysecuri" + - "tycamerakermyshopblocksirdalmythic-beastsjcbnpparibaselburgmytis" + - "-a-bookkeeperspectakasugais-an-entertainermytuleaprendemasakikon" + - "aikawachinaganoharamcoachampionshiphoptobishimadridvagsoyermyvnc" + - "hungnamdalseidfjordyndns-picsannohelplfinancialukowhalingrimstad" + - "yndns-remotewdyndns-serverisignissandiegomywirepaircraftingvollo" + - "mbardiamondslupsklabudhabikinokawabarthadselectrentin-sued-tirol" + - "platformshangrilapyplatter-appioneerplatterpippugliaplazaplcube-" + - "serverplumbingoplurinacionalpodhalevangerpodlasiellaktyubinskipt" + - "veterinaireadthedocscappgafannefrankfurtrentinosudtirolpodzonepo" + - "hlpoivronpokerpokrovsknx-serversicherungpoliticarrierpolitiendap" + - "olkowicepoltavalle-aostathellewismillerpomorzeszowitdkomaganepon" + - "pesaro-urbino-pesarourbinopesaromasvuotnaritakurashikis-bytomari" + - "timekeepingponypordenonepornporsangerporsangugeporsgrunnanyokosh" + - "ibahikariwanumatamayufuelveruminanopoznanpraxis-a-bruinsfanprdpr" + - "eservationpresidioprgmrprimelbourneprincipeprivatizehealthinsura" + - "nceprofesionalprogressivenneslaskerrylogisticsnoasakakinokiaprom" + - "ombetsurgeonshalloffameiwamassa-carrara-massacarraramassabusines" + - "sebykleclerchurcharternidyndns-webhareidsbergentingripepropertyp" + - "rotectionprotonetrentinosued-tirolprudentialpruszkowithgoogleapi" + - "szprvcyberlevagangaviikanonjis-certifieducatorahimeshimamateramo" + - "baraprzeworskogptplusgardenpulawypupittsburghofficialpvhagakhana" + - "migawapvtrentinosuedtirolpwcircustomer-ociprianiigataitogitsulda" + - "luroypzqhagebostadqldqponiatowadaqslingqualifioappiwatequickconn" + - "ectrentinsud-tirolquicksytestingquipelementsokananiimihoboleslaw" + - "iecistrondheimmobilienissayokkaichiropractichernovtsyncloudyndns" + - "-at-homedepotenzamamidsundyndns-at-workisboringlugmbhartipscbgmi" + - "nakamichiharaqvcitadeliveryggeesusonosuzakanazawasuzukaneyamazoe" + - "suzukis-into-animegurownprovidersvalbardunloppacificitichirurgie" + - "ns-dentistes-en-francesvcivilaviationissedalutskashibatakatsukiy" + - "osatokamachintaifun-dnsaliasanokashiharasveiosvelvikommunalforbu" + - "ndsvizzerasvn-reposolutionsokndalswidnicasacamdvrcampinagrandebu" + - "ilderschlesischesomaswidnikkokonoeswiebodzin-butterswiftcoverswi" + - "noujscienceandhistoryswissmarterthanyousynology-dsomnarviikamisa" + - "tokaizukameyamatotakadatuscanytushuissier-justicetuvalle-daostat" + - "icsor-varangertuxfamilytwmailvestre-slidreportrevisohughesoovest" + - "re-totennishiawakuravestvagoyvevelstadvibo-valentiavibovalentiav" + - "ideovillasorocabalestrandabergamo-siemensncfdvinnicasadelamoneda" + - "pliernewportlligatritonvinnytsiavipsinaappixolinovirginiavirtual" + - "-userveftpizzavirtualservervirtualuservegame-servervirtueeldomei" + - "n-vigorlicevirtuelvisakegawaviterboknowsitallvivolkenkundenvixn-" + - "-3hcrj9civilisationisshinguccircleverappsantabarbaravlaanderenvl" + - "adikavkazimierz-dolnyvladimirvlogintoyonezawavminiservervologdan" + - "skomonowruzhgorodeovolvolkswagentsorreisahayakawakamiichikawamis" + - "atottoris-foundationvolyngdalvoorloperauniterois-into-carshintom" + - "ikasaharavossevangenvotevotingvotoyonowmcloudwmflabsortlandwnext" + - "directrogstadworldworse-thandawowithyoutuberspacekitagatargitpag" + - "efrontappkmpspbar2wpdevcloudwpenginepoweredwritesthisblogsytewro" + - "clawiwatsukiyonotairestaurantroandinosaurepbodynamic-dnsopotrent" + - "insudtirolwtcminnesotaketaketomisatokorozawawtfbsbxn--1ck2e1banz" + - "aicloudcontrolledekagaminombresciaustraliajudaicable-modemocraci" + - "abruzzoologicalvinklein-addrammenuorochesterimo-i-rana4u2-localh" + - "ostrowiec66wuozuwzmiuwajimaxn--45q11civilwarmiaxn--4gbriminingxn" + - "--4it168dxn--4it797kongsbergxn--4pvxs4allxn--54b7fta0cclanbibaid" + - "armeniaxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49cldmailovecolle" + - "gefantasyleaguernseyxn--5rtq34kongsvingerxn--5su34j936bgsgxn--5t" + - "zm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264clic" + - "20001wwwhoswhokksundyndns-wikirkenesantacruzsantafedjejuifmetace" + - "ntrumeteorappartis-a-catererxn--80adxhksorumincomcastresindevice" + - "nzaporizhzhiaxn--80ao21axn--80aqecdr1axn--80asehdbarefootballoon" + - "ingjerdrumckinseyolasiteu-1xn--80aswgxn--80augustowloclawekomoro" + - "tsukaminokawanishiaizubangexn--8ltr62koninjambylxn--8pvr4uxn--8y" + - "0a063axn--90a3academiamicaaarborteaches-yogasawaracingxn--90aero" + - "portalabamagasakishimabaraogakibichuoxn--90aishobarakawagoexn--9" + - "0azhytomyravendbargainstantcloudfunctionswedenvironmentalconserv" + - "ationfabricafederationionjukudoyamaintenanceu-2xn--9dbhblg6digit" + - "alxn--9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byaotsu" + - "rreyxn--asky-iraxn--aurskog-hland-jnbarreauction-webhopenairbusa" + - "ntiquest-a-la-maisondre-landroidiscourses3-us-gov-west-1xn--aver" + - "y-yuasakuhokkaidovre-eikerxn--b-5gaxn--b4w605ferdxn--balsan-sdti" + - "rol-nsbsoundcastronomy-routerxn--bck1b9a5dre4clickashiwaraxn--bd" + - "ddj-mrabdxn--bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--" + - "bhccavuotna-k7axn--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-f" + - "yasakaiminatoyookaniepcexn--bjddar-ptarumizusawaxn--blt-elabourx" + - "n--bmlo-graingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--br" + - "nny-wuacademy-firewall-gatewayxn--brnnysund-m8accident-investiga" + - "tion-aptibleadpagest-mon-blogueurovision-k3southcarolinarvikomat" + - "sushimarylhurstjordalshalsenxn--brum-voagatromsakataobaomoriguch" + - "iharahkkeravjuegoshikijobservableusercontentrentoyonakagyokutoya" + - "kolobrzegersundxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarrel-of-kn" + - "owledgeapplicationcloudappspotagerevistaples3-us-west-1xn--c1avg" + - "xn--c2br7gxn--c3s14mintereitrentino-suedtirolxn--cck2b3barrell-o" + - "f-knowledgestack12xn--cckwcxetdxn--cesena-forl-mcbremangerxn--ce" + - "senaforl-i8axn--cg4bkis-into-cartoonshinyoshitomiokamitondabayas" + - "hiogamagoriziaxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a2" + - "oxn--correios-e-telecomunicaes-ghc29axn--czr694barsycenterprises" + - "akimobetsuitainaioirasebastopologyeongnamegawakayamagazineat-url" + - "illyombolzano-altoadigeorgeorgiaustrheimatunduhrennesoyokozebina" + - "gisoccertmgrazimutheworkpccwebredirectmembers3-eu-west-1xn--czrs" + - "0tromsojamisonxn--czru2dxn--czrw28barsyonlinewhampshirealtysnes3" + - "-us-west-2xn--d1acj3bashkiriauthordalandeportenrivnebinordreisa-" + - "hockeynutazuerichardlikescandyn53utilitiesquare7xn--d1alfaromeox" + - "n--d1atrusteexn--d5qv7z876clinichiryukyuragifuchungbukharavennag" + - "asakindlecznagasukexn--davvenjrga-y4axn--djrs72d6uyxn--djty4kons" + - "kowolayangroupiemontexn--dnna-grajewolterskluwerxn--drbak-wuaxn-" + - "-dyry-iraxn--e1a4cliniquenoharaxn--eckvdtc9dxn--efvn9southwestfa" + - "lenxn--efvy88haibarakitahiroshimaoris-a-greenxn--ehqz56nxn--elqq" + - "16hair-surveillancexn--eveni-0qa01gaxn--f6qx53axn--fct429konsula" + - "trobeepilepsykkylvenetodayxn--fhbeiarnxn--finny-yuaxn--fiq228c5h" + - "sowaxn--fiq64basicservercelliguriautomotiveconomiastagemological" + - "lyngenflfanquanpachigasakihokumakogenebakkeshibechambagriculture" + - "nnebudejjuedischesapeakebayernufcfanavigationavoizumizakibmdevel" + - "opmentatsunobiramusementdllpages3-ap-southeast-2ix4432-balsan-su" + - "edtirolkuszczytnoipirangamvik-serverrankoshigayachimataikikugawa" + - "lesundd-dnshome-webserverdal-o-g-i-n4tatarantours3-ap-northeast-" + - "2xn--fiqs8speedpartnersolarssonxn--fiqz9sphinxn--3e0b707exn--fjo" + - "rd-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesen" + - "a-fcbsspjelkavikomforbarcelonagawalmartattoolforgemreviewsaitosh" + - "imayfirstockholmestrandgcahcesuoloans3-fips-us-gov-west-1xn--for" + - "lcesena-c8axn--fpcrj9c3dxn--frde-grandrapidspreadbettingxn--frna" + - "-woaraisaijosoyrorospydebergxn--frya-hraxn--fzc2c9e2clintonoshoe" + - "santamariakexn--fzys8d69uvgmailxn--g2xx48clothingdustdataiwanair" + - "forcebetsuikidsmynasushiobaragusabaejrietisalatinabenonicbcn-nor" + - "th-1xn--gckr3f0fbx-ostrowwlkpmgruexn--gecrj9cn-northwest-1xn--gg" + - "aviika-8ya47hakatanortonxn--gildeskl-g0axn--givuotna-8yasugivest" + - "bytemarkonyvelolipoppdalxn--gjvik-wuaxn--gk3at1exn--gls-elacaixa" + - "xn--gmq050is-into-gamessinazawaxn--gmqw5axn--h-2failxn--h1aeghak" + - "odatexn--h2breg3evenesrlxn--h2brj9c8cngriwataraidyndns-workshopi" + - "tsitevadsobetsumidatlantichitachinakagawashtenawdev-myqnapcloude" + - "itysfjordyndns-blogdnsamsclubartowfarmsteadyndns-freeboxosloftoy" + - "osatoyokawaxn--h3cuzk1discountyxn--hbmer-xqaxn--hcesuolo-7ya35ba" + - "silicataniautoscanadaeguambulancechirealmpmnavuotnapleskns3-eu-w" + - "est-2xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeasta-" + - "s4accident-prevention-rancherkasydneyxn--hnefoss-q1axn--hobl-ira" + - "xn--holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hyland" + - "et-54axn--i1b6b1a6a2exn--imr513nxn--indery-fyasuokanoyaltakatori" + - "s-leetrentino-stirolxn--io0a7is-lostrodawaraxn--j1aefbxosavannah" + - "gaxn--j1amhakonexn--j6w193gxn--jlq480n2rgxn--jlq61u9w7basketball" + - "finanzgoraveroykengerdalces3-eu-west-3xn--jlster-byatominamidait" + - "omanchesterxn--jrpeland-54axn--jvr189misakis-a-therapistoiaxn--k" + - "7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--kl" + - "bu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3oq18vl8pn36ax" + - "n--koluokta-7ya57hakubahcavuotnagaivuotnagaokakyotambabyenglandx" + - "n--kprw13dxn--kpry57dxn--kput3is-not-certifiedugit-pagespeedmobi" + - "lizeroticanonoichinomiyakexn--krager-gyatsukanraxn--kranghke-b0a" + - "xn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49jdevcloudnshir" + - "ahamatonbetsurnadalxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsu" + - "shiroxn--kvnangen-k0axn--l-1fairwindsrvarggatrentinsued-tirolxn-" + - "-l1accentureklamborghinikolaeventstoregontrailroadxn--laheadju-7" + - "yawaraxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52" + - "batochiokinoshimaizuruhrhcloudiscoveryomitanobninskaracoldwarsza" + - "wavocatanzarowebspacebizenakanojohanamakinoharaukraanghkeymachin" + - "eustargardds3-ca-central-1xn--lesund-huaxn--lgbbat1ad8jdfastvps-" + - "serveronakanotoddenxn--lgrd-poacctrvaroyxn--lhppi-xqaxn--linds-p" + - "ramericanartrycloudflareplantationxn--lns-qlaquilanstorfjordxn--" + - "loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liacnpyatigorskodje" + - "ffersonxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--mer" + - "ker-kuaxn--mgb2ddestorjcphonefosshioyandexcloudxn--mgb9awbfedora" + - "peoplegnicapebretonamicrosoftbankasukabedzin-berlindasdaburxn--m" + - "gba3a3ejtrysiljanxn--mgba3a4f16axn--mgba3a4franamizuholdingstpet" + - "ersburgxn--mgba7c0bbn0axn--mgbaakc7dvfedoraprojectraniandriabarl" + - "ettatraniandriaxn--mgbaam7a8hakuis-a-gurustkannamilanotogawaxn--" + - "mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00batsfjordishakotanayor" + - "ovigovtaxihuanfshostrolekamishihoronobeauxartsandcrafts3-website" + - "-ap-northeast-1xn--mgbai9azgqp6jelasticbeanstalkddietnedalxn--mg" + - "bayh7gpaleoxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgberp" + - "4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbp" + - "l2fhskydivingxn--mgbqly7c0a67fbcnsantoandreamhostersanukis-a-cel" + - "ticsfanxn--mgbqly7cvafranziskanerimaringatlantakahashimamakiryuo" + - "hdattorelayxn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhausposts" + - "-and-telecommunications3-website-ap-southeast-1xn--mgbx4cd0abbvi" + - "eeexn--mix082feiraquarelleaseeklogesaveincloudynvpnplus-4xn--mix" + - "891fermochizukirovogradoyxn--mjndalen-64axn--mk0axin-dslgbtuneso" + - "r-odalxn--mk1bu44cntoystre-slidrettozawaxn--mkru45is-savedunetfl" + - "ixilxn--mlatvuopmi-s4axn--mli-tlarvikooris-a-nursembokukitchenxn" + - "--mlselv-iuaxn--moreke-juaxn--mori-qsakuragawaxn--mosjen-eyawata" + - "hamaxn--mot-tlavagiskexn--mre-og-romsdal-qqbuserveexchangexn--ms" + - "y-ula0hakusanagochijiwadell-ogliastraderxn--mtta-vrjjat-k7aflaks" + - "tadaokagakicks-assnasaarlandxn--muost-0qaxn--mxtq1misasaguris-an" + - "-accountantshinshiroxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3pxu8kom" + - "vuxn--32vp30haebaruericssongdalenviknakatsugawaxn--nit225kopervi" + - "khakassiaxn--nmesjevuemie-tcbalsan-sudtirollagdenesnaaseinet-fre" + - "akstreamswatch-and-clockerxn--nnx388axn--nodessakurais-slickazun" + - "ow-dnshiojirishirifujiedaxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iq" + - "x3axn--ntsq17gxn--nttery-byaeservehttplantslzxn--nvuotna-hwaxn--" + - "nyqy26axn--o1acheltenham-radio-opencraftrainingxn--o3cw4haldenxn" + - "--o3cyx2axn--od0algorithmiasakuchinotsuchiurakawaxn--od0aq3benev" + - "entoeidskoguchikuzenhktcp4xn--ogbpf8flekkefjordxn--oppegrd-ixaxn" + - "--ostery-fyaxn--osyro-wuaxn--otu796dxn--p1acferraraxn--p1ais-ube" + - "rleetrentino-sud-tirolxn--pgbs0dhlxn--porsgu-sta26ferraris-a-cub" + - "icle-slavellinodeobjectsaves-the-whalessandria-trani-barletta-an" + - "driatranibarlettaandriaxn--pssu33lxn--pssy2uxn--q9jyb4collection" + - "xn--qcka1pmcdirxn--qqqt11misawaxn--qxa6axn--qxamuneuestudioxn--r" + - "ady-iraxn--rdal-poaxn--rde-ulavangenxn--rdy-0nabaris-very-badajo" + - "zxn--rennesy-v1axn--rhkkervju-01aferrerotikagoshimalvikasumigaur" + - "ayasudaxn--rholt-mragowoodsidemonmouthalsaitamatsukuris-a-hard-w" + - "orkersewilliamhillxn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--ri" + - "sa-5nativeamericanantiquestudynamisches-dnsolognexn--risr-iraxn-" + - "-rland-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31hammarfeastafric" + - "apitalonewmexicodyn-o-saurlandesharis-a-hunterxn--rovu88bentleyo" + - "nagoyavoues3-external-1xn--rros-granvindafjordxn--rskog-uuaxn--r" + - "st-0naturalhistorymuseumcenterxn--rsta-francaiseharaxn--rvc1e0am" + - "3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithamurakamigoris-a-knight" + - "pointtohobby-sitexn--s9brj9colognewyorkshirecifedexeterxn--sandn" + - "essjen-ogbeppublishproxyzgorzeleccogjerstadotsuruokakamigaharaxa" + - "urskog-holandinggfarmerseine164-baltimore-og-romsdalipayboltates" + - "hinanomachimkentateyamaetnaamesjevuemielno-ipifonyaarpalmasfjord" + - "enaturhistorisches3-ap-southeast-1xn--sandy-yuaxn--sdtirol-n2axn" + - "--seral-lraxn--ses554gxn--sgne-graphoxn--42c2d9axn--skierv-utaza" + - "stuff-4-salexn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-" + - "fxaxn--slat-5naturalsciencesnaturellestufftoread-booksnesolundbe" + - "ckomakiyosunndalxn--slt-elabcieszynxn--smla-hraxn--smna-gratange" + - "ntlentapisa-geekoryokamikawanehonbetsurutaharaxn--snase-nraxn--s" + - "ndre-land-0cbeskidyn-ip24xn--snes-poaxn--snsa-roaxn--sr-aurdal-l" + - "8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-ggbestbuyshouses" + - "3-website-ap-southeast-2xn--srfold-byaxn--srreisa-q1axn--srum-gr" + - "atis-a-bulls-fanxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-" + - "sqbetainaboxfusejnymemergencyahabaghdadiskussionsbereichaseljeep" + - "sondriodejaneirockartuzyonagunicommbankaragandaxn--stre-toten-zc" + - "bhzcasertairaumalborkarasjohkamikitayamatsurin-the-bandain-vpnca" + - "sinordkappalmspringsakerxn--t60b56axn--tckweatherchannelxn--tiq4" + - "9xqyjelenia-goraxn--tjme-hraxn--tn0agrinetbankosaigawaxn--tnsber" + - "g-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tirol-rzbieidsvollim" + - "anowarudaxn--trentin-sdtirol-7vbrplsbxn--45br5cylxn--trentino-sd" + - "-tirol-c3bielawaltervistaipeigersundisrechtranakaiwamizawatchand" + - "clockarasjokarasuyamarshallstatebankarateu-3xn--trentino-sdtirol" + - "-szbiellaakesvuemielecceu-4xn--trentinosd-tirol-rzbieszczadygeya" + - "chiyodaejeonbukcoalvdalaheadjudygarlandivtasvuodnakamagayahikobi" + - "erzycevje-og-hornnes3-website-eu-west-1xn--trentinosdtirol-7vbie" + - "vat-band-campaniaxn--trentinsd-tirol-6vbifukagawashingtondclkara" + - "tsuginamikatagamilitaryoriikareliancextraspace-to-rentalstomakom" + - "aibaraxn--trentinsdtirol-nsbigv-infoodnetworkangerxn--trgstad-r1" + - "axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvestfoldxn--uc0a" + - "y4axn--uist22handsonyoursidellogliastradingxn--uisz3gxn--unjrga-" + - "rtashkentunkommunexn--unup4yxn--uuwu58axn--vads-jraxn--valle-aos" + - "te-ebbturystykanmakiwielunnerxn--valle-d-aoste-ehbodollstuttgart" + - "rentinsuedtirolxn--valleaoste-e7axn--valledaoste-ebbvacationsusa" + - "kis-gonexn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctbihoro" + - "logyoshiokanzakiyokawaraxn--vermgensberatung-pwbikedaemoneyukinc" + - "heonhlfanhs3-website-sa-east-1xn--vestvgy-ixa6oxn--vg-yiabkhazia" + - "xn--vgan-qoaxn--vgsy-qoa0jeonnamerikawauexn--vgu402colonialwilli" + - "amsburgroks-thisayamanobeokakudamatsuexn--vhquvestnesorfoldxn--v" + - "ler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq861bil" + - "baokinawashirosatochigiessensiositecnologiaxn--w4r85el8fhu5dnrax" + - "n--w4rs40lxn--wcvs22dxn--wgbh1coloradoplateaudioxn--wgbl6axn--xh" + - "q521billustrationredumbrellahppiacenzachpomorskienikonanporovnob" + - "serverxn--xkc2al3hye2axn--xkc2dl3a5ee0hangglidingxn--y9a3aquariu" + - "misconfusedxn--yer-znaturbruksgymnxn--yfro4i67oxn--ygarden-p1axn" + - "--ygbi2ammxn--45brj9civilizationiyodogawaxn--ystre-slidre-ujbioc" + - "eanographics3-website-us-east-1xn--zbx025dxn--zf0ao64axn--zf0avx" + - "lxn--zfr164birdartcenterprisecloudcontrolappleborkdalwaysdatabas" + - "eballangenkainanaerobatickets3-website-us-west-1xnbayxz" + "trosnubalsfjordd-dnshome-webserverdal-o-g-i-n4tatsunobihirosakik" + + "amijimatsuuragrocerybnikeisenbahnaturhistorisches3-ap-south-1bip" + + "almasfjordenikonanporovnocpalmspringsakerbirdartcenterprisecloud" + + "accesscambridgeiseiyoichippubetsubetsugarussiabirkenesoddtangeno" + + "varahkkeravjuegoshikilatironrenderbirthplacevje-og-hornnes3-webs" + + "ite-us-west-1bjarkoyukuhashimojin-the-bandain-vpncateringebuildi" + + "ngladegreextraspace-to-rentalstomakomaibarabjerkreimbamblebesbyg" + + "landroverhalla-speziaustevollaziobiramswatch-and-clockereviewsai" + + "toshimattelekommunikationatuurwetenschappengine164-baltimore-og-" + + "romsdalp1bjugnieznord-odalwaysdatabaseballangenkainanaejrietisal" + + "atinabenonicatholicaxiaskimitsubatamibugattiffanyaaarborteaches-" + + "yogasawara-rugbydgoszczecinemaceratabuseating-organicbcieszynino" + + "hekinannestadiyurihonjournalistjohninomiyakonojorpelandnpanamats" + + "uzakincheonirasakindianapolis-a-bloggerblackfridayusuharabloombe" + + "rgbauernishiazaindianmarketinglassassinationalheritagebloxcms3-w" + + "ebsite-us-west-2bluedagestangemologicallyngenishigoddabmoattachm" + + "ents5yusuisservehttpanasonichernivtsiciliabmsakyotanabellunord-f" + + "rontierbmwedeployuulmemsettlersalangenishiharabnrwegroweibologna" + + "gareyamakeupowiatmallorcafederation-webhopencraftrainingleezebom" + + "loabathsbchernovtsyncloudrangedalondrinamsskoganeindielddanuorri" + + "ndigenaklodzkodairabondigitaloceanographicsxboxenishiizunazukind" + + "owapblogsiteleafamilycompany-2bonnishikataketomisatomobellevuelo" + + "sangelesjabbottjeldsundray-dnstracebookinghosted-by-previderboom" + + "lair-traffic-controlleyuzawaboschaefflerdalorenskoglitcheltenham" + + "-radio-opensocialottebostikariyameiwamarugame-hostedpictetjmaxxx" + + "finitybostonakijinsekikogentappsalon-1botanicalgardenishikatsura" + + "git-reposaltdalottokonamegatakayamassa-carrara-massacarraramassa" + + "businessebykleclerchirurgiens-dentistes-en-francebotanicgardenis" + + "hikawazukamishihoronobeauxartsandcraftsaludrayddnsfreebox-osasco" + + "li-picenordlandraydnsupdaterbotanychiryukyuragifuchungbukharauma" + + "lborkarlsoybouncemerckmsdnipropetrovskjervoyageorgeorgiabounty-f" + + "ullensakerrypropertiesalvadordalibabalena-devicesalzburgliwicebo" + + "utiquebechitachinakagawatchandclockarmoybozen-sudtirolouvrehabme" + + "rbozen-suedtirolowiczest-le-patronishimerabplaceducatorahimeshim" + + "amateraholtalenishinomiyashironohtawaramotoineppueblockbusternii" + + "minamiawajikindustriabrandywinevalleybrasiliabrindisibenikimobet" + + "suitaipeigersundrivefsnillfjordrobaknoluoktachikawafflecellcube-" + + "serverbristoloseyouriparachutinglobalashovhachinohedmarkarpaczel" + + "adzlgloboavistanbulsan-sudtirolpusercontentjomeloyalistoragebrit" + + "ishcolumbialowiezaganishinoomotegomniweatherchannelubindalublind" + + "esnesamegawabroadcastlebtimnetzparaglidinglogoweirbroadwaybroke-" + + "itvedestrandrudupontariobranconakaniikawatanagurabrokerbronnoysu" + + "ndurbanamexhibitionishinoshimatsushigebrothermesaverdeatnulvikar" + + "uizawabrowsersafetymarketsamnangerbrumunddalucaniabrunelastxjava" + + "ld-aostarnbergloppenzaolbia-tempio-olbiatempioolbialystokkembuch" + + "ikumagayagawakayamagentositecnologiabrusselsampalacebruxellesams" + + "clubartowellbeingzonebryansklepparisor-fronishiokoppegardurhambu" + + "rglugsjcbnpparibaselburgmbhartipsselfiparliamentjxn--0trq7p7nnis" + + "hitosashimizunaminamibosogndaluccargodaddyn-o-saurlandesamsungmi" + + "nakamichiharabrynewhollandynathomebuiltwithdarkarumaifarmsteadyn" + + "dns-at-homedepotenzamamidsundyndns-at-workisboringmodellingmxn--" + + "11b4c3dyndns-blogdnsandnessjoenishiwakindustriesteamfamberkeleyb" + + "uskerudyndns-freeboxoslocus-4buzentsujiiebuzzwesteuropenairbusan" + + "tiquest-a-la-maisondre-landroidyndns-homednsandoybwestfalenissan" + + "diegomurabzhitomirumalatvuopmicrolightingretakamoriokakudamatsue" + + "bzzcompute-1computerhistoryofscience-fictioncomsecaaskoyabearalv" + + "ahkijobservableusercontentoyotsukaidocondoshichinohealth-careref" + + "ormitakeharaconferenceconstructionconsuladoesntexisteingeekashiw" + + "araconsultanthropologyconsultingrongausdalcontactoyouracontagema" + + "tsubaracontemporaryarteducationalchikugodogadollsapporocontracto" + + "rskenconventureshinodeartheworkpccwhoswhokksundyndns1cookingchan" + + "nelsdvrdnsdojoburgrossetouchihayaakasakawaharacoolcooperativano-" + + "frankivskolefrakkestadynnsardegnaroycopenhagencyclopedichonanbul" + + "san-suedtirolukowestus2coproductionsardiniacorporationcorsicanon" + + "oichinomiyakecorvettemp-dnsarlcosenzakopanelastycoffeedbackplane" + + "applinzinzais-a-candidatecosidnsfor-better-thanawatchesarpsborgr" + + "oundhandlingroznynysaintlouis-a-anarchistoireggio-emilia-romagna" + + "katombetsumitakagiizecostumedicinagatorodoycouchpotatofriesarufu" + + "tsunomiyawakasaikaitabashikaoizumizakis-a-caterercoukashiwazakiy" + + "okawaracouncilcouponsasayamayfirstockholmestrandynservebbsasebof" + + "ageologycozoracqcxn--12co0c3b4evalleaostavangercranbrookuwanalyt" + + "icsaskatchewancrdynuniversitycreditcardynv6creditunioncremonashg" + + "abadaddjaguarqhachiojiyaizuwakamatsubushikusakadogawacrewiencric" + + "ketrzyncrimeast-kazakhstanangercrotonexus-3crownipartsassaris-a-" + + "celticsfancrsvps-hostrolekagoshimalopolskanlandynvpnpluscountrye" + + "stateofdelawareclaimsaudacruisesauheradyroyrvikingrpartycryptono" + + "michigangwoncuisinellajollamericanexpressexyculturalcentertainme" + + "ntoystre-slidrettozawacuneocupcakecuritibaghdadcurvalled-aostave" + + "rncymrunjargacyonabarumetacentrumeteorappasadenarashinocyouthruh" + + "erecifedexeterferrarivneferrerotikakamigaharafetsundfguidell-ogl" + + "iastraderfhskydivinguitarsavonarusawafhvalerfidontexistmein-iser" + + "vebeerfieldfigueresinstagingujoinvilleirvikasserversaillesaxofil" + + "ateliafilegear-audnedalnfilegear-debianfilegear-gbizfilegear-ief" + + "ilegear-jpmorganfilegear-sg-1filminamifuranofinalfinancefinearts" + + "choenbrunnfinlandfinnoyfirebaseappassagenschokokekschokoladenfir" + + "enetrani-andria-barletta-trani-andriafirenzefirestonefirmdalegni" + + "capetownnews-stagingulenfishingoldpoint2thisamitsukefitjarvodkaf" + + "jordvagsoygardenflfanquanpachigasakievennodesabaerobaticketschol" + + "arshipschoolsztynsettsurgeonshalloffameldalfitnessettlementrania" + + "ndriabarlettatraniandriafjalerflesbergunmansionschulezajskasukab" + + "edzin-berlindasdaburflickragerogerschulserverflightschwarzgwangj" + + "uifminamiiserniaflirfloginlinefloraflorencefloridatsunanjoetsuwa" + + "nouchikujogaszkolancashirecipescaravantaarpassenger-associationf" + + "loripaderbornfloristanohatajiris-a-chefashionflorokunohealthcare" + + "erschweizflowersciencecentersciencehistoryfltranoyflynnhosting-c" + + "lusterfndfnwkasumigaurayasudafoodnetworkdalfor-ourfor-somedizinh" + + "istorischescientistordalfor-theaterforexrothachirogatakanabeauty" + + "sfjordforgotdnscjohnsonforli-cesena-forlicesenaforlikescandyn53f" + + "orsalegolffanscrapper-siteforsandasuoloftranslatefortalfortextil" + + "eikangerfortmissoulancasterfortworthadanorth-kazakhstanfosnescra" + + "ppinguovdageaidnunusualpersonfotaruis-a-conservativegarsheis-a-c" + + "padualstackasuyanaizuerichardlillesandefjordfoxafozfrancaisehara" + + "franziskanerimaringatlantakahamalvikaszubyfredrikstadtvscrysecur" + + "itytacticservehumourfreeddnsgeekgalaxyfreedesktopocznordreisa-ho" + + "ckeynutazurestaticappspotagerfreemasonryfreesitefreetlserveircho" + + "shibuyahabackyardsangomutashinainfinitintelligencefreiburgushika" + + "mifuranorfolkebibleitungsenfreseniusculturecreationfribourgwiddl" + + "eksvikatowicefriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriul" + + "i-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giulia" + + "friulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagi" + + "uliafriulivgiuliafrlfroganserveminecraftransportefrognfrolandfro" + + "m-akrehamnfrom-alfrom-arfrom-azurewebsiteshikagamiishibukawalbrz" + + "ycharternopilawalesundfrom-capitalonewjerseyfrom-cogxn--1ctwolom" + + "inamatargitlaborfrom-ctransurlfrom-dchoyodobashichikashukujitawa" + + "ravennagasakinderoyfrom-dedyn-berlincolnfrom-flanderservemp3from" + + "-gaulardalfrom-hichisochildrensgardenfrom-iafrom-idfrom-ilfrom-i" + + "n-brbar1from-kservep2patriafrom-kyowariasahikawafrom-lanciafrom-" + + "mamurogawafrom-mdfrom-meeresistancefrom-mifunefrom-mnfrom-modale" + + "nfrom-mservepicservequakefrom-mtnfrom-nctulangevagrigentomologye" + + "onggiehtavuoatnabudapest-a-la-masion-rancherkasydneyfrom-ndfrom-" + + "nefrom-nh-serveblogspotrapaniizafrom-njservesarcasmatartanddesig" + + "nfrom-nminamiizukaminoyamaxunispacefrom-nvalledaostaobaomoriguch" + + "iharag-cloud-charitychyattorneyagawakepnogatagajobojis-a-cubicle" + + "-slavellinodeobjectservicesevastopolefrom-nyminamimakis-a-democr" + + "atravelchannelfrom-ohdattorelayfrom-oketogurafrom-orfrom-padovak" + + "sdalfrom-pratohmandalfrom-ris-a-designerfrom-schmidtre-gauldalfr" + + "om-sdfrom-tnfrom-txn--1lqs03nfrom-utsiracusagamiharafrom-val-dao" + + "stavalleyfrom-vtravelersinsurancefrom-wafrom-wiardwebredirectmee" + + "trdfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wolawafroyait" + + "akaharunzenfstcgroupaviancarrierfujiiderafujikawaguchikonefujimi" + + "nokamoenairguardiannakadomarinebraskaunicommbankatsushikabeelden" + + "geluidvallee-d-aosteigenfujinomiyadattowebcampinashikiminohostfo" + + "ldnavyfujiokayamangonohejis-a-doctorayfujisatoshonairlinedre-eik" + + "erfujisawafujishiroishidakabiratoridefenseljordfujitsurugashiman" + + "gyshlakasamatsudoomdnsiskinkyotobetsumidatlantichristiansburgrim" + + "stadyndns-mailutskashibatakatorinternationalfirearmsanjotlon-2fu" + + "jixeroxfordefinimakanegasakinkobierzycefujiyoshidavvenjargap-nor" + + "theast-3fukayabeatsevenassisicilyfukuchiyamadavvesiidappnodebala" + + "ncertificationfukudomigawafukuis-a-financialadvisor-aurdalfukumi" + + "tsubishigakirovogradoyfukuokazakiryuohkurafukuroishikarikaturind" + + "alfukusakisarazure-mobileirfjordfukuyamagatakahashimamakishiwada" + + "zaifudaigojomedio-campidano-mediocampidanomediofunabashiriuchina" + + "dafunagatakahatakaishimoichinosekigaharafunahashikamiamakusatsum" + + "asendaisennangooglecodespotrendhostingfundaciofunkfeuerfuoiskuju" + + "kuriyamaniwakuratefuosskoczowiiheyakumoduminamiminowafurnituregg" + + "io-calabriafurubirafurudonostiaafurukawairportland-4-salernobori" + + "betsucksharis-a-geekatsuyamarumorimachidafusodegaurafussaikisofu" + + "kushimannore-og-uvdalfutabayamaguchinomihachimanagementrentin-su" + + "d-tirolfutboldlygoingnowhere-for-morenakasatsunairtelebitbridges" + + "toneendoftheinternethnologyfuttsurugimperiafuturecmsharpfizerfut" + + "urehostingfuturemailingfvgfyresdalhangglidinghangoutsystemscloud" + + "hannanmokuizumodenakayamanxn--1lqs71dhannortonhanyuzenhapmirclou" + + "dplatform0harstadharvestcelebrationhasamaoris-a-hunterhasaminami" + + "-alpshimokawahashbanghasudahasura-appgfoggiahasvikautokeinotogaw" + + "ahatoyamazakitahiroshimapartmentshimokitayamahatsukaichikaiseihe" + + "ijis-a-knightpointtohobby-sitehattfjelldalhayashimamotobungotaka" + + "dancehazuminobusells-for-ustkanmakiwakunigamiharutwentehelsinkit" + + "akamiizumisanofidelitysvardonnakamuratajimidorittogliattis-a-lan" + + "dscaperugiahembygdsforbundhemneshimonitayanagitappharmacienshimo" + + "nosekikawahemsedalhepforgeherokussldheroyhgtvalleeaosteinkjerusa" + + "lembroideryhidorahigashiagatsumagoianiahigashichichibunkyonanaos" + + "himageandsoundandvisionthewifiatrentin-sued-tirolhigashihiroshim" + + "anehigashiizumozakitakatakaokaluganskygearappharmacyshimosuwalki" + + "s-a-lawyerhigashikagawahigashikagurasoedahigashikawakitaaikitaky" + + "ushuaiahigashikurumegurownproviderhigashimatsushimarburghigashim" + + "atsuyamakitaakitadaitoigawahigashimurayamamotorcycleshimotsukehi" + + "gashinarusells-itrentin-suedtirolhigashinehigashiomitamamurausuk" + + "itamihamadahigashiosakasayamanakakogawahigashishirakawamatakaraz" + + "ukamakurazakitamotosumy-gatewayhigashisumiyoshikawaminamiaikitan" + + "akagusukumodernhigashitsunosegawahigashiurawa-mazowszexnetrentin" + + "o-a-adigehigashiyamatokoriyamanashiibahccavuotnagaragusadocktera" + + "mo-siemenscaledogawarabikomaezakirunoipirangalsacentralus-2higas" + + "hiyodogawahigashiyoshinogaris-a-liberalhiraizumisatohnoshoooshik" + + "amaishimofusartshimotsumahirakatashinagawahiranairtrafficplexus-" + + "1hirarahiratsukaeruhirayakagehistorichouseshinichinanhitachiomiy" + + "agildeskaliszhitachiotagoppdalhitraeumtgeradeloittenrissagaerocl" + + "ubmedecincinnationwidealstahaugesunderseaportsinfolionetworkange" + + "rhjartdalhjelmelandholeckochikushinonsenergyholidayhomegoodshinj" + + "ournalismailillehammerfeste-iphdfcbankazoologyhomeiphiladelphiaa" + + "readmyblogsytehomelinkyard-cloudnshinjukumanowruzhgorodeohomelin" + + "uxn--1qqw23ahomeofficehomesecuritymacaparecidahomesecuritypchris" + + "tmaseratiresannanisshingucciprianidyndns-office-on-the-weberhome" + + "senseeringhomeunixn--2m4a15ehondahongotembaixadahonjyoitakasagot" + + "pantheonsitehornindalhorsellsyourhomeftphilatelyhortendofinterne" + + "t-dnshinkamigototalhospitalhoteleshinshinotsurgeryhotmailhoyange" + + "rhoylandetroitskypehumanitieshinshirohurdalhurumajis-a-libertari" + + "anhyllestadhyogoris-a-linux-usershintokushimahyugawarahyundaiwaf" + + "uneis-very-badajozis-a-nursembokukitchenis-very-evillageis-very-" + + "goodyearis-very-niceis-very-sweetpepperis-with-thebandovre-eiker" + + "isleofmanaustdaljenv-arubabizjeonnamerikawauejetztrentino-stirol" + + "jevnakershusdecorativeartshiranukamitondabayashiogamagoriziajewe" + + "lryjewishartgalleryjfkddiamondshiraois-a-painterhostsolutionshin" + + "tomikasaharajgorajlljls-sto1jls-sto2jls-sto3jmphonefosshiraokami" + + "tsuejnjaworznotairestaurantrentino-s-tiroljoyentrentino-sud-tiro" + + "ljoyokaichibajddarchitecturealtorlandjpnjprshiratakahagithubuser" + + "contentrentino-sudtiroljurkosaigawakosakaerodromegallupinbarclay" + + "cards3-sa-east-1koseis-a-photographerokuapphilipsynology-disksta" + + "tionkosherbrookegawakoshimizumakiyosemitekoshunantankhakassiakos" + + "ugekotohiradomainsureggioemiliaromagnamsosnowiechurchaseljedugit" + + "-pagespeedmobilizeroticahcesuoloansanokashiharakotourakouhokutam" + + "akiyosunndalkounosupplieshitaramakouyamashikekouzushimashikizuno" + + "kunimilitarykozagawakozakis-a-playershifteditchyouriphoenixn--2s" + + "crj9chromedicaltanissettaishinomakindlecznagasukekozowildlifesty" + + "lekpnkppspdnshizukuishimogosenkrasnikahokutokashikis-a-republica" + + "ncerresearchaeologicaliforniakrasnodarkredstonekristiansandcatsh" + + "izuokamogawakristiansundkrodsheradkrokstadelvaldaostarostwodzisl" + + "awilliamhillkryminamioguni5kumatorinowtvaporcloudkumejimasoykume" + + "nantokigawakunisakis-a-rockstarachowicekunitachiarailwaykunitomi" + + "gusukumamotoyamashikokuchuokunneppubtlshoppingkunstsammlungkunst" + + "unddesignkuokgrouphxn--32vp30haebaruericssongdalenviknakatsugawa" + + "kuregruhostingkurgankurobelaudibleasingleshopwarendalenugkurogim" + + "imatakatsukis-a-socialistdlibestadkuroisoftwarezzokuromatsunais-" + + "a-soxfankurotakikawasakis-a-studentalkushirogawakustanais-a-teac" + + "herkassyno-dshinyoshitomiokamisunagawakusupplynxn--3bst00minamis" + + "anrikubetsupportrentino-sued-tirolkutchanelveruminamitanekutnoku" + + "zumakis-a-techietis-a-llamarnardalkvafjordkvalsundkvamlidlugolek" + + "adenagahamaroyerkvanangenkvinesdalkvinnheradkviteseidatingkvitso" + + "ykwpspectruminamiuonumassivegridkzmisconfusedmishimasudamissilel" + + "uxembourgmisugitokorozawamitourismilevangermitoyoakemiuramiyazur" + + "econtainerdpolicemiyotamanomjondalenmlbfanmontrealestatefarmequi" + + "pmentrentino-suedtirolmonza-brianzapposhoujis-an-actresshioyande" + + "xcloudmonza-e-della-brianzaptokuyamatsumaebashimodatemonzabrianz" + + "aramonzaebrianzamonzaedellabrianzamoonscaleforcemordoviamoriyama" + + "tsumotofukemoriyoshiminamiashigaramormonstermoroyamatsunomortgag" + + "emoscowinbarclays3-us-east-2moseushistorymosjoenmoskeneshowamoss" + + "howtimelhusgardenmosvikharkovanylvenicemoteginowaniigatakamatsuk" + + "awamoviemovimientokyotangotsukisosakitagawamozilla-iotrentinoa-a" + + "digemtranbymuginozawaonsenmuikamiokameokameyamatotakadamukoebenh" + + "avnmulhouseoullensvanguardmunakatanemuncienciamuosattemupiemonte" + + "murmanskhersonmurotorcraftrentinoaadigemusashimurayamatsusakahog" + + "inankokubunjis-an-anarchistoricalsocietymusashinoharamuseetrenti" + + "noalto-adigemuseumverenigingmusicarrdmutsuzawamy-vigorgemy-wangg" + + "ouvicircustomer-ocimdbananarepublic66myactivedirectorymyasustor-" + + "elvdalmycdn77-sslattuminamiyamashirokawanabelembetsukubankharkiv" + + "alleedaostemycloudswitcheshwindmillmydattolocalhistorymyddnsking" + + "mydissentrentinoaltoadigemydobisshikis-an-artistgorymydroboehrin" + + "gerikemydsienarutolgamyeffectrentinos-tirolmyfastblogermyfirewal" + + "lonieruchomoscienceandindustrynmyforuminanomyfritzmyftpaccessigd" + + "almyhome-servermyjinomykolaivareservegame-servermymailermymediap" + + "cistrondheimmobilieniyodogawamyokohamamatsudamypepilotsilkhmelni" + + "tskiyamarylandmypetsimple-urlmyphotoshibalatinombresciamypicture" + + "sirdalmypsxn--3ds443gmysecuritycamerakermyshopblockslupskhmelnyt" + + "skyivaomythic-beastslzmytis-a-bookkeeperspectakashimaritimoldelt" + + "aiwanairforcebetsuikidsmynasushiobarackmazerbaijan-mayen-rootari" + + "beiraogashimadachicagoboatsmolapymntrentinostirolmytuleaprendema" + + "sakihokumakogenebakkeshibechambagriculturennebudejjuedischesapea" + + "kebayernrtrentinosud-tirolmyvncitadeliverydyndns-remotewdyndns-s" + + "erverisignmywireitrentinosudtirolpklabudhabikinokawabarthadselec" + + "trentin-sudtirolplantsnoasakakinokiaplatformshangrilanxessokanag" + + "awaplatter-appimientakinoueplatterpinkhplaystation-cloudplazaplc" + + "itichocolatelevisionissayokkaichiropractichitosetogakushimotogan" + + "ewportkmaxxn--12c1fe0bradescotlandyndns-iparmatta-varjjatksatxn-" + + "-12cfi8ixb8lucerneplumbingoplurinacionalpodhaleviracloudletsoknd" + + "alpodlasiellaktyubinskiptveterinaireadthedocscappgafannefrankfur" + + "trentinosued-tirolpodzonepohlpoivronpokerpokrovskmpspbar2politic" + + "artoonartdecologiapolitiendapolkowicepoltavalle-aostathellewismi" + + "llerpomorzeszowindowskrakowinnersolarssonponpesaro-urbino-pesaro" + + "urbinopesaromasvuotnaritakoelnponypordenonepornporsangerporsangu" + + "geporsgrunnanyokoshibahikariwanumatakkofuefukihaboromskogpoznanp" + + "raxis-a-bruinsfanprdpreservationpresidioprgmrprimetelemarknx-ser" + + "versicherungprincipeprivatizehealthinsuranceprofesionalprogressi" + + "venneslaskerrylogisticsolognepromombetsurfastvps-serveronakanoto" + + "ddenpropertyprotectionprotonetrentinosuedtirolprudentialpruszkow" + + "iosolundbeckomaganeprvcyberlevagangaviikanonjis-an-engineeringpr" + + "zeworskogpulawypupioneerpvhagakhanamigawapvtrentinsud-tirolpwciv" + + "ilaviationpzqldqotoyohashimotoolsomaqponiatowadaqslingqualifioap" + + "pippugliaquickconnectrentinsudtirolquicksytestingquipelementsomn" + + "arviikamisatokaizukamikitayamatsuris-an-entertainerqvcivilisatio" + + "nsveiosvelvikomforbarcelonagawalmartattoolforgebinagisoccertmgra" + + "zimuthatogayachimataiji234lima-cityeatselinogradultateshinanomac" + + "himkentateyamaetnaamesjevuemielno-ipifony-1svizzerasvn-reposor-v" + + "arangerswidnicasadelamonedapliernewmexicodyn-vpndnsorfoldswidnik" + + "kokonoeswiebodzin-butterswiftcoverswinoujscienceandhistoryswissm" + + "arterthanyousynology-dsorocabalestrandabergamoareketunkommunalfo" + + "rbundturystykaniepcetuscanytushuissier-justicetuvalle-daostatics" + + "oundcastronomy-routertuxfamilytwmailvestre-slidreplantationvestr" + + "e-totennishiawakuravestvagoyvevelstadvibo-valentiavibovalentiavi" + + "deovillasouthwest1-uslivinghistoryvinnicaseihicampobassociatest-" + + "iservecounterstrikevinnytsiavipsinaappittsburghofficialvirginiav" + + "irtual-userveexchangevirtualcloudvirtualservervirtualuserveftpiw" + + "atevirtueeldomein-vigorlicevirtuelvisakegawaviterboknowsitallviv" + + "olkenkundenvixn--3hcrj9clanbibaidarmeniavlaanderenvladikavkazimi" + + "erz-dolnyvladimirvlogintoyonezawavminiservervologdanskommunevolv" + + "olkswagentsowavolyngdalvoorloperauniterois-gonevossevangenvotevo" + + "tingvotoyonowiwatsukiyonoshiroomgwloclawekomorotsukagawawmcloudw" + + "mflabspeedpartnersoownextdirectrevisohughesorreisahayakawakamiic" + + "hikawamisatottoris-bytomaritimekeepingworldworse-thandawowitdkom" + + "onow-dnshisognewpdevcloudwpenginepoweredwritesthisblogwroclawith" + + "googleapiszwtcircleverappsphinxn--3e0b707ewtfauskedsmokorsetagay" + + "aseralingenoamishirasatogokasells-for-lessavannahgawuozuwzmiuwaj" + + "imaxn--45q11clic20001wwwfarsundyndns-webhareidsbergentingripexn-" + + "-4gbriminingxn--4it168dxn--4it797kongsbergxn--4pvxs4allxn--54b7f" + + "ta0cclicketcloudcontrolapplicationcloud66xn--55qw42gxn--55qx5dxn" + + "--5js045dxn--5rtp49clinichofunatoriginstitutemasekasaokamiminers" + + "andvikcoromantovalle-d-aostatic-accessanfranciscofreakunemuroran" + + "gecloudyclusterxn--5rtq34kongsvingerxn--5su34j936bgsgxn--5tzm5gx" + + "n--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264cliniquen" + + "oharaxn--80adxhkspjelkavikomatsushimarylhurstjordalshalsenxn--80" + + "ao21axn--80aqecdr1axn--80asehdbarefootballooningjerdrumckinseyol" + + "asitebinordre-landiscoveryggeebizenakanojohanamakinoharaustinnau" + + "mburggfarmerseineastasiamuneues3-ap-southeast-2ix4432-balsan-sue" + + "dtirolkuszczytnord-aurdalipayboltatarantours3-ap-northeast-2xn--" + + "80aswgxn--80augustowithyoutuberspacekitagatargetmyiphosteurxn--8" + + "ltr62koninjambylxn--8pvr4uxn--8y0a063axn--90a3academiamicable-mo" + + "democraciaxn--90aeroportalabamagasakishimabaraogakibichuoxn--90a" + + "ishobarakawagoexn--90azhytomyravendbargainstantcloudfunctionsncf" + + "dishakotanavigationavoirmcpehimejibigawaustraliamusementdllpages" + + "3-ca-central-1xn--9dbhblg6dietritonxn--9dbq2axn--9et52uxn--9krt0" + + "0axn--andy-iraxn--aroport-byaotsurreyxn--asky-iraxn--aurskog-hla" + + "nd-jnbarreauctionfabricagliaricoharuhrxn--avery-yuasakuhokkaidop" + + "aaskvollxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbspreadbetti" + + "ngxn--bck1b9a5dre4clintonoshoesantabarbaraxn--bdddj-mrabdxn--bea" + + "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" + + "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyasakaiminatoyoo" + + "kaneyamazoexn--bjddar-ptarnobrzegyptianxn--blt-elabourxn--bmlo-g" + + "raingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuaca" + + "demy-firewall-gatewayxn--brnnysund-m8accident-investigation-apti" + + "bleadpagesquare7xn--brum-voagatroandinosaurepaircraftingvollomba" + + "rdiademonmouthagebostadxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarr" + + "el-of-knowledgeappleborkaracoldwarszawaustrheimatunduhrennesoyok" + + "osukanraukraanghkeymachineustargardds3-eu-central-1xn--c1avgxn--" + + "c2br7gxn--c3s14minnesotaketakazakis-a-therapistoiaxn--cck2b3barr" + + "ell-of-knowledgehirnufcfanavuotnapleskns3-us-gov-west-1xn--cckwc" + + "xetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-int" + + "o-animeinforumzxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a" + + "2oxn--correios-e-telecomunicaes-ghc29axn--czr694barsycenterprise" + + "sakikuchikuseikarugamvik-serverrankoshigayachiyodaejeonbukcoalph" + + "a-myqnapcloud-fr1xn--czrs0trogstadxn--czru2dxn--czrw28barsyonlin" + + "ewhampshirealtydalvdalaskanittedallasalleangaviikaascolipicenodu" + + "members3-us-west-1xn--d1acj3bashkiriauthordalandgcapebretonamicr" + + "osoftbank12xn--d1alfaromeoxn--d1atromsakatamayufuelblagrarchaeol" + + "ogyeongbuk0xn--d5qv7z876clothingdustdataitogitsuldalvivanovoldax" + + "n--davvenjrga-y4axn--djrs72d6uyxn--djty4konskowolayangrouphotogr" + + "aphysioxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e" + + "1a4cn-northwest-1xn--eckvdtc9dxn--efvn9spydebergxn--efvy88haibar" + + "akitahatakanezawaxn--ehqz56nxn--elqq16hair-surveillancexn--eveni" + + "-0qa01gaxn--f6qx53axn--fct429konsulatrobeepilepsykkylvenetodayxn" + + "--fhbeiarnxn--finny-yuaxn--fiq228c5hsrlxn--fiq64basicservercelli" + + "guriautomotiveconomiasakuchinotsuchiurakawakuyabukikonaikawachin" + + "aganoharamcoachampionshiphoptobamadridnbloggerevistaples3-eu-wes" + + "t-1xn--fiqs8srvarggatrentinsuedtirolxn--fiqz9storegontrailroadxn" + + "--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-" + + "cesena-fcbsstorfjordxn--forlcesena-c8axn--fpcrj9c3dxn--frde-gran" + + "drapidstorjcloud-ver-jpchungnamdalseidfjordyndns-picsannohelplfi" + + "nancialuxuryxn--frna-woaraisaijosoyrorostpetersburgxn--frya-hrax" + + "n--fzc2c9e2cngriwataraidyndns-wikiraxn--fzys8d69uvgmailxn--g2xx4" + + "8cnpyatigorskodjeepsondriodejaneirockartuzyxn--gckr3f0fbsbxn--1c" + + "k2e1bar0emmafann-arboretumbriamallamaceiobbcg12038xn--gecrj9cnsa" + + "ntacruzsewhalingroks-thisayamanobeokalmykiaxn--ggaviika-8ya47hak" + + "atanorthwesternmutualxn--gildeskl-g0axn--givuotna-8yasugitpagefr" + + "ontappixolinoxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050i" + + "s-into-carshirahamatonbetsurnadalxn--gmqw5axn--h-2failxn--h1aegh" + + "akodatexn--h2breg3evenestreams1xn--h2brj9c8cntoyotaparsantafedje" + + "ffersonxn--h3cuzk1discountysnestudioxn--hbmer-xqaxn--hcesuolo-7y" + + "a35basilicataniautoscanadaeguambulancechirealmpmnaval-d-aosta-va" + + "lleyokoteastcoastaldefenceastus2xn--hery-iraxn--hgebostad-g3axn-" + + "-hkkinen-5waxn--hmmrfeasta-s4accident-prevention-k3studynamische" + + "s-dnsopotrentinsued-tirolxn--hnefoss-q1axn--hobl-iraxn--holtlen-" + + "hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1" + + "b6b1a6a2exn--imr513nxn--indery-fyasuokannamihoboleslawiecolognew" + + "spaperxn--io0a7is-into-cartoonshirakokaminokawanishiaizubangexn-" + + "-j1aefbx-ostrowiechoseiroumuenchenissedaluroyxn--j1amhakonexn--j" + + "6w193gxn--jlq480n2rgxn--jlq61u9w7basketballfinanzgorzeleccollect" + + "ionayorovigovtaxihuanfshostyhostingjerstadotsuruokakegawaveroyke" + + "ngerdalces3-eu-west-2xn--jlster-byatominamidaitomanchesterxn--jr" + + "peland-54axn--jvr189mintereisenxn--k7yn95exn--karmy-yuaxn--kbrq7" + + "oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dx" + + "n--kltx9axn--klty5xn--3oq18vl8pn36axn--koluokta-7ya57hakubahcavu" + + "otnagaivuotnagaokakyotambabyenglandxn--kprw13dxn--kpry57dxn--kpu" + + "t3is-into-gamessinazawaxn--krager-gyatsukanoyaltakasugais-leetre" + + "ntino-aadigexn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--" + + "krjohka-hwab49jdevcloudjiffylkesbiblackbaudcdn-edgestackhero-net" + + "workinggroupaashorokanaiexn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-" + + "fyatsushiroxn--kvnangen-k0axn--l-1fairwindstuff-4-salexn--l1acce" + + "ntureklamborghinikolaeventstufftoread-booksnesor-odalxn--laheadj" + + "u-7yawaraxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika" + + "-52batochiokinoshimaintenanceobninskaragandavocatanzarowbq-aursk" + + "og-holandingdyniajudaicadaquest-mon-blogueurovision-riopretobish" + + "imagazinekobayashikshacknetnedalaheadjudygarlanddnslivelanddnss3" + + "-ap-southeast-1xn--lesund-huaxn--lgbbat1ad8jdfastlylbanzaiclouda" + + "ppscbgivingjemnes3-fips-us-gov-west-1xn--lgrd-poacctromsojamison" + + "xn--lhppi-xqaxn--linds-pramericanartrusteexn--lns-qlaquilanstutt" + + "gartrentoyonakagyokutoyakolobrzegersundxn--loabt-0qaxn--lrdal-sr" + + "axn--lrenskog-54axn--lt-liacolonialwilliamsburgrondarxn--lten-gr" + + "anexn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2dde" + + "susakis-certifiedunetlifyis-a-musicianxn--mgb9awbfbxostrowwlkpmg" + + "ruexn--mgba3a3ejtrvaroyxn--mgba3a4f16axn--mgba3a4fra1-dexn--mgba" + + "7c0bbn0axn--mgbaakc7dvfedorainfracloudfrontdoorxn--mgbaam7a8haku" + + "is-a-greenxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00batsfjor" + + "diskussionsbereichattanooganordeste-idcasertairanzanhktcmemergen" + + "cyahikobeardubaiduckdns3-us-west-2xn--mgbai9azgqp6jejuniperxn--m" + + "gbayh7gpaleoxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgber" + + "p4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgb" + + "pl2fhappouxn--mgbqly7c0a67fbcoloradoplateaudiopsysantamariakexn-" + + "-mgbqly7cvafr-1xn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhausp" + + "osts-and-telecommunicationswedeniwaizumiotsukumiyamazonawsmpplan" + + "etariumemorialillyombolzano-altoadigeometre-experts-comptables3-" + + "website-ap-northeast-1xn--mgbx4cd0abbvieeexn--mix082fedorapeople" + + "gallodingenxn--mix891fedoraprojectozsdeportevadsobetsulikes-pied" + + "monticellocalzonexn--mjndalen-64axn--mk0axin-dslgbtrycloudflarep" + + "bodynamic-dnsortlandxn--mk1bu44columbusheyxn--mkru45is-lostre-to" + + "teneis-a-nascarfanxn--mlatvuopmi-s4axn--mli-tlarvikonyvelolipopu" + + "sinteractivegashisuifuettertdasnetzxn--mlselv-iuaxn--moreke-juax" + + "n--mori-qsakuragawaxn--mosjen-eyawatahamaxn--mot-tlavagiskexn--m" + + "re-og-romsdal-qqbuseranishiaritakurashikis-not-certifiedxn--msy-" + + "ula0hakusanagochijiwadellogliastradingxn--mtta-vrjjat-k7aflaksta" + + "daokagakicks-assnasaarlandxn--muost-0qaxn--mxtq1misakis-an-accou" + + "ntantshiojirishirifujiedaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3px" + + "u8komvuxn--30rr7yxn--nit225kooris-a-personaltrainerxn--nmesjevue" + + "mie-tcbalsan-sudtirollagdenesnaaseinet-freaksusonoxn--nnx388axn-" + + "-nodessakurais-savedxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn" + + "--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn-" + + "-nyqy26axn--o1achernihivgubsuzakananiikappuboliviajessheimpertri" + + "xcdn77-secureggiocalabriaxn--o3cw4haldenxn--o3cyx2axn--od0algxn-" + + "-od0aq3beneventoeidskoguchikuzenvironmentalconservationionjukudo" + + "yamaizuruovat-band-campaniavoues3-eu-west-3utilities-1kappchizip" + + "6116-b-datacentermezgorabogadobeaemcloud-dealerimo-i-rana4u2-loc" + + "alhostrodawarabruzzoologicalvinklein-addrammenuorochestereport3l" + + "3p0rtashkentatamotors3-ap-northeast-1337xn--ogbpf8flekkefjordxn-" + + "-oppegrd-ixaxn--ostery-fyaxn--osyro-wuaxn--otu796dxn--p1acfeiraq" + + "uarelleaseeklogesaveincloudxn--p1ais-slickazteleportlligatrentin" + + "o-alto-adigexn--pgbs0dhlxn--porsgu-sta26fermochizukirkenesaves-t" + + "he-whalessandria-trani-barletta-andriatranibarlettaandriaxn--pss" + + "u33lxn--pssy2uxn--q9jyb4communewyorkshirebungoonordkappartintuit" + + "oyotomiyazakinuyamashinatsukigatakasakitauraxn--qcka1pmcdirxn--q" + + "qqt11misasaguris-an-actorxn--qxa6axn--qxamsterdamnserverbaniaxn-" + + "-rady-iraxn--rdal-poaxn--rde-ulavangenxn--rdy-0nabaris-uberleetr" + + "entino-altoadigexn--rennesy-v1axn--rhkkervju-01aferraraxn--rholt" + + "-mragowoodsidevelopmentrysiljanxn--rhqv96gxn--rht27zxn--rht3dxn-" + + "-rht61exn--risa-5nativeamericanantiquesuzukanazawaxn--risr-iraxn" + + "--rland-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31halsaitamatsuku" + + "ris-a-gurusrcfastly-terrariuminamiechizenxn--rovu88bentleyomitan" + + "observerxn--rros-granvindafjordxn--rskog-uuaxn--rst-0naturalhist" + + "orymuseumcenterxn--rsta-franamizuholdingsmall-webhostingxn--rvc1" + + "e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithammarfeastafricarbo" + + "nia-iglesias-carboniaiglesiascarboniaxn--s9brj9community-prochow" + + "icexn--sandnessjen-ogbeppublishproxyzjampagexlimanowarudaxarnetf" + + "lixilovecollegefantasyleaguernseyokozeatonsbergivestbytemarkanza" + + "kiwielunnerhcloudiscourses3-external-1xn--sandy-yuaxn--sdtirol-n" + + "2axn--seral-lraxn--ses554gxn--sgne-graphoxn--42c2d9axn--skierv-u" + + "tazasuzukis-foundationxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn" + + "--sknland-fxaxn--slat-5naturalsciencesnaturellesvalbardunloppaci" + + "ficivilizationxn--slt-elabcn-north-1xn--smla-hraxn--smna-gratang" + + "entlentapisa-geekopervikfh-muensterxn--snase-nraxn--sndre-land-0" + + "cbeskidyn-ip24xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fr" + + "on-q1axn--sr-odal-q1axn--sr-varanger-ggbestbuyshouses3-website-a" + + "p-southeast-1xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bull" + + "s-fanxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbetainabo" + + "xfusejnyanagawaltervistaikikugawashingtondclk3xn--stre-toten-zcb" + + "hzcasinorddalimitedisrechtranaharimalselvendrellimoliseminempres" + + "ashibetsukuibmdivtasvuodnakaiwamizawaweddingjesdalivornoceanogra" + + "phiquemrxn--t60b56axn--tckwebspacexn--tiq49xqyjelasticbeanstalka" + + "zunotteroyxn--tjme-hraxn--tn0agrinetbankoryokamikawanehonbetsuru" + + "taharaxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tiro" + + "l-rzbieidsvollombardynaliasnesoddenmarkhangelskjakdnepropetrovsk" + + "iervaapsteiermarkarasjohkamikoaniihamatamakawajimarriottcp4xn--t" + + "rentin-sdtirol-7vbrplsbxn--45br5cylxn--trentino-sd-tirol-c3biela" + + "washtenawdev-myqnapcloudcontrolledekagaminogifts3-website-ap-sou" + + "theast-2xn--trentino-sdtirol-szbiellaakesvuemielecceu-1xn--trent" + + "inosd-tirol-rzbieszczadygeyachts3-website-eu-west-1xn--trentinos" + + "dtirol-7vbievathletajimabaridagawakkanaibetsubamericanfamilydscl" + + "ouderacingjovikarasjokarasuyamarshallstatebankarateu-2xn--trenti" + + "nsd-tirol-6vbifukagawassamukawatarikuzentakatainaioirasebastopol" + + "ogyeongnamegawafaicloudineat-urlomzaporizhzheguriitatebayashijon" + + "awateu-3xn--trentinsdtirol-nsbigv-infolldalondonetskaratsuginami" + + "katagamilanoticias3-website-sa-east-1xn--trgstad-r1axn--trna-woa" + + "xn--troms-zuaxn--tysvr-vraxn--uc0atvestfoldxn--uc0ay4axn--uist22" + + "hamurakamigoris-a-hard-workershawaiijimarcheapigeelvinckaufenxn-" + + "-uisz3gxn--unjrga-rtarumizusawaxn--unup4yxn--uuwu58axn--vads-jra" + + "xn--valle-aoste-ebbtunesorumincomcastresindevicenzaporizhzhiaxn-" + + "-valle-d-aoste-ehbodoes-it1-eurxn--valleaoste-e7axn--valledaoste" + + "-ebbvacationsvcivilwarmiastagets-itmparochernigovernmentoyosatoy" + + "okawaxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctbihorolog" + + "yonagoyaxn--vermgensberatung-pwblogoipizzaxn--vestvgy-ixa6oxn--v" + + "g-yiabkhaziaxn--vgan-qoaxn--vgsy-qoa0jelenia-goraxn--vgu402comob" + + "araxn--vhquvestnesouthcarolinarvikomakiyosatokamachintaifun-dnsa" + + "liashishikuis-a-patsfanxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xq" + + "adxn--vry-yla5gxn--vuq861bikedaemoneyonagunicloudivttasvuotnakam" + + "agayahooguyoriikarelianceu-4xn--w4r85el8fhu5dnraxn--w4rs40lxn--w" + + "cvs22dxn--wgbh1comparemarkerryhotelsantoandreamhostersanukinvest" + + "mentsaobernardownloadyndns-workshopitsitexasaogoncasacamdvrcampi" + + "nagrandebuilderschlesischesaotomelbournexn--wgbl6axn--xhq521bilb" + + "aokinawashirosatochigiessensiositechnologyoshiokanumazuryukiiyam" + + "anouchikuhokuryugasakitashiobaraxn--xkc2al3hye2axn--xkc2dl3a5ee0" + + "handsonyoursidelmenhorstalbanshellaspeziaxn--y9a3aquariumisawaxn" + + "--yer-znaturbruksgymnxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn-" + + "-45brj9cldmailuzernxn--ystre-slidre-ujbillustrationredumbrellahp" + + "piacenzachpomorskienhlfanhs3-website-us-east-1xn--zbx025dxn--zf0" + + "ao64axn--zf0avxlxn--zfr164biocelotenkawaxnbayxz" // nodes is the list of nodes. Each node is represented as a uint32, which // encodes the node's children, wildcard bit and node type (as an index into @@ -528,1808 +535,1812 @@ const text = "9guacuiababia-goracleaningroks-theatree12hpalermomahachijolstere" // [15 bits] text index // [ 6 bits] text length var nodes = [...]uint32{ - 0x32f643, - 0x3b5c84, - 0x2f7846, - 0x2ed303, - 0x2ed306, - 0x391ec6, - 0x3ba683, - 0x242cc4, - 0x2089c7, - 0x2f7488, + 0x20bc43, + 0x25d9c4, + 0x2f8cc6, + 0x217243, + 0x217246, + 0x38e886, + 0x3bb603, + 0x2392c4, + 0x3a15c7, + 0x2f8908, 0x1a000c2, - 0x1f3c187, - 0x37b0c9, - 0x39a04a, - 0x39a04b, - 0x231983, - 0x234b85, - 0x2202642, - 0x280004, - 0x2f79c3, - 0x202645, - 0x2608c02, - 0x365e83, - 0x2a15d84, - 0x3b5585, - 0x2e12282, - 0x27520e, - 0x251a43, - 0x3adec6, - 0x3207d42, - 0x306e07, - 0x237306, - 0x3601f82, - 0x26d143, - 0x334e46, - 0x360f48, - 0x28e806, - 0x276804, - 0x3a00ac2, - 0x34cd89, - 0x222087, - 0x3b4c86, - 0x370f49, - 0x3c8608, - 0x354f84, - 0x25b9c6, - 0x3cdd86, - 0x3e029c2, - 0x2a7f06, - 0x24394f, - 0x27f04e, - 0x221684, - 0x2d4205, - 0x32f545, - 0x215589, - 0x23d909, - 0x335647, - 0x355246, - 0x203583, - 0x42272c2, - 0x22ce03, - 0x2937ca, - 0x4601ac3, - 0x3e1a45, - 0x239202, - 0x392449, - 0x4e03502, - 0x209784, - 0x2f4406, - 0x28fac5, - 0x3732c4, - 0x56263c4, - 0x233f03, - 0x233f04, - 0x5a02e42, - 0x385d04, - 0x5e83a84, - 0x25d6ca, - 0x6200882, - 0x229547, - 0x27e508, - 0x7a07282, - 0x334a47, - 0x2ce984, - 0x2ce987, - 0x3dbac5, - 0x390e07, - 0x34b706, - 0x2a1184, - 0x36a285, - 0x257e87, - 0x8e07cc2, - 0x2a8083, - 0x9210642, - 0x3b3f43, - 0x96074c2, - 0x2173c5, - 0x9a00202, - 0x375d04, - 0x2ef285, - 0x2215c7, - 0x25d04e, - 0x2ba484, - 0x29a884, - 0x20ebc3, - 0x35c549, - 0x2c17cb, - 0x2c75c8, - 0x32cc48, - 0x3313c8, - 0x3e1f48, - 0x370d8a, - 0x390d07, - 0x356606, - 0x9e3de82, - 0x26f0c3, - 0x3d2103, - 0x3d3c84, - 0x26f103, - 0x361e43, - 0x1737f82, - 0xa206c02, - 0x284a05, - 0x2bc146, - 0x234944, - 0x3aee07, - 0x26bdc6, - 0x2cd644, - 0x3bdc87, - 0x20d483, - 0xa6d7f02, - 0xab0bf02, - 0xae7b6c2, - 0x30bcc6, - 0xb200282, - 0x2a4d45, - 0x3394c3, - 0x3d5bc4, - 0x2f9284, - 0x2f9285, - 0x3dff03, - 0xb64ac43, - 0xba05102, - 0x2093c5, - 0x2093cb, - 0x2b2a0b, - 0x204cc4, - 0x209849, - 0x20ae84, - 0xbe0b742, - 0x20c303, - 0x20e1c3, - 0xc207f42, - 0x2f2aca, - 0xc608a02, - 0x280285, - 0x2e858a, - 0x242644, - 0x210143, - 0x210a04, - 0x211943, - 0x211944, - 0x211947, - 0x212685, - 0x213086, - 0x213386, - 0x214683, - 0x218248, - 0x217143, - 0xca0cfc2, - 0x266308, - 0x28ea8b, - 0x2208c8, - 0x221106, - 0x222887, - 0x225048, - 0xda0aac2, - 0xde1c942, - 0x272d48, - 0x20f1c7, - 0x20f705, - 0x310f88, - 0xe302e48, - 0x2b0ec3, - 0x22bec4, - 0x391f42, - 0xe62c0c2, - 0xea06cc2, - 0xf22c442, - 0x22c443, - 0xf60cf02, - 0x316343, - 0x332284, - 0x214803, - 0x354f44, - 0x32430b, - 0x20cf03, - 0x2f2086, - 0x25d544, - 0x2c888e, - 0x377205, - 0x268a88, - 0x3adfc7, - 0x3adfca, - 0x231503, - 0x2355c7, - 0x2c1985, - 0x231504, - 0x253a06, - 0x253a07, - 0x31dd84, - 0xfb109c4, - 0x25d384, - 0x25d386, - 0x252684, - 0x3c2f86, - 0x20f4c3, - 0x20f4c8, - 0x210448, - 0x29a843, - 0x2f2a83, - 0x343c04, - 0x35c0c3, - 0x1020cdc2, - 0x106bd282, - 0x205083, - 0x243fc6, - 0x25bac3, - 0x274784, - 0x10a30c82, - 0x25ce43, - 0x316a83, - 0x214dc2, - 0x10e00d42, - 0x2d3286, - 0x235a07, - 0x229bc7, - 0x3c0d85, - 0x21cc84, - 0x2a0dc5, - 0x30f247, - 0x2e5a49, - 0x2ee886, - 0x3032c6, - 0x11602282, - 0x307a08, - 0x31a706, - 0x2b1bc5, - 0x30c3c7, - 0x30dcc4, - 0x30dcc5, - 0x11a02284, - 0x202288, - 0x11e09482, - 0x12200482, - 0x275946, - 0x200488, - 0x337b45, - 0x34d686, - 0x350448, - 0x360a48, - 0x12608cc5, - 0x12a15e84, - 0x215e87, - 0x12e0a902, - 0x13361e82, - 0x14612402, - 0x2f4505, - 0x14e8af45, - 0x269506, - 0x327ec7, - 0x3b26c7, - 0x1522ea43, - 0x32bb87, - 0x3c17c8, - 0x2162ed49, - 0x2753c7, - 0x22f487, - 0x22fe88, - 0x230686, - 0x231006, - 0x231c4c, - 0x23294a, - 0x232d47, - 0x234a4b, - 0x235847, - 0x23584e, - 0x21a36344, - 0x236704, - 0x238a07, - 0x260b47, - 0x23d046, - 0x23d047, - 0x335887, - 0x226dc3, - 0x21e2c982, - 0x23e846, - 0x23e84a, - 0x24004b, - 0x241287, - 0x241d05, - 0x242183, - 0x2423c6, - 0x2423c7, - 0x2fa483, - 0x22200102, - 0x2435ca, - 0x2277c682, - 0x22b49682, - 0x22e40902, - 0x23237402, - 0x246ac5, - 0x247344, - 0x23e0da02, - 0x385d85, - 0x240643, - 0x299645, - 0x201ec4, - 0x21dd04, - 0x2d4e46, - 0x251dc6, - 0x2095c3, - 0x3cce44, - 0x37f243, - 0x24e0f982, - 0x216404, - 0x216406, - 0x222c05, - 0x2482c6, - 0x30c4c8, - 0x265e44, - 0x294208, - 0x232fc5, - 0x259508, - 0x2d0686, - 0x30e0c7, - 0x269c04, - 0x26269c06, - 0x26622383, - 0x3a47c3, - 0x2f7108, - 0x38bc44, - 0x26b32ec7, - 0x2e6946, - 0x2e6949, - 0x369588, - 0x37d748, - 0x389c84, - 0x204583, - 0x240702, - 0x2724e682, - 0x27626282, - 0x205c83, - 0x27a08b02, - 0x2fa404, - 0x2790c6, - 0x21a203, - 0x2c3d47, - 0x3b3a83, - 0x2ba548, - 0x21edc5, - 0x259f83, - 0x2ef205, - 0x2ef344, - 0x30d9c6, - 0x220006, - 0x221506, - 0x2f4c84, - 0x235c03, - 0x27e11702, - 0x282351c5, - 0x200843, - 0x28a0da82, - 0x22f203, - 0x3233c5, - 0x28e33fc3, - 0x29633fc9, - 0x29a00942, - 0x2a20fc42, - 0x292845, - 0x2166c6, - 0x2ada86, - 0x2e9f08, - 0x2e9f0b, - 0x346d4b, - 0x3c0f85, - 0x2d8489, - 0x1600b42, - 0x39b4c8, - 0x209b44, - 0x2aa031c2, - 0x34ca03, - 0x2b260d06, - 0x2b600fc2, - 0x3619c8, - 0x2ba293c2, - 0x33d78a, - 0x2bedd983, - 0x2c77b706, - 0x397c88, - 0x242986, - 0x38dc47, - 0x243b47, - 0x3cd90a, - 0x2426c4, - 0x365c04, - 0x37a709, - 0x2cbb1905, - 0x275246, - 0x20f3c3, - 0x24e104, - 0x2ced8384, - 0x3b4447, - 0x2d233647, - 0x25ce84, - 0x3b2b85, - 0x2695c8, - 0x3a4c87, - 0x3a9847, - 0x2d60fa02, - 0x26acc4, - 0x2981c8, - 0x248604, - 0x24bb44, - 0x24bf45, - 0x24c087, - 0x2da81989, - 0x21eb04, - 0x24d4c9, - 0x24d708, - 0x24de84, - 0x24de87, - 0x2de4e483, - 0x24f8c7, - 0x2e201282, - 0x16be142, - 0x250386, - 0x251187, - 0x2515c4, - 0x252dc7, - 0x254047, - 0x254603, - 0x2ba882, - 0x20e782, - 0x32cd43, - 0x3ce884, - 0x3ce88b, - 0x2e72cd48, - 0x259a04, - 0x255d05, - 0x2576c7, - 0x20e785, - 0x31d28a, - 0x259943, - 0x2ea091c2, - 0x21d304, - 0x260909, - 0x264e43, - 0x264f07, - 0x28c949, - 0x2091c8, - 0x26f783, - 0x283187, - 0x283b89, - 0x26a503, - 0x28b544, - 0x28cb89, - 0x290cc6, - 0x2e9d03, - 0x207c82, - 0x23cc03, - 0x2bdf47, - 0x23cc05, - 0x2c15c6, - 0x296d84, - 0x365485, - 0x2844c3, - 0x2148c6, - 0x27eb43, - 0x209a42, - 0x24ac04, - 0x2ee08882, - 0x2f368483, - 0x2f6033c2, - 0x249f83, - 0x20dc44, - 0x303b07, - 0x348546, - 0x27cec2, - 0x2fa04d82, - 0x30c6c4, - 0x30211ac2, - 0x30621c42, - 0x2f0f04, - 0x2f0f05, - 0x363e85, - 0x260286, - 0x30a06d42, - 0x20f8c5, - 0x219a45, - 0x21bb43, - 0x225d86, - 0x227545, - 0x265d82, - 0x360685, - 0x30bc44, - 0x265d83, - 0x265fc3, - 0x30e08f42, - 0x2e4dc7, - 0x24d904, - 0x24d909, - 0x24e004, - 0x28adc3, - 0x2b9808, - 0x3128adc4, - 0x28adc6, - 0x2a49c3, - 0x256543, - 0x266a83, - 0x316fb9c2, - 0x308982, - 0x31a00642, - 0x33b208, - 0x3e0108, - 0x3bef86, - 0x351a05, - 0x303c85, - 0x207d87, - 0x31e46145, - 0x23ca82, - 0x3229cac2, - 0x32600042, - 0x27db48, - 0x31a645, - 0x2feac4, - 0x248205, - 0x2497c7, - 0x388944, - 0x2434c2, - 0x32a0b2c2, - 0x352084, - 0x228b07, - 0x292d07, - 0x390dc4, - 0x3d2c03, - 0x29a784, - 0x29a788, - 0x231346, - 0x25388a, - 0x2f5844, - 0x299e48, - 0x235384, - 0x222986, - 0x29ca84, - 0x2f4806, - 0x24dbc9, - 0x2abc07, - 0x213ec3, - 0x32e5b542, - 0x3a2503, - 0x20b942, - 0x33205742, - 0x34c006, - 0x386d08, - 0x2adc07, - 0x30b109, - 0x2addc9, - 0x2b0405, - 0x2b2d89, - 0x2b3cc5, - 0x2b4b05, - 0x2b5f88, - 0x33611b04, - 0x33a54747, - 0x22f843, - 0x2b6187, - 0x22f846, - 0x2b6987, - 0x2ab845, - 0x22f0c3, - 0x33e32702, - 0x210384, - 0x3422cb02, - 0x3460b5c2, - 0x314d06, - 0x27e485, - 0x2b8ec7, - 0x356e03, - 0x361dc4, - 0x21d783, - 0x355e03, - 0x34a09582, - 0x35208fc2, - 0x391fc4, - 0x32ae03, - 0x305545, - 0x3560f782, - 0x35e02182, - 0x305d46, - 0x2069c4, - 0x30a304, - 0x30a30a, - 0x366005c2, - 0x2160c3, - 0x21528a, - 0x219008, - 0x36a0e704, - 0x2005c3, - 0x36e0a2c3, - 0x26a749, - 0x247109, - 0x2c3e46, - 0x372191c3, - 0x2191c5, - 0x21e7cd, - 0x22db06, - 0x2e61cb, - 0x37607542, - 0x358448, - 0x3b20c202, - 0x3b603082, - 0x39e285, - 0x3ba04b82, - 0x2af7c7, - 0x205603, - 0x227708, - 0x3be022c2, - 0x25ef84, - 0x21fc83, - 0x354a05, - 0x240746, - 0x227104, - 0x2f2a43, - 0x384583, - 0x3c206142, - 0x3c0f04, - 0x2bab45, - 0x2bdb47, - 0x281403, - 0x2be4c3, - 0x1616fc2, - 0x2be783, - 0x2beb83, - 0x3c600e02, - 0x33f584, + 0x1f3cf47, + 0x376f09, + 0x397eca, + 0x397ecb, + 0x23a2c3, + 0x23cf05, + 0x22070c2, + 0x2f5304, + 0x2f8e43, + 0x30eb85, + 0x260ad42, + 0x360f03, + 0x2a58bc4, + 0x30f345, + 0x2e13602, + 0x21638e, + 0x25c3c3, + 0x3b3dc6, + 0x3202302, + 0x3096c7, + 0x23fa86, + 0x3606a82, + 0x28e183, 0x235e06, - 0x2e6503, - 0x2bf943, - 0x3ca4b202, - 0x24b208, - 0x2c0904, - 0x33f306, - 0x253e87, - 0x29a946, - 0x38bbc4, - 0x4ae03102, - 0x22f70b, - 0x30180e, - 0x217a8f, - 0x2be183, - 0x4b65a642, - 0x1641882, - 0x4ba03802, - 0x2563c3, - 0x20ee83, - 0x21b306, - 0x34e0c6, - 0x395dc7, - 0x3d2484, - 0x4be16802, - 0x4c21f2c2, - 0x2e2845, - 0x33dec7, - 0x2c2506, - 0x4c669782, - 0x3626c4, - 0x2c7a83, - 0x4ca06902, - 0x4cf78103, - 0x2c9284, - 0x2cde89, - 0x4d2d5182, - 0x4d60a342, - 0x248985, - 0x4dad5682, - 0x4de01582, - 0x364e47, - 0x37b34b, - 0x243905, - 0x258509, - 0x270906, - 0x4e201584, - 0x206d89, - 0x2d6a07, - 0x22a147, - 0x22c743, - 0x2f0d86, - 0x352f87, - 0x21df43, - 0x2a87c6, - 0x4ea29a82, - 0x4ee34242, - 0x2061c3, - 0x392605, - 0x303147, - 0x236d06, - 0x23cb85, - 0x24d884, - 0x2aad45, - 0x393dc4, - 0x4f201482, - 0x2e9184, - 0x247004, - 0x24700d, - 0x2ee249, - 0x22ca48, - 0x248c04, - 0x347fc5, - 0x204407, - 0x206504, - 0x26be87, - 0x267a45, - 0x4f60a284, - 0x2c6045, - 0x201484, - 0x253306, - 0x394fc5, - 0x4faa4c82, - 0x2758c3, - 0x357643, - 0x35d804, - 0x35d805, - 0x39d506, - 0x23ccc5, - 0x368e84, - 0x364343, - 0x4fe17e86, - 0x21a8c5, - 0x21e2c5, - 0x327dc4, - 0x2f58c3, - 0x2f58cc, - 0x502bdc42, - 0x50600e82, - 0x50a02702, - 0x21e1c3, - 0x21e1c4, - 0x50e0a682, - 0x3b9e88, - 0x2c1685, - 0x2d5ec4, - 0x230e86, - 0x51204202, - 0x5162d582, - 0x51a00c42, - 0x296545, - 0x2f4b46, - 0x265684, - 0x335386, - 0x229306, - 0x25bfc3, - 0x51e9068a, - 0x2815c5, - 0x293783, - 0x209f06, - 0x209f09, - 0x223fc7, - 0x2b7fc8, - 0x3c84c9, - 0x2e5bc8, - 0x22dd86, - 0x20eb83, - 0x52208c82, - 0x32d248, - 0x52606a02, - 0x52a0b982, - 0x215f83, - 0x2ee705, - 0x2a0484, - 0x300689, - 0x3c04c4, - 0x20bc08, - 0x5320b983, - 0x53724784, - 0x216708, - 0x246f47, - 0x53b49242, - 0x370242, - 0x32f4c5, - 0x385509, - 0x23cb03, - 0x31bb84, - 0x3424c4, - 0x204483, - 0x28698a, - 0x53f93b42, - 0x542101c2, - 0x2d7e83, - 0x396083, - 0x162dfc2, - 0x26e8c3, - 0x54615782, - 0x54a00bc2, - 0x54e17544, - 0x217546, - 0x271a44, - 0x27d983, - 0x289683, - 0x55200bc3, - 0x2403c6, - 0x3d5d85, - 0x2dbe07, - 0x2dbd46, - 0x2dcd88, - 0x2dcf86, - 0x202a04, - 0x2a21cb, - 0x2dfa03, - 0x2dfa05, - 0x20e982, - 0x365142, - 0x55646b42, - 0x55a0a942, - 0x216843, - 0x55e720c2, - 0x2720c3, - 0x2e0483, - 0x56603e42, - 0x56ae4806, - 0x258d46, - 0x56ee4942, - 0x5720e202, - 0x57666002, - 0x57a0cac2, - 0x57e0e882, - 0x58203882, - 0x20c543, - 0x3af006, - 0x5861e484, - 0x21620a, - 0x3b0106, - 0x281284, - 0x208143, - 0x59216102, - 0x203182, - 0x241c83, - 0x59617fc3, - 0x3c49c7, - 0x394ec7, - 0x5c245ec7, - 0x37efc7, - 0x228803, - 0x22880a, - 0x237bc4, - 0x31ef04, - 0x31ef0a, - 0x22eb85, - 0x5c60e742, - 0x250343, - 0x5ca00602, - 0x24dfc3, - 0x3a24c3, - 0x5d200582, - 0x3c1744, - 0x207f84, - 0x3dcc45, - 0x32e9c5, - 0x2f6786, - 0x30a546, - 0x5d63bec2, - 0x5da02542, - 0x301dc5, - 0x258a52, - 0x363486, - 0x291043, - 0x31c146, - 0x2b6585, - 0x1605cc2, - 0x65e0fec2, - 0x377b43, - 0x20fec3, - 0x39f483, - 0x66201102, - 0x20f443, - 0x666035c2, - 0x207583, - 0x3dcf88, - 0x269543, - 0x2b0286, - 0x3da087, - 0x34f0c6, - 0x34f0cb, - 0x2811c7, - 0x2f6f04, - 0x66e00c02, - 0x2c1505, - 0x67217f83, - 0x235fc3, - 0x332505, - 0x34a9c3, - 0x67b4a9c6, - 0x3d048a, - 0x2a98c3, - 0x2371c4, - 0x2003c6, - 0x2b1fc6, - 0x67e3e083, - 0x273987, - 0x26a647, - 0x2a3e85, - 0x2b2346, - 0x21a903, - 0x6aa25fc3, - 0x6ae00a82, - 0x6b20e9c4, - 0x213b49, - 0x226685, - 0x266e44, - 0x35a3c8, - 0x241e85, - 0x6b642285, + 0x2f4148, + 0x295bc6, + 0x3c7c04, + 0x3a00ac2, + 0x34b449, + 0x220787, + 0x32e5c6, + 0x36ba09, + 0x3ce888, + 0x210944, + 0x2acb06, + 0x2076c6, + 0x3e02002, + 0x38cc46, + 0x24d68f, + 0x3cdb8e, + 0x22b1c4, + 0x234c85, + 0x330d45, + 0x3aaa09, 0x247e89, - 0x3b4d43, - 0x349604, - 0x6ba05b42, - 0x216a43, - 0x6be75c42, - 0x275c46, - 0x167ce82, - 0x6c20c182, - 0x296448, - 0x29a743, - 0x2c5f87, - 0x384605, - 0x2be805, - 0x2be80b, - 0x2f0b06, - 0x2bea06, - 0x2804c4, - 0x211c86, - 0x6c6f1608, - 0x287403, - 0x25be43, - 0x25be44, - 0x2f0184, - 0x2f8747, - 0x318245, - 0x6cb20202, - 0x6ce04fc2, - 0x6d604fc5, - 0x2c6a84, - 0x2f114b, - 0x2f9188, - 0x306444, - 0x6da2c8c2, - 0x6de2d782, - 0x3c2f03, - 0x2faf84, - 0x2fb245, - 0x2fbd47, - 0x6e2fe604, - 0x390ec4, - 0x6e616982, - 0x380fc9, - 0x2ffa45, - 0x243bc5, - 0x3005c5, - 0x6ea16983, - 0x237e84, - 0x237e8b, - 0x3010c4, - 0x30138b, - 0x301f05, - 0x217bca, - 0x303dc8, - 0x303fca, - 0x304883, - 0x30488a, - 0x6f213982, - 0x6f642c42, - 0x6fa0d403, - 0x6fede302, - 0x307643, - 0x702f8442, - 0x70739c42, - 0x308544, - 0x218386, - 0x3350c5, - 0x30c343, - 0x32fc06, - 0x3a0645, - 0x366b44, - 0x70a00902, - 0x2ae704, - 0x2d810a, - 0x2c0587, - 0x34ad46, - 0x235407, - 0x23e883, - 0x2c92c8, - 0x3dc44b, - 0x2ce445, - 0x223585, - 0x223586, - 0x342604, - 0x3cd748, - 0x2198c3, - 0x28b144, - 0x3cdc87, - 0x2f6b46, - 0x314a06, - 0x2c86ca, - 0x24d544, - 0x3214ca, - 0x70f5ccc6, - 0x35ccc7, - 0x255d87, - 0x2ab784, - 0x34c349, - 0x238cc5, - 0x2f8343, - 0x2201c3, - 0x7121b843, - 0x231704, - 0x71600682, - 0x266886, - 0x71acbc45, - 0x31c385, - 0x2505c6, - 0x2a6184, - 0x71e02b02, - 0x2421c4, - 0x7220d782, - 0x20d785, - 0x37d504, - 0x7361a6c3, - 0x73a08382, - 0x208383, - 0x34d886, - 0x73e07742, - 0x399508, - 0x223e44, - 0x223e46, - 0x396906, - 0x74257784, - 0x217e05, - 0x368548, - 0x265c07, - 0x2b1087, - 0x2b108f, - 0x2980c6, - 0x23c0c3, - 0x23db04, - 0x219b43, - 0x222ac4, - 0x24c404, - 0x74606c82, - 0x2bef83, - 0x337143, - 0x74a08502, - 0x20cec3, - 0x30be83, - 0x21270a, - 0x279407, - 0x25070c, - 0x74e509c6, - 0x250b46, - 0x253b87, - 0x752302c7, - 0x259009, - 0x75666444, - 0x75a0a1c2, - 0x75e02442, - 0x2c8a86, - 0x273784, - 0x2bf406, - 0x230748, - 0x3926c4, - 0x2f7a46, - 0x2ada45, - 0x7628dc88, - 0x2424c3, - 0x292005, - 0x3ab143, - 0x243cc3, - 0x243cc4, - 0x21d2c3, - 0x7664b642, - 0x76a04782, - 0x2f8209, - 0x293a05, - 0x293d84, - 0x294545, - 0x210f44, - 0x28eec7, - 0x35ff05, - 0x772ddf84, - 0x2ddf88, - 0x2df1c6, - 0x2e5144, - 0x2e8988, - 0x2e8fc7, - 0x7760ab02, - 0x2f1004, - 0x219c04, - 0x2ceb87, - 0x77a0ab04, - 0x2670c2, - 0x77e0ee42, - 0x20ee43, - 0x248884, - 0x29a503, - 0x2b7085, - 0x78201442, - 0x308885, - 0x23cac2, - 0x312645, - 0x23cac5, - 0x786010c2, - 0x316a04, - 0x78a018c2, - 0x349086, - 0x25ab46, - 0x385648, - 0x2cf888, - 0x314c84, - 0x35a585, - 0x310489, - 0x39b604, - 0x3d0444, - 0x2132c3, - 0x237c83, - 0x78f1fb05, - 0x24fd85, - 0x28b044, - 0x35eacd, - 0x25cdc2, - 0x366543, - 0x79201702, - 0x79600ec2, - 0x398fc5, - 0x341947, - 0x227344, - 0x3c86c9, - 0x2d8249, + 0x236607, + 0x2584c6, + 0x267083, + 0x422d0c2, + 0x22d543, + 0x29b5ca, + 0x4609983, + 0x3403c5, + 0x30a8c2, + 0x3a4f89, + 0x4e03b42, + 0x207a04, + 0x354186, + 0x243885, + 0x36ebc4, + 0x5626e04, + 0x203b43, + 0x23c4c4, + 0x5a030c2, + 0x25b344, + 0x5f2d504, + 0x316d0a, + 0x6200882, + 0x3cd347, + 0x27b5c8, + 0x7a08502, + 0x336287, + 0x2d36c4, + 0x2d36c7, + 0x38aa45, + 0x38bf07, + 0x34a906, + 0x29ac84, + 0x3633c5, + 0x282507, + 0x920c142, + 0x38cdc3, + 0x960b4c2, + 0x3b5e03, + 0x9a08742, + 0x2691c5, + 0x9e00202, + 0x371604, + 0x387345, + 0x22b107, + 0x2e954e, + 0x206984, + 0x283b04, + 0x2079c3, + 0x30d489, + 0x2c4e4b, + 0x2e1248, + 0x32b788, + 0x3328c8, + 0x20a888, + 0xa36b84a, + 0x38be07, + 0x2f7086, + 0xa617282, + 0x35ca43, + 0x3d6443, + 0x3d8084, + 0x35ca83, + 0x3bb643, + 0x1738b82, + 0xaa04702, + 0x28a385, + 0x261e86, + 0x252084, + 0x3b0cc7, + 0x25b186, + 0x2d4704, + 0x3be9c7, + 0x204703, + 0xb2dc982, + 0xb728c42, + 0xba13982, + 0x230646, + 0xbe00282, + 0x26b385, + 0x33a0c3, + 0x3de644, + 0x2fd584, + 0x2fd585, + 0x3e9683, + 0xc253c43, + 0xc606342, + 0x20e9c5, + 0x20e9cb, + 0x223c8b, + 0x20e804, + 0x20ee49, + 0x210404, + 0xca10d82, + 0x211a83, + 0x2121c3, + 0xce02502, + 0x23020a, + 0xd20bd42, + 0x2f5585, + 0x2ece4a, + 0x246f44, + 0x213f43, + 0x2154c4, + 0x2178c3, + 0x2178c4, + 0x2178c7, + 0x218705, + 0x219546, + 0x21a186, + 0x2172c3, + 0x220f88, + 0x215b03, + 0xd604242, + 0x2fc548, + 0x295e4b, + 0x229c88, + 0x22ac46, + 0x22b987, + 0x22e908, + 0xee016c2, + 0xf2295c2, + 0x278408, + 0x20b947, + 0x206e85, + 0x3e2208, + 0xf61c008, + 0x26a0c3, + 0x235a44, + 0x38e902, + 0xfa36c42, + 0xfe07f42, + 0x10637242, + 0x237243, + 0x10a04182, + 0x312683, + 0x2135c4, + 0x210903, + 0x210904, + 0x3a264b, + 0x204183, + 0x2f27c6, + 0x284a84, + 0x2ccf8e, + 0x240ec5, + 0x257008, + 0x2716c7, + 0x2716ca, + 0x21b9c3, + 0x25d7c7, + 0x2c5005, + 0x239e44, + 0x25ef06, + 0x25ef07, + 0x3601c4, + 0x10f10344, + 0x3169c4, + 0x3169c6, + 0x25d4c4, + 0x3c2086, + 0x206c43, + 0x206c48, + 0x20b2c8, + 0x2b3843, + 0x2301c3, + 0x344544, + 0x357203, + 0x11604042, + 0x11aea202, + 0x217843, + 0x203c06, + 0x3796c3, + 0x2fd344, + 0x11efd0c2, + 0x343583, + 0x332f83, + 0x21cdc2, + 0x12200d42, + 0x2d7946, + 0x228b07, + 0x27b347, + 0x2c7cc5, + 0x386404, + 0x3d4a45, + 0x3dcc47, + 0x2b5ec9, + 0x2cb106, + 0x2c7bc6, + 0x1320c602, + 0x2b6688, + 0x321346, + 0x327b05, + 0x2f7787, + 0x2fafc4, + 0x2fafc5, + 0x1370e7c4, + 0x30e7c8, + 0x13a08d02, + 0x13e00482, + 0x24c3c6, + 0x200488, + 0x325105, + 0x3264c6, + 0x329dc8, + 0x34c608, + 0x14203ec5, + 0x16e2f004, + 0x2b0f87, + 0x1720fe82, + 0x1762e702, + 0x18a16542, + 0x354285, + 0x192904c5, + 0x241c06, + 0x3b6207, + 0x368e07, + 0x19616543, + 0x3d6787, + 0x283a08, + 0x273b4bc9, + 0x216547, + 0x3e03c7, + 0x238308, + 0x238b06, + 0x239946, + 0x23a58c, + 0x23b58a, + 0x23ba87, + 0x23cdcb, + 0x23dd47, + 0x23dd4e, + 0x2763eb84, + 0x23ec84, + 0x240d87, + 0x24be07, + 0x246386, + 0x246387, + 0x3b74c7, + 0x203643, + 0x27a13b02, + 0x248746, + 0x24874a, + 0x248acb, + 0x249f07, + 0x24aac5, + 0x24b283, + 0x24c646, + 0x24c647, + 0x2feac3, + 0x27e00102, + 0x24d30a, + 0x28378742, + 0x2863d842, + 0x28a47402, + 0x28e3fb82, + 0x24f085, + 0x24fdc4, + 0x29a0c542, + 0x25b3c5, + 0x231943, + 0x29d005, + 0x20a784, + 0x21e5c4, + 0x2d9d06, + 0x25cc06, + 0x20ebc3, + 0x3c1a44, + 0x341883, + 0x2aa03242, + 0x2b1504, + 0x3a1a46, + 0x2b1505, + 0x207106, + 0x2f7888, + 0x233d04, + 0x2b0ac8, + 0x2f3f05, + 0x27ce88, + 0x2d57c6, + 0x21c787, + 0x279ec4, + 0x2be79ec6, + 0x2c220a83, + 0x3a6543, + 0x2c05c8, + 0x334684, + 0x2c615587, + 0x280dc6, + 0x2e9b49, + 0x362488, + 0x32c448, + 0x333004, + 0x20d303, + 0x249182, + 0x2ce57f02, + 0x2d226cc2, + 0x20dd83, + 0x2d615fc2, + 0x2fea44, + 0x285786, + 0x23ca03, + 0x2c72c7, + 0x36ca43, + 0x3e1348, + 0x2253c5, + 0x267d03, + 0x3872c5, + 0x387404, + 0x3bad86, + 0x22a386, + 0x22b046, + 0x2580c4, + 0x23e103, + 0x2da15282, + 0x2de3d545, + 0x200843, + 0x2e603e82, + 0x23a543, + 0x3ca805, + 0x2ea22bc3, + 0x2f23c589, + 0x2f600942, + 0x2fe05342, + 0x2973c5, + 0x21f406, + 0x2b2986, + 0x308cc8, + 0x308ccb, + 0x346d8b, + 0x35b445, + 0x2dcf09, + 0x1600b42, + 0x2d2908, + 0x20f144, + 0x30602bc2, + 0x33e203, + 0x30e4bfc6, + 0x31200fc2, + 0x20ae88, + 0x31613242, + 0x37aa4a, + 0x32239383, + 0x32b77546, + 0x318348, + 0x38db06, + 0x389c87, + 0x24d887, + 0x20724a, + 0x246fc4, + 0x360c84, + 0x376889, + 0x32fb3a05, + 0x2163c6, + 0x20bb43, + 0x263284, + 0x33232d44, + 0x32d187, + 0x3365e987, + 0x2edb44, + 0x250145, + 0x241cc8, + 0x250387, + 0x250607, + 0x33a18242, + 0x2a2704, + 0x29e388, + 0x251b04, + 0x254744, + 0x254b05, + 0x254c47, + 0x3468b8c9, + 0x2555c4, + 0x256b09, + 0x256d48, + 0x257604, + 0x257607, + 0x257d03, + 0x259ac7, + 0x34a01282, + 0x16c0502, + 0x25b506, + 0x25bb47, + 0x25c404, + 0x25e347, + 0x25f247, 0x25fc83, - 0x27ccc8, - 0x35d1c9, - 0x220f47, - 0x79b7b845, - 0x39d086, - 0x3a7d46, - 0x3ac645, - 0x2ee345, - 0x79e06242, - 0x28db85, - 0x2c4b48, - 0x2d1686, - 0x7a22aa87, - 0x2d1ec4, - 0x2d1447, - 0x30d006, - 0x7a603c02, - 0x39d206, - 0x311cca, - 0x312545, - 0x7aa30ac2, - 0x7ae92ec2, - 0x36c7c6, - 0x7b292ec7, - 0x7b60d982, - 0x242c83, - 0x3c75c6, - 0x2d0744, - 0x33ec86, - 0x24eac6, - 0x20290a, - 0x359945, - 0x35c986, - 0x38a183, - 0x38a184, - 0x7ba1cc42, - 0x28f183, - 0x7be1e202, - 0x2fccc3, - 0x7c215504, - 0x20de04, - 0x7c60de0a, - 0x219243, - 0x239747, - 0x315146, - 0x3670c4, - 0x281142, - 0x2ac982, - 0x7ca007c2, - 0x22b3c3, - 0x255b47, - 0x2007c7, - 0x28e544, - 0x3e2587, - 0x2fbe46, - 0x20f307, - 0x30bdc4, - 0x2e5d45, - 0x218ac5, - 0x7ce05682, - 0x216f86, - 0x227043, - 0x227ec2, - 0x227ec6, - 0x7d21c882, - 0x7d62dc42, - 0x238f85, - 0x7da03d02, - 0x7de02a82, - 0x353545, - 0x2d9845, - 0x2af105, - 0x7e65aa03, - 0x279185, - 0x2f0bc7, - 0x2b7945, - 0x359b05, - 0x268b84, - 0x266cc6, - 0x3944c4, - 0x7ea008c2, - 0x7f798885, - 0x3d0907, - 0x3a09c8, - 0x269f86, - 0x269f8d, - 0x26f7c9, - 0x26f7d2, - 0x34d185, - 0x380843, - 0x7fa03b42, - 0x31f9c4, - 0x22db83, - 0x393e85, - 0x313785, - 0x7fe1fcc2, - 0x259fc3, - 0x8022b302, - 0x80a1cac2, - 0x80e00082, - 0x2ec2c5, - 0x213fc3, - 0x81208f02, - 0x81604642, - 0x3c1706, - 0x27e1ca, - 0x20c6c3, - 0x257c83, - 0x2f7343, - 0x832072c2, - 0x9161f702, - 0x91e07ac2, - 0x2034c2, - 0x3d3d09, - 0x2d4584, - 0x2e1c88, - 0x92305102, - 0x92a01502, - 0x2c2285, - 0x234e88, - 0x2f65c8, - 0x2fb70c, - 0x239683, - 0x92e13f42, - 0x9320e482, - 0x2bce06, - 0x315fc5, - 0x2e5583, - 0x247cc6, - 0x316106, - 0x253383, - 0x317803, - 0x317c46, - 0x319484, - 0x26aa06, - 0x236444, - 0x319b44, - 0x31ad0a, - 0x936bb102, - 0x24e605, - 0x31c58a, - 0x31c4c5, - 0x31e504, - 0x31e606, - 0x31e784, - 0x216d06, - 0x93a03c42, - 0x2ecf86, - 0x358f85, - 0x35c807, - 0x3c7386, - 0x253d84, - 0x2e5807, - 0x21dfc5, - 0x21dfc7, - 0x3c3a87, - 0x3c3a8e, - 0x280bc6, - 0x2bda05, - 0x20aa47, - 0x20e243, - 0x20e247, + 0x34e5c082, + 0x239fc2, + 0x260743, + 0x260744, + 0x26074b, + 0x32b888, + 0x2891c4, + 0x2618c5, + 0x262fc7, + 0x2ee845, + 0x3b930a, + 0x266b03, + 0x3520eb02, + 0x21dc84, + 0x26b6c9, + 0x26f443, + 0x26f507, + 0x384989, + 0x211fc8, + 0x213bc3, + 0x286bc7, + 0x288f89, + 0x276a83, + 0x290984, + 0x291d49, + 0x2951c6, + 0x3825c3, + 0x204982, + 0x268803, + 0x2c0307, + 0x38f005, + 0x2c4c46, + 0x219a44, + 0x372285, + 0x289e43, + 0x21abc6, + 0x22e143, + 0x20c342, + 0x253c04, + 0x35634402, + 0x35a34403, + 0x35e04342, + 0x253283, + 0x21a604, + 0x323c87, + 0x21fb46, + 0x290942, + 0x3620e8c2, + 0x32c684, + 0x36a17a42, + 0x36e09ac2, + 0x3caac4, + 0x3caac5, + 0x3b6b85, + 0x37d146, + 0x37207042, + 0x207045, + 0x20f745, + 0x213dc3, + 0x2267c6, + 0x227105, + 0x2305c2, + 0x35ac85, + 0x2305c4, + 0x233c43, + 0x233e83, + 0x3760a302, + 0x2318c7, + 0x257784, + 0x257789, + 0x263184, + 0x290343, + 0x2bd008, + 0x37a90344, + 0x290346, + 0x2b05c3, + 0x262243, + 0x343b43, + 0x37f03e02, + 0x30ad42, + 0x38200642, + 0x33bfc8, + 0x2158c8, + 0x3bfcc6, + 0x385145, + 0x323e05, + 0x202347, + 0x386823c5, + 0x2038c2, + 0x38aa0a82, + 0x38e00042, + 0x2832c8, + 0x2b65c5, + 0x302f84, + 0x250d45, + 0x2514c7, + 0x3b0184, + 0x24d202, + 0x3923b502, + 0x350984, + 0x22fec7, + 0x297b47, + 0x38bec4, + 0x3d7403, + 0x2b3784, + 0x2b3788, + 0x239c86, + 0x25ed8a, + 0x358e44, + 0x29ddc8, + 0x24ffc4, + 0x22ba86, + 0x2a0a44, + 0x354586, + 0x257a49, + 0x221247, + 0x39d543, + 0x39605102, + 0x386d03, + 0x210f82, + 0x39a027c2, + 0x268f86, + 0x3b2848, + 0x2b2b07, + 0x2331c9, + 0x2b2cc9, + 0x2b5585, + 0x2b6f09, + 0x2b7705, + 0x2b8545, + 0x2b94c8, + 0x39e17a84, + 0x3a25fdc7, + 0x2b96c3, + 0x2b96c7, + 0x3e0786, + 0x2b9c87, + 0x2af945, + 0x2d0843, + 0x3a63b342, + 0x214184, + 0x3aa11402, + 0x3ae1ec82, + 0x31e946, + 0x27b545, + 0x2bbd87, + 0x3c32c3, + 0x20ccc4, + 0x21e103, + 0x2f6883, + 0x3b2042c2, + 0x3ba08e82, + 0x38e984, + 0x25c043, + 0x308985, + 0x3be05502, + 0x3c602102, + 0x222f86, + 0x2e9484, + 0x2f0284, + 0x2f028a, + 0x3ce005c2, + 0x20e103, + 0x23498a, + 0x26a7c8, + 0x3d2b1b84, + 0x2005c3, + 0x3d687643, + 0x326909, + 0x280609, + 0x2c73c6, + 0x3da43543, + 0x2887cd, + 0x3a8e86, + 0x3e0e8b, + 0x3de087c2, + 0x2ac948, + 0x42221082, + 0x42601e02, + 0x398285, + 0x42a02642, + 0x2b3187, + 0x202983, + 0x2272c8, + 0x42e06002, + 0x3a9984, + 0x22a003, + 0x3532c5, + 0x2491c6, + 0x22cf04, + 0x230183, + 0x44205b42, + 0x35b3c4, + 0x2beb45, + 0x2bff07, + 0x285203, + 0x2c1443, + 0x1619e82, + 0x2c1b03, + 0x2c2103, + 0x44600e02, + 0x239104, + 0x23e306, + 0x288d83, + 0x2c2a83, + 0x44a54202, + 0x254208, + 0x2c3a04, + 0x2052c6, + 0x387d07, + 0x3d4dc6, + 0x2c0544, + 0x52e025c2, + 0x3e064b, + 0x30624e, + 0x2201cf, + 0x3bc5c3, + 0x536687c2, + 0x161ee02, + 0x53a01f42, + 0x2f9843, + 0x20b603, + 0x2732c6, + 0x2cb846, + 0x2bc847, + 0x3b7004, + 0x53e1f542, + 0x542258c2, + 0x302645, + 0x32a647, + 0x2c6106, + 0x5463d782, + 0x382f04, + 0x2cc083, + 0x54a07bc2, + 0x54f73803, + 0x2cd984, + 0x2d2249, + 0x552da042, + 0x55611b82, + 0x2876c5, + 0x55ada802, + 0x56205542, + 0x35fb87, + 0x37718b, + 0x24d645, + 0x264489, + 0x275d46, + 0x56608004, + 0x208009, + 0x2f9cc7, + 0x349887, + 0x205543, + 0x2f1a46, + 0x351887, + 0x24c243, + 0x2a4106, + 0x56e1f002, + 0x57225e82, + 0x217443, + 0x3a5145, + 0x21c307, + 0x23f286, + 0x38ef85, + 0x263104, + 0x2aee85, + 0x390bc4, + 0x5760b402, + 0x2d8d84, + 0x2cbe44, + 0x39c84d, + 0x2cbe49, + 0x237848, + 0x262c84, + 0x38d345, + 0x3c2307, + 0x3c2bc4, + 0x273847, 0x228f05, - 0x22bfc4, - 0x368842, - 0x32a1c7, - 0x241184, - 0x32a684, - 0x3ab1cb, - 0x21ab83, - 0x2dd0c7, - 0x21ab84, - 0x2dd3c7, - 0x3ae243, - 0x34f8cd, - 0x3aa588, - 0x93e45f84, - 0x366dc5, - 0x31f345, - 0x31f783, - 0x94223d42, - 0x322283, - 0x322b03, - 0x217104, - 0x283c85, - 0x224e87, - 0x38a206, - 0x393c43, - 0x22ad4b, - 0x322c8b, - 0x283d8b, - 0x2b32cb, - 0x2c718a, - 0x2d184b, - 0x2f1b4b, - 0x35ab4c, - 0x319f4b, - 0x374b91, - 0x39ad0a, - 0x3b794b, - 0x3c694c, - 0x3df28b, - 0x3256ca, - 0x325bca, - 0x326a4e, - 0x3271cb, - 0x32748a, - 0x328a51, - 0x328e8a, - 0x32938b, - 0x3298ce, - 0x32b70c, - 0x32c34b, - 0x32c60e, - 0x32c98c, - 0x32d6ca, - 0x32ee8c, - 0x9472f18a, - 0x32fd88, - 0x330949, - 0x33308a, - 0x33330a, - 0x33358b, - 0x3368ce, - 0x337751, - 0x341dc9, - 0x34200a, - 0x342b4b, - 0x34348d, - 0x34430a, - 0x3455d6, - 0x34694b, - 0x349e0a, - 0x34a38a, - 0x34b28b, - 0x34cc09, - 0x350249, - 0x3507cd, - 0x3510cb, - 0x352bcb, - 0x353689, - 0x353cce, - 0x35410a, - 0x35a04a, - 0x35a7ca, - 0x35b18b, - 0x35b9cb, - 0x35e2cd, - 0x35fa0d, - 0x360310, - 0x3607cb, - 0x36210c, - 0x36288b, - 0x36494b, - 0x36614e, - 0x36660b, - 0x36660d, - 0x36d70b, - 0x36e18f, - 0x36e54b, - 0x36f50a, - 0x36fb09, - 0x370089, - 0x94b7040b, - 0x3706ce, - 0x370a4e, - 0x3726cb, - 0x37374f, - 0x375fcb, - 0x37628b, - 0x37654a, - 0x37af49, - 0x37fa0f, - 0x3841cc, - 0x384bcc, - 0x385ece, - 0x38644f, - 0x38680e, - 0x3871d0, - 0x3875cf, - 0x3883ce, - 0x388f0c, - 0x389211, - 0x389652, - 0x38b3d1, - 0x38be8e, - 0x38c2cb, - 0x38c2ce, - 0x38c64f, - 0x38ca0e, - 0x38cd93, - 0x38d251, - 0x38d68c, - 0x38d98e, - 0x38de0c, - 0x38e353, - 0x38f1d0, - 0x3902cc, - 0x3905cc, - 0x390a8b, - 0x391bce, - 0x3920cb, - 0x392e4b, - 0x39418c, - 0x399a4a, - 0x39a50c, - 0x39a80c, - 0x39ab09, - 0x39d68b, - 0x39d948, - 0x39e649, - 0x39e64f, - 0x39ff0b, - 0x94fa0bca, - 0x3a268c, - 0x3a364b, - 0x3a3909, - 0x3a3cc8, - 0x3a458b, - 0x3a688a, - 0x3a6b0b, - 0x3a700c, - 0x3a77c9, - 0x3a7a08, - 0x3ab48b, - 0x3aeb8b, - 0x3b0d0e, - 0x3b244b, - 0x3b72cb, - 0x3c360b, - 0x3c38c9, - 0x3c3e0d, - 0x3d148a, - 0x3d4917, - 0x3d5618, - 0x3d8989, - 0x3d9ccb, - 0x3daad4, - 0x3dafcb, - 0x3db54a, - 0x3dbc0a, - 0x3dbe8b, - 0x3dd190, - 0x3dd591, - 0x3ddc4a, - 0x3de88d, - 0x3def8d, - 0x3e104b, - 0x217083, - 0x953b3583, - 0x2b0f46, - 0x27ca85, - 0x29c647, - 0x384906, - 0x1602342, - 0x2b3609, - 0x32fa04, - 0x2efcc8, - 0x21b783, - 0x31f907, - 0x230902, - 0x2b8f03, - 0x95603602, - 0x2d8d06, - 0x2da3c4, - 0x377084, - 0x201c43, - 0x95ed56c2, - 0x9622c344, - 0x34c287, - 0x9662bf82, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x106b48, - 0x205803, - 0x2000c2, - 0xae888, - 0x212402, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0x208503, - 0x33cb96, - 0x36c093, - 0x3e2409, - 0x215d88, - 0x2c1389, - 0x31c706, - 0x3520d0, - 0x212113, - 0x2f6c08, - 0x282247, - 0x28d487, - 0x2aaa8a, - 0x36a609, - 0x3573c9, - 0x24cd4b, - 0x34b706, - 0x32ce4a, - 0x221106, - 0x32f603, - 0x2e4d05, - 0x20f4c8, - 0x28598d, - 0x2f45cc, - 0x3033c7, - 0x30e60d, - 0x215e84, - 0x2319ca, - 0x23248a, - 0x23294a, - 0x212407, - 0x23ce87, - 0x2410c4, - 0x269c06, - 0x35d584, - 0x305988, - 0x3c0509, - 0x2e9f06, - 0x2e9f08, - 0x24400d, - 0x2d8489, - 0x397c88, - 0x243b47, - 0x33230a, - 0x251186, - 0x2ff544, - 0x225c07, - 0x266a8a, - 0x23fb8e, - 0x246145, - 0x3dd98b, - 0x22b109, - 0x247109, - 0x205447, - 0x20544a, - 0x2ceac7, - 0x301949, - 0x347c88, - 0x33284b, - 0x2ee705, - 0x22c90a, - 0x265dc9, - 0x3568ca, - 0x21b8cb, - 0x225b0b, - 0x24cad5, - 0x2ce085, - 0x243bc5, - 0x237e8a, - 0x2527ca, - 0x321a07, - 0x234fc3, - 0x2c8a08, - 0x2e32ca, - 0x223e46, - 0x256689, - 0x28dc88, - 0x2e5144, - 0x38e109, - 0x2cf888, - 0x2d05c7, - 0x398886, - 0x3d0907, - 0x2c51c7, - 0x2401c5, - 0x245f8c, - 0x366dc5, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x5803, - 0x23e083, - 0x212402, - 0x22ea43, - 0x217fc3, - 0x205803, - 0x23e083, - 0x22ea43, - 0x217fc3, - 0x5803, - 0x269543, - 0x23e083, - 0x1d1843, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0xae888, - 0x212402, - 0x22ea43, - 0x22ea47, - 0x8ecc4, - 0x217fc3, - 0x1b5c04, - 0x23e083, - 0x212402, - 0x204542, - 0x2f6e82, - 0x2022c2, - 0x202582, - 0x2f2402, - 0x96206, - 0x51709, - 0xe9bc7, - 0x481a6c3, - 0x8e8c7, - 0x154546, - 0xaa43, - 0x11eec5, - 0xc1, - 0x522ea43, - 0x233fc3, - 0x280203, - 0x266a83, - 0x2191c3, - 0x23cb03, - 0x2e4c06, - 0x217fc3, - 0x23e083, - 0x234f43, - 0xae888, - 0x3b46c4, - 0x324547, + 0x57ab4484, + 0x2c5b45, + 0x26e104, + 0x316546, + 0x3b6005, + 0x57e6b2c2, + 0x225e43, + 0x333e43, + 0x2c8784, + 0x2c8785, + 0x208c86, + 0x235585, + 0x263944, + 0x58392e03, + 0x587d1a86, + 0x219405, + 0x21b385, + 0x3b6104, + 0x2f93c3, + 0x358ecc, + 0x58ac0002, + 0x58e00e82, + 0x59209d42, + 0x21b283, + 0x21b284, + 0x59610442, + 0x308108, + 0x2c4d05, + 0x2dafc4, + 0x359186, + 0x59a205c2, + 0x59e109c2, + 0x5a200c42, + 0x2a3c05, + 0x354806, + 0x232c84, + 0x236346, + 0x213186, + 0x25aa03, + 0x5a694b4a, + 0x2853c5, + 0x29b583, + 0x20f546, + 0x5aa0f549, + 0x22c4c7, + 0x3c8c08, + 0x3ce749, + 0x2b6048, + 0x209146, + 0x207cc3, + 0x5af1de42, + 0x32bd88, + 0x5b256e02, + 0x5b601582, + 0x233243, + 0x2efe85, + 0x280f44, + 0x3e27c9, + 0x386e04, + 0x38d188, + 0x5be10fc3, + 0x5c3a2ac4, + 0x21f448, + 0x5c70df02, + 0x2cf1c2, + 0x330cc5, + 0x34af09, + 0x216443, + 0x31b884, + 0x36e504, + 0x20b683, + 0x28bf8a, + 0x5cb0f082, + 0x5ce13fc2, + 0x2dc903, + 0x3939c3, + 0x1609382, + 0x35c243, + 0x5d228882, + 0x5d600bc2, + 0x5da8d4c4, + 0x28d4c6, + 0x276e84, + 0x283103, + 0x28f583, + 0x5de00bc3, + 0x248e46, + 0x3de805, + 0x2e0947, + 0x2e0886, + 0x2e0e48, + 0x2e1046, + 0x2239c4, + 0x2a6a8b, + 0x2e30c3, + 0x2e30c5, + 0x2165c2, + 0x35fe82, + 0x5e24f102, + 0x5e603742, + 0x20a083, + 0x5ea77782, + 0x277783, + 0x2e4103, + 0x5f2093c2, + 0x5f6e8306, + 0x35e3c6, + 0x5fae8442, + 0x5fe12202, + 0x60233ec2, + 0x60ea9542, + 0x61345342, + 0x61602802, + 0x20b0c3, + 0x3da086, + 0x61a1b544, + 0x2b130a, + 0x3b1d46, + 0x285084, + 0x202703, + 0x62606c02, + 0x204cc2, + 0x26f843, + 0x62a296c3, + 0x3c5847, + 0x3b5f07, + 0x67e60847, + 0x341607, + 0x232403, + 0x23240a, + 0x257204, + 0x31e544, + 0x31e54a, + 0x24a905, + 0x6823a382, + 0x2583c3, + 0x68600602, + 0x257743, + 0x386cc3, + 0x68e00582, + 0x283984, + 0x202544, + 0x2032c5, + 0x3301c5, + 0x236e86, + 0x2fb4c6, + 0x6924ba82, + 0x69601cc2, + 0x2f97c5, + 0x35e0d2, + 0x298a06, + 0x291c43, + 0x2b4ac6, + 0x2cf8c5, + 0x1603442, + 0x71a056c2, + 0x341143, + 0x212bc3, + 0x29c403, + 0x71e01102, + 0x21e803, + 0x7222d4c2, + 0x201d03, + 0x3b1008, + 0x241c43, + 0x2b5406, + 0x3e3047, + 0x34dbc6, + 0x34dbcb, + 0x284fc7, + 0x33ee44, + 0x72a00c02, + 0x2c4b85, + 0x72e2f483, + 0x23b843, + 0x39fd45, + 0x348ec3, + 0x73748ec6, + 0x3e514a, + 0x2ade43, + 0x213a04, + 0x2003c6, + 0x327f06, + 0x73a0cb83, + 0x20cb87, + 0x326807, + 0x2a8485, + 0x239706, + 0x217303, + 0x76626a03, + 0x76a00a82, + 0x76ec8044, + 0x2114c9, + 0x22f7c5, + 0x361cc4, + 0x31e288, + 0x24ac45, + 0x7724ccc5, + 0x255849, + 0x32e683, + 0x23d7c4, + 0x77608402, + 0x21f783, + 0x77a96dc2, + 0x296dc6, + 0x169a902, + 0x77e15982, + 0x2a3b08, + 0x2b3743, + 0x2c5a87, + 0x2c1b85, + 0x2c5645, + 0x34de4b, + 0x2f17c6, + 0x34e046, + 0x277304, + 0x219d06, + 0x782f1e48, + 0x28e543, + 0x265043, + 0x265044, + 0x2fa884, + 0x309447, + 0x3da945, + 0x786f8842, + 0x78a059c2, + 0x792059c5, + 0x2ca784, + 0x2fa9cb, + 0x2fd488, + 0x24bd04, + 0x796376c2, + 0x79a06bc2, + 0x206bc3, + 0x2ff644, + 0x2ff905, + 0x300487, + 0x79f02ac4, + 0x38bfc4, + 0x7a2037c2, + 0x37e5c9, + 0x303fc5, + 0x24d905, + 0x304b45, + 0x7a61f6c3, + 0x240644, + 0x24064b, + 0x305b04, + 0x305dcb, + 0x306745, + 0x22030a, + 0x307108, + 0x30730a, + 0x307b83, + 0x307b8a, + 0x7ae1a782, + 0x7b24cec2, + 0x7b604683, + 0x7bad3b02, + 0x309ec3, + 0x7bef57c2, + 0x7c33a842, + 0x30a904, + 0x2210c6, + 0x236085, + 0x30ccc3, + 0x3ce106, + 0x219045, + 0x35a504, + 0x7c600902, + 0x2b4004, + 0x2dcb8a, + 0x2c3687, + 0x349246, + 0x25d607, + 0x248783, + 0x2cd9c8, + 0x3e7ccb, + 0x221e45, + 0x36e645, + 0x36e646, + 0x2f8384, + 0x3df448, + 0x205703, + 0x2075c4, + 0x2075c7, + 0x33ea86, + 0x3a2e06, + 0x2ccdca, + 0x256b84, + 0x2c244a, + 0x7ca08dc6, + 0x208dc7, + 0x261947, + 0x266584, + 0x266589, + 0x336705, + 0x2f9c43, + 0x22a543, + 0x7ce264c3, + 0x23a044, + 0x7d200682, + 0x3d8986, + 0x7d6d05c5, + 0x2b4d05, + 0x25b746, + 0x31d704, + 0x7da12742, + 0x24b2c4, + 0x7de04a02, + 0x20c2c5, + 0x336884, + 0x7f22ccc3, + 0x7f609742, + 0x209743, + 0x21e946, + 0x7fa01ec2, + 0x397488, + 0x22c344, + 0x22c346, + 0x394246, + 0x7fe63084, + 0x21a7c5, + 0x22ef08, + 0x231dc7, + 0x326fc7, + 0x326fcf, + 0x29e286, + 0x23cc03, + 0x241684, + 0x20f843, + 0x22bbc4, + 0x252e44, + 0x80207f02, + 0x3747c3, + 0x337cc3, + 0x80602b02, + 0x204143, + 0x37d083, + 0x21878a, + 0x27eb47, + 0x258ecc, + 0x80a59186, + 0x25abc6, + 0x25bcc7, + 0x80e38747, + 0x262389, + 0x812fc684, + 0x8160a0c2, + 0x81a01702, + 0x2cd186, + 0x20c984, + 0x39e1c6, + 0x267ec8, + 0x3a5204, + 0x2f8ec6, + 0x2b2945, + 0x81e7c4c8, + 0x24c743, + 0x28a485, + 0x35d1c3, + 0x24da03, + 0x24da04, + 0x21dc43, + 0x82254642, + 0x826014c2, + 0x2f9b09, + 0x296cc5, + 0x3d4744, + 0x3e5745, + 0x20f244, + 0x37b3c7, + 0x338685, + 0x82ed1984, + 0x2d1988, + 0x2dd986, + 0x2e1dc4, + 0x2e1fc8, + 0x83204ac2, + 0x2f0d84, + 0x20f904, + 0x2d38c7, + 0x83605fc4, + 0x2171c2, + 0x83a0b5c2, + 0x20b5c3, + 0x2875c4, + 0x2512c3, + 0x2ba385, + 0x83e35542, + 0x30ac45, + 0x279c42, + 0x311f85, + 0x2db805, + 0x842010c2, + 0x332f04, + 0x84602d82, + 0x30dd46, + 0x2192c6, + 0x34b048, + 0x2d49c8, + 0x31e8c4, + 0x301805, + 0x2c0d09, + 0x2d2a44, + 0x3e5104, + 0x21f203, + 0x207383, + 0x84a07385, + 0x26fac5, + 0x269544, + 0x337d4d, + 0x352902, + 0x352903, + 0x84e04102, + 0x85200ec2, + 0x396f45, + 0x354c47, + 0x22d144, + 0x3ce949, + 0x2dccc9, + 0x282303, + 0x282308, + 0x246809, + 0x227d47, + 0x85755b45, + 0x3615c6, + 0x362786, + 0x365cc5, + 0x2cbf45, + 0x85a01c42, + 0x2930c5, + 0x2c9448, + 0x2d6a06, + 0x85ed7247, + 0x306984, + 0x2b9ac7, + 0x3b9106, + 0x8624b302, + 0x208986, + 0x31160a, + 0x311e85, + 0x86615a82, + 0x86a14442, + 0x278b86, + 0x86e97d07, + 0x8720c4c2, + 0x20a803, + 0x2250c6, + 0x2d5884, + 0x27ac86, + 0x32fa86, + 0x3a32ca, + 0x32e805, + 0x30d8c6, + 0x36c343, + 0x36c344, + 0x87603bc2, + 0x321303, + 0x87a1b2c2, + 0x31fec3, + 0x87e34c04, + 0x2d8284, + 0x883e380a, + 0x209203, + 0x326ac7, + 0x315106, + 0x38fa84, + 0x236d42, + 0x2b0982, + 0x886007c2, + 0x232a43, + 0x261707, + 0x2007c7, + 0x292704, + 0x258d47, + 0x300586, + 0x20ba87, + 0x230744, + 0x2b61c5, + 0x221c45, + 0x88a0d782, + 0x219e46, + 0x230bc3, + 0x29d6c2, + 0x2fc146, + 0x88e12682, + 0x89213402, + 0x213405, + 0x8962bdc2, + 0x89a02a02, + 0x351e45, + 0x2e3405, + 0x30a705, + 0x8a268b83, + 0x285845, + 0x2f1887, + 0x2b9385, + 0x32e9c5, + 0x257104, + 0x361b46, + 0x24e044, + 0x8a6008c2, + 0x8b2510c5, + 0x3967c7, + 0x213c08, + 0x27d046, + 0x27d04d, + 0x2803c9, + 0x2803d2, + 0x37e8c5, + 0x383403, + 0x8b6091c2, + 0x32f684, + 0x3a8f03, + 0x3d64c5, + 0x3136c5, + 0x8ba2a042, + 0x267d43, + 0x8be32982, + 0x8c629742, + 0x8ca00082, + 0x2ead45, + 0x39d643, + 0x8ce04942, + 0x8d206502, + 0x283946, + 0x2484ca, 0x201c83, - 0x39e284, - 0x2052c3, - 0x2054c3, - 0x266a83, - 0x178d87, - 0x9c4, - 0x157bc3, - 0x2105, - 0x66000c2, - 0x4ac43, - 0x6a12402, - 0x6e8b749, - 0x7091e09, - 0x923cd, - 0x9270d, - 0x2f6e82, - 0xe704, - 0x2149, - 0x2003c2, - 0x7623188, - 0x100ac4, - 0x320c03, - 0xae888, - 0x41184, - 0x140ea82, - 0x14005c2, - 0x140ea82, - 0x1519d46, - 0x230983, - 0x276243, - 0x7e2ea43, - 0x2319c4, - 0x8233fc3, - 0x8a66a83, - 0x209582, - 0x20e704, - 0x217fc3, - 0x3319c3, - 0x209282, - 0x23e083, - 0x2188c2, - 0x308483, - 0x207742, - 0x203b83, - 0x222403, - 0x207d02, - 0xae888, - 0x230983, - 0x210448, - 0x87319c3, - 0x209282, - 0x308483, - 0x207742, - 0x203b83, - 0x222403, - 0x207d02, - 0x2509c7, - 0x308483, - 0x207742, - 0x203b83, - 0x222403, - 0x207d02, - 0x22ea43, - 0x6c02, - 0xf4c3, - 0x31c2, - 0x293c2, - 0x4d82, - 0x8c82, - 0x72c2, - 0x43d42, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x2191c3, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x201b02, - 0x216983, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x24ac43, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x217fc3, - 0x23e083, - 0x37b845, - 0x21fcc2, + 0x2638c3, + 0x2f2d43, + 0x8ee04a42, + 0x9d666342, + 0x9de0e002, + 0x205002, + 0x3d8109, + 0x2d9444, + 0x2e5488, + 0x9e308542, + 0x9ea017c2, + 0x393285, + 0x23d208, + 0x2f8088, + 0x30500c, + 0x241403, + 0x9ee6dac2, + 0x9f208e42, + 0x39dbc6, + 0x315f85, + 0x2e8c43, + 0x24cb06, + 0x3160c6, + 0x251403, + 0x317703, + 0x317dc6, + 0x319884, + 0x2a2446, + 0x34cd04, + 0x319f44, + 0x31aa0a, + 0x9f603582, + 0x257e85, + 0x31bfca, + 0x31bf05, + 0x31ce84, + 0x31cf86, + 0x31d104, + 0x21fa46, + 0x9fa16ec2, + 0x216ec6, + 0x271385, + 0x30d747, + 0x3c1346, + 0x25bec4, + 0x2e8ec7, + 0x2089c5, + 0x242c07, + 0x228947, + 0x22894e, + 0x2849c6, + 0x2b6dc5, + 0x205f07, + 0x3c3947, + 0x212d85, + 0x229b84, + 0x3235c2, + 0x23d887, + 0x249e04, + 0x35a784, + 0x2cf04b, + 0x9fe246c3, + 0x301387, + 0x2246c4, + 0x301687, + 0x310883, + 0x34e54d, + 0x3ad188, + 0xa0233984, + 0x3e16c5, + 0x31f985, + 0x31fdc3, + 0xa0608f02, + 0x3212c3, + 0x321a83, + 0x215ac4, + 0x289085, + 0x219fc7, + 0x36c3c6, + 0x390a43, + 0x233f0b, + 0x35be8b, + 0x2b504b, + 0x2cae8b, + 0x3991ca, + 0x2d6bcb, + 0x2f228b, + 0x32178c, + 0x31a34b, + 0x370491, + 0x398e4a, + 0x3b8a4b, + 0x3c95cc, + 0x3e6f4b, + 0x3230ca, + 0x323f4a, + 0x324dce, + 0x325a4b, + 0x325d0a, + 0x328911, + 0x328d4a, + 0x32924b, + 0x32978e, + 0x32a14c, + 0x32ae8b, + 0x32b14e, + 0x32b4cc, + 0x32ef0a, + 0x33068c, + 0xa0b3098a, + 0x331288, + 0x331e49, + 0x3348ca, + 0x334b4a, + 0x334dcb, + 0x33744e, + 0x338091, + 0x341cc9, + 0x341f0a, + 0x342c8b, + 0x343dcd, + 0x344c4a, + 0x345616, + 0x34698b, + 0x34844a, + 0x34888a, + 0x34a48b, + 0x34b2c9, + 0x34eec9, + 0x34f44d, + 0x34fc0b, + 0x3514cb, + 0x351f89, + 0x3525ce, + 0x3529ca, + 0x3550ca, + 0x35590a, + 0x3562cb, + 0x356b0b, + 0x35798d, + 0x359fcd, + 0x35a910, + 0x35adcb, + 0x35bacc, + 0x35cc8b, + 0x35f68b, + 0x3611ce, + 0x3617cb, + 0x3617cd, + 0x36740b, + 0x367e8f, + 0x36824b, + 0x36918a, + 0x369f49, + 0x36ab49, + 0xa0f6aecb, + 0x36b18e, + 0x36b50e, + 0x36e28b, + 0x36f04f, + 0x3718cb, + 0x371b8b, + 0x371e4a, + 0x376d89, + 0x37c74f, + 0x381d4c, + 0x38298c, + 0x3830ce, + 0x3835cf, + 0x38398e, + 0x383e10, + 0x38420f, + 0x384bce, + 0x38528c, + 0x385591, + 0x3859d2, + 0x387891, + 0x387ece, + 0x38830b, + 0x38830e, + 0x38868f, + 0x388a4e, + 0x388dd3, + 0x389291, + 0x3896cc, + 0x3899ce, + 0x389e4c, + 0x38a293, + 0x38af50, + 0x38b3cc, + 0x38b6cc, + 0x38bb8b, + 0x38e58e, + 0x38ea8b, + 0x38f2cb, + 0x39150c, + 0x3979ca, + 0x39864c, + 0x39894c, + 0x398c49, + 0x39ac8b, + 0x39af48, + 0x39b509, + 0x39b50f, + 0x39cf4b, + 0xa139e64a, + 0x3a3a0c, + 0x3a49cb, + 0x3a4c89, + 0x3a56c8, + 0x3a630b, + 0x3a810a, + 0x3a838b, + 0x3a9b0c, + 0x3aa649, + 0x3aa888, + 0x3ad7cb, + 0x3b0a4b, + 0x3b2e0e, + 0x3b494b, + 0x3b83cb, + 0x3c420b, + 0x3c44c9, + 0x3c488d, + 0x3d57ca, + 0x3d9857, + 0x3da218, + 0x3dc0c9, + 0x3de3cb, + 0x3df714, + 0x3dfc0b, + 0x3e018a, + 0x3e2a0a, + 0x3e2c8b, + 0x3e4810, + 0x3e4c11, + 0x3e5a4a, + 0x3e654d, + 0x3e6c4d, + 0x3e940b, + 0x219f43, + 0xa17b5883, + 0x3cc686, + 0x3df0c5, + 0x27a587, + 0x2ddec6, + 0x164bf82, + 0x2729c9, + 0x20c004, + 0x2f0788, + 0x226403, + 0x32f5c7, + 0x247f82, + 0x2bbdc3, + 0xa1a0e042, + 0x2dd846, + 0x2defc4, + 0x2c8404, + 0x3a0f43, + 0xa22da842, + 0xa262f444, + 0x2664c7, + 0xa2a35b02, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x117bc8, + 0x20d903, 0x2000c2, - 0xae888, - 0x1454408, - 0x7b64a, - 0x266a83, - 0x202881, + 0x793c8, + 0x216542, + 0x343b43, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x202b03, + 0x33d956, + 0x365753, + 0x258bc9, + 0x2b0e88, + 0x2c4a09, + 0x31c146, + 0x3509d0, + 0x218053, + 0x33eb48, + 0x285c87, + 0x2929c7, + 0x2aebca, + 0x363749, + 0x333bc9, + 0x25dd0b, + 0x34a906, + 0x32b98a, + 0x22ac46, + 0x238c43, + 0x231805, + 0x206c48, + 0x28b04d, + 0x35434c, + 0x271047, + 0x309f4d, + 0x22f004, + 0x23a30a, + 0x23b0ca, + 0x23b58a, + 0x218347, + 0x2461c7, + 0x249d44, + 0x279ec6, + 0x34abc4, + 0x222bc8, + 0x386e49, + 0x209a46, + 0x308cc8, + 0x24dd4d, + 0x2dcf09, + 0x318348, + 0x24d887, + 0x21364a, + 0x25bb46, + 0x34bbc4, + 0x2298c7, + 0x3d8b8a, + 0x242f8e, + 0x2823c5, + 0x29788b, + 0x232789, + 0x280609, + 0x20d547, + 0x20d54a, + 0x2d3807, + 0x306389, + 0x37b048, + 0x37948b, + 0x2efe85, + 0x23770a, + 0x233c89, + 0x33324a, + 0x22654b, + 0x2297cb, + 0x25da95, + 0x2f0c45, + 0x24d905, + 0x24064a, + 0x26ba4a, + 0x390f47, + 0x23d343, + 0x2cd108, + 0x2e640a, + 0x22c346, + 0x261289, + 0x27c4c8, + 0x2e1dc4, + 0x2512c9, + 0x2d49c8, + 0x2d5707, + 0x2510c6, + 0x3967c7, + 0x399b07, + 0x248c45, + 0x37500c, + 0x3e16c5, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x216542, + 0x216543, + 0x2296c3, + 0x20d903, + 0x20cb83, + 0x216543, + 0x2296c3, + 0xd903, + 0x241c43, + 0x20cb83, + 0x1d5b83, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x793c8, + 0x216542, + 0x216543, + 0x3a8607, + 0x17b1c4, + 0x2296c3, + 0xbbc4, + 0x20cb83, + 0x19045, + 0x216542, + 0x2104c2, + 0x31d0c2, + 0x206002, + 0x205c02, + 0x2160c2, + 0x9a6c6, + 0x5c549, + 0x182487, + 0x1550e, + 0x99049, + 0x482ccc3, + 0x95c87, + 0x152e06, + 0x1643, + 0x11e505, + 0xc1, + 0x5216543, + 0x222bc3, + 0x2f5503, + 0x343b43, + 0x243543, + 0x216443, + 0x2e8706, + 0x2296c3, + 0x20cb83, + 0x202883, + 0x793c8, + 0x209b84, + 0x3a2887, + 0x3a0f83, + 0x25e704, + 0x20d3c3, + 0x20d5c3, + 0x343b43, + 0xb46c7, + 0x9c4, + 0x12db83, + 0x10e645, + 0x66000c2, + 0x53c43, + 0x6a16542, + 0x6e90b89, + 0x7096ac9, + 0x96f4d, + 0x9728d, + 0x31d0c2, + 0xb1b84, + 0x10e689, + 0x2003c2, + 0x76b1a88, + 0x105504, + 0x320b43, + 0x793c8, + 0x49e04, + 0x1407242, + 0x14005c2, + 0x1407242, + 0x151a146, + 0x23bb83, + 0x2cc803, + 0x7e16543, + 0x23a304, + 0x8622bc3, + 0x8f43b43, + 0x2042c2, + 0x2b1b84, + 0x2296c3, + 0x38c643, + 0x203c82, + 0x20cb83, + 0x221a42, + 0x30a303, + 0x201ec2, + 0x26a603, + 0x220b03, + 0x2089c2, + 0x793c8, + 0x82fdcc9, + 0x27b43, + 0x23bb83, + 0x20b2c8, + 0x8b8c643, + 0x203c82, + 0x30a303, + 0x201ec2, + 0x26a603, + 0x220b03, + 0x2089c2, + 0x259187, + 0x30a303, + 0x201ec2, + 0x26a603, + 0x220b03, + 0x2089c2, + 0x216543, + 0x4702, + 0x6c43, + 0x2bc2, + 0x13242, + 0xe8c2, + 0x11de42, + 0x4a42, + 0x4da82, + 0x253c43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x243543, + 0x216443, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x204642, + 0x21f6c3, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x8503, + 0x2d4c2, + 0x253c43, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x2296c3, + 0x20cb83, + 0x355b45, + 0x22a042, + 0x2000c2, + 0x793c8, + 0xaec0ad2, + 0x1472588, + 0x1b2b8a, + 0x3ec5, + 0x343b43, + 0x230d41, 0x2009c1, 0x200a01, - 0x201781, - 0x202101, - 0x20bac1, - 0x201d01, - 0x203001, - 0x230d41, + 0x202c41, + 0x201b41, + 0x211101, + 0x209c01, + 0x230e41, + 0x2fd181, 0x200001, 0x2000c1, 0x200201, - 0x146bc5, - 0xae888, + 0x146c05, + 0x793c8, 0x200101, 0x201381, 0x200501, @@ -2344,7257 +2355,7413 @@ var nodes = [...]uint32{ 0x200581, 0x2003c1, 0x200a81, - 0x20c241, + 0x2210c1, 0x200401, 0x200741, 0x2007c1, 0x200081, - 0x201501, - 0x207d01, - 0x20a8c1, - 0x202341, - 0x201c41, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x212402, - 0x22ea43, - 0x233fc3, + 0x2017c1, + 0x201641, + 0x207281, + 0x2024c1, + 0x208481, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x216542, + 0x216543, + 0x222bc3, 0x2003c2, - 0x23e083, - 0x1a083, - 0x178d87, - 0x7f3c7, - 0x36fc6, - 0x3a8ca, - 0x91248, - 0x54d88, - 0x55a47, - 0x6e8c6, - 0xec7c5, - 0x1b5a05, - 0x129783, - 0x13a06, - 0x134c46, - 0x24cd44, - 0x334907, - 0xae888, - 0x2e5904, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x12402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x32f388, - 0x207d44, - 0x233f04, - 0x204cc4, - 0x2bcd07, - 0x2e21c7, - 0x22ea43, - 0x23670b, - 0x323dca, - 0x34b9c7, - 0x238548, - 0x354a88, - 0x233fc3, - 0x25e4c7, - 0x280203, - 0x211448, - 0x212e49, - 0x20e704, - 0x2191c3, - 0x23b948, - 0x23cb03, - 0x2dfb4a, - 0x2e4c06, - 0x3b0107, - 0x217fc3, - 0x323606, - 0x2760c8, - 0x23e083, - 0x257546, - 0x2f93cd, - 0x2fba08, - 0x3010cb, - 0x2b2946, - 0x341847, - 0x21ecc5, - 0x3da84a, - 0x22ac05, - 0x24fc8a, - 0x21fcc2, - 0x20aa43, - 0x32a684, + 0x20cb83, + 0x22a83, + 0xb46c7, + 0x1cdf07, + 0x32f46, + 0x4280a, + 0x95748, + 0x60c88, + 0x61607, + 0xbc3c4, + 0x15c246, + 0xeec85, + 0x10f7c5, + 0x129643, + 0x30846, + 0x13906, + 0x25dd04, + 0x336147, + 0x793c8, + 0x2e8fc4, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x16542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x330b88, + 0x202304, + 0x23c4c4, + 0x20e804, + 0x39dac7, + 0x2e59c7, + 0x216543, + 0x23ec8b, + 0x33100a, + 0x38f947, + 0x300288, + 0x353348, + 0x222bc3, + 0x3c2e87, + 0x2f5503, + 0x214fc8, + 0x224309, + 0x2b1b84, + 0x243543, + 0x244688, + 0x216443, + 0x2e320a, + 0x2e8706, + 0x3b1d47, + 0x2296c3, + 0x2f1b46, + 0x3d2288, + 0x20cb83, + 0x275546, + 0x2fd6cd, + 0x2ffe48, + 0x305b0b, + 0x223bc6, + 0x354b47, + 0x21d985, + 0x22e68a, + 0x2fce05, + 0x26f9ca, + 0x22a042, + 0x201643, + 0x35a784, 0x200006, - 0x3ba683, - 0x2ae783, - 0x281bc3, - 0x207d43, - 0x323a43, - 0x2029c2, - 0x309b85, - 0x2b07c9, - 0x201ac3, - 0x240843, - 0x233f03, - 0x232283, + 0x3bb603, + 0x2b4083, + 0x28bb03, + 0x202303, + 0x37a403, + 0x202002, + 0x39d805, + 0x2b5949, + 0x209983, + 0x2492c3, + 0x203b43, + 0x216c43, 0x200201, - 0x39b3c7, - 0x2ec005, - 0x3c2003, - 0x2a4d43, - 0x3dff03, - 0x204cc4, - 0x356e43, - 0x227608, - 0x322bc3, - 0x310c4d, - 0x280c88, - 0x210606, - 0x28f1c3, - 0x366903, - 0x394443, - 0xce2ea43, - 0x233808, - 0x236704, - 0x23d3c3, - 0x241283, + 0x2d2807, + 0x2eaa85, + 0x3c1fc3, + 0x26b383, + 0x3e9683, + 0x20e804, + 0x3c3303, + 0x2271c8, + 0x35bdc3, + 0x3e1ecd, + 0x284a88, + 0x20b486, + 0x2e9443, + 0x35a2c3, + 0x361ac3, + 0xda16543, + 0x23bdc8, + 0x23ec84, + 0x247203, + 0x249f03, 0x200106, - 0x244e88, - 0x20f983, - 0x21fa43, - 0x2b6ec3, - 0x222383, - 0x3da883, - 0x22f203, - 0x233fc3, - 0x22d003, - 0x249203, - 0x24cbc3, - 0x28b003, - 0x28f143, - 0x20a003, + 0x24e888, + 0x266943, + 0x228fc3, + 0x2ba1c3, + 0x220a83, + 0x22e6c3, + 0x23a543, + 0x222bc3, + 0x22d743, + 0x255ec3, + 0x209a43, + 0x290583, + 0x325243, + 0x20ae83, + 0x232d43, + 0x3a4e85, + 0x25c504, + 0x25dfc7, + 0x25c082, + 0x260183, + 0x263c46, 0x265743, - 0x392345, - 0x2516c4, - 0x252a47, - 0x2ba882, - 0x254b03, - 0x258106, - 0x259243, - 0x259c43, - 0x27cc83, - 0x26f183, - 0x20b183, - 0x3b43c3, - 0x29d847, - 0xd266a83, - 0x2c3fc3, - 0x28f203, - 0x204903, - 0x20e703, - 0x2ed2c3, - 0x20e905, - 0x37fd83, - 0x24b709, + 0x266c03, + 0x2822c3, + 0x35cb03, + 0x21fb43, + 0x32d103, + 0x2a1807, + 0xe743b43, + 0x2d3103, + 0x207c83, + 0x20e443, + 0x26a7c3, + 0x217203, + 0x3b5945, + 0x37cac3, + 0x252749, 0x2012c3, - 0x313a83, - 0xd63cb83, - 0x2d5e43, - 0x204d03, - 0x218bc8, - 0x2b0706, - 0x26ef46, - 0x2ba8c6, - 0x38f887, - 0x205e03, - 0x215f83, - 0x23cb03, - 0x291346, - 0x20e982, - 0x2b8a83, - 0x33b645, - 0x217fc3, - 0x31da07, - 0x1605803, - 0x2760c3, - 0x212483, - 0x232383, - 0x235fc3, - 0x23e083, - 0x21d506, - 0x3b5d46, - 0x380703, - 0x2fa583, - 0x216983, - 0x250983, - 0x317883, - 0x306d43, - 0x308843, - 0x3a0645, - 0x235403, - 0x3b2a86, - 0x221d43, - 0x27fc88, - 0x2201c3, - 0x2201c9, - 0x273288, - 0x221e48, - 0x225645, - 0x36000a, - 0x38e84a, - 0x22f98b, - 0x238108, - 0x294983, - 0x2f2a03, - 0x393d83, - 0x39fa83, - 0x316248, - 0x37a903, - 0x38a184, - 0x21cc42, - 0x20de03, - 0x260e03, + 0x3139c3, + 0xea53203, + 0x2daf43, + 0x20e843, + 0x214808, + 0x2b5886, + 0x35c8c6, + 0x2be186, + 0x267347, + 0x202143, + 0x233243, + 0x216443, + 0x295846, + 0x2165c2, + 0x2e69c3, + 0x33c405, + 0x2296c3, + 0x31c887, + 0x160d903, + 0x29ae43, + 0x2183c3, + 0x23c9c3, + 0x23b843, + 0x20cb83, + 0x21de86, + 0x202fc6, + 0x37db83, + 0x29a8c3, + 0x21f6c3, + 0x259143, + 0x317783, + 0x309603, + 0x30ac03, + 0x219045, + 0x24c343, + 0x250046, + 0x21b103, + 0x2f4f88, + 0x22a543, + 0x22a549, + 0x37ad08, + 0x220548, + 0x22eac5, + 0x38ac4a, + 0x3e08ca, + 0x3e110b, + 0x3e1ac8, + 0x2aa6c3, + 0x230143, + 0x390b83, + 0x2f34c3, + 0x312588, + 0x355303, + 0x36c344, + 0x203bc2, + 0x22e683, + 0x24c0c3, 0x2007c3, - 0x22dc43, - 0x27b143, - 0x234f43, - 0x21fcc2, - 0x22b8c3, - 0x239683, - 0x319ec3, - 0x31b744, - 0x32a684, - 0x21cb03, - 0xae888, + 0x3d8883, + 0x281003, + 0x202883, + 0x22a042, + 0x2d3703, + 0x241403, + 0x31a2c3, + 0x31b444, + 0x35a784, + 0x227083, + 0x793c8, + 0xdf1854c, + 0xe2ac245, + 0xbb705, 0x2000c2, 0x200ac2, - 0x2029c2, - 0x201802, + 0x202002, + 0x202cc2, 0x200202, - 0x205082, - 0x249382, - 0x2031c2, + 0x202402, + 0x250cc2, + 0x202bc2, 0x200382, 0x200c42, - 0x349242, - 0x20a942, - 0x2720c2, + 0x30df02, + 0x203742, + 0x277782, 0x200a82, - 0x2f2402, - 0x205b42, - 0x211c82, - 0x216982, - 0x206002, - 0x205502, + 0x2160c2, + 0x208402, + 0x219d02, + 0x2037c2, + 0x2cb042, + 0x205d42, 0x200682, - 0x2113c2, + 0x214f42, + 0x212742, 0x202b02, - 0x208502, - 0x202442, - 0x207142, - 0x202a82, + 0x201702, + 0x203782, + 0x202a02, 0xc2, 0xac2, - 0x29c2, - 0x1802, + 0x2002, + 0x2cc2, 0x202, - 0x5082, - 0x49382, - 0x31c2, + 0x2402, + 0x50cc2, + 0x2bc2, 0x382, 0xc42, - 0x149242, - 0xa942, - 0x720c2, + 0x10df02, + 0x3742, + 0x77782, 0xa82, - 0xf2402, - 0x5b42, - 0x11c82, - 0x16982, - 0x6002, - 0x5502, + 0x160c2, + 0x8402, + 0x19d02, + 0x37c2, + 0xcb042, + 0x5d42, 0x682, - 0x113c2, + 0x14f42, + 0x12742, 0x2b02, - 0x8502, - 0x2442, - 0x7142, - 0x2a82, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x83c2, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x12402, - 0x212402, - 0x23e083, - 0xee2ea43, - 0x266a83, - 0x23cb03, - 0x1c0443, - 0x230242, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x5803, - 0x1c0443, - 0x23e083, - 0x3602, + 0x1702, + 0x3782, + 0x2a02, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x1642, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x16542, + 0x216542, + 0x20cb83, + 0x10216543, + 0x343b43, + 0x216443, + 0xeb2c7, + 0x7ca83, + 0x2386c2, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x30103, + 0x2296c3, + 0xd903, + 0x7ca83, + 0x20cb83, + 0xe042, 0x2001c2, - 0x1567b85, - 0x146bc5, - 0x210402, - 0xae888, - 0x12402, - 0x2359c2, - 0x206b02, - 0x208142, - 0x20e742, - 0x23bec2, - 0x1b5a05, - 0x201402, - 0x209282, + 0x15ca1c5, + 0x146c05, + 0x20cd42, + 0x793c8, + 0x16542, + 0x23dec2, + 0x204202, + 0x202702, + 0x23a382, + 0x24ba82, + 0x10f7c5, + 0x201482, + 0x203c82, 0x201102, - 0x2053c2, - 0x205b42, - 0x2408c2, - 0x20ee42, - 0x256382, - 0xfe72cc4, + 0x203382, + 0x208402, + 0x2473c2, + 0x20b5c2, + 0x21c282, + 0x11278384, 0x142, - 0x178d87, - 0x30a83, - 0x12808d, - 0xec849, - 0x118a0b, - 0xf0a88, - 0x5bd09, - 0x1145c6, - 0x266a83, - 0xae888, + 0xb46c7, + 0x15a43, + 0x1b63cd, + 0xeed09, + 0xef94b, + 0xf1748, + 0x64f09, + 0x114786, + 0x343b43, + 0x793c8, 0x9c4, - 0x157bc3, - 0x2105, - 0xae888, - 0xe7607, - 0x1104d007, - 0x56546, - 0x2149, - 0xa28e, - 0x14ca47, - 0x150e583, + 0x12db83, + 0x10e645, + 0x793c8, + 0xebe47, + 0x12455f47, + 0x12a5f244, + 0x62246, + 0x10e689, + 0xb448e, + 0x13e247, + 0x15d8303, + 0x12e0ad42, + 0x9989, + 0xa144, 0x2000c2, - 0x24cd44, - 0x212402, - 0x22ea43, - 0x204542, - 0x233fc3, - 0xfa03, + 0x25dd04, + 0x216542, + 0x216543, + 0x2104c2, + 0x222bc3, + 0x1a003, 0x200382, - 0x2e5904, - 0x2191c3, - 0x206a02, - 0x217fc3, - 0x3bec2, + 0x2e8fc4, + 0x243543, + 0x256e02, + 0x2296c3, + 0x4ba82, 0x2003c2, - 0x23e083, - 0x243bc6, - 0x333b4f, + 0x20cb83, + 0x24d906, + 0x33538f, 0x602, - 0x72a143, - 0x2f3c0a, - 0xae888, - 0x212402, - 0x280203, - 0x266a83, - 0x23cb03, - 0x5803, - 0x1522f06, - 0x1c4104, - 0xa288, - 0x140dbcb, - 0x156c4ca, - 0xf3289, - 0x15da64a, - 0x1513f07, - 0xaab4b, - 0x10d4c5, - 0xf0545, - 0x11d749, - 0x146bc5, - 0x178d87, - 0x1c4104, - 0xfe2c4, - 0x212402, - 0x22ea43, - 0x266a83, - 0x217fc3, + 0x723543, + 0x2f5dca, + 0x793c8, + 0x216542, + 0x2f5503, + 0x343b43, + 0x216443, + 0xd903, + 0x147b5e07, + 0x157cd06, + 0x13f046, + 0x14bc4b88, + 0x1db944, + 0x14ebe40a, + 0x15abe40d, + 0xb4488, + 0x142e44b, + 0x147888a, + 0x15c66b43, + 0xf3949, + 0x16104b48, + 0x1664c347, + 0x15e360a, + 0x1513e47, + 0xaec8b, + 0x16a9068c, + 0xa5545, + 0xcf9c5, + 0x11c5c9, + 0x1a0c84, + 0x117703, + 0x152be545, + 0x124443, + 0x15635c43, + 0x124443, + 0x1d7607, + 0x2bdc2, + 0x6502, + 0x6502, + 0x4182, + 0x6502, + 0x4a42, + 0xd42, + 0x3242, + 0x146c05, + 0xb46c7, + 0x1db944, + 0x102784, + 0x216542, + 0x216543, + 0x343b43, + 0x2296c3, 0x2000c2, 0x200c82, - 0x205102, - 0x1362ea43, - 0x23d542, - 0x233fc3, + 0x206342, + 0x17a16543, + 0x247382, + 0x222bc3, 0x201282, - 0x208882, - 0x266a83, - 0x23ca82, - 0x27b882, - 0x22c302, + 0x234402, + 0x343b43, + 0x2038c2, + 0x271cc2, + 0x22f402, 0x200cc2, - 0x295f42, + 0x29a402, 0x200802, 0x200d82, - 0x25b542, - 0x2295c2, - 0x205742, - 0x13150c, - 0x2be4c2, - 0x250d42, - 0x227082, - 0x24a282, - 0x23cb03, + 0x205102, + 0x2870c2, + 0x2027c2, + 0x132a0c, + 0x2c1442, + 0x25adc2, + 0x230c02, + 0x253582, + 0x216443, 0x200bc2, - 0x217fc3, - 0x209ec2, - 0x25c042, - 0x23e083, - 0x3081c2, - 0x208502, - 0x20a1c2, - 0x204782, + 0x2296c3, + 0x20f502, + 0x298642, + 0x20cb83, + 0x249342, + 0x202b02, + 0x20a0c2, + 0x2014c2, 0x2010c2, - 0x230ac2, - 0x205682, - 0x22b302, - 0x2270c2, - 0x32748a, - 0x36f50a, - 0x3a124a, - 0x3e2d42, - 0x208902, - 0x20e8c2, - 0x13aa7f09, - 0x13f61e8a, - 0x142fc47, - 0x142050c2, - 0x143a083, - 0x1742, - 0x161e8a, - 0x162b0e, - 0x241ec4, - 0x57fc5, - 0x14a2ea43, - 0x3dc03, - 0x233fc3, - 0x24d704, - 0x266a83, - 0x20e704, - 0x2191c3, - 0x13d289, - 0x157686, - 0x23cb03, - 0xf1584, - 0x1598c3, - 0x217fc3, - 0x2a7c5, - 0x205803, - 0x23e083, - 0x1466d84, - 0x235403, - 0x181584, - 0x20aa43, - 0xae888, - 0x154f043, - 0x12a086, - 0x146e844, - 0x1a45, - 0x14c80a, - 0x124d82, - 0x15408acd, - 0x1adec6, - 0x159a140b, - 0xc951, - 0x15ea7f09, - 0x1ac8, - 0x69908, - 0x1c9415c7, - 0x3502, - 0xa8087, - 0x221ce, - 0x146bcb, - 0x14a88b, - 0x1c008a, - 0x1683c7, - 0xae888, - 0x120d48, - 0xa807, - 0x1cc176cb, - 0x1a087, - 0xcfc2, - 0x2b20d, - 0x16a7c7, - 0xb1bca, - 0x1e174f, - 0x12308f, - 0x161e82, - 0x12402, - 0x8af48, - 0x1d10778c, - 0x1570a, - 0xe710a, - 0x19004a, - 0x80a88, - 0x1d208, - 0x5a488, - 0xe75c8, - 0x1388, - 0xf982, - 0x167c0f, - 0xc6d8b, - 0x10f508, - 0x35cc7, - 0x4878a, - 0xbc3cb, - 0x34449, - 0x48687, - 0x83986, - 0x1d108, - 0x18ea0c, - 0x161347, - 0x1ae40a, - 0xec88, - 0x10ae8e, - 0x10b64e, - 0x16820b, - 0x168a8b, - 0x658cb, - 0x66609, - 0x6754b, - 0xbd4cd, - 0xf548b, - 0xf5fcd, - 0xf634d, - 0x10360a, - 0x12a4cb, - 0x166c0b, - 0x3bfc5, - 0x1d58b810, - 0x13514f, - 0x72e8f, - 0x2470d, - 0x13d450, - 0x293c2, - 0x1da1f8c8, - 0x7f248, - 0xea790, - 0x17fe0e, - 0x1df22b85, - 0x4c84b, - 0x13c390, - 0x1d30a, - 0x168c49, - 0x680c7, - 0x68407, - 0x685c7, - 0x68947, - 0x69e07, - 0x6a2c7, - 0x6bb07, - 0x6c047, - 0x6d587, - 0x6d907, - 0x6dfc7, - 0x6e187, - 0x6e347, - 0x6e507, - 0x6f307, - 0x6fc47, - 0x70a87, - 0x70e47, - 0x71487, - 0x71747, - 0x71907, - 0x71c07, - 0x71f87, - 0x72187, - 0x748c7, - 0x74a87, - 0x74c47, - 0x75dc7, - 0x77207, - 0x776c7, - 0x77dc7, - 0x78087, - 0x78407, - 0x785c7, - 0x789c7, - 0x78e07, - 0x792c7, - 0x79847, - 0x79a07, - 0x79bc7, - 0x7a007, - 0x7aa87, - 0x7afc7, - 0x7b207, - 0x7b3c7, - 0x7bb87, - 0x7c187, - 0x9a42, - 0x5a58a, - 0x13808, - 0x1baf8c, - 0x4eb87, - 0x918c5, - 0x9b311, - 0x1bb46, - 0x104dca, - 0x8adca, - 0x56546, - 0xb3ecb, + 0x215a82, + 0x20d782, + 0x232982, + 0x22cec2, + 0x325d0a, + 0x36918a, + 0x39ecca, + 0x3e9b42, + 0x20cec2, + 0x2be702, + 0x17f8cc49, + 0x183bb68a, + 0x14380c7, + 0x18601682, + 0x1430483, + 0x2c02, + 0x1bb68a, + 0x14f0ce, + 0x21d684, + 0xe8805, + 0x18e16543, + 0x48383, + 0x222bc3, + 0x256d44, + 0x343b43, + 0x2b1b84, + 0x243543, + 0x13e049, + 0x133e86, + 0x216443, + 0xf1dc4, + 0x1b03, + 0x2296c3, + 0x149f05, + 0x20d903, + 0x20cb83, + 0x1561c04, + 0x24c343, + 0x114bc4, + 0x201643, + 0x793c8, + 0x154db43, + 0x123486, + 0x155c1c4, + 0x1a0d45, + 0x1a0a8a, + 0x130602, + 0x199a16cd, + 0x1b3dc6, + 0x147f11, + 0x19f8cc49, + 0x1a0dc8, + 0x42008, + 0x20869487, + 0x3b42, + 0x18cdc7, + 0x208ce, + 0x146c0b, + 0x148d8b, + 0x1c0dca, + 0x34347, + 0x793c8, + 0xb4188, + 0xfd87, + 0x20c1fe0b, + 0x22a87, + 0x4242, + 0x3288d, + 0x163907, + 0x127b0a, + 0x12510c, + 0x1252cf, + 0x1ca4cf, + 0x212eb34d, + 0x2e702, + 0x16542, + 0x904c8, + 0x214e91cc, + 0x1aab8a, + 0xeb94a, + 0x7d54a, + 0x84888, + 0x1db88, + 0x68608, + 0xebe08, + 0x17bbc8, + 0x3242, + 0x1ca24f, + 0xcaa8b, + 0x1dcf08, + 0x3e1c7, + 0x874ca, + 0x3aa4b, + 0x51b89, + 0x873c7, + 0x136f46, + 0x1da88, + 0x1e0a8c, + 0xf4547, + 0x31a0a, + 0x1c74c8, + 0x32f4e, + 0x3370e, + 0x3418b, + 0x3518b, + 0x3678b, + 0xfc849, + 0x880cb, + 0xb688d, + 0x158a8b, + 0xf7a8d, + 0xf7e0d, + 0x12378a, + 0x15a5cb, + 0x1e150b, + 0x3f545, + 0x219c4bd0, + 0x21c41a88, + 0x3610f, + 0x7854f, + 0x2254d, + 0x17a710, + 0x13242, + 0x22258908, + 0x1cdd88, + 0x1b0350, + 0x106a4e, + 0x2275bd85, + 0x555cb, + 0x13d150, + 0x1dc8a, + 0x35349, + 0x6ff47, + 0x70287, + 0x70447, + 0x71587, + 0x72407, + 0x72787, + 0x734c7, + 0x73a07, + 0x73f07, + 0x74287, + 0x74947, + 0x74b07, + 0x74cc7, + 0x74e87, + 0x75207, + 0x756c7, + 0x75ec7, + 0x76287, + 0x768c7, + 0x76b87, + 0x76d47, + 0x77047, + 0x77647, + 0x77847, + 0x78d07, + 0x78ec7, + 0x79087, + 0x79807, + 0x7a047, + 0x7a8c7, + 0x7d387, + 0x7d7c7, + 0x7db47, + 0x7dd07, + 0x7e107, + 0x7e547, + 0x7ea07, + 0x7ef87, + 0x7f147, + 0x7f307, + 0x7f747, + 0x7fd07, + 0x80247, + 0x80847, + 0x80a07, + 0x810c7, + 0x81607, + 0xc342, + 0x6870a, + 0x1a608, + 0x1bbfcc, + 0x12fb47, + 0x44405, + 0xc3d91, + 0x13dc6, + 0x12100a, + 0x9034a, + 0x62246, + 0xb7f4b, 0x642, - 0x31351, - 0xc5d89, - 0x9bf49, - 0x9d306, - 0x5b542, - 0x1b21ca, - 0xafcc9, - 0xb040f, - 0xb0a0e, - 0xb3108, - 0x11b08, - 0xb5c2, - 0x6ed89, - 0x1e3586c9, - 0xbd049, - 0xbd04c, - 0x8f90e, - 0x4b8c, - 0xf2f8f, - 0x1bf08e, - 0x12b40c, - 0x33449, - 0x45391, - 0x45948, - 0x1a4e12, - 0x593cd, - 0x69acd, - 0x78f8b, - 0x81855, - 0x860c9, - 0x1518ca, - 0x188809, - 0x1aad50, - 0x1ae8cb, - 0x9890f, - 0xa868b, - 0xa914c, - 0xaa110, - 0xb7dca, - 0xb894d, - 0xd3a0e, - 0x195a0a, - 0xc1e8c, - 0xc4e94, - 0xc5a11, - 0xc694b, - 0xc858f, - 0xcbb0d, - 0xcd20e, - 0xd048c, - 0xd0c8c, - 0xd370b, - 0x172a8e, - 0x199ed0, - 0xdba8b, - 0xdc74d, - 0xdf30f, - 0xe804c, - 0xe9d8e, - 0xf3651, - 0x10570c, - 0x1d4047, - 0x10d14d, - 0x11db8c, - 0x144550, - 0x16528d, - 0x16efc7, - 0x176790, - 0x19dd08, - 0x1a3e8b, - 0xba1cf, - 0x1bb208, - 0x14bf0d, - 0x1125d0, - 0x178c89, - 0x1e78b7c8, - 0x1eabf946, - 0xc0843, - 0x3ec49, - 0xc7405, - 0x6902, - 0x48c09, - 0x14c50a, - 0x1efa52c6, - 0x15a52cd, - 0x1f36a9c4, - 0x57d06, - 0x1b68a, - 0x27bcd, - 0x1f52b109, - 0x216c3, - 0x11bb8a, - 0xe6751, - 0xe6b89, - 0xe7087, - 0xe7d88, - 0xe8447, - 0x4ec48, - 0xcacb, - 0x1311c9, - 0xf1e10, - 0xf22cc, - 0x1faf270d, - 0xf3a88, - 0xf4ec5, - 0x147e08, - 0x19ce4a, - 0x18a347, - 0x2542, - 0x1ff3f5d5, - 0x13d08a, - 0x1320c9, - 0x9e588, - 0x6ab09, - 0x7cb45, - 0x11d88a, - 0x92e0f, - 0x10d54b, - 0x11ff4c, - 0x176cd2, - 0xe9c6, - 0x7ce85, - 0x117a48, - 0xf84cb, - 0xf1151, - 0x16acc7, - 0x4da0a, - 0x20300485, - 0x1b330c, - 0x139c43, - 0x197a86, - 0x408c2, - 0x1089cb, - 0x10948a, - 0x150980c, - 0x7f5c8, - 0xf6188, - 0x2069e606, - 0x17d5c7, - 0xd782, - 0x7742, - 0x1a55d0, - 0x65087, - 0x3074f, - 0x13a06, - 0xd2b8e, - 0x99a0b, - 0x3dd48, - 0x34809, - 0x5da12, - 0x197b4d, - 0x118088, - 0x1188c9, - 0xee00d, - 0x19f749, - 0xb48b, - 0x6c348, - 0x71d88, - 0x75a88, - 0x80389, - 0x8058a, - 0x84b0c, - 0x166eca, - 0xf17ca, - 0x1178c7, - 0x9a50a, - 0x1cda4d, - 0x45c51, - 0x20acd506, - 0x1b994b, - 0x12f80c, - 0x94388, - 0x149449, - 0x160b0d, - 0x68b90, - 0x1812cd, - 0x4642, - 0x4a68d, - 0x72c2, - 0x1f702, - 0x11780a, - 0x756ca, - 0x20e7b508, - 0x104cca, - 0x11f80b, - 0x10b8cc, - 0x12048a, - 0x12070f, - 0x120ace, - 0x171cd, - 0x211e2c05, - 0x12d408, - 0x3602, - 0x1422383, - 0x415505, - 0x45d884, - 0x16202c0e, - 0x16b59cce, - 0x1720180a, - 0x17b9184e, - 0x1835788e, - 0x18b7f38c, - 0x142fc47, - 0x142fc49, - 0x143a083, - 0x1926060c, - 0x19b49bc9, - 0x1a36af09, - 0x1ab71749, - 0x1742, - 0x2b51, - 0x159c11, - 0x174d, - 0x1b6451, - 0x1577d1, - 0x17f2cf, - 0x6054f, - 0x149b0c, - 0x16ae4c, - 0x17168c, - 0x1af28d, - 0x15d915, - 0xc1a8c, - 0xc778c, - 0x135a10, - 0x141acc, - 0x14af8c, - 0x18ad99, - 0x191599, - 0x1bdfd9, - 0x1cb4d4, - 0x1d6294, - 0x1e02d4, - 0x1e2714, - 0xa994, - 0x1b2c1b49, - 0x1b9e0589, - 0x1c2c7849, - 0x16645b49, - 0x1742, - 0x16e45b49, - 0x1742, - 0xa98a, - 0x1742, - 0x17645b49, - 0x1742, - 0xa98a, - 0x1742, - 0x17e45b49, - 0x1742, - 0x18645b49, - 0x1742, - 0x18e45b49, - 0x1742, - 0xa98a, - 0x1742, - 0x19645b49, - 0x1742, - 0xa98a, - 0x1742, - 0x19e45b49, - 0x1742, - 0x1a645b49, - 0x1742, - 0xa98a, - 0x1742, - 0x1ae45b49, - 0x1742, - 0xa98a, - 0x1742, - 0x1b645b49, - 0x1742, - 0x1be45b49, - 0x1742, - 0x1c645b49, - 0x1742, - 0xa98a, - 0x1742, + 0x39c91, + 0xc5889, + 0xa0689, + 0xa12c6, + 0x5102, + 0x9c50a, + 0xb4e49, + 0xb558f, + 0xb5b8e, + 0xb7288, + 0x22a17a92, + 0x19b88, + 0x22f2fd07, + 0x1ec82, + 0x15c709, + 0x15490a, + 0x23347589, + 0x19de09, + 0x19de0c, + 0x15f4b, + 0x436ce, + 0xe6cc, + 0xf364f, + 0x1bfdce, + 0x4594c, + 0x5e789, + 0x658d1, + 0x65e88, + 0x7bd12, + 0x7cd4d, + 0x7e6cd, + 0x8564b, + 0x8b795, + 0x932c9, + 0x18500a, + 0x1b0049, + 0x1d4350, + 0x99acb, + 0x9ee0f, + 0xa3fcb, + 0xad6cc, + 0xbac90, + 0xd844a, + 0x18264d, + 0x19210e, + 0xbc48a, + 0xc090c, + 0x1997d4, + 0xc5511, + 0xca64b, + 0xccc8f, + 0xd048d, + 0xd42ce, + 0xd55cc, + 0xd5dcc, + 0xd814b, + 0x14284e, + 0x197d50, + 0x1aa38b, + 0xddacd, + 0xe730f, + 0xec90c, + 0x108b4e, + 0x10c891, + 0x18214c, + 0x11ca07, + 0x144e8d, + 0x15ffcc, + 0x1693d0, + 0x17208d, + 0x172dc7, + 0x195a10, + 0x1a5888, + 0x1abd0b, + 0xbd9cf, + 0x1bc248, + 0x68e8d, + 0x111f10, + 0x174389, + 0x237c4b88, + 0x23ac2a86, + 0xc3943, + 0x52a89, + 0x54c9, + 0xcbc45, + 0x7bc2, + 0x18fd89, + 0x62c8a, + 0x23e7c1c6, + 0x147c1cd, + 0x24363b04, + 0x1da806, + 0x2630a, + 0x2778d, + 0x246da54b, + 0x2484f809, + 0x2b203, + 0x11b88a, + 0xe9951, + 0xe9d89, + 0xeb8c7, + 0xec648, + 0xecd07, + 0x12fc08, + 0x14808b, + 0x1326c9, + 0xf2550, + 0xf2a0c, + 0x24ef31cd, + 0xf5c48, + 0xf7685, + 0x1d0608, + 0x19a8ca, + 0x16c507, + 0x1cc2, + 0x25239155, + 0x13de4a, + 0x1363c9, + 0x5688, + 0xa2549, + 0x1df185, + 0x11c70a, + 0x97c4f, + 0xa55cb, + 0x15ee8c, + 0xc8052, + 0x1b5a06, + 0x9a905, + 0x15f148, + 0xfa0cb, + 0xfa9d1, + 0x143847, + 0x5788a, + 0x25704a05, + 0x1b560c, + 0x13a843, + 0x1953c6, + 0x473c2, + 0x10ad8b, + 0x10b8ca, + 0x150bc4c, + 0xf48c8, + 0xf7c48, + 0x25a05706, + 0x1b7287, + 0x4a02, + 0x1ec2, + 0x1a6e50, + 0x67dc7, + 0x67ecf, + 0x30846, + 0x12270e, + 0x9d3cb, + 0x46c88, + 0x51f49, + 0x117052, + 0x11820d, + 0x118d88, + 0xef809, + 0x19c60d, + 0x112c9, + 0x6824b, + 0x69d88, + 0x73d08, + 0x75388, + 0x771c9, + 0x773ca, + 0x799cc, + 0x1e17ca, + 0xf14ca, + 0x1177c7, + 0xa38ca, + 0x738d, + 0x174cd1, + 0x25ed45c6, + 0x17768b, + 0xbe0c, + 0x414c8, + 0x3d609, + 0x14c6cd, + 0x57110, + 0x190c8d, + 0x6502, + 0x6540d, + 0x4a42, + 0x66342, + 0x11770a, + 0x263d034a, + 0x25c4a, + 0x26680b48, + 0x120f0a, + 0x12f4cb, + 0x3398c, + 0x1203ca, + 0x2692064f, + 0x120a0e, + 0x26de9a05, + 0x12bf48, + 0xe042, + 0x1420a83, + 0x1a38e20e, + 0x1ab2eb8e, + 0x1b202cca, + 0x1bb7c04e, + 0x1c32d84e, + 0x1cb3408c, + 0x14380c7, + 0x14380c9, + 0x1430483, + 0x1d3419cc, + 0x1db54e89, + 0x1e36d309, + 0x1eba0889, + 0x2c02, + 0x1a3511, + 0x12ead1, + 0x2c0d, + 0x17bf91, + 0x12d791, + 0x133fcf, + 0x14190f, + 0x154dcc, + 0x16d24c, + 0x1a07cc, + 0x1b764d, + 0x17d415, + 0xc510c, + 0xe140c, + 0x1439d0, + 0x14a18c, + 0x18758c, + 0x18df59, + 0x1bed19, + 0x1cabd9, + 0x1cc7d4, + 0x1d2454, + 0x1e8694, + 0x5e54, + 0xff14, + 0x1f2c51c9, + 0x1f9e8949, + 0x202e14c9, + 0x1a666089, + 0x2c02, + 0x1ae66089, + 0x2c02, + 0x5e4a, + 0x2c02, + 0x1b666089, + 0x2c02, + 0x5e4a, + 0x2c02, + 0x1be66089, + 0x2c02, + 0x1c666089, + 0x2c02, + 0x1ce66089, + 0x2c02, + 0x5e4a, + 0x2c02, + 0x1d666089, + 0x2c02, + 0x5e4a, + 0x2c02, + 0x1de66089, + 0x2c02, + 0x1e666089, + 0x2c02, + 0x5e4a, + 0x2c02, + 0x1ee66089, + 0x2c02, + 0x5e4a, + 0x2c02, + 0x1f666089, + 0x2c02, + 0x1fe66089, + 0x2c02, + 0x20666089, + 0x2c02, + 0x5e4a, + 0x2c02, 0x1400401, - 0xc945, - 0x1c0084, - 0x144ce03, - 0x1426d83, - 0x14fa443, - 0x2c0e, - 0x159cce, - 0x8450e, - 0x180a, - 0x19184e, - 0x15788e, - 0x17f38c, - 0x6060c, - 0x149bc9, - 0x16af09, - 0x171749, - 0xc1b49, - 0x1e0589, - 0xc7849, - 0x135acd, - 0x141b89, - 0xac49, - 0x12d5c4, - 0x132ac4, - 0x1c8a04, - 0x1c95c4, - 0xaae04, - 0x2ec44, - 0x3cd84, - 0x192d44, - 0x13904, - 0xbec06, - 0x59504, - 0x158e7c3, - 0x149987, - 0x148574c, - 0x1ac3, - 0x293c2, - 0x107788, - 0xd1784, - 0x14386, - 0xd8a84, - 0x15aa06, - 0x16b82, - 0xa8c1, - 0x20e44, - 0xb1706, - 0x171c3, - 0x1ac3, - 0xa0e83, - 0x13d385, - 0x124dc2, - 0x124dc8, - 0xeb947, - 0x131247, - 0xf982, - 0x2000c2, - 0x212402, - 0x204542, - 0x20fa02, - 0x200382, - 0x2003c2, - 0x207742, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e703, - 0x217fc3, - 0x23e083, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x217fc3, - 0x23e083, - 0x10303, - 0x266a83, - 0xe704, - 0x2000c2, - 0x24ac43, - 0x2362ea43, - 0x392747, - 0x266a83, - 0x21e1c3, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x226e0a, - 0x243bc5, - 0x216983, - 0x22dc42, - 0xae888, - 0x23adad8a, - 0xe01, - 0xae888, - 0x12402, - 0x137ac2, - 0x2432ae8b, - 0x2462e004, - 0x16a905, - 0x8cc5, - 0x107786, - 0x24a08cc5, - 0x54383, - 0x5cd83, - 0x9c4, - 0x157bc3, - 0x2105, - 0x146bc5, - 0xae888, - 0x1a087, - 0x2ea43, - 0x2ed4d, - 0x2523a707, - 0x159146, - 0x25401645, - 0x1c0992, - 0x159207, - 0x1dbca, - 0x10ac8, - 0x1dac7, - 0x6bcca, - 0x1bc448, - 0xe4f07, - 0x1ac70f, - 0x36fc7, - 0x192b46, - 0x13c390, - 0xcee8f, - 0x21c49, - 0x57d84, - 0x259592ce, - 0x185a89, - 0x6e646, - 0x111a89, - 0x193c86, - 0x1c2e06, - 0x4f10c, - 0xbc5ca, - 0x345c7, - 0x17edca, - 0x1596c9, - 0xf8e8c, - 0x1c8ca, - 0x4b8ca, - 0x2149, - 0x57d06, - 0x3468a, - 0x118f4a, - 0xa3a4a, - 0x137509, - 0xe54c8, - 0xe5746, - 0xed88d, - 0x5130b, - 0xc7c05, - 0x25f5a28c, - 0x14ca47, - 0x110289, - 0xd1047, - 0xc6114, - 0x1129cb, - 0x10f34a, - 0x5d88a, - 0xac80d, - 0x151fa09, - 0x117e4c, - 0x1186cb, - 0x88c3, - 0x88c3, - 0x36fc6, - 0x88c3, - 0x107788, - 0x15c103, - 0x46604, - 0x54603, - 0x347c5, - 0x1475903, - 0x51709, - 0xf84cb, - 0x14e82c3, - 0x154546, - 0x15037c7, - 0x1aafc7, - 0x26d41489, - 0x17e86, - 0x4ac43, - 0xae888, - 0x12402, - 0x4d704, - 0x61083, - 0x17b845, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x233f03, - 0x22ea43, - 0x233fc3, - 0x280203, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x2bd443, - 0x20aa43, - 0x233f03, - 0x24cd44, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x204ac3, - 0x28541585, - 0x142e6c3, - 0x22ea43, - 0x233fc3, - 0x20fa03, - 0x280203, - 0x266a83, - 0x20e704, - 0x3433c3, - 0x215f83, - 0x23cb03, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x216983, - 0x29219f03, - 0x176bc9, - 0x12402, - 0x3c7603, - 0x29e2ea43, - 0x233fc3, - 0x249283, - 0x266a83, - 0x2220c3, - 0x215f83, - 0x23e083, - 0x3005c3, - 0x3cd604, - 0xae888, - 0x2a62ea43, - 0x233fc3, - 0x2b31c3, - 0x266a83, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x2302c3, - 0xae888, - 0x2ae2ea43, - 0x233fc3, - 0x280203, - 0x205803, - 0x23e083, - 0xae888, - 0x142fc47, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x146bc5, - 0x178d87, - 0xc634b, - 0xe6f84, - 0xc7c05, - 0x1454408, - 0x2c10d, - 0x2c242285, + 0x147f05, + 0x1c0dc4, + 0x8903, + 0x8502, + 0x54642, + 0x1419303, + 0x1403603, + 0x14fea83, + 0x18e20e, + 0x12eb8e, + 0x89e8e, + 0x2cca, + 0x17c04e, + 0x12d84e, + 0x13408c, + 0x1419cc, + 0x154e89, + 0x16d309, + 0x1a0889, + 0xc51c9, + 0x1e8949, + 0xe14c9, + 0x143a8d, + 0x6109, + 0x101c9, + 0x3d1c2, + 0x1cbcc4, + 0x1cec84, + 0x1d1104, + 0x1df604, + 0xaef44, + 0xacdc4, + 0x4a9c4, + 0x35644, + 0x1a704, + 0x136fc4, + 0x7b0c9, + 0x7b0cc, + 0x158286, + 0x15828e, + 0x7ce84, + 0x155cf03, + 0x14a007, + 0x148ae0c, + 0x9983, + 0x136fc4, + 0x13242, + 0xe91c8, + 0xd6b04, + 0x1e9706, + 0xdd5c4, + 0x121646, + 0x1f8c2, + 0x7281, 0x27c44, - 0x12402, - 0x10103, - 0x184485, - 0x30242, - 0x53c2, - 0x34b8c5, - 0xae888, - 0x88c2, - 0x1b2c3, - 0x16b88f, - 0x12402, - 0x1063c6, + 0x69306, + 0x15b83, + 0x9983, + 0x71703, + 0xc7e43, + 0x14803, + 0xf7a03, + 0xc8045, + 0x5adc2, + 0x148a42, + 0x1a1e88, + 0xee7c7, + 0x132747, + 0x3242, 0x2000c2, - 0x24ac43, - 0x22ea43, - 0x266a83, - 0x20e704, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x216983, - 0x30242, - 0x32ff08, - 0x24cd44, - 0x37e046, - 0x3af146, - 0xae888, - 0x31a6c3, - 0x355c09, - 0x30ddd5, - 0x10dddf, - 0x22ea43, - 0x7fa87, - 0x242992, - 0x1623c6, - 0x16fd05, - 0x1d30a, - 0x168c49, - 0x24274f, - 0x2e5904, - 0x2bbf05, - 0x313850, - 0x215f87, - 0x205803, - 0x321388, - 0x134b86, - 0x293b0a, - 0x223144, - 0x2ffec3, - 0x22dc42, - 0x2fa00b, - 0x5803, - 0x182c04, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0x307183, - 0x212402, - 0x1c06c3, - 0x2a4c4, - 0x217fc3, - 0x23e083, - 0x2fc39fc5, - 0x1d5cc6, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x21e1c3, - 0x265dc3, - 0x23e083, - 0x4ac43, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x217fc3, - 0x5803, - 0x23e083, - 0x17082, - 0x2000c2, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x8cc5, - 0x1ac3, - 0x24cd44, - 0x22ea43, - 0x233fc3, - 0x217544, - 0x217fc3, - 0x23e083, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x1357c9, - 0x4cc4, - 0x22ea43, - 0xf982, - 0x233fc3, - 0x280203, - 0x204903, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0x2a82, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x36a584, - 0x20e704, - 0x217fc3, - 0x23e083, - 0x20aa43, - 0x6c02, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x2f4c43, - 0x160c3, - 0x1e1c3, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x32748a, - 0x345389, - 0x36500b, - 0x3657ca, - 0x36f50a, - 0x37c54b, - 0x393a4a, - 0x399a4a, - 0x3a124a, - 0x3a1c4b, - 0x3c4709, - 0x3cf9ca, - 0x3cfe0b, - 0x3db28b, - 0x3e0d8a, - 0xcdc2, - 0x22ea43, - 0x233fc3, - 0x280203, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0xcc4b, - 0x17fe07, - 0x5af88, - 0xee144, - 0x1c4104, - 0x94dc8, - 0xea706, - 0xcc06, - 0x1a07c9, - 0xae888, - 0x22ea43, - 0x1d304, - 0x2680c4, - 0x201c02, - 0x21e484, - 0x202645, - 0x233f03, - 0x24cd44, - 0x22ea43, - 0x236704, - 0x233fc3, - 0x24d704, - 0x2e5904, - 0x20e704, - 0x215f83, - 0x217fc3, - 0x23e083, - 0x24a845, - 0x204ac3, - 0x216983, - 0x204343, - 0x2ddf84, - 0x32a004, - 0x23a185, - 0xae888, - 0x3b4e04, - 0x3c2f86, - 0x202284, - 0x212402, - 0x3770c7, - 0x3a9947, - 0x24bb44, - 0x20e785, - 0x365485, - 0x22f845, - 0x20e704, - 0x38f948, - 0x2523c6, - 0x3641c8, - 0x2836c5, - 0x2ee705, - 0x237bc4, - 0x23e083, - 0x300ac4, - 0x37b286, - 0x243cc3, - 0x2ddf84, - 0x24fd85, - 0x248b84, - 0x2a67c4, - 0x22dc42, - 0x232ec6, - 0x3b7ec6, - 0x315fc5, - 0x2000c2, - 0x24ac43, - 0x34e12402, - 0x21fa44, + 0x216542, + 0x2104c2, + 0x218242, 0x200382, - 0x23cb03, - 0x20cac2, - 0x217fc3, 0x2003c2, - 0x2fcf46, - 0x208503, - 0x20aa43, - 0xae888, - 0xae888, - 0x266a83, - 0x1c0443, + 0x201ec2, + 0x216543, + 0x222bc3, + 0x343b43, + 0x26a7c3, + 0x2296c3, + 0x20cb83, + 0x793c8, + 0x216543, + 0x222bc3, + 0x2296c3, + 0x20cb83, + 0xb303, + 0x343b43, + 0xb1b84, 0x2000c2, - 0x35a12402, - 0x266a83, - 0x26e2c3, - 0x3433c3, - 0x22e004, - 0x217fc3, - 0x23e083, - 0xae888, + 0x253c43, + 0x29216543, + 0x3a5287, + 0x343b43, + 0x21b283, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x23098a, + 0x24d905, + 0x21f6c3, + 0x213402, + 0x793c8, + 0x296df98a, + 0xe01, + 0x793c8, + 0x16542, + 0x138402, + 0x29e4f58b, + 0x2a2093c4, + 0x163a45, + 0x1403ec5, + 0xe91c6, + 0x2a603ec5, + 0x5fa83, + 0x1b0243, + 0x9c4, + 0x12db83, + 0x10e645, + 0x146c05, + 0x793c8, + 0x22a87, + 0x16543, + 0x1b4bcd, + 0x2ae42647, + 0x1386, + 0x2b17be85, + 0x186012, + 0x1447, + 0x1e48a, + 0x17588, + 0x1e387, + 0x7368a, + 0x1bd188, + 0x110a47, + 0x165d8f, + 0x3db87, + 0x4bb86, + 0x13d150, + 0x19350f, + 0x1b009, + 0x1da884, + 0x2b40150e, + 0x5b0c9, + 0x74fc6, + 0x1113c9, + 0x190a86, + 0x6ac6, + 0xb8e4c, + 0x3ac4a, + 0x51d07, + 0x14140a, + 0x1909, + 0x25e8c, + 0x2954a, + 0x6b44a, + 0x10e689, + 0x1da806, + 0x51dca, + 0x11934a, + 0xa954a, + 0x114309, + 0xe8b88, + 0xe8e06, + 0xef08d, + 0x5b88b, + 0xcc205, + 0x2bb1e14c, + 0x13e247, + 0x10fcc9, + 0xd6187, + 0xc5c14, + 0x11230b, + 0x1dcd4a, + 0x116eca, + 0xb080d, + 0x152f6c9, + 0x117fcc, + 0x118b8b, + 0x31a03, + 0x31a03, + 0x32f46, + 0x31a03, + 0xe91c8, + 0x157243, + 0x4ebc4, + 0x5fc83, + 0x14a9607, + 0x51f05, + 0x15186c3, + 0x5c549, + 0xc8045, + 0xfa0cb, + 0x14ecb83, + 0x152e06, + 0x1523947, + 0x1d45c7, + 0x2c97ce89, + 0x1d1a86, + 0x53c43, + 0x793c8, + 0x16542, + 0x56d44, + 0x43ac3, + 0x155b45, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x203b43, + 0x216543, + 0x222bc3, + 0x2f5503, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x2a0843, + 0x201643, + 0x203b43, + 0x25dd04, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x20e603, + 0x2192c3, + 0x213402, + 0x2e17cf85, + 0x1438003, + 0x216543, + 0x222bc3, + 0x21a003, + 0x2f5503, + 0x343b43, + 0x2b1b84, + 0x34b203, + 0x233243, + 0x216443, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x21f6c3, + 0x2ee0fc03, + 0xc7f49, + 0x16542, + 0x225103, + 0x2fa16543, + 0x222bc3, + 0x252183, + 0x343b43, + 0x2207c3, + 0x233243, + 0x20cb83, + 0x2037c3, + 0x3df304, + 0x793c8, + 0x30216543, + 0x222bc3, + 0x2b7343, + 0x343b43, + 0x216443, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x238743, + 0x793c8, + 0x30a16543, + 0x222bc3, + 0x2f5503, + 0x20d903, + 0x20cb83, + 0x793c8, + 0x14380c7, + 0x253c43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x146c05, + 0xb46c7, + 0xc5e4b, + 0x31a3ca06, + 0x31efdb4b, + 0xea184, + 0xcc205, + 0x1472588, + 0x2f20d, + 0x1c4b88, + 0x136fc4, + 0x3264ccc5, + 0x27804, + 0x16542, + 0x1a143, + 0x158185, + 0x386c2, + 0x34aac5, + 0x793c8, + 0x33e98f0d, + 0x343a11ca, + 0x24642, + 0x5483, + 0x164f4f, + 0x18242, + 0x7ce84, + 0x136fc4, + 0x16542, 0x2000c2, - 0x36212402, - 0x22ea43, - 0x217fc3, - 0x5803, - 0x23e083, + 0x253c43, + 0x216543, + 0x343b43, + 0x2b1b84, + 0x216443, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x21f6c3, + 0x216543, + 0x222bc3, + 0x2296c3, + 0x20cb83, + 0x19045, + 0x331408, + 0x25dd04, + 0x379ac6, + 0x3a0686, + 0x793c8, + 0x2b6643, + 0x2f6689, + 0x21c495, + 0x1c49f, + 0x216543, + 0xf4d87, + 0x38db12, + 0x16a146, + 0x182c45, + 0x1dc8a, + 0x35349, + 0x38d8cf, + 0x2e8fc4, + 0x237a05, + 0x313790, + 0x2b1087, + 0x20d903, + 0x2c2308, + 0x13846, + 0x29fc4a, + 0x26fb04, + 0x304443, + 0x213402, + 0x2fe64b, + 0x222bc3, + 0x343b43, + 0xd903, + 0x15b044, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x309a43, + 0x216542, + 0x187003, + 0x149c04, + 0x2296c3, + 0x20cb83, + 0x364419c5, + 0x1de746, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x21b283, + 0x233c83, + 0x20cb83, + 0x53c43, + 0x216542, + 0x216543, + 0x222bc3, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x19f42, + 0x2000c2, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x3ec5, + 0x63a09, + 0x9983, + 0x25dd04, + 0x216543, + 0x222bc3, + 0x28d4c4, + 0x2296c3, + 0x20cb83, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x1b7409, + 0xe804, + 0x216543, + 0x3242, + 0x222bc3, + 0x2f5503, + 0x20e443, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x2a02, + 0x216543, + 0x222bc3, + 0x343b43, + 0x3636c4, + 0x2b1b84, + 0x2296c3, + 0x20cb83, + 0x201643, + 0x4702, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x284103, + 0xe103, + 0x1b283, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x38bc6, + 0x325d0a, + 0x3453c9, + 0x35fd4b, + 0x36084a, + 0x36918a, + 0x37860b, + 0x39084a, + 0x3979ca, + 0x39ecca, + 0x39ef4b, + 0x3c5589, + 0x3d368a, + 0x3d3acb, + 0x3dfecb, + 0x3e914a, + 0x4042, + 0x216543, + 0x222bc3, + 0x2f5503, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x3ecb, + 0x106a47, + 0x69a08, + 0x19c744, + 0x1db944, + 0x98e48, + 0xedac6, + 0x1481c6, + 0x13a09, + 0x793c8, + 0x216543, + 0x1dc84, + 0x26ff44, + 0x215d42, + 0x21b544, + 0x30eb85, + 0x203b43, + 0x25dd04, + 0x216543, + 0x23ec84, + 0x222bc3, + 0x256d44, + 0x2e8fc4, + 0x2b1b84, + 0x233243, + 0x2296c3, + 0x20cb83, + 0x2655c5, + 0x20e603, + 0x21f6c3, + 0x27d683, + 0x2d1984, + 0x323404, + 0x34bd45, + 0x793c8, + 0x32e744, + 0x3c2086, + 0x30e7c4, + 0x216542, + 0x2c8447, + 0x250707, + 0x254744, + 0x2ee845, + 0x372285, + 0x2b96c5, + 0x2b1b84, + 0x267408, + 0x25d206, + 0x392c88, + 0x287105, + 0x2efe85, + 0x257204, + 0x20cb83, + 0x305504, + 0x3770c6, + 0x24da03, + 0x2d1984, + 0x26fac5, + 0x38fd04, + 0x2aacc4, + 0x213402, + 0x38f846, + 0x3b8fc6, + 0x315f85, + 0x2000c2, + 0x253c43, + 0xedc46, + 0x3b616542, + 0x231d44, + 0x63dc5, + 0x200382, + 0x216443, + 0x2a9542, + 0x2296c3, + 0x2003c2, + 0x301a46, + 0x202b03, + 0x1da785, + 0x201643, + 0x793c8, + 0x793c8, + 0x343b43, + 0x7ca83, + 0x2000c2, + 0x3c216542, + 0x343b43, + 0x274c43, + 0x34b203, + 0x2093c4, + 0x2296c3, + 0x20cb83, + 0x793c8, + 0x2000c2, + 0x3ca16542, + 0x216543, + 0x2296c3, + 0xd903, + 0x20cb83, 0x682, - 0x203b42, - 0x21fcc2, - 0x21e1c3, - 0x2f8e43, - 0x2000c2, - 0x146bc5, - 0xae888, - 0x178d87, - 0x212402, - 0x233fc3, - 0x24d704, - 0x2033c3, - 0x266a83, - 0x204903, - 0x23cb03, - 0x217fc3, - 0x213cc3, - 0x23e083, - 0x234fc3, - 0x140d13, - 0x142dd4, - 0x146bc5, - 0x178d87, - 0x1dbc9, - 0x110b86, - 0x121b4b, - 0x36fc6, - 0x54bc7, - 0xe786, - 0x649, - 0x1d818a, - 0x9110d, - 0x127d8c, - 0x1198ca, - 0x15d048, - 0x1b5a05, - 0x1dc08, - 0x13a06, - 0x1ce786, - 0x134c46, - 0x602, - 0x2293c2, - 0x6f204, - 0xa0e86, - 0x1411d0, - 0x147a54e, - 0x1e46, - 0x696cc, - 0x37b22f0b, - 0x146bc5, - 0x15434b, - 0x37fce6c4, - 0x1c0247, - 0x23c91, - 0x11a7ca, - 0x22ea43, - 0x38285648, - 0x6bc45, - 0xf988, - 0x1ff44, - 0x14c705, - 0x38561cc6, - 0x9b306, - 0xc9b46, - 0x9620a, - 0x96ecc, - 0x1c2043, - 0x1c4104, - 0x38a120c4, - 0x51709, - 0x164347, - 0x1167ca, - 0x14dac89, - 0x605, - 0x103583, - 0x38e35107, - 0x2a7c5, - 0x153d986, - 0x14731c6, - 0xb3f8c, - 0x104248, - 0x390408c3, - 0xfa24b, - 0x12bd4b, - 0x3964950c, - 0x140ba83, - 0xc96c8, - 0xfa4c5, - 0xc6c09, - 0xeca43, - 0x11fb08, - 0x141b5c6, - 0x8e8c7, - 0x39b60b09, - 0x99c87, - 0xf054a, - 0x3afc6788, - 0x11838d, - 0xff48, - 0x1ac3, - 0x1445009, - 0x3a643, - 0x36fc6, - 0x107788, - 0x13904, - 0x154c85, - 0x1492ec3, - 0x22387, - 0x39e22383, - 0x3a3c78c6, - 0x3a637e84, - 0x3ab09647, - 0x107784, - 0x107784, - 0x107784, - 0x107784, - 0x41, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x2000c2, - 0x212402, - 0x266a83, - 0x209582, - 0x217fc3, - 0x23e083, - 0x208503, - 0x38644f, - 0x38680e, - 0xae888, - 0x22ea43, - 0x44cc7, - 0x233fc3, - 0x266a83, - 0x2191c3, - 0x217fc3, - 0x23e083, - 0x1d84, - 0x157d04, - 0x1b4744, - 0x21afc3, - 0x324007, - 0x207d42, - 0x272549, - 0x200ac2, - 0x3a58cb, - 0x2a6b8a, - 0x2aec89, - 0x200542, - 0x220306, - 0x244495, - 0x3a5a15, - 0x387d93, - 0x3a5f93, - 0x2272c2, - 0x2272c5, - 0x25f44c, - 0x27ad0b, - 0x277a05, - 0x201802, - 0x239202, - 0x381b06, - 0x203502, - 0x2cf9c6, - 0x21d58d, - 0x22a54c, - 0x38b884, - 0x200882, - 0x222b02, - 0x3a51c8, - 0x200202, - 0x336d46, - 0x39c70f, - 0x357dd0, - 0x229804, - 0x244655, - 0x387f13, - 0x24c943, - 0x369f8a, - 0x20c5c7, - 0x3a1ec9, - 0x316687, - 0x30bf02, - 0x200282, - 0x3c90c6, - 0x204cc2, - 0xae888, - 0x207f42, - 0x208a02, - 0x228fc7, - 0x348187, - 0x348191, - 0x218885, - 0x21888e, - 0x2194cf, - 0x20cfc2, - 0x3236c7, - 0x21b008, - 0x20aac2, - 0x21c942, - 0x227846, - 0x22784f, - 0x26c690, - 0x22c442, - 0x20cf02, - 0x238b48, - 0x214803, - 0x261248, - 0x2eea8d, - 0x20cf03, - 0x3cc248, - 0x28734f, - 0x28770e, - 0x25d54a, - 0x26cb11, - 0x26cf90, - 0x30280d, - 0x302b4c, - 0x3c20c7, - 0x36a107, - 0x37e109, - 0x29a842, - 0x205082, - 0x256b8c, - 0x256e8b, - 0x200d42, - 0x2d38c6, - 0x202282, - 0x200482, - 0x361e82, - 0x212402, - 0x22f244, - 0x239d87, - 0x22c982, - 0x240307, - 0x241b47, - 0x230a82, - 0x211d02, - 0x244b85, - 0x20da02, - 0x3985ce, - 0x3d068d, - 0x233fc3, - 0x28cf0e, - 0x2bb64d, - 0x35cc43, - 0x203142, - 0x28ac84, - 0x29a802, - 0x223ec2, - 0x3930c5, - 0x3a3b07, - 0x2481c2, - 0x20fa02, - 0x24d307, - 0x251a88, - 0x2ba882, - 0x27cf06, - 0x256a0c, - 0x256d4b, 0x2091c2, - 0x261d4f, - 0x262110, - 0x26250f, - 0x2628d5, - 0x262e14, - 0x26330e, - 0x26368e, - 0x263a0f, - 0x263dce, - 0x264154, - 0x264653, - 0x264b0d, - 0x27c349, - 0x292a43, - 0x2033c2, - 0x2d2685, - 0x2033c6, - 0x200382, - 0x3451c7, - 0x266a83, - 0x200642, - 0x23e108, - 0x26cd51, - 0x26d190, - 0x202182, - 0x291c47, - 0x204b82, - 0x277507, - 0x206902, - 0x207089, - 0x381ac7, - 0x294648, - 0x361b06, - 0x207483, - 0x207485, - 0x234242, - 0x2004c2, - 0x3c94c5, - 0x3b3785, - 0x201482, - 0x219303, - 0x3546c7, - 0x20bdc7, - 0x204d02, - 0x249084, - 0x20eb03, - 0x2f6f89, - 0x20eb08, - 0x202702, - 0x20a682, - 0x26b947, - 0x26ca45, - 0x273508, - 0x2b1347, - 0x209f03, - 0x2a0d06, - 0x30268d, - 0x302a0c, - 0x305e06, - 0x206b02, - 0x208c82, - 0x20b982, - 0x2871cf, - 0x2875ce, - 0x365507, - 0x204482, - 0x388c05, - 0x388c06, - 0x215782, - 0x200bc2, - 0x293506, - 0x206583, - 0x206586, - 0x2d8a45, - 0x2d8a4d, - 0x2d92d5, - 0x2da14c, - 0x2da4cd, - 0x2da812, - 0x20a942, - 0x2720c2, - 0x203882, - 0x36ac46, - 0x204a46, - 0x202542, - 0x203446, - 0x201102, - 0x324805, - 0x202582, - 0x398709, - 0x22ce4c, - 0x22d18b, - 0x2003c2, - 0x252e48, - 0x202a42, - 0x200a82, - 0x278706, - 0x245ac5, - 0x200a87, - 0x22dcc5, - 0x257e45, - 0x201b42, - 0x21dcc2, - 0x205b42, - 0x298c07, - 0x2fd00d, - 0x2fd38c, - 0x235507, - 0x27ce82, - 0x211c82, - 0x3dc788, - 0x248d88, - 0x34f348, - 0x3bb1c4, - 0x372d07, - 0x36aa43, - 0x22d782, - 0x204ac2, - 0x2fe3c9, - 0x30b287, - 0x216982, - 0x278b05, - 0x242c42, - 0x20d402, - 0x2f8b83, - 0x2f8b86, - 0x306d42, - 0x308142, - 0x200402, - 0x3616c6, - 0x34de07, - 0x216782, - 0x200902, - 0x26108f, - 0x28cd4d, - 0x28fd0e, - 0x2bb4cc, - 0x208842, - 0x205302, - 0x361945, - 0x325d86, - 0x200b82, - 0x205502, - 0x200682, - 0x28d0c4, - 0x2c14c4, - 0x389fc6, - 0x207742, - 0x28d807, - 0x23c643, - 0x23c648, - 0x23d1c8, - 0x245207, - 0x249946, - 0x20ab02, - 0x2186c3, - 0x2186c7, - 0x292246, - 0x2ecb85, - 0x27a1c8, - 0x2018c2, - 0x3c1007, - 0x207142, - 0x25cdc2, - 0x201702, - 0x219649, - 0x203c02, - 0x10acc8, - 0x201f42, - 0x235783, - 0x3599c7, - 0x200f02, - 0x22cfcc, - 0x22d2cb, - 0x305e86, - 0x3034c5, - 0x203d02, - 0x202a82, - 0x2cb146, - 0x20dd03, - 0x36a307, - 0x2b3f42, - 0x2008c2, - 0x244315, - 0x3a5bd5, - 0x387c53, - 0x3a6113, - 0x2596c7, - 0x28b111, - 0x2908d0, - 0x2f7b92, - 0x29b711, - 0x2a0548, - 0x2a0550, - 0x2a2c8f, - 0x2a6953, - 0x2aea52, - 0x2b8190, - 0x36f14f, - 0x3a4112, - 0x2bac51, - 0x2bfa93, - 0x3426d2, - 0x2d868f, - 0x2e010e, - 0x2e3512, - 0x2e43d1, - 0x2e79cf, - 0x2ea38e, - 0x2ed451, - 0x2fa9d0, - 0x304412, - 0x307211, - 0x309090, - 0x321ecf, - 0x37ab11, - 0x3d2fd0, - 0x33fac6, - 0x314b47, - 0x2153c7, - 0x202402, - 0x288985, - 0x3135c7, - 0x21fcc2, - 0x208d82, - 0x22b8c5, - 0x208743, - 0x26ec86, - 0x2fd1cd, - 0x2fd50c, - 0x2034c2, - 0x25f2cb, - 0x27abca, - 0x22718a, - 0x2ca549, - 0x2fc34b, - 0x2b148d, - 0x313ccc, - 0x240cca, - 0x2466cc, - 0x24e88b, - 0x27784c, - 0x27bd0e, - 0x29cb4b, - 0x2b668c, - 0x2ec543, - 0x2edf06, - 0x3c6782, - 0x305102, - 0x25cb43, - 0x201502, - 0x204243, - 0x353446, - 0x262a87, - 0x2c3846, - 0x2158c8, - 0x354548, - 0x3800c6, - 0x20e482, - 0x31598d, - 0x315ccc, - 0x32bf07, - 0x319707, - 0x223542, - 0x216b82, - 0x203b02, - 0x284302, - 0x336c56, - 0x33b795, - 0x3407d6, - 0x3437d3, - 0x343e92, - 0x35bc93, - 0x35de52, - 0x3b6bcf, - 0x3c5758, - 0x3c6257, - 0x3c6c59, - 0x3c8b18, - 0x3c96d8, - 0x3cb9d7, - 0x3cc457, - 0x3ce196, - 0x3d1cd3, - 0x3d2755, - 0x3d33d2, - 0x3d3853, - 0x212402, - 0x217fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x208503, + 0x22a042, + 0x21b283, + 0x2faf43, 0x2000c2, + 0x146c05, + 0x793c8, + 0xb46c7, + 0x216542, + 0x222bc3, + 0x256d44, + 0x204f03, + 0x343b43, + 0x20e443, + 0x216443, + 0x2296c3, + 0x20b243, + 0x20cb83, + 0x23d343, + 0x1643, + 0x13ff13, + 0x142f14, + 0x146c05, + 0xb46c7, + 0x1e489, + 0x1e1e06, + 0x19108b, + 0x32f46, + 0x60ac7, + 0x145246, + 0x649, + 0x15d3ca, + 0x9560d, + 0x1b60cc, + 0x119cca, + 0x46688, + 0x10f7c5, + 0x1e4c8, + 0x30846, + 0x1d1806, + 0x13906, + 0x602, + 0x213242, + 0x15cb84, + 0x1d4b06, + 0x1255d0, + 0x14dbf0e, + 0x1a1146, + 0x41dcc, + 0x3e37cd0b, + 0x146c05, + 0x152c0b, + 0x3e7d1744, + 0x1c0f87, + 0x2c191, + 0x12140a, + 0x216543, + 0x3ea8ad08, + 0x73605, + 0x89288, + 0x2a2c4, + 0x62e85, + 0x3ec0b186, + 0x1bc60b, + 0xc3d86, + 0x72206, + 0x9a6ca, + 0x16c5cc, + 0x1c2003, + 0x1db944, + 0x3f218004, + 0x5c549, + 0x192e07, + 0xac00a, + 0x14df889, + 0x605, + 0xb6803, + 0x3f63d487, + 0x149f05, + 0x1565b86, + 0x157ac46, + 0x3fb92f4f, + 0xb800c, + 0x107588, + 0x3fc473c3, + 0x10a3c4, + 0xfe88b, + 0x1d694b, + 0x4025240c, + 0x14110c3, + 0xcddc8, + 0xfeb05, + 0xca909, + 0xeb643, + 0x12f7c8, + 0x1426246, + 0x95c87, + 0x4074c6c9, + 0x41a7a6c8, + 0x9dc07, + 0xcf9ca, + 0x41fc9408, + 0x11884d, + 0x12248, + 0x9983, + 0x146a249, + 0x14c203, + 0x32f46, + 0xe91c8, + 0x1a704, + 0x1d8645, + 0xfea83, + 0x1497d03, + 0x20a87, + 0x40a20a83, + 0x40fc2486, + 0x41240644, + 0x4170ba87, + 0xe91c4, + 0xe91c4, + 0xe91c4, + 0xe91c4, + 0x3ec5, + 0x1a18c8, + 0x148209, + 0x41, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x2000c2, + 0x216542, + 0x343b43, + 0x2042c2, + 0x2296c3, + 0x20cb83, + 0x202b03, + 0x3835cf, + 0x38398e, + 0x793c8, + 0x216543, + 0x4e6c7, + 0x222bc3, + 0x343b43, + 0x243543, + 0x2296c3, + 0x20cb83, + 0x1a1084, + 0x12dcc4, + 0x9c04, + 0x224503, + 0x3a2347, + 0x202302, + 0x277c09, + 0x200ac2, + 0x3a714b, + 0x2e808a, + 0x2ec409, + 0x200542, + 0x22a686, + 0x256255, + 0x3a7295, + 0x259fd3, + 0x3a7813, + 0x22d0c2, + 0x22d0c5, + 0x363e0c, + 0x27ff8b, + 0x281405, + 0x202cc2, + 0x30a8c2, + 0x37ed06, + 0x203b42, + 0x2d4b06, + 0x21df0d, + 0x349c8c, + 0x3c4c44, + 0x200882, + 0x205242, + 0x27c0c8, + 0x200202, + 0x32dd86, + 0x39a18f, + 0x32dd90, + 0x3abc44, + 0x256415, + 0x25a153, + 0x20a883, + 0x3630ca, + 0x211d47, + 0x39f1c9, + 0x3129c7, + 0x328c42, + 0x200282, + 0x3cb7c6, + 0x207dc2, + 0x793c8, + 0x202502, + 0x20bd42, + 0x212e47, + 0x38d507, + 0x38d511, + 0x221a05, + 0x221a0e, + 0x22204f, + 0x204242, + 0x2f1c07, + 0x224b48, + 0x2016c2, + 0x2295c2, + 0x227406, + 0x22740f, + 0x23ff50, + 0x237242, + 0x204182, + 0x336588, + 0x210903, + 0x2920c8, + 0x2cb30d, + 0x204183, + 0x3a04c8, + 0x28e48f, + 0x28e84e, + 0x316b8a, + 0x3b3ed1, + 0x3b4350, + 0x21b9cd, + 0x21bd0c, + 0x386987, + 0x363247, + 0x379b89, + 0x20cd02, + 0x202402, + 0x26274c, + 0x262a4b, + 0x200d42, + 0x2d8306, + 0x20c602, + 0x200482, + 0x22e702, + 0x216542, + 0x3dbec4, + 0x241787, + 0x213b02, + 0x248d87, + 0x24a7c7, + 0x215a42, + 0x219d82, + 0x24e585, + 0x20c542, + 0x250e0e, + 0x39654d, + 0x222bc3, + 0x243c8e, + 0x2c764d, + 0x3c4143, + 0x2026c2, + 0x2730c4, + 0x2b3802, + 0x213642, + 0x3a6a05, + 0x3acc07, + 0x250d02, + 0x218242, + 0x256947, + 0x25c8c8, + 0x25c082, + 0x29a986, + 0x2625cc, + 0x26290b, + 0x20eb02, + 0x26c34f, + 0x26c710, + 0x26cb0f, + 0x26ced5, + 0x26d414, + 0x26d90e, + 0x26dc8e, + 0x26e00f, + 0x26e3ce, + 0x26e754, + 0x26ec53, + 0x26f10d, + 0x2817c9, + 0x2975c3, + 0x204342, + 0x322205, + 0x204f06, + 0x200382, + 0x2bfd47, + 0x343b43, + 0x200642, + 0x23e448, + 0x3b4111, + 0x3b4550, + 0x202102, + 0x296907, 0x202642, - 0x3ce98545, - 0x3d25ef05, - 0x3d73ed86, - 0xae888, - 0x3dac0105, - 0x212402, - 0x204542, - 0x3de5de45, - 0x3e285fc5, - 0x3e687a87, - 0x3ea87dc9, - 0x3ef4da84, + 0x25c247, + 0x207bc2, + 0x208309, + 0x37ecc7, + 0x3e5848, + 0x20afc6, + 0x208703, + 0x208705, + 0x225e82, + 0x2004c2, + 0x3cbbc5, + 0x36bd85, + 0x20b402, + 0x237843, + 0x352f87, + 0x3c3c47, + 0x203f02, + 0x38f0c4, + 0x271f43, + 0x33eec9, + 0x3c7348, + 0x209d42, + 0x210442, + 0x22cac7, + 0x231745, + 0x20c708, + 0x327287, + 0x20f543, + 0x3d4986, + 0x21b84d, + 0x21bbcc, + 0x223046, + 0x204202, + 0x31de42, + 0x201582, + 0x28e30f, + 0x28e70e, + 0x372307, + 0x202042, + 0x3d2185, + 0x3d2186, + 0x228882, + 0x200bc2, + 0x298346, + 0x210783, + 0x3c2c46, + 0x2dd585, + 0x2dd58d, + 0x2de195, + 0x2ded4c, + 0x2df0cd, + 0x2df412, + 0x203742, + 0x277782, + 0x202802, + 0x3437c6, + 0x20e586, + 0x43296084, + 0x201cc2, + 0x204f86, + 0x201102, + 0x3a2b45, + 0x205c02, + 0x250f49, + 0x22d58c, + 0x22d8cb, + 0x2003c2, + 0x25e3c8, + 0x211c02, + 0x200a82, + 0x27de46, + 0x266005, + 0x200a87, + 0x2fca45, + 0x2824c5, + 0x23d7c2, + 0x21e582, + 0x208402, + 0x29f107, + 0x301b0d, + 0x301e8c, + 0x25d707, + 0x29a902, + 0x219d02, + 0x3e8008, + 0x38ff08, + 0x2e5e08, + 0x3bc204, + 0x342ac7, + 0x363b83, + 0x206bc2, + 0x203482, + 0x302889, + 0x233347, + 0x2037c2, + 0x27e245, + 0x24cec2, + 0x204682, + 0x30b0c3, + 0x30b0c6, + 0x309602, + 0x30a282, + 0x200402, + 0x2abc86, + 0x273007, + 0x213582, + 0x200902, + 0x291f0f, + 0x243acd, + 0x39e2ce, + 0x2c74cc, + 0x20cbc2, + 0x202a82, + 0x20ae05, + 0x324106, + 0x200b82, + 0x205d42, + 0x200682, + 0x243e44, + 0x2c4b44, + 0x36c186, + 0x201ec2, + 0x292d47, + 0x23f643, + 0x23f648, + 0x2408c8, + 0x24ad47, + 0x251646, + 0x204ac2, + 0x2118c3, + 0x2118c7, + 0x28a6c6, + 0x2ed245, + 0x27f908, + 0x202d82, + 0x35b4c7, + 0x203782, + 0x352902, + 0x204102, + 0x2221c9, + 0x24b302, + 0x14448, + 0x201b82, + 0x25d983, + 0x32e887, + 0x200f02, + 0x22d70c, + 0x22da0b, + 0x2abf06, + 0x223e85, + 0x43609d83, + 0x22bdc2, + 0x202a02, + 0x2cf7c6, + 0x209003, + 0x363447, + 0x211482, + 0x2008c2, + 0x2560d5, + 0x3a7455, + 0x259e93, + 0x3a7993, + 0x279587, + 0x294d91, + 0x2f9010, + 0x2a27d2, + 0x2a7411, + 0x2aae48, + 0x2aae50, + 0x372f4f, + 0x3a5e53, + 0x3abf92, + 0x2c2690, + 0x2bec4f, + 0x2c2bd2, + 0x2c4191, + 0x2d73d3, + 0x2dd112, + 0x2e3d4f, + 0x2e664e, + 0x2e7e92, + 0x2ec211, + 0x2ed70f, + 0x2f58ce, + 0x2f7251, + 0x2f8450, + 0x2ff012, + 0x307751, + 0x309ad0, + 0x30b50f, + 0x366211, + 0x355510, + 0x37f0c6, + 0x31e787, + 0x234ac7, + 0x201c02, + 0x28ce85, + 0x313507, + 0x22a042, + 0x203f82, + 0x3d0545, + 0x228183, + 0x35c606, + 0x301ccd, + 0x30200c, + 0x205002, + 0x363c8b, + 0x27fe4a, + 0x22cf8a, + 0x2ceb09, + 0x300a8b, + 0x3273cd, + 0x313c0c, + 0x2477ca, + 0x24ec8c, + 0x27aa4b, + 0x28124c, + 0x28418e, + 0x2a0b0b, + 0x2eafcc, + 0x2f3103, + 0x2ef706, + 0x3c9402, + 0x308542, + 0x2651c3, + 0x2017c2, + 0x23d203, + 0x351d46, + 0x26d087, + 0x2e2846, + 0x3aad48, + 0x352e08, + 0x306d06, + 0x208e42, + 0x31594d, + 0x315c8c, + 0x3d6b07, + 0x319b07, + 0x221e02, + 0x21f8c2, + 0x211842, + 0x289c82, + 0x3377d6, + 0x33c555, + 0x33f9d6, + 0x344113, + 0x3447d2, + 0x356dd3, + 0x357512, + 0x3b7ccf, + 0x3c6b58, + 0x3c8ed7, + 0x3c98d9, + 0x3cb218, + 0x3cbdd8, + 0x3cccd7, + 0x3ced97, + 0x3d1216, + 0x3d6013, + 0x3d6f55, + 0x3d77d2, + 0x3d7c53, + 0x30182, + 0x43a13a04, + 0x43fc4b88, + 0x3ec5, + 0x216542, + 0x2296c3, + 0x386c2, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x202b03, + 0x2000c2, + 0x2070c2, + 0x44e9bcc5, + 0x4529b285, + 0x4567ad86, + 0x793c8, + 0x45ac3205, + 0x216542, + 0x2104c2, + 0x45f336c5, + 0x4628b685, + 0x4668c587, + 0x46a93f89, + 0x46e1eb44, 0x200382, 0x200642, - 0x3f25bf05, - 0x3f69e949, - 0x3fb36248, - 0x3feb87c5, - 0x403513c7, - 0x40623708, - 0x40b08c85, - 0x40e9f486, - 0x413a9a89, - 0x416dd6c8, - 0x41ad02c8, - 0x41e9ef8a, - 0x422ef084, - 0x426ad705, - 0x42acc788, - 0x42e48985, - 0x214882, - 0x4324bd03, - 0x436abe06, - 0x43a6af08, - 0x43ef4246, - 0x4434df48, - 0x447af006, - 0x44a463c4, - 0x44e03182, - 0x45707b87, - 0x45ab43c4, - 0x45e81487, - 0x463da087, + 0x4725a945, + 0x4769b3c9, + 0x47b36dc8, + 0x47ebb2c5, + 0x4834ff07, + 0x4861cf88, + 0x48b18f85, + 0x48e21486, + 0x4924b649, + 0x496f9ec8, + 0x49ad5408, + 0x49ea4e8a, + 0x4a387144, + 0x4a6b2605, + 0x4aad1108, + 0x4ae876c5, + 0x21ab82, + 0x4b2e3303, + 0x4b6aff46, + 0x4bba9148, + 0x4bf53fc6, + 0x4c273148, + 0x4c7da086, + 0x4ca4fb84, + 0x4ce04cc2, + 0x4d6e2c47, + 0x4dab7d44, + 0x4de85287, + 0x4e3e3047, 0x2003c2, - 0x466a3e85, - 0x46a15cc4, - 0x46faaa07, - 0x4723c0c7, - 0x4768aac6, - 0x47a86b45, - 0x47e9ea47, - 0x482dd548, - 0x487da407, - 0x48adcb49, - 0x48ed9845, - 0x4931d047, - 0x49697b86, - 0x27c4b, - 0x49b47b08, - 0x22800d, - 0x25c089, - 0x279d4b, - 0x27b8cb, - 0x2afecb, - 0x39b08b, + 0x4e6a8485, + 0x4ea7fa84, + 0x4efafd07, + 0x4f23cc07, + 0x4f690046, + 0x4fa8c145, + 0x4fea2f07, + 0x502cdf88, + 0x507e33c7, + 0x50abb909, + 0x50ee3405, + 0x5131f287, + 0x5169b0c6, + 0x2780b, + 0x51a2e2c8, + 0x230c4d, + 0x271d09, + 0x27f48b, + 0x29868b, + 0x2b744b, + 0x2d24cb, + 0x32430b, + 0x3245cb, + 0x324a89, 0x325f8b, 0x32624b, - 0x326709, - 0x32770b, - 0x3279cb, - 0x32850b, - 0x32910a, - 0x32964a, - 0x329c4c, - 0x32e6cb, - 0x32ec0a, - 0x34228a, - 0x34d34e, - 0x34e94e, - 0x34ecca, - 0x350b0a, - 0x351b4b, - 0x351e0b, - 0x35290b, - 0x372ecb, - 0x3734ca, - 0x37418b, - 0x37444a, - 0x3746ca, - 0x37494a, - 0x394a0b, - 0x39bbcb, - 0x39ed4e, - 0x39f0cb, - 0x3a65cb, - 0x3a73cb, - 0x3ab74a, - 0x3ab9c9, - 0x3abc0a, - 0x3ad9ca, - 0x3c514b, - 0x3d00cb, - 0x3d0aca, - 0x3d170b, - 0x3d7a4b, - 0x3e07cb, - 0x49e89188, - 0x4a290209, - 0x4a6a7249, - 0x4aaefcc8, - 0x35f145, - 0x204083, - 0x251f44, - 0x34e385, - 0x34d7c6, - 0x367645, - 0x28f384, - 0x3450c8, - 0x31f645, - 0x299784, - 0x203787, - 0x2a634a, - 0x37738a, - 0x365607, - 0x26b0c7, - 0x2e7ec7, - 0x288047, - 0x33a405, - 0x20e506, - 0x2f34c7, - 0x20fd84, - 0x3ba146, - 0x3ba046, - 0x3dccc5, - 0x389dc4, - 0x29ffc6, - 0x2a5407, - 0x2671c6, - 0x31a487, - 0x235e43, - 0x3a2246, - 0x238d85, - 0x287b87, - 0x26fe0a, - 0x237784, - 0x2219c8, - 0x39a2c9, - 0x2d6b87, - 0x3bba06, - 0x203f48, - 0x2f4989, - 0x3a2084, - 0x2d2a04, - 0x313005, - 0x21e388, - 0x2d6e47, - 0x2b7689, - 0x3690c8, - 0x31b8c6, - 0x266cc6, - 0x2a0b88, - 0x371c86, - 0x25ef05, - 0x28ab86, - 0x281f48, - 0x2870c6, - 0x255f0b, - 0x2be206, - 0x2a280d, - 0x205385, - 0x2b4286, - 0x21f585, - 0x2bc949, - 0x2e0cc7, - 0x3cd248, - 0x39dec6, - 0x2a1949, - 0x2c1246, - 0x26fd85, - 0x2a9606, - 0x2d5506, - 0x2db549, - 0x2c8186, - 0x2a6047, - 0x2d5bc5, - 0x208a43, - 0x22d805, - 0x395c07, - 0x25fac6, - 0x205289, - 0x33ed86, - 0x281686, - 0x226049, - 0x28a589, - 0x2aa947, - 0x207648, - 0x29b149, - 0x288608, - 0x3a7646, - 0x2e5285, - 0x27dd4a, - 0x281706, - 0x347446, - 0x2deb05, - 0x253708, - 0x2f5707, - 0x23114a, - 0x24df06, - 0x2e2785, - 0x3086c6, - 0x20d647, - 0x3bb8c7, - 0x21a3c5, - 0x26ff45, - 0x26c506, - 0x273b06, - 0x2b0d46, - 0x2ccc44, - 0x289b09, - 0x291a06, - 0x306f0a, - 0x30c148, - 0x31cd48, - 0x37738a, - 0x2ef805, - 0x2a5345, - 0x3cac88, - 0x2c7e88, - 0x2398c7, - 0x36ee86, - 0x339788, - 0x20ee87, - 0x27a408, - 0x2c6806, - 0x28bac8, - 0x29de06, - 0x283847, - 0x23b3c6, - 0x29ffc6, - 0x27438a, - 0x305f86, - 0x2e5289, - 0x2a7746, - 0x22910a, - 0x2463c9, - 0x2fd9c6, - 0x2c9144, - 0x2d274d, - 0x285e07, - 0x3325c6, - 0x2d0185, - 0x2c12c5, - 0x396906, - 0x2a9b89, - 0x2c09c7, - 0x282946, - 0x2ced06, - 0x28f409, - 0x288d84, - 0x23f644, - 0x3b53c8, - 0x237ac6, - 0x2a9708, - 0x322708, - 0x3a9f87, - 0x358b89, - 0x3c9f87, - 0x2bffca, - 0x2fee8f, - 0x2b230a, - 0x3e22c5, - 0x282185, - 0x21c3c5, - 0x229747, - 0x20d203, - 0x207848, - 0x355606, - 0x355709, - 0x2f3dc6, - 0x2db387, - 0x2a1709, - 0x3cd148, - 0x2debc7, - 0x325343, - 0x35f1c5, - 0x20d185, - 0x2cca8b, - 0x248a44, - 0x238344, - 0x27d506, - 0x325507, - 0x396e8a, - 0x24bd87, - 0x298787, - 0x285fc5, - 0x3d5c05, - 0x296ac9, - 0x29ffc6, - 0x24bc0d, - 0x273445, - 0x2c3c03, - 0x2059c3, - 0x3617c5, - 0x33a085, - 0x203f48, - 0x283287, - 0x23f3c6, - 0x2a6ec6, - 0x22bbc5, - 0x234287, - 0x25eb47, - 0x252287, - 0x2ad78a, - 0x3a2308, - 0x2ccc44, - 0x286e47, - 0x285187, - 0x363306, - 0x29d487, - 0x2ebd88, - 0x3d8348, - 0x29c3c6, - 0x26b308, - 0x2c8204, - 0x2f34c6, - 0x250dc6, - 0x3d5486, - 0x208006, - 0x218e84, - 0x288106, - 0x2cf246, - 0x2a0386, - 0x24bc06, - 0x205886, - 0x2a7e46, - 0x23f2c8, - 0x2c2a48, - 0x2e1e88, - 0x367848, - 0x3cac06, - 0x210ec5, - 0x22d7c6, - 0x2b8845, - 0x399107, - 0x295d45, - 0x2119c3, - 0x2e5f45, - 0x235fc4, - 0x2059c5, - 0x202a43, - 0x3c4bc7, - 0x399d08, - 0x31a546, - 0x34490d, - 0x282146, - 0x29f945, - 0x219643, - 0x2cc149, - 0x288f06, - 0x23b1c6, - 0x3b2144, - 0x2b2287, - 0x3611c6, - 0x23f845, - 0x270483, - 0x20b344, - 0x285346, - 0x20e604, - 0x275548, - 0x204609, - 0x32e489, - 0x2a950a, - 0x29738d, - 0x23e587, - 0x3c2cc6, - 0x21dd04, - 0x287dc9, - 0x28e308, - 0x290086, - 0x23abc6, - 0x29d487, - 0x2c98c6, - 0x226c46, - 0x25dfc6, - 0x3da10a, - 0x223708, - 0x2ef705, - 0x356c09, - 0x2d75ca, - 0x30cd48, - 0x2a46c8, - 0x299fc8, - 0x2b45cc, - 0x395905, - 0x2a7148, - 0x2c2d46, - 0x2e1446, - 0x2d5707, - 0x24bc85, - 0x28ad05, - 0x32e349, - 0x214207, - 0x3556c5, - 0x2284c7, - 0x2059c3, - 0x2d7a85, - 0x224148, - 0x2d9047, - 0x2a4589, - 0x2e5145, - 0x311404, - 0x2ab1c8, - 0x2eed47, - 0x2ded88, - 0x2206c8, - 0x2b5285, - 0x21f746, - 0x2a6fc6, - 0x3c2909, - 0x250ec7, - 0x2b8cc6, - 0x355347, - 0x208683, - 0x34da84, - 0x2dc405, - 0x2343c4, - 0x24b684, - 0x38fc47, - 0x26da47, - 0x282b04, - 0x2a43d0, - 0x207bc7, - 0x3d5c05, - 0x3b3c8c, - 0x220484, - 0x31e048, - 0x283749, - 0x3d78c6, - 0x31fc48, - 0x27d804, - 0x27d808, - 0x231746, - 0x274208, - 0x2a38c6, - 0x39b90b, - 0x330685, - 0x2dc288, - 0x213684, - 0x28988a, - 0x2a4589, - 0x23b2c6, - 0x2c2f48, - 0x2592c5, - 0x2cb744, - 0x31df46, - 0x252148, - 0x289188, - 0x333e86, - 0x389f44, - 0x27dcc6, - 0x3ca007, - 0x281387, - 0x29d48f, - 0x346f07, - 0x2fda87, - 0x388ac5, - 0x377ac5, - 0x2aa609, - 0x2f7786, - 0x38fe85, - 0x28a887, - 0x2d5988, - 0x302545, - 0x23b3c6, - 0x30bf88, - 0x2f424a, - 0x37e648, - 0x293287, - 0x2ff2c6, - 0x356bc6, - 0x2003c3, - 0x20c483, - 0x2d7789, - 0x29afc9, - 0x2dca46, - 0x2e5145, - 0x2b4448, - 0x2c2f48, - 0x2a3508, - 0x25e04b, - 0x344b47, - 0x3211c9, - 0x29d708, - 0x3505c4, - 0x3d50c8, - 0x295909, - 0x2b8fc5, - 0x229647, - 0x34db05, - 0x289088, - 0x2983cb, - 0x29e790, - 0x2b3e05, - 0x2135cc, - 0x23f585, - 0x25e883, - 0x2b6486, - 0x2ce3c4, - 0x23b686, - 0x2a5407, - 0x203d44, - 0x243208, - 0x20770d, - 0x3224c5, - 0x23e5c4, - 0x2b5684, - 0x2b5689, - 0x2adfc8, - 0x330b47, - 0x2317c8, - 0x289bc8, - 0x282c45, - 0x27ee47, - 0x282bc7, - 0x3559c7, - 0x26ff49, - 0x25e649, - 0x210706, - 0x302d46, - 0x28a946, - 0x326e85, - 0x3c5d04, - 0x3cc9c6, - 0x3d4e86, - 0x282c88, - 0x20d30b, - 0x237647, - 0x21dd04, - 0x361106, - 0x2ec0c7, - 0x2a7a45, - 0x324a85, - 0x267c04, - 0x25e5c6, - 0x3cca48, - 0x287dc9, - 0x261846, - 0x28e108, - 0x23f906, - 0x365f48, - 0x37904c, - 0x282b06, - 0x29f60d, - 0x29fa8b, - 0x2a6105, - 0x25ec87, - 0x2c8286, - 0x3bb788, - 0x210789, - 0x38a7c8, - 0x3d5c05, - 0x20fac7, - 0x288708, - 0x3c7c49, - 0x360e46, - 0x26174a, - 0x3bb508, - 0x38a60b, - 0x22398c, - 0x27d908, - 0x284906, - 0x27e848, - 0x2f3ec7, - 0x347049, - 0x35150d, - 0x29fec6, - 0x30ef48, - 0x2c2909, - 0x2ccd48, - 0x28bbc8, - 0x2cfb4c, - 0x2d0807, - 0x2d31c7, - 0x26fd85, - 0x2c54c7, - 0x2d5848, - 0x31dfc6, - 0x2704cc, - 0x301fc8, - 0x2dd8c8, - 0x23ae06, - 0x2b1f07, - 0x210904, - 0x367848, - 0x28d20c, - 0x29144c, - 0x3e2345, - 0x3dcd47, - 0x389ec6, - 0x2b1e86, - 0x2bcb08, - 0x21b284, - 0x2671cb, - 0x28d94b, - 0x2ff2c6, - 0x207587, - 0x3572c5, - 0x2781c5, - 0x267306, - 0x259285, - 0x248a05, - 0x2d65c7, - 0x2b2789, - 0x273cc4, - 0x23d405, - 0x2f8ac5, - 0x358908, - 0x2bf505, - 0x2d1d09, - 0x39e2c7, - 0x39e2cb, - 0x2fd706, - 0x23f009, - 0x389d08, - 0x3ae7c5, - 0x355ac8, - 0x25e688, - 0x286407, - 0x2b5a87, - 0x38fcc9, - 0x274147, - 0x295c49, - 0x2d11cc, - 0x2dca48, - 0x2c0dc9, - 0x2c4d07, - 0x289c89, - 0x367207, - 0x223a88, - 0x358d45, - 0x2f3446, - 0x2d01c8, - 0x21c488, - 0x2d7489, - 0x248a47, - 0x278bc5, - 0x3cde49, - 0x2fde86, - 0x297b84, - 0x33ff06, - 0x26ad88, - 0x2e6587, - 0x20d508, - 0x26b3c9, - 0x3a1a87, - 0x2a3646, - 0x25ed44, - 0x2e5fc9, - 0x27ecc8, - 0x23acc7, - 0x2702c6, - 0x20d246, - 0x3473c4, - 0x26b5c6, - 0x205943, - 0x330209, - 0x330646, + 0x3283cb, + 0x328fca, + 0x32950a, + 0x329b0c, + 0x32fecb, + 0x33040a, + 0x34218a, + 0x34c2ce, + 0x34d44e, + 0x34d7ca, + 0x34f78a, + 0x35044b, + 0x35070b, + 0x35120b, + 0x36e7cb, + 0x36edca, + 0x36fa8b, + 0x36fd4a, + 0x36ffca, + 0x37024a, + 0x391a8b, + 0x39944b, + 0x39bc0e, + 0x39bf8b, + 0x3a7e4b, + 0x3a9ecb, + 0x3ada8a, + 0x3add09, + 0x3adf4a, + 0x3afa0a, + 0x3c654b, + 0x3d3d8b, + 0x3d4f4a, + 0x3d5a4b, + 0x3dbc4b, + 0x3e8b8b, + 0x51e8d908, + 0x522946c9, + 0x526ab689, + 0x52af0788, + 0x359645, + 0x20dec3, + 0x25cd84, + 0x2cbb05, + 0x21e886, + 0x221205, + 0x293a44, + 0x2bfc48, + 0x31fc85, + 0x29d144, + 0x20d007, + 0x2aa84a, + 0x24104a, + 0x372407, + 0x3a9307, + 0x2ec787, + 0x291247, + 0x313305, + 0x219686, + 0x372c47, + 0x35a804, + 0x2c9046, + 0x3dc846, + 0x203345, + 0x333144, + 0x2a80c6, + 0x2a9a07, + 0x22fa86, + 0x2b6407, + 0x23e343, + 0x39f546, + 0x3367c5, + 0x28c687, + 0x27588a, + 0x23e544, + 0x21ad88, + 0x2ba709, + 0x2c9607, + 0x3c6006, + 0x267608, + 0x37ae89, + 0x39f384, + 0x322584, + 0x30c2c5, + 0x21b448, + 0x2dbb47, + 0x30a449, + 0x3d8f48, + 0x31b5c6, + 0x361b46, + 0x2a5ac8, + 0x36d846, + 0x29b285, + 0x290106, + 0x285988, + 0x28e206, + 0x261acb, + 0x38a106, + 0x2a6f8d, + 0x20d485, + 0x2b7c06, + 0x21d045, + 0x3c8609, + 0x2e4747, + 0x3d2008, + 0x3c4f86, + 0x2a6209, + 0x2c48c6, + 0x275805, + 0x216b86, + 0x2d7cc6, + 0x2e02c9, + 0x2cc886, + 0x31d5c7, + 0x2dec05, + 0x20c043, + 0x261c45, + 0x2bc687, + 0x3640c6, + 0x20d389, + 0x27ad86, + 0x285486, + 0x226a89, + 0x28fb09, + 0x2aea87, + 0x201dc8, + 0x29f949, + 0x28cb08, + 0x3e5e06, + 0x2e8945, + 0x2834ca, + 0x285506, + 0x3cfc86, + 0x2e2b85, + 0x25ec08, + 0x358d07, + 0x239a8a, + 0x257686, + 0x303885, + 0x30aa86, + 0x2048c7, + 0x3c5ec7, + 0x2ac545, + 0x2759c5, + 0x23fdc6, + 0x36a446, + 0x269f46, + 0x2d15c4, + 0x28ebc9, + 0x2966c6, + 0x3097ca, + 0x232148, + 0x31ef88, + 0x24104a, + 0x2421c5, + 0x2a9945, + 0x3def48, + 0x2ce108, + 0x23ae87, + 0x288686, + 0x33a388, + 0x20b607, + 0x28d208, + 0x2ca506, + 0x290f08, + 0x2a1dc6, + 0x287287, + 0x29ea46, + 0x2a80c6, + 0x2313ca, + 0x3dbf46, + 0x2e8949, + 0x2abb86, + 0x212f8a, + 0x24fb89, + 0x3024c6, + 0x2cd844, + 0x3222cd, + 0x28b4c7, + 0x39fe06, + 0x2d52c5, + 0x2c4945, + 0x394246, + 0x2ae109, + 0x369787, + 0x286386, + 0x393386, + 0x293ac9, + 0x2e37c4, + 0x3025c4, + 0x30f188, + 0x2fbec6, + 0x2adc88, + 0x216b08, + 0x260507, + 0x30e2c9, + 0x347a47, + 0x2c30ca, + 0x30334f, + 0x2396ca, + 0x20ac05, + 0x285bc5, + 0x216945, + 0x3cd547, + 0x204483, + 0x201fc8, + 0x2f6086, + 0x2f6189, + 0x2f5f86, + 0x2e0c87, + 0x2a5fc9, + 0x3d1f08, + 0x3c87c7, + 0x322d43, + 0x3596c5, + 0x204405, + 0x2d140b, + 0x287784, + 0x300084, + 0x282c86, + 0x322f07, + 0x3947ca, + 0x3b0887, + 0x29bf07, + 0x28b685, + 0x3de685, + 0x2934c9, + 0x2a80c6, + 0x3b070d, + 0x354745, + 0x2c7183, + 0x20dac3, + 0x258b05, + 0x33ac85, + 0x267608, + 0x286cc7, + 0x245246, + 0x2ab306, + 0x235745, + 0x23c847, + 0x3e4107, + 0x25d0c7, + 0x2b268a, + 0x39f608, + 0x2d15c4, + 0x28df87, + 0x28a847, + 0x35df46, + 0x2a1447, + 0x2ea808, + 0x35d588, + 0x27a306, + 0x3a9548, + 0x2cc904, + 0x372c46, + 0x266286, + 0x246046, + 0x2025c6, + 0x214ac4, + 0x291306, + 0x2d3e46, + 0x2a5386, + 0x224006, + 0x20d986, + 0x2ea646, + 0x245148, + 0x2c6648, + 0x2e5688, + 0x221408, + 0x3deec6, + 0x20f1c5, + 0x27b9c6, + 0x2bb345, + 0x397087, + 0x246005, + 0x217943, + 0x26a545, + 0x23b844, + 0x20dac5, + 0x223a03, + 0x2c4707, + 0x3aa1c8, + 0x2b64c6, + 0x2d630d, + 0x285b86, 0x2a4905, - 0x2a6ec6, - 0x2db905, - 0x288b88, - 0x33f3c7, - 0x23bb46, - 0x25de86, - 0x31cd48, - 0x2aa787, - 0x29ff05, - 0x2a41c8, - 0x3b1b88, - 0x3bb508, - 0x23f445, - 0x2f34c6, - 0x32e249, - 0x3c2784, - 0x2db78b, - 0x22694b, - 0x2ef609, - 0x2059c3, - 0x257b05, - 0x2ef4c6, - 0x241f88, - 0x30a604, - 0x31a546, - 0x2ad8c9, - 0x2ce1c5, - 0x2d6506, - 0x2eed46, - 0x203f44, - 0x29a14a, - 0x2a4848, - 0x21c486, - 0x375c45, - 0x357147, - 0x33a2c7, - 0x21f744, - 0x226b87, - 0x2bffc4, - 0x369146, - 0x207883, - 0x26ff45, - 0x2ba485, - 0x25b688, - 0x287005, - 0x282849, - 0x2abc07, - 0x36768b, - 0x2abc0c, - 0x2ac20a, - 0x3513c7, - 0x203843, - 0x280d88, - 0x23f605, - 0x3025c5, - 0x35f284, - 0x223986, - 0x283746, - 0x26b607, - 0x3a9d8b, - 0x218e84, - 0x309d04, - 0x2d6784, - 0x2db206, - 0x203d44, - 0x21e488, - 0x35f085, - 0x21a245, - 0x2a3447, - 0x25ed89, - 0x33a085, - 0x39690a, - 0x2d5ac9, - 0x2aceca, - 0x3da249, - 0x354004, - 0x2cedc5, - 0x2c99c8, - 0x3aaacb, - 0x313005, - 0x2ecd46, - 0x241c04, - 0x282d86, - 0x3a1909, - 0x2ec1c7, - 0x33ef48, - 0x297706, - 0x3c9f87, - 0x289188, - 0x37c006, - 0x3d5e84, - 0x386b47, - 0x388705, - 0x398187, - 0x29f484, - 0x2c8206, - 0x30ca48, - 0x29fc48, - 0x33dec7, - 0x3801c8, - 0x29dec5, - 0x205804, - 0x377288, - 0x3802c4, - 0x21c345, - 0x30cc44, - 0x20ef87, - 0x291ac7, - 0x289dc8, - 0x2def06, - 0x286f85, - 0x282648, - 0x37e848, - 0x2a9449, - 0x226c46, - 0x2311c8, - 0x28970a, - 0x2a7ac8, - 0x308c85, - 0x22d9c6, - 0x2a9a48, - 0x20fb8a, - 0x265587, - 0x28e745, - 0x297d88, - 0x2b3a44, - 0x253786, - 0x2d3548, - 0x205886, - 0x33aa08, - 0x2d9e07, - 0x203686, - 0x2c9144, - 0x26a4c7, - 0x2c3304, - 0x3a18c7, - 0x23b00d, - 0x239945, - 0x2d8e4b, - 0x2916c6, - 0x252f48, - 0x2431c4, - 0x3c0706, - 0x285346, - 0x27eb87, - 0x29f2cd, - 0x305587, - 0x2c3b48, - 0x28bd45, - 0x296c88, - 0x2d6dc6, - 0x29df48, - 0x38ecc6, - 0x3b3a07, - 0x28a149, - 0x35fe07, - 0x290348, - 0x34c1c5, - 0x22bc48, - 0x2b1dc5, - 0x2d6d05, - 0x37d145, - 0x24dc03, - 0x208084, - 0x297f85, - 0x3a9a89, - 0x36ec46, - 0x2ebe88, - 0x2eefc5, - 0x2c5387, - 0x2e0fca, - 0x2d6449, - 0x2d540a, - 0x2e1f08, - 0x22830c, - 0x28a90d, - 0x314e43, - 0x33a908, - 0x20b305, - 0x2f4006, - 0x3ccfc6, - 0x2d2405, - 0x355449, - 0x348ec5, - 0x282648, - 0x258946, - 0x370286, - 0x2ab089, - 0x3b0b47, - 0x298686, - 0x2e0f48, - 0x3d5388, - 0x2efec7, - 0x2cf3ce, - 0x2d7005, - 0x3c7b45, - 0x205788, - 0x36f947, - 0x20d282, - 0x2cf804, - 0x23b58a, - 0x23ad88, - 0x25e7c6, - 0x2a1848, - 0x2a6fc6, - 0x25f708, - 0x2b8cc8, - 0x30b3c4, - 0x2c5745, - 0x602284, - 0x602284, - 0x602284, - 0x207783, - 0x20d0c6, - 0x282b06, - 0x2a5dcc, - 0x202503, - 0x2d75c6, - 0x207844, - 0x288e88, - 0x2ad705, - 0x23b686, - 0x2cc888, - 0x2e3246, - 0x23bac6, - 0x203d48, - 0x2dc487, - 0x273f09, - 0x3df7ca, - 0x26dbc4, - 0x295d45, - 0x2b7645, - 0x2d9a86, - 0x23e5c6, - 0x2a5b46, - 0x3d3f06, - 0x274044, - 0x27404b, - 0x266cc4, - 0x23f185, - 0x2b7cc5, - 0x3aa046, - 0x209648, - 0x28a7c7, - 0x3305c4, - 0x213c03, - 0x2b3545, - 0x33fdc7, - 0x28a6cb, - 0x25b587, - 0x2cc788, - 0x2c5887, - 0x2715c6, - 0x25c348, - 0x2cad4b, - 0x34e2c6, - 0x214a09, - 0x2caec5, - 0x325343, - 0x2d6506, - 0x2d9d08, - 0x215203, - 0x2a11c3, - 0x289186, - 0x2a6fc6, - 0x379eca, - 0x284945, - 0x28518b, - 0x2a6e0b, - 0x2163c3, - 0x206743, - 0x2bff44, - 0x2e0e07, - 0x27d904, - 0x25ef44, - 0x2c2bc4, - 0x2a7dc8, - 0x375b88, - 0x20c409, - 0x2d98c8, - 0x37d3c7, - 0x24bc06, - 0x2ebacf, - 0x2d7146, - 0x2e15c4, - 0x3759ca, - 0x33fcc7, - 0x2c3406, - 0x297bc9, - 0x20c385, - 0x25b7c5, - 0x20c4c6, - 0x22bd83, - 0x2b3a89, - 0x223886, - 0x26b189, - 0x396e86, - 0x26ff45, - 0x361bc5, - 0x206643, - 0x3131c8, - 0x330d07, - 0x355604, - 0x288d08, - 0x2e11c4, - 0x31c046, - 0x2b6486, - 0x23d846, - 0x2dc149, - 0x302545, - 0x29ffc6, - 0x277389, - 0x2d6146, - 0x2a7e46, - 0x3a8b46, - 0x22e405, - 0x30cc46, - 0x3b3a04, - 0x358d45, - 0x21c484, - 0x2c45c6, - 0x273404, - 0x207a43, - 0x28e3c5, - 0x234f88, - 0x366a47, - 0x30a689, - 0x28e648, - 0x2a0951, - 0x2eedca, - 0x2ff207, - 0x3d8686, - 0x207844, - 0x2d02c8, - 0x2e2e88, - 0x2a0b0a, - 0x2d1acd, - 0x2a9606, - 0x203e46, - 0x26a586, - 0x21a247, - 0x2c3c05, - 0x35c6c7, - 0x207705, - 0x39e404, - 0x206686, - 0x30ec47, - 0x2b378d, - 0x2a9987, - 0x344fc8, - 0x282949, - 0x22d8c6, - 0x360dc5, - 0x2393c4, - 0x26ae86, - 0x21f646, - 0x23af06, - 0x2a20c8, - 0x22cdc3, - 0x23e443, - 0x34bcc5, - 0x2d2a86, - 0x2b8c85, - 0x297908, - 0x2a55ca, - 0x33f504, - 0x288e88, - 0x299fc8, - 0x25ef47, - 0x28ed49, - 0x2cc488, - 0x287e47, - 0x2c2e46, - 0x20588a, - 0x26af08, - 0x32df09, - 0x2ae088, - 0x224a09, - 0x3d8547, - 0x35ce45, - 0x2a73c6, - 0x31de48, - 0x2530c8, - 0x2bbfc8, - 0x21e608, - 0x23f185, - 0x200d04, - 0x233908, - 0x241984, - 0x3da044, - 0x26ff45, - 0x2997c7, - 0x25eb49, - 0x27e987, - 0x2260c5, - 0x27d706, - 0x375446, - 0x209744, - 0x2ab3c6, - 0x2855c4, - 0x293ec6, - 0x25e906, - 0x215046, - 0x3d5c05, - 0x2977c7, - 0x203843, - 0x22b509, - 0x31cb48, - 0x287cc4, - 0x287ccd, - 0x29fd48, - 0x2fcd48, - 0x32de86, - 0x28a249, - 0x2d6449, - 0x3a1605, - 0x2a56ca, - 0x2a844a, - 0x2b5c8c, - 0x2b5e06, - 0x280986, - 0x2d79c6, - 0x393189, - 0x2f4246, - 0x223b06, - 0x348f86, - 0x367848, - 0x37e646, - 0x2e094b, - 0x299945, - 0x21a245, - 0x281485, - 0x3b5146, - 0x205843, - 0x23d7c6, - 0x2a9907, - 0x2d0185, - 0x27fbc5, - 0x2c12c5, - 0x301c46, - 0x336144, - 0x336146, - 0x2a9e49, - 0x3b4fcc, - 0x39e148, - 0x2520c4, - 0x30c946, - 0x2917c6, - 0x2d9d08, - 0x2c2f48, - 0x3b4ec9, - 0x357147, - 0x237809, - 0x278286, - 0x22c544, - 0x20af04, - 0x286dc4, - 0x289188, - 0x25e98a, - 0x33a006, - 0x36eb07, - 0x398407, - 0x23f105, - 0x2b7604, - 0x2958c6, - 0x2c3c46, - 0x21b2c3, - 0x31c987, - 0x2205c8, - 0x3a174a, - 0x22e4c8, - 0x34df48, - 0x273445, - 0x2a6205, - 0x237745, - 0x23f4c6, - 0x242546, - 0x25d405, - 0x330449, - 0x2b740c, - 0x307d87, - 0x2a0b88, - 0x251045, - 0x602284, - 0x267c84, - 0x2d9184, - 0x212d06, - 0x2a8d0e, - 0x25b847, - 0x21a445, - 0x3c270c, - 0x3d2347, - 0x30ebc7, - 0x30f7c9, - 0x221a89, - 0x28e745, - 0x31cb48, - 0x32e249, - 0x3bb3c5, - 0x2d00c8, + 0x2221c3, + 0x2d0ac9, + 0x2e3946, + 0x2a34c6, + 0x29c484, + 0x239647, + 0x2f43c6, + 0x303ac5, + 0x244243, + 0x211184, + 0x28aa06, + 0x219784, + 0x3c11c8, + 0x2064c9, + 0x369d09, + 0x2ada8a, + 0x2495cd, + 0x23e8c7, + 0x206986, + 0x21e5c4, + 0x293f89, + 0x2924c8, + 0x294546, + 0x242b06, + 0x2a1447, + 0x2c3b06, + 0x223686, + 0x3d0c06, + 0x3e30ca, + 0x21cf88, + 0x234885, + 0x245749, + 0x270b0a, + 0x33b008, + 0x2a8cc8, + 0x2a3448, + 0x3e450c, + 0x3996c5, + 0x2ab588, + 0x2ca006, + 0x29dac6, + 0x2dab47, + 0x3b0785, + 0x290285, + 0x369bc9, + 0x210b07, + 0x2f6145, + 0x2286c7, + 0x20dac3, + 0x2dc505, + 0x229108, + 0x2cc507, + 0x2a8b89, + 0x2e1dc5, + 0x30a804, + 0x31dc08, + 0x2cb5c7, + 0x3c8988, + 0x22aa48, + 0x392005, + 0x353b46, + 0x2ab406, + 0x30c689, + 0x266387, + 0x2bbb86, + 0x2585c7, + 0x215103, + 0x21eb44, + 0x2e6fc5, + 0x23c984, + 0x2526c4, + 0x28db87, + 0x2743c7, + 0x286544, + 0x2a89d0, + 0x333847, + 0x3de685, + 0x25084c, + 0x22a804, + 0x2c1108, + 0x287189, + 0x2be9c6, + 0x32f908, + 0x27a484, + 0x282f88, + 0x23a086, + 0x231248, + 0x2a93c6, + 0x2d2d4b, + 0x331b85, + 0x2e6e48, + 0x21a484, + 0x28f78a, + 0x2a8b89, + 0x29e946, + 0x21b6c8, + 0x2657c5, + 0x2d00c4, 0x2c1006, - 0x377506, - 0x2463c4, - 0x294908, - 0x204883, - 0x20ccc4, - 0x2b35c5, - 0x39db87, - 0x2e5e45, - 0x2895c9, - 0x29664d, - 0x2af506, - 0x213c44, - 0x36ee08, - 0x2b25ca, - 0x2144c7, - 0x34bb05, - 0x20cd03, - 0x2a6fce, - 0x3132cc, - 0x30ce47, - 0x2a8ec7, - 0x4539cd47, - 0xb20c6, - 0x27c44, - 0x215d03, - 0x2f4285, - 0x2d9185, - 0x2a1c08, - 0x29edc9, - 0x251fc6, - 0x27d904, - 0x2ff146, - 0x2398cb, - 0x2eab4c, - 0x24dcc7, - 0x2e0c05, - 0x3b1a88, - 0x2efc85, - 0x3759c7, - 0x307b87, - 0x2475c5, - 0x205843, - 0x21fac4, - 0x2e6445, - 0x273bc5, - 0x273bc6, - 0x2a2608, - 0x30ec47, - 0x3cd2c6, - 0x3472c6, - 0x37d086, - 0x30f0c9, - 0x27ef47, - 0x251e46, - 0x2eacc6, - 0x3cae06, - 0x2b4385, - 0x20e046, - 0x3b3245, - 0x2bf588, - 0x29940b, - 0x295606, - 0x398444, - 0x305bc9, - 0x2abc04, - 0x2c0f88, - 0x3116c7, - 0x28bac4, - 0x2cb948, - 0x2d1604, - 0x2b43c4, - 0x27a345, - 0x322506, - 0x2a7d07, - 0x249b03, - 0x2a3705, - 0x2ff4c4, - 0x3c7b86, - 0x3a1688, - 0x37e545, - 0x2990c9, - 0x3513c5, - 0x323488, - 0x2bc807, - 0x330748, - 0x2cb587, - 0x2fdb49, - 0x287f86, - 0x372946, - 0x29b284, - 0x309c45, - 0x31520c, - 0x281487, - 0x282047, - 0x23e208, - 0x2af506, - 0x2a9844, - 0x34a144, - 0x38fb49, - 0x2d7ac6, - 0x296b47, - 0x27e7c4, - 0x2ab4c6, - 0x3c1685, - 0x2dea47, - 0x2e08c6, - 0x261609, - 0x39b307, - 0x29d487, - 0x2aaf06, - 0x270205, - 0x286b08, - 0x223708, - 0x371f86, - 0x37e585, - 0x2e93c6, - 0x203803, - 0x2a1a89, - 0x2a58ce, - 0x2cb2c8, - 0x2e12c8, - 0x371d8b, - 0x299306, - 0x398304, - 0x23bac4, - 0x2a59ca, - 0x2134c7, - 0x251f05, - 0x214a09, - 0x2cf305, - 0x3da087, - 0x232144, - 0x204787, - 0x322608, - 0x2d6c46, - 0x2c8389, - 0x2cc58a, - 0x213446, - 0x29f886, - 0x2b7c45, - 0x39f685, - 0x37d947, - 0x246d48, - 0x3c15c8, - 0x30b3c6, - 0x361c45, - 0x23e34e, - 0x2ccc44, - 0x2a1b85, - 0x27d089, - 0x2f7588, - 0x2931c6, - 0x2a3ccc, - 0x2a51d0, - 0x2a894f, - 0x2aa508, - 0x3513c7, - 0x3d5c05, - 0x297f85, - 0x2a7b89, - 0x297f89, - 0x27ddc6, - 0x313087, - 0x309b45, - 0x337c49, - 0x363386, - 0x2f408d, - 0x286c89, - 0x25ef44, - 0x2cb048, - 0x2339c9, - 0x33a1c6, - 0x280f85, - 0x372946, - 0x33ee09, - 0x27e648, - 0x210ec5, - 0x289804, - 0x2a3e8b, - 0x33a085, - 0x242006, - 0x28ac46, - 0x22a986, - 0x25e24b, - 0x2991c9, - 0x347205, - 0x399007, - 0x2eed46, - 0x233086, - 0x289488, - 0x30ed89, - 0x344d8c, - 0x33fbc8, - 0x31e806, - 0x333e83, - 0x360186, - 0x2b58c5, - 0x285cc8, - 0x3e21c6, - 0x2dec88, - 0x24be05, - 0x293f85, - 0x2c0b88, - 0x3d5247, - 0x3ccf07, - 0x26b607, - 0x31fc48, - 0x2d9b88, - 0x2e2d86, - 0x2c4407, - 0x34d947, - 0x2b578a, - 0x238643, - 0x3b5146, - 0x23e2c5, - 0x215cc4, - 0x282949, - 0x2fdac4, - 0x2cbd84, - 0x2a3944, - 0x2a8ecb, - 0x330c47, - 0x23e585, - 0x29dbc8, - 0x27d706, - 0x27d708, - 0x284886, - 0x294845, - 0x294b05, - 0x296086, - 0x2971c8, - 0x297b08, - 0x282b06, - 0x29da0f, - 0x2a1550, - 0x205385, - 0x203843, - 0x22c605, - 0x321108, - 0x297e89, - 0x3bb508, - 0x312e88, - 0x385808, - 0x330d07, - 0x27d3c9, - 0x2dee88, - 0x2a4f84, - 0x2a37c8, - 0x3589c9, - 0x2c4a07, - 0x395d44, - 0x27ea48, - 0x29758a, - 0x2ff746, - 0x2a9606, - 0x226b09, - 0x2a5407, - 0x2dbfc8, - 0x2321c8, - 0x347988, - 0x259805, - 0x21ce85, - 0x21a245, - 0x2d9145, - 0x2c2747, - 0x205845, - 0x2d0185, - 0x203546, - 0x3bb447, - 0x3aaa07, - 0x297886, - 0x2e2445, - 0x242006, - 0x280e45, - 0x2c7d08, - 0x309ac4, - 0x2d61c6, - 0x353544, - 0x2cb748, - 0x32288a, - 0x28328c, - 0x2a6505, - 0x21a306, - 0x344f46, - 0x348d86, - 0x31e884, - 0x3cd585, - 0x284147, - 0x2a5489, - 0x2db647, - 0x602284, - 0x602284, - 0x330ac5, - 0x2dfe04, - 0x2a328a, - 0x27d586, - 0x2c0b04, - 0x3dccc5, - 0x2c1d85, - 0x2c3b44, - 0x28a887, - 0x3cdfc7, - 0x2db208, - 0x2e94c8, - 0x210ec9, - 0x388d08, - 0x29048b, - 0x2a7cc4, - 0x233185, - 0x38ff05, - 0x26b589, - 0x30ed89, - 0x305ac8, - 0x368f48, - 0x2e6bc4, - 0x291805, - 0x204083, - 0x2d9a45, - 0x2a0046, - 0x29ec0c, - 0x21f546, - 0x280e86, - 0x293445, - 0x301cc8, - 0x2eadc6, - 0x3d8806, - 0x2a9606, - 0x22e24c, - 0x38ffc4, - 0x37d1ca, - 0x293388, - 0x29ea47, - 0x2ff3c6, - 0x252087, - 0x2fed45, - 0x2702c6, - 0x363d86, - 0x377987, - 0x2cc284, - 0x20f085, - 0x27d084, - 0x39e487, - 0x27d2c8, - 0x28080a, - 0x288587, - 0x2ac487, - 0x351347, - 0x2efdc9, - 0x29ec0a, - 0x22c503, - 0x366a05, - 0x215083, - 0x2c2c09, - 0x2d9f48, - 0x388ac7, - 0x3bb609, - 0x223806, - 0x358e08, - 0x3c4b45, - 0x37e94a, - 0x2079c9, - 0x29c289, - 0x2d5707, - 0x2e2f89, - 0x214f48, - 0x25f906, - 0x21a4c8, - 0x27ff07, - 0x274147, - 0x2d5ac7, - 0x2dd548, - 0x30c7c6, - 0x297345, - 0x284147, - 0x29f388, - 0x37d004, - 0x306dc4, - 0x298587, - 0x2b9047, - 0x32e0ca, - 0x25f886, - 0x3c82ca, - 0x2cf747, - 0x2cca07, - 0x20f144, - 0x295d04, - 0x2de946, - 0x361444, - 0x36144c, - 0x311605, - 0x21c2c9, - 0x2f0e84, - 0x2c3c05, - 0x2b2548, - 0x297bc5, - 0x396906, - 0x2980c4, - 0x2ab98a, - 0x384806, - 0x24774a, - 0x3da407, - 0x20d645, - 0x22bd85, - 0x23f14a, - 0x247685, - 0x2a7b46, - 0x241984, - 0x2c00c6, - 0x37da05, - 0x3e2286, - 0x33decc, - 0x2e3cca, - 0x2a8544, - 0x24bc06, - 0x2a5407, - 0x2e0844, - 0x367848, - 0x2ecc46, - 0x398289, - 0x2cd009, - 0x2dcb49, - 0x2db946, - 0x280006, - 0x21a607, - 0x330388, - 0x27fe09, - 0x330c47, - 0x29dd46, - 0x3ca007, - 0x26a445, - 0x2ccc44, - 0x21a1c7, - 0x34db05, - 0x28f645, - 0x200cc7, - 0x247488, - 0x3b1a06, - 0x2a01cd, - 0x2a1e0f, - 0x2a6e0d, - 0x226104, - 0x235086, - 0x2e4088, - 0x348f45, - 0x2b5948, - 0x2862ca, - 0x25ef44, - 0x239b06, - 0x211787, - 0x218e87, - 0x2dc549, - 0x21a485, - 0x2c3b44, - 0x2c568a, - 0x2cc049, - 0x2e3087, - 0x30d406, - 0x33a1c6, - 0x291746, - 0x386c06, - 0x2e398f, - 0x2e3f49, - 0x37e646, - 0x38f786, - 0x32fa49, - 0x2c4507, - 0x220d03, - 0x22e3c6, - 0x20c483, - 0x2d22c8, - 0x2b0e07, - 0x2aa709, - 0x2b6308, - 0x3cd048, - 0x367346, - 0x21f489, - 0x307cc5, - 0x2a3504, - 0x35cf07, - 0x393205, - 0x226104, - 0x23e648, - 0x213784, - 0x2c4247, - 0x399c86, - 0x26c5c5, - 0x2ae088, - 0x33a08b, - 0x31d047, - 0x23f3c6, - 0x2d71c4, - 0x3aef86, - 0x26ff45, - 0x34db05, - 0x286889, - 0x28a489, - 0x274184, - 0x2741c5, - 0x24bc45, - 0x37e7c6, - 0x31cc48, - 0x2ce7c6, - 0x22040b, - 0x3d774a, - 0x2cb685, - 0x294b86, - 0x25b285, - 0x3c2205, - 0x256147, - 0x3b53c8, - 0x237804, - 0x385406, - 0x297b86, - 0x215107, - 0x325304, - 0x285346, - 0x229845, - 0x229849, - 0x280204, - 0x2b7789, - 0x282b06, - 0x2d08c8, - 0x24bc45, - 0x398505, - 0x3e2286, - 0x344c89, - 0x221a89, - 0x280f06, - 0x2f7688, - 0x296788, - 0x25b244, - 0x2c6604, - 0x2c6608, - 0x3326c8, - 0x237909, - 0x29ffc6, - 0x2a9606, - 0x33964d, - 0x31a546, - 0x378f09, - 0x201f45, - 0x20c4c6, - 0x347b08, - 0x336085, - 0x34d984, - 0x26ff45, - 0x289fc8, - 0x2a3049, - 0x27d144, - 0x2c8206, - 0x29c4ca, - 0x30cd48, - 0x32e249, - 0x270bca, - 0x3bb586, - 0x2a1fc8, - 0x375785, - 0x293608, - 0x2fedc5, - 0x2236c9, - 0x33bc49, - 0x21fb82, - 0x2caec5, - 0x277f06, - 0x282a47, - 0x215cc5, - 0x33eb86, - 0x319508, - 0x2af506, - 0x2c9889, - 0x282146, - 0x289308, - 0x24ef85, - 0x394886, - 0x3b3b08, - 0x289188, - 0x3d8448, - 0x31b948, - 0x20e044, - 0x21f783, - 0x2c9ac4, - 0x288786, - 0x26a484, - 0x2e1207, - 0x3d8709, - 0x2d6785, - 0x2321c6, - 0x22e3c6, - 0x2a244b, - 0x2c3346, - 0x273686, - 0x2d62c8, - 0x266cc6, - 0x20d443, - 0x20bb03, - 0x2ccc44, - 0x2310c5, - 0x23f747, - 0x27d2c8, - 0x27d2cf, - 0x28404b, - 0x31ca48, - 0x2c8286, - 0x31cd4e, - 0x23f583, - 0x23f6c4, - 0x2c32c5, - 0x2c39c6, - 0x2959cb, - 0x299886, - 0x30c009, - 0x26c5c5, - 0x249a48, - 0x209bc8, - 0x22194c, - 0x2a8f06, - 0x2d9a86, - 0x2e5145, - 0x290108, - 0x283285, - 0x3505c8, - 0x2a404a, - 0x2a7249, - 0x602284, - 0x2000c2, - 0x4b212402, - 0x200382, - 0x20e704, - 0x20b982, - 0x217544, - 0x203182, - 0x5803, - 0x2003c2, - 0x208502, - 0xae888, - 0x4cc4, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x7542, - 0x4b202, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x1fcc2, - 0x4642, - 0x72c2, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x217fc3, - 0x23e083, - 0x219ac3, - 0x24cd44, - 0x22ea43, - 0x236704, - 0x233fc3, - 0x2e5904, - 0x266a83, - 0x215f87, - 0x23cb03, - 0x205803, - 0x321388, - 0x23e083, - 0x293b0b, - 0x2ffec3, - 0x243bc6, - 0x22dc42, - 0x2fa00b, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23e083, - 0x221d43, - 0x210cc3, - 0x2000c2, - 0xae888, - 0x334f05, - 0x34db88, - 0x2f4fc8, - 0x212402, - 0x36a4c5, - 0x3ca147, - 0x2031c2, - 0x243407, - 0x200382, - 0x253d47, - 0x23a489, - 0x272888, - 0x347809, - 0x210382, - 0x3d5f47, - 0x32ad04, - 0x3ca207, - 0x3d7647, - 0x25a642, - 0x23cb03, - 0x20a942, - 0x203182, - 0x2003c2, - 0x205b42, - 0x200902, - 0x208502, - 0x2e1a45, - 0x227885, - 0x12402, - 0x33fc3, - 0x22ea43, - 0x233fc3, - 0x27e883, - 0x266a83, - 0x204903, - 0x217fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0xfe83, - 0x101, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x2191c3, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x217c83, - 0x4e4b1706, - 0x22383, - 0xd7405, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x5242, - 0xae888, - 0x12f603, - 0x5803, - 0x1c0443, - 0x46d04, - 0x147b604, - 0xf0085, - 0x2000c2, - 0x3993c4, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x247e03, - 0x22f845, - 0x2191c3, - 0x21e1c3, - 0x217fc3, - 0x24dfc3, - 0x23e083, - 0x208503, - 0x24cdc3, - 0x20aa43, - 0x5c2, - 0x30242, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x2000c2, - 0x24ac43, - 0x212402, - 0xf982, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x217fc3, - 0x23e083, - 0x208502, - 0xae888, - 0x266a83, - 0x1c0443, - 0xae888, - 0x1c0443, - 0x276243, - 0x22ea43, - 0x2319c4, - 0x233fc3, - 0x266a83, - 0x209582, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x209582, - 0x215f83, - 0x217fc3, - 0x23e083, - 0x2f8e43, - 0x208503, - 0x2000c2, - 0x212402, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x243bc5, - 0x1375c6, - 0x24cd44, - 0x22dc42, - 0x882, - 0xae888, - 0xf982, - 0x4b202, - 0x2a82, - 0x2000c2, - 0x146bc5, - 0x1ae08, - 0x125203, - 0x212402, - 0x3c904, - 0x52d16f86, - 0x1384, - 0xc634b, - 0x3a806, - 0x7f3c7, - 0x1431c9, - 0x233fc3, - 0x49e88, - 0x49e8b, - 0x4a30b, - 0x4a9cb, - 0x4ad0b, - 0x4afcb, - 0x4b40b, - 0x1cb86, - 0x266a83, - 0xf48c5, - 0x2044, - 0x20ef43, - 0x11b787, - 0xe88c4, - 0x722c4, - 0x217fc3, - 0x81006, - 0x1583c4, - 0x1c0443, - 0x23e083, - 0x300ac4, - 0x131247, - 0x1371c9, - 0xc6108, - 0x1a2584, - 0x1ca344, - 0x134c46, - 0xff48, - 0x1480c5, - 0x124e89, - 0xe783, - 0x146bc5, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x205803, - 0x23e083, - 0x2ffec3, - 0x22dc42, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e703, - 0x21e484, - 0x217fc3, - 0x5803, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x2e5904, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x243bc6, - 0x233fc3, - 0x266a83, - 0xf443, - 0x1c0443, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x146bc5, - 0x7f3c7, - 0x15c3, - 0xe783, - 0xae888, - 0x266a83, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x612c3, - 0x217fc3, - 0x23e083, - 0x5622ea43, - 0x233fc3, - 0x217fc3, - 0x23e083, - 0xae888, - 0x2000c2, - 0x212402, - 0x22ea43, - 0x266a83, - 0x217fc3, - 0x2003c2, - 0x23e083, - 0x33c187, - 0x355d4b, - 0x211843, - 0x27da88, - 0x330107, - 0x229dc6, - 0x2d42c5, - 0x36a609, - 0x243948, - 0x381049, - 0x3ac290, - 0x38104b, - 0x215589, - 0x2015c3, - 0x2fa6c9, - 0x232646, - 0x23264c, - 0x334fc8, - 0x3dde48, - 0x26eac9, - 0x2c8b0e, - 0x23a24b, - 0x2c030c, - 0x233f03, - 0x284e8c, - 0x3e13c9, - 0x238447, - 0x233f0c, - 0x2bde8a, - 0x241ec4, - 0x38aa8d, - 0x284d48, - 0x219acd, - 0x292146, - 0x24cd4b, - 0x337349, - 0x38fa07, - 0x25f0c6, - 0x323849, - 0x35484a, - 0x30e748, - 0x2ffac4, - 0x3a8e87, - 0x3c0807, - 0x208184, - 0x2221c4, - 0x3b4809, - 0x35c549, - 0x3e1f48, - 0x2f2c85, - 0x2102c5, - 0x209a86, - 0x38a949, - 0x28654d, - 0x2ece48, - 0x209987, - 0x2d4348, - 0x26bdc6, - 0x22fa44, - 0x2a4d45, - 0x3d9f46, - 0x3dc104, - 0x3e12c7, - 0x204e8a, - 0x210e04, - 0x213386, - 0x214689, - 0x21468f, - 0x214c4d, - 0x215ac6, - 0x21aa10, - 0x21ae06, - 0x21b507, - 0x21bcc7, - 0x21bccf, - 0x21c689, - 0x224c46, - 0x225047, - 0x225048, - 0x225449, - 0x20f708, - 0x306a07, - 0x22b743, - 0x22e8c6, - 0x239148, - 0x2c8dca, - 0x20cf09, - 0x243a83, - 0x36a3c6, - 0x38524a, - 0x2fbb87, - 0x23828a, - 0x316c8e, - 0x21c7c6, - 0x32bc47, - 0x38ef46, - 0x243fc6, - 0x21cc8b, - 0x3a038a, - 0x35638d, - 0x2800c7, - 0x26dc08, - 0x26dc09, - 0x26dc0f, - 0x30a80c, - 0x265209, - 0x2bbbce, - 0x21608a, - 0x20dac6, - 0x3076c6, - 0x31a1cc, - 0x3df50c, - 0x325908, - 0x35fd07, - 0x39d4c5, - 0x3ca3c4, - 0x25fd0e, - 0x3ae384, - 0x37dd87, - 0x3a6d8a, - 0x3d7cd4, - 0x3db78f, - 0x21be88, - 0x22e788, - 0x39124d, - 0x39124e, - 0x22ed49, - 0x22fe88, - 0x22fe8f, - 0x233c0c, - 0x233c0f, - 0x234dc7, - 0x23718a, - 0x23874b, - 0x2395c8, - 0x23b807, - 0x260b4d, - 0x369646, - 0x38ac46, - 0x23d649, - 0x252848, - 0x243dc8, - 0x243dce, - 0x2bb387, - 0x305145, - 0x246ac5, - 0x206484, - 0x22a086, - 0x3e1e48, - 0x324643, - 0x2e8c8e, - 0x260f08, - 0x2acacb, - 0x276407, - 0x30b205, - 0x269c06, - 0x2b6ec7, - 0x321848, - 0x37d749, - 0x3d2cc5, - 0x28e408, - 0x228a46, - 0x3addca, - 0x25fc09, - 0x233fc9, - 0x233fcb, - 0x25c6c8, - 0x208049, - 0x2f2d46, - 0x2041ca, - 0x29d08a, - 0x23738c, - 0x375e07, - 0x27268a, - 0x331b0b, - 0x331b19, - 0x353148, - 0x243c45, - 0x260d06, - 0x211d89, - 0x3b2c46, - 0x22170a, - 0x275246, - 0x2d8384, - 0x2d838d, - 0x3b4447, - 0x368889, - 0x249285, - 0x2493c8, - 0x249c49, - 0x24bb44, - 0x24c247, - 0x24c248, - 0x24c507, - 0x26c188, - 0x251c87, - 0x2daec5, - 0x25828c, - 0x258749, - 0x31d28a, - 0x3b09c9, - 0x2fa7c9, - 0x38f54c, - 0x25accb, - 0x25c8c8, - 0x261448, - 0x264f04, - 0x28b548, - 0x28cb89, - 0x2bdf47, - 0x2148c6, - 0x2a3b07, - 0x2a0f49, - 0x354d4b, - 0x20b187, - 0x348647, - 0x3da547, - 0x219a44, - 0x219a45, - 0x2e5605, - 0x35e84b, - 0x349284, - 0x328308, - 0x30234a, - 0x228b07, - 0x3d0347, - 0x295192, - 0x293dc6, - 0x231346, - 0x34890e, - 0x294586, - 0x299e48, - 0x29aacf, - 0x219e88, - 0x28fb88, - 0x2df5ca, - 0x2df5d1, - 0x2ab64e, - 0x2550ca, - 0x2550cc, - 0x230087, - 0x230090, - 0x3d4f08, - 0x2ab845, - 0x2b71ca, - 0x3dc14c, - 0x29e08d, - 0x204906, - 0x204907, - 0x20490c, - 0x209d8c, - 0x2191cc, - 0x2c204b, - 0x3923c4, - 0x226c84, - 0x2ba749, - 0x34a1c7, - 0x382f89, - 0x29cec9, - 0x2bdb47, - 0x2bdd06, - 0x2bdd09, - 0x2be103, - 0x2af60a, - 0x323a87, - 0x3ca70b, - 0x35620a, - 0x32ad84, - 0x3c88c6, - 0x288809, - 0x3612c4, - 0x2e164a, - 0x2e2845, - 0x2cd7c5, - 0x2cd7cd, - 0x2cdb0e, + 0x25cf88, + 0x28d908, + 0x3356c6, + 0x36c104, + 0x283446, + 0x347ac7, + 0x285187, + 0x2a144f, + 0x346f47, + 0x395747, + 0x368945, + 0x3410c5, + 0x2ae749, + 0x2f8c06, + 0x28c7c5, + 0x28fe07, + 0x2de9c8, + 0x219805, + 0x29ea46, + 0x231f88, + 0x353fca, + 0x32c888, + 0x2980c7, + 0x303786, + 0x245706, + 0x2003c3, + 0x211c03, + 0x270cc9, + 0x29f7c9, + 0x2bb806, + 0x2e1dc5, + 0x3a97c8, + 0x21b6c8, + 0x2a7d08, + 0x3d0c8b, + 0x2d6547, + 0x31d409, + 0x2a16c8, + 0x329f44, + 0x3e3a48, + 0x299dc9, + 0x2bbe85, + 0x3cd447, + 0x21ebc5, + 0x28d808, + 0x29bb4b, + 0x2a2c50, + 0x2b7845, + 0x21a3cc, + 0x245405, + 0x28b703, + 0x2b49c6, + 0x2d3004, + 0x27fb86, + 0x2a9a07, + 0x221404, + 0x24cf48, + 0x201e8d, + 0x342545, + 0x23e904, + 0x2b60c4, + 0x395489, + 0x2afa88, + 0x332047, + 0x23a108, + 0x28ec88, + 0x286685, + 0x3cd987, + 0x286607, + 0x2f6447, + 0x2759c9, + 0x3c3009, + 0x375346, + 0x21bf06, + 0x28fec6, + 0x31a6c5, + 0x3c7104, + 0x3cf306, + 0x3d9dc6, + 0x2866c8, + 0x20458b, + 0x2fba47, + 0x21e5c4, + 0x2f4306, + 0x2eab47, + 0x38c785, + 0x3a1b45, + 0x266844, + 0x3c2f86, + 0x3cf388, + 0x293f89, + 0x254986, + 0x2922c8, + 0x303b86, + 0x360fc8, + 0x3603cc, + 0x286546, + 0x2a45cd, + 0x2a4a4b, + 0x31d685, + 0x3e4247, + 0x2cc986, + 0x3c5d88, + 0x3753c9, + 0x21d3c8, + 0x3de685, + 0x2893c7, + 0x28cc08, + 0x3c3709, + 0x2f4046, + 0x26af8a, + 0x3c5b08, + 0x21d20b, + 0x2d668c, + 0x283088, + 0x28a286, + 0x22de48, + 0x353c47, + 0x224e49, + 0x29b2cd, + 0x2a7fc6, + 0x3dc948, + 0x2c6509, + 0x2d16c8, + 0x291008, + 0x2d4c8c, + 0x2d5947, + 0x2d7887, + 0x275805, + 0x2c9987, + 0x2de888, + 0x2c1086, + 0x25480c, + 0x306808, + 0x2e1708, + 0x3cf646, + 0x327e47, + 0x375544, + 0x221408, + 0x29594c, + 0x243f8c, + 0x20ac85, + 0x2033c7, + 0x36c086, + 0x327dc6, + 0x39d8c8, + 0x224dc4, + 0x22fa8b, + 0x292e8b, + 0x303786, + 0x201d07, + 0x208805, + 0x27d905, + 0x22fbc6, + 0x265785, + 0x287745, + 0x2e0107, + 0x223a09, + 0x36a604, + 0x247245, + 0x30b005, + 0x3477c8, + 0x3a89c5, + 0x2d7089, + 0x3982c7, + 0x3982cb, + 0x302206, + 0x244e89, + 0x333088, + 0x2931c5, + 0x2f6548, + 0x3c3048, + 0x283d07, + 0x2455c7, + 0x28dc09, + 0x231187, + 0x29a109, + 0x2b984c, + 0x2bb808, + 0x2bf649, + 0x2c0787, + 0x28ed49, + 0x38fbc7, + 0x2d6788, + 0x3c1585, + 0x372bc6, + 0x2d5308, + 0x2fa4c8, + 0x2709c9, + 0x287787, + 0x27e305, + 0x207789, + 0x31f546, + 0x29b0c4, + 0x37f506, + 0x3a8fc8, + 0x23bc07, + 0x204788, + 0x3a9609, + 0x353907, + 0x2a7e46, + 0x3e3d84, + 0x26a5c9, + 0x3cd808, + 0x3cf507, + 0x291846, + 0x2044c6, + 0x3cfc04, + 0x2f3b46, + 0x207843, + 0x331709, + 0x331b46, + 0x2b7e85, + 0x2ab306, + 0x224185, + 0x28d088, + 0x205387, + 0x3c2786, + 0x333706, + 0x31ef88, + 0x2ae8c7, + 0x2a8005, + 0x2a87c8, + 0x3d4188, + 0x3c5b08, + 0x2452c5, + 0x372c46, + 0x369ac9, + 0x30c504, + 0x22400b, + 0x22338b, + 0x234789, + 0x20dac3, + 0x263745, + 0x2b62c6, + 0x246508, + 0x2fb584, + 0x2b64c6, + 0x2b27c9, + 0x3201c5, + 0x2e0046, + 0x2cb5c6, + 0x21b6c4, + 0x2a8e4a, + 0x2b7dc8, + 0x2fa4c6, + 0x371545, + 0x201b87, + 0x33aec7, + 0x353b44, + 0x2235c7, + 0x245fc4, + 0x245fc6, + 0x202003, + 0x2759c5, + 0x2bdc85, + 0x347188, + 0x28e145, + 0x286289, + 0x221247, + 0x22124b, + 0x2afd4c, + 0x2b034a, + 0x34ff07, + 0x20ac43, + 0x284b88, + 0x302585, + 0x219885, + 0x359784, + 0x2d6686, + 0x287186, + 0x2f3b87, + 0x26030b, + 0x214ac4, + 0x368a84, + 0x2bf884, + 0x2dfe06, + 0x221404, + 0x21b548, + 0x359585, + 0x249c05, + 0x2a7c47, + 0x3e4349, + 0x33ac85, + 0x39424a, + 0x2deb09, + 0x2ae3ca, + 0x3e3209, + 0x31c284, + 0x393445, + 0x2c3c08, + 0x3afdcb, + 0x30c2c5, + 0x216c86, + 0x24a884, + 0x2867c6, + 0x353789, + 0x2eac47, + 0x27af48, + 0x249946, + 0x347a47, + 0x28d908, + 0x3780c6, + 0x3e3e04, + 0x3b2687, + 0x384f05, + 0x396107, + 0x221484, + 0x2cc906, + 0x3aea88, + 0x2a4c08, + 0x32a647, + 0x306e08, + 0x2a1e85, + 0x20d904, + 0x240f48, + 0x29ae44, + 0x2168c5, + 0x3ae984, + 0x20b707, + 0x296787, + 0x28ee88, + 0x322f46, + 0x28e0c5, + 0x286088, + 0x32ca88, + 0x2ad9c9, + 0x223686, + 0x239b08, + 0x28f60a, + 0x38c808, + 0x318f85, + 0x27bbc6, + 0x2adfc8, + 0x28948a, + 0x232b87, + 0x292905, + 0x29df48, + 0x272e04, + 0x25ec86, + 0x2d7f88, + 0x20d986, + 0x3d55c8, + 0x237bc7, + 0x20cf06, + 0x2cd844, + 0x326687, + 0x2c6a84, + 0x353747, + 0x3cf84d, + 0x234805, + 0x2cc30b, + 0x244206, + 0x25e4c8, + 0x24cf04, + 0x26a146, + 0x28aa06, + 0x22e187, + 0x2a428d, + 0x3089c7, + 0x2c70c8, + 0x294145, + 0x219948, + 0x2dbac6, + 0x2a1f08, + 0x3e0d46, + 0x36c9c7, + 0x2e2d89, + 0x338587, + 0x294808, + 0x269145, + 0x2357c8, + 0x327d05, + 0x2334c5, + 0x379205, + 0x20af03, + 0x202644, + 0x245745, + 0x24b649, + 0x372a06, + 0x2ea908, + 0x289685, + 0x2c9847, + 0x2a90ca, + 0x2dff89, + 0x2d7bca, + 0x2e5708, + 0x22850c, + 0x28fe8d, + 0x31e443, + 0x3d54c8, + 0x211145, + 0x353d86, + 0x3d1d86, + 0x321f85, + 0x2586c9, + 0x30db85, + 0x286088, + 0x2648c6, + 0x36ad46, + 0x2af1c9, + 0x266e47, + 0x29be06, + 0x2a9048, + 0x245f48, + 0x2f0987, + 0x2e050e, + 0x2dbd05, + 0x3c3605, + 0x20d888, + 0x3a21c7, + 0x204502, + 0x2d4944, + 0x27fa8a, + 0x3cf5c8, + 0x3c3186, + 0x2a6108, + 0x2ab406, + 0x340f48, + 0x2bbb88, + 0x233484, 0x2c9c05, - 0x33ae46, - 0x2437c7, - 0x2525ca, - 0x3ae686, - 0x381c04, - 0x35a607, - 0x2fc70b, - 0x26be87, - 0x2699c4, - 0x253306, - 0x25330d, - 0x2e724c, - 0x217e86, - 0x2ed04a, - 0x223486, - 0x220dc8, - 0x274707, - 0x2d5eca, - 0x2361c6, - 0x27ffc3, - 0x2f4b46, - 0x238fc8, - 0x37204a, - 0x2df007, - 0x2df008, - 0x25bfc4, - 0x295707, - 0x2fdf08, - 0x293fc8, - 0x2c30c8, - 0x33e14a, - 0x2ee705, - 0x2ee987, - 0x254f13, - 0x271146, - 0x20bc08, - 0x222a49, - 0x2432c8, - 0x3673cb, - 0x3cd3c8, - 0x2cab84, - 0x2c0c86, - 0x325e06, - 0x322349, - 0x2d5d07, - 0x258388, - 0x2a5c46, - 0x200bc4, - 0x3d5d85, - 0x3aa788, - 0x248e8a, - 0x2d8008, - 0x2dcf86, - 0x2a21ca, - 0x273d48, - 0x2e0648, - 0x2e18c8, - 0x2e2106, - 0x2e4286, - 0x3b048c, - 0x2e4810, - 0x2b8a85, - 0x219c88, - 0x21e910, - 0x219c90, - 0x3ac10e, - 0x3b010e, - 0x3b0114, - 0x3b934f, - 0x3b9706, - 0x3b6051, - 0x208253, - 0x2086c8, - 0x25f245, - 0x27dfc8, - 0x3a7c45, - 0x34aacc, - 0x22b989, - 0x3ae1c9, - 0x317147, - 0x237bc9, - 0x3b2807, - 0x33a486, - 0x2a4b47, - 0x202cc5, - 0x20fec3, - 0x20f443, - 0x215bc4, - 0x3dff8d, - 0x20bf4f, - 0x200c05, - 0x34a9c6, - 0x2200c7, - 0x334d47, - 0x37b8c6, - 0x37b8cb, - 0x2ac3c5, - 0x259986, - 0x30db47, - 0x252b89, - 0x225706, - 0x38c185, - 0x3c324b, - 0x205d06, - 0x226685, - 0x246248, - 0x296448, - 0x2ae3cc, - 0x2ae3d0, - 0x2b4f89, - 0x2c7007, - 0x2be80b, - 0x2ce086, - 0x3068ca, - 0x2a81cb, - 0x38160a, - 0x39f946, - 0x2f8d05, - 0x330006, - 0x28d548, - 0x31720a, - 0x390edc, - 0x2fff8c, - 0x300288, - 0x243bc5, - 0x387ac7, - 0x25d246, - 0x2bcc85, - 0x218386, - 0x37ba88, - 0x2cc2c7, - 0x2c8a08, - 0x27120a, - 0x3c110c, - 0x3248c9, - 0x3c1387, - 0x28d0c4, - 0x246b86, - 0x28f70a, - 0x29cfc5, - 0x221e4c, - 0x222508, - 0x2f6848, - 0x2b1a0c, - 0x31aa0c, - 0x32a8c9, - 0x32ab07, - 0x242dcc, - 0x22ac84, - 0x36fe0a, - 0x31114c, - 0x24e1cb, - 0x24f60b, - 0x2509c6, - 0x2541c7, - 0x2302c7, - 0x2302cf, - 0x312111, - 0x2eb492, - 0x25538d, - 0x25538e, - 0x2556ce, - 0x3b9508, - 0x3b9512, - 0x266448, - 0x223087, - 0x24fa4a, - 0x2af348, - 0x294545, - 0x2c258a, - 0x21b187, - 0x2f1004, - 0x20ee43, - 0x236c45, - 0x2df847, - 0x3aca87, - 0x29e28e, - 0x33dacd, - 0x350d49, - 0x31fb05, - 0x35f4c3, - 0x34ca46, - 0x259ec5, - 0x2acd08, - 0x227349, - 0x260d45, - 0x260d4f, - 0x2c6447, - 0x2154c5, - 0x276dca, - 0x205646, - 0x35d1c9, - 0x386ecc, - 0x3d2dc9, - 0x20b386, - 0x30214c, - 0x333f86, - 0x310088, - 0x331a06, - 0x36c7c6, - 0x2c34c4, - 0x3222c3, - 0x20de0a, - 0x22de51, - 0x26a90a, - 0x25b105, - 0x288207, - 0x255b47, - 0x2e8a84, - 0x2fe00b, - 0x347688, - 0x2cb146, - 0x23e285, - 0x268b84, - 0x24fc89, - 0x2008c4, - 0x2124c7, - 0x34d185, - 0x34d187, - 0x348b45, - 0x20bb83, - 0x222f48, - 0x27e1ca, - 0x249b03, - 0x334f4a, - 0x2a9d06, - 0x260acf, - 0x2bb309, - 0x2e8c10, - 0x3064c8, - 0x2dd9c9, - 0x29f107, - 0x25328f, - 0x3bb9c4, - 0x2e5984, - 0x21ac86, - 0x2356c6, - 0x23edca, - 0x247cc6, - 0x2b9447, - 0x317c48, - 0x317e47, - 0x3192c7, - 0x31ad0a, - 0x319bcb, - 0x358f85, - 0x2eb0c8, - 0x21a303, - 0x3ccbcc, - 0x39d24f, - 0x3c7e0d, - 0x258b87, - 0x350e89, - 0x2f5c87, - 0x28c3c8, - 0x3d7ecc, - 0x2caa88, - 0x366dc8, - 0x332bce, - 0x345b54, - 0x346064, - 0x365d0a, - 0x38188b, - 0x3b28c4, - 0x3b28c9, - 0x239b88, - 0x247385, - 0x32414a, - 0x2a5007, - 0x215d84, - 0x24ac43, - 0x22ea43, - 0x236704, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x2191c3, - 0x23cb03, - 0x2e4806, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x216983, + 0x70e7c4, + 0x70e7c4, + 0x70e7c4, + 0x201f03, + 0x204346, + 0x286546, + 0x2aa3cc, + 0x20cf43, + 0x270b06, + 0x201fc4, + 0x2e38c8, + 0x2b2605, + 0x27fb86, + 0x2d1208, + 0x2e6386, + 0x3c2706, + 0x29e748, + 0x2e7047, + 0x230f49, + 0x2f04ca, + 0x274544, + 0x246005, + 0x30a405, + 0x2e3646, + 0x23e906, + 0x2aa146, + 0x382006, + 0x231084, + 0x23108b, + 0x239644, + 0x201c05, + 0x2bab85, + 0x2605c6, + 0x20ec48, + 0x28fd47, + 0x331ac4, + 0x211583, + 0x272905, + 0x37f3c7, + 0x28fc4b, + 0x347087, + 0x2d1108, + 0x2c9d47, + 0x276a06, + 0x271fc8, + 0x2cf3cb, + 0x2cba46, + 0x212949, + 0x2cf545, + 0x322d43, + 0x2e0046, + 0x237ac8, + 0x215ec3, + 0x29acc3, + 0x28d906, + 0x2ab406, + 0x37604a, + 0x28a2c5, + 0x28a84b, + 0x2ab24b, + 0x217e03, + 0x209b03, + 0x2c3044, + 0x2e4887, + 0x237b44, + 0x29b2c4, + 0x2c9e84, + 0x38cb08, + 0x371488, + 0x211b89, + 0x2e3488, + 0x3a0087, + 0x224006, + 0x2ea54f, + 0x2dbe46, + 0x2e4dc4, + 0x3712ca, + 0x37f2c7, + 0x2c6b86, + 0x29b109, + 0x211b05, + 0x3472c5, + 0x211c46, + 0x235903, + 0x272e49, + 0x21d106, + 0x3a93c9, + 0x3947c6, + 0x2759c5, + 0x20b085, + 0x202643, + 0x2e49c8, + 0x332207, + 0x2f6084, + 0x2e3748, + 0x29d844, + 0x31ff46, + 0x2b49c6, + 0x247dc6, + 0x2e6d09, + 0x219805, + 0x2a80c6, + 0x25c0c9, + 0x2db246, + 0x2ea646, + 0x3abbc6, + 0x209085, + 0x3ae986, + 0x36c9c4, + 0x3c1585, + 0x2d5304, + 0x2c8f46, + 0x354704, + 0x201c03, + 0x292585, + 0x23d308, + 0x35a407, + 0x2fb609, + 0x292808, + 0x2a5891, + 0x2cb64a, + 0x3036c7, + 0x237d06, + 0x201fc4, + 0x2d5408, + 0x293688, + 0x2a5a4a, + 0x2d6e4d, + 0x216b86, + 0x29e846, + 0x326746, + 0x2ac3c7, + 0x2c7185, + 0x30d607, + 0x201e85, + 0x398404, + 0x3c2d46, + 0x2884c7, + 0x272b4d, + 0x2adf07, + 0x2bfb48, + 0x286389, + 0x27bac6, + 0x2f3fc5, + 0x2e9284, + 0x3a90c6, + 0x353a46, + 0x3cf746, + 0x2a6988, + 0x22d503, + 0x21b783, + 0x32c105, + 0x322606, + 0x2bbb45, + 0x249b48, + 0x2a9bca, + 0x239084, + 0x2e38c8, + 0x2a3448, + 0x3a9947, + 0x37b249, + 0x2d0e08, + 0x294007, + 0x2d3fc6, + 0x20d98a, + 0x3a9148, + 0x31dac9, + 0x2afb48, + 0x222849, + 0x35d787, + 0x208f45, + 0x2ab806, + 0x2c0f08, + 0x281fc8, + 0x261d08, + 0x342688, + 0x201c05, + 0x200d04, + 0x23bec8, + 0x24a604, + 0x3e3004, + 0x2759c5, + 0x29d187, + 0x3e4109, + 0x22df87, + 0x226b05, + 0x282e86, + 0x370d46, + 0x20ed44, + 0x2af4c6, + 0x28ac84, + 0x3d4886, + 0x3e3ec6, + 0x215d06, + 0x3de685, + 0x249a07, + 0x20ac43, + 0x22bf49, + 0x31ed88, + 0x293e84, + 0x293e8d, + 0x2a4d08, + 0x3082c8, + 0x31da46, + 0x2e2e89, + 0x2dff89, + 0x353485, + 0x2a9cca, + 0x27cb0a, + 0x291a4c, + 0x291bc6, + 0x284786, + 0x2dc446, + 0x3a6ac9, + 0x353fc6, + 0x2ae906, + 0x30dc46, + 0x221408, + 0x306e06, + 0x2e43cb, + 0x29d305, + 0x249c05, + 0x285285, + 0x30ef06, + 0x20d943, + 0x247d46, + 0x2ade87, + 0x2d52c5, + 0x2f4ec5, + 0x2c4945, + 0x2f9646, + 0x336cc4, + 0x336cc6, + 0x2a3d09, + 0x30ed8c, + 0x398148, + 0x25cf04, + 0x39d6c6, + 0x244306, + 0x237ac8, + 0x21b6c8, + 0x30ec89, + 0x201b87, + 0x2fbc09, + 0x27d9c6, + 0x216b04, + 0x210484, + 0x28df04, + 0x28d908, + 0x3e3f4a, + 0x33ac06, + 0x368807, + 0x396387, + 0x244f85, + 0x2b9304, + 0x299d86, + 0x2c71c6, + 0x205483, + 0x31ebc7, + 0x22a948, + 0x3535ca, + 0x202148, + 0x273148, + 0x354745, + 0x237105, + 0x2fbb45, + 0x245346, + 0x246e46, + 0x316a45, + 0x331949, + 0x2b910c, + 0x34ca47, + 0x2a5ac8, + 0x282185, + 0x70e7c4, + 0x236b04, + 0x2cc644, + 0x3d0ac6, + 0x2ad28e, + 0x347347, + 0x2ac5c5, + 0x30c48c, + 0x29d707, + 0x288447, + 0x2c8989, + 0x21ae49, + 0x292905, + 0x31ed88, + 0x369ac9, + 0x3c59c5, + 0x2d5208, + 0x2c1f86, + 0x2411c6, + 0x24fb84, + 0x2aa648, + 0x206743, + 0x203f44, + 0x272985, + 0x39b187, + 0x26a445, + 0x28f4c9, + 0x29b80d, + 0x2b2ec6, + 0x2115c4, + 0x288608, + 0x22384a, + 0x3e9847, + 0x2b0c45, + 0x203f83, + 0x2ab40e, + 0x2e4acc, + 0x33b107, + 0x2ad447, + 0x4d39a7c7, + 0x143386, + 0x27804, + 0x212fc3, + 0x354005, + 0x2cc645, + 0x2a64c8, + 0x2a3289, + 0x25ce06, + 0x237b44, + 0x303606, + 0x245d0b, + 0x2da2cc, + 0x257b47, + 0x2e4685, + 0x3d4088, + 0x2f0745, + 0x3712c7, + 0x2e2c47, + 0x2494c5, + 0x20d943, + 0x2abd84, + 0x288cc5, + 0x36a505, + 0x36a506, + 0x2a0088, + 0x2884c7, + 0x3d2086, + 0x3cfb06, + 0x379146, + 0x3dcac9, + 0x3cda87, + 0x25cc86, + 0x2da446, + 0x387046, + 0x2b7d05, + 0x218586, + 0x3b5545, + 0x3a8a48, + 0x29cdcb, + 0x2998c6, + 0x3963c4, + 0x222e09, + 0x221244, + 0x2c1f08, + 0x311007, + 0x290f04, + 0x2d02c8, + 0x2d6984, + 0x2b7d44, + 0x293dc5, + 0x342586, + 0x38ca47, + 0x235f03, + 0x2a7f05, + 0x34bb44, + 0x3c3646, + 0x353508, + 0x32c785, + 0x29ca89, + 0x207985, + 0x3ca8c8, + 0x326c47, + 0x331c48, + 0x2cff07, + 0x395809, + 0x291186, + 0x397c06, + 0x29fa84, + 0x223f45, + 0x3151cc, + 0x285287, + 0x285a87, + 0x23e548, + 0x2b2ec6, + 0x2addc4, + 0x37ddc4, + 0x28da89, + 0x2dc546, + 0x293547, + 0x27b884, + 0x2af5c6, + 0x3de9c5, + 0x2e2ac7, + 0x2e4346, + 0x26ae49, + 0x2d2747, + 0x2a1447, + 0x2af046, + 0x291785, + 0x28c108, + 0x21cf88, + 0x36db46, + 0x32c7c5, + 0x2d8fc6, + 0x20d083, + 0x2a6349, + 0x2a9ece, + 0x2cfc48, + 0x29d948, + 0x36d94b, + 0x29ccc6, + 0x396284, + 0x28fa84, + 0x2a9fca, + 0x21a2c7, + 0x25cd45, + 0x212949, + 0x2d3f05, + 0x3e3047, + 0x29e6c4, + 0x206647, + 0x216a08, + 0x2c96c6, + 0x2cca89, + 0x2d0f0a, + 0x21a246, + 0x2a4846, + 0x2bab05, + 0x39c545, + 0x3b0e47, + 0x24f388, + 0x3de908, + 0x233486, + 0x20b105, + 0x23e68e, + 0x2d15c4, + 0x2a6445, + 0x282809, + 0x2f8a08, + 0x298006, + 0x2a82cc, + 0x2a97d0, + 0x2acecf, + 0x2ae648, + 0x34ff07, + 0x3de685, + 0x245745, + 0x38c8c9, + 0x29e149, + 0x283546, + 0x30c347, + 0x39d7c5, + 0x23ae89, + 0x35dfc6, + 0x353e0d, + 0x28ddc9, + 0x29b2c4, + 0x2cf6c8, + 0x23bf89, + 0x33adc6, + 0x284d85, + 0x397c06, + 0x27ae09, + 0x27b708, + 0x20f1c5, + 0x28f704, + 0x2a848b, + 0x33ac85, + 0x246586, + 0x2901c6, + 0x259446, + 0x3d0e8b, + 0x29cb89, + 0x225005, + 0x396f87, + 0x2cb5c6, + 0x25e646, + 0x28f388, + 0x2d40c9, + 0x2bf90c, + 0x37f1c8, + 0x31d186, + 0x3356c3, + 0x38adc6, + 0x302505, + 0x28b388, + 0x20ab06, + 0x3c8888, + 0x3b0905, + 0x267305, + 0x326d88, + 0x3b6ec7, + 0x3d1cc7, + 0x2f3b87, + 0x32f908, + 0x350048, + 0x2f1086, + 0x2c8d87, + 0x21ea07, + 0x39558a, + 0x210843, + 0x30ef06, + 0x23e605, + 0x27fa84, + 0x286389, + 0x395784, + 0x2c96c4, + 0x2a9444, + 0x2ad44b, + 0x332147, + 0x23e8c5, + 0x2a1b88, + 0x282e86, + 0x282e88, + 0x28a206, + 0x298945, + 0x298b85, + 0x29a546, + 0x30e148, + 0x29b048, + 0x286546, + 0x2a19cf, + 0x2a5e10, + 0x20d485, + 0x20ac43, + 0x237405, + 0x31d348, + 0x29e049, + 0x3c5b08, + 0x30c148, + 0x25ae48, + 0x332207, + 0x282b49, + 0x3c8a88, + 0x2b3944, + 0x2a92c8, + 0x347889, + 0x2c9307, + 0x2bc7c4, + 0x22e048, + 0x2497ca, + 0x2ee946, + 0x216b86, + 0x223549, + 0x2a9a07, + 0x2e0b08, + 0x244808, + 0x3d01c8, + 0x2796c5, + 0x386605, + 0x249c05, + 0x2cc605, + 0x2c6347, + 0x20d945, + 0x2d52c5, + 0x386b86, + 0x3c5a47, + 0x3afd07, + 0x249ac6, + 0x2e5c45, + 0x246586, + 0x205405, + 0x2c1d88, + 0x2f9e44, + 0x2db2c6, + 0x351e44, + 0x2d00c8, + 0x2db3ca, + 0x286ccc, + 0x2aaa05, + 0x2ac486, + 0x2bfac6, + 0x3b6806, + 0x31d204, + 0x3df285, + 0x289ac7, + 0x2a9a89, + 0x2e03c7, + 0x70e7c4, + 0x70e7c4, + 0x331fc5, + 0x312a84, + 0x2a7a8a, + 0x282d06, + 0x3698c4, + 0x203345, + 0x2c5405, + 0x2c70c4, + 0x28fe07, + 0x207907, + 0x2dfe08, + 0x2d90c8, + 0x20f1c9, + 0x29ae48, + 0x29494b, + 0x239704, + 0x29eb45, + 0x28c845, + 0x2f3b09, + 0x2d40c9, + 0x222d08, + 0x3d8dc8, + 0x2605c4, + 0x244345, + 0x20dec3, + 0x2e3605, + 0x2a8146, + 0x2a30cc, + 0x21d006, + 0x284c86, + 0x298285, + 0x2f96c8, + 0x2dac86, + 0x237e86, + 0x216b86, + 0x22b48c, + 0x27d4c4, + 0x37928a, + 0x2981c8, + 0x2a2f07, + 0x34ba46, + 0x25cec7, + 0x303205, + 0x291846, + 0x35ecc6, + 0x3728c7, + 0x2d0c04, + 0x20b805, + 0x282804, + 0x398487, + 0x282a48, + 0x28460a, + 0x28ca87, + 0x2b7907, + 0x34fe87, + 0x2f0889, + 0x2a30ca, + 0x208fc3, + 0x35a3c5, + 0x215d43, + 0x2c9ec9, + 0x36cc48, + 0x368947, + 0x3c5c09, + 0x21d086, + 0x3c1648, + 0x2c4685, + 0x32cb8a, + 0x20df09, + 0x27a1c9, + 0x2dab47, + 0x293789, + 0x215c08, + 0x3e3c46, + 0x2ac648, + 0x2f5207, + 0x231187, + 0x2deb07, + 0x2cdf88, + 0x39ab06, + 0x249585, + 0x289ac7, + 0x2a4348, + 0x3790c4, + 0x309684, + 0x29bd07, + 0x2bbf07, + 0x36994a, + 0x3e3bc6, + 0x3ce54a, + 0x2d4887, + 0x2d1387, + 0x20b8c4, + 0x29a1c4, + 0x2e29c6, + 0x2f4644, + 0x2f464c, + 0x310f45, + 0x216849, + 0x3caa44, + 0x2c7185, + 0x2237c8, + 0x27a545, + 0x394246, + 0x29e284, + 0x2a6d0a, + 0x2dddc6, + 0x3501ca, + 0x3e33c7, + 0x2048c5, + 0x235905, + 0x244fca, + 0x281f05, + 0x2ada86, + 0x24a604, + 0x2c31c6, + 0x3b0f05, + 0x20abc6, + 0x32a64c, + 0x22b70a, + 0x27cc04, + 0x224006, + 0x2a9a07, + 0x2e42c4, + 0x221408, + 0x2ed306, + 0x396209, + 0x3dd0c9, + 0x2bb909, + 0x2241c6, + 0x2f5306, + 0x2ac787, + 0x331888, + 0x2f5109, + 0x332147, + 0x2a1d06, + 0x347ac7, + 0x326605, + 0x2d15c4, + 0x2ac347, + 0x21ebc5, + 0x293d05, + 0x200cc7, + 0x249388, + 0x3d4006, + 0x2a51cd, + 0x2a66cf, + 0x2ab24d, + 0x223444, + 0x23d406, + 0x2e7b48, + 0x30dc05, + 0x245488, + 0x283bca, + 0x29b2c4, + 0x2c67c6, + 0x215307, + 0x214ac7, + 0x2e7109, + 0x2ac605, + 0x2c70c4, + 0x2c9b4a, + 0x2d09c9, + 0x293887, + 0x2a5486, + 0x33adc6, + 0x244286, + 0x3b2746, + 0x2e69cf, + 0x2e7a09, + 0x306e06, + 0x267246, + 0x20c049, + 0x2c8e87, + 0x201543, + 0x209046, + 0x211c03, + 0x321e48, + 0x26a007, + 0x2ae849, + 0x2b4848, + 0x3d1e08, + 0x2878c6, + 0x225a89, + 0x34c985, + 0x2a7d04, + 0x209007, + 0x3a6b45, + 0x223444, + 0x23e988, + 0x21a584, + 0x2c8bc7, + 0x3aa146, + 0x23fe85, + 0x2afb48, + 0x33ac8b, + 0x31f287, + 0x245246, + 0x2dbec4, + 0x3da006, + 0x2759c5, + 0x21ebc5, + 0x28be89, + 0x28fa09, + 0x2311c4, + 0x231205, + 0x224045, + 0x32ca06, + 0x31ee88, + 0x2d3506, + 0x22a78b, + 0x2be84a, + 0x2d0005, + 0x298c06, + 0x238d85, + 0x386ac5, + 0x2a35c7, + 0x30f188, + 0x29aec4, + 0x34ae06, + 0x29b0c6, + 0x215dc7, + 0x322d04, + 0x28aa06, + 0x3cd645, + 0x3cd649, + 0x2f5504, + 0x30a549, + 0x286546, + 0x2d5a08, + 0x224045, + 0x396485, + 0x20abc6, + 0x2bf809, + 0x21ae49, + 0x284d06, + 0x2f8b08, + 0x29b948, + 0x238d44, + 0x2ca304, + 0x2ca308, + 0x39ff08, + 0x2fbd09, + 0x2a80c6, + 0x216b86, + 0x33a24d, + 0x2b64c6, + 0x360289, + 0x30e485, + 0x211c46, + 0x22e2c8, + 0x336c05, + 0x21ea44, + 0x2759c5, + 0x28f088, + 0x2a7849, + 0x2828c4, + 0x2cc906, + 0x27a40a, + 0x33b008, + 0x369ac9, + 0x27600a, + 0x3c5b86, + 0x2a6888, + 0x371085, + 0x298448, + 0x303285, + 0x21cf49, + 0x33ca09, + 0x234702, + 0x2cf545, + 0x28c906, + 0x286487, + 0x2b0dc5, + 0x34b946, + 0x319908, + 0x2b2ec6, + 0x2c3ac9, + 0x285b86, + 0x28f208, + 0x2b8cc5, + 0x24e406, + 0x36cac8, + 0x28d908, + 0x35d688, + 0x31b648, + 0x218584, + 0x20c8c3, + 0x2c3d04, + 0x28cc86, + 0x326644, + 0x29d887, + 0x237d89, + 0x2db645, + 0x244806, + 0x209046, + 0x29fecb, + 0x2c6ac6, + 0x20c886, + 0x2de708, + 0x361b46, + 0x2046c3, + 0x212403, + 0x2d15c4, + 0x239a05, + 0x3039c7, + 0x282a48, + 0x282a4f, + 0x2899cb, + 0x31ec88, + 0x2cc986, + 0x31ef8e, + 0x20abc3, + 0x303944, + 0x2c6a45, + 0x2c6f46, + 0x299e8b, + 0x29d246, + 0x232009, + 0x23fe85, + 0x251748, + 0x20e288, + 0x21ad0c, + 0x2ad486, + 0x2e3646, + 0x2e1dc5, + 0x2945c8, + 0x286cc5, + 0x329f48, + 0x2a864a, + 0x2ab689, + 0x70e7c4, 0x2000c2, - 0x24ac43, - 0x212402, - 0x22ea43, - 0x236704, - 0x233fc3, - 0x266a83, - 0x2191c3, - 0x2e4806, - 0x217fc3, - 0x23e083, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x280203, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x2000c2, - 0x281bc3, - 0x212402, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x20cf02, - 0x20cdc2, - 0x212402, - 0x22ea43, - 0x204302, - 0x2005c2, - 0x20e704, - 0x217544, - 0x266002, - 0x21e484, + 0x53216542, + 0x200382, + 0x2b1b84, + 0x201582, + 0x28d4c4, + 0x204cc2, + 0xd903, 0x2003c2, - 0x23e083, - 0x216983, - 0x2509c6, - 0x21fcc2, - 0x2072c2, - 0x223d42, - 0x58a13d83, - 0x58e30083, - 0x56486, - 0x56486, - 0x24cd44, - 0x205803, - 0x8acd, - 0x1e1cca, - 0x1cc04c, - 0x173cc, - 0xd720d, - 0x6e784, - 0x8f284, - 0x120384, - 0x146bc5, - 0x8e9c9, - 0xbf04c, - 0x1683c7, - 0x11fc6, - 0x16588, - 0x1a087, - 0x20ac8, - 0x1bdd8a, - 0x1109c7, - 0x59abd285, - 0xbd289, - 0x59c35a0b, - 0x129f08, - 0xcc4b, - 0x141488, - 0x167e89, - 0x8c80a, - 0x1316ce, - 0xbec4a, - 0xa4cd, - 0x2ed4d, - 0x14430cb, - 0xe710a, - 0x1384, - 0x59ac6, - 0xf988, - 0x10f508, - 0x35cc7, - 0x1dbc5, - 0x1fb47, - 0x34449, - 0x161347, - 0xec88, - 0x2afc9, - 0x3ea84, - 0xd3085, - 0x737ce, - 0x1410c7, - 0x5a224d46, - 0x4efcd, - 0x7f248, - 0x5a65ce86, - 0x5b05ce88, - 0x57388, - 0x13c390, - 0x5460c, - 0x68787, - 0x693c7, - 0x707c7, - 0x77c07, - 0x9a42, - 0x16e07, - 0x1a054c, - 0x5d4c5, - 0xb4e07, - 0xae286, - 0xafcc9, - 0xb3108, - 0xb5c2, + 0x202b02, + 0x793c8, + 0xe804, + 0x216543, + 0x222bc3, + 0x343b43, + 0x87c2, + 0x54202, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x2a042, + 0x6502, + 0x4a42, + 0x253c43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x2296c3, + 0x20cb83, + 0x20f7c3, + 0x25dd04, + 0x216543, + 0x23ec84, + 0x222bc3, + 0x2e8fc4, + 0x343b43, + 0x2b1087, + 0x216443, + 0x20d903, + 0x2c2308, + 0x20cb83, + 0x29fc4b, + 0x304443, + 0x24d906, + 0x213402, + 0x2fe64b, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x20cb83, + 0x21b103, + 0x2072c3, + 0x2000c2, + 0x793c8, + 0x235ec5, + 0x21ec48, + 0x3585c8, + 0x216542, + 0x363605, + 0x347c07, + 0x202bc2, + 0x24d147, + 0x200382, + 0x25be87, + 0x34c049, + 0x277f48, + 0x3d0049, + 0x214182, + 0x20e107, + 0x387c84, + 0x347cc7, + 0x2be747, + 0x2687c2, + 0x216443, + 0x203742, + 0x204cc2, + 0x2003c2, + 0x208402, + 0x200902, + 0x202b02, + 0x2e5245, + 0x227445, + 0x16542, + 0x22bc3, + 0x216543, + 0x222bc3, + 0x22de83, + 0x343b43, + 0x20e443, + 0x2296c3, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x158286, + 0x55fa5a4b, + 0x216443, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x175285, + 0x12b83, + 0x101, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x243543, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x2203c3, + 0x56869306, + 0x20a83, + 0x70945, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x6482, + 0x793c8, + 0x38c43, + 0xd903, + 0x7ca83, + 0x4f344, + 0x1480c44, + 0xf0b45, + 0x2000c2, + 0x397344, + 0x216543, + 0x222bc3, + 0x343b43, + 0x24cc43, + 0x2b96c5, + 0x243543, + 0x21b283, + 0x2296c3, + 0x257743, + 0x20cb83, + 0x202b03, + 0x2192c3, + 0x201643, + 0x11d783, 0x5c2, - 0x193c86, - 0x1c2b0b, - 0x1c2e06, - 0x6f044, - 0x1b5ac7, - 0x33449, - 0x860c9, - 0x1bb208, - 0x4b202, - 0x199249, - 0x11a08, - 0xfb54a, - 0xe689, - 0x2a8c6, - 0xdac89, - 0xe7087, - 0xe77c9, - 0xea1c8, - 0xec607, - 0xee689, - 0xf1a45, - 0xf1e10, - 0x1d60c6, - 0x1b5a05, - 0x19dfc7, - 0xbd68d, - 0x41d85, - 0xfa5c6, - 0xfadc7, - 0x100ad8, - 0x7f5c8, - 0x14978a, - 0xd782, - 0x5b7928cb, - 0x4f3ca, - 0x5a04d, - 0x2442, - 0xd4d86, - 0x13a06, - 0xa2ac8, - 0xb2e8a, - 0x3dd48, - 0x74e49, - 0x118088, - 0x6f48e, - 0x75088, - 0x14ca47, - 0x5ba5cdc4, - 0xb170d, - 0x1095c5, - 0x2748, - 0x35288, - 0x1145c6, - 0x4642, - 0xcaf44, - 0xe5006, - 0x134c46, - 0x5bd8490b, - 0x3602, + 0x386c2, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x2000c2, + 0x253c43, + 0x216542, + 0x3242, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x2296c3, + 0x20cb83, + 0x202b02, + 0x793c8, + 0x343b43, + 0x7ca83, + 0x793c8, + 0x7ca83, + 0x2cc803, + 0x216543, + 0x23a304, + 0x222bc3, + 0x343b43, + 0x2042c2, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2042c2, + 0x233243, + 0x2296c3, + 0x20cb83, + 0x2faf43, + 0x202b03, + 0x2000c2, + 0x216542, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x24d905, + 0x1143c6, + 0x6ff44, + 0x329c4, + 0x25dd04, + 0x213402, + 0x882, + 0x793c8, + 0x3242, + 0x54202, + 0x2a02, + 0x2000c2, + 0x146c05, + 0x24948, + 0xe9883, + 0x216542, + 0x45c44, + 0x5b910646, + 0x1db84, + 0xc5e4b, + 0x42746, + 0x1cdf07, + 0x174bc9, + 0x222bc3, + 0x53188, + 0x5318b, + 0x5360b, + 0x539cb, + 0x53d0b, + 0x53fcb, + 0x5440b, + 0x18c86, + 0x343b43, + 0x154645, + 0x10e584, + 0x20b6c3, + 0x11b487, + 0x133604, + 0xed184, + 0x77984, + 0x2296c3, + 0x84e06, + 0xac8c4, + 0x7ca83, + 0x20cb83, + 0x305504, + 0x132747, + 0x113fc9, + 0xc5c08, + 0x1c8dc4, + 0x147e04, + 0x179dc3, + 0x13906, + 0x12248, + 0x18d445, + 0x1a1f49, + 0x39fc3, + 0x13ea86, + 0x146c05, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x20d903, + 0x20cb83, + 0x304443, + 0x213402, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x26a7c3, + 0x21b544, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x2e8fc4, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x24d906, + 0x222bc3, + 0x343b43, + 0x1e803, + 0x7ca83, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x146c05, + 0x1cdf07, + 0x69c3, + 0x39fc3, + 0x793c8, + 0x343b43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x722c3, + 0x2296c3, + 0x20cb83, + 0x5ee16543, + 0x222bc3, + 0x2296c3, + 0x20cb83, + 0x793c8, + 0x2000c2, + 0x216542, + 0x216543, + 0x343b43, + 0x2296c3, + 0x2003c2, + 0x20cb83, + 0x33cf47, + 0x2f67cb, + 0x2153c3, + 0x283208, + 0x331607, + 0x349506, + 0x234d45, + 0x363749, + 0x24d688, + 0x37e649, + 0x3ae5d0, + 0x37e64b, + 0x3aaa09, + 0x2069c3, + 0x2fed09, + 0x23b286, + 0x23b28c, + 0x235f88, + 0x3e5c48, + 0x35c449, + 0x2cd20e, + 0x34be0b, + 0x2c340c, + 0x203b43, + 0x279d4c, + 0x203b49, + 0x300187, + 0x23c4cc, + 0x2c024a, + 0x21d684, + 0x21d68d, + 0x279c08, + 0x20f7cd, + 0x28a5c6, + 0x25dd0b, + 0x314149, + 0x2674c7, + 0x32cdc6, + 0x3339c9, + 0x35310a, + 0x30a088, + 0x304044, + 0x2bc2c7, + 0x24ea07, + 0x202744, + 0x2208c4, + 0x209cc9, + 0x30d489, + 0x20a888, + 0x2303c5, + 0x2140c5, + 0x20f086, + 0x21d549, + 0x283e4d, + 0x216d88, + 0x20ef87, + 0x234dc8, + 0x25b186, + 0x3e11c4, + 0x26b385, + 0x3e2f06, + 0x3e7984, + 0x203a47, + 0x20588a, + 0x216784, + 0x21a186, + 0x21a989, + 0x21a98f, + 0x21cc4d, + 0x21e706, + 0x224550, + 0x224946, + 0x226187, + 0x227f07, + 0x227f0f, + 0x229309, + 0x22cc86, + 0x22e907, + 0x22e908, + 0x22ed09, + 0x206e88, + 0x317a87, + 0x20c903, + 0x391906, + 0x37a588, + 0x2cd4ca, + 0x204189, + 0x22cb43, + 0x363506, + 0x34ac4a, + 0x282647, + 0x2fffca, + 0x31034e, + 0x229446, + 0x3d6847, + 0x24b006, + 0x203c06, + 0x38640b, + 0x218d8a, + 0x2f6e0d, + 0x2f53c7, + 0x274588, + 0x274589, + 0x27458f, + 0x2fb78c, + 0x2fb0c9, + 0x287bce, + 0x2b118a, + 0x20c606, + 0x2e9106, + 0x30cd4c, + 0x3bb08c, + 0x3d8388, + 0x338487, + 0x208c45, + 0x347e84, + 0x36430e, + 0x3109c4, + 0x3406c7, + 0x36be4a, + 0x3806d4, + 0x38a70f, + 0x2280c8, + 0x3917c8, + 0x38c34d, + 0x38c34e, + 0x3b4bc9, + 0x238308, + 0x23830f, + 0x23c1cc, + 0x23c1cf, + 0x23d147, + 0x23f90a, + 0x240acb, + 0x241348, + 0x244547, + 0x24be0d, + 0x362546, + 0x21d846, + 0x247bc9, + 0x26bac8, + 0x24db08, + 0x24db0e, + 0x26b907, + 0x308585, + 0x24f085, + 0x220744, + 0x3497c6, + 0x20a788, + 0x3a2983, + 0x2bf30e, + 0x24c1c8, + 0x3e534b, + 0x3c7807, + 0x2332c5, + 0x279ec6, + 0x2ba1c7, + 0x33e8c8, + 0x32c449, + 0x23cb05, + 0x2925c8, + 0x22fe06, + 0x3b3cca, + 0x364209, + 0x23c589, + 0x23c58b, + 0x33b7c8, + 0x202609, + 0x230486, + 0x3c298a, + 0x2a104a, + 0x23fb0c, + 0x371707, + 0x277d4a, + 0x39f78b, + 0x39f799, + 0x351a48, + 0x24d985, + 0x24bfc6, + 0x296489, + 0x250206, + 0x22b24a, + 0x2163c6, + 0x232d44, + 0x2dce0d, + 0x32d187, + 0x232d49, + 0x252185, + 0x2522c8, + 0x252f49, + 0x254744, + 0x254e07, + 0x254e08, + 0x255287, + 0x273b48, + 0x25cac7, + 0x2dfac5, + 0x26420c, + 0x2646c9, + 0x3b930a, + 0x266cc9, + 0x2fee09, + 0x26700c, + 0x26974b, + 0x26ac88, + 0x26bcc8, + 0x26f504, + 0x290988, + 0x291d49, + 0x2c0307, + 0x21abc6, + 0x2a9607, + 0x3d4bc9, + 0x21070b, + 0x247047, + 0x21fc47, + 0x3e3507, + 0x20f744, + 0x20f745, + 0x2e8cc5, + 0x357f0b, + 0x30df44, + 0x3b6648, + 0x25974a, + 0x22fec7, + 0x3e5007, + 0x299452, + 0x3d4786, + 0x239c86, + 0x340ace, + 0x3e5786, + 0x29ddc8, + 0x29f2cf, + 0x20fb88, + 0x243948, + 0x2e75ca, + 0x2e75d1, + 0x2af74e, + 0x20294a, + 0x20294c, + 0x238507, + 0x238510, + 0x3d9e48, + 0x2af945, + 0x2ba4ca, + 0x3e79cc, + 0x2a204d, + 0x20e446, + 0x20e447, + 0x20e44c, + 0x20f3cc, + 0x26a98c, + 0x39304b, + 0x3a4f04, + 0x205604, + 0x2be009, + 0x37de47, + 0x361f89, + 0x2a0e89, + 0x2bff07, + 0x2c00c6, + 0x2c00c9, + 0x2c04c3, + 0x2b2fca, + 0x37a447, + 0x37b94b, + 0x2f6c8a, + 0x25bfc4, + 0x3ceb46, + 0x28cd09, + 0x2f44c4, + 0x2e4e4a, + 0x302645, + 0x2d1b85, + 0x2d1b8d, + 0x2d1ece, + 0x2722c5, + 0x33bc06, + 0x24d507, + 0x25d40a, + 0x231c86, + 0x37ee04, + 0x301887, + 0x300e4b, + 0x273847, + 0x2420c4, + 0x316546, + 0x31654d, + 0x2eba8c, + 0x3d1a86, + 0x216f8a, + 0x221d46, + 0x227bc8, + 0x2fd2c7, + 0x2dafca, + 0x3e7346, + 0x28aa83, + 0x354806, + 0x213448, + 0x36dc0a, + 0x25aa07, + 0x25aa08, + 0x2985c4, + 0x2a5c47, + 0x31f5c8, + 0x2f3cc8, + 0x2f1188, + 0x32a8ca, + 0x2efe85, + 0x2cb207, + 0x260e13, + 0x276586, + 0x38d188, + 0x22bb49, + 0x24d008, + 0x28794b, + 0x2ca108, + 0x2eb7c4, + 0x326e86, + 0x324186, + 0x3423c9, + 0x2dae07, + 0x264308, + 0x2aa246, + 0x200bc4, + 0x3de805, + 0x33f188, + 0x39000a, + 0x2dca88, + 0x2e1046, + 0x2a6a8a, + 0x36a688, + 0x3bc6c8, + 0x2e50c8, + 0x2e5906, + 0x2e7d46, + 0x3b20cc, + 0x2e8310, + 0x2e8705, + 0x20f988, + 0x288910, + 0x20f990, + 0x3ae44e, + 0x3b1d4e, + 0x3b1d54, + 0x3ba5cf, + 0x3ba986, + 0x202811, + 0x209613, + 0x32cf48, + 0x363c05, + 0x283748, + 0x32d685, + 0x348fcc, + 0x2718c9, + 0x310809, + 0x2fbfc7, + 0x368f49, + 0x3a8747, + 0x313386, + 0x26b187, + 0x2649c5, + 0x212bc3, + 0x21e803, + 0x2433c4, + 0x21574d, + 0x3c3dcf, + 0x200c05, + 0x348ec6, + 0x22a447, + 0x235d07, + 0x355bc6, + 0x355bcb, + 0x2b0505, + 0x289146, + 0x3baf07, + 0x25e109, + 0x22eb86, + 0x3881c5, + 0x20368b, + 0x20de06, + 0x22f7c5, + 0x24fa08, + 0x2a3b08, + 0x2b3ccc, + 0x2b3cd0, + 0x2b89c9, + 0x2cad07, + 0x34de4b, + 0x2f0c46, + 0x31794a, + 0x38cf0b, + 0x314c4a, + 0x2f9406, + 0x2fae05, + 0x331506, + 0x292a88, + 0x3a5c0a, + 0x38bfdc, + 0x30450c, + 0x304808, + 0x24d905, + 0x38f6c7, + 0x2cce46, + 0x39da45, + 0x2210c6, + 0x355d88, + 0x2d0c47, + 0x2cd108, + 0x27664a, + 0x35b5cc, + 0x3a2c09, + 0x35b847, + 0x243e44, + 0x204a06, + 0x2434ca, + 0x2a0f85, + 0x22054c, + 0x220c08, + 0x236f48, + 0x32794c, + 0x33878c, + 0x35cf89, + 0x361d87, + 0x24808c, + 0x2fce84, + 0x322a4a, + 0x3e23cc, + 0x254fcb, + 0x255c8b, + 0x259186, + 0x25f087, + 0x238747, + 0x23874f, + 0x311a51, + 0x2ee312, + 0x25f3cd, + 0x25f3ce, + 0x25f70e, + 0x3ba788, + 0x3ba792, + 0x2fc688, + 0x2b1987, + 0x259c4a, + 0x2125c8, + 0x3e5745, + 0x2c618a, + 0x224cc7, + 0x2f0d84, + 0x20b5c3, + 0x23f1c5, + 0x2e7847, + 0x306587, + 0x2a224e, + 0x3dc44d, + 0x316209, + 0x207385, + 0x34f9c3, + 0x33e246, + 0x267c45, + 0x3e5588, + 0x22d149, + 0x24c005, + 0x24c00f, + 0x2c5f47, + 0x234bc5, + 0x3c81ca, + 0x20d746, + 0x246809, + 0x3599cc, + 0x37eec9, + 0x2111c6, + 0x25954c, + 0x3357c6, + 0x30fac8, + 0x38c686, + 0x278b86, + 0x2c6c44, + 0x386d83, + 0x3e380a, + 0x209211, + 0x2fb28a, + 0x3e19c5, + 0x263e87, + 0x261707, + 0x2e20c4, + 0x31f6cb, + 0x3cfec8, + 0x2cf7c6, + 0x23e5c5, + 0x257104, + 0x26f9c9, + 0x2008c4, + 0x218407, + 0x37e8c5, + 0x37e8c7, + 0x340d05, + 0x212483, + 0x2b1848, + 0x2484ca, + 0x235f03, + 0x235f0a, + 0x2ae286, + 0x24bd8f, + 0x26b889, + 0x2bf290, + 0x2e2248, + 0x2e1809, + 0x2a5007, + 0x3164cf, + 0x3c5fc4, + 0x2e9044, + 0x2247c6, + 0x25d8c6, + 0x252c0a, + 0x24cb06, + 0x2bcc47, + 0x317dc8, + 0x317fc7, + 0x3196c7, + 0x31aa0a, + 0x319fcb, + 0x271385, + 0x2edf48, + 0x20c183, + 0x3c17cc, + 0x2089cf, + 0x22158d, + 0x35e207, + 0x236c89, + 0x35d247, + 0x2cbd48, + 0x3808cc, + 0x2eb6c8, + 0x3e16c8, + 0x33438e, + 0x345b94, + 0x3460a4, + 0x360d8a, + 0x37ea8b, + 0x3a8804, + 0x3a8809, + 0x2c6848, + 0x24fe05, + 0x3a248a, + 0x2b39c7, + 0x258bc4, + 0x253c43, + 0x216543, + 0x23ec84, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x243543, + 0x216443, + 0x2e8306, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x21f6c3, + 0x2000c2, + 0x253c43, + 0x216542, + 0x216543, + 0x23ec84, + 0x222bc3, + 0x343b43, + 0x243543, + 0x2e8306, + 0x2296c3, + 0x20cb83, + 0x793c8, + 0x216543, + 0x222bc3, + 0x2f5503, + 0x606296c3, + 0x7ca83, + 0x20cb83, + 0x60a01704, + 0xc1442, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x2000c2, + 0x28bb03, + 0x216542, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x204182, + 0x204042, + 0x216542, + 0x216543, + 0x2080c2, + 0x2005c2, + 0x2b1b84, + 0x28d4c4, + 0x233ec2, + 0x21b544, + 0x2003c2, + 0x20cb83, + 0x21f6c3, + 0x259186, + 0x22a042, + 0x204a42, + 0x208f02, + 0x61e0fb83, + 0x62202943, + 0x62186, + 0x62186, + 0x25dd04, + 0x20d903, + 0x1a16cd, + 0xa60a, + 0x1a02cc, + 0x8d34c, + 0x62c691cf, + 0x7074d, + 0x15c104, + 0x75104, + 0xffd44, + 0x146c05, + 0x95d89, + 0x17488c, + 0x34347, + 0x17f06, + 0x1f2c8, + 0x22a87, + 0x29e88, + 0x1beaca, + 0x1e1c47, + 0x174ac9, + 0x632ea205, + 0xea209, + 0x6343df0b, + 0x123308, + 0x3ecb, + 0x17ce88, + 0x18484a, + 0x132bce, + 0x6397448a, + 0x12808d, + 0x1b4bcd, + 0x144ce0b, + 0xeb94a, + 0x1db84, + 0x53846, + 0x89288, + 0x1dcf08, + 0x3e1c7, + 0x1e485, + 0x63eabe08, + 0x1d74c7, + 0x51b89, + 0xf4547, + 0x1c74c8, + 0x32649, + 0x48404, + 0x48985, + 0xc9ce, + 0x1402c7, + 0x6462cd86, + 0xb8d0d, + 0x1cdd88, + 0xedb48, + 0x64b7cb46, + 0x6557cb48, + 0xb3588, + 0x13d150, + 0x5fc8c, + 0x70607, + 0x71b07, + 0x75c07, + 0x7c947, + 0xc342, + 0x1d8707, + 0x18f4c, + 0x116b05, + 0xb8847, + 0xb3b86, + 0xb4e49, + 0xb7288, + 0x1ec82, + 0x5c2, + 0x190a86, + 0x67cb, + 0x6ac6, + 0x15c9c4, + 0x10f887, + 0x5e789, + 0x932c9, + 0x1bc248, + 0x54202, + 0x1971c9, + 0x17988, + 0x104e4a, + 0x65ada54b, + 0x145149, + 0x12506, + 0xdf889, + 0xeb8c7, + 0xec009, + 0xed548, + 0xeeac7, + 0xefe09, + 0xf2185, + 0xf2550, + 0x1e84c6, + 0x10f7c5, + 0x120047, + 0xb6a4d, + 0x4ab45, + 0xfec06, + 0xff487, + 0x105518, + 0xf48c8, + 0x80d4a, + 0x4a02, + 0x663a540b, + 0x666df98a, + 0x55a4a, + 0x6334d, + 0x1702, + 0xd9c46, + 0x30846, + 0xa7248, + 0xb700a, + 0x46c88, + 0x79289, + 0x118d88, + 0x6f68e, + 0x16208, + 0x13e247, + 0x66bb0284, + 0x12764d, + 0x10ba05, + 0x1a2f48, + 0x4fec8, + 0x66eaf2c8, + 0x114786, + 0x6502, + 0xcf5c4, + 0x110b46, + 0x6724b348, + 0x13906, + 0x678ddecb, + 0xe042, + 0xacc09, + 0x12d408, + 0x164647, + 0x35b4a, + 0x40407, 0x401, 0x81, - 0xbe588, - 0x5bb87, - 0x93783, - 0x5aa37e84, - 0x5ae9c0c3, + 0x183c47, + 0x116348, + 0x642c1503, + 0x1616c4, + 0xc1508, + 0xc1708, + 0xc1908, + 0x69c07, + 0x9b583, + 0x64e40644, + 0x652a0803, 0xc1, - 0x25d86, + 0x267c6, 0xc1, 0x201, - 0x25d86, - 0x93783, - 0x18b7c8, - 0x4cdc3, - 0x27c44, - 0x20f47, - 0xaa47, - 0x1571585, - 0x4e584, - 0x149307, - 0x12402, - 0x241ec4, - 0x22ea43, - 0x24d704, - 0x20e704, - 0x217fc3, - 0x222905, - 0x217c83, - 0x235403, - 0x37b845, - 0x20aa43, - 0x1be83, - 0x5ce2ea43, - 0x233fc3, - 0x4d704, - 0x33c3, - 0x266a83, + 0x267c6, + 0x9b583, + 0x65f36fc4, + 0x18b2c4, + 0x1a845, + 0x88e45, + 0x10f9c4, + 0x16684, + 0x54644, + 0x1c4b88, + 0x1866cc, + 0xe01, + 0x192c3, + 0x27804, + 0x1c4b88, + 0x677c4b88, + 0x674c3, + 0x79943, + 0x27d47, + 0x5f07, + 0x156d145, + 0x57e04, + 0x10dfc7, + 0x16542, + 0x88e04, + 0x21d684, + 0x216543, + 0x256d44, + 0x2b1b84, + 0x2296c3, + 0x22ba05, + 0x2203c3, + 0x24c343, + 0x355b45, + 0x201643, + 0x1df83, + 0x68a16543, + 0x222bc3, + 0x56d44, + 0x4f03, + 0x343b43, 0x200181, - 0x1e1c3, - 0x23cb03, - 0x217544, - 0x21e484, - 0x217fc3, - 0x4dfc3, - 0x23e083, - 0x208503, - 0xae888, + 0x1b283, + 0x216443, + 0x28d4c4, + 0x21b544, + 0x2296c3, + 0x57743, + 0x20cb83, + 0x202b03, + 0x793c8, 0x2000c2, - 0x24ac43, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x280203, + 0x253c43, + 0x216542, + 0x216543, + 0x222bc3, + 0x2f5503, 0x2005c2, - 0x20e704, - 0x2191c3, - 0x23cb03, - 0x217fc3, - 0x205803, - 0x23e083, - 0x20aa43, - 0x19d184, - 0xae888, - 0x10a087, - 0x12402, - 0x1aa705, - 0x5474f, - 0xf10c6, - 0x1454408, - 0x118cce, - 0x5de2a502, - 0x32f688, - 0x361886, - 0x24e706, - 0x39cb07, - 0x5e200c82, - 0x5e6bb188, - 0x21f28a, - 0x268208, - 0x200ac2, - 0x3ca549, - 0x358fc7, - 0x214846, - 0x222c89, - 0x2eeac4, - 0x3ca446, - 0x2e9104, - 0x2029c4, - 0x257b49, - 0x310e86, - 0x267c85, - 0x26b845, - 0x22f587, - 0x2de387, - 0x26b784, - 0x2d2486, - 0x301785, - 0x20ee05, - 0x25b1c5, - 0x2c2347, - 0x276245, - 0x24a0c9, - 0x37eb85, - 0x321984, - 0x3ae5c7, - 0x3b3fce, - 0x207289, - 0x3487c9, - 0x371246, - 0x2405c8, - 0x37554b, - 0x2a74cc, - 0x326f06, - 0x2c01c7, - 0x2f0d05, - 0x3163ca, - 0x3e2049, - 0x201189, - 0x206a86, - 0x30d905, - 0x246e45, - 0x389a89, - 0x25b34b, - 0x2ef106, - 0x353806, - 0x209984, - 0x303a46, - 0x3051c8, - 0x3cbf46, - 0x267846, - 0x203048, - 0x205107, - 0x206809, - 0x208e85, - 0xae888, - 0x3d2c44, - 0x319844, - 0x210145, - 0x343c49, - 0x221287, - 0x22128b, - 0x22434a, - 0x228745, - 0x5ea087c2, - 0x3560c7, - 0x5ee2b748, - 0x206cc7, - 0x303085, - 0x35d60a, - 0x12402, - 0x28428b, - 0x28544a, - 0x24a546, - 0x20ffc3, - 0x21114d, - 0x3ca98c, - 0x203a8d, - 0x232105, - 0x3363c5, - 0x324687, - 0x206309, - 0x21f186, - 0x247b45, - 0x3401c8, - 0x2d4dc3, - 0x2f52c8, - 0x303948, - 0x3a2107, - 0x3c5d88, - 0x3c76c9, - 0x2ff5c7, - 0x3558c7, - 0x371408, - 0x38bcc4, - 0x38bcc7, - 0x292048, - 0x366406, - 0x3cb14f, - 0x265747, - 0x2d1f86, - 0x32ac45, - 0x223ec3, - 0x2479c7, - 0x38e083, - 0x24c6c6, - 0x24e486, - 0x24ff06, - 0x298ec5, - 0x26c183, - 0x398ec8, - 0x390849, - 0x3a290b, - 0x250088, - 0x251945, - 0x253645, - 0x5f2ba882, - 0x2a4c09, - 0x223307, - 0x259a05, - 0x257a47, - 0x258ec6, - 0x386ac5, - 0x259d0b, - 0x25c8c4, - 0x267dc5, - 0x267f07, - 0x27c586, - 0x27c9c5, - 0x28b987, - 0x28c147, - 0x2a9cc4, - 0x2bee4a, - 0x292b08, - 0x375809, - 0x25b985, - 0x3585c6, - 0x30538a, - 0x26d6c6, - 0x236047, - 0x272a0d, - 0x2abf09, - 0x397445, - 0x2603c7, - 0x32d088, - 0x3b38c8, - 0x20a107, - 0x20e3c6, - 0x22cc07, - 0x24d903, - 0x310e04, - 0x383405, - 0x3af807, - 0x3bae09, - 0x2f5e08, - 0x235f45, - 0x362784, - 0x250245, - 0x25ca8d, - 0x200cc2, - 0x2ce4c6, - 0x2f7986, - 0x30820a, - 0x3a0e06, - 0x3aa945, - 0x2e95c5, - 0x2e95c7, - 0x3adc0c, - 0x25720a, - 0x294d06, - 0x2e4185, - 0x303886, - 0x294fc7, - 0x296986, - 0x298dcc, - 0x222dc9, - 0x5f626207, - 0x29ae85, - 0x29ae86, - 0x29bb48, - 0x2ca185, - 0x2ac785, - 0x2ad148, - 0x2ad34a, - 0x5fa295c2, - 0x5fe0b942, - 0x309d85, - 0x26a483, - 0x32a308, - 0x210503, - 0x2ad5c4, - 0x35d30b, - 0x2a78c8, - 0x384648, - 0x6034b7c9, - 0x2b48c9, - 0x2b51c6, - 0x2b6b48, - 0x2b6d49, - 0x2b7a86, - 0x2b7c05, - 0x248486, - 0x2b8589, - 0x2cd607, - 0x394746, - 0x21b347, - 0x2014c7, - 0x213f04, - 0x6067f8c9, - 0x2bcec8, - 0x2bb088, - 0x200e07, - 0x2d7c86, - 0x205a89, - 0x24e6c7, - 0x3c250a, - 0x3c8108, - 0x2131c7, - 0x2180c6, - 0x2a114a, - 0x32a708, - 0x2f7405, - 0x225a05, - 0x3d12c7, - 0x3264c9, - 0x32878b, - 0x39be48, - 0x37ec09, - 0x250487, - 0x2c94cc, - 0x2c9d4c, - 0x2ca04a, - 0x2ca2cc, - 0x2d3d88, - 0x2d3f88, - 0x2d4184, - 0x2d4549, - 0x2d4789, - 0x2d49ca, - 0x2d4c49, - 0x2d4fc7, - 0x3c91cc, - 0x3dc686, - 0x2723c8, - 0x26d786, - 0x3957c6, - 0x397347, - 0x3a8708, - 0x22a28b, - 0x206b87, - 0x257809, - 0x288349, - 0x2a4e07, - 0x2e9344, - 0x269087, - 0x39b786, - 0x2128c6, - 0x2ed205, - 0x2f9848, - 0x317044, - 0x317046, - 0x2570cb, - 0x2af909, - 0x385c06, - 0x267a49, - 0x210206, - 0x249088, - 0x20eb03, - 0x30da85, - 0x219849, - 0x214445, - 0x3b9e84, - 0x3d25c6, - 0x308005, - 0x20a686, - 0x31d587, - 0x355006, - 0x22c6cb, - 0x2040c7, - 0x3a9c46, - 0x278c86, - 0x22f646, - 0x26b749, - 0x3b5e0a, - 0x2cb445, - 0x205e0d, - 0x2ad446, - 0x239446, - 0x2e8b06, - 0x220d45, - 0x2f2107, - 0x30b4c7, - 0x2794ce, - 0x23cb03, - 0x2d7c49, - 0x324b49, - 0x22f2c7, - 0x271a47, - 0x2703c5, - 0x294145, - 0x60bb494f, - 0x2ddc07, - 0x2dddc8, - 0x2de184, - 0x2de646, - 0x60e46b42, - 0x2e2386, - 0x2e4806, - 0x3b564e, - 0x2f510a, - 0x2bb906, - 0x218d4a, - 0x203889, - 0x23c7c5, - 0x312d08, - 0x33dd86, - 0x2ba948, - 0x36aac8, - 0x28238b, - 0x39cc05, - 0x2762c8, - 0x20318c, - 0x302f47, - 0x24f986, - 0x30e908, - 0x229f48, - 0x6123bec2, - 0x20c70b, - 0x209089, - 0x2bf709, - 0x21a747, - 0x3c3088, - 0x6161cf48, - 0x21d84b, - 0x34bd89, - 0x28be0d, - 0x3802c8, - 0x2a1348, - 0x61a09282, - 0x228644, - 0x61e30242, - 0x3b9cc6, - 0x62200e42, - 0x2fd7ca, - 0x364486, - 0x267388, - 0x3cea88, - 0x3e1bc6, - 0x2c06c6, - 0x306246, - 0x2acc85, - 0x239dc4, - 0x62768e04, - 0x35f2c6, - 0x277a47, - 0x62a810c7, - 0x24ed8b, - 0x206ec9, - 0x33640a, - 0x2f4dc4, - 0x2e9708, - 0x39450d, - 0x2fe709, - 0x2fe948, - 0x2febc9, - 0x300ac4, - 0x266344, - 0x393505, - 0x33f0cb, - 0x2a7846, - 0x35f105, - 0x236dc9, - 0x2d2548, - 0x2aa9c4, - 0x316549, - 0x3c22c5, - 0x2de3c8, - 0x355f87, - 0x348bc8, - 0x288a06, - 0x20f5c7, - 0x2e8689, - 0x3c33c9, - 0x226705, - 0x23b4c5, - 0x62e13242, - 0x321744, - 0x232345, - 0x39ca06, - 0x33eac5, - 0x23fa07, - 0x35f3c5, - 0x27c5c4, - 0x371306, - 0x247bc7, - 0x238e46, - 0x30c645, - 0x214048, - 0x361a85, - 0x21e147, - 0x225209, - 0x2afa4a, - 0x266f07, - 0x266f0c, - 0x267c46, - 0x23df09, - 0x248085, - 0x2d2ec8, - 0x202443, - 0x2f2d05, - 0x3c0e45, - 0x282fc7, - 0x63201242, - 0x2f9b87, - 0x2f0906, - 0x3862c6, - 0x2f2586, - 0x229e86, - 0x23be08, - 0x27e105, - 0x2d2047, - 0x2d204d, - 0x20ee43, - 0x3dcb45, - 0x276b87, - 0x2f9ec8, - 0x276745, - 0x216bc8, - 0x382e86, - 0x29c107, - 0x2d6945, - 0x39cc86, - 0x399445, - 0x21ef4a, - 0x301b46, - 0x274587, - 0x2ce285, - 0x310687, - 0x35a584, - 0x3b9e06, - 0x312c45, - 0x33544b, - 0x39b609, - 0x281cca, - 0x226788, - 0x393f88, - 0x31408c, - 0x3d8d07, - 0x31c848, - 0x31ecc8, - 0x32b9c5, - 0x35c18a, - 0x35f4c9, - 0x63600ec2, - 0x20b086, - 0x260d44, - 0x2fc549, - 0x240e89, - 0x246907, - 0x27bfc7, - 0x29cd49, - 0x33e348, - 0x33e34f, - 0x22d606, - 0x2e6ccb, - 0x256845, - 0x256847, - 0x381cc9, - 0x21fe06, - 0x3164c7, - 0x2eb805, - 0x232004, - 0x307ec6, - 0x206244, - 0x3ba247, - 0x3792c8, - 0x63b0d808, - 0x30fa05, - 0x30fb47, - 0x3532c9, - 0x20c4c4, - 0x241948, - 0x63e653c8, - 0x2e8a84, - 0x2f6dc8, - 0x25f184, - 0x206109, - 0x220c85, - 0x6422dc42, - 0x22d645, - 0x2dfd45, - 0x2600c8, - 0x234c07, - 0x646008c2, - 0x3c7a85, - 0x2e04c6, - 0x24d186, - 0x321708, - 0x31f148, - 0x33ea86, - 0x34a046, - 0x30a149, - 0x386206, - 0x21fccb, - 0x229d05, - 0x2af286, - 0x368048, - 0x34ae46, - 0x2bc246, - 0x2178ca, - 0x2e1b0a, - 0x23eb45, - 0x29c787, - 0x27a146, - 0x64a034c2, - 0x276cc7, - 0x367145, - 0x305304, - 0x305305, - 0x2f4cc6, - 0x278807, - 0x21ac85, - 0x240f44, - 0x2c3708, - 0x2bc305, - 0x37a987, - 0x3808c5, - 0x21ee85, - 0x245744, - 0x245749, - 0x3015c8, - 0x359586, - 0x358846, - 0x363f06, - 0x64fcfc08, - 0x3d8b87, - 0x31474d, - 0x314f0c, - 0x315509, - 0x315749, - 0x65379942, - 0x3d7403, - 0x20e483, - 0x39b845, - 0x3af90a, - 0x33e946, - 0x2365c5, - 0x31e244, - 0x31e24b, - 0x33384c, - 0x33410c, - 0x334415, - 0x335e0d, - 0x337e8f, - 0x338252, - 0x3386cf, - 0x338a92, - 0x338f13, - 0x3393cd, - 0x33998d, - 0x339d0e, - 0x33a60e, - 0x33ac0c, - 0x33afcc, - 0x33b40b, - 0x33be8e, - 0x33c792, - 0x33e70c, - 0x3403d0, - 0x34e4d2, - 0x34f54c, - 0x34fc0d, - 0x34ff4c, - 0x3524d1, - 0x35398d, - 0x35ae4d, - 0x35b44a, - 0x35b6cc, - 0x35e60c, - 0x35ee0c, - 0x35f70c, - 0x362e93, - 0x363610, - 0x363a10, - 0x36460d, - 0x364c0c, - 0x365a49, - 0x3697cd, - 0x369b13, - 0x36b451, - 0x36bc53, - 0x36c94f, - 0x36cd0c, - 0x36d00f, - 0x36d3cd, - 0x36d9cf, - 0x36dd90, - 0x36e80e, - 0x37198e, - 0x3722d0, - 0x37318d, - 0x373b0e, - 0x373e8c, - 0x374fd3, - 0x37768e, - 0x377c10, - 0x378011, - 0x37844f, - 0x378813, - 0x3794cd, - 0x37980f, - 0x379bce, - 0x37a150, - 0x37a549, - 0x37bc90, - 0x37c18f, - 0x37c80f, - 0x37cbd2, - 0x37f68e, - 0x3804cd, - 0x380a0d, - 0x380d4d, - 0x381f0d, - 0x38224d, - 0x382590, - 0x38298b, - 0x3831cc, - 0x38354c, - 0x383b4c, - 0x383e4e, - 0x393650, - 0x395112, - 0x39558b, - 0x395f8e, - 0x39630e, - 0x396b8e, - 0x39710b, - 0x65797596, - 0x397e8d, - 0x398a14, - 0x39970d, - 0x39c255, - 0x39ea0d, - 0x39f38f, - 0x39fb4f, - 0x3a2bcf, - 0x3a2f8e, - 0x3a330d, - 0x3a4891, - 0x3a7ecc, - 0x3a81cc, - 0x3a84cb, - 0x3a890c, - 0x3a904f, - 0x3a9412, - 0x3aa1cd, - 0x3abe8c, - 0x3acc4c, - 0x3acf4d, - 0x3ad28f, - 0x3ad64e, - 0x3af5cc, - 0x3afb8d, - 0x3afecb, - 0x3b078c, - 0x3b108d, - 0x3b13ce, - 0x3b1749, - 0x3b2dd3, - 0x3b688d, - 0x3b6f8d, - 0x3b758c, - 0x3b7c0e, - 0x3b830f, - 0x3b86cc, - 0x3b89cd, - 0x3b8d0f, - 0x3b90cc, - 0x3ba40c, - 0x3ba8cc, - 0x3babcc, - 0x3bbb8d, - 0x3bbed2, - 0x3bc64c, - 0x3bc94c, - 0x3bcc51, - 0x3bd08f, - 0x3bd44f, - 0x3bd813, - 0x3be60e, - 0x3be98f, - 0x3bed4c, - 0x65bbf40e, - 0x3bf78f, - 0x3bfb56, - 0x3c1bd2, - 0x3c440c, - 0x3c4d8f, - 0x3c540d, - 0x3cec8f, - 0x3cf04c, - 0x3cf34d, - 0x3cf68d, - 0x3d0d4e, - 0x3d19cc, - 0x3d420c, - 0x3d4510, - 0x3d6791, - 0x3d6bcb, - 0x3d700c, - 0x3d730e, - 0x3d91d1, - 0x3d960e, - 0x3d998d, - 0x3de2cb, - 0x3debcf, - 0x3dfa54, - 0x23ca82, - 0x23ca82, - 0x203183, - 0x23ca82, - 0x203183, - 0x23ca82, - 0x201082, - 0x2484c5, - 0x3d8ecc, - 0x23ca82, - 0x23ca82, - 0x201082, - 0x23ca82, - 0x29c945, - 0x2afa45, - 0x23ca82, - 0x23ca82, - 0x208a02, - 0x29c945, - 0x336689, - 0x36b14c, - 0x23ca82, - 0x23ca82, - 0x23ca82, - 0x23ca82, - 0x2484c5, - 0x23ca82, - 0x23ca82, - 0x23ca82, - 0x23ca82, - 0x208a02, - 0x336689, - 0x23ca82, - 0x23ca82, - 0x23ca82, - 0x2afa45, - 0x23ca82, - 0x2afa45, - 0x36b14c, - 0x3d8ecc, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x217fc3, - 0x23e083, - 0x1e14cf, - 0x1b4508, - 0x6704, - 0x5803, - 0x8efc8, - 0x1d1843, - 0x2000c2, - 0x66a12402, - 0x241283, - 0x25a584, - 0x2033c3, - 0x38a0c4, - 0x231346, - 0x222743, - 0x3d2484, - 0x3517c5, - 0x23cb03, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x226e0a, - 0x2509c6, - 0x39668c, - 0xae888, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x215f83, - 0x2e4806, - 0x217fc3, - 0x23e083, - 0x216983, - 0xe783, - 0xaeec8, - 0x675dc3c5, - 0x49647, - 0x146bc5, - 0xcd89, - 0x8c02, - 0x1c73ca, - 0x683a7b85, - 0x146bc5, - 0x1683c7, - 0x74f88, - 0xb74e, - 0x90d92, - 0x123bcb, - 0x110ac6, - 0x686bd285, - 0x68abf28c, - 0x149147, - 0x178d87, - 0x127eca, - 0x3c290, - 0x1645, - 0xc634b, - 0x10f508, - 0x35cc7, - 0xbc3cb, - 0x34449, - 0x48687, - 0x161347, - 0xef347, - 0x35c06, - 0xec88, - 0x69036fc6, - 0x3dc87, - 0x176b06, - 0x4efcd, - 0xe9890, - 0x694293c2, - 0x7f248, - 0x8c550, - 0x184e8c, - 0x69b8794d, - 0x5a388, - 0x5a80b, - 0x71007, - 0x96d89, - 0x56546, - 0x9bd48, - 0x5b542, - 0x1b21ca, - 0x65a87, - 0xb4e07, - 0xafcc9, - 0xb3108, - 0xf48c5, - 0x193c86, - 0x1c2e06, - 0xffb4e, - 0xef90e, - 0x18ee0f, - 0x33449, - 0x860c9, - 0x1b1d4b, - 0xb538f, - 0xc470c, - 0xcfe0b, - 0x11d1c8, - 0x16f747, - 0x194c88, - 0x1a8c8b, - 0xb920c, - 0xb960c, - 0xb9a0c, - 0xb9d0d, - 0x1bb208, - 0x50d42, - 0x199249, - 0x15d048, - 0x1de00b, - 0xd7e86, - 0xdfe8b, - 0x13c2cb, - 0xeaf4a, - 0xec7c5, - 0xf1e10, - 0xf6a46, - 0x155146, - 0x1b5a05, - 0x19dfc7, - 0xe2608, - 0xfadc7, - 0xfb087, - 0x1416c7, - 0xccec6, - 0x1b9b0a, - 0xae70a, - 0x13a06, - 0xb4bcd, - 0x3dd48, - 0x118088, - 0x1188c9, - 0xc7c05, - 0x1b800c, - 0xb9f0b, - 0x15ca49, - 0x1d1204, - 0x114389, - 0x1145c6, - 0x156786, - 0x3c986, - 0x72c2, - 0x134c46, - 0x1496cb, - 0x11e987, - 0x11eb47, - 0x3602, - 0xd9785, - 0x2de44, - 0x101, - 0x506c3, - 0x68e6a646, - 0x9c0c3, - 0x382, - 0x2b104, - 0xac2, - 0x4cd44, - 0x882, - 0x7282, - 0x6c02, - 0x10bf02, - 0xcf02, - 0xbd282, - 0xd42, - 0x161e82, - 0x37402, - 0xda02, - 0xf982, - 0x4e682, - 0x33fc3, - 0x942, - 0x31c2, - 0xfa02, - 0x91c2, - 0x642, - 0x32702, - 0xb5c2, - 0x8fc2, - 0xf782, - 0x5c2, - 0x191c3, - 0x4b82, - 0x22c2, - 0x4b202, - 0x6902, - 0x2702, - 0xa682, - 0x4202, - 0x8c82, - 0xb982, - 0x193b42, - 0x720c2, - 0xcac2, - 0x17fc3, - 0x602, - 0x3bec2, - 0x2542, - 0x35c2, - 0x26685, - 0x4fc2, - 0x42c42, - 0x3d583, - 0x682, - 0xd782, - 0x2442, - 0xab02, - 0xee42, - 0x8c2, - 0x4642, - 0x72c2, - 0x8cc5, - 0x69e01082, - 0x6a2e82c3, - 0x1ac3, - 0x6a601082, - 0x1ac3, - 0x7a807, - 0x2089c3, - 0x2000c2, - 0x22ea43, - 0x233fc3, - 0x280203, - 0x2005c3, - 0x215f83, - 0x217fc3, - 0x205803, - 0x23e083, - 0x2bd443, - 0xc7c44, - 0x16acc5, - 0x105085, - 0x10103, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x280203, - 0x23cb03, - 0x217fc3, - 0x205803, - 0x1c0443, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x200181, - 0x23cb03, - 0x217fc3, - 0x24dfc3, - 0x23e083, - 0x2f44, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x275243, - 0x280203, - 0x2d2a83, - 0x2381c3, - 0x2a49c3, + 0x2b1b84, + 0x243543, + 0x216443, + 0x2296c3, 0x20d903, - 0x266a83, - 0x20e704, - 0x217fc3, - 0x23e083, - 0x20aa43, - 0x207d44, - 0x25cc83, - 0x33f03, - 0x238f43, - 0x32dac8, - 0x2a1184, + 0x20cb83, + 0x201643, + 0x8904, + 0x793c8, + 0xf0007, + 0x16542, + 0x13f105, + 0x5fdcf, + 0xfa946, + 0x1472588, + 0x1190ce, + 0x69a0bc42, + 0x20bc88, + 0x20ad46, + 0x257f86, + 0x39a587, + 0x69e00c82, + 0x6a2bf108, + 0x22588a, + 0x270088, + 0x200ac2, + 0x37b789, + 0x2713c7, + 0x21ab46, + 0x2b1589, + 0x2cb344, + 0x349406, + 0x2d8d04, + 0x223984, + 0x263789, + 0x3e2106, + 0x236b05, + 0x274145, + 0x3e04c7, + 0x2d3b87, + 0x2d8684, + 0x322006, + 0x3061c5, + 0x20b585, + 0x238cc5, + 0x337047, + 0x3c7645, + 0x2533c9, + 0x3411c5, + 0x33ea04, + 0x231bc7, + 0x379ece, + 0x208509, + 0x340989, + 0x36ce06, + 0x249048, + 0x370e4b, + 0x2ab90c, + 0x31a746, + 0x2c32c7, + 0x2f19c5, + 0x31270a, + 0x20a989, + 0x201189, + 0x207d06, + 0x3bacc5, + 0x24f485, + 0x385e09, + 0x238e4b, + 0x3871c6, + 0x352106, + 0x20ef84, + 0x323bc6, + 0x308608, + 0x3cd246, + 0x228d06, + 0x204b88, + 0x206347, + 0x207ac9, + 0x20a245, + 0x793c8, + 0x3d7444, + 0x319c44, + 0x213f45, + 0x344589, + 0x22adc7, + 0x22adcb, + 0x22c88a, + 0x232345, + 0x6a606e82, + 0x2f6b47, + 0x6aa34fc8, + 0x207f47, + 0x21c245, + 0x2c858a, + 0x16542, + 0x289c0b, + 0x28ab0a, + 0x22bd06, + 0x2122c3, + 0x214ccd, + 0x3c338c, + 0x3dec0d, + 0x29e685, + 0x2bdd45, + 0x3a29c7, + 0x214609, + 0x225786, + 0x24c985, + 0x37f7c8, + 0x2d9c83, + 0x3588c8, + 0x323ac8, + 0x39f407, + 0x3c7188, + 0x2251c9, + 0x2d7a47, + 0x2f6347, + 0x36cfc8, + 0x37b644, + 0x37b647, + 0x28a4c8, + 0x361486, + 0x205acf, + 0x323607, + 0x321b06, + 0x361ec5, + 0x22c3c3, + 0x250b47, + 0x251243, + 0x255446, + 0x257d06, + 0x25a606, + 0x29c885, + 0x273b43, + 0x396e48, + 0x38b949, + 0x3a3c8b, + 0x25a788, + 0x25c785, + 0x25eb45, + 0x6ae5c082, + 0x26b249, + 0x3d1907, + 0x2891c5, + 0x263687, + 0x264dc6, + 0x3b2605, + 0x267a8b, + 0x26ac84, + 0x26fc45, + 0x26fd87, + 0x281a06, + 0x281e45, + 0x290dc7, + 0x291487, + 0x2ae244, + 0x37468a, + 0x297688, + 0x371109, + 0x2acac5, + 0x347486, + 0x3087ca, + 0x274046, + 0x23b8c7, + 0x2780cd, + 0x2b0049, + 0x394d85, + 0x37d287, + 0x32bbc8, + 0x36c888, + 0x3c3ac7, + 0x3ce246, + 0x22d347, + 0x257783, + 0x357f04, + 0x380f85, + 0x3b1447, + 0x3bbe49, + 0x287f08, + 0x23b7c5, + 0x382fc4, + 0x2574c5, + 0x26510d, + 0x200cc2, + 0x221ec6, + 0x2f8e06, + 0x33f34a, + 0x39e886, + 0x3afc45, + 0x2d91c5, + 0x2d91c7, + 0x3b3b0c, + 0x2b340a, + 0x298d86, + 0x2e7c45, + 0x323a06, + 0x299287, + 0x29ab06, + 0x29c78c, + 0x2b16c9, + 0x6b226c47, + 0x29f685, + 0x29f686, + 0x2a0288, + 0x24c885, + 0x2b0785, + 0x2b2048, + 0x2b224a, + 0x6b6870c2, + 0x6ba10f82, + 0x368b05, + 0x317b83, + 0x23d9c8, + 0x20b383, + 0x2b24c4, + 0x24694b, + 0x2231c8, + 0x2c1bc8, + 0x6bf4a9c9, + 0x2b8309, + 0x2b8c06, + 0x2b9e48, + 0x2ba049, + 0x2ba946, + 0x2baac5, + 0x251986, + 0x2bb089, + 0x2d46c7, + 0x24e2c6, + 0x273307, + 0x37bd07, + 0x39d584, + 0x6c2f4bc9, + 0x39dc88, + 0x2bf008, + 0x200e07, + 0x2dc706, + 0x20db89, + 0x257f47, + 0x3c840a, + 0x3ce388, + 0x21f107, + 0x221886, + 0x29ac4a, + 0x3a6c88, + 0x2f8885, + 0x22f6c5, + 0x31bd47, + 0x324849, + 0x32864b, + 0x3bc408, + 0x341249, + 0x25b607, + 0x2cdbcc, + 0x2ce30c, + 0x2ce60a, + 0x2ce88c, + 0x2d8888, + 0x2d8a88, + 0x2d8c84, + 0x2d9409, + 0x2d9649, + 0x2d988a, + 0x2d9b09, + 0x2d9e87, + 0x3cb8cc, + 0x3e7f06, + 0x277a88, + 0x274106, + 0x392b46, + 0x394c87, + 0x3ab788, + 0x3499cb, + 0x207e07, + 0x263fc9, + 0x28d5c9, + 0x252907, + 0x24b5c4, + 0x26bfc7, + 0x2d2bc6, + 0x218946, + 0x217145, + 0x2db8c8, + 0x310704, + 0x310706, + 0x2b32cb, + 0x266749, + 0x25b246, + 0x228f09, + 0x214006, + 0x38f0c8, + 0x271f43, + 0x3bae45, + 0x218a89, + 0x3e97c5, + 0x308104, + 0x3b7146, + 0x36aa05, + 0x260006, + 0x31c407, + 0x2109c6, + 0x2374cb, + 0x3c2887, + 0x267786, + 0x27e3c6, + 0x3e0586, + 0x2d8649, + 0x20308a, + 0x2cfdc5, + 0x2fcb0d, + 0x2b2346, + 0x259946, + 0x2e2146, + 0x227b45, + 0x2f2847, + 0x233587, + 0x27ec0e, + 0x216443, + 0x2dc6c9, + 0x3a1c09, + 0x312b07, + 0x276e87, + 0x291945, + 0x2f3e45, + 0x6c609e0f, + 0x2e1a47, + 0x2e1c08, + 0x2e1f04, + 0x2e2446, + 0x6ca4f102, + 0x2e5b86, + 0x2e8306, + 0x30f40e, + 0x35870a, + 0x2c7906, + 0x21498a, + 0x20d109, + 0x23f7c5, + 0x30bfc8, + 0x3dc706, + 0x2be208, + 0x343648, + 0x285dcb, + 0x39a685, + 0x3c76c8, + 0x204ccc, + 0x21c107, + 0x259b86, + 0x36a848, + 0x349688, + 0x6ce4ba82, + 0x32e38b, + 0x211e89, + 0x20a449, + 0x3c2187, + 0x3a8bc8, + 0x6d21e1c8, + 0x32c1cb, + 0x268d09, + 0x29420d, + 0x306f08, + 0x3c5088, + 0x6d603c82, + 0x210c84, + 0x6da386c2, + 0x377a06, + 0x6de00e42, + 0x3022ca, + 0x2b0606, + 0x22fc48, + 0x2b1e48, + 0x260946, + 0x2c37c6, + 0x3090c6, + 0x3e5505, + 0x2417c4, + 0x6e235504, + 0x3597c6, + 0x281447, + 0x6e684ec7, + 0x391e0b, + 0x208149, + 0x2bdd8a, + 0x2d9304, + 0x258208, + 0x24e08d, + 0x302bc9, + 0x302e08, + 0x303089, + 0x305504, + 0x251104, + 0x28c445, + 0x20508b, + 0x223146, + 0x359605, + 0x23f349, + 0x3220c8, + 0x2aeb04, + 0x312889, + 0x21eec5, + 0x2d3bc8, + 0x2f6a07, + 0x340d88, + 0x28cf06, + 0x206d47, + 0x2ecf49, + 0x203809, + 0x22f845, + 0x2b0d05, + 0x6ea1f182, + 0x33e7c4, + 0x244985, + 0x39a486, + 0x34b885, + 0x303c87, + 0x3598c5, + 0x281a44, + 0x36cec6, + 0x24ca07, + 0x3a01c6, + 0x32c605, + 0x212788, + 0x20af45, + 0x21b207, + 0x22c649, + 0x26688a, + 0x2344c7, + 0x2344cc, + 0x236ac6, + 0x242d89, + 0x24c505, + 0x24c7c8, + 0x22ea03, + 0x230445, + 0x2c7d85, + 0x286a07, + 0x6ee01242, + 0x2fe1c7, + 0x2eef06, + 0x3ad646, + 0x2f2006, + 0x3495c6, + 0x24b9c8, + 0x283885, + 0x321bc7, + 0x321bcd, + 0x20b5c3, + 0x3e83c5, + 0x3c7f87, + 0x2fe508, + 0x3c7b45, + 0x21f908, + 0x35b2c6, + 0x2ea3c7, + 0x2f5685, + 0x39a706, + 0x3973c5, + 0x22554a, + 0x2f9546, + 0x2315c7, + 0x320285, + 0x2fdec7, + 0x301804, + 0x308086, + 0x30bf05, + 0x23640b, + 0x2d2a49, + 0x28bc0a, + 0x22f8c8, + 0x377b48, + 0x30fecc, + 0x310c87, + 0x31ea88, + 0x391308, + 0x3d65c5, + 0x32a40a, + 0x34f9c9, + 0x6f200ec2, + 0x210606, + 0x24c004, + 0x300c89, + 0x247989, + 0x24eec7, + 0x284447, + 0x2a0d09, + 0x32aac8, + 0x32aacf, + 0x22dd46, + 0x2e9ecb, + 0x261445, + 0x261447, + 0x3572c9, + 0x22a186, + 0x312807, + 0x2ee685, + 0x23a944, + 0x34cb86, + 0x2174c4, + 0x2c9147, + 0x360648, + 0x6f7babc8, + 0x30d045, + 0x30d187, + 0x351bc9, + 0x211c44, + 0x24a5c8, + 0x6fb04c88, + 0x2e20c4, + 0x33ed08, + 0x32ce84, + 0x217389, + 0x227a85, + 0x6fe13402, + 0x22dd85, + 0x2ed405, + 0x3b69c8, + 0x23cf87, + 0x702008c2, + 0x3c2645, + 0x2e4146, + 0x25fb06, + 0x33e788, + 0x348688, + 0x34b846, + 0x37dcc6, + 0x2f00c9, + 0x3ad586, + 0x22a04b, + 0x349345, + 0x259386, + 0x261f88, + 0x362646, + 0x29e506, + 0x22000a, + 0x2e530a, + 0x22be45, + 0x24f187, + 0x27f886, + 0x70605002, + 0x3c80c7, + 0x38fb05, + 0x308744, + 0x308745, + 0x258106, + 0x27df47, + 0x2247c5, + 0x247a44, + 0x2e2708, + 0x29e5c5, + 0x355387, + 0x383485, + 0x225485, + 0x265c84, + 0x265c89, + 0x306008, + 0x2017c6, + 0x347706, + 0x3b6c06, + 0x70bd38c8, + 0x3dc2c7, + 0x31490d, + 0x314ecc, + 0x3154c9, + 0x315709, + 0x70f75ac2, + 0x3db703, + 0x22bec3, + 0x2d2c85, + 0x3b154a, + 0x33e646, + 0x34ce85, + 0x31cbc4, + 0x31cbcb, + 0x33508c, + 0x33594c, + 0x335c55, + 0x33698d, + 0x338a8f, + 0x338e52, + 0x3392cf, + 0x339692, + 0x339b13, + 0x339fcd, + 0x33a58d, + 0x33a90e, + 0x33b2ce, + 0x33b9cc, + 0x33bd8c, + 0x33c1cb, + 0x33cc4e, + 0x33d552, + 0x33e40c, + 0x33f5d0, + 0x34cfd2, + 0x34e1cc, + 0x34e88d, + 0x34ebcc, + 0x350dd1, + 0x35228d, + 0x355f8d, + 0x35658a, + 0x35680c, + 0x357ccc, + 0x35930c, + 0x359ccc, + 0x35dad3, + 0x35e550, + 0x35e950, + 0x35f34d, + 0x35f94c, + 0x360ac9, + 0x36290d, + 0x362c53, + 0x364b11, + 0x365313, + 0x36664f, + 0x366a0c, + 0x366d0f, + 0x3670cd, + 0x3676cf, + 0x367a90, + 0x36850e, + 0x36d54e, + 0x36de90, + 0x36ea8d, + 0x36f40e, + 0x36f78c, + 0x3708d3, + 0x3725ce, + 0x373310, + 0x373711, + 0x373b4f, + 0x373f13, + 0x37564d, + 0x37598f, + 0x375d4e, + 0x3762d0, + 0x3766c9, + 0x377d50, + 0x37824f, + 0x3788cf, + 0x378c92, + 0x37c3ce, + 0x37d94d, + 0x37e00d, + 0x37e34d, + 0x37f9cd, + 0x37fd0d, + 0x380050, + 0x38044b, + 0x380d4c, + 0x3810cc, + 0x3816cc, + 0x3819ce, + 0x390450, + 0x392492, + 0x39290b, + 0x3938ce, + 0x393c4e, + 0x3944ce, + 0x394a4b, + 0x71394ed6, + 0x395e0d, + 0x396994, + 0x39768d, + 0x399cd5, + 0x39b8cd, + 0x39c24f, + 0x39cb8f, + 0x3a3f4f, + 0x3a430e, + 0x3a468d, + 0x3a6611, + 0x3aaf4c, + 0x3ab24c, + 0x3ab54b, + 0x3ab98c, + 0x3ac40f, + 0x3ac7d2, + 0x3acdcd, + 0x3ae1cc, + 0x3aec8c, + 0x3aef8d, + 0x3af2cf, + 0x3af68e, + 0x3b120c, + 0x3b17cd, + 0x3b1b0b, + 0x3b23cc, + 0x3b318d, + 0x3b34ce, + 0x3b3849, + 0x3b50d3, + 0x3b798d, + 0x3b808d, + 0x3b868c, + 0x3b8d0e, + 0x3b958f, + 0x3b994c, + 0x3b9c4d, + 0x3b9f8f, + 0x3ba34c, + 0x3bb38c, + 0x3bb90c, + 0x3bbc0c, + 0x3bc8cd, + 0x3bcc12, + 0x3bd38c, + 0x3bd68c, + 0x3bd991, + 0x3bddcf, + 0x3be18f, + 0x3be553, + 0x3bf34e, + 0x3bf6cf, + 0x3bfa8c, + 0x717c014e, + 0x3c04cf, + 0x3c0896, + 0x3c1b92, + 0x3c528c, + 0x3c618f, + 0x3c680d, + 0x3d294f, + 0x3d2d0c, + 0x3d300d, + 0x3d334d, + 0x3d51ce, + 0x3d5d0c, + 0x3d914c, + 0x3d9450, + 0x3daa91, + 0x3daecb, + 0x3db30c, + 0x3db60e, + 0x3dd8d1, + 0x3ddd0e, + 0x3de08d, + 0x3e5f8b, + 0x3e688f, + 0x3e74d4, + 0x2038c2, + 0x2038c2, + 0x204cc3, + 0x2038c2, + 0x204cc3, + 0x2038c2, + 0x201082, + 0x2519c5, + 0x3dd5cc, + 0x2038c2, + 0x2038c2, + 0x201082, + 0x2038c2, + 0x2a0905, + 0x266885, + 0x2038c2, + 0x2038c2, + 0x20bd42, + 0x2a0905, + 0x337209, + 0x36480c, + 0x2038c2, + 0x2038c2, + 0x2038c2, + 0x2038c2, + 0x2519c5, + 0x2038c2, + 0x2038c2, + 0x2038c2, + 0x2038c2, + 0x20bd42, + 0x337209, + 0x2038c2, + 0x2038c2, + 0x2038c2, + 0x266885, + 0x2038c2, + 0x266885, + 0x36480c, + 0x3dd5cc, + 0x253c43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x2296c3, + 0x20cb83, + 0x3c4f, + 0x12d248, + 0x6f7c4, + 0xd903, + 0x17b4c8, + 0x1d5b83, + 0x2000c2, + 0x72616542, + 0x249f03, + 0x23adc4, + 0x204f03, + 0x36c284, + 0x239c86, + 0x220e43, + 0x3b7004, + 0x2999c5, + 0x216443, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x23098a, + 0x259186, + 0x393fcc, + 0x793c8, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x233243, + 0x2e8306, + 0x2296c3, + 0x20cb83, + 0x21f6c3, + 0x39fc3, + 0xb4388, + 0x731e7c45, + 0x7c4c7, + 0xb1845, + 0x52547, + 0x146c05, + 0x4009, + 0xad42, + 0x1c138a, + 0x73f2d5c5, + 0x146c05, + 0x34347, + 0x16108, + 0x10d8e, + 0x95292, + 0x130e0b, + 0x1e1d46, + 0x742ea205, + 0x7479e04c, + 0x10de07, + 0xb46c7, + 0x1b620a, + 0x44ad0, + 0x17be85, + 0xc5e4b, + 0x1dcf08, + 0x3e1c7, + 0x3aa4b, + 0x51b89, + 0x873c7, + 0xf4547, + 0x187407, + 0x3e106, + 0x1c74c8, + 0x74c32f46, + 0x46bc7, + 0xc7e86, + 0xb8d0d, + 0x96110, + 0x75013242, + 0x1cdd88, + 0x184590, + 0x18ed0c, + 0x7578f54d, + 0x68508, + 0x6898b, + 0x76447, + 0x19a49, + 0x62246, + 0xa0488, + 0x5102, + 0x9c50a, + 0x36947, + 0xb8847, + 0xb4e49, + 0xb7288, + 0x154645, + 0x190a86, + 0x6ac6, + 0x1040ce, + 0x422ce, + 0x4aecf, + 0x5e789, + 0x932c9, + 0x9c08b, + 0xbb44f, + 0x1dd2cc, + 0xd4f4b, + 0x1b9248, + 0x191d07, + 0x19b308, + 0xbc0cb, + 0xbca0c, + 0xbce0c, + 0xbd20c, + 0xbd50d, + 0x1bc248, + 0x5adc2, + 0x1971c9, + 0x46688, + 0xda88b, + 0xdc906, + 0xe3acb, + 0x13d08b, + 0xeddca, + 0xeec85, + 0xf2550, + 0xf8286, + 0x583c6, + 0x10f7c5, + 0x120047, + 0xfa348, + 0xff487, + 0xff747, + 0x69587, + 0xd1846, + 0x17784a, + 0xb400a, + 0x30846, + 0xb860d, + 0x46c88, + 0x118d88, + 0xef809, + 0x1b2a09, + 0xcc205, + 0x176a8c, + 0xbd70b, + 0x10d989, + 0x112cc4, + 0x114549, + 0x114786, + 0x143506, + 0x4a42, + 0x13906, + 0x80c8b, + 0x11de07, + 0x11dfc7, + 0xe042, + 0xde645, + 0x9204, + 0x101, + 0x5b843, + 0x74b26806, + 0xa0803, + 0x382, + 0x1504, + 0xac2, + 0x5dd04, + 0x882, + 0x8502, + 0x4702, + 0x128c42, + 0x4182, + 0xea202, + 0xd42, + 0x2e702, + 0x3fb82, + 0xc542, + 0x3242, + 0x57f02, + 0x22bc3, + 0x942, + 0x2bc2, + 0x18242, + 0xeb02, + 0x642, + 0x3b342, + 0x1ec82, + 0x8e82, + 0x5502, + 0x5c2, + 0x43543, + 0x2642, + 0x6002, + 0x54202, + 0x7bc2, + 0x9d42, + 0x10442, + 0x205c2, + 0x11de42, + 0x1582, + 0x10f082, + 0x77782, + 0xa9542, + 0x296c3, + 0x602, + 0x4ba82, + 0x1cc2, + 0x2d4c2, + 0x2f7c5, + 0x59c2, + 0x4cec2, + 0x179e43, + 0x682, + 0x4a02, + 0x1702, + 0x4ac2, + 0xb5c2, + 0x8c2, + 0x6502, + 0x4a42, + 0x3ec5, + 0x75a01082, + 0x75eecb83, + 0x9983, + 0x76201082, + 0x9983, + 0xdc1c7, + 0x215483, + 0x2000c2, + 0x216543, + 0x222bc3, + 0x2f5503, + 0x2005c3, + 0x233243, + 0x2296c3, + 0x20d903, + 0x20cb83, + 0x2a0843, + 0xcc244, + 0x143845, + 0x1084c5, + 0x1a143, + 0x793c8, + 0x216543, + 0x222bc3, + 0x2f5503, + 0x216443, + 0x2296c3, + 0x20d903, + 0x7ca83, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x200181, + 0x216443, + 0x2296c3, + 0x257743, + 0x20cb83, + 0x1a3904, + 0x253c43, + 0x216543, + 0x222bc3, + 0x2163c3, + 0x2f5503, + 0x322603, + 0x285483, + 0x2b05c3, + 0x205383, + 0x343b43, + 0x2b1b84, + 0x2296c3, + 0x20cb83, + 0x201643, + 0x202304, + 0x239843, + 0x3b43, + 0x2133c3, + 0x32f308, + 0x29ac84, 0x20020a, - 0x385986, - 0x1530c4, - 0x3bc307, - 0x21bfca, - 0x22d4c9, - 0x3c7247, - 0x3c9c8a, - 0x24ac43, - 0x309e0b, - 0x20d849, - 0x2fde05, - 0x3ba707, - 0x12402, - 0x22ea43, - 0x2264c7, - 0x224685, - 0x2e9209, - 0x233fc3, - 0x23a086, - 0x2d3383, - 0xf0983, - 0x11bf06, - 0x8886, - 0x226c7, - 0x228c86, - 0x30bf45, - 0x208f47, - 0x319107, - 0x6d266a83, - 0x34f787, - 0x23ca83, - 0x21df05, - 0x20e704, - 0x275f48, - 0x3c410c, - 0x2be385, - 0x2ac086, - 0x226387, - 0x3c1447, - 0x269207, - 0x277008, - 0x31b18f, - 0x22d705, - 0x241387, - 0x211647, - 0x3caf0a, - 0x340009, - 0x32e945, - 0x34ef0a, - 0xdd286, - 0xc8087, - 0x2d3405, - 0x2f83c4, - 0x3e1b06, - 0x14e1c6, - 0x385107, - 0x250c47, - 0x3c5f48, - 0x212a05, - 0x224586, - 0x168688, - 0x2677c5, - 0x67986, - 0x2f5b85, - 0x267704, - 0x3c2387, - 0x23bc4a, - 0x2a6688, - 0x25f986, - 0x15f83, - 0x2ee705, - 0x354bc6, - 0x3c9406, - 0x3b5906, - 0x23cb03, - 0x3aa447, - 0x2115c5, - 0x217fc3, - 0x2eb20d, - 0x205803, - 0x3c6048, - 0x215c44, - 0x27c885, - 0x2ad606, - 0x358146, - 0x2af187, - 0x2a4a07, - 0x28dfc5, - 0x23e083, - 0x36f847, - 0x38a449, - 0x325009, - 0x3624ca, - 0x201b42, - 0x21dec4, - 0x304f84, - 0x2f9707, - 0x2f9a48, - 0x2fbfc9, - 0x3dca09, - 0x2fc9c7, - 0x108589, - 0x229446, - 0xff8c6, - 0x300ac4, - 0x22efca, - 0x304b08, - 0x306109, - 0x3066c6, - 0x2c3cc5, - 0x2a6548, - 0x2d810a, - 0x204343, - 0x207ec6, - 0x2fcac7, - 0x30f6c5, - 0x3c0385, - 0x243cc3, - 0x2ddf84, - 0x2259c5, - 0x28c247, - 0x301705, - 0x2f72c6, - 0x121dc5, - 0x288d83, - 0x2bb9c9, - 0x27c64c, - 0x2cbd4c, - 0x37f088, - 0x2a9f87, - 0x310848, - 0x111507, - 0x31188a, - 0x311f4b, - 0x20d988, - 0x358248, - 0x2524c6, - 0x31fdc5, - 0x25c4ca, - 0x2e8305, - 0x22dc42, - 0x2d6807, - 0x269f86, - 0x37b205, - 0x3d2189, - 0x27e3c5, - 0x388a05, - 0x229a09, - 0x325a46, - 0x37de88, - 0x270103, - 0x228dc6, - 0x3d2506, - 0x32dc85, - 0x32dc89, - 0x2ca889, - 0x25c247, - 0x120f44, - 0x320f47, - 0x3dc909, - 0x21c1c5, - 0x39ec8, - 0x37e245, - 0x371145, - 0x3b3609, - 0x201802, - 0x366984, - 0x20d2c2, - 0x204b82, - 0x320245, - 0x352e48, - 0x2c7b45, - 0x2d5183, - 0x2d5185, - 0x2e2583, - 0x20e202, - 0x2b5bc4, - 0x273cc3, - 0x200a82, - 0x2c1704, - 0x308c43, - 0x204ac2, - 0x2c7bc3, - 0x213984, - 0x306843, - 0x253cc4, - 0x207742, - 0x216883, - 0x218e43, - 0x2018c2, - 0x25cdc2, - 0x2ca6c9, - 0x208f02, - 0x291bc4, - 0x208742, - 0x3a9e44, - 0x229404, - 0x22aac4, - 0x2072c2, - 0x23d882, - 0x32aa83, - 0x26ac43, - 0x270184, - 0x2c7504, - 0x2ecac4, - 0x2fcc44, - 0x3210c3, - 0x35ce03, - 0x2dd204, - 0x3252c4, - 0x325406, - 0x226642, - 0x12402, - 0x41d83, - 0x212402, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x110c5, - 0x2000c2, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x203983, - 0x266a83, - 0x20e704, - 0x2ca984, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x216983, - 0x3010c4, - 0x32f643, - 0x2b0743, - 0x380784, - 0x37e046, - 0x20ebc3, - 0x146bc5, - 0x178d87, - 0x226dc3, - 0x6ee10c08, - 0x24cbc3, - 0x2c1183, - 0x21df43, - 0x215f83, - 0x3c7985, - 0x1ba6c3, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x210043, - 0x230743, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x2191c3, - 0x217fc3, - 0x2878c4, - 0x1c0443, - 0x23e083, - 0x25d244, - 0x146bc5, - 0x2ce8c5, - 0x178d87, - 0x212402, + 0x25afc6, + 0x1519c4, + 0x3bd047, + 0x22820a, + 0x22dc09, + 0x3c9ec7, + 0x3cc38a, + 0x253c43, + 0x368b8b, + 0x20c389, + 0x31f4c5, + 0x20cd87, + 0x16542, + 0x216543, + 0x226f07, + 0x2224c5, + 0x2d8e09, + 0x222bc3, + 0x34bc46, + 0x32a4c3, + 0xd2b03, + 0x11bc06, + 0x17a2c6, + 0x20dc7, + 0x229a46, + 0x231f45, + 0x20a307, + 0x319507, + 0x78f43b43, + 0x34e407, + 0x3b29c3, + 0x2712c5, + 0x2b1b84, + 0x2c2188, + 0x3db94c, + 0x2c1305, + 0x2b01c6, + 0x226dc7, + 0x35b907, + 0x2678c7, + 0x26c148, + 0x31ae8f, + 0x27b905, + 0x24a007, + 0x2151c7, + 0x28974a, + 0x37f609, + 0x330145, + 0x34da0a, + 0x101546, + 0xcc787, + 0x2d7e45, + 0x2f5744, + 0x340486, + 0xcb946, + 0x256ec7, + 0x25acc7, + 0x3b5b48, + 0x3d07c5, + 0x2223c6, + 0x2f048, + 0x228c85, + 0x28e46, + 0x240305, + 0x288284, + 0x21ef87, + 0x24b80a, + 0x2aab88, + 0x3e3cc6, + 0x33243, + 0x2efe85, + 0x3d8586, + 0x3cbb06, + 0x30f6c6, + 0x216443, + 0x3ad047, + 0x215145, + 0x2296c3, + 0x2ee08d, + 0x20d903, + 0x3b5c48, + 0x243444, + 0x281d05, + 0x2b2506, + 0x32e106, + 0x259287, + 0x268bc7, + 0x27c805, + 0x20cb83, + 0x3a20c7, + 0x24b489, + 0x36a249, + 0x382d0a, + 0x23d7c2, + 0x271284, + 0x3211c4, + 0x2fda07, + 0x2fe088, + 0x300709, + 0x3e8289, + 0x301107, + 0x10a949, + 0x2132c6, + 0x103e46, + 0x305504, + 0x3b4e4a, + 0x307e08, + 0x308f89, + 0x309246, + 0x2c7245, + 0x2aaa48, + 0x2dcb8a, + 0x27d683, + 0x202486, + 0x301207, + 0x2c8885, + 0x3c10c5, + 0x24da03, + 0x2d1984, + 0x22f685, + 0x291587, + 0x306145, + 0x2f2cc6, + 0x166105, + 0x2c79c3, + 0x2c79c9, + 0x281acc, + 0x2d06cc, + 0x3416c8, + 0x2a3e47, + 0x3101c8, + 0x110e47, + 0x3111ca, + 0x31188b, + 0x20c4c8, + 0x32e208, + 0x25d306, + 0x272145, + 0x33b5ca, + 0x2ecbc5, + 0x213402, + 0x2db6c7, + 0x27d046, + 0x377045, + 0x313149, + 0x27b485, + 0x1dea48, + 0x29d645, + 0x270e89, + 0x3d84c6, + 0x3407c8, + 0x31dd83, + 0x212c46, + 0x3b7086, + 0x31d845, + 0x31d849, + 0x2cee49, + 0x271ec7, + 0x120d84, + 0x320d87, + 0x3e8189, + 0x228405, + 0x418c8, + 0x379cc5, + 0x3a14c5, + 0x36bc09, + 0x202cc2, + 0x35a344, 0x204542, - 0x200382, - 0x203182, - 0x5803, - 0x2003c2, - 0x157c44, - 0x22ea43, - 0x236704, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x5803, - 0x23e083, - 0x208503, - 0x24cd44, - 0xae888, - 0x22ea43, - 0x205803, - 0x10103, - 0x126d84, - 0x241ec4, - 0xae888, - 0x22ea43, - 0x24d704, - 0x20e704, - 0x205803, - 0x209282, - 0x1c0443, - 0x23e083, - 0x235403, - 0xddf84, - 0x37b845, - 0x22dc42, - 0x32a143, - 0x2149, - 0xe7546, - 0x17e348, + 0x202642, + 0x2ffc05, + 0x351748, + 0x2cc145, + 0x2da043, + 0x2da045, + 0x2e5d83, + 0x212202, + 0x333544, + 0x36a603, + 0x200a82, + 0x2c4d84, + 0x318f43, + 0x203482, + 0x269503, + 0x2307c4, + 0x3093c3, + 0x25be04, + 0x201ec2, + 0x21f5c3, + 0x214a83, + 0x202d82, + 0x352902, + 0x2cec89, + 0x204942, + 0x296884, + 0x21ef42, + 0x2603c4, + 0x213284, + 0x2d7284, + 0x204a42, + 0x247e02, + 0x35d143, + 0x2a2683, + 0x291704, + 0x2e1184, + 0x307fc4, + 0x31fe44, + 0x31d303, + 0x208f03, + 0x3014c4, + 0x322cc4, + 0x322e06, + 0x229782, + 0x16542, + 0x4ab43, + 0x216542, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x14c45, 0x2000c2, - 0xae888, - 0x212402, - 0x233fc3, - 0x266a83, + 0x253c43, + 0x216543, + 0x222bc3, + 0x206203, + 0x343b43, + 0x2b1b84, + 0x2cef44, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x21f6c3, + 0x305b04, + 0x20bc43, + 0x21bcc3, + 0x37dc04, + 0x379ac6, + 0x2079c3, + 0x146c05, + 0xb46c7, + 0x203643, + 0x7aa176c8, + 0x209a43, + 0x2c45c3, + 0x24c243, + 0x233243, + 0x3c2545, + 0xcd43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x212343, + 0x203e43, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x243543, + 0x2296c3, + 0x28ea04, + 0x7ca83, + 0x20cb83, + 0x2cce44, + 0x146c05, + 0x2d3605, + 0xb46c7, + 0x216542, + 0x2104c2, + 0x200382, + 0x204cc2, + 0xd903, + 0x2003c2, + 0x12dc04, + 0x216543, + 0x23ec84, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x21b544, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x202b03, + 0x25dd04, + 0x793c8, + 0x216543, + 0x20d903, + 0x1a143, + 0x11a5c4, + 0x21d684, + 0x793c8, + 0x16542, + 0x216543, + 0x256d44, + 0x2b1b84, + 0x20d903, + 0x203c82, + 0x7ca83, + 0x20cb83, + 0x24c343, + 0xd1984, + 0x355b45, + 0x213402, + 0x323543, + 0x10e689, + 0xebd86, + 0x1c4688, + 0x2000c2, + 0x793c8, + 0x216542, + 0x222bc3, + 0x343b43, 0x2005c2, - 0x5803, - 0x23e083, - 0xa882, + 0xd903, + 0x20cb83, + 0xfe02, 0x82, 0xc2, - 0x1c9e47, - 0x14b509, - 0x3043, - 0xae888, - 0x10bec3, - 0x72727c47, - 0x2ea43, - 0xaf88, - 0x33fc3, - 0x66a83, - 0x3fec6, - 0x191c3, - 0x56288, - 0xd0ac8, - 0x7dec6, - 0x729a7285, - 0x3cb03, - 0xdb008, - 0x3fa83, - 0x72cedbc6, - 0xf2ec5, - 0x124d04, - 0x341c7, - 0x17fc3, - 0x3443, - 0x3e083, - 0x1b02, - 0x182c8a, - 0x9c43, - 0x732c3f4c, - 0x120303, - 0x5d884, - 0x11af8b, - 0x11b548, - 0x95f42, - 0x17ff03, - 0x1454747, - 0x15b4247, - 0x14d5248, - 0x157ff03, - 0x18b7c8, - 0x156ecb, - 0x10382, - 0x131247, - 0x181584, + 0x1cc547, + 0x14a709, + 0x3a43, + 0x793c8, + 0x17d0c3, + 0x7e3e71c7, + 0x16543, + 0x10508, + 0x22bc3, + 0x143b43, + 0x432c6, + 0x43543, + 0x15d8c8, + 0xd5c08, + 0x1c1ac3, + 0x83646, + 0x7e5a9d85, + 0x16443, + 0x98e48, + 0xdfc08, + 0x103d03, + 0x7e8ef3c6, + 0xf3585, + 0x1a1dc4, + 0x3c787, + 0x296c3, + 0x4f83, + 0xcb83, + 0x4642, + 0x15b0ca, + 0xc205, + 0x7303, + 0x7eed308c, + 0xffcc3, + 0x10ba84, + 0x11ac8b, + 0x11b248, + 0x15d184, + 0x9a402, + 0x4b343, + 0x145fdc7, + 0x157a147, + 0x14da108, + 0x144b343, + 0x1c4b88, + 0x1ad30b, + 0x14182, + 0x132747, + 0x114bc4, 0x2000c2, - 0x212402, - 0x236704, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x215f83, - 0x217fc3, - 0x23e083, - 0x20d403, - 0x208503, - 0xe783, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, + 0x216542, + 0x23ec84, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x233243, + 0x2296c3, + 0x20cb83, + 0x204683, + 0x202b03, + 0x39fc3, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, 0x602, - 0x10103, - 0x66a83, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x215f83, - 0x217fc3, - 0x23e083, - 0x21fcc2, + 0x1a143, + 0x143b43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x233243, + 0x2296c3, + 0x20cb83, + 0x22a042, 0x2000c1, 0x2000c2, 0x200201, - 0x337f82, - 0xae888, - 0x21aa05, + 0x338b82, + 0x793c8, + 0x224545, 0x200101, - 0x2ea43, - 0x319c4, + 0x16543, + 0x3a304, 0x201381, 0x200501, 0x201281, - 0x248442, - 0x38e084, - 0x248443, + 0x251242, + 0x251244, + 0x251943, 0x200041, 0x200801, 0x200181, + 0x18ab06, 0x200701, - 0x35c3c7, - 0x30fccf, - 0x39af46, + 0x30d307, + 0x312d8f, + 0x399086, 0x2004c1, - 0x326dc6, + 0x31a606, 0x200bc1, 0x200581, - 0x3de50e, + 0x3e61ce, 0x2003c1, - 0x23e083, + 0x20cb83, 0x200a81, - 0x32b305, - 0x201b02, - 0x243bc5, + 0x3a8d85, + 0x204642, + 0x24d905, 0x200401, 0x200741, 0x2007c1, - 0x22dc42, + 0x213402, 0x200081, - 0x207d01, - 0x20a8c1, - 0x202341, - 0x201c41, - 0x51709, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x217c83, - 0x22ea43, - 0x266a83, - 0x95e88, - 0x23cb03, - 0x217fc3, - 0x91043, - 0x23e083, - 0x76ef8008, - 0x1e0f83, - 0xff48, - 0x10402, - 0xb9c3, - 0x293c2, - 0x72c2, - 0x146bc5, - 0xae888, - 0x11fe87, - 0x5803, - 0x146bc5, - 0x175d84, - 0x7f448, - 0x46d04, - 0x17fe07, - 0x1c4104, - 0xd5e45, - 0x51709, - 0x1424c7, - 0x5aa4a, - 0x14f800a, - 0xae888, - 0x1c0443, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x233f03, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x2e5904, - 0x23e083, - 0x24a845, - 0x27e1c4, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20b982, - 0x217fc3, - 0x23e083, - 0x8503, - 0xaefca, - 0xea706, - 0x11fa04, - 0x1268c6, - 0x24ac43, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x217fc3, - 0x23e083, - 0x212402, - 0x22ea43, - 0x231f49, - 0x233fc3, - 0x2ac549, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x81004, - 0x5803, - 0x23e083, - 0x3008c8, - 0x239307, - 0x37b845, - 0xde248, - 0x1d6e08, - 0x1c9e47, - 0xf9cca, - 0x7650b, - 0x127007, - 0x40488, - 0x7f70a, - 0x25e48, - 0x14b509, - 0x25887, - 0x14dcc7, - 0x1b5208, - 0xaf88, - 0x4164f, - 0xa6845, - 0x148647, - 0x3fec6, - 0x36487, - 0x12ea86, - 0x56288, - 0x9a346, - 0x17dc87, - 0x1c1989, - 0x1cd6c7, - 0x19c009, - 0xc9049, - 0xce646, - 0xd0ac8, - 0xde505, - 0x8350a, - 0xdb008, - 0x3fa83, - 0xe2988, - 0x341c7, - 0x156b05, - 0x61950, - 0x3443, - 0x1c0443, - 0x17db07, - 0x2cd05, - 0xfb388, - 0x6db85, - 0x120303, - 0x1d1048, - 0xb2c06, - 0x33249, - 0xb6f47, - 0x240b, - 0x72344, - 0x113c44, - 0x11af8b, - 0x11b548, - 0x11be07, - 0x146bc5, - 0x22ea43, - 0x233fc3, - 0x280203, - 0x23e083, - 0x23e883, - 0x266a83, - 0x1c0443, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x1b1e8b, + 0x201641, + 0x207281, + 0x2024c1, + 0x208481, + 0x5c549, + 0x793c8, + 0x216543, + 0x222bc3, + 0xac1c8, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x2203c3, + 0x2f43, + 0x216543, + 0x343b43, + 0x9a348, + 0x216443, + 0x2296c3, + 0x91c43, + 0x20cb83, + 0x82a99048, + 0x1e9343, + 0x12248, + 0xcd42, + 0x3c43, + 0x13242, + 0x4a42, + 0x146c05, + 0x793c8, + 0x9fb06, + 0x15edc7, + 0xd903, + 0x146c05, + 0x171684, + 0x1cdf88, + 0x4f344, + 0x106a47, + 0x60244, + 0xb1c0c, + 0x1db944, + 0xdaf45, + 0x5c549, + 0x16e507, + 0x28846, + 0x191ca, + 0x14f990a, + 0x793c8, + 0x7ca83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x203b43, + 0x793c8, + 0x216543, + 0x222bc3, + 0x2e8fc4, + 0x20cb83, + 0x2655c5, + 0x2484c4, + 0x216543, + 0x222bc3, + 0x343b43, + 0x201582, + 0x2296c3, + 0x20cb83, + 0x2b03, + 0xedac6, + 0x12f6c4, + 0x124c46, + 0x253c43, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2296c3, + 0x20cb83, + 0x216542, + 0x216543, + 0x23a889, + 0x222bc3, + 0x2b79c9, + 0x343b43, + 0x216443, + 0x2296c3, + 0x84e04, + 0xd903, + 0x20cb83, + 0x305308, + 0x3e2687, + 0x355b45, + 0xd3a48, + 0x1db108, + 0x1cc547, + 0xfe30a, + 0x1c790b, + 0x11a847, + 0x48f08, + 0xf4a0a, + 0x26888, + 0x14a709, + 0x2f547, + 0x1ed87, + 0x10efc8, + 0x10508, + 0x4a2cf, + 0xaad45, + 0x1fc47, + 0x432c6, + 0x14cd47, + 0x130286, + 0x15d8c8, + 0xa3706, + 0x1405c7, + 0x1798c9, + 0x1df3c7, + 0xc6d09, + 0xcd749, + 0xd3386, + 0xd5c08, + 0xd3d05, + 0x86f4a, + 0xdfc08, + 0x103d03, + 0xe6008, + 0x3c787, + 0x133485, + 0x649d0, + 0x4f83, + 0x7ca83, + 0x179747, + 0x2d445, + 0xffa48, + 0x74505, + 0xffcc3, + 0x1a3108, + 0x1a1386, + 0x9ec09, + 0xba247, + 0x10e94b, + 0x77a04, + 0x113b84, + 0x11ac8b, + 0x11b248, + 0x11bb07, + 0x146c05, + 0x216543, + 0x222bc3, + 0x2f5503, + 0x20cb83, + 0x248783, + 0x343b43, + 0x7ca83, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x9c1cb, 0x2000c2, - 0x212402, - 0x23e083, + 0x216542, + 0x20cb83, 0xd42, - 0xb982, - 0x83c2, - 0xae888, - 0x1357c9, - 0x18b7c8, - 0x12402, + 0x1582, + 0x1642, + 0x793c8, + 0x1b7409, + 0x1c4b88, + 0x16542, 0x2000c2, - 0x212402, + 0x216542, 0x200382, 0x2005c2, - 0x204482, - 0x217fc3, - 0x14a9c6, + 0x202042, + 0x2296c3, + 0x148ec6, 0x2003c2, - 0xddf84, + 0xd1984, 0x2000c2, - 0x24ac43, - 0x212402, - 0x22ea43, - 0x233fc3, + 0x253c43, + 0x216542, + 0x216543, + 0x222bc3, 0x200382, - 0x266a83, - 0x2191c3, - 0x23cb03, - 0x21e484, - 0x217fc3, - 0x213cc3, - 0x5803, - 0x23e083, - 0x25d884, - 0x20aa43, - 0x266a83, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x205803, - 0x23e083, - 0x3c48c7, - 0x22ea43, - 0x282e87, - 0x394e06, - 0x208483, - 0x20fa03, - 0x266a83, - 0x204903, - 0x20e704, - 0x28f784, - 0x32bac6, - 0x208243, - 0x217fc3, - 0x23e083, - 0x24a845, - 0x2b21c4, - 0x3283c3, - 0x356703, - 0x2d6807, - 0x355f05, - 0x1d03, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x23cb03, - 0x217fc3, - 0x75504, - 0x23e083, - 0x16d43, - 0x7e308dcc, - 0x4e803, - 0x192c07, - 0xe6946, - 0x19dfc7, - 0x157585, - 0x222b02, - 0x23de83, - 0x20c5c3, - 0x24ac43, - 0x7ee2ea43, - 0x204302, - 0x233fc3, - 0x2033c3, - 0x266a83, - 0x20e704, - 0x3433c3, - 0x22d703, - 0x23cb03, - 0x21e484, - 0x7f216102, - 0x217fc3, - 0x23e083, - 0x204ac3, - 0x219243, - 0x218043, - 0x21fcc2, - 0x20aa43, - 0xae888, - 0x266a83, - 0x10103, - 0x215d84, - 0x24ac43, - 0x212402, - 0x22ea43, - 0x236704, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x2191c3, - 0x33f584, - 0x217544, - 0x2e4806, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x216983, - 0x269f86, - 0x3a9cb, - 0x36fc6, - 0xbd84a, - 0x11f48a, - 0xae888, - 0x215e84, - 0x8062ea43, - 0x37e504, - 0x233fc3, - 0x296d84, - 0x266a83, - 0x2f4c43, - 0x23cb03, - 0x217fc3, - 0x1c0443, - 0x23e083, - 0x54543, - 0x34a60b, - 0x3cf9ca, - 0x3e0a8c, - 0xee488, + 0x343b43, + 0x243543, + 0x216443, + 0x21b544, + 0x2296c3, + 0x20b243, + 0xd903, + 0x20cb83, + 0x30ba84, + 0x201643, + 0x343b43, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x20d903, + 0x20cb83, + 0x3c5747, + 0x216543, + 0x2868c7, + 0x3823c6, + 0x209843, + 0x21a003, + 0x343b43, + 0x20e443, + 0x2b1b84, + 0x243544, + 0x3d66c6, + 0x202803, + 0x2296c3, + 0x127f0b, + 0x20cb83, + 0x2655c5, + 0x2f7184, + 0x3b6703, + 0x343483, + 0x2db6c7, + 0x2f6985, + 0x1a1003, + 0x216543, + 0x222bc3, + 0x343b43, + 0x216443, + 0x2296c3, + 0x1c1184, + 0x20cb83, + 0x1fa83, + 0x89f0b24c, + 0x58083, + 0x4bc47, + 0x80dc6, + 0x120047, + 0x133d85, + 0x205242, + 0x246dc3, + 0x211d43, + 0x253c43, + 0x8aa16543, + 0x2080c2, + 0x222bc3, + 0x204f03, + 0x343b43, + 0x2b1b84, + 0x34b203, + 0x27b903, + 0x216443, + 0x21b544, + 0x8ae06c02, + 0x2296c3, + 0x20cb83, + 0x20e603, + 0x209203, + 0x2883c3, + 0x22a042, + 0x201643, + 0x793c8, + 0x343b43, + 0x1a143, + 0x258bc4, + 0x253c43, + 0x216542, + 0x216543, + 0x23ec84, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x243543, + 0x239104, + 0x28d4c4, + 0x2e8306, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x21f6c3, + 0x27d046, + 0x4290b, + 0x32f46, + 0xb6c0a, + 0x11faca, + 0x793c8, + 0x22f004, + 0x8c216543, + 0x32c744, + 0x222bc3, + 0x219a44, + 0x343b43, + 0x284103, + 0x216443, + 0x2296c3, + 0x7ca83, + 0x20cb83, + 0x31c03, + 0x348b0b, + 0x3d368a, + 0x3e8e4c, + 0xefc08, 0x2000c2, - 0x212402, + 0x216542, 0x200382, - 0x22f845, - 0x20e704, - 0x20b982, - 0x23cb03, - 0x217544, - 0x203182, + 0x2b96c5, + 0x2b1b84, + 0x201582, + 0x216443, + 0x28d4c4, + 0x204cc2, 0x2003c2, - 0x208502, - 0x21fcc2, - 0x4ac43, - 0xcdc2, - 0x2d0e89, - 0x36c648, - 0x266909, - 0x213d49, - 0x2184ca, - 0x30aaca, - 0x209482, - 0x361e82, - 0x12402, - 0x22ea43, - 0x22c982, - 0x241546, - 0x37c682, - 0x2013c2, - 0x27688e, - 0x2168ce, - 0x217f47, - 0x211c42, - 0x233fc3, - 0x266a83, - 0x20f342, + 0x202b02, + 0x22a042, + 0x53c43, + 0x4042, + 0x2d5fc9, + 0x278a08, + 0x3d8a09, + 0x39d3c9, + 0x2116ca, + 0x21424a, + 0x208d02, + 0x22e702, + 0x16542, + 0x216543, + 0x213b02, + 0x24a1c6, + 0x378742, + 0x47402, + 0x201442, + 0x3c7c8e, + 0x21f60e, + 0x3d1b47, + 0x219cc2, + 0x222bc3, + 0x343b43, + 0x20bac2, 0x2005c2, - 0xe703, - 0x23690f, - 0x241882, - 0x2c3587, - 0x2ec3c7, - 0x2de787, - 0x2e2b4c, - 0x2f024c, - 0x21f844, - 0x39334a, - 0x216802, - 0x206902, - 0x2cac84, + 0x6a7c3, + 0x23ee8f, + 0x21ee02, + 0x2eae47, + 0x2e2587, + 0x2e61c7, + 0x2f0e4c, + 0x2f2e0c, + 0x258884, + 0x28c28a, + 0x21f542, + 0x207bc2, + 0x2cf304, 0x200702, - 0x2c23c2, - 0x2f0484, - 0x214882, - 0x202702, - 0x1e1c3, - 0x29a3c7, - 0x30eac5, - 0x204202, - 0x236404, - 0x393b42, - 0x2edd48, - 0x217fc3, - 0x37b588, - 0x203242, - 0x21fa05, - 0x39da86, - 0x23e083, - 0x204fc2, - 0x2fc207, - 0x1b02, - 0x34bbc5, - 0x3dce85, - 0x20b502, - 0x206c82, - 0x34754a, - 0x28de4a, - 0x23cac2, - 0x2a39c4, + 0x2d8882, + 0x2f3044, + 0x21ab82, + 0x209d42, + 0x1b283, + 0x2a3787, + 0x288345, + 0x2205c2, + 0x319f04, + 0x30f082, + 0x2ef548, + 0x2296c3, + 0x3773c8, + 0x204d82, + 0x258a45, + 0x39b086, + 0x20cb83, + 0x2059c2, + 0x300947, + 0x4642, + 0x2504c5, + 0x203505, + 0x201782, + 0x207f02, + 0x3cfd8a, + 0x27c68a, + 0x279c42, + 0x2a94c4, 0x200f02, - 0x21dd88, - 0x207ac2, - 0x31c248, - 0x1501, - 0x316b47, - 0x3175c9, - 0x2bb102, - 0x31d505, - 0x36ed45, - 0x212acb, - 0x32c04c, - 0x22c488, - 0x331088, - 0x226642, - 0x2af242, + 0x271148, + 0x20e002, + 0x2b4bc8, + 0x17c1, + 0x316887, + 0x3174c9, + 0x203582, + 0x31c385, + 0x372b05, + 0x3d088b, + 0x3d6c4c, + 0x237288, + 0x332588, + 0x229782, + 0x259342, 0x2000c2, - 0xae888, - 0x212402, - 0x22ea43, + 0x793c8, + 0x216542, + 0x216543, 0x200382, - 0x203182, - 0x5803, + 0x204cc2, + 0xd903, 0x2003c2, - 0x23e083, - 0x208502, + 0x20cb83, + 0x202b02, 0x2000c2, - 0x146bc5, - 0x81a12402, - 0x108f04, - 0x37e05, - 0x82a66a83, - 0x21e1c3, - 0x20b982, - 0x217fc3, - 0x3d6203, - 0x82e3e083, - 0x2f8e43, - 0x27a906, - 0x1608503, - 0x146bc5, - 0x14a88b, - 0xae888, - 0x81f64008, - 0x68f47, - 0x822c6aca, - 0x74d87, - 0x1b5a05, - 0x82600f89, - 0x2c10d, - 0x3fcc2, - 0x11bb42, + 0x146c05, + 0x8d616542, + 0x10b384, + 0x405c5, + 0x8e743b43, + 0x21b283, + 0x201582, + 0x2296c3, + 0x3e8603, + 0x8ea0cb83, + 0x2faf43, + 0x2dc2c6, + 0xf57c5, + 0x1602b03, + 0x146c05, + 0x148d8b, + 0x793c8, + 0x8dbb6d08, + 0x6be87, + 0x8deca7ca, + 0x791c7, + 0x10f7c5, + 0x8e200f89, + 0x2f20d, + 0x430c2, + 0x11b842, 0xe01, - 0x107784, - 0xb018a, - 0x8dc87, - 0x10bb84, - 0x3ca03, - 0x3ca04, - 0x83603d82, - 0x83a00ac2, - 0x83e03502, - 0x84202e42, - 0x846074c2, - 0x84a0cf02, - 0x178d87, - 0x84e12402, - 0x85211d02, - 0x8561c782, - 0x85a0f982, - 0x2168c3, - 0x1ff44, - 0x28c543, - 0x85e12882, - 0x5a388, - 0x86207c82, - 0x4e007, - 0x1b77c7, - 0x86600042, - 0x86a00d82, - 0x86e00182, - 0x87209582, - 0x8760f782, - 0x87a005c2, - 0xfdd45, - 0x24dc03, - 0x3612c4, - 0x87e00702, - 0x8820a342, - 0x88601582, - 0x8d64b, - 0x88a00c42, - 0x89206a02, - 0x8960b982, - 0x89a04482, - 0x89e15782, - 0x8a200bc2, - 0x8a60a942, - 0x8aa720c2, - 0x8ae16102, - 0x8b201602, - 0x8b603182, - 0x8ba37282, - 0x8be05402, - 0x8c209ec2, - 0x1583c4, - 0x3169c3, - 0x8c634e42, - 0x8ca0f442, - 0x8ce03742, - 0x8d2006c2, - 0x8d6003c2, - 0x8da00a82, - 0xf8908, - 0x1b2007, - 0x8de16982, - 0x8e205302, - 0x8e608502, - 0x8ea0a1c2, - 0x1b800c, - 0x8ee03d02, - 0x8f224e42, - 0x8f601942, - 0x8fa034c2, - 0x8fe0e482, - 0x90203b02, - 0x90607d02, - 0x90a16382, - 0x90e7bcc2, - 0x9127c2c2, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x88f433c3, - 0x2220c3, - 0x3c7a04, - 0x266806, - 0x307183, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x26e9c9, - 0x20cdc2, - 0x3b3843, - 0x2c9343, - 0x260045, - 0x2033c3, - 0x3433c3, - 0x2220c3, - 0x2b8a83, - 0x20de03, - 0x3679c9, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x20cdc2, - 0x20cdc2, - 0x3433c3, - 0x2220c3, - 0x91a2ea43, - 0x233fc3, - 0x213f83, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, - 0xae888, - 0x212402, - 0x22ea43, - 0x217fc3, - 0x23e083, - 0x6e842, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x924f6e82, - 0x23cb03, - 0x217fc3, - 0x5803, - 0x23e083, + 0xe91c4, + 0xb530a, + 0x7c4c7, + 0x30044, + 0x30083, + 0x30084, + 0x8f201f02, + 0x8f600ac2, + 0x8fa03b42, + 0x8fe030c2, + 0x90208742, + 0x90604182, + 0xb46c7, + 0x90a16542, + 0x90e19d82, + 0x9121d802, + 0x91603242, + 0x21f603, + 0x2a2c4, + 0x91aac1c8, + 0x213643, + 0x91e18902, + 0x68508, + 0x92204982, + 0x63187, + 0x1b88c7, + 0x92600042, + 0x92a00d82, + 0x92e00182, + 0x932042c2, + 0x93605502, + 0x93a005c2, + 0x11f405, + 0x20af03, + 0x2f44c4, + 0x93e00702, + 0x94211b82, + 0x94605542, + 0x92b8b, + 0x94a00c42, + 0x95256e02, + 0x95601582, + 0x95a02042, + 0x98e48, + 0x95e28882, + 0x96200bc2, + 0x96603742, + 0x96a77782, + 0x96e06c02, + 0x97205782, + 0x97604cc2, + 0x97a18f02, + 0x97e0d502, + 0x9820f502, + 0xac8c4, + 0x332ec3, + 0x9863d1c2, + 0x98a0bbc2, + 0x98e0cfc2, + 0x992006c2, + 0x996003c2, + 0x99a00a82, + 0xfa6c8, + 0x9c347, + 0x99e037c2, + 0x9a202a82, + 0x9a602b02, + 0x9aa0a0c2, + 0x176a8c, + 0x9ae2bdc2, + 0x9b22ce82, + 0x9b602e02, + 0x9ba05002, + 0x9be08e42, + 0x9c211842, + 0x9c6089c2, + 0x9ca13342, + 0x9ce81202, + 0x9d281742, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x207c3, + 0xd2443, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x94f4b203, + 0x2207c3, + 0x3c25c4, + 0x3d8906, + 0x309a43, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x35c349, + 0x204042, + 0x271c43, + 0x2cda43, + 0x3b6945, + 0x204f03, + 0x34b203, + 0x2207c3, + 0x2e69c3, + 0x22e683, + 0x3ca009, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x34b203, + 0x2207c3, + 0x204042, + 0x204042, + 0x34b203, + 0x2207c3, + 0x9da16543, + 0x222bc3, + 0x39d603, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, + 0x793c8, + 0x216542, + 0x216543, + 0x2296c3, + 0x20cb83, + 0x145842, + 0x216543, + 0x222bc3, + 0x343b43, + 0x9e51d0c2, + 0x216443, + 0x2296c3, + 0xd903, + 0x20cb83, 0x1381, - 0x241ec4, - 0x212402, - 0x22ea43, + 0x21d684, + 0x216542, + 0x216543, 0x200983, - 0x233fc3, - 0x24d704, - 0x280203, - 0x266a83, - 0x20e704, - 0x2191c3, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x235403, - 0x37b845, - 0x20de03, - 0x20aa43, + 0x222bc3, + 0x256d44, + 0x2f5503, + 0x343b43, + 0x2b1b84, + 0x243543, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x24c343, + 0x355b45, + 0x22e683, + 0x201643, 0x882, - 0x5803, - 0x212402, - 0x22ea43, - 0x3433c3, - 0x217fc3, - 0x23e083, + 0xd903, + 0x216542, + 0x216543, + 0x34b203, + 0x2296c3, + 0x20cb83, 0x2000c2, - 0x24ac43, - 0xae888, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x231346, - 0x20e704, - 0x2191c3, - 0x21e484, - 0x217fc3, - 0x23e083, - 0x216983, - 0x4cc4, - 0x161e82, - 0x22ea43, - 0x22383, - 0x233fc3, - 0xb982, - 0x217fc3, - 0x23e083, - 0x30242, - 0x2a82, - 0x1481bc7, - 0x8cc7, - 0x22ea43, - 0x36fc6, - 0x233fc3, - 0x266a83, - 0xf07c6, - 0x217fc3, - 0x23e083, - 0x32d948, - 0x330ec9, - 0x341dc9, - 0x34cfc8, - 0x3a01c8, - 0x3a01c9, - 0x32748a, - 0x3657ca, - 0x399a4a, - 0x3a124a, - 0x3cf9ca, - 0x3db28b, - 0x26604d, - 0x230b0f, - 0x240950, - 0x3692cd, - 0x38384c, - 0x3a0f8b, - 0x74f88, - 0xf6cc8, - 0xbe1c5, - 0x148e8c7, - 0xd9785, + 0x253c43, + 0x793c8, + 0x216543, + 0x222bc3, + 0x343b43, + 0x239c86, + 0x2b1b84, + 0x243543, + 0x21b544, + 0x2296c3, + 0x20cb83, + 0x21f6c3, + 0xe804, + 0x2e702, + 0x216543, + 0x20a83, + 0x222bc3, + 0x1582, + 0x2296c3, + 0x20cb83, + 0x10e104, + 0x6ff44, + 0x2a02, + 0x148bb07, + 0x125887, + 0x216543, + 0x32f46, + 0x222bc3, + 0x343b43, + 0xf1386, + 0x2296c3, + 0x20cb83, + 0x32f188, + 0x3323c9, + 0x341cc9, + 0x34b688, + 0x39d208, + 0x39d209, + 0x325d0a, + 0x36084a, + 0x3979ca, + 0x39ecca, + 0x3d368a, + 0x3dfecb, + 0x2fc28d, + 0x2fcf4f, + 0x247450, + 0x3621cd, + 0x3813cc, + 0x39ea0b, + 0x16108, + 0x13ec08, + 0x18a0c5, + 0x190209, + 0x1495c87, + 0xde645, 0x2000c2, - 0x355d45, - 0x21e183, - 0x95a12402, - 0x233fc3, - 0x266a83, - 0x232b87, - 0x21df43, - 0x23cb03, - 0x217fc3, - 0x24dfc3, - 0x213cc3, - 0x210ec3, - 0x205803, - 0x23e083, - 0x2509c6, - 0x22dc42, - 0x20aa43, - 0xae888, + 0x2f67c5, + 0x209d03, + 0xa1e16542, + 0x222bc3, + 0x343b43, + 0x380b87, + 0x24c243, + 0x216443, + 0x2296c3, + 0x257743, + 0x20b243, + 0x20f1c3, + 0x20d903, + 0x20cb83, + 0x259186, + 0x213402, + 0x201643, + 0x793c8, 0x2000c2, - 0x24ac43, - 0x212402, - 0x22ea43, - 0x233fc3, - 0x266a83, - 0x20e704, - 0x23cb03, - 0x217fc3, - 0x23e083, - 0x208503, - 0x8cc7, - 0x10382, - 0x2144, - 0x1517446, + 0x253c43, + 0x216542, + 0x216543, + 0x222bc3, + 0x343b43, + 0x2b1b84, + 0x216443, + 0x2296c3, + 0x20cb83, + 0x202b03, + 0x125887, + 0x14182, + 0x10e684, + 0x1534746, 0x2000c2, - 0x212402, - 0x266a83, - 0x23cb03, - 0x23e083, + 0x216542, + 0x343b43, + 0x216443, + 0x20cb83, } // children is the list of nodes' children, the parent's wildcard bit and the @@ -9614,32 +9781,33 @@ var children = [...]uint32{ 0x40000000, 0x50000000, 0x60000000, - 0x17d05ee, - 0x17d45f4, - 0x17d85f5, - 0x17fc5f6, - 0x19545ff, - 0x196c655, - 0x198065b, - 0x1998660, - 0x19b8666, - 0x19d866e, - 0x19f0676, - 0x1a1067c, - 0x1a14684, - 0x1a3c685, - 0x1a4068f, - 0x1a58690, - 0x1a5c696, - 0x1a60697, - 0x1aa0698, - 0x1aa46a8, - 0x1aa86a9, - 0x21aac6aa, - 0x61ab46ab, - 0x21abc6ad, - 0x1b046af, - 0x1b086c1, + 0x17bc5e9, + 0x17c05ef, + 0x17c45f0, + 0x17e85f1, + 0x19405fa, + 0x1958650, + 0x196c656, + 0x198465b, + 0x19a4661, + 0x19c8669, + 0x19e0672, + 0x1a08678, + 0x1a0c682, + 0x1a34683, + 0x1a3868d, + 0x1a5068e, + 0x1a54694, + 0x1a58695, + 0x1a98696, + 0x1a9c6a6, + 0x1aa06a7, + 0x21aa46a8, + 0x61aac6a9, + 0x21ab46ab, + 0x1afc6ad, + 0x1b046bf, + 0x21b086c1, 0x1b2c6c2, 0x1b306cb, 0x1b446cc, @@ -9647,573 +9815,621 @@ var children = [...]uint32{ 0x1b686d2, 0x1b986da, 0x1bb46e6, - 0x1bdc6ed, - 0x1bec6f7, - 0x1bf06fb, - 0x1c886fc, - 0x1c9c722, - 0x1cb0727, - 0x1ce872c, - 0x1cf873a, - 0x1d0c73e, - 0x1d24743, - 0x1dc8749, - 0x1ffc772, - 0x20007ff, - 0x206c800, - 0x20d881b, - 0x20f0836, - 0x210483c, - 0x2108841, - 0x2110842, + 0x1bbc6ed, + 0x1be46ef, + 0x1bf86f9, + 0x21bfc6fe, + 0x1c006ff, + 0x1c98700, + 0x1cac726, + 0x1cc072b, + 0x1cfc730, + 0x1d0c73f, + 0x1d20743, + 0x1d38748, + 0x1ddc74e, + 0x2010777, + 0x2018804, + 0x2201c806, + 0x22020807, + 0x208c808, + 0x20f8823, + 0x211083e, 0x2124844, 0x2128849, - 0x214884a, - 0x2198852, - 0x219c866, - 0x221a0867, - 0x21c0868, + 0x213084a, + 0x214884c, + 0x214c852, + 0x2170853, + 0x21c085c, 0x21c4870, - 0x21c8871, - 0x21f0872, - 0x621f487c, - 0x223887d, - 0x223c88e, - 0x6224088f, - 0x225c890, - 0x228c897, - 0x229c8a3, - 0x22ac8a7, - 0x23608ab, - 0x23648d8, - 0x223748d9, - 0x223788dd, - 0x223808de, - 0x23d88e0, - 0x23dc8f6, - 0x23e08f7, - 0x29348f8, - 0x2938a4d, - 0x62940a4e, - 0x229e8a50, - 0x229eca7a, - 0x229f0a7b, - 0x229fca7c, - 0x22a00a7f, - 0x22a0ca80, - 0x22a10a83, - 0x22a14a84, - 0x22a18a85, - 0x22a1ca86, - 0x22a20a87, - 0x22a2ca88, - 0x22a30a8b, - 0x22a3ca8c, - 0x22a40a8f, - 0x22a44a90, - 0x22a48a91, - 0x22a54a92, - 0x22a58a95, - 0x22a64a96, - 0x22a68a99, - 0x22a6ca9a, - 0x22a70a9b, - 0x2a74a9c, - 0x22a78a9d, - 0x22a84a9e, - 0x22a88aa1, - 0x2a8caa2, - 0x2a94aa3, - 0x62aa0aa5, - 0x2ae4aa8, - 0x22b04ab9, + 0x221c8871, + 0x21e8872, + 0x21ec87a, + 0x21f087b, + 0x221c87c, + 0x62220887, + 0x22228888, + 0x2222c88a, + 0x227088b, + 0x227489c, + 0x6227889d, + 0x229489e, + 0x22e88a5, + 0x222ec8ba, + 0x222f08bb, + 0x222f88bc, + 0x222fc8be, + 0x223008bf, + 0x223048c0, + 0x230c8c1, + 0x23108c3, + 0x2231c8c4, + 0x223248c7, + 0x23348c9, + 0x23448cd, + 0x23f88d1, + 0x23fc8fe, + 0x2240c8ff, + 0x22410903, + 0x22418904, + 0x2470906, + 0x247491c, + 0x247891d, + 0x29ec91e, + 0x29f0a7b, + 0x22a98a7c, + 0x22a9caa6, + 0x22aa0aa7, + 0x22aacaa8, + 0x22ab0aab, + 0x22abcaac, + 0x22ac0aaf, + 0x22ac4ab0, + 0x22ac8ab1, + 0x22accab2, + 0x22ad0ab3, + 0x22adcab4, + 0x22ae0ab7, + 0x22aecab8, + 0x22af0abb, + 0x22af4abc, + 0x22af8abd, + 0x22b04abe, 0x22b08ac1, - 0x22b0cac2, - 0x22b10ac3, - 0x22b14ac4, - 0x22b1cac5, + 0x22b14ac2, + 0x22b18ac5, + 0x22b1cac6, 0x22b20ac7, 0x2b24ac8, - 0x22b44ac9, - 0x22b48ad1, - 0x22b4cad2, - 0x22b50ad3, - 0x22b54ad4, - 0x22b58ad5, - 0x2b60ad6, - 0x2b68ad8, - 0x2b6cada, - 0x2b88adb, - 0x2ba0ae2, + 0x22b28ac9, + 0x22b34aca, + 0x22b38acd, + 0x2b3cace, + 0x2b44acf, + 0x22b50ad1, + 0x62b5cad4, + 0x2ba0ad7, 0x2ba4ae8, - 0x2bb4ae9, - 0x2bc0aed, - 0x2bf4af0, - 0x2bfcafd, - 0x22c00aff, - 0x2c18b00, - 0x22c20b06, + 0x22bc4ae9, + 0x22bc8af1, + 0x22bccaf2, + 0x22bd4af3, + 0x22bdcaf5, + 0x22be0af7, + 0x22be4af8, + 0x22becaf9, + 0x22bf0afb, + 0x22bf4afc, + 0x2bf8afd, + 0x22c18afe, + 0x22c1cb06, + 0x22c20b07, 0x22c24b08, - 0x22c2cb09, - 0x2d28b0b, - 0x22d2cb4a, - 0x2d34b4b, - 0x2d38b4d, - 0x22d3cb4e, - 0x2d40b4f, - 0x2d68b50, - 0x2d6cb5a, - 0x2d70b5b, - 0x2d88b5c, - 0x2d9cb62, - 0x2dc4b67, - 0x2de4b71, - 0x2de8b79, - 0x62decb7a, - 0x2e20b7b, + 0x22c28b09, + 0x22c34b0a, + 0x22c38b0d, + 0x2c3cb0e, + 0x2c44b0f, + 0x2c4cb11, + 0x2c50b13, + 0x2c6cb14, + 0x2c84b1b, + 0x2c88b21, + 0x2c98b22, + 0x2ca4b26, + 0x2cd8b29, + 0x2ce0b36, + 0x22ce4b38, + 0x2cfcb39, + 0x22d04b3f, + 0x22d08b41, + 0x22d10b42, + 0x2e0cb44, + 0x22e10b83, + 0x2e18b84, + 0x2e1cb86, + 0x22e20b87, 0x2e24b88, - 0x22e28b89, - 0x2e2cb8a, - 0x2e54b8b, + 0x2e54b89, 0x2e58b95, - 0x2e7cb96, - 0x2e80b9f, - 0x2e94ba0, - 0x2e98ba5, - 0x2e9cba6, - 0x2ebcba7, - 0x2ed8baf, + 0x2e5cb96, + 0x2e74b97, + 0x2e88b9d, + 0x2eb0ba2, + 0x2ed8bac, 0x2edcbb6, - 0x22ee0bb7, - 0x2ee4bb8, - 0x2ee8bb9, - 0x2eecbba, - 0x2ef4bbb, - 0x2f08bbd, - 0x2f0cbc2, - 0x2f10bc3, - 0x2f38bc4, - 0x2f3cbce, - 0x2fb0bcf, - 0x2fb4bec, - 0x2fb8bed, - 0x2fd8bee, - 0x2ff0bf6, + 0x62ee0bb7, + 0x2f14bb8, + 0x2f18bc5, + 0x22f1cbc6, + 0x2f20bc7, + 0x2f48bc8, + 0x2f4cbd2, + 0x2f70bd3, + 0x2f74bdc, + 0x2f88bdd, + 0x2f8cbe2, + 0x2f90be3, + 0x2fb0be4, + 0x2fd4bec, + 0x22fd8bf5, + 0x22fdcbf6, + 0x2fe0bf7, + 0x22fe4bf8, + 0x2fe8bf9, + 0x2fecbfa, + 0x2ff0bfb, 0x2ff4bfc, - 0x3008bfd, - 0x3020c02, - 0x3040c08, - 0x3058c10, - 0x305cc16, - 0x3078c17, - 0x3094c1e, - 0x3098c25, - 0x30c4c26, - 0x30e4c31, - 0x3104c39, - 0x3168c41, - 0x3188c5a, - 0x31a8c62, - 0x31acc6a, - 0x31c4c6b, - 0x3208c71, - 0x3288c82, - 0x32b8ca2, - 0x32bccae, - 0x32c8caf, - 0x32e8cb2, - 0x32eccba, - 0x3310cbb, - 0x3318cc4, - 0x3354cc6, - 0x33a8cd5, - 0x33accea, - 0x33b0ceb, - 0x3494cec, - 0x2349cd25, - 0x234a0d27, - 0x234a4d28, - 0x34a8d29, - 0x234acd2a, - 0x234b0d2b, - 0x34b4d2c, - 0x234b8d2d, - 0x234c8d2e, - 0x234ccd32, - 0x234d0d33, - 0x234d4d34, - 0x234d8d35, - 0x234dcd36, - 0x34f4d37, - 0x3518d3d, - 0x3538d46, - 0x3ba4d4e, - 0x3bb0ee9, - 0x3bd0eec, - 0x3d90ef4, - 0x3e60f64, - 0x3ed0f98, - 0x3f28fb4, - 0x4010fca, - 0x4069004, - 0x40a501a, - 0x41a1029, - 0x426d068, - 0x430509b, - 0x43950c1, - 0x43f90e5, - 0x46310fe, - 0x46e918c, - 0x47b51ba, - 0x48011ed, - 0x4889200, - 0x48c5222, - 0x4915231, - 0x498d245, - 0x64991263, - 0x64995264, - 0x64999265, - 0x4a15266, - 0x4a71285, - 0x4aed29c, - 0x4b652bb, - 0x4be52d9, - 0x4c512f9, - 0x4d7d314, - 0x4dd535f, - 0x64dd9375, - 0x4e71376, - 0x4e7939c, - 0x24e7d39e, - 0x4f0539f, - 0x4f513c1, - 0x4fb93d4, - 0x50613ee, - 0x5129418, - 0x519144a, - 0x52a5464, - 0x652a94a9, - 0x652ad4aa, - 0x53094ab, - 0x53654c2, - 0x53f54d9, - 0x54714fd, - 0x54b551c, - 0x559952d, - 0x55cd566, - 0x562d573, - 0x56a158b, - 0x57295a8, - 0x57695ca, - 0x57d95da, - 0x657dd5f6, - 0x58055f7, - 0x5809601, - 0x5839602, - 0x585560e, - 0x5899615, - 0x58a9626, - 0x58c162a, - 0x5939630, - 0x594164e, - 0x595d650, - 0x5971657, - 0x598d65c, - 0x59b9663, - 0x59bd66e, - 0x59c566f, - 0x59d9671, - 0x59f9676, - 0x5a0967e, - 0x5a15682, - 0x5a51685, - 0x5a59694, - 0x5a6d696, - 0x5a9569b, - 0x5aa16a5, - 0x5aa96a8, - 0x5ad16aa, - 0x5af56b4, - 0x5b0d6bd, - 0x5b116c3, - 0x5b196c4, - 0x5b2d6c6, - 0x5bd56cb, - 0x5bd96f5, + 0x3010bfd, + 0x23014c04, + 0x2301cc05, + 0x3020c07, + 0x3048c08, + 0x305cc12, + 0x30d0c17, + 0x30dcc34, + 0x30e0c37, + 0x3100c38, + 0x3118c40, + 0x311cc46, + 0x3130c47, + 0x3148c4c, + 0x3168c52, + 0x3180c5a, + 0x3188c60, + 0x31a4c62, + 0x31c0c69, + 0x31c4c70, + 0x31f0c71, + 0x3210c7c, + 0x3230c84, + 0x3298c8c, + 0x32b8ca6, + 0x32d8cae, + 0x32dccb6, + 0x32f4cb7, + 0x3338cbd, + 0x33b8cce, + 0x33f4cee, + 0x33f8cfd, + 0x3404cfe, + 0x3424d01, + 0x3428d09, + 0x344cd0a, + 0x3454d13, + 0x3494d15, + 0x34e8d25, + 0x34ecd3a, + 0x34f0d3b, + 0x35e4d3c, + 0x235ecd79, + 0x235f0d7b, + 0x235f4d7c, + 0x35f8d7d, + 0x235fcd7e, + 0x23600d7f, + 0x23604d80, + 0x3608d81, + 0x2360cd82, + 0x2361cd83, + 0x23620d87, + 0x23624d88, + 0x23628d89, + 0x2362cd8a, + 0x23638d8b, + 0x2363cd8e, + 0x3654d8f, + 0x3678d95, + 0x3698d9e, + 0x3d0cda6, + 0x23d10f43, + 0x23d14f44, + 0x23d18f45, + 0x23d1cf46, + 0x3d2cf47, + 0x3d4cf4b, + 0x3f0cf53, + 0x3fdcfc3, + 0x404cff7, + 0x40a5013, + 0x418d029, + 0x41e5063, + 0x4221079, + 0x431d088, + 0x43e90c7, + 0x44810fa, + 0x4511120, + 0x4575144, + 0x47ad15d, + 0x48651eb, + 0x4931219, + 0x497d24c, + 0x4a0525f, + 0x4a41281, + 0x4a91290, + 0x4b092a4, + 0x64b0d2c2, + 0x64b112c3, + 0x64b152c4, + 0x4b912c5, + 0x4bed2e4, + 0x4c692fb, + 0x4ce131a, + 0x4d61338, + 0x4dcd358, + 0x4ef9373, + 0x4f513be, + 0x64f553d4, + 0x4fed3d5, + 0x4ff53fb, + 0x24ff93fd, + 0x50813fe, + 0x50cd420, + 0x5135433, + 0x51dd44d, + 0x52a5477, + 0x530d4a9, + 0x54214c3, + 0x65425508, + 0x65429509, + 0x548550a, + 0x54e1521, + 0x5571538, + 0x55ed55c, + 0x563157b, + 0x571558c, + 0x57495c5, + 0x57a95d2, + 0x581d5ea, + 0x58a5607, + 0x58e5629, + 0x5955639, + 0x65959655, + 0x5981656, + 0x5985660, + 0x59b5661, + 0x59d166d, + 0x5a15674, + 0x5a25685, + 0x5a3d689, + 0x5ab568f, + 0x5abd6ad, + 0x5ad96af, + 0x5aed6b6, + 0x5b116bb, + 0x25b156c4, + 0x5b416c5, + 0x5b456d0, + 0x5b4d6d1, + 0x5b616d3, + 0x5b816d8, + 0x5b916e0, + 0x5b9d6e4, + 0x5bd96e7, 0x5bdd6f6, - 0x5be16f7, - 0x5c056f8, - 0x5c29701, - 0x5c4570a, - 0x5c59711, - 0x5c6d716, - 0x5c7571b, - 0x5c7d71d, - 0x5c8571f, - 0x5c9d721, - 0x5cad727, - 0x5cb172b, - 0x5ccd72c, - 0x6555733, - 0x658d955, - 0x65b9963, - 0x65d596e, - 0x65f5975, - 0x661597d, - 0x6659985, - 0x6661996, - 0x26665998, - 0x26669999, - 0x667199a, - 0x687199c, - 0x26875a1c, - 0x6879a1d, - 0x2687da1e, - 0x2688da1f, - 0x26895a23, - 0x268a1a25, - 0x68a5a28, - 0x268a9a29, - 0x268b1a2a, - 0x68b9a2c, - 0x68c9a2e, - 0x68f1a32, - 0x692da3c, - 0x6931a4b, - 0x6969a4c, - 0x698da5a, - 0x74e5a63, - 0x74e9d39, - 0x74edd3a, - 0x274f1d3b, - 0x74f5d3c, - 0x274f9d3d, - 0x74fdd3e, - 0x27509d3f, - 0x750dd42, - 0x7511d43, - 0x27515d44, - 0x7519d45, - 0x27521d46, - 0x7525d48, - 0x7529d49, - 0x27539d4a, - 0x753dd4e, - 0x7541d4f, - 0x7545d50, - 0x7549d51, - 0x2754dd52, - 0x7551d53, - 0x7555d54, - 0x7559d55, - 0x755dd56, - 0x27565d57, - 0x7569d59, - 0x756dd5a, - 0x7571d5b, - 0x27575d5c, - 0x7579d5d, - 0x27581d5e, - 0x27585d60, - 0x75a1d61, - 0x75b9d68, - 0x75fdd6e, - 0x7601d7f, - 0x7625d80, - 0x7631d89, - 0x7635d8c, - 0x7639d8d, - 0x77fdd8e, - 0x27801dff, - 0x27809e00, - 0x2780de02, - 0x27811e03, - 0x7819e04, - 0x78f5e06, - 0x27901e3d, - 0x27905e40, - 0x27909e41, - 0x2790de42, - 0x7911e43, - 0x793de44, - 0x7949e4f, - 0x794de52, - 0x7971e53, - 0x797de5c, - 0x799de5f, - 0x79a1e67, - 0x79d9e68, - 0x7c89e76, - 0x7d45f22, - 0x7d49f51, - 0x7d4df52, - 0x7d61f53, - 0x7d65f58, - 0x7d99f59, - 0x7dd1f66, - 0x27dd5f74, - 0x7df1f75, - 0x7e19f7c, - 0x7e1df86, - 0x7e41f87, - 0x7e5df90, - 0x7e85f97, - 0x7e95fa1, - 0x7e99fa5, - 0x7e9dfa6, - 0x7ed5fa7, - 0x7ee1fb5, - 0x7f09fb8, - 0x7f95fc2, - 0x27f99fe5, - 0x7f9dfe6, - 0x7fadfe7, - 0x27fb1feb, - 0x7fc1fec, - 0x7fddff0, - 0x7ffdff7, - 0x8001fff, - 0x8016000, - 0x802a005, - 0x802e00a, - 0x803200b, - 0x803600c, - 0x805600d, - 0x80fe015, - 0x810203f, - 0x811e040, - 0x8146047, - 0x28156051, - 0x815a055, - 0x8166056, - 0x8192059, - 0x819a064, - 0x81ae066, - 0x81ce06b, - 0x81ea073, - 0x81fa07a, - 0x821207e, - 0x824a084, - 0x824e092, - 0x8322093, - 0x83260c8, - 0x833a0c9, - 0x83420ce, - 0x835a0d0, - 0x835e0d6, - 0x836a0d7, - 0x83760da, - 0x837a0dd, - 0x83820de, - 0x83860e0, - 0x83aa0e1, - 0x83ea0ea, - 0x83ee0fa, - 0x840e0fb, - 0x845e103, - 0x848e117, - 0x28492123, - 0x849a124, - 0x84f2126, - 0x84f613c, - 0x84fa13d, - 0x84fe13e, - 0x854213f, - 0x8552150, - 0x8592154, - 0x8596164, - 0x85c6165, - 0x870e171, - 0x87361c3, - 0x876e1cd, - 0x87961db, - 0x2879e1e5, - 0x287a21e7, - 0x287a61e8, - 0x87ae1e9, - 0x87ba1eb, - 0x88d61ee, - 0x88e2235, - 0x88ee238, - 0x88fa23b, - 0x890623e, - 0x8912241, - 0x891e244, - 0x892a247, - 0x893624a, - 0x894224d, - 0x894e250, - 0x895a253, - 0x8966256, - 0x8972259, - 0x897a25c, - 0x898625e, - 0x8992261, - 0x899e264, - 0x89aa267, - 0x89b626a, - 0x89c226d, - 0x89ce270, - 0x89da273, - 0x89e6276, - 0x89f2279, - 0x89fe27c, - 0x8a2a27f, - 0x8a3628a, - 0x8a4228d, - 0x8a4e290, - 0x8a5a293, - 0x8a66296, - 0x8a6e299, - 0x8a7a29b, - 0x8a8629e, - 0x8a922a1, - 0x8a9e2a4, - 0x8aaa2a7, - 0x8ab62aa, - 0x8ac22ad, - 0x8ace2b0, - 0x8ada2b3, - 0x8ae62b6, - 0x8af22b9, - 0x8afa2bc, - 0x8b062be, - 0x8b0e2c1, - 0x8b1a2c3, - 0x8b262c6, - 0x8b322c9, - 0x8b3e2cc, - 0x8b4a2cf, + 0x5be56f7, + 0x5bf96f9, + 0x5c216fe, + 0x5c2d708, + 0x5c3570b, + 0x5c5d70d, + 0x5c81717, + 0x5c99720, + 0x5c9d726, + 0x5ca5727, + 0x5cad729, + 0x5cc172b, + 0x5d71730, + 0x5d7575c, + 0x5d7d75d, + 0x5d8175f, + 0x5da5760, + 0x5dc9769, + 0x5de5772, + 0x5df9779, + 0x5e0d77e, + 0x5e15783, + 0x5e1d785, + 0x5e25787, + 0x5e3d789, + 0x5e4d78f, + 0x5e51793, + 0x5e6d794, + 0x66f579b, + 0x672d9bd, + 0x67599cb, + 0x67759d6, + 0x67799dd, + 0x2677d9de, + 0x679d9df, + 0x67bd9e7, + 0x68019ef, + 0x6809a00, + 0x2680da02, + 0x26811a03, + 0x6819a04, + 0x6a35a06, + 0x6a49a8d, + 0x26a4da92, + 0x6a51a93, + 0x6a59a94, + 0x26a5da96, + 0x26a61a97, + 0x26a6da98, + 0x26a7da9b, + 0x26a85a9f, + 0x26a91aa1, + 0x6a95aa4, + 0x26a99aa5, + 0x26ab1aa6, + 0x26ab9aac, + 0x26abdaae, + 0x26ac5aaf, + 0x26ac9ab1, + 0x26acdab2, + 0x26ad5ab3, + 0x6addab5, + 0x6af1ab7, + 0x6b19abc, + 0x6b55ac6, + 0x6b59ad5, + 0x6b91ad6, + 0x6bb5ae4, + 0x770daed, + 0x7711dc3, + 0x7715dc4, + 0x27719dc5, + 0x771ddc6, + 0x27721dc7, + 0x7725dc8, + 0x27731dc9, + 0x7735dcc, + 0x7739dcd, + 0x2773ddce, + 0x7741dcf, + 0x27749dd0, + 0x774ddd2, + 0x7751dd3, + 0x27761dd4, + 0x7765dd8, + 0x7769dd9, + 0x776ddda, + 0x7771ddb, + 0x27775ddc, + 0x7779ddd, + 0x777ddde, + 0x7781ddf, + 0x7785de0, + 0x2778dde1, + 0x7791de3, + 0x7795de4, + 0x7799de5, + 0x2779dde6, + 0x77a1de7, + 0x277a9de8, + 0x277addea, + 0x77c9deb, + 0x77e1df2, + 0x7825df8, + 0x7829e09, + 0x784de0a, + 0x7861e13, + 0x7865e18, + 0x7869e19, + 0x7a2de1a, + 0x27a31e8b, + 0x27a39e8c, + 0x27a3de8e, + 0x27a41e8f, + 0x7a49e90, + 0x7b25e92, + 0x27b31ec9, + 0x27b35ecc, + 0x27b39ecd, + 0x27b3dece, + 0x7b41ecf, + 0x7b6ded0, + 0x7b79edb, + 0x7b7dede, + 0x7ba1edf, + 0x7badee8, + 0x7bcdeeb, + 0x7bd1ef3, + 0x7c09ef4, + 0x7ebdf02, + 0x7f79faf, + 0x7f7dfde, + 0x7f81fdf, + 0x7f95fe0, + 0x7f99fe5, + 0x7fcdfe6, + 0x8005ff3, + 0x2800a001, + 0x8026002, + 0x804e009, + 0x8052013, + 0x8076014, + 0x809201d, + 0x80ba024, + 0x80ca02e, + 0x80ce032, + 0x80d2033, + 0x810e034, + 0x811a043, + 0x8142046, + 0x81de050, + 0x281e2077, + 0x81e6078, + 0x81f6079, + 0x281fa07d, + 0x820a07e, + 0x8226082, + 0x8246089, + 0x824a091, + 0x825e092, + 0x8272097, + 0x827609c, + 0x827a09d, + 0x827e09e, + 0x829e09f, + 0x834a0a7, + 0x834e0d2, + 0x836e0d3, + 0x839a0db, + 0x283aa0e6, + 0x83ae0ea, + 0x83be0eb, + 0x83f60ef, + 0x83fe0fd, + 0x84120ff, + 0x8432104, + 0x844e10c, + 0x845a113, + 0x8472116, + 0x84aa11c, + 0x84ae12a, + 0x858212b, + 0x8586160, + 0x859a161, + 0x85a2166, + 0x85ba168, + 0x85be16e, + 0x85ca16f, + 0x85d6172, + 0x85da175, + 0x85e2176, + 0x85e6178, + 0x860a179, + 0x864a182, + 0x864e192, + 0x866e193, + 0x86c219b, + 0x86f21b0, + 0x286f61bc, + 0x86fe1bd, + 0x87561bf, + 0x875a1d5, + 0x875e1d6, + 0x87621d7, + 0x87a61d8, + 0x87b61e9, + 0x87f61ed, + 0x87fa1fd, + 0x882a1fe, + 0x897620a, + 0x899e25d, + 0x89da267, + 0x8a02276, + 0x28a0a280, + 0x28a0e282, + 0x28a12283, + 0x8a1a284, + 0x8a26286, + 0x8b4a289, 0x8b562d2, 0x8b622d5, 0x8b6e2d8, - 0x8b722db, - 0x8b7e2dc, - 0x8b9a2df, - 0x8b9e2e6, - 0x8bae2e7, - 0x8bd22eb, - 0x8bd62f4, - 0x8c1a2f5, - 0x8c22306, - 0x8c36308, - 0x8c6a30d, - 0x8c8a31a, - 0x8c92322, - 0x8cb6324, - 0x8cce32d, - 0x8ce6333, - 0x8cfe339, - 0x8d1233f, - 0x28d5a344, - 0x8d5e356, - 0x8d8a357, - 0x8d9a362, - 0x8dae366, + 0x8b7a2db, + 0x8b862de, + 0x8b922e1, + 0x8b9e2e4, + 0x8baa2e7, + 0x8bb62ea, + 0x8bc22ed, + 0x28bc62f0, + 0x8bd22f1, + 0x8bde2f4, + 0x8bea2f7, + 0x8bf22fa, + 0x8bfe2fc, + 0x8c0a2ff, + 0x8c16302, + 0x8c22305, + 0x8c2e308, + 0x8c3a30b, + 0x8c4630e, + 0x8c52311, + 0x8c5e314, + 0x8c6a317, + 0x8c7631a, + 0x8ca231d, + 0x8cae328, + 0x8cba32b, + 0x8cc632e, + 0x8cd2331, + 0x8cde334, + 0x8ce6337, + 0x8cf2339, + 0x8cfe33c, + 0x8d0a33f, + 0x8d16342, + 0x8d22345, + 0x8d2e348, + 0x8d3a34b, + 0x8d4634e, + 0x8d52351, + 0x8d5e354, + 0x8d6a357, + 0x8d7235a, + 0x8d7e35c, + 0x8d8635f, + 0x8d92361, + 0x8d9e364, + 0x8daa367, + 0x8db636a, + 0x8dc236d, + 0x8dce370, + 0x8dda373, + 0x8de6376, + 0x8dea379, + 0x8df637a, + 0x8e1237d, + 0x8e16384, + 0x8e26385, + 0x8e4a389, + 0x8e4e392, + 0x8e92393, + 0x8e9a3a4, + 0x8eae3a6, + 0x8ee23ab, + 0x8f023b8, + 0x8f063c0, + 0x8f0e3c1, + 0x8f323c3, + 0x8f4a3cc, + 0x8f623d2, + 0x8f7a3d8, + 0x8f923de, + 0x28fda3e4, + 0x8fde3f6, + 0x900a3f7, + 0x901a402, + 0x902e406, } -// max children 601 (capacity 1023) -// max text offset 30901 (capacity 32767) +// max children 650 (capacity 1023) +// max text offset 31341 (capacity 32767) // max text length 36 (capacity 63) -// max hi 9067 (capacity 16383) -// max lo 9062 (capacity 16383) +// max hi 9227 (capacity 16383) +// max lo 9222 (capacity 16383) diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index c0f9f2d52..b8313e98a 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -204,6 +204,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -561,7 +562,9 @@ ccflags="$@" $2 ~ /^(HDIO|WIN|SMART)_/ || $2 ~ /^CRYPTO_/ || $2 ~ /^TIPC_/ || + $2 !~ "DEVLINK_RELOAD_LIMITS_VALID_MASK" && $2 ~ /^DEVLINK_/ || + $2 ~ /^ETHTOOL_/ || $2 ~ /^LWTUNNEL_IP/ || $2 !~ "WMESGLEN" && $2 ~ /^W[A-Z0-9]+$/ || diff --git a/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/vendor/golang.org/x/sys/unix/ptrace_darwin.go new file mode 100644 index 000000000..fc568b540 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,!ios + +package unix + +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ptrace1(request, pid, addr, data) +} diff --git a/vendor/golang.org/x/sys/unix/ptrace_ios.go b/vendor/golang.org/x/sys/unix/ptrace_ios.go new file mode 100644 index 000000000..183441c9a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ios + +package unix + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + return ENOTSUP +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go index dc0befee3..ee852f1ab 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go @@ -26,7 +26,6 @@ func fdopendir(fd int) (dir uintptr, err error) { func libc_fdopendir_trampoline() -//go:linkname libc_fdopendir libc_fdopendir //go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index b62573890..16f9c226b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -119,13 +119,16 @@ type attrList struct { Forkattr uint32 } -//sysnb pipe() (r int, w int, err error) +//sysnb pipe(p *[2]int32) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL } - p[0], p[1], err = pipe() + var x [2]int32 + err = pipe(&x) + p[0] = int(x[0]) + p[1] = int(x[1]) return } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index 6c1f4ab95..ee065fcf2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -45,6 +45,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 -//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index 0582ae256..7a1f64a7b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -45,6 +45,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 -//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go index c6a9733b4..d30735c5d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -6,7 +6,7 @@ package unix import "syscall" -func ptrace(request int, pid int, addr uintptr, data uintptr) error { +func ptrace1(request int, pid int, addr uintptr, data uintptr) error { return ENOTSUP } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index 253afa4de..9f85fd404 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -45,6 +45,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT //sys Lstat(path string, stat *Stat_t) (err error) -//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go index bbc4f3ea5..7a2d4120f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -75,16 +75,3 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { } return } - -//sysnb pipe2(p *[2]_C_int, flags int) (err error) - -func Pipe2(p []int, flags int) error { - if len(p) != 2 { - return EINVAL - } - var pp [2]_C_int - err := pipe2(&pp, flags) - p[0] = int(pp[0]) - p[1] = int(pp[1]) - return err -} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 84a9e5277..28be1306e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -641,6 +641,36 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil } +// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939 +// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information +// on the purposes of the fields, check the official linux kernel documentation +// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst +type SockaddrCANJ1939 struct { + Ifindex int + Name uint64 + PGN uint32 + Addr uint8 + raw RawSockaddrCAN +} + +func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + n := (*[8]byte)(unsafe.Pointer(&sa.Name)) + for i := 0; i < 8; i++ { + sa.raw.Addr[i] = n[i] + } + p := (*[4]byte)(unsafe.Pointer(&sa.PGN)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i+8] = p[i] + } + sa.raw.Addr[12] = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + // SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. // SockaddrALG enables userspace access to the Linux kernel's cryptography // subsystem. The Type and Name fields specify which type of hash or cipher @@ -952,6 +982,10 @@ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil } +var socketProtocol = func(fd int) (int, error) { + return GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) +} + func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_NETLINK: @@ -1002,7 +1036,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { return sa, nil case AF_INET: - proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + proto, err := socketProtocol(fd) if err != nil { return nil, err } @@ -1028,7 +1062,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { } case AF_INET6: - proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + proto, err := socketProtocol(fd) if err != nil { return nil, err } @@ -1063,7 +1097,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { } return sa, nil case AF_BLUETOOTH: - proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + proto, err := socketProtocol(fd) if err != nil { return nil, err } @@ -1150,20 +1184,43 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { return sa, nil case AF_CAN: - pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa)) - sa := &SockaddrCAN{ - Ifindex: int(pp.Ifindex), + proto, err := socketProtocol(fd) + if err != nil { + return nil, err } - rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) - for i := 0; i < 4; i++ { - rx[i] = pp.Addr[i] - } - tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) - for i := 0; i < 4; i++ { - tx[i] = pp.Addr[i+4] - } - return sa, nil + pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa)) + + switch proto { + case CAN_J1939: + sa := &SockaddrCANJ1939{ + Ifindex: int(pp.Ifindex), + } + name := (*[8]byte)(unsafe.Pointer(&sa.Name)) + for i := 0; i < 8; i++ { + name[i] = pp.Addr[i] + } + pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN)) + for i := 0; i < 4; i++ { + pgn[i] = pp.Addr[i+8] + } + addr := (*[1]byte)(unsafe.Pointer(&sa.Addr)) + addr[0] = pp.Addr[12] + return sa, nil + default: + sa := &SockaddrCAN{ + Ifindex: int(pp.Ifindex), + } + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := 0; i < 4; i++ { + rx[i] = pp.Addr[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := 0; i < 4; i++ { + tx[i] = pp.Addr[i+4] + } + return sa, nil + } } return nil, EAFNOSUPPORT } diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index fee6e9952..184786ed9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -68,6 +68,19 @@ func Pipe(p []int) (err error) { return nil } +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { if sa.Port < 0 || sa.Port > 0xFFFF { return nil, 0, EINVAL diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 4a672f569..103604299 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -8,12 +8,10 @@ package unix import "time" -// TimespecToNsec converts a Timespec value into a number of -// nanoseconds since the Unix epoch. -func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } +// TimespecToNSec returns the time stored in ts as nanoseconds. +func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } -// NsecToTimespec takes a number of nanoseconds since the Unix epoch -// and returns the corresponding Timespec value. +// NsecToTimespec converts a number of nanoseconds into a Timespec. func NsecToTimespec(nsec int64) Timespec { sec := nsec / 1e9 nsec = nsec % 1e9 @@ -42,12 +40,10 @@ func TimeToTimespec(t time.Time) (Timespec, error) { return ts, nil } -// TimevalToNsec converts a Timeval value into a number of nanoseconds -// since the Unix epoch. -func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } +// TimevalToNsec returns the time stored in tv as nanoseconds. +func TimevalToNsec(tv Timeval) int64 { return tv.Nano() } -// NsecToTimeval takes a number of nanoseconds since the Unix epoch -// and returns the corresponding Timeval value. +// NsecToTimeval converts a number of nanoseconds into a Timeval. func NsecToTimeval(nsec int64) Timeval { nsec += 999 // round up to microsecond usec := nsec % 1e9 / 1e3 @@ -59,24 +55,22 @@ func NsecToTimeval(nsec int64) Timeval { return setTimeval(sec, usec) } -// Unix returns ts as the number of seconds and nanoseconds elapsed since the -// Unix epoch. +// Unix returns the time stored in ts as seconds plus nanoseconds. func (ts *Timespec) Unix() (sec int64, nsec int64) { return int64(ts.Sec), int64(ts.Nsec) } -// Unix returns tv as the number of seconds and nanoseconds elapsed since the -// Unix epoch. +// Unix returns the time stored in tv as seconds plus nanoseconds. func (tv *Timeval) Unix() (sec int64, nsec int64) { return int64(tv.Sec), int64(tv.Usec) * 1000 } -// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch. +// Nano returns the time stored in ts as nanoseconds. func (ts *Timespec) Nano() int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } -// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch. +// Nano returns the time stored in tv as nanoseconds. func (tv *Timeval) Nano() int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 } diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index b46110354..b3463a8b5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -65,6 +65,7 @@ const ( ALG_OP_ENCRYPT = 0x1 ALG_SET_AEAD_ASSOCLEN = 0x4 ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_DRBG_ENTROPY = 0x6 ALG_SET_IV = 0x2 ALG_SET_KEY = 0x1 ALG_SET_OP = 0x3 @@ -179,8 +180,10 @@ const ( BPF_F_ANY_ALIGNMENT = 0x2 BPF_F_QUERY_EFFECTIVE = 0x1 BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TEST_RUN_ON_CPU = 0x1 BPF_F_TEST_STATE_FREQ = 0x8 BPF_H = 0x8 BPF_IMM = 0x0 @@ -219,6 +222,7 @@ const ( BPF_NET_OFF = -0x100000 BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_BTF_ID = 0x3 BPF_PSEUDO_CALL = 0x1 BPF_PSEUDO_MAP_FD = 0x1 BPF_PSEUDO_MAP_VALUE = 0x2 @@ -429,10 +433,13 @@ const ( DEBUGFS_MAGIC = 0x64626720 DEVLINK_CMD_ESWITCH_MODE_GET = 0x1d DEVLINK_CMD_ESWITCH_MODE_SET = 0x1e + DEVLINK_FLASH_OVERWRITE_IDENTIFIERS = 0x2 + DEVLINK_FLASH_OVERWRITE_SETTINGS = 0x1 DEVLINK_GENL_MCGRP_CONFIG_NAME = "config" DEVLINK_GENL_NAME = "devlink" DEVLINK_GENL_VERSION = 0x1 DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14 + DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS = 0x3 DEVMEM_MAGIC = 0x454d444d DEVPTS_SUPER_MAGIC = 0x1cd1 DMA_BUF_MAGIC = 0x444d4142 @@ -477,9 +484,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2020-02-27)" + DM_VERSION_EXTRA = "-ioctl (2020-10-01)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x2a + DM_VERSION_MINOR = 0x2b DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -520,6 +527,119 @@ const ( EPOLL_CTL_DEL = 0x2 EPOLL_CTL_MOD = 0x3 EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2 + ESP_V4_FLOW = 0xa + ESP_V6_FLOW = 0xc + ETHER_FLOW = 0x12 + ETHTOOL_BUSINFO_LEN = 0x20 + ETHTOOL_EROMVERS_LEN = 0x20 + ETHTOOL_FEC_AUTO = 0x2 + ETHTOOL_FEC_BASER = 0x10 + ETHTOOL_FEC_LLRS = 0x20 + ETHTOOL_FEC_NONE = 0x1 + ETHTOOL_FEC_OFF = 0x4 + ETHTOOL_FEC_RS = 0x8 + ETHTOOL_FLAG_ALL = 0x7 + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 + ETHTOOL_FLASHDEV = 0x33 + ETHTOOL_FLASH_MAX_FILENAME = 0x80 + ETHTOOL_FWVERS_LEN = 0x20 + ETHTOOL_F_COMPAT = 0x4 + ETHTOOL_F_UNSUPPORTED = 0x1 + ETHTOOL_F_WISH = 0x2 + ETHTOOL_GCHANNELS = 0x3c + ETHTOOL_GCOALESCE = 0xe + ETHTOOL_GDRVINFO = 0x3 + ETHTOOL_GEEE = 0x44 + ETHTOOL_GEEPROM = 0xb + ETHTOOL_GENL_NAME = "ethtool" + ETHTOOL_GENL_VERSION = 0x1 + ETHTOOL_GET_DUMP_DATA = 0x40 + ETHTOOL_GET_DUMP_FLAG = 0x3f + ETHTOOL_GET_TS_INFO = 0x41 + ETHTOOL_GFEATURES = 0x3a + ETHTOOL_GFECPARAM = 0x50 + ETHTOOL_GFLAGS = 0x25 + ETHTOOL_GGRO = 0x2b + ETHTOOL_GGSO = 0x23 + ETHTOOL_GLINK = 0xa + ETHTOOL_GLINKSETTINGS = 0x4c + ETHTOOL_GMODULEEEPROM = 0x43 + ETHTOOL_GMODULEINFO = 0x42 + ETHTOOL_GMSGLVL = 0x7 + ETHTOOL_GPAUSEPARAM = 0x12 + ETHTOOL_GPERMADDR = 0x20 + ETHTOOL_GPFLAGS = 0x27 + ETHTOOL_GPHYSTATS = 0x4a + ETHTOOL_GREGS = 0x4 + ETHTOOL_GRINGPARAM = 0x10 + ETHTOOL_GRSSH = 0x46 + ETHTOOL_GRXCLSRLALL = 0x30 + ETHTOOL_GRXCLSRLCNT = 0x2e + ETHTOOL_GRXCLSRULE = 0x2f + ETHTOOL_GRXCSUM = 0x14 + ETHTOOL_GRXFH = 0x29 + ETHTOOL_GRXFHINDIR = 0x38 + ETHTOOL_GRXNTUPLE = 0x36 + ETHTOOL_GRXRINGS = 0x2d + ETHTOOL_GSET = 0x1 + ETHTOOL_GSG = 0x18 + ETHTOOL_GSSET_INFO = 0x37 + ETHTOOL_GSTATS = 0x1d + ETHTOOL_GSTRINGS = 0x1b + ETHTOOL_GTSO = 0x1e + ETHTOOL_GTUNABLE = 0x48 + ETHTOOL_GTXCSUM = 0x16 + ETHTOOL_GUFO = 0x21 + ETHTOOL_GWOL = 0x5 + ETHTOOL_MCGRP_MONITOR_NAME = "monitor" + ETHTOOL_NWAY_RST = 0x9 + ETHTOOL_PERQUEUE = 0x4b + ETHTOOL_PHYS_ID = 0x1c + ETHTOOL_PHY_EDPD_DFLT_TX_MSECS = 0xffff + ETHTOOL_PHY_EDPD_DISABLE = 0x0 + ETHTOOL_PHY_EDPD_NO_TX = 0xfffe + ETHTOOL_PHY_FAST_LINK_DOWN_OFF = 0xff + ETHTOOL_PHY_FAST_LINK_DOWN_ON = 0x0 + ETHTOOL_PHY_GTUNABLE = 0x4e + ETHTOOL_PHY_STUNABLE = 0x4f + ETHTOOL_RESET = 0x34 + ETHTOOL_RXNTUPLE_ACTION_CLEAR = -0x2 + ETHTOOL_RXNTUPLE_ACTION_DROP = -0x1 + ETHTOOL_RX_FLOW_SPEC_RING = 0xffffffff + ETHTOOL_RX_FLOW_SPEC_RING_VF = 0xff00000000 + ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF = 0x20 + ETHTOOL_SCHANNELS = 0x3d + ETHTOOL_SCOALESCE = 0xf + ETHTOOL_SEEE = 0x45 + ETHTOOL_SEEPROM = 0xc + ETHTOOL_SET_DUMP = 0x3e + ETHTOOL_SFEATURES = 0x3b + ETHTOOL_SFECPARAM = 0x51 + ETHTOOL_SFLAGS = 0x26 + ETHTOOL_SGRO = 0x2c + ETHTOOL_SGSO = 0x24 + ETHTOOL_SLINKSETTINGS = 0x4d + ETHTOOL_SMSGLVL = 0x8 + ETHTOOL_SPAUSEPARAM = 0x13 + ETHTOOL_SPFLAGS = 0x28 + ETHTOOL_SRINGPARAM = 0x11 + ETHTOOL_SRSSH = 0x47 + ETHTOOL_SRXCLSRLDEL = 0x31 + ETHTOOL_SRXCLSRLINS = 0x32 + ETHTOOL_SRXCSUM = 0x15 + ETHTOOL_SRXFH = 0x2a + ETHTOOL_SRXFHINDIR = 0x39 + ETHTOOL_SRXNTUPLE = 0x35 + ETHTOOL_SSET = 0x2 + ETHTOOL_SSG = 0x19 + ETHTOOL_STSO = 0x1f + ETHTOOL_STUNABLE = 0x49 + ETHTOOL_STXCSUM = 0x17 + ETHTOOL_SUFO = 0x22 + ETHTOOL_SWOL = 0x6 + ETHTOOL_TEST = 0x1a ETH_P_1588 = 0x88f7 ETH_P_8021AD = 0x88a8 ETH_P_8021AH = 0x88e7 @@ -989,6 +1109,7 @@ const ( IPV6_DONTFRAG = 0x3e IPV6_DROP_MEMBERSHIP = 0x15 IPV6_DSTOPTS = 0x3b + IPV6_FLOW = 0x11 IPV6_FREEBIND = 0x4e IPV6_HDRINCL = 0x24 IPV6_HOPLIMIT = 0x34 @@ -1038,6 +1159,7 @@ const ( IPV6_TRANSPARENT = 0x4b IPV6_UNICAST_HOPS = 0x10 IPV6_UNICAST_IF = 0x4c + IPV6_USER_FLOW = 0xe IPV6_V6ONLY = 0x1a IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 @@ -1094,6 +1216,7 @@ const ( IP_TTL = 0x2 IP_UNBLOCK_SOURCE = 0x25 IP_UNICAST_IF = 0x32 + IP_USER_FLOW = 0xd IP_XFRM_POLICY = 0x11 ISOFS_SUPER_MAGIC = 0x9660 ISTRIP = 0x20 @@ -1331,6 +1454,7 @@ const ( MS_NOREMOTELOCK = 0x8000000 MS_NOSEC = 0x10000000 MS_NOSUID = 0x2 + MS_NOSYMFOLLOW = 0x100 MS_NOUSER = -0x80000000 MS_POSIXACL = 0x10000 MS_PRIVATE = 0x40000 @@ -1572,7 +1696,7 @@ const ( PERF_MEM_REMOTE_REMOTE = 0x1 PERF_MEM_REMOTE_SHIFT = 0x25 PERF_MEM_SNOOPX_FWD = 0x1 - PERF_MEM_SNOOPX_SHIFT = 0x25 + PERF_MEM_SNOOPX_SHIFT = 0x26 PERF_MEM_SNOOP_HIT = 0x4 PERF_MEM_SNOOP_HITM = 0x10 PERF_MEM_SNOOP_MISS = 0x8 @@ -1672,6 +1796,13 @@ const ( PR_MCE_KILL_SET = 0x1 PR_MPX_DISABLE_MANAGEMENT = 0x2c PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_MTE_TAG_MASK = 0x7fff8 + PR_MTE_TAG_SHIFT = 0x3 + PR_MTE_TCF_ASYNC = 0x4 + PR_MTE_TCF_MASK = 0x6 + PR_MTE_TCF_NONE = 0x0 + PR_MTE_TCF_SHIFT = 0x1 + PR_MTE_TCF_SYNC = 0x2 PR_PAC_APDAKEY = 0x4 PR_PAC_APDBKEY = 0x8 PR_PAC_APGAKEY = 0x10 @@ -2206,7 +2337,7 @@ const ( STATX_ATTR_APPEND = 0x20 STATX_ATTR_AUTOMOUNT = 0x1000 STATX_ATTR_COMPRESSED = 0x4 - STATX_ATTR_DAX = 0x2000 + STATX_ATTR_DAX = 0x200000 STATX_ATTR_ENCRYPTED = 0x800 STATX_ATTR_IMMUTABLE = 0x10 STATX_ATTR_MOUNT_ROOT = 0x2000 @@ -2325,6 +2456,8 @@ const ( TCP_TX_DELAY = 0x25 TCP_ULP = 0x1f TCP_USER_TIMEOUT = 0x12 + TCP_V4_FLOW = 0x1 + TCP_V6_FLOW = 0x5 TCP_WINDOW_CLAMP = 0xa TCP_ZEROCOPY_RECEIVE = 0x23 TFD_TIMER_ABSTIME = 0x1 @@ -2390,6 +2523,7 @@ const ( TIPC_NODE_STATE = 0x0 TIPC_OK = 0x0 TIPC_PUBLISHED = 0x1 + TIPC_REKEYING_NOW = 0xffffffff TIPC_RESERVED_TYPES = 0x40 TIPC_RETDATA = 0x2 TIPC_SERVICE_ADDR = 0x2 @@ -2450,6 +2584,7 @@ const ( VM_SOCKETS_INVALID_VERSION = 0xffffffff VQUIT = 0x1 VT0 = 0x0 + WAKE_MAGIC = 0x20 WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index dd282c08b..336e0b326 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -4,7 +4,7 @@ // +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 82fc93c7b..961507e93 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -4,7 +4,7 @@ // +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index fe7094f27..a65576db7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -4,7 +4,7 @@ // +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 3b6cc5880..cf075caa8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -4,7 +4,7 @@ // +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/_const.go package unix @@ -196,6 +196,8 @@ const ( PPPIOCXFERUNIT = 0x744e PROT_BTI = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTRACE_PEEKMTETAGS = 0x21 + PTRACE_POKEMTETAGS = 0x22 PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 RLIMIT_AS = 0x9 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index ce3d9ae15..efe90deea 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -4,7 +4,7 @@ // +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 7a85215ce..8b0e8911d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -4,7 +4,7 @@ // +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 07d4cc1bd..e9430cd1a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -4,7 +4,7 @@ // +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index d4842ba1c..61e4f5db6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -4,7 +4,7 @@ // +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 941e20dac..973ad9346 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -4,7 +4,7 @@ // +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 63d3bc566..70a7406ba 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -4,7 +4,7 @@ // +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 490bee1ab..b1bf7997c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -4,7 +4,7 @@ // +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 467b8218e..7053d10ba 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -4,7 +4,7 @@ // +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 79fbafbcf..137cfe796 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -4,7 +4,7 @@ // +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/_const.go package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go index e263fbdb8..c8c142c59 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go @@ -24,7 +24,6 @@ func closedir(dir uintptr) (err error) { func libc_closedir_trampoline() -//go:linkname libc_closedir libc_closedir //go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -37,5 +36,4 @@ func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { func libc_readdir_r_trampoline() -//go:linkname libc_readdir_r libc_readdir_r //go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 6eb457983..387718348 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -25,7 +25,6 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { func libc_getgroups_trampoline() -//go:linkname libc_getgroups libc_getgroups //go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -40,7 +39,6 @@ func setgroups(ngid int, gid *_Gid_t) (err error) { func libc_setgroups_trampoline() -//go:linkname libc_setgroups libc_setgroups //go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -56,7 +54,6 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err func libc_wait4_trampoline() -//go:linkname libc_wait4 libc_wait4 //go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -72,7 +69,6 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { func libc_accept_trampoline() -//go:linkname libc_accept libc_accept //go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -87,7 +83,6 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_bind_trampoline() -//go:linkname libc_bind libc_bind //go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -102,7 +97,6 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_connect_trampoline() -//go:linkname libc_connect libc_connect //go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -118,7 +112,6 @@ func socket(domain int, typ int, proto int) (fd int, err error) { func libc_socket_trampoline() -//go:linkname libc_socket libc_socket //go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -133,7 +126,6 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen func libc_getsockopt_trampoline() -//go:linkname libc_getsockopt libc_getsockopt //go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -148,7 +140,6 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) func libc_setsockopt_trampoline() -//go:linkname libc_setsockopt libc_setsockopt //go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -163,7 +154,6 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getpeername_trampoline() -//go:linkname libc_getpeername libc_getpeername //go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -178,7 +168,6 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getsockname_trampoline() -//go:linkname libc_getsockname libc_getsockname //go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -193,7 +182,6 @@ func Shutdown(s int, how int) (err error) { func libc_shutdown_trampoline() -//go:linkname libc_shutdown libc_shutdown //go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -208,7 +196,6 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { func libc_socketpair_trampoline() -//go:linkname libc_socketpair libc_socketpair //go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -230,7 +217,6 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl func libc_recvfrom_trampoline() -//go:linkname libc_recvfrom libc_recvfrom //go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -251,7 +237,6 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( func libc_sendto_trampoline() -//go:linkname libc_sendto libc_sendto //go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -267,7 +252,6 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_recvmsg_trampoline() -//go:linkname libc_recvmsg libc_recvmsg //go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -283,7 +267,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_sendmsg_trampoline() -//go:linkname libc_sendmsg libc_sendmsg //go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -299,7 +282,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne func libc_kevent_trampoline() -//go:linkname libc_kevent libc_kevent //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -319,7 +301,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { func libc_utimes_trampoline() -//go:linkname libc_utimes libc_utimes //go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -334,7 +315,6 @@ func futimes(fd int, timeval *[2]Timeval) (err error) { func libc_futimes_trampoline() -//go:linkname libc_futimes libc_futimes //go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -350,7 +330,6 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { func libc_poll_trampoline() -//go:linkname libc_poll libc_poll //go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -371,7 +350,6 @@ func Madvise(b []byte, behav int) (err error) { func libc_madvise_trampoline() -//go:linkname libc_madvise libc_madvise //go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -392,7 +370,6 @@ func Mlock(b []byte) (err error) { func libc_mlock_trampoline() -//go:linkname libc_mlock libc_mlock //go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -407,7 +384,6 @@ func Mlockall(flags int) (err error) { func libc_mlockall_trampoline() -//go:linkname libc_mlockall libc_mlockall //go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -428,7 +404,6 @@ func Mprotect(b []byte, prot int) (err error) { func libc_mprotect_trampoline() -//go:linkname libc_mprotect libc_mprotect //go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -449,7 +424,6 @@ func Msync(b []byte, flags int) (err error) { func libc_msync_trampoline() -//go:linkname libc_msync libc_msync //go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -470,7 +444,6 @@ func Munlock(b []byte) (err error) { func libc_munlock_trampoline() -//go:linkname libc_munlock libc_munlock //go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -485,15 +458,12 @@ func Munlockall() (err error) { func libc_munlockall_trampoline() -//go:linkname libc_munlockall libc_munlockall //go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -502,7 +472,6 @@ func pipe() (r int, w int, err error) { func libc_pipe_trampoline() -//go:linkname libc_pipe libc_pipe //go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -528,7 +497,6 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o func libc_getxattr_trampoline() -//go:linkname libc_getxattr libc_getxattr //go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -549,7 +517,6 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio func libc_fgetxattr_trampoline() -//go:linkname libc_fgetxattr libc_fgetxattr //go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -574,7 +541,6 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o func libc_setxattr_trampoline() -//go:linkname libc_setxattr libc_setxattr //go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -594,7 +560,6 @@ func fsetxattr(fd int, attr string, data *byte, size int, position uint32, optio func libc_fsetxattr_trampoline() -//go:linkname libc_fsetxattr libc_fsetxattr //go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -619,7 +584,6 @@ func removexattr(path string, attr string, options int) (err error) { func libc_removexattr_trampoline() -//go:linkname libc_removexattr libc_removexattr //go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -639,7 +603,6 @@ func fremovexattr(fd int, attr string, options int) (err error) { func libc_fremovexattr_trampoline() -//go:linkname libc_fremovexattr libc_fremovexattr //go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -660,7 +623,6 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro func libc_listxattr_trampoline() -//go:linkname libc_listxattr libc_listxattr //go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -676,7 +638,6 @@ func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { func libc_flistxattr_trampoline() -//go:linkname libc_flistxattr libc_flistxattr //go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -691,7 +652,6 @@ func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintp func libc_setattrlist_trampoline() -//go:linkname libc_setattrlist libc_setattrlist //go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -707,7 +667,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { func libc_fcntl_trampoline() -//go:linkname libc_fcntl libc_fcntl //go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -722,7 +681,6 @@ func kill(pid int, signum int, posix int) (err error) { func libc_kill_trampoline() -//go:linkname libc_kill libc_kill //go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -737,7 +695,6 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { func libc_ioctl_trampoline() -//go:linkname libc_ioctl libc_ioctl //go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -758,7 +715,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) func libc_sysctl_trampoline() -//go:linkname libc_sysctl libc_sysctl //go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -773,7 +729,6 @@ func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer func libc_sendfile_trampoline() -//go:linkname libc_sendfile libc_sendfile //go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -793,7 +748,6 @@ func Access(path string, mode uint32) (err error) { func libc_access_trampoline() -//go:linkname libc_access libc_access //go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -808,7 +762,6 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { func libc_adjtime_trampoline() -//go:linkname libc_adjtime libc_adjtime //go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -828,7 +781,6 @@ func Chdir(path string) (err error) { func libc_chdir_trampoline() -//go:linkname libc_chdir libc_chdir //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -848,7 +800,6 @@ func Chflags(path string, flags int) (err error) { func libc_chflags_trampoline() -//go:linkname libc_chflags libc_chflags //go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -868,7 +819,6 @@ func Chmod(path string, mode uint32) (err error) { func libc_chmod_trampoline() -//go:linkname libc_chmod libc_chmod //go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -888,7 +838,6 @@ func Chown(path string, uid int, gid int) (err error) { func libc_chown_trampoline() -//go:linkname libc_chown libc_chown //go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -908,7 +857,6 @@ func Chroot(path string) (err error) { func libc_chroot_trampoline() -//go:linkname libc_chroot libc_chroot //go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -923,7 +871,6 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { func libc_clock_gettime_trampoline() -//go:linkname libc_clock_gettime libc_clock_gettime //go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -938,7 +885,6 @@ func Close(fd int) (err error) { func libc_close_trampoline() -//go:linkname libc_close libc_close //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -963,7 +909,6 @@ func Clonefile(src string, dst string, flags int) (err error) { func libc_clonefile_trampoline() -//go:linkname libc_clonefile libc_clonefile //go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -988,7 +933,6 @@ func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) func libc_clonefileat_trampoline() -//go:linkname libc_clonefileat libc_clonefileat //go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1004,7 +948,6 @@ func Dup(fd int) (nfd int, err error) { func libc_dup_trampoline() -//go:linkname libc_dup libc_dup //go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1019,7 +962,6 @@ func Dup2(from int, to int) (err error) { func libc_dup2_trampoline() -//go:linkname libc_dup2 libc_dup2 //go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1044,7 +986,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { func libc_exchangedata_trampoline() -//go:linkname libc_exchangedata libc_exchangedata //go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1056,7 +997,6 @@ func Exit(code int) { func libc_exit_trampoline() -//go:linkname libc_exit libc_exit //go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1076,7 +1016,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_faccessat_trampoline() -//go:linkname libc_faccessat libc_faccessat //go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1091,7 +1030,6 @@ func Fchdir(fd int) (err error) { func libc_fchdir_trampoline() -//go:linkname libc_fchdir libc_fchdir //go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1106,7 +1044,6 @@ func Fchflags(fd int, flags int) (err error) { func libc_fchflags_trampoline() -//go:linkname libc_fchflags libc_fchflags //go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1121,7 +1058,6 @@ func Fchmod(fd int, mode uint32) (err error) { func libc_fchmod_trampoline() -//go:linkname libc_fchmod libc_fchmod //go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1141,7 +1077,6 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_fchmodat_trampoline() -//go:linkname libc_fchmodat libc_fchmodat //go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1156,7 +1091,6 @@ func Fchown(fd int, uid int, gid int) (err error) { func libc_fchown_trampoline() -//go:linkname libc_fchown libc_fchown //go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1176,7 +1110,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { func libc_fchownat_trampoline() -//go:linkname libc_fchownat libc_fchownat //go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1196,7 +1129,6 @@ func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) func libc_fclonefileat_trampoline() -//go:linkname libc_fclonefileat libc_fclonefileat //go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1211,7 +1143,6 @@ func Flock(fd int, how int) (err error) { func libc_flock_trampoline() -//go:linkname libc_flock libc_flock //go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1227,7 +1158,6 @@ func Fpathconf(fd int, name int) (val int, err error) { func libc_fpathconf_trampoline() -//go:linkname libc_fpathconf libc_fpathconf //go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1242,7 +1172,6 @@ func Fsync(fd int) (err error) { func libc_fsync_trampoline() -//go:linkname libc_fsync libc_fsync //go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1257,7 +1186,6 @@ func Ftruncate(fd int, length int64) (err error) { func libc_ftruncate_trampoline() -//go:linkname libc_ftruncate libc_ftruncate //go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1279,7 +1207,6 @@ func Getcwd(buf []byte) (n int, err error) { func libc_getcwd_trampoline() -//go:linkname libc_getcwd libc_getcwd //go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1292,7 +1219,6 @@ func Getdtablesize() (size int) { func libc_getdtablesize_trampoline() -//go:linkname libc_getdtablesize libc_getdtablesize //go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1305,7 +1231,6 @@ func Getegid() (egid int) { func libc_getegid_trampoline() -//go:linkname libc_getegid libc_getegid //go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1318,7 +1243,6 @@ func Geteuid() (uid int) { func libc_geteuid_trampoline() -//go:linkname libc_geteuid libc_geteuid //go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1331,7 +1255,6 @@ func Getgid() (gid int) { func libc_getgid_trampoline() -//go:linkname libc_getgid libc_getgid //go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1347,7 +1270,6 @@ func Getpgid(pid int) (pgid int, err error) { func libc_getpgid_trampoline() -//go:linkname libc_getpgid libc_getpgid //go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1360,7 +1282,6 @@ func Getpgrp() (pgrp int) { func libc_getpgrp_trampoline() -//go:linkname libc_getpgrp libc_getpgrp //go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1373,7 +1294,6 @@ func Getpid() (pid int) { func libc_getpid_trampoline() -//go:linkname libc_getpid libc_getpid //go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1386,7 +1306,6 @@ func Getppid() (ppid int) { func libc_getppid_trampoline() -//go:linkname libc_getppid libc_getppid //go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1402,7 +1321,6 @@ func Getpriority(which int, who int) (prio int, err error) { func libc_getpriority_trampoline() -//go:linkname libc_getpriority libc_getpriority //go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1417,7 +1335,6 @@ func Getrlimit(which int, lim *Rlimit) (err error) { func libc_getrlimit_trampoline() -//go:linkname libc_getrlimit libc_getrlimit //go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1432,7 +1349,6 @@ func Getrusage(who int, rusage *Rusage) (err error) { func libc_getrusage_trampoline() -//go:linkname libc_getrusage libc_getrusage //go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1448,7 +1364,6 @@ func Getsid(pid int) (sid int, err error) { func libc_getsid_trampoline() -//go:linkname libc_getsid libc_getsid //go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1463,7 +1378,6 @@ func Gettimeofday(tp *Timeval) (err error) { func libc_gettimeofday_trampoline() -//go:linkname libc_gettimeofday libc_gettimeofday //go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1476,7 +1390,6 @@ func Getuid() (uid int) { func libc_getuid_trampoline() -//go:linkname libc_getuid libc_getuid //go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1489,7 +1402,6 @@ func Issetugid() (tainted bool) { func libc_issetugid_trampoline() -//go:linkname libc_issetugid libc_issetugid //go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1505,7 +1417,6 @@ func Kqueue() (fd int, err error) { func libc_kqueue_trampoline() -//go:linkname libc_kqueue libc_kqueue //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1525,7 +1436,6 @@ func Lchown(path string, uid int, gid int) (err error) { func libc_lchown_trampoline() -//go:linkname libc_lchown libc_lchown //go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1550,7 +1460,6 @@ func Link(path string, link string) (err error) { func libc_link_trampoline() -//go:linkname libc_link libc_link //go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1575,7 +1484,6 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er func libc_linkat_trampoline() -//go:linkname libc_linkat libc_linkat //go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1590,7 +1498,6 @@ func Listen(s int, backlog int) (err error) { func libc_listen_trampoline() -//go:linkname libc_listen libc_listen //go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1610,7 +1517,6 @@ func Mkdir(path string, mode uint32) (err error) { func libc_mkdir_trampoline() -//go:linkname libc_mkdir libc_mkdir //go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1630,7 +1536,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { func libc_mkdirat_trampoline() -//go:linkname libc_mkdirat libc_mkdirat //go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1650,7 +1555,6 @@ func Mkfifo(path string, mode uint32) (err error) { func libc_mkfifo_trampoline() -//go:linkname libc_mkfifo libc_mkfifo //go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1670,7 +1574,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { func libc_mknod_trampoline() -//go:linkname libc_mknod libc_mknod //go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1691,7 +1594,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { func libc_open_trampoline() -//go:linkname libc_open libc_open //go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1712,7 +1614,6 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { func libc_openat_trampoline() -//go:linkname libc_openat libc_openat //go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1733,7 +1634,6 @@ func Pathconf(path string, name int) (val int, err error) { func libc_pathconf_trampoline() -//go:linkname libc_pathconf libc_pathconf //go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1755,7 +1655,6 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { func libc_pread_trampoline() -//go:linkname libc_pread libc_pread //go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1777,7 +1676,6 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { func libc_pwrite_trampoline() -//go:linkname libc_pwrite libc_pwrite //go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1799,7 +1697,6 @@ func read(fd int, p []byte) (n int, err error) { func libc_read_trampoline() -//go:linkname libc_read libc_read //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1826,7 +1723,6 @@ func Readlink(path string, buf []byte) (n int, err error) { func libc_readlink_trampoline() -//go:linkname libc_readlink libc_readlink //go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1853,7 +1749,6 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { func libc_readlinkat_trampoline() -//go:linkname libc_readlinkat libc_readlinkat //go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1878,7 +1773,6 @@ func Rename(from string, to string) (err error) { func libc_rename_trampoline() -//go:linkname libc_rename libc_rename //go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1903,7 +1797,6 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { func libc_renameat_trampoline() -//go:linkname libc_renameat libc_renameat //go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1923,7 +1816,6 @@ func Revoke(path string) (err error) { func libc_revoke_trampoline() -//go:linkname libc_revoke libc_revoke //go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1943,7 +1835,6 @@ func Rmdir(path string) (err error) { func libc_rmdir_trampoline() -//go:linkname libc_rmdir libc_rmdir //go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1959,7 +1850,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { func libc_lseek_trampoline() -//go:linkname libc_lseek libc_lseek //go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1975,7 +1865,6 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err func libc_select_trampoline() -//go:linkname libc_select libc_select //go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1990,7 +1879,6 @@ func Setegid(egid int) (err error) { func libc_setegid_trampoline() -//go:linkname libc_setegid libc_setegid //go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2005,7 +1893,6 @@ func Seteuid(euid int) (err error) { func libc_seteuid_trampoline() -//go:linkname libc_seteuid libc_seteuid //go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2020,7 +1907,6 @@ func Setgid(gid int) (err error) { func libc_setgid_trampoline() -//go:linkname libc_setgid libc_setgid //go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2040,7 +1926,6 @@ func Setlogin(name string) (err error) { func libc_setlogin_trampoline() -//go:linkname libc_setlogin libc_setlogin //go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2055,7 +1940,6 @@ func Setpgid(pid int, pgid int) (err error) { func libc_setpgid_trampoline() -//go:linkname libc_setpgid libc_setpgid //go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2070,7 +1954,6 @@ func Setpriority(which int, who int, prio int) (err error) { func libc_setpriority_trampoline() -//go:linkname libc_setpriority libc_setpriority //go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2085,7 +1968,6 @@ func Setprivexec(flag int) (err error) { func libc_setprivexec_trampoline() -//go:linkname libc_setprivexec libc_setprivexec //go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2100,7 +1982,6 @@ func Setregid(rgid int, egid int) (err error) { func libc_setregid_trampoline() -//go:linkname libc_setregid libc_setregid //go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2115,7 +1996,6 @@ func Setreuid(ruid int, euid int) (err error) { func libc_setreuid_trampoline() -//go:linkname libc_setreuid libc_setreuid //go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2130,7 +2010,6 @@ func Setrlimit(which int, lim *Rlimit) (err error) { func libc_setrlimit_trampoline() -//go:linkname libc_setrlimit libc_setrlimit //go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2146,7 +2025,6 @@ func Setsid() (pid int, err error) { func libc_setsid_trampoline() -//go:linkname libc_setsid libc_setsid //go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2161,7 +2039,6 @@ func Settimeofday(tp *Timeval) (err error) { func libc_settimeofday_trampoline() -//go:linkname libc_settimeofday libc_settimeofday //go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2176,7 +2053,6 @@ func Setuid(uid int) (err error) { func libc_setuid_trampoline() -//go:linkname libc_setuid libc_setuid //go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2201,7 +2077,6 @@ func Symlink(path string, link string) (err error) { func libc_symlink_trampoline() -//go:linkname libc_symlink libc_symlink //go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2226,7 +2101,6 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { func libc_symlinkat_trampoline() -//go:linkname libc_symlinkat libc_symlinkat //go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2241,7 +2115,6 @@ func Sync() (err error) { func libc_sync_trampoline() -//go:linkname libc_sync libc_sync //go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2261,7 +2134,6 @@ func Truncate(path string, length int64) (err error) { func libc_truncate_trampoline() -//go:linkname libc_truncate libc_truncate //go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2274,7 +2146,6 @@ func Umask(newmask int) (oldmask int) { func libc_umask_trampoline() -//go:linkname libc_umask libc_umask //go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2294,7 +2165,6 @@ func Undelete(path string) (err error) { func libc_undelete_trampoline() -//go:linkname libc_undelete libc_undelete //go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2314,7 +2184,6 @@ func Unlink(path string) (err error) { func libc_unlink_trampoline() -//go:linkname libc_unlink libc_unlink //go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2334,7 +2203,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { func libc_unlinkat_trampoline() -//go:linkname libc_unlinkat libc_unlinkat //go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2354,7 +2222,6 @@ func Unmount(path string, flags int) (err error) { func libc_unmount_trampoline() -//go:linkname libc_unmount libc_unmount //go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2376,7 +2243,6 @@ func write(fd int, p []byte) (n int, err error) { func libc_write_trampoline() -//go:linkname libc_write libc_write //go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2392,7 +2258,6 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( func libc_mmap_trampoline() -//go:linkname libc_mmap libc_mmap //go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2407,7 +2272,6 @@ func munmap(addr uintptr, length uintptr) (err error) { func libc_munmap_trampoline() -//go:linkname libc_munmap libc_munmap //go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2444,7 +2308,6 @@ func Fstat(fd int, stat *Stat_t) (err error) { func libc_fstat64_trampoline() -//go:linkname libc_fstat64 libc_fstat64 //go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2464,7 +2327,6 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { func libc_fstatat64_trampoline() -//go:linkname libc_fstatat64 libc_fstatat64 //go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2479,7 +2341,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { func libc_fstatfs64_trampoline() -//go:linkname libc_fstatfs64 libc_fstatfs64 //go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2495,7 +2356,6 @@ func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { func libc_getfsstat64_trampoline() -//go:linkname libc_getfsstat64 libc_getfsstat64 //go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2515,12 +2375,11 @@ func Lstat(path string, stat *Stat_t) (err error) { func libc_lstat64_trampoline() -//go:linkname libc_lstat64 libc_lstat64 //go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { err = errnoErr(e1) @@ -2530,7 +2389,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { func libc_ptrace_trampoline() -//go:linkname libc_ptrace libc_ptrace //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2550,7 +2408,6 @@ func Stat(path string, stat *Stat_t) (err error) { func libc_stat64_trampoline() -//go:linkname libc_stat64 libc_stat64 //go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2570,5 +2427,4 @@ func Statfs(path string, stat *Statfs_t) (err error) { func libc_statfs64_trampoline() -//go:linkname libc_statfs64 libc_statfs64 //go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go index 314042a9d..888262361 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go @@ -24,7 +24,6 @@ func closedir(dir uintptr) (err error) { func libc_closedir_trampoline() -//go:linkname libc_closedir libc_closedir //go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -37,5 +36,4 @@ func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { func libc_readdir_r_trampoline() -//go:linkname libc_readdir_r libc_readdir_r //go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 889c14059..508e5639b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -25,7 +25,6 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { func libc_getgroups_trampoline() -//go:linkname libc_getgroups libc_getgroups //go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -40,7 +39,6 @@ func setgroups(ngid int, gid *_Gid_t) (err error) { func libc_setgroups_trampoline() -//go:linkname libc_setgroups libc_setgroups //go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -56,7 +54,6 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err func libc_wait4_trampoline() -//go:linkname libc_wait4 libc_wait4 //go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -72,7 +69,6 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { func libc_accept_trampoline() -//go:linkname libc_accept libc_accept //go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -87,7 +83,6 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_bind_trampoline() -//go:linkname libc_bind libc_bind //go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -102,7 +97,6 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_connect_trampoline() -//go:linkname libc_connect libc_connect //go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -118,7 +112,6 @@ func socket(domain int, typ int, proto int) (fd int, err error) { func libc_socket_trampoline() -//go:linkname libc_socket libc_socket //go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -133,7 +126,6 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen func libc_getsockopt_trampoline() -//go:linkname libc_getsockopt libc_getsockopt //go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -148,7 +140,6 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) func libc_setsockopt_trampoline() -//go:linkname libc_setsockopt libc_setsockopt //go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -163,7 +154,6 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getpeername_trampoline() -//go:linkname libc_getpeername libc_getpeername //go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -178,7 +168,6 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getsockname_trampoline() -//go:linkname libc_getsockname libc_getsockname //go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -193,7 +182,6 @@ func Shutdown(s int, how int) (err error) { func libc_shutdown_trampoline() -//go:linkname libc_shutdown libc_shutdown //go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -208,7 +196,6 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { func libc_socketpair_trampoline() -//go:linkname libc_socketpair libc_socketpair //go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -230,7 +217,6 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl func libc_recvfrom_trampoline() -//go:linkname libc_recvfrom libc_recvfrom //go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -251,7 +237,6 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( func libc_sendto_trampoline() -//go:linkname libc_sendto libc_sendto //go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -267,7 +252,6 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_recvmsg_trampoline() -//go:linkname libc_recvmsg libc_recvmsg //go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -283,7 +267,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_sendmsg_trampoline() -//go:linkname libc_sendmsg libc_sendmsg //go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -299,7 +282,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne func libc_kevent_trampoline() -//go:linkname libc_kevent libc_kevent //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -319,7 +301,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { func libc_utimes_trampoline() -//go:linkname libc_utimes libc_utimes //go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -334,7 +315,6 @@ func futimes(fd int, timeval *[2]Timeval) (err error) { func libc_futimes_trampoline() -//go:linkname libc_futimes libc_futimes //go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -350,7 +330,6 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { func libc_poll_trampoline() -//go:linkname libc_poll libc_poll //go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -371,7 +350,6 @@ func Madvise(b []byte, behav int) (err error) { func libc_madvise_trampoline() -//go:linkname libc_madvise libc_madvise //go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -392,7 +370,6 @@ func Mlock(b []byte) (err error) { func libc_mlock_trampoline() -//go:linkname libc_mlock libc_mlock //go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -407,7 +384,6 @@ func Mlockall(flags int) (err error) { func libc_mlockall_trampoline() -//go:linkname libc_mlockall libc_mlockall //go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -428,7 +404,6 @@ func Mprotect(b []byte, prot int) (err error) { func libc_mprotect_trampoline() -//go:linkname libc_mprotect libc_mprotect //go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -449,7 +424,6 @@ func Msync(b []byte, flags int) (err error) { func libc_msync_trampoline() -//go:linkname libc_msync libc_msync //go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -470,7 +444,6 @@ func Munlock(b []byte) (err error) { func libc_munlock_trampoline() -//go:linkname libc_munlock libc_munlock //go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -485,15 +458,12 @@ func Munlockall() (err error) { func libc_munlockall_trampoline() -//go:linkname libc_munlockall libc_munlockall //go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -502,7 +472,6 @@ func pipe() (r int, w int, err error) { func libc_pipe_trampoline() -//go:linkname libc_pipe libc_pipe //go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -528,7 +497,6 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o func libc_getxattr_trampoline() -//go:linkname libc_getxattr libc_getxattr //go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -549,7 +517,6 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio func libc_fgetxattr_trampoline() -//go:linkname libc_fgetxattr libc_fgetxattr //go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -574,7 +541,6 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o func libc_setxattr_trampoline() -//go:linkname libc_setxattr libc_setxattr //go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -594,7 +560,6 @@ func fsetxattr(fd int, attr string, data *byte, size int, position uint32, optio func libc_fsetxattr_trampoline() -//go:linkname libc_fsetxattr libc_fsetxattr //go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -619,7 +584,6 @@ func removexattr(path string, attr string, options int) (err error) { func libc_removexattr_trampoline() -//go:linkname libc_removexattr libc_removexattr //go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -639,7 +603,6 @@ func fremovexattr(fd int, attr string, options int) (err error) { func libc_fremovexattr_trampoline() -//go:linkname libc_fremovexattr libc_fremovexattr //go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -660,7 +623,6 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro func libc_listxattr_trampoline() -//go:linkname libc_listxattr libc_listxattr //go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -676,7 +638,6 @@ func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { func libc_flistxattr_trampoline() -//go:linkname libc_flistxattr libc_flistxattr //go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -691,7 +652,6 @@ func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintp func libc_setattrlist_trampoline() -//go:linkname libc_setattrlist libc_setattrlist //go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -707,7 +667,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { func libc_fcntl_trampoline() -//go:linkname libc_fcntl libc_fcntl //go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -722,7 +681,6 @@ func kill(pid int, signum int, posix int) (err error) { func libc_kill_trampoline() -//go:linkname libc_kill libc_kill //go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -737,7 +695,6 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { func libc_ioctl_trampoline() -//go:linkname libc_ioctl libc_ioctl //go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -758,7 +715,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) func libc_sysctl_trampoline() -//go:linkname libc_sysctl libc_sysctl //go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -773,7 +729,6 @@ func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer func libc_sendfile_trampoline() -//go:linkname libc_sendfile libc_sendfile //go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -793,7 +748,6 @@ func Access(path string, mode uint32) (err error) { func libc_access_trampoline() -//go:linkname libc_access libc_access //go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -808,7 +762,6 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { func libc_adjtime_trampoline() -//go:linkname libc_adjtime libc_adjtime //go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -828,7 +781,6 @@ func Chdir(path string) (err error) { func libc_chdir_trampoline() -//go:linkname libc_chdir libc_chdir //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -848,7 +800,6 @@ func Chflags(path string, flags int) (err error) { func libc_chflags_trampoline() -//go:linkname libc_chflags libc_chflags //go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -868,7 +819,6 @@ func Chmod(path string, mode uint32) (err error) { func libc_chmod_trampoline() -//go:linkname libc_chmod libc_chmod //go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -888,7 +838,6 @@ func Chown(path string, uid int, gid int) (err error) { func libc_chown_trampoline() -//go:linkname libc_chown libc_chown //go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -908,7 +857,6 @@ func Chroot(path string) (err error) { func libc_chroot_trampoline() -//go:linkname libc_chroot libc_chroot //go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -923,7 +871,6 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { func libc_clock_gettime_trampoline() -//go:linkname libc_clock_gettime libc_clock_gettime //go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -938,7 +885,6 @@ func Close(fd int) (err error) { func libc_close_trampoline() -//go:linkname libc_close libc_close //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -963,7 +909,6 @@ func Clonefile(src string, dst string, flags int) (err error) { func libc_clonefile_trampoline() -//go:linkname libc_clonefile libc_clonefile //go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -988,7 +933,6 @@ func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) func libc_clonefileat_trampoline() -//go:linkname libc_clonefileat libc_clonefileat //go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1004,7 +948,6 @@ func Dup(fd int) (nfd int, err error) { func libc_dup_trampoline() -//go:linkname libc_dup libc_dup //go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1019,7 +962,6 @@ func Dup2(from int, to int) (err error) { func libc_dup2_trampoline() -//go:linkname libc_dup2 libc_dup2 //go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1044,7 +986,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { func libc_exchangedata_trampoline() -//go:linkname libc_exchangedata libc_exchangedata //go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1056,7 +997,6 @@ func Exit(code int) { func libc_exit_trampoline() -//go:linkname libc_exit libc_exit //go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1076,7 +1016,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_faccessat_trampoline() -//go:linkname libc_faccessat libc_faccessat //go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1091,7 +1030,6 @@ func Fchdir(fd int) (err error) { func libc_fchdir_trampoline() -//go:linkname libc_fchdir libc_fchdir //go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1106,7 +1044,6 @@ func Fchflags(fd int, flags int) (err error) { func libc_fchflags_trampoline() -//go:linkname libc_fchflags libc_fchflags //go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1121,7 +1058,6 @@ func Fchmod(fd int, mode uint32) (err error) { func libc_fchmod_trampoline() -//go:linkname libc_fchmod libc_fchmod //go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1141,7 +1077,6 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_fchmodat_trampoline() -//go:linkname libc_fchmodat libc_fchmodat //go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1156,7 +1091,6 @@ func Fchown(fd int, uid int, gid int) (err error) { func libc_fchown_trampoline() -//go:linkname libc_fchown libc_fchown //go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1176,7 +1110,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { func libc_fchownat_trampoline() -//go:linkname libc_fchownat libc_fchownat //go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1196,7 +1129,6 @@ func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) func libc_fclonefileat_trampoline() -//go:linkname libc_fclonefileat libc_fclonefileat //go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1211,7 +1143,6 @@ func Flock(fd int, how int) (err error) { func libc_flock_trampoline() -//go:linkname libc_flock libc_flock //go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1227,7 +1158,6 @@ func Fpathconf(fd int, name int) (val int, err error) { func libc_fpathconf_trampoline() -//go:linkname libc_fpathconf libc_fpathconf //go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1242,7 +1172,6 @@ func Fsync(fd int) (err error) { func libc_fsync_trampoline() -//go:linkname libc_fsync libc_fsync //go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1257,7 +1186,6 @@ func Ftruncate(fd int, length int64) (err error) { func libc_ftruncate_trampoline() -//go:linkname libc_ftruncate libc_ftruncate //go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1279,7 +1207,6 @@ func Getcwd(buf []byte) (n int, err error) { func libc_getcwd_trampoline() -//go:linkname libc_getcwd libc_getcwd //go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1292,7 +1219,6 @@ func Getdtablesize() (size int) { func libc_getdtablesize_trampoline() -//go:linkname libc_getdtablesize libc_getdtablesize //go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1305,7 +1231,6 @@ func Getegid() (egid int) { func libc_getegid_trampoline() -//go:linkname libc_getegid libc_getegid //go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1318,7 +1243,6 @@ func Geteuid() (uid int) { func libc_geteuid_trampoline() -//go:linkname libc_geteuid libc_geteuid //go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1331,7 +1255,6 @@ func Getgid() (gid int) { func libc_getgid_trampoline() -//go:linkname libc_getgid libc_getgid //go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1347,7 +1270,6 @@ func Getpgid(pid int) (pgid int, err error) { func libc_getpgid_trampoline() -//go:linkname libc_getpgid libc_getpgid //go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1360,7 +1282,6 @@ func Getpgrp() (pgrp int) { func libc_getpgrp_trampoline() -//go:linkname libc_getpgrp libc_getpgrp //go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1373,7 +1294,6 @@ func Getpid() (pid int) { func libc_getpid_trampoline() -//go:linkname libc_getpid libc_getpid //go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1386,7 +1306,6 @@ func Getppid() (ppid int) { func libc_getppid_trampoline() -//go:linkname libc_getppid libc_getppid //go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1402,7 +1321,6 @@ func Getpriority(which int, who int) (prio int, err error) { func libc_getpriority_trampoline() -//go:linkname libc_getpriority libc_getpriority //go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1417,7 +1335,6 @@ func Getrlimit(which int, lim *Rlimit) (err error) { func libc_getrlimit_trampoline() -//go:linkname libc_getrlimit libc_getrlimit //go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1432,7 +1349,6 @@ func Getrusage(who int, rusage *Rusage) (err error) { func libc_getrusage_trampoline() -//go:linkname libc_getrusage libc_getrusage //go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1448,7 +1364,6 @@ func Getsid(pid int) (sid int, err error) { func libc_getsid_trampoline() -//go:linkname libc_getsid libc_getsid //go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1463,7 +1378,6 @@ func Gettimeofday(tp *Timeval) (err error) { func libc_gettimeofday_trampoline() -//go:linkname libc_gettimeofday libc_gettimeofday //go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1476,7 +1390,6 @@ func Getuid() (uid int) { func libc_getuid_trampoline() -//go:linkname libc_getuid libc_getuid //go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1489,7 +1402,6 @@ func Issetugid() (tainted bool) { func libc_issetugid_trampoline() -//go:linkname libc_issetugid libc_issetugid //go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1505,7 +1417,6 @@ func Kqueue() (fd int, err error) { func libc_kqueue_trampoline() -//go:linkname libc_kqueue libc_kqueue //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1525,7 +1436,6 @@ func Lchown(path string, uid int, gid int) (err error) { func libc_lchown_trampoline() -//go:linkname libc_lchown libc_lchown //go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1550,7 +1460,6 @@ func Link(path string, link string) (err error) { func libc_link_trampoline() -//go:linkname libc_link libc_link //go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1575,7 +1484,6 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er func libc_linkat_trampoline() -//go:linkname libc_linkat libc_linkat //go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1590,7 +1498,6 @@ func Listen(s int, backlog int) (err error) { func libc_listen_trampoline() -//go:linkname libc_listen libc_listen //go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1610,7 +1517,6 @@ func Mkdir(path string, mode uint32) (err error) { func libc_mkdir_trampoline() -//go:linkname libc_mkdir libc_mkdir //go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1630,7 +1536,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { func libc_mkdirat_trampoline() -//go:linkname libc_mkdirat libc_mkdirat //go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1650,7 +1555,6 @@ func Mkfifo(path string, mode uint32) (err error) { func libc_mkfifo_trampoline() -//go:linkname libc_mkfifo libc_mkfifo //go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1670,7 +1574,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { func libc_mknod_trampoline() -//go:linkname libc_mknod libc_mknod //go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1691,7 +1594,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { func libc_open_trampoline() -//go:linkname libc_open libc_open //go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1712,7 +1614,6 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { func libc_openat_trampoline() -//go:linkname libc_openat libc_openat //go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1733,7 +1634,6 @@ func Pathconf(path string, name int) (val int, err error) { func libc_pathconf_trampoline() -//go:linkname libc_pathconf libc_pathconf //go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1755,7 +1655,6 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { func libc_pread_trampoline() -//go:linkname libc_pread libc_pread //go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1777,7 +1676,6 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { func libc_pwrite_trampoline() -//go:linkname libc_pwrite libc_pwrite //go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1799,7 +1697,6 @@ func read(fd int, p []byte) (n int, err error) { func libc_read_trampoline() -//go:linkname libc_read libc_read //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1826,7 +1723,6 @@ func Readlink(path string, buf []byte) (n int, err error) { func libc_readlink_trampoline() -//go:linkname libc_readlink libc_readlink //go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1853,7 +1749,6 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { func libc_readlinkat_trampoline() -//go:linkname libc_readlinkat libc_readlinkat //go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1878,7 +1773,6 @@ func Rename(from string, to string) (err error) { func libc_rename_trampoline() -//go:linkname libc_rename libc_rename //go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1903,7 +1797,6 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { func libc_renameat_trampoline() -//go:linkname libc_renameat libc_renameat //go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1923,7 +1816,6 @@ func Revoke(path string) (err error) { func libc_revoke_trampoline() -//go:linkname libc_revoke libc_revoke //go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1943,7 +1835,6 @@ func Rmdir(path string) (err error) { func libc_rmdir_trampoline() -//go:linkname libc_rmdir libc_rmdir //go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1959,7 +1850,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { func libc_lseek_trampoline() -//go:linkname libc_lseek libc_lseek //go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1975,7 +1865,6 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err func libc_select_trampoline() -//go:linkname libc_select libc_select //go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1990,7 +1879,6 @@ func Setegid(egid int) (err error) { func libc_setegid_trampoline() -//go:linkname libc_setegid libc_setegid //go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2005,7 +1893,6 @@ func Seteuid(euid int) (err error) { func libc_seteuid_trampoline() -//go:linkname libc_seteuid libc_seteuid //go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2020,7 +1907,6 @@ func Setgid(gid int) (err error) { func libc_setgid_trampoline() -//go:linkname libc_setgid libc_setgid //go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2040,7 +1926,6 @@ func Setlogin(name string) (err error) { func libc_setlogin_trampoline() -//go:linkname libc_setlogin libc_setlogin //go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2055,7 +1940,6 @@ func Setpgid(pid int, pgid int) (err error) { func libc_setpgid_trampoline() -//go:linkname libc_setpgid libc_setpgid //go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2070,7 +1954,6 @@ func Setpriority(which int, who int, prio int) (err error) { func libc_setpriority_trampoline() -//go:linkname libc_setpriority libc_setpriority //go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2085,7 +1968,6 @@ func Setprivexec(flag int) (err error) { func libc_setprivexec_trampoline() -//go:linkname libc_setprivexec libc_setprivexec //go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2100,7 +1982,6 @@ func Setregid(rgid int, egid int) (err error) { func libc_setregid_trampoline() -//go:linkname libc_setregid libc_setregid //go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2115,7 +1996,6 @@ func Setreuid(ruid int, euid int) (err error) { func libc_setreuid_trampoline() -//go:linkname libc_setreuid libc_setreuid //go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2130,7 +2010,6 @@ func Setrlimit(which int, lim *Rlimit) (err error) { func libc_setrlimit_trampoline() -//go:linkname libc_setrlimit libc_setrlimit //go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2146,7 +2025,6 @@ func Setsid() (pid int, err error) { func libc_setsid_trampoline() -//go:linkname libc_setsid libc_setsid //go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2161,7 +2039,6 @@ func Settimeofday(tp *Timeval) (err error) { func libc_settimeofday_trampoline() -//go:linkname libc_settimeofday libc_settimeofday //go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2176,7 +2053,6 @@ func Setuid(uid int) (err error) { func libc_setuid_trampoline() -//go:linkname libc_setuid libc_setuid //go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2201,7 +2077,6 @@ func Symlink(path string, link string) (err error) { func libc_symlink_trampoline() -//go:linkname libc_symlink libc_symlink //go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2226,7 +2101,6 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { func libc_symlinkat_trampoline() -//go:linkname libc_symlinkat libc_symlinkat //go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2241,7 +2115,6 @@ func Sync() (err error) { func libc_sync_trampoline() -//go:linkname libc_sync libc_sync //go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2261,7 +2134,6 @@ func Truncate(path string, length int64) (err error) { func libc_truncate_trampoline() -//go:linkname libc_truncate libc_truncate //go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2274,7 +2146,6 @@ func Umask(newmask int) (oldmask int) { func libc_umask_trampoline() -//go:linkname libc_umask libc_umask //go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2294,7 +2165,6 @@ func Undelete(path string) (err error) { func libc_undelete_trampoline() -//go:linkname libc_undelete libc_undelete //go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2314,7 +2184,6 @@ func Unlink(path string) (err error) { func libc_unlink_trampoline() -//go:linkname libc_unlink libc_unlink //go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2334,7 +2203,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { func libc_unlinkat_trampoline() -//go:linkname libc_unlinkat libc_unlinkat //go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2354,7 +2222,6 @@ func Unmount(path string, flags int) (err error) { func libc_unmount_trampoline() -//go:linkname libc_unmount libc_unmount //go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2376,7 +2243,6 @@ func write(fd int, p []byte) (n int, err error) { func libc_write_trampoline() -//go:linkname libc_write libc_write //go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2392,7 +2258,6 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( func libc_mmap_trampoline() -//go:linkname libc_mmap libc_mmap //go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2407,7 +2272,6 @@ func munmap(addr uintptr, length uintptr) (err error) { func libc_munmap_trampoline() -//go:linkname libc_munmap libc_munmap //go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2444,7 +2308,6 @@ func Fstat(fd int, stat *Stat_t) (err error) { func libc_fstat64_trampoline() -//go:linkname libc_fstat64 libc_fstat64 //go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2464,7 +2327,6 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { func libc_fstatat64_trampoline() -//go:linkname libc_fstatat64 libc_fstatat64 //go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2479,7 +2341,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { func libc_fstatfs64_trampoline() -//go:linkname libc_fstatfs64 libc_fstatfs64 //go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2495,7 +2356,6 @@ func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { func libc_getfsstat64_trampoline() -//go:linkname libc_getfsstat64 libc_getfsstat64 //go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2515,12 +2375,11 @@ func Lstat(path string, stat *Stat_t) (err error) { func libc_lstat64_trampoline() -//go:linkname libc_lstat64 libc_lstat64 //go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { err = errnoErr(e1) @@ -2530,7 +2389,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { func libc_ptrace_trampoline() -//go:linkname libc_ptrace libc_ptrace //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2550,7 +2408,6 @@ func Stat(path string, stat *Stat_t) (err error) { func libc_stat64_trampoline() -//go:linkname libc_stat64 libc_stat64 //go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2570,5 +2427,4 @@ func Statfs(path string, stat *Statfs_t) (err error) { func libc_statfs64_trampoline() -//go:linkname libc_statfs64 libc_statfs64 //go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go index f519ce9af..de4738fff 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go @@ -24,7 +24,6 @@ func closedir(dir uintptr) (err error) { func libc_closedir_trampoline() -//go:linkname libc_closedir libc_closedir //go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -37,5 +36,4 @@ func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { func libc_readdir_r_trampoline() -//go:linkname libc_readdir_r libc_readdir_r //go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index d6b5249c2..c0c771f40 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -25,7 +25,6 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { func libc_getgroups_trampoline() -//go:linkname libc_getgroups libc_getgroups //go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -40,7 +39,6 @@ func setgroups(ngid int, gid *_Gid_t) (err error) { func libc_setgroups_trampoline() -//go:linkname libc_setgroups libc_setgroups //go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -56,7 +54,6 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err func libc_wait4_trampoline() -//go:linkname libc_wait4 libc_wait4 //go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -72,7 +69,6 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { func libc_accept_trampoline() -//go:linkname libc_accept libc_accept //go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -87,7 +83,6 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_bind_trampoline() -//go:linkname libc_bind libc_bind //go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -102,7 +97,6 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_connect_trampoline() -//go:linkname libc_connect libc_connect //go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -118,7 +112,6 @@ func socket(domain int, typ int, proto int) (fd int, err error) { func libc_socket_trampoline() -//go:linkname libc_socket libc_socket //go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -133,7 +126,6 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen func libc_getsockopt_trampoline() -//go:linkname libc_getsockopt libc_getsockopt //go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -148,7 +140,6 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) func libc_setsockopt_trampoline() -//go:linkname libc_setsockopt libc_setsockopt //go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -163,7 +154,6 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getpeername_trampoline() -//go:linkname libc_getpeername libc_getpeername //go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -178,7 +168,6 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getsockname_trampoline() -//go:linkname libc_getsockname libc_getsockname //go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -193,7 +182,6 @@ func Shutdown(s int, how int) (err error) { func libc_shutdown_trampoline() -//go:linkname libc_shutdown libc_shutdown //go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -208,7 +196,6 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { func libc_socketpair_trampoline() -//go:linkname libc_socketpair libc_socketpair //go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -230,7 +217,6 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl func libc_recvfrom_trampoline() -//go:linkname libc_recvfrom libc_recvfrom //go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -251,7 +237,6 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( func libc_sendto_trampoline() -//go:linkname libc_sendto libc_sendto //go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -267,7 +252,6 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_recvmsg_trampoline() -//go:linkname libc_recvmsg libc_recvmsg //go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -283,7 +267,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_sendmsg_trampoline() -//go:linkname libc_sendmsg libc_sendmsg //go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -299,7 +282,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne func libc_kevent_trampoline() -//go:linkname libc_kevent libc_kevent //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -319,7 +301,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { func libc_utimes_trampoline() -//go:linkname libc_utimes libc_utimes //go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -334,7 +315,6 @@ func futimes(fd int, timeval *[2]Timeval) (err error) { func libc_futimes_trampoline() -//go:linkname libc_futimes libc_futimes //go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -350,7 +330,6 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { func libc_poll_trampoline() -//go:linkname libc_poll libc_poll //go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -371,7 +350,6 @@ func Madvise(b []byte, behav int) (err error) { func libc_madvise_trampoline() -//go:linkname libc_madvise libc_madvise //go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -392,7 +370,6 @@ func Mlock(b []byte) (err error) { func libc_mlock_trampoline() -//go:linkname libc_mlock libc_mlock //go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -407,7 +384,6 @@ func Mlockall(flags int) (err error) { func libc_mlockall_trampoline() -//go:linkname libc_mlockall libc_mlockall //go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -428,7 +404,6 @@ func Mprotect(b []byte, prot int) (err error) { func libc_mprotect_trampoline() -//go:linkname libc_mprotect libc_mprotect //go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -449,7 +424,6 @@ func Msync(b []byte, flags int) (err error) { func libc_msync_trampoline() -//go:linkname libc_msync libc_msync //go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -470,7 +444,6 @@ func Munlock(b []byte) (err error) { func libc_munlock_trampoline() -//go:linkname libc_munlock libc_munlock //go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -485,15 +458,12 @@ func Munlockall() (err error) { func libc_munlockall_trampoline() -//go:linkname libc_munlockall libc_munlockall //go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -502,7 +472,6 @@ func pipe() (r int, w int, err error) { func libc_pipe_trampoline() -//go:linkname libc_pipe libc_pipe //go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -528,7 +497,6 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o func libc_getxattr_trampoline() -//go:linkname libc_getxattr libc_getxattr //go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -549,7 +517,6 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio func libc_fgetxattr_trampoline() -//go:linkname libc_fgetxattr libc_fgetxattr //go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -574,7 +541,6 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o func libc_setxattr_trampoline() -//go:linkname libc_setxattr libc_setxattr //go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -594,7 +560,6 @@ func fsetxattr(fd int, attr string, data *byte, size int, position uint32, optio func libc_fsetxattr_trampoline() -//go:linkname libc_fsetxattr libc_fsetxattr //go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -619,7 +584,6 @@ func removexattr(path string, attr string, options int) (err error) { func libc_removexattr_trampoline() -//go:linkname libc_removexattr libc_removexattr //go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -639,7 +603,6 @@ func fremovexattr(fd int, attr string, options int) (err error) { func libc_fremovexattr_trampoline() -//go:linkname libc_fremovexattr libc_fremovexattr //go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -660,7 +623,6 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro func libc_listxattr_trampoline() -//go:linkname libc_listxattr libc_listxattr //go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -676,7 +638,6 @@ func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { func libc_flistxattr_trampoline() -//go:linkname libc_flistxattr libc_flistxattr //go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -691,7 +652,6 @@ func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintp func libc_setattrlist_trampoline() -//go:linkname libc_setattrlist libc_setattrlist //go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -707,7 +667,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { func libc_fcntl_trampoline() -//go:linkname libc_fcntl libc_fcntl //go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -722,7 +681,6 @@ func kill(pid int, signum int, posix int) (err error) { func libc_kill_trampoline() -//go:linkname libc_kill libc_kill //go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -737,7 +695,6 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { func libc_ioctl_trampoline() -//go:linkname libc_ioctl libc_ioctl //go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -758,7 +715,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) func libc_sysctl_trampoline() -//go:linkname libc_sysctl libc_sysctl //go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -773,7 +729,6 @@ func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer func libc_sendfile_trampoline() -//go:linkname libc_sendfile libc_sendfile //go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -793,7 +748,6 @@ func Access(path string, mode uint32) (err error) { func libc_access_trampoline() -//go:linkname libc_access libc_access //go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -808,7 +762,6 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { func libc_adjtime_trampoline() -//go:linkname libc_adjtime libc_adjtime //go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -828,7 +781,6 @@ func Chdir(path string) (err error) { func libc_chdir_trampoline() -//go:linkname libc_chdir libc_chdir //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -848,7 +800,6 @@ func Chflags(path string, flags int) (err error) { func libc_chflags_trampoline() -//go:linkname libc_chflags libc_chflags //go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -868,7 +819,6 @@ func Chmod(path string, mode uint32) (err error) { func libc_chmod_trampoline() -//go:linkname libc_chmod libc_chmod //go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -888,7 +838,6 @@ func Chown(path string, uid int, gid int) (err error) { func libc_chown_trampoline() -//go:linkname libc_chown libc_chown //go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -908,7 +857,6 @@ func Chroot(path string) (err error) { func libc_chroot_trampoline() -//go:linkname libc_chroot libc_chroot //go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -923,7 +871,6 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { func libc_clock_gettime_trampoline() -//go:linkname libc_clock_gettime libc_clock_gettime //go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -938,7 +885,6 @@ func Close(fd int) (err error) { func libc_close_trampoline() -//go:linkname libc_close libc_close //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -963,7 +909,6 @@ func Clonefile(src string, dst string, flags int) (err error) { func libc_clonefile_trampoline() -//go:linkname libc_clonefile libc_clonefile //go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -988,7 +933,6 @@ func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) func libc_clonefileat_trampoline() -//go:linkname libc_clonefileat libc_clonefileat //go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1004,7 +948,6 @@ func Dup(fd int) (nfd int, err error) { func libc_dup_trampoline() -//go:linkname libc_dup libc_dup //go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1019,7 +962,6 @@ func Dup2(from int, to int) (err error) { func libc_dup2_trampoline() -//go:linkname libc_dup2 libc_dup2 //go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1044,7 +986,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { func libc_exchangedata_trampoline() -//go:linkname libc_exchangedata libc_exchangedata //go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1056,7 +997,6 @@ func Exit(code int) { func libc_exit_trampoline() -//go:linkname libc_exit libc_exit //go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1076,7 +1016,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_faccessat_trampoline() -//go:linkname libc_faccessat libc_faccessat //go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1091,7 +1030,6 @@ func Fchdir(fd int) (err error) { func libc_fchdir_trampoline() -//go:linkname libc_fchdir libc_fchdir //go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1106,7 +1044,6 @@ func Fchflags(fd int, flags int) (err error) { func libc_fchflags_trampoline() -//go:linkname libc_fchflags libc_fchflags //go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1121,7 +1058,6 @@ func Fchmod(fd int, mode uint32) (err error) { func libc_fchmod_trampoline() -//go:linkname libc_fchmod libc_fchmod //go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1141,7 +1077,6 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_fchmodat_trampoline() -//go:linkname libc_fchmodat libc_fchmodat //go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1156,7 +1091,6 @@ func Fchown(fd int, uid int, gid int) (err error) { func libc_fchown_trampoline() -//go:linkname libc_fchown libc_fchown //go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1176,7 +1110,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { func libc_fchownat_trampoline() -//go:linkname libc_fchownat libc_fchownat //go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1196,7 +1129,6 @@ func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) func libc_fclonefileat_trampoline() -//go:linkname libc_fclonefileat libc_fclonefileat //go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1211,7 +1143,6 @@ func Flock(fd int, how int) (err error) { func libc_flock_trampoline() -//go:linkname libc_flock libc_flock //go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1227,7 +1158,6 @@ func Fpathconf(fd int, name int) (val int, err error) { func libc_fpathconf_trampoline() -//go:linkname libc_fpathconf libc_fpathconf //go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1242,7 +1172,6 @@ func Fsync(fd int) (err error) { func libc_fsync_trampoline() -//go:linkname libc_fsync libc_fsync //go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1257,7 +1186,6 @@ func Ftruncate(fd int, length int64) (err error) { func libc_ftruncate_trampoline() -//go:linkname libc_ftruncate libc_ftruncate //go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1279,7 +1207,6 @@ func Getcwd(buf []byte) (n int, err error) { func libc_getcwd_trampoline() -//go:linkname libc_getcwd libc_getcwd //go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1292,7 +1219,6 @@ func Getdtablesize() (size int) { func libc_getdtablesize_trampoline() -//go:linkname libc_getdtablesize libc_getdtablesize //go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1305,7 +1231,6 @@ func Getegid() (egid int) { func libc_getegid_trampoline() -//go:linkname libc_getegid libc_getegid //go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1318,7 +1243,6 @@ func Geteuid() (uid int) { func libc_geteuid_trampoline() -//go:linkname libc_geteuid libc_geteuid //go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1331,7 +1255,6 @@ func Getgid() (gid int) { func libc_getgid_trampoline() -//go:linkname libc_getgid libc_getgid //go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1347,7 +1270,6 @@ func Getpgid(pid int) (pgid int, err error) { func libc_getpgid_trampoline() -//go:linkname libc_getpgid libc_getpgid //go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1360,7 +1282,6 @@ func Getpgrp() (pgrp int) { func libc_getpgrp_trampoline() -//go:linkname libc_getpgrp libc_getpgrp //go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1373,7 +1294,6 @@ func Getpid() (pid int) { func libc_getpid_trampoline() -//go:linkname libc_getpid libc_getpid //go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1386,7 +1306,6 @@ func Getppid() (ppid int) { func libc_getppid_trampoline() -//go:linkname libc_getppid libc_getppid //go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1402,7 +1321,6 @@ func Getpriority(which int, who int) (prio int, err error) { func libc_getpriority_trampoline() -//go:linkname libc_getpriority libc_getpriority //go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1417,7 +1335,6 @@ func Getrlimit(which int, lim *Rlimit) (err error) { func libc_getrlimit_trampoline() -//go:linkname libc_getrlimit libc_getrlimit //go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1432,7 +1349,6 @@ func Getrusage(who int, rusage *Rusage) (err error) { func libc_getrusage_trampoline() -//go:linkname libc_getrusage libc_getrusage //go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1448,7 +1364,6 @@ func Getsid(pid int) (sid int, err error) { func libc_getsid_trampoline() -//go:linkname libc_getsid libc_getsid //go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1463,7 +1378,6 @@ func Gettimeofday(tp *Timeval) (err error) { func libc_gettimeofday_trampoline() -//go:linkname libc_gettimeofday libc_gettimeofday //go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1476,7 +1390,6 @@ func Getuid() (uid int) { func libc_getuid_trampoline() -//go:linkname libc_getuid libc_getuid //go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1489,7 +1402,6 @@ func Issetugid() (tainted bool) { func libc_issetugid_trampoline() -//go:linkname libc_issetugid libc_issetugid //go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1505,7 +1417,6 @@ func Kqueue() (fd int, err error) { func libc_kqueue_trampoline() -//go:linkname libc_kqueue libc_kqueue //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1525,7 +1436,6 @@ func Lchown(path string, uid int, gid int) (err error) { func libc_lchown_trampoline() -//go:linkname libc_lchown libc_lchown //go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1550,7 +1460,6 @@ func Link(path string, link string) (err error) { func libc_link_trampoline() -//go:linkname libc_link libc_link //go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1575,7 +1484,6 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er func libc_linkat_trampoline() -//go:linkname libc_linkat libc_linkat //go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1590,7 +1498,6 @@ func Listen(s int, backlog int) (err error) { func libc_listen_trampoline() -//go:linkname libc_listen libc_listen //go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1610,7 +1517,6 @@ func Mkdir(path string, mode uint32) (err error) { func libc_mkdir_trampoline() -//go:linkname libc_mkdir libc_mkdir //go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1630,7 +1536,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { func libc_mkdirat_trampoline() -//go:linkname libc_mkdirat libc_mkdirat //go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1650,7 +1555,6 @@ func Mkfifo(path string, mode uint32) (err error) { func libc_mkfifo_trampoline() -//go:linkname libc_mkfifo libc_mkfifo //go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1670,7 +1574,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { func libc_mknod_trampoline() -//go:linkname libc_mknod libc_mknod //go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1691,7 +1594,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { func libc_open_trampoline() -//go:linkname libc_open libc_open //go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1712,7 +1614,6 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { func libc_openat_trampoline() -//go:linkname libc_openat libc_openat //go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1733,7 +1634,6 @@ func Pathconf(path string, name int) (val int, err error) { func libc_pathconf_trampoline() -//go:linkname libc_pathconf libc_pathconf //go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1755,7 +1655,6 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { func libc_pread_trampoline() -//go:linkname libc_pread libc_pread //go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1777,7 +1676,6 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { func libc_pwrite_trampoline() -//go:linkname libc_pwrite libc_pwrite //go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1799,7 +1697,6 @@ func read(fd int, p []byte) (n int, err error) { func libc_read_trampoline() -//go:linkname libc_read libc_read //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1826,7 +1723,6 @@ func Readlink(path string, buf []byte) (n int, err error) { func libc_readlink_trampoline() -//go:linkname libc_readlink libc_readlink //go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1853,7 +1749,6 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { func libc_readlinkat_trampoline() -//go:linkname libc_readlinkat libc_readlinkat //go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1878,7 +1773,6 @@ func Rename(from string, to string) (err error) { func libc_rename_trampoline() -//go:linkname libc_rename libc_rename //go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1903,7 +1797,6 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { func libc_renameat_trampoline() -//go:linkname libc_renameat libc_renameat //go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1923,7 +1816,6 @@ func Revoke(path string) (err error) { func libc_revoke_trampoline() -//go:linkname libc_revoke libc_revoke //go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1943,7 +1835,6 @@ func Rmdir(path string) (err error) { func libc_rmdir_trampoline() -//go:linkname libc_rmdir libc_rmdir //go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1959,7 +1850,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { func libc_lseek_trampoline() -//go:linkname libc_lseek libc_lseek //go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1975,7 +1865,6 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err func libc_select_trampoline() -//go:linkname libc_select libc_select //go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1990,7 +1879,6 @@ func Setegid(egid int) (err error) { func libc_setegid_trampoline() -//go:linkname libc_setegid libc_setegid //go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2005,7 +1893,6 @@ func Seteuid(euid int) (err error) { func libc_seteuid_trampoline() -//go:linkname libc_seteuid libc_seteuid //go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2020,7 +1907,6 @@ func Setgid(gid int) (err error) { func libc_setgid_trampoline() -//go:linkname libc_setgid libc_setgid //go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2040,7 +1926,6 @@ func Setlogin(name string) (err error) { func libc_setlogin_trampoline() -//go:linkname libc_setlogin libc_setlogin //go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2055,7 +1940,6 @@ func Setpgid(pid int, pgid int) (err error) { func libc_setpgid_trampoline() -//go:linkname libc_setpgid libc_setpgid //go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2070,7 +1954,6 @@ func Setpriority(which int, who int, prio int) (err error) { func libc_setpriority_trampoline() -//go:linkname libc_setpriority libc_setpriority //go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2085,7 +1968,6 @@ func Setprivexec(flag int) (err error) { func libc_setprivexec_trampoline() -//go:linkname libc_setprivexec libc_setprivexec //go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2100,7 +1982,6 @@ func Setregid(rgid int, egid int) (err error) { func libc_setregid_trampoline() -//go:linkname libc_setregid libc_setregid //go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2115,7 +1996,6 @@ func Setreuid(ruid int, euid int) (err error) { func libc_setreuid_trampoline() -//go:linkname libc_setreuid libc_setreuid //go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2130,7 +2010,6 @@ func Setrlimit(which int, lim *Rlimit) (err error) { func libc_setrlimit_trampoline() -//go:linkname libc_setrlimit libc_setrlimit //go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2146,7 +2025,6 @@ func Setsid() (pid int, err error) { func libc_setsid_trampoline() -//go:linkname libc_setsid libc_setsid //go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2161,7 +2039,6 @@ func Settimeofday(tp *Timeval) (err error) { func libc_settimeofday_trampoline() -//go:linkname libc_settimeofday libc_settimeofday //go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2176,7 +2053,6 @@ func Setuid(uid int) (err error) { func libc_setuid_trampoline() -//go:linkname libc_setuid libc_setuid //go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2201,7 +2077,6 @@ func Symlink(path string, link string) (err error) { func libc_symlink_trampoline() -//go:linkname libc_symlink libc_symlink //go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2226,7 +2101,6 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { func libc_symlinkat_trampoline() -//go:linkname libc_symlinkat libc_symlinkat //go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2241,7 +2115,6 @@ func Sync() (err error) { func libc_sync_trampoline() -//go:linkname libc_sync libc_sync //go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2261,7 +2134,6 @@ func Truncate(path string, length int64) (err error) { func libc_truncate_trampoline() -//go:linkname libc_truncate libc_truncate //go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2274,7 +2146,6 @@ func Umask(newmask int) (oldmask int) { func libc_umask_trampoline() -//go:linkname libc_umask libc_umask //go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2294,7 +2165,6 @@ func Undelete(path string) (err error) { func libc_undelete_trampoline() -//go:linkname libc_undelete libc_undelete //go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2314,7 +2184,6 @@ func Unlink(path string) (err error) { func libc_unlink_trampoline() -//go:linkname libc_unlink libc_unlink //go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2334,7 +2203,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { func libc_unlinkat_trampoline() -//go:linkname libc_unlinkat libc_unlinkat //go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2354,7 +2222,6 @@ func Unmount(path string, flags int) (err error) { func libc_unmount_trampoline() -//go:linkname libc_unmount libc_unmount //go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2376,7 +2243,6 @@ func write(fd int, p []byte) (n int, err error) { func libc_write_trampoline() -//go:linkname libc_write libc_write //go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2392,7 +2258,6 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( func libc_mmap_trampoline() -//go:linkname libc_mmap libc_mmap //go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2407,7 +2272,6 @@ func munmap(addr uintptr, length uintptr) (err error) { func libc_munmap_trampoline() -//go:linkname libc_munmap libc_munmap //go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2444,7 +2308,6 @@ func Fstat(fd int, stat *Stat_t) (err error) { func libc_fstat_trampoline() -//go:linkname libc_fstat libc_fstat //go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2464,7 +2327,6 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { func libc_fstatat_trampoline() -//go:linkname libc_fstatat libc_fstatat //go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2479,7 +2341,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { func libc_fstatfs_trampoline() -//go:linkname libc_fstatfs libc_fstatfs //go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2495,7 +2356,6 @@ func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { func libc_getfsstat_trampoline() -//go:linkname libc_getfsstat libc_getfsstat //go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2515,7 +2375,6 @@ func Lstat(path string, stat *Stat_t) (err error) { func libc_lstat_trampoline() -//go:linkname libc_lstat libc_lstat //go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2535,7 +2394,6 @@ func Stat(path string, stat *Stat_t) (err error) { func libc_stat_trampoline() -//go:linkname libc_stat libc_stat //go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2555,5 +2413,4 @@ func Statfs(path string, stat *Statfs_t) (err error) { func libc_statfs_trampoline() -//go:linkname libc_statfs libc_statfs //go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go index d64e6c806..870eb37ab 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go @@ -24,7 +24,6 @@ func closedir(dir uintptr) (err error) { func libc_closedir_trampoline() -//go:linkname libc_closedir libc_closedir //go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -37,5 +36,4 @@ func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { func libc_readdir_r_trampoline() -//go:linkname libc_readdir_r libc_readdir_r //go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 23b65a530..9b01a79c4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -25,7 +25,6 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { func libc_getgroups_trampoline() -//go:linkname libc_getgroups libc_getgroups //go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -40,7 +39,6 @@ func setgroups(ngid int, gid *_Gid_t) (err error) { func libc_setgroups_trampoline() -//go:linkname libc_setgroups libc_setgroups //go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -56,7 +54,6 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err func libc_wait4_trampoline() -//go:linkname libc_wait4 libc_wait4 //go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -72,7 +69,6 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { func libc_accept_trampoline() -//go:linkname libc_accept libc_accept //go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -87,7 +83,6 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_bind_trampoline() -//go:linkname libc_bind libc_bind //go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -102,7 +97,6 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { func libc_connect_trampoline() -//go:linkname libc_connect libc_connect //go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -118,7 +112,6 @@ func socket(domain int, typ int, proto int) (fd int, err error) { func libc_socket_trampoline() -//go:linkname libc_socket libc_socket //go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -133,7 +126,6 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen func libc_getsockopt_trampoline() -//go:linkname libc_getsockopt libc_getsockopt //go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -148,7 +140,6 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) func libc_setsockopt_trampoline() -//go:linkname libc_setsockopt libc_setsockopt //go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -163,7 +154,6 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getpeername_trampoline() -//go:linkname libc_getpeername libc_getpeername //go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -178,7 +168,6 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { func libc_getsockname_trampoline() -//go:linkname libc_getsockname libc_getsockname //go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -193,7 +182,6 @@ func Shutdown(s int, how int) (err error) { func libc_shutdown_trampoline() -//go:linkname libc_shutdown libc_shutdown //go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -208,7 +196,6 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { func libc_socketpair_trampoline() -//go:linkname libc_socketpair libc_socketpair //go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -230,7 +217,6 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl func libc_recvfrom_trampoline() -//go:linkname libc_recvfrom libc_recvfrom //go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -251,7 +237,6 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( func libc_sendto_trampoline() -//go:linkname libc_sendto libc_sendto //go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -267,7 +252,6 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_recvmsg_trampoline() -//go:linkname libc_recvmsg libc_recvmsg //go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -283,7 +267,6 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { func libc_sendmsg_trampoline() -//go:linkname libc_sendmsg libc_sendmsg //go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -299,7 +282,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne func libc_kevent_trampoline() -//go:linkname libc_kevent libc_kevent //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -319,7 +301,6 @@ func utimes(path string, timeval *[2]Timeval) (err error) { func libc_utimes_trampoline() -//go:linkname libc_utimes libc_utimes //go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -334,7 +315,6 @@ func futimes(fd int, timeval *[2]Timeval) (err error) { func libc_futimes_trampoline() -//go:linkname libc_futimes libc_futimes //go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -350,7 +330,6 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { func libc_poll_trampoline() -//go:linkname libc_poll libc_poll //go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -371,7 +350,6 @@ func Madvise(b []byte, behav int) (err error) { func libc_madvise_trampoline() -//go:linkname libc_madvise libc_madvise //go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -392,7 +370,6 @@ func Mlock(b []byte) (err error) { func libc_mlock_trampoline() -//go:linkname libc_mlock libc_mlock //go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -407,7 +384,6 @@ func Mlockall(flags int) (err error) { func libc_mlockall_trampoline() -//go:linkname libc_mlockall libc_mlockall //go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -428,7 +404,6 @@ func Mprotect(b []byte, prot int) (err error) { func libc_mprotect_trampoline() -//go:linkname libc_mprotect libc_mprotect //go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -449,7 +424,6 @@ func Msync(b []byte, flags int) (err error) { func libc_msync_trampoline() -//go:linkname libc_msync libc_msync //go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -470,7 +444,6 @@ func Munlock(b []byte) (err error) { func libc_munlock_trampoline() -//go:linkname libc_munlock libc_munlock //go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -485,15 +458,12 @@ func Munlockall() (err error) { func libc_munlockall_trampoline() -//go:linkname libc_munlockall libc_munlockall //go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe() (r int, w int, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) - r = int(r0) - w = int(r1) +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -502,7 +472,6 @@ func pipe() (r int, w int, err error) { func libc_pipe_trampoline() -//go:linkname libc_pipe libc_pipe //go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -528,7 +497,6 @@ func getxattr(path string, attr string, dest *byte, size int, position uint32, o func libc_getxattr_trampoline() -//go:linkname libc_getxattr libc_getxattr //go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -549,7 +517,6 @@ func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, optio func libc_fgetxattr_trampoline() -//go:linkname libc_fgetxattr libc_fgetxattr //go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -574,7 +541,6 @@ func setxattr(path string, attr string, data *byte, size int, position uint32, o func libc_setxattr_trampoline() -//go:linkname libc_setxattr libc_setxattr //go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -594,7 +560,6 @@ func fsetxattr(fd int, attr string, data *byte, size int, position uint32, optio func libc_fsetxattr_trampoline() -//go:linkname libc_fsetxattr libc_fsetxattr //go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -619,7 +584,6 @@ func removexattr(path string, attr string, options int) (err error) { func libc_removexattr_trampoline() -//go:linkname libc_removexattr libc_removexattr //go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -639,7 +603,6 @@ func fremovexattr(fd int, attr string, options int) (err error) { func libc_fremovexattr_trampoline() -//go:linkname libc_fremovexattr libc_fremovexattr //go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -660,7 +623,6 @@ func listxattr(path string, dest *byte, size int, options int) (sz int, err erro func libc_listxattr_trampoline() -//go:linkname libc_listxattr libc_listxattr //go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -676,7 +638,6 @@ func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { func libc_flistxattr_trampoline() -//go:linkname libc_flistxattr libc_flistxattr //go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -691,7 +652,6 @@ func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintp func libc_setattrlist_trampoline() -//go:linkname libc_setattrlist libc_setattrlist //go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -707,7 +667,6 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) { func libc_fcntl_trampoline() -//go:linkname libc_fcntl libc_fcntl //go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -722,7 +681,6 @@ func kill(pid int, signum int, posix int) (err error) { func libc_kill_trampoline() -//go:linkname libc_kill libc_kill //go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -737,7 +695,6 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { func libc_ioctl_trampoline() -//go:linkname libc_ioctl libc_ioctl //go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -758,7 +715,6 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) func libc_sysctl_trampoline() -//go:linkname libc_sysctl libc_sysctl //go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -773,7 +729,6 @@ func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer func libc_sendfile_trampoline() -//go:linkname libc_sendfile libc_sendfile //go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -793,7 +748,6 @@ func Access(path string, mode uint32) (err error) { func libc_access_trampoline() -//go:linkname libc_access libc_access //go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -808,7 +762,6 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { func libc_adjtime_trampoline() -//go:linkname libc_adjtime libc_adjtime //go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -828,7 +781,6 @@ func Chdir(path string) (err error) { func libc_chdir_trampoline() -//go:linkname libc_chdir libc_chdir //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -848,7 +800,6 @@ func Chflags(path string, flags int) (err error) { func libc_chflags_trampoline() -//go:linkname libc_chflags libc_chflags //go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -868,7 +819,6 @@ func Chmod(path string, mode uint32) (err error) { func libc_chmod_trampoline() -//go:linkname libc_chmod libc_chmod //go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -888,7 +838,6 @@ func Chown(path string, uid int, gid int) (err error) { func libc_chown_trampoline() -//go:linkname libc_chown libc_chown //go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -908,7 +857,6 @@ func Chroot(path string) (err error) { func libc_chroot_trampoline() -//go:linkname libc_chroot libc_chroot //go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -923,7 +871,6 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { func libc_clock_gettime_trampoline() -//go:linkname libc_clock_gettime libc_clock_gettime //go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -938,7 +885,6 @@ func Close(fd int) (err error) { func libc_close_trampoline() -//go:linkname libc_close libc_close //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -963,7 +909,6 @@ func Clonefile(src string, dst string, flags int) (err error) { func libc_clonefile_trampoline() -//go:linkname libc_clonefile libc_clonefile //go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -988,7 +933,6 @@ func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) func libc_clonefileat_trampoline() -//go:linkname libc_clonefileat libc_clonefileat //go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1004,7 +948,6 @@ func Dup(fd int) (nfd int, err error) { func libc_dup_trampoline() -//go:linkname libc_dup libc_dup //go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1019,7 +962,6 @@ func Dup2(from int, to int) (err error) { func libc_dup2_trampoline() -//go:linkname libc_dup2 libc_dup2 //go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1044,7 +986,6 @@ func Exchangedata(path1 string, path2 string, options int) (err error) { func libc_exchangedata_trampoline() -//go:linkname libc_exchangedata libc_exchangedata //go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1056,7 +997,6 @@ func Exit(code int) { func libc_exit_trampoline() -//go:linkname libc_exit libc_exit //go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1076,7 +1016,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_faccessat_trampoline() -//go:linkname libc_faccessat libc_faccessat //go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1091,7 +1030,6 @@ func Fchdir(fd int) (err error) { func libc_fchdir_trampoline() -//go:linkname libc_fchdir libc_fchdir //go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1106,7 +1044,6 @@ func Fchflags(fd int, flags int) (err error) { func libc_fchflags_trampoline() -//go:linkname libc_fchflags libc_fchflags //go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1121,7 +1058,6 @@ func Fchmod(fd int, mode uint32) (err error) { func libc_fchmod_trampoline() -//go:linkname libc_fchmod libc_fchmod //go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1141,7 +1077,6 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { func libc_fchmodat_trampoline() -//go:linkname libc_fchmodat libc_fchmodat //go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1156,7 +1091,6 @@ func Fchown(fd int, uid int, gid int) (err error) { func libc_fchown_trampoline() -//go:linkname libc_fchown libc_fchown //go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1176,7 +1110,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { func libc_fchownat_trampoline() -//go:linkname libc_fchownat libc_fchownat //go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1196,7 +1129,6 @@ func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) func libc_fclonefileat_trampoline() -//go:linkname libc_fclonefileat libc_fclonefileat //go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1211,7 +1143,6 @@ func Flock(fd int, how int) (err error) { func libc_flock_trampoline() -//go:linkname libc_flock libc_flock //go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1227,7 +1158,6 @@ func Fpathconf(fd int, name int) (val int, err error) { func libc_fpathconf_trampoline() -//go:linkname libc_fpathconf libc_fpathconf //go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1242,7 +1172,6 @@ func Fsync(fd int) (err error) { func libc_fsync_trampoline() -//go:linkname libc_fsync libc_fsync //go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1257,7 +1186,6 @@ func Ftruncate(fd int, length int64) (err error) { func libc_ftruncate_trampoline() -//go:linkname libc_ftruncate libc_ftruncate //go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1279,7 +1207,6 @@ func Getcwd(buf []byte) (n int, err error) { func libc_getcwd_trampoline() -//go:linkname libc_getcwd libc_getcwd //go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1292,7 +1219,6 @@ func Getdtablesize() (size int) { func libc_getdtablesize_trampoline() -//go:linkname libc_getdtablesize libc_getdtablesize //go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1305,7 +1231,6 @@ func Getegid() (egid int) { func libc_getegid_trampoline() -//go:linkname libc_getegid libc_getegid //go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1318,7 +1243,6 @@ func Geteuid() (uid int) { func libc_geteuid_trampoline() -//go:linkname libc_geteuid libc_geteuid //go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1331,7 +1255,6 @@ func Getgid() (gid int) { func libc_getgid_trampoline() -//go:linkname libc_getgid libc_getgid //go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1347,7 +1270,6 @@ func Getpgid(pid int) (pgid int, err error) { func libc_getpgid_trampoline() -//go:linkname libc_getpgid libc_getpgid //go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1360,7 +1282,6 @@ func Getpgrp() (pgrp int) { func libc_getpgrp_trampoline() -//go:linkname libc_getpgrp libc_getpgrp //go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1373,7 +1294,6 @@ func Getpid() (pid int) { func libc_getpid_trampoline() -//go:linkname libc_getpid libc_getpid //go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1386,7 +1306,6 @@ func Getppid() (ppid int) { func libc_getppid_trampoline() -//go:linkname libc_getppid libc_getppid //go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1402,7 +1321,6 @@ func Getpriority(which int, who int) (prio int, err error) { func libc_getpriority_trampoline() -//go:linkname libc_getpriority libc_getpriority //go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1417,7 +1335,6 @@ func Getrlimit(which int, lim *Rlimit) (err error) { func libc_getrlimit_trampoline() -//go:linkname libc_getrlimit libc_getrlimit //go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1432,7 +1349,6 @@ func Getrusage(who int, rusage *Rusage) (err error) { func libc_getrusage_trampoline() -//go:linkname libc_getrusage libc_getrusage //go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1448,7 +1364,6 @@ func Getsid(pid int) (sid int, err error) { func libc_getsid_trampoline() -//go:linkname libc_getsid libc_getsid //go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1463,7 +1378,6 @@ func Gettimeofday(tp *Timeval) (err error) { func libc_gettimeofday_trampoline() -//go:linkname libc_gettimeofday libc_gettimeofday //go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1476,7 +1390,6 @@ func Getuid() (uid int) { func libc_getuid_trampoline() -//go:linkname libc_getuid libc_getuid //go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1489,7 +1402,6 @@ func Issetugid() (tainted bool) { func libc_issetugid_trampoline() -//go:linkname libc_issetugid libc_issetugid //go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1505,7 +1417,6 @@ func Kqueue() (fd int, err error) { func libc_kqueue_trampoline() -//go:linkname libc_kqueue libc_kqueue //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1525,7 +1436,6 @@ func Lchown(path string, uid int, gid int) (err error) { func libc_lchown_trampoline() -//go:linkname libc_lchown libc_lchown //go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1550,7 +1460,6 @@ func Link(path string, link string) (err error) { func libc_link_trampoline() -//go:linkname libc_link libc_link //go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1575,7 +1484,6 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er func libc_linkat_trampoline() -//go:linkname libc_linkat libc_linkat //go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1590,7 +1498,6 @@ func Listen(s int, backlog int) (err error) { func libc_listen_trampoline() -//go:linkname libc_listen libc_listen //go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1610,7 +1517,6 @@ func Mkdir(path string, mode uint32) (err error) { func libc_mkdir_trampoline() -//go:linkname libc_mkdir libc_mkdir //go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1630,7 +1536,6 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { func libc_mkdirat_trampoline() -//go:linkname libc_mkdirat libc_mkdirat //go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1650,7 +1555,6 @@ func Mkfifo(path string, mode uint32) (err error) { func libc_mkfifo_trampoline() -//go:linkname libc_mkfifo libc_mkfifo //go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1670,7 +1574,6 @@ func Mknod(path string, mode uint32, dev int) (err error) { func libc_mknod_trampoline() -//go:linkname libc_mknod libc_mknod //go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1691,7 +1594,6 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { func libc_open_trampoline() -//go:linkname libc_open libc_open //go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1712,7 +1614,6 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { func libc_openat_trampoline() -//go:linkname libc_openat libc_openat //go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1733,7 +1634,6 @@ func Pathconf(path string, name int) (val int, err error) { func libc_pathconf_trampoline() -//go:linkname libc_pathconf libc_pathconf //go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1755,7 +1655,6 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) { func libc_pread_trampoline() -//go:linkname libc_pread libc_pread //go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1777,7 +1676,6 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { func libc_pwrite_trampoline() -//go:linkname libc_pwrite libc_pwrite //go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1799,7 +1697,6 @@ func read(fd int, p []byte) (n int, err error) { func libc_read_trampoline() -//go:linkname libc_read libc_read //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1826,7 +1723,6 @@ func Readlink(path string, buf []byte) (n int, err error) { func libc_readlink_trampoline() -//go:linkname libc_readlink libc_readlink //go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1853,7 +1749,6 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { func libc_readlinkat_trampoline() -//go:linkname libc_readlinkat libc_readlinkat //go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1878,7 +1773,6 @@ func Rename(from string, to string) (err error) { func libc_rename_trampoline() -//go:linkname libc_rename libc_rename //go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1903,7 +1797,6 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { func libc_renameat_trampoline() -//go:linkname libc_renameat libc_renameat //go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1923,7 +1816,6 @@ func Revoke(path string) (err error) { func libc_revoke_trampoline() -//go:linkname libc_revoke libc_revoke //go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1943,7 +1835,6 @@ func Rmdir(path string) (err error) { func libc_rmdir_trampoline() -//go:linkname libc_rmdir libc_rmdir //go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1959,7 +1850,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { func libc_lseek_trampoline() -//go:linkname libc_lseek libc_lseek //go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1975,7 +1865,6 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err func libc_select_trampoline() -//go:linkname libc_select libc_select //go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1990,7 +1879,6 @@ func Setegid(egid int) (err error) { func libc_setegid_trampoline() -//go:linkname libc_setegid libc_setegid //go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2005,7 +1893,6 @@ func Seteuid(euid int) (err error) { func libc_seteuid_trampoline() -//go:linkname libc_seteuid libc_seteuid //go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2020,7 +1907,6 @@ func Setgid(gid int) (err error) { func libc_setgid_trampoline() -//go:linkname libc_setgid libc_setgid //go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2040,7 +1926,6 @@ func Setlogin(name string) (err error) { func libc_setlogin_trampoline() -//go:linkname libc_setlogin libc_setlogin //go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2055,7 +1940,6 @@ func Setpgid(pid int, pgid int) (err error) { func libc_setpgid_trampoline() -//go:linkname libc_setpgid libc_setpgid //go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2070,7 +1954,6 @@ func Setpriority(which int, who int, prio int) (err error) { func libc_setpriority_trampoline() -//go:linkname libc_setpriority libc_setpriority //go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2085,7 +1968,6 @@ func Setprivexec(flag int) (err error) { func libc_setprivexec_trampoline() -//go:linkname libc_setprivexec libc_setprivexec //go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2100,7 +1982,6 @@ func Setregid(rgid int, egid int) (err error) { func libc_setregid_trampoline() -//go:linkname libc_setregid libc_setregid //go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2115,7 +1996,6 @@ func Setreuid(ruid int, euid int) (err error) { func libc_setreuid_trampoline() -//go:linkname libc_setreuid libc_setreuid //go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2130,7 +2010,6 @@ func Setrlimit(which int, lim *Rlimit) (err error) { func libc_setrlimit_trampoline() -//go:linkname libc_setrlimit libc_setrlimit //go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2146,7 +2025,6 @@ func Setsid() (pid int, err error) { func libc_setsid_trampoline() -//go:linkname libc_setsid libc_setsid //go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2161,7 +2039,6 @@ func Settimeofday(tp *Timeval) (err error) { func libc_settimeofday_trampoline() -//go:linkname libc_settimeofday libc_settimeofday //go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2176,7 +2053,6 @@ func Setuid(uid int) (err error) { func libc_setuid_trampoline() -//go:linkname libc_setuid libc_setuid //go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2201,7 +2077,6 @@ func Symlink(path string, link string) (err error) { func libc_symlink_trampoline() -//go:linkname libc_symlink libc_symlink //go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2226,7 +2101,6 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { func libc_symlinkat_trampoline() -//go:linkname libc_symlinkat libc_symlinkat //go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2241,7 +2115,6 @@ func Sync() (err error) { func libc_sync_trampoline() -//go:linkname libc_sync libc_sync //go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2261,7 +2134,6 @@ func Truncate(path string, length int64) (err error) { func libc_truncate_trampoline() -//go:linkname libc_truncate libc_truncate //go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2274,7 +2146,6 @@ func Umask(newmask int) (oldmask int) { func libc_umask_trampoline() -//go:linkname libc_umask libc_umask //go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2294,7 +2165,6 @@ func Undelete(path string) (err error) { func libc_undelete_trampoline() -//go:linkname libc_undelete libc_undelete //go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2314,7 +2184,6 @@ func Unlink(path string) (err error) { func libc_unlink_trampoline() -//go:linkname libc_unlink libc_unlink //go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2334,7 +2203,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { func libc_unlinkat_trampoline() -//go:linkname libc_unlinkat libc_unlinkat //go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2354,7 +2222,6 @@ func Unmount(path string, flags int) (err error) { func libc_unmount_trampoline() -//go:linkname libc_unmount libc_unmount //go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2376,7 +2243,6 @@ func write(fd int, p []byte) (n int, err error) { func libc_write_trampoline() -//go:linkname libc_write libc_write //go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2392,7 +2258,6 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( func libc_mmap_trampoline() -//go:linkname libc_mmap libc_mmap //go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2407,7 +2272,6 @@ func munmap(addr uintptr, length uintptr) (err error) { func libc_munmap_trampoline() -//go:linkname libc_munmap libc_munmap //go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2444,7 +2308,6 @@ func Fstat(fd int, stat *Stat_t) (err error) { func libc_fstat_trampoline() -//go:linkname libc_fstat libc_fstat //go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2464,7 +2327,6 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { func libc_fstatat_trampoline() -//go:linkname libc_fstatat libc_fstatat //go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2479,7 +2341,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { func libc_fstatfs_trampoline() -//go:linkname libc_fstatfs libc_fstatfs //go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2495,7 +2356,6 @@ func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { func libc_getfsstat_trampoline() -//go:linkname libc_getfsstat libc_getfsstat //go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2515,12 +2375,11 @@ func Lstat(path string, stat *Stat_t) (err error) { func libc_lstat_trampoline() -//go:linkname libc_lstat libc_lstat //go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { err = errnoErr(e1) @@ -2530,7 +2389,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { func libc_ptrace_trampoline() -//go:linkname libc_ptrace libc_ptrace //go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2550,7 +2408,6 @@ func Stat(path string, stat *Stat_t) (err error) { func libc_stat_trampoline() -//go:linkname libc_stat libc_stat //go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -2570,5 +2427,4 @@ func Statfs(path string, stat *Statfs_t) (err error) { func libc_statfs_trampoline() -//go:linkname libc_statfs libc_statfs //go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go index d3af083f4..665dd9e4b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -14,22 +14,19 @@ import ( //go:cgo_import_dynamic libc_writev writev "libc.so" //go:cgo_import_dynamic libc_pwritev pwritev "libc.so" //go:cgo_import_dynamic libc_accept4 accept4 "libsocket.so" -//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" //go:linkname procreadv libc_readv //go:linkname procpreadv libc_preadv //go:linkname procwritev libc_writev //go:linkname procpwritev libc_pwritev //go:linkname procaccept4 libc_accept4 -//go:linkname procpipe2 libc_pipe2 var ( procreadv, procpreadv, procwritev, procpwritev, - procaccept4, - procpipe2 syscallFunc + procaccept4 syscallFunc ) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -102,13 +99,3 @@ func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, } return } - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0) - if e1 != 0 { - err = e1 - } - return -} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index a96165d4b..6dbb83716 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -11,6 +11,7 @@ import ( ) //go:cgo_import_dynamic libc_pipe pipe "libc.so" +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" //go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so" //go:cgo_import_dynamic libc_getcwd getcwd "libc.so" //go:cgo_import_dynamic libc_getgroups getgroups "libc.so" @@ -140,6 +141,7 @@ import ( //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" //go:linkname procpipe libc_pipe +//go:linkname procpipe2 libc_pipe2 //go:linkname procgetsockname libc_getsockname //go:linkname procGetcwd libc_getcwd //go:linkname procgetgroups libc_getgroups @@ -270,6 +272,7 @@ import ( var ( procpipe, + procpipe2, procgetsockname, procGetcwd, procgetgroups, @@ -412,6 +415,16 @@ func pipe(p *[2]_C_int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 0f5a3f697..f6742bdee 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -435,4 +435,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 36d5219ef..f7e525573 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -357,4 +357,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 3622ba14b..3f60977da 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -399,4 +399,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 6193c3dc0..dbedf4cba 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -302,4 +302,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 640b97434..eeff7e1dc 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -420,4 +420,5 @@ const ( SYS_OPENAT2 = 4437 SYS_PIDFD_GETFD = 4438 SYS_FACCESSAT2 = 4439 + SYS_PROCESS_MADVISE = 4440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 3467fbb5f..73cfa535c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -350,4 +350,5 @@ const ( SYS_OPENAT2 = 5437 SYS_PIDFD_GETFD = 5438 SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 0fc38d5a7..be74729e0 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -350,4 +350,5 @@ const ( SYS_OPENAT2 = 5437 SYS_PIDFD_GETFD = 5438 SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 999fd55bc..2a1047c81 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -420,4 +420,5 @@ const ( SYS_OPENAT2 = 4437 SYS_PIDFD_GETFD = 4438 SYS_FACCESSAT2 = 4439 + SYS_PROCESS_MADVISE = 4440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 1df0d7993..32707428c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -399,4 +399,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 4db39cca4..a58572f78 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -399,4 +399,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index e69274014..72a65b760 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -301,4 +301,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index a585aec4e..1fb9ae5d4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -364,4 +364,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index d047e567a..57636e09e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -378,4 +378,5 @@ const ( SYS_OPENAT2 = 437 SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go index 2c1f815e6..295859c50 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -219,6 +219,7 @@ const ( SizeofSockaddrUnix = 0x401 SizeofSockaddrDatalink = 0x80 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofIPv6MTUInfo = 0x20 diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go index b4a069ecb..a9ee0ffd4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -223,6 +223,7 @@ const ( SizeofSockaddrUnix = 0x401 SizeofSockaddrDatalink = 0x80 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofIPv6MTUInfo = 0x20 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index 830fbb35c..725b4bee2 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -269,6 +269,7 @@ const ( SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index e53a7c49f..080ffce32 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -274,6 +274,7 @@ const ( SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index 98be973ef..f2a77bc4e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -269,6 +269,7 @@ const ( SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index ddae5afe1..c9492428b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -274,6 +274,7 @@ const ( SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index c4772df23..85506a05d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -234,6 +234,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 2a3ec615f..3e9dad33e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -313,6 +313,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index e11e95499..e00e61554 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -309,6 +309,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index b91c2ae0f..5da13c871 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -311,6 +311,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index c6fe1d097..995ecf9d4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -309,6 +309,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPMreqn = 0xc SizeofIPv6Mreq = 0x14 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 504ef131f..9f3b1a4e5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1381,6 +1381,11 @@ const ( IFLA_PROP_LIST = 0x34 IFLA_ALT_IFNAME = 0x35 IFLA_PERM_ADDRESS = 0x36 + IFLA_PROTO_DOWN_REASON = 0x37 + IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 + IFLA_PROTO_DOWN_REASON_MASK = 0x1 + IFLA_PROTO_DOWN_REASON_VALUE = 0x2 + IFLA_PROTO_DOWN_REASON_MAX = 0x2 IFLA_INET_UNSPEC = 0x0 IFLA_INET_CONF = 0x1 IFLA_INET6_UNSPEC = 0x0 @@ -1475,6 +1480,7 @@ const ( IFLA_BRPORT_ISOLATED = 0x21 IFLA_BRPORT_BACKUP_PORT = 0x22 IFLA_BRPORT_MRP_RING_OPEN = 0x23 + IFLA_BRPORT_MRP_IN_OPEN = 0x24 IFLA_INFO_UNSPEC = 0x0 IFLA_INFO_KIND = 0x1 IFLA_INFO_DATA = 0x2 @@ -1673,6 +1679,7 @@ const ( IFLA_HSR_SUPERVISION_ADDR = 0x4 IFLA_HSR_SEQ_NR = 0x5 IFLA_HSR_VERSION = 0x6 + IFLA_HSR_PROTOCOL = 0x7 IFLA_STATS_UNSPEC = 0x0 IFLA_STATS_LINK_64 = 0x1 IFLA_STATS_LINK_XSTATS = 0x2 @@ -2217,10 +2224,12 @@ const ( ) const ( - NETNSA_NONE = 0x0 - NETNSA_NSID = 0x1 - NETNSA_PID = 0x2 - NETNSA_FD = 0x3 + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 + NETNSA_TARGET_NSID = 0x4 + NETNSA_CURRENT_NSID = 0x5 ) type XDPRingOffset struct { @@ -2370,281 +2379,309 @@ const ( ) const ( - BPF_REG_0 = 0x0 - BPF_REG_1 = 0x1 - BPF_REG_2 = 0x2 - BPF_REG_3 = 0x3 - BPF_REG_4 = 0x4 - BPF_REG_5 = 0x5 - BPF_REG_6 = 0x6 - BPF_REG_7 = 0x7 - BPF_REG_8 = 0x8 - BPF_REG_9 = 0x9 - BPF_REG_10 = 0xa - BPF_MAP_CREATE = 0x0 - BPF_MAP_LOOKUP_ELEM = 0x1 - BPF_MAP_UPDATE_ELEM = 0x2 - BPF_MAP_DELETE_ELEM = 0x3 - BPF_MAP_GET_NEXT_KEY = 0x4 - BPF_PROG_LOAD = 0x5 - BPF_OBJ_PIN = 0x6 - BPF_OBJ_GET = 0x7 - BPF_PROG_ATTACH = 0x8 - BPF_PROG_DETACH = 0x9 - BPF_PROG_TEST_RUN = 0xa - BPF_PROG_GET_NEXT_ID = 0xb - BPF_MAP_GET_NEXT_ID = 0xc - BPF_PROG_GET_FD_BY_ID = 0xd - BPF_MAP_GET_FD_BY_ID = 0xe - BPF_OBJ_GET_INFO_BY_FD = 0xf - BPF_PROG_QUERY = 0x10 - BPF_RAW_TRACEPOINT_OPEN = 0x11 - BPF_BTF_LOAD = 0x12 - BPF_BTF_GET_FD_BY_ID = 0x13 - BPF_TASK_FD_QUERY = 0x14 - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 - BPF_MAP_FREEZE = 0x16 - BPF_BTF_GET_NEXT_ID = 0x17 - BPF_MAP_LOOKUP_BATCH = 0x18 - BPF_MAP_LOOKUP_AND_DELETE_BATCH = 0x19 - BPF_MAP_UPDATE_BATCH = 0x1a - BPF_MAP_DELETE_BATCH = 0x1b - BPF_LINK_CREATE = 0x1c - BPF_LINK_UPDATE = 0x1d - BPF_LINK_GET_FD_BY_ID = 0x1e - BPF_LINK_GET_NEXT_ID = 0x1f - BPF_ENABLE_STATS = 0x20 - BPF_ITER_CREATE = 0x21 - BPF_MAP_TYPE_UNSPEC = 0x0 - BPF_MAP_TYPE_HASH = 0x1 - BPF_MAP_TYPE_ARRAY = 0x2 - BPF_MAP_TYPE_PROG_ARRAY = 0x3 - BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 - BPF_MAP_TYPE_PERCPU_HASH = 0x5 - BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 - BPF_MAP_TYPE_STACK_TRACE = 0x7 - BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 - BPF_MAP_TYPE_LRU_HASH = 0x9 - BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa - BPF_MAP_TYPE_LPM_TRIE = 0xb - BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc - BPF_MAP_TYPE_HASH_OF_MAPS = 0xd - BPF_MAP_TYPE_DEVMAP = 0xe - BPF_MAP_TYPE_SOCKMAP = 0xf - BPF_MAP_TYPE_CPUMAP = 0x10 - BPF_MAP_TYPE_XSKMAP = 0x11 - BPF_MAP_TYPE_SOCKHASH = 0x12 - BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 - BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 - BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 - BPF_MAP_TYPE_QUEUE = 0x16 - BPF_MAP_TYPE_STACK = 0x17 - BPF_MAP_TYPE_SK_STORAGE = 0x18 - BPF_MAP_TYPE_DEVMAP_HASH = 0x19 - BPF_MAP_TYPE_STRUCT_OPS = 0x1a - BPF_MAP_TYPE_RINGBUF = 0x1b - BPF_PROG_TYPE_UNSPEC = 0x0 - BPF_PROG_TYPE_SOCKET_FILTER = 0x1 - BPF_PROG_TYPE_KPROBE = 0x2 - BPF_PROG_TYPE_SCHED_CLS = 0x3 - BPF_PROG_TYPE_SCHED_ACT = 0x4 - BPF_PROG_TYPE_TRACEPOINT = 0x5 - BPF_PROG_TYPE_XDP = 0x6 - BPF_PROG_TYPE_PERF_EVENT = 0x7 - BPF_PROG_TYPE_CGROUP_SKB = 0x8 - BPF_PROG_TYPE_CGROUP_SOCK = 0x9 - BPF_PROG_TYPE_LWT_IN = 0xa - BPF_PROG_TYPE_LWT_OUT = 0xb - BPF_PROG_TYPE_LWT_XMIT = 0xc - BPF_PROG_TYPE_SOCK_OPS = 0xd - BPF_PROG_TYPE_SK_SKB = 0xe - BPF_PROG_TYPE_CGROUP_DEVICE = 0xf - BPF_PROG_TYPE_SK_MSG = 0x10 - BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 - BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 - BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 - BPF_PROG_TYPE_LIRC_MODE2 = 0x14 - BPF_PROG_TYPE_SK_REUSEPORT = 0x15 - BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 - BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17 - BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18 - BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19 - BPF_PROG_TYPE_TRACING = 0x1a - BPF_PROG_TYPE_STRUCT_OPS = 0x1b - BPF_PROG_TYPE_EXT = 0x1c - BPF_PROG_TYPE_LSM = 0x1d - BPF_CGROUP_INET_INGRESS = 0x0 - BPF_CGROUP_INET_EGRESS = 0x1 - BPF_CGROUP_INET_SOCK_CREATE = 0x2 - BPF_CGROUP_SOCK_OPS = 0x3 - BPF_SK_SKB_STREAM_PARSER = 0x4 - BPF_SK_SKB_STREAM_VERDICT = 0x5 - BPF_CGROUP_DEVICE = 0x6 - BPF_SK_MSG_VERDICT = 0x7 - BPF_CGROUP_INET4_BIND = 0x8 - BPF_CGROUP_INET6_BIND = 0x9 - BPF_CGROUP_INET4_CONNECT = 0xa - BPF_CGROUP_INET6_CONNECT = 0xb - BPF_CGROUP_INET4_POST_BIND = 0xc - BPF_CGROUP_INET6_POST_BIND = 0xd - BPF_CGROUP_UDP4_SENDMSG = 0xe - BPF_CGROUP_UDP6_SENDMSG = 0xf - BPF_LIRC_MODE2 = 0x10 - BPF_FLOW_DISSECTOR = 0x11 - BPF_CGROUP_SYSCTL = 0x12 - BPF_CGROUP_UDP4_RECVMSG = 0x13 - BPF_CGROUP_UDP6_RECVMSG = 0x14 - BPF_CGROUP_GETSOCKOPT = 0x15 - BPF_CGROUP_SETSOCKOPT = 0x16 - BPF_TRACE_RAW_TP = 0x17 - BPF_TRACE_FENTRY = 0x18 - BPF_TRACE_FEXIT = 0x19 - BPF_MODIFY_RETURN = 0x1a - BPF_LSM_MAC = 0x1b - BPF_TRACE_ITER = 0x1c - BPF_CGROUP_INET4_GETPEERNAME = 0x1d - BPF_CGROUP_INET6_GETPEERNAME = 0x1e - BPF_CGROUP_INET4_GETSOCKNAME = 0x1f - BPF_CGROUP_INET6_GETSOCKNAME = 0x20 - BPF_XDP_DEVMAP = 0x21 - BPF_LINK_TYPE_UNSPEC = 0x0 - BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1 - BPF_LINK_TYPE_TRACING = 0x2 - BPF_LINK_TYPE_CGROUP = 0x3 - BPF_LINK_TYPE_ITER = 0x4 - BPF_LINK_TYPE_NETNS = 0x5 - BPF_ANY = 0x0 - BPF_NOEXIST = 0x1 - BPF_EXIST = 0x2 - BPF_F_LOCK = 0x4 - BPF_F_NO_PREALLOC = 0x1 - BPF_F_NO_COMMON_LRU = 0x2 - BPF_F_NUMA_NODE = 0x4 - BPF_F_RDONLY = 0x8 - BPF_F_WRONLY = 0x10 - BPF_F_STACK_BUILD_ID = 0x20 - BPF_F_ZERO_SEED = 0x40 - BPF_F_RDONLY_PROG = 0x80 - BPF_F_WRONLY_PROG = 0x100 - BPF_F_CLONE = 0x200 - BPF_F_MMAPABLE = 0x400 - BPF_STATS_RUN_TIME = 0x0 - BPF_STACK_BUILD_ID_EMPTY = 0x0 - BPF_STACK_BUILD_ID_VALID = 0x1 - BPF_STACK_BUILD_ID_IP = 0x2 - BPF_F_RECOMPUTE_CSUM = 0x1 - BPF_F_INVALIDATE_HASH = 0x2 - BPF_F_HDR_FIELD_MASK = 0xf - BPF_F_PSEUDO_HDR = 0x10 - BPF_F_MARK_MANGLED_0 = 0x20 - BPF_F_MARK_ENFORCE = 0x40 - BPF_F_INGRESS = 0x1 - BPF_F_TUNINFO_IPV6 = 0x1 - BPF_F_SKIP_FIELD_MASK = 0xff - BPF_F_USER_STACK = 0x100 - BPF_F_FAST_STACK_CMP = 0x200 - BPF_F_REUSE_STACKID = 0x400 - BPF_F_USER_BUILD_ID = 0x800 - BPF_F_ZERO_CSUM_TX = 0x2 - BPF_F_DONT_FRAGMENT = 0x4 - BPF_F_SEQ_NUMBER = 0x8 - BPF_F_INDEX_MASK = 0xffffffff - BPF_F_CURRENT_CPU = 0xffffffff - BPF_F_CTXLEN_MASK = 0xfffff00000000 - BPF_F_CURRENT_NETNS = -0x1 - BPF_CSUM_LEVEL_QUERY = 0x0 - BPF_CSUM_LEVEL_INC = 0x1 - BPF_CSUM_LEVEL_DEC = 0x2 - BPF_CSUM_LEVEL_RESET = 0x3 - BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 - BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 - BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 - BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 - BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 - BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20 - BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff - BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 - BPF_F_SYSCTL_BASE_NAME = 0x1 - BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_F_GET_BRANCH_RECORDS_SIZE = 0x1 - BPF_RB_NO_WAKEUP = 0x1 - BPF_RB_FORCE_WAKEUP = 0x2 - BPF_RB_AVAIL_DATA = 0x0 - BPF_RB_RING_SIZE = 0x1 - BPF_RB_CONS_POS = 0x2 - BPF_RB_PROD_POS = 0x3 - BPF_RINGBUF_BUSY_BIT = 0x80000000 - BPF_RINGBUF_DISCARD_BIT = 0x40000000 - BPF_RINGBUF_HDR_SZ = 0x8 - BPF_ADJ_ROOM_NET = 0x0 - BPF_ADJ_ROOM_MAC = 0x1 - BPF_HDR_START_MAC = 0x0 - BPF_HDR_START_NET = 0x1 - BPF_LWT_ENCAP_SEG6 = 0x0 - BPF_LWT_ENCAP_SEG6_INLINE = 0x1 - BPF_LWT_ENCAP_IP = 0x2 - BPF_OK = 0x0 - BPF_DROP = 0x2 - BPF_REDIRECT = 0x7 - BPF_LWT_REROUTE = 0x80 - BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 - BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 - BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 - BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf - BPF_SOCK_OPS_VOID = 0x0 - BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 - BPF_SOCK_OPS_RWND_INIT = 0x2 - BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 - BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 - BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 - BPF_SOCK_OPS_NEEDS_ECN = 0x6 - BPF_SOCK_OPS_BASE_RTT = 0x7 - BPF_SOCK_OPS_RTO_CB = 0x8 - BPF_SOCK_OPS_RETRANS_CB = 0x9 - BPF_SOCK_OPS_STATE_CB = 0xa - BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb - BPF_SOCK_OPS_RTT_CB = 0xc - BPF_TCP_ESTABLISHED = 0x1 - BPF_TCP_SYN_SENT = 0x2 - BPF_TCP_SYN_RECV = 0x3 - BPF_TCP_FIN_WAIT1 = 0x4 - BPF_TCP_FIN_WAIT2 = 0x5 - BPF_TCP_TIME_WAIT = 0x6 - BPF_TCP_CLOSE = 0x7 - BPF_TCP_CLOSE_WAIT = 0x8 - BPF_TCP_LAST_ACK = 0x9 - BPF_TCP_LISTEN = 0xa - BPF_TCP_CLOSING = 0xb - BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd - TCP_BPF_IW = 0x3e9 - TCP_BPF_SNDCWND_CLAMP = 0x3ea - BPF_DEVCG_ACC_MKNOD = 0x1 - BPF_DEVCG_ACC_READ = 0x2 - BPF_DEVCG_ACC_WRITE = 0x4 - BPF_DEVCG_DEV_BLOCK = 0x1 - BPF_DEVCG_DEV_CHAR = 0x2 - BPF_FIB_LOOKUP_DIRECT = 0x1 - BPF_FIB_LOOKUP_OUTPUT = 0x2 - BPF_FIB_LKUP_RET_SUCCESS = 0x0 - BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 - BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 - BPF_FIB_LKUP_RET_PROHIBIT = 0x3 - BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 - BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 - BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 - BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 - BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 - BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 - BPF_FD_TYPE_TRACEPOINT = 0x1 - BPF_FD_TYPE_KPROBE = 0x2 - BPF_FD_TYPE_KRETPROBE = 0x3 - BPF_FD_TYPE_UPROBE = 0x4 - BPF_FD_TYPE_URETPROBE = 0x5 - BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1 - BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2 - BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4 + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_FREEZE = 0x16 + BPF_BTF_GET_NEXT_ID = 0x17 + BPF_MAP_LOOKUP_BATCH = 0x18 + BPF_MAP_LOOKUP_AND_DELETE_BATCH = 0x19 + BPF_MAP_UPDATE_BATCH = 0x1a + BPF_MAP_DELETE_BATCH = 0x1b + BPF_LINK_CREATE = 0x1c + BPF_LINK_UPDATE = 0x1d + BPF_LINK_GET_FD_BY_ID = 0x1e + BPF_LINK_GET_NEXT_ID = 0x1f + BPF_ENABLE_STATS = 0x20 + BPF_ITER_CREATE = 0x21 + BPF_LINK_DETACH = 0x22 + BPF_PROG_BIND_MAP = 0x23 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_MAP_TYPE_SK_STORAGE = 0x18 + BPF_MAP_TYPE_DEVMAP_HASH = 0x19 + BPF_MAP_TYPE_STRUCT_OPS = 0x1a + BPF_MAP_TYPE_RINGBUF = 0x1b + BPF_MAP_TYPE_INODE_STORAGE = 0x1c + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17 + BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18 + BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19 + BPF_PROG_TYPE_TRACING = 0x1a + BPF_PROG_TYPE_STRUCT_OPS = 0x1b + BPF_PROG_TYPE_EXT = 0x1c + BPF_PROG_TYPE_LSM = 0x1d + BPF_PROG_TYPE_SK_LOOKUP = 0x1e + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_CGROUP_SYSCTL = 0x12 + BPF_CGROUP_UDP4_RECVMSG = 0x13 + BPF_CGROUP_UDP6_RECVMSG = 0x14 + BPF_CGROUP_GETSOCKOPT = 0x15 + BPF_CGROUP_SETSOCKOPT = 0x16 + BPF_TRACE_RAW_TP = 0x17 + BPF_TRACE_FENTRY = 0x18 + BPF_TRACE_FEXIT = 0x19 + BPF_MODIFY_RETURN = 0x1a + BPF_LSM_MAC = 0x1b + BPF_TRACE_ITER = 0x1c + BPF_CGROUP_INET4_GETPEERNAME = 0x1d + BPF_CGROUP_INET6_GETPEERNAME = 0x1e + BPF_CGROUP_INET4_GETSOCKNAME = 0x1f + BPF_CGROUP_INET6_GETSOCKNAME = 0x20 + BPF_XDP_DEVMAP = 0x21 + BPF_CGROUP_INET_SOCK_RELEASE = 0x22 + BPF_XDP_CPUMAP = 0x23 + BPF_SK_LOOKUP = 0x24 + BPF_XDP = 0x25 + BPF_LINK_TYPE_UNSPEC = 0x0 + BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1 + BPF_LINK_TYPE_TRACING = 0x2 + BPF_LINK_TYPE_CGROUP = 0x3 + BPF_LINK_TYPE_ITER = 0x4 + BPF_LINK_TYPE_NETNS = 0x5 + BPF_LINK_TYPE_XDP = 0x6 + BPF_ANY = 0x0 + BPF_NOEXIST = 0x1 + BPF_EXIST = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NUMA_NODE = 0x4 + BPF_F_RDONLY = 0x8 + BPF_F_WRONLY = 0x10 + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_ZERO_SEED = 0x40 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_CLONE = 0x200 + BPF_F_MMAPABLE = 0x400 + BPF_F_PRESERVE_ELEMS = 0x800 + BPF_F_INNER_MAP = 0x1000 + BPF_STATS_RUN_TIME = 0x0 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_INGRESS = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_USER_STACK = 0x100 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_NETNS = -0x1 + BPF_CSUM_LEVEL_QUERY = 0x0 + BPF_CSUM_LEVEL_INC = 0x1 + BPF_CSUM_LEVEL_DEC = 0x2 + BPF_CSUM_LEVEL_RESET = 0x3 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_LOCAL_STORAGE_GET_F_CREATE = 0x1 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_F_GET_BRANCH_RECORDS_SIZE = 0x1 + BPF_RB_NO_WAKEUP = 0x1 + BPF_RB_FORCE_WAKEUP = 0x2 + BPF_RB_AVAIL_DATA = 0x0 + BPF_RB_RING_SIZE = 0x1 + BPF_RB_CONS_POS = 0x2 + BPF_RB_PROD_POS = 0x3 + BPF_RINGBUF_BUSY_BIT = 0x80000000 + BPF_RINGBUF_DISCARD_BIT = 0x40000000 + BPF_RINGBUF_HDR_SZ = 0x8 + BPF_SK_LOOKUP_F_REPLACE = 0x1 + BPF_SK_LOOKUP_F_NO_REUSEPORT = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_ADJ_ROOM_MAC = 0x1 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_LWT_ENCAP_IP = 0x2 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_LWT_REROUTE = 0x80 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = 0x10 + BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20 + BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = 0x40 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7f + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_SOCK_OPS_RTT_CB = 0xc + BPF_SOCK_OPS_PARSE_HDR_OPT_CB = 0xd + BPF_SOCK_OPS_HDR_OPT_LEN_CB = 0xe + BPF_SOCK_OPS_WRITE_HDR_OPT_CB = 0xf + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea + TCP_BPF_DELACK_MAX = 0x3eb + TCP_BPF_RTO_MIN = 0x3ec + TCP_BPF_SYN = 0x3ed + TCP_BPF_SYN_IP = 0x3ee + TCP_BPF_SYN_MAC = 0x3ef + BPF_LOAD_HDR_OPT_TCP_SYN = 0x1 + BPF_WRITE_HDR_TCP_CURRENT_MSS = 0x1 + BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 0x2 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 + BPF_FIB_LOOKUP_DIRECT = 0x1 + BPF_FIB_LOOKUP_OUTPUT = 0x2 + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 + BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1 + BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2 + BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4 ) const ( @@ -2681,6 +2718,7 @@ const ( RTNLGRP_IPV4_MROUTE_R = 0x1e RTNLGRP_IPV6_MROUTE_R = 0x1f RTNLGRP_NEXTHOP = 0x20 + RTNLGRP_BRVLAN = 0x21 ) type CapUserHeader struct { @@ -2775,132 +2813,317 @@ const ( ) const ( - DEVLINK_CMD_UNSPEC = 0x0 - DEVLINK_CMD_GET = 0x1 - DEVLINK_CMD_SET = 0x2 - DEVLINK_CMD_NEW = 0x3 - DEVLINK_CMD_DEL = 0x4 - DEVLINK_CMD_PORT_GET = 0x5 - DEVLINK_CMD_PORT_SET = 0x6 - DEVLINK_CMD_PORT_NEW = 0x7 - DEVLINK_CMD_PORT_DEL = 0x8 - DEVLINK_CMD_PORT_SPLIT = 0x9 - DEVLINK_CMD_PORT_UNSPLIT = 0xa - DEVLINK_CMD_SB_GET = 0xb - DEVLINK_CMD_SB_SET = 0xc - DEVLINK_CMD_SB_NEW = 0xd - DEVLINK_CMD_SB_DEL = 0xe - DEVLINK_CMD_SB_POOL_GET = 0xf - DEVLINK_CMD_SB_POOL_SET = 0x10 - DEVLINK_CMD_SB_POOL_NEW = 0x11 - DEVLINK_CMD_SB_POOL_DEL = 0x12 - DEVLINK_CMD_SB_PORT_POOL_GET = 0x13 - DEVLINK_CMD_SB_PORT_POOL_SET = 0x14 - DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15 - DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16 - DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17 - DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18 - DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19 - DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a - DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b - DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c - DEVLINK_CMD_ESWITCH_GET = 0x1d - DEVLINK_CMD_ESWITCH_SET = 0x1e - DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f - DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20 - DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21 - DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22 - DEVLINK_CMD_MAX = 0x48 - DEVLINK_PORT_TYPE_NOTSET = 0x0 - DEVLINK_PORT_TYPE_AUTO = 0x1 - DEVLINK_PORT_TYPE_ETH = 0x2 - DEVLINK_PORT_TYPE_IB = 0x3 - DEVLINK_SB_POOL_TYPE_INGRESS = 0x0 - DEVLINK_SB_POOL_TYPE_EGRESS = 0x1 - DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0 - DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1 - DEVLINK_ESWITCH_MODE_LEGACY = 0x0 - DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1 - DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0 - DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1 - DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2 - DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3 - DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0 - DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1 - DEVLINK_ATTR_UNSPEC = 0x0 - DEVLINK_ATTR_BUS_NAME = 0x1 - DEVLINK_ATTR_DEV_NAME = 0x2 - DEVLINK_ATTR_PORT_INDEX = 0x3 - DEVLINK_ATTR_PORT_TYPE = 0x4 - DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5 - DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6 - DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7 - DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8 - DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9 - DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa - DEVLINK_ATTR_SB_INDEX = 0xb - DEVLINK_ATTR_SB_SIZE = 0xc - DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd - DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe - DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf - DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10 - DEVLINK_ATTR_SB_POOL_INDEX = 0x11 - DEVLINK_ATTR_SB_POOL_TYPE = 0x12 - DEVLINK_ATTR_SB_POOL_SIZE = 0x13 - DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14 - DEVLINK_ATTR_SB_THRESHOLD = 0x15 - DEVLINK_ATTR_SB_TC_INDEX = 0x16 - DEVLINK_ATTR_SB_OCC_CUR = 0x17 - DEVLINK_ATTR_SB_OCC_MAX = 0x18 - DEVLINK_ATTR_ESWITCH_MODE = 0x19 - DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a - DEVLINK_ATTR_DPIPE_TABLES = 0x1b - DEVLINK_ATTR_DPIPE_TABLE = 0x1c - DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d - DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e - DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f - DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20 - DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21 - DEVLINK_ATTR_DPIPE_ENTRIES = 0x22 - DEVLINK_ATTR_DPIPE_ENTRY = 0x23 - DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24 - DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25 - DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26 - DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27 - DEVLINK_ATTR_DPIPE_MATCH = 0x28 - DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29 - DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a - DEVLINK_ATTR_DPIPE_ACTION = 0x2b - DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c - DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d - DEVLINK_ATTR_DPIPE_VALUE = 0x2e - DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f - DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30 - DEVLINK_ATTR_DPIPE_HEADERS = 0x31 - DEVLINK_ATTR_DPIPE_HEADER = 0x32 - DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33 - DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34 - DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35 - DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36 - DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37 - DEVLINK_ATTR_DPIPE_FIELD = 0x38 - DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39 - DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a - DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b - DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c - DEVLINK_ATTR_PAD = 0x3d - DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e - DEVLINK_ATTR_MAX = 0x94 - DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 - DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 - DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 - DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0 - DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0 - DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0 - DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0 - DEVLINK_DPIPE_HEADER_ETHERNET = 0x0 - DEVLINK_DPIPE_HEADER_IPV4 = 0x1 - DEVLINK_DPIPE_HEADER_IPV6 = 0x2 + DEVLINK_CMD_UNSPEC = 0x0 + DEVLINK_CMD_GET = 0x1 + DEVLINK_CMD_SET = 0x2 + DEVLINK_CMD_NEW = 0x3 + DEVLINK_CMD_DEL = 0x4 + DEVLINK_CMD_PORT_GET = 0x5 + DEVLINK_CMD_PORT_SET = 0x6 + DEVLINK_CMD_PORT_NEW = 0x7 + DEVLINK_CMD_PORT_DEL = 0x8 + DEVLINK_CMD_PORT_SPLIT = 0x9 + DEVLINK_CMD_PORT_UNSPLIT = 0xa + DEVLINK_CMD_SB_GET = 0xb + DEVLINK_CMD_SB_SET = 0xc + DEVLINK_CMD_SB_NEW = 0xd + DEVLINK_CMD_SB_DEL = 0xe + DEVLINK_CMD_SB_POOL_GET = 0xf + DEVLINK_CMD_SB_POOL_SET = 0x10 + DEVLINK_CMD_SB_POOL_NEW = 0x11 + DEVLINK_CMD_SB_POOL_DEL = 0x12 + DEVLINK_CMD_SB_PORT_POOL_GET = 0x13 + DEVLINK_CMD_SB_PORT_POOL_SET = 0x14 + DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15 + DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16 + DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17 + DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18 + DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19 + DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a + DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b + DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c + DEVLINK_CMD_ESWITCH_GET = 0x1d + DEVLINK_CMD_ESWITCH_SET = 0x1e + DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f + DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20 + DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21 + DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22 + DEVLINK_CMD_RESOURCE_SET = 0x23 + DEVLINK_CMD_RESOURCE_DUMP = 0x24 + DEVLINK_CMD_RELOAD = 0x25 + DEVLINK_CMD_PARAM_GET = 0x26 + DEVLINK_CMD_PARAM_SET = 0x27 + DEVLINK_CMD_PARAM_NEW = 0x28 + DEVLINK_CMD_PARAM_DEL = 0x29 + DEVLINK_CMD_REGION_GET = 0x2a + DEVLINK_CMD_REGION_SET = 0x2b + DEVLINK_CMD_REGION_NEW = 0x2c + DEVLINK_CMD_REGION_DEL = 0x2d + DEVLINK_CMD_REGION_READ = 0x2e + DEVLINK_CMD_PORT_PARAM_GET = 0x2f + DEVLINK_CMD_PORT_PARAM_SET = 0x30 + DEVLINK_CMD_PORT_PARAM_NEW = 0x31 + DEVLINK_CMD_PORT_PARAM_DEL = 0x32 + DEVLINK_CMD_INFO_GET = 0x33 + DEVLINK_CMD_HEALTH_REPORTER_GET = 0x34 + DEVLINK_CMD_HEALTH_REPORTER_SET = 0x35 + DEVLINK_CMD_HEALTH_REPORTER_RECOVER = 0x36 + DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE = 0x37 + DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET = 0x38 + DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR = 0x39 + DEVLINK_CMD_FLASH_UPDATE = 0x3a + DEVLINK_CMD_FLASH_UPDATE_END = 0x3b + DEVLINK_CMD_FLASH_UPDATE_STATUS = 0x3c + DEVLINK_CMD_TRAP_GET = 0x3d + DEVLINK_CMD_TRAP_SET = 0x3e + DEVLINK_CMD_TRAP_NEW = 0x3f + DEVLINK_CMD_TRAP_DEL = 0x40 + DEVLINK_CMD_TRAP_GROUP_GET = 0x41 + DEVLINK_CMD_TRAP_GROUP_SET = 0x42 + DEVLINK_CMD_TRAP_GROUP_NEW = 0x43 + DEVLINK_CMD_TRAP_GROUP_DEL = 0x44 + DEVLINK_CMD_TRAP_POLICER_GET = 0x45 + DEVLINK_CMD_TRAP_POLICER_SET = 0x46 + DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 + DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 + DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 + DEVLINK_CMD_MAX = 0x49 + DEVLINK_PORT_TYPE_NOTSET = 0x0 + DEVLINK_PORT_TYPE_AUTO = 0x1 + DEVLINK_PORT_TYPE_ETH = 0x2 + DEVLINK_PORT_TYPE_IB = 0x3 + DEVLINK_SB_POOL_TYPE_INGRESS = 0x0 + DEVLINK_SB_POOL_TYPE_EGRESS = 0x1 + DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0 + DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1 + DEVLINK_ESWITCH_MODE_LEGACY = 0x0 + DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1 + DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0 + DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1 + DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2 + DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3 + DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0 + DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1 + DEVLINK_PORT_FLAVOUR_PHYSICAL = 0x0 + DEVLINK_PORT_FLAVOUR_CPU = 0x1 + DEVLINK_PORT_FLAVOUR_DSA = 0x2 + DEVLINK_PORT_FLAVOUR_PCI_PF = 0x3 + DEVLINK_PORT_FLAVOUR_PCI_VF = 0x4 + DEVLINK_PORT_FLAVOUR_VIRTUAL = 0x5 + DEVLINK_PORT_FLAVOUR_UNUSED = 0x6 + DEVLINK_PARAM_CMODE_RUNTIME = 0x0 + DEVLINK_PARAM_CMODE_DRIVERINIT = 0x1 + DEVLINK_PARAM_CMODE_PERMANENT = 0x2 + DEVLINK_PARAM_CMODE_MAX = 0x2 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER = 0x0 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH = 0x1 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK = 0x2 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN = 0x3 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS = 0x1 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER = 0x2 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK = 0x3 + DEVLINK_ATTR_STATS_RX_PACKETS = 0x0 + DEVLINK_ATTR_STATS_RX_BYTES = 0x1 + DEVLINK_ATTR_STATS_RX_DROPPED = 0x2 + DEVLINK_ATTR_STATS_MAX = 0x2 + DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT = 0x0 + DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT = 0x1 + DEVLINK_FLASH_OVERWRITE_MAX_BIT = 0x1 + DEVLINK_TRAP_ACTION_DROP = 0x0 + DEVLINK_TRAP_ACTION_TRAP = 0x1 + DEVLINK_TRAP_ACTION_MIRROR = 0x2 + DEVLINK_TRAP_TYPE_DROP = 0x0 + DEVLINK_TRAP_TYPE_EXCEPTION = 0x1 + DEVLINK_TRAP_TYPE_CONTROL = 0x2 + DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT = 0x0 + DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE = 0x1 + DEVLINK_RELOAD_ACTION_UNSPEC = 0x0 + DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 0x1 + DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 0x2 + DEVLINK_RELOAD_ACTION_MAX = 0x2 + DEVLINK_RELOAD_LIMIT_UNSPEC = 0x0 + DEVLINK_RELOAD_LIMIT_NO_RESET = 0x1 + DEVLINK_RELOAD_LIMIT_MAX = 0x1 + DEVLINK_ATTR_UNSPEC = 0x0 + DEVLINK_ATTR_BUS_NAME = 0x1 + DEVLINK_ATTR_DEV_NAME = 0x2 + DEVLINK_ATTR_PORT_INDEX = 0x3 + DEVLINK_ATTR_PORT_TYPE = 0x4 + DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5 + DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6 + DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7 + DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8 + DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9 + DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa + DEVLINK_ATTR_SB_INDEX = 0xb + DEVLINK_ATTR_SB_SIZE = 0xc + DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd + DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe + DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf + DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10 + DEVLINK_ATTR_SB_POOL_INDEX = 0x11 + DEVLINK_ATTR_SB_POOL_TYPE = 0x12 + DEVLINK_ATTR_SB_POOL_SIZE = 0x13 + DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14 + DEVLINK_ATTR_SB_THRESHOLD = 0x15 + DEVLINK_ATTR_SB_TC_INDEX = 0x16 + DEVLINK_ATTR_SB_OCC_CUR = 0x17 + DEVLINK_ATTR_SB_OCC_MAX = 0x18 + DEVLINK_ATTR_ESWITCH_MODE = 0x19 + DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a + DEVLINK_ATTR_DPIPE_TABLES = 0x1b + DEVLINK_ATTR_DPIPE_TABLE = 0x1c + DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d + DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e + DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f + DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20 + DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21 + DEVLINK_ATTR_DPIPE_ENTRIES = 0x22 + DEVLINK_ATTR_DPIPE_ENTRY = 0x23 + DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24 + DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25 + DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26 + DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27 + DEVLINK_ATTR_DPIPE_MATCH = 0x28 + DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29 + DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a + DEVLINK_ATTR_DPIPE_ACTION = 0x2b + DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c + DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d + DEVLINK_ATTR_DPIPE_VALUE = 0x2e + DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f + DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30 + DEVLINK_ATTR_DPIPE_HEADERS = 0x31 + DEVLINK_ATTR_DPIPE_HEADER = 0x32 + DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33 + DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34 + DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35 + DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36 + DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37 + DEVLINK_ATTR_DPIPE_FIELD = 0x38 + DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39 + DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a + DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b + DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c + DEVLINK_ATTR_PAD = 0x3d + DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e + DEVLINK_ATTR_RESOURCE_LIST = 0x3f + DEVLINK_ATTR_RESOURCE = 0x40 + DEVLINK_ATTR_RESOURCE_NAME = 0x41 + DEVLINK_ATTR_RESOURCE_ID = 0x42 + DEVLINK_ATTR_RESOURCE_SIZE = 0x43 + DEVLINK_ATTR_RESOURCE_SIZE_NEW = 0x44 + DEVLINK_ATTR_RESOURCE_SIZE_VALID = 0x45 + DEVLINK_ATTR_RESOURCE_SIZE_MIN = 0x46 + DEVLINK_ATTR_RESOURCE_SIZE_MAX = 0x47 + DEVLINK_ATTR_RESOURCE_SIZE_GRAN = 0x48 + DEVLINK_ATTR_RESOURCE_UNIT = 0x49 + DEVLINK_ATTR_RESOURCE_OCC = 0x4a + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID = 0x4b + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS = 0x4c + DEVLINK_ATTR_PORT_FLAVOUR = 0x4d + DEVLINK_ATTR_PORT_NUMBER = 0x4e + DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER = 0x4f + DEVLINK_ATTR_PARAM = 0x50 + DEVLINK_ATTR_PARAM_NAME = 0x51 + DEVLINK_ATTR_PARAM_GENERIC = 0x52 + DEVLINK_ATTR_PARAM_TYPE = 0x53 + DEVLINK_ATTR_PARAM_VALUES_LIST = 0x54 + DEVLINK_ATTR_PARAM_VALUE = 0x55 + DEVLINK_ATTR_PARAM_VALUE_DATA = 0x56 + DEVLINK_ATTR_PARAM_VALUE_CMODE = 0x57 + DEVLINK_ATTR_REGION_NAME = 0x58 + DEVLINK_ATTR_REGION_SIZE = 0x59 + DEVLINK_ATTR_REGION_SNAPSHOTS = 0x5a + DEVLINK_ATTR_REGION_SNAPSHOT = 0x5b + DEVLINK_ATTR_REGION_SNAPSHOT_ID = 0x5c + DEVLINK_ATTR_REGION_CHUNKS = 0x5d + DEVLINK_ATTR_REGION_CHUNK = 0x5e + DEVLINK_ATTR_REGION_CHUNK_DATA = 0x5f + DEVLINK_ATTR_REGION_CHUNK_ADDR = 0x60 + DEVLINK_ATTR_REGION_CHUNK_LEN = 0x61 + DEVLINK_ATTR_INFO_DRIVER_NAME = 0x62 + DEVLINK_ATTR_INFO_SERIAL_NUMBER = 0x63 + DEVLINK_ATTR_INFO_VERSION_FIXED = 0x64 + DEVLINK_ATTR_INFO_VERSION_RUNNING = 0x65 + DEVLINK_ATTR_INFO_VERSION_STORED = 0x66 + DEVLINK_ATTR_INFO_VERSION_NAME = 0x67 + DEVLINK_ATTR_INFO_VERSION_VALUE = 0x68 + DEVLINK_ATTR_SB_POOL_CELL_SIZE = 0x69 + DEVLINK_ATTR_FMSG = 0x6a + DEVLINK_ATTR_FMSG_OBJ_NEST_START = 0x6b + DEVLINK_ATTR_FMSG_PAIR_NEST_START = 0x6c + DEVLINK_ATTR_FMSG_ARR_NEST_START = 0x6d + DEVLINK_ATTR_FMSG_NEST_END = 0x6e + DEVLINK_ATTR_FMSG_OBJ_NAME = 0x6f + DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE = 0x70 + DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA = 0x71 + DEVLINK_ATTR_HEALTH_REPORTER = 0x72 + DEVLINK_ATTR_HEALTH_REPORTER_NAME = 0x73 + DEVLINK_ATTR_HEALTH_REPORTER_STATE = 0x74 + DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT = 0x75 + DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT = 0x76 + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS = 0x77 + DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD = 0x78 + DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER = 0x79 + DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME = 0x7a + DEVLINK_ATTR_FLASH_UPDATE_COMPONENT = 0x7b + DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG = 0x7c + DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE = 0x7d + DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL = 0x7e + DEVLINK_ATTR_PORT_PCI_PF_NUMBER = 0x7f + DEVLINK_ATTR_PORT_PCI_VF_NUMBER = 0x80 + DEVLINK_ATTR_STATS = 0x81 + DEVLINK_ATTR_TRAP_NAME = 0x82 + DEVLINK_ATTR_TRAP_ACTION = 0x83 + DEVLINK_ATTR_TRAP_TYPE = 0x84 + DEVLINK_ATTR_TRAP_GENERIC = 0x85 + DEVLINK_ATTR_TRAP_METADATA = 0x86 + DEVLINK_ATTR_TRAP_GROUP_NAME = 0x87 + DEVLINK_ATTR_RELOAD_FAILED = 0x88 + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS = 0x89 + DEVLINK_ATTR_NETNS_FD = 0x8a + DEVLINK_ATTR_NETNS_PID = 0x8b + DEVLINK_ATTR_NETNS_ID = 0x8c + DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP = 0x8d + DEVLINK_ATTR_TRAP_POLICER_ID = 0x8e + DEVLINK_ATTR_TRAP_POLICER_RATE = 0x8f + DEVLINK_ATTR_TRAP_POLICER_BURST = 0x90 + DEVLINK_ATTR_PORT_FUNCTION = 0x91 + DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER = 0x92 + DEVLINK_ATTR_PORT_LANES = 0x93 + DEVLINK_ATTR_PORT_SPLITTABLE = 0x94 + DEVLINK_ATTR_PORT_EXTERNAL = 0x95 + DEVLINK_ATTR_PORT_CONTROLLER_NUMBER = 0x96 + DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT = 0x97 + DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK = 0x98 + DEVLINK_ATTR_RELOAD_ACTION = 0x99 + DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED = 0x9a + DEVLINK_ATTR_RELOAD_LIMITS = 0x9b + DEVLINK_ATTR_DEV_STATS = 0x9c + DEVLINK_ATTR_RELOAD_STATS = 0x9d + DEVLINK_ATTR_RELOAD_STATS_ENTRY = 0x9e + DEVLINK_ATTR_RELOAD_STATS_LIMIT = 0x9f + DEVLINK_ATTR_RELOAD_STATS_VALUE = 0xa0 + DEVLINK_ATTR_REMOTE_RELOAD_STATS = 0xa1 + DEVLINK_ATTR_RELOAD_ACTION_INFO = 0xa2 + DEVLINK_ATTR_RELOAD_ACTION_STATS = 0xa3 + DEVLINK_ATTR_MAX = 0xa3 + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 + DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 + DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0 + DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0 + DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0 + DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0 + DEVLINK_DPIPE_HEADER_ETHERNET = 0x0 + DEVLINK_DPIPE_HEADER_IPV4 = 0x1 + DEVLINK_DPIPE_HEADER_IPV6 = 0x2 + DEVLINK_RESOURCE_UNIT_ENTRY = 0x0 + DEVLINK_PORT_FUNCTION_ATTR_UNSPEC = 0x0 + DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 0x1 + DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x1 ) type FsverityDigest struct { @@ -2999,3 +3222,461 @@ const ( MPLS_IPTUNNEL_TTL = 0x2 MPLS_IPTUNNEL_MAX = 0x2 ) + +const ( + ETHTOOL_ID_UNSPEC = 0x0 + ETHTOOL_RX_COPYBREAK = 0x1 + ETHTOOL_TX_COPYBREAK = 0x2 + ETHTOOL_PFC_PREVENTION_TOUT = 0x3 + ETHTOOL_TUNABLE_UNSPEC = 0x0 + ETHTOOL_TUNABLE_U8 = 0x1 + ETHTOOL_TUNABLE_U16 = 0x2 + ETHTOOL_TUNABLE_U32 = 0x3 + ETHTOOL_TUNABLE_U64 = 0x4 + ETHTOOL_TUNABLE_STRING = 0x5 + ETHTOOL_TUNABLE_S8 = 0x6 + ETHTOOL_TUNABLE_S16 = 0x7 + ETHTOOL_TUNABLE_S32 = 0x8 + ETHTOOL_TUNABLE_S64 = 0x9 + ETHTOOL_PHY_ID_UNSPEC = 0x0 + ETHTOOL_PHY_DOWNSHIFT = 0x1 + ETHTOOL_PHY_FAST_LINK_DOWN = 0x2 + ETHTOOL_PHY_EDPD = 0x3 + ETHTOOL_LINK_EXT_STATE_AUTONEG = 0x0 + ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 0x1 + ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 0x2 + ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 0x3 + ETHTOOL_LINK_EXT_STATE_NO_CABLE = 0x4 + ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 0x5 + ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 0x6 + ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 0x7 + ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 0x8 + ETHTOOL_LINK_EXT_STATE_OVERHEAT = 0x9 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = 0x5 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = 0x6 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = 0x5 + ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 0x2 + ETHTOOL_FLASH_ALL_REGIONS = 0x0 + ETHTOOL_F_UNSUPPORTED__BIT = 0x0 + ETHTOOL_F_WISH__BIT = 0x1 + ETHTOOL_F_COMPAT__BIT = 0x2 + ETHTOOL_FEC_NONE_BIT = 0x0 + ETHTOOL_FEC_AUTO_BIT = 0x1 + ETHTOOL_FEC_OFF_BIT = 0x2 + ETHTOOL_FEC_RS_BIT = 0x3 + ETHTOOL_FEC_BASER_BIT = 0x4 + ETHTOOL_FEC_LLRS_BIT = 0x5 + ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0x0 + ETHTOOL_LINK_MODE_10baseT_Full_BIT = 0x1 + ETHTOOL_LINK_MODE_100baseT_Half_BIT = 0x2 + ETHTOOL_LINK_MODE_100baseT_Full_BIT = 0x3 + ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 0x4 + ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 0x5 + ETHTOOL_LINK_MODE_Autoneg_BIT = 0x6 + ETHTOOL_LINK_MODE_TP_BIT = 0x7 + ETHTOOL_LINK_MODE_AUI_BIT = 0x8 + ETHTOOL_LINK_MODE_MII_BIT = 0x9 + ETHTOOL_LINK_MODE_FIBRE_BIT = 0xa + ETHTOOL_LINK_MODE_BNC_BIT = 0xb + ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 0xc + ETHTOOL_LINK_MODE_Pause_BIT = 0xd + ETHTOOL_LINK_MODE_Asym_Pause_BIT = 0xe + ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 0xf + ETHTOOL_LINK_MODE_Backplane_BIT = 0x10 + ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 0x11 + ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 0x12 + ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 0x13 + ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 0x14 + ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 0x15 + ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 0x16 + ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 0x17 + ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 0x18 + ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 0x19 + ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 0x1a + ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 0x1b + ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 0x1c + ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 0x1d + ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 0x1e + ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 0x1f + ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 0x20 + ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 0x21 + ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 0x22 + ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 0x23 + ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 0x24 + ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 0x25 + ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 0x26 + ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 0x27 + ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 0x28 + ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 0x29 + ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 0x2a + ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 0x2b + ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 0x2c + ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 0x2d + ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 0x2e + ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 0x2f + ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 0x30 + ETHTOOL_LINK_MODE_FEC_NONE_BIT = 0x31 + ETHTOOL_LINK_MODE_FEC_RS_BIT = 0x32 + ETHTOOL_LINK_MODE_FEC_BASER_BIT = 0x33 + ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 0x34 + ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 0x35 + ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 0x36 + ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 0x37 + ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 0x38 + ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 0x39 + ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 0x3a + ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 0x3b + ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 0x3c + ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 0x3d + ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 0x3e + ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 0x3f + ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 0x40 + ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 0x41 + ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 0x42 + ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 0x43 + ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 0x44 + ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 0x45 + ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 0x46 + ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 0x47 + ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 0x48 + ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 0x49 + ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 0x4a + ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 0x4b + ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 0x4c + ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 0x4d + ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 0x4e + ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 0x4f + ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 0x50 + ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 0x51 + ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 0x52 + ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 0x53 + ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 0x54 + ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 0x55 + ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 0x56 + ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 0x57 + ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 0x58 + ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 0x59 + ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 0x5a + ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 0x5b + + ETHTOOL_MSG_USER_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET = 0x1 + ETHTOOL_MSG_LINKINFO_GET = 0x2 + ETHTOOL_MSG_LINKINFO_SET = 0x3 + ETHTOOL_MSG_LINKMODES_GET = 0x4 + ETHTOOL_MSG_LINKMODES_SET = 0x5 + ETHTOOL_MSG_LINKSTATE_GET = 0x6 + ETHTOOL_MSG_DEBUG_GET = 0x7 + ETHTOOL_MSG_DEBUG_SET = 0x8 + ETHTOOL_MSG_WOL_GET = 0x9 + ETHTOOL_MSG_WOL_SET = 0xa + ETHTOOL_MSG_FEATURES_GET = 0xb + ETHTOOL_MSG_FEATURES_SET = 0xc + ETHTOOL_MSG_PRIVFLAGS_GET = 0xd + ETHTOOL_MSG_PRIVFLAGS_SET = 0xe + ETHTOOL_MSG_RINGS_GET = 0xf + ETHTOOL_MSG_RINGS_SET = 0x10 + ETHTOOL_MSG_CHANNELS_GET = 0x11 + ETHTOOL_MSG_CHANNELS_SET = 0x12 + ETHTOOL_MSG_COALESCE_GET = 0x13 + ETHTOOL_MSG_COALESCE_SET = 0x14 + ETHTOOL_MSG_PAUSE_GET = 0x15 + ETHTOOL_MSG_PAUSE_SET = 0x16 + ETHTOOL_MSG_EEE_GET = 0x17 + ETHTOOL_MSG_EEE_SET = 0x18 + ETHTOOL_MSG_TSINFO_GET = 0x19 + ETHTOOL_MSG_CABLE_TEST_ACT = 0x1a + ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 0x1b + ETHTOOL_MSG_TUNNEL_INFO_GET = 0x1c + ETHTOOL_MSG_USER_MAX = 0x1c + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 + ETHTOOL_MSG_LINKINFO_NTF = 0x3 + ETHTOOL_MSG_LINKMODES_GET_REPLY = 0x4 + ETHTOOL_MSG_LINKMODES_NTF = 0x5 + ETHTOOL_MSG_LINKSTATE_GET_REPLY = 0x6 + ETHTOOL_MSG_DEBUG_GET_REPLY = 0x7 + ETHTOOL_MSG_DEBUG_NTF = 0x8 + ETHTOOL_MSG_WOL_GET_REPLY = 0x9 + ETHTOOL_MSG_WOL_NTF = 0xa + ETHTOOL_MSG_FEATURES_GET_REPLY = 0xb + ETHTOOL_MSG_FEATURES_SET_REPLY = 0xc + ETHTOOL_MSG_FEATURES_NTF = 0xd + ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 0xe + ETHTOOL_MSG_PRIVFLAGS_NTF = 0xf + ETHTOOL_MSG_RINGS_GET_REPLY = 0x10 + ETHTOOL_MSG_RINGS_NTF = 0x11 + ETHTOOL_MSG_CHANNELS_GET_REPLY = 0x12 + ETHTOOL_MSG_CHANNELS_NTF = 0x13 + ETHTOOL_MSG_COALESCE_GET_REPLY = 0x14 + ETHTOOL_MSG_COALESCE_NTF = 0x15 + ETHTOOL_MSG_PAUSE_GET_REPLY = 0x16 + ETHTOOL_MSG_PAUSE_NTF = 0x17 + ETHTOOL_MSG_EEE_GET_REPLY = 0x18 + ETHTOOL_MSG_EEE_NTF = 0x19 + ETHTOOL_MSG_TSINFO_GET_REPLY = 0x1a + ETHTOOL_MSG_CABLE_TEST_NTF = 0x1b + ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 0x1c + ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 0x1d + ETHTOOL_MSG_KERNEL_MAX = 0x1d + ETHTOOL_A_HEADER_UNSPEC = 0x0 + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 + ETHTOOL_A_HEADER_MAX = 0x3 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 + ETHTOOL_A_BITSET_BIT_VALUE = 0x3 + ETHTOOL_A_BITSET_BIT_MAX = 0x3 + ETHTOOL_A_BITSET_BITS_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BITS_BIT = 0x1 + ETHTOOL_A_BITSET_BITS_MAX = 0x1 + ETHTOOL_A_BITSET_UNSPEC = 0x0 + ETHTOOL_A_BITSET_NOMASK = 0x1 + ETHTOOL_A_BITSET_SIZE = 0x2 + ETHTOOL_A_BITSET_BITS = 0x3 + ETHTOOL_A_BITSET_VALUE = 0x4 + ETHTOOL_A_BITSET_MASK = 0x5 + ETHTOOL_A_BITSET_MAX = 0x5 + ETHTOOL_A_STRING_UNSPEC = 0x0 + ETHTOOL_A_STRING_INDEX = 0x1 + ETHTOOL_A_STRING_VALUE = 0x2 + ETHTOOL_A_STRING_MAX = 0x2 + ETHTOOL_A_STRINGS_UNSPEC = 0x0 + ETHTOOL_A_STRINGS_STRING = 0x1 + ETHTOOL_A_STRINGS_MAX = 0x1 + ETHTOOL_A_STRINGSET_UNSPEC = 0x0 + ETHTOOL_A_STRINGSET_ID = 0x1 + ETHTOOL_A_STRINGSET_COUNT = 0x2 + ETHTOOL_A_STRINGSET_STRINGS = 0x3 + ETHTOOL_A_STRINGSET_MAX = 0x3 + ETHTOOL_A_STRINGSETS_UNSPEC = 0x0 + ETHTOOL_A_STRINGSETS_STRINGSET = 0x1 + ETHTOOL_A_STRINGSETS_MAX = 0x1 + ETHTOOL_A_STRSET_UNSPEC = 0x0 + ETHTOOL_A_STRSET_HEADER = 0x1 + ETHTOOL_A_STRSET_STRINGSETS = 0x2 + ETHTOOL_A_STRSET_COUNTS_ONLY = 0x3 + ETHTOOL_A_STRSET_MAX = 0x3 + ETHTOOL_A_LINKINFO_UNSPEC = 0x0 + ETHTOOL_A_LINKINFO_HEADER = 0x1 + ETHTOOL_A_LINKINFO_PORT = 0x2 + ETHTOOL_A_LINKINFO_PHYADDR = 0x3 + ETHTOOL_A_LINKINFO_TP_MDIX = 0x4 + ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = 0x5 + ETHTOOL_A_LINKINFO_TRANSCEIVER = 0x6 + ETHTOOL_A_LINKINFO_MAX = 0x6 + ETHTOOL_A_LINKMODES_UNSPEC = 0x0 + ETHTOOL_A_LINKMODES_HEADER = 0x1 + ETHTOOL_A_LINKMODES_AUTONEG = 0x2 + ETHTOOL_A_LINKMODES_OURS = 0x3 + ETHTOOL_A_LINKMODES_PEER = 0x4 + ETHTOOL_A_LINKMODES_SPEED = 0x5 + ETHTOOL_A_LINKMODES_DUPLEX = 0x6 + ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 0x7 + ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 0x8 + ETHTOOL_A_LINKMODES_MAX = 0x8 + ETHTOOL_A_LINKSTATE_UNSPEC = 0x0 + ETHTOOL_A_LINKSTATE_HEADER = 0x1 + ETHTOOL_A_LINKSTATE_LINK = 0x2 + ETHTOOL_A_LINKSTATE_SQI = 0x3 + ETHTOOL_A_LINKSTATE_SQI_MAX = 0x4 + ETHTOOL_A_LINKSTATE_EXT_STATE = 0x5 + ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 0x6 + ETHTOOL_A_LINKSTATE_MAX = 0x6 + ETHTOOL_A_DEBUG_UNSPEC = 0x0 + ETHTOOL_A_DEBUG_HEADER = 0x1 + ETHTOOL_A_DEBUG_MSGMASK = 0x2 + ETHTOOL_A_DEBUG_MAX = 0x2 + ETHTOOL_A_WOL_UNSPEC = 0x0 + ETHTOOL_A_WOL_HEADER = 0x1 + ETHTOOL_A_WOL_MODES = 0x2 + ETHTOOL_A_WOL_SOPASS = 0x3 + ETHTOOL_A_WOL_MAX = 0x3 + ETHTOOL_A_FEATURES_UNSPEC = 0x0 + ETHTOOL_A_FEATURES_HEADER = 0x1 + ETHTOOL_A_FEATURES_HW = 0x2 + ETHTOOL_A_FEATURES_WANTED = 0x3 + ETHTOOL_A_FEATURES_ACTIVE = 0x4 + ETHTOOL_A_FEATURES_NOCHANGE = 0x5 + ETHTOOL_A_FEATURES_MAX = 0x5 + ETHTOOL_A_PRIVFLAGS_UNSPEC = 0x0 + ETHTOOL_A_PRIVFLAGS_HEADER = 0x1 + ETHTOOL_A_PRIVFLAGS_FLAGS = 0x2 + ETHTOOL_A_PRIVFLAGS_MAX = 0x2 + ETHTOOL_A_RINGS_UNSPEC = 0x0 + ETHTOOL_A_RINGS_HEADER = 0x1 + ETHTOOL_A_RINGS_RX_MAX = 0x2 + ETHTOOL_A_RINGS_RX_MINI_MAX = 0x3 + ETHTOOL_A_RINGS_RX_JUMBO_MAX = 0x4 + ETHTOOL_A_RINGS_TX_MAX = 0x5 + ETHTOOL_A_RINGS_RX = 0x6 + ETHTOOL_A_RINGS_RX_MINI = 0x7 + ETHTOOL_A_RINGS_RX_JUMBO = 0x8 + ETHTOOL_A_RINGS_TX = 0x9 + ETHTOOL_A_RINGS_MAX = 0x9 + ETHTOOL_A_CHANNELS_UNSPEC = 0x0 + ETHTOOL_A_CHANNELS_HEADER = 0x1 + ETHTOOL_A_CHANNELS_RX_MAX = 0x2 + ETHTOOL_A_CHANNELS_TX_MAX = 0x3 + ETHTOOL_A_CHANNELS_OTHER_MAX = 0x4 + ETHTOOL_A_CHANNELS_COMBINED_MAX = 0x5 + ETHTOOL_A_CHANNELS_RX_COUNT = 0x6 + ETHTOOL_A_CHANNELS_TX_COUNT = 0x7 + ETHTOOL_A_CHANNELS_OTHER_COUNT = 0x8 + ETHTOOL_A_CHANNELS_COMBINED_COUNT = 0x9 + ETHTOOL_A_CHANNELS_MAX = 0x9 + ETHTOOL_A_COALESCE_UNSPEC = 0x0 + ETHTOOL_A_COALESCE_HEADER = 0x1 + ETHTOOL_A_COALESCE_RX_USECS = 0x2 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES = 0x3 + ETHTOOL_A_COALESCE_RX_USECS_IRQ = 0x4 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = 0x5 + ETHTOOL_A_COALESCE_TX_USECS = 0x6 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES = 0x7 + ETHTOOL_A_COALESCE_TX_USECS_IRQ = 0x8 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = 0x9 + ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = 0xa + ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = 0xb + ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = 0xc + ETHTOOL_A_COALESCE_PKT_RATE_LOW = 0xd + ETHTOOL_A_COALESCE_RX_USECS_LOW = 0xe + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = 0xf + ETHTOOL_A_COALESCE_TX_USECS_LOW = 0x10 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = 0x11 + ETHTOOL_A_COALESCE_PKT_RATE_HIGH = 0x12 + ETHTOOL_A_COALESCE_RX_USECS_HIGH = 0x13 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = 0x14 + ETHTOOL_A_COALESCE_TX_USECS_HIGH = 0x15 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = 0x16 + ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17 + ETHTOOL_A_COALESCE_MAX = 0x17 + ETHTOOL_A_PAUSE_UNSPEC = 0x0 + ETHTOOL_A_PAUSE_HEADER = 0x1 + ETHTOOL_A_PAUSE_AUTONEG = 0x2 + ETHTOOL_A_PAUSE_RX = 0x3 + ETHTOOL_A_PAUSE_TX = 0x4 + ETHTOOL_A_PAUSE_STATS = 0x5 + ETHTOOL_A_PAUSE_MAX = 0x5 + ETHTOOL_A_PAUSE_STAT_UNSPEC = 0x0 + ETHTOOL_A_PAUSE_STAT_PAD = 0x1 + ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 0x2 + ETHTOOL_A_PAUSE_STAT_RX_FRAMES = 0x3 + ETHTOOL_A_PAUSE_STAT_MAX = 0x3 + ETHTOOL_A_EEE_UNSPEC = 0x0 + ETHTOOL_A_EEE_HEADER = 0x1 + ETHTOOL_A_EEE_MODES_OURS = 0x2 + ETHTOOL_A_EEE_MODES_PEER = 0x3 + ETHTOOL_A_EEE_ACTIVE = 0x4 + ETHTOOL_A_EEE_ENABLED = 0x5 + ETHTOOL_A_EEE_TX_LPI_ENABLED = 0x6 + ETHTOOL_A_EEE_TX_LPI_TIMER = 0x7 + ETHTOOL_A_EEE_MAX = 0x7 + ETHTOOL_A_TSINFO_UNSPEC = 0x0 + ETHTOOL_A_TSINFO_HEADER = 0x1 + ETHTOOL_A_TSINFO_TIMESTAMPING = 0x2 + ETHTOOL_A_TSINFO_TX_TYPES = 0x3 + ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 + ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 + ETHTOOL_A_TSINFO_MAX = 0x5 + ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_MAX = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_CODE_OK = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE_OPEN = 0x2 + ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT = 0x3 + ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT = 0x4 + ETHTOOL_A_CABLE_PAIR_A = 0x0 + ETHTOOL_A_CABLE_PAIR_B = 0x1 + ETHTOOL_A_CABLE_PAIR_C = 0x2 + ETHTOOL_A_CABLE_PAIR_D = 0x3 + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 + ETHTOOL_A_CABLE_RESULT_MAX = 0x2 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 + ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 + ETHTOOL_A_CABLE_NEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_NEST_RESULT = 0x1 + ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = 0x2 + ETHTOOL_A_CABLE_NEST_MAX = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_NEST = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = 0x4 + ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = 0x4 + ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_CFG = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_MAX = 0x2 + ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_AMPLITUDE_PAIR = 0x1 + ETHTOOL_A_CABLE_AMPLITUDE_mV = 0x2 + ETHTOOL_A_CABLE_AMPLITUDE_MAX = 0x2 + ETHTOOL_A_CABLE_PULSE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_PULSE_mV = 0x1 + ETHTOOL_A_CABLE_PULSE_MAX = 0x1 + ETHTOOL_A_CABLE_STEP_UNSPEC = 0x0 + ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = 0x1 + ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = 0x2 + ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = 0x3 + ETHTOOL_A_CABLE_STEP_MAX = 0x3 + ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TDR_NEST_STEP = 0x1 + ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = 0x2 + ETHTOOL_A_CABLE_TDR_NEST_PULSE = 0x3 + ETHTOOL_A_CABLE_TDR_NEST_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = 0x3 + ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = 0x0 + ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = 0x1 + ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = 0x2 + ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 0x1 + ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 0x2 + ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 0x2 + ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 0x1 + ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 0x2 + ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 0x3 + ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 0x3 + ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_TABLE = 0x1 + ETHTOOL_A_TUNNEL_UDP_MAX = 0x1 + ETHTOOL_A_TUNNEL_INFO_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_INFO_HEADER = 0x1 + ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 0x2 + ETHTOOL_A_TUNNEL_INFO_MAX = 0x2 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index d54618aa6..088bd77e3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 741d25be9..078d958ec 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index e8d982c3d..2d39122f4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 311cf2155..304cbd045 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 1312bdf77..7d9d57006 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build mips,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 2a9934819..a1eb2577b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build mips64,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index f964307b2..2e5ce3b6a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build mips64le,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index ca0fab270..bbaa1200b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build mipsle,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 257e00424..0e6e8a774 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build ppc64,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 980dd3173..7382f385f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build ppc64le,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index d9fdab20b..28d552216 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build riscv64,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index c25de8c67..a91a7a44b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build s390x,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 97fca6534..f824b2358 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build sparc64,linux diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index a89100c08..3f11f88e3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -248,6 +248,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 289184e0b..0bed83af5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -255,6 +255,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index 428c450e4..e4e3bf736 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -253,6 +253,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index 6f1f2842c..efac861bb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -255,6 +255,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 61ea0019a..80fa295f1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -231,6 +231,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 87a493f68..560dd6d08 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -235,6 +235,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index d80836efa..0c1700fa4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -235,6 +235,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x8 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x1c diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index 4e158746f..5b3e46633 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -231,6 +231,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index 992a1f8c0..62bff1670 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -231,6 +231,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x20 SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index db817f3ba..ca512aff7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -234,6 +234,7 @@ const ( SizeofSockaddrUnix = 0x6e SizeofSockaddrDatalink = 0xfc SizeofLinger = 0x8 + SizeofIovec = 0x10 SizeofIPMreq = 0x8 SizeofIPv6Mreq = 0x14 SizeofMsghdr = 0x30 diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index 9cd147b7e..115341fba 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -391,7 +391,6 @@ func loadLibraryEx(name string, system bool) (*DLL, error) { var flags uintptr if system { if canDoSearchSystem32() { - const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 flags = LOAD_LIBRARY_SEARCH_SYSTEM32 } else if isBaseName(name) { // WindowsXP or unpatched Windows machine diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 14906485f..69eb462c5 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -624,6 +624,7 @@ func (tml *Tokenmandatorylabel) Size() uint32 { // Authorization Functions //sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys isTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted //sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken //sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken //sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf @@ -837,6 +838,16 @@ func (t Token) IsMember(sid *SID) (bool, error) { return b != 0, nil } +// IsRestricted reports whether the access token t is a restricted token. +func (t Token) IsRestricted() (isRestricted bool, err error) { + isRestricted, err = isTokenRestricted(t) + if !isRestricted && err == syscall.EINVAL { + // If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token. + err = nil + } + return +} + const ( WTS_CONSOLE_CONNECT = 0x1 WTS_CONSOLE_DISCONNECT = 0x2 diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go index f54ff90aa..b269850d0 100644 --- a/vendor/golang.org/x/sys/windows/service.go +++ b/vendor/golang.org/x/sys/windows/service.go @@ -128,6 +128,10 @@ const ( SERVICE_NOTIFY_CREATED = 0x00000080 SERVICE_NOTIFY_DELETED = 0x00000100 SERVICE_NOTIFY_DELETE_PENDING = 0x00000200 + + SC_EVENT_DATABASE_CHANGE = 0 + SC_EVENT_PROPERTY_CHANGE = 1 + SC_EVENT_STATUS_CHANGE = 2 ) type SERVICE_STATUS struct { @@ -229,3 +233,5 @@ type QUERY_SERVICE_LOCK_STATUS struct { //sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW //sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx //sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW +//sys SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications? +//sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications? diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 86a46f771..0197df872 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -18,9 +18,11 @@ import ( ) type Handle uintptr +type HWND uintptr const ( InvalidHandle = ^Handle(0) + InvalidHWND = ^HWND(0) // Flags for DefineDosDevice. DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 @@ -170,6 +172,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) //sys GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW //sys GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW +//sys SetDefaultDllDirectories(directoryFlags uint32) (err error) +//sys SetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW //sys GetVersion() (ver uint32, err error) //sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW //sys ExitProcess(exitcode uint32) @@ -212,6 +216,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW //sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) //sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW +//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId +//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow +//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW +//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx //sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath //sys TerminateProcess(handle Handle, exitcode uint32) (err error) //sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) @@ -257,22 +265,35 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect //sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile //sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW +//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW +//sys FindNextChangeNotification(handle Handle) (err error) +//sys FindCloseChangeNotification(handle Handle) (err error) //sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW -//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore +//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore //sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore -//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore +//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore //sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore //sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore -//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain -//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain -//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext -//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext -//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy +//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext +//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore +//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain +//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain +//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext +//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext +//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy +//sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW +//sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension +//sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject +//sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject +//sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData +//sys CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData +//sys WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx //sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW //sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey //sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW //sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW //sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW +//sys RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue //sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId //sys ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId //sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode @@ -339,8 +360,6 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW //sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW //sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW -//sys MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW -//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx //sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW //sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters //sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index e7ae37f88..fd4260762 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -227,7 +227,7 @@ const ( ) const ( - // filters for ReadDirectoryChangesW + // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 @@ -249,24 +249,27 @@ const ( const ( // wincrypt.h - PROV_RSA_FULL = 1 - PROV_RSA_SIG = 2 - PROV_DSS = 3 - PROV_FORTEZZA = 4 - PROV_MS_EXCHANGE = 5 - PROV_SSL = 6 - PROV_RSA_SCHANNEL = 12 - PROV_DSS_DH = 13 - PROV_EC_ECDSA_SIG = 14 - PROV_EC_ECNRA_SIG = 15 - PROV_EC_ECDSA_FULL = 16 - PROV_EC_ECNRA_FULL = 17 - PROV_DH_SCHANNEL = 18 - PROV_SPYRUS_LYNKS = 20 - PROV_RNG = 21 - PROV_INTEL_SEC = 22 - PROV_REPLACE_OWF = 23 - PROV_RSA_AES = 24 + /* certenrolld_begin -- PROV_RSA_*/ + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + + /* dwFlags definitions for CryptAcquireContext */ CRYPT_VERIFYCONTEXT = 0xF0000000 CRYPT_NEWKEYSET = 0x00000008 CRYPT_DELETEKEYSET = 0x00000010 @@ -274,6 +277,17 @@ const ( CRYPT_SILENT = 0x00000040 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + /* Flags for PFXImportCertStore */ + CRYPT_EXPORTABLE = 0x00000001 + CRYPT_USER_PROTECTED = 0x00000002 + CRYPT_USER_KEYSET = 0x00001000 + PKCS12_PREFER_CNG_KSP = 0x00000100 + PKCS12_ALWAYS_CNG_KSP = 0x00000200 + PKCS12_ALLOW_OVERWRITE_KEY = 0x00004000 + PKCS12_NO_PERSIST_KEY = 0x00008000 + PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 + + /* Default usage match type is AND with value zero */ USAGE_MATCH_TYPE_AND = 0 USAGE_MATCH_TYPE_OR = 1 @@ -409,6 +423,71 @@ const ( CERT_CHAIN_POLICY_EV = 8 CERT_CHAIN_POLICY_SSL_F12 = 9 + /* Certificate Store close flags */ + CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001 + CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002 + + /* CryptQueryObject object type */ + CERT_QUERY_OBJECT_FILE = 1 + CERT_QUERY_OBJECT_BLOB = 2 + + /* CryptQueryObject content type flags */ + CERT_QUERY_CONTENT_CERT = 1 + CERT_QUERY_CONTENT_CTL = 2 + CERT_QUERY_CONTENT_CRL = 3 + CERT_QUERY_CONTENT_SERIALIZED_STORE = 4 + CERT_QUERY_CONTENT_SERIALIZED_CERT = 5 + CERT_QUERY_CONTENT_SERIALIZED_CTL = 6 + CERT_QUERY_CONTENT_SERIALIZED_CRL = 7 + CERT_QUERY_CONTENT_PKCS7_SIGNED = 8 + CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9 + CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10 + CERT_QUERY_CONTENT_PKCS10 = 11 + CERT_QUERY_CONTENT_PFX = 12 + CERT_QUERY_CONTENT_CERT_PAIR = 13 + CERT_QUERY_CONTENT_PFX_AND_LOAD = 14 + CERT_QUERY_CONTENT_FLAG_CERT = (1 << CERT_QUERY_CONTENT_CERT) + CERT_QUERY_CONTENT_FLAG_CTL = (1 << CERT_QUERY_CONTENT_CTL) + CERT_QUERY_CONTENT_FLAG_CRL = (1 << CERT_QUERY_CONTENT_CRL) + CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE) + CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT) + CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL) + CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL) + CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED) + CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED) + CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED) + CERT_QUERY_CONTENT_FLAG_PKCS10 = (1 << CERT_QUERY_CONTENT_PKCS10) + CERT_QUERY_CONTENT_FLAG_PFX = (1 << CERT_QUERY_CONTENT_PFX) + CERT_QUERY_CONTENT_FLAG_CERT_PAIR = (1 << CERT_QUERY_CONTENT_CERT_PAIR) + CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD) + CERT_QUERY_CONTENT_FLAG_ALL = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR) + CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED) + + /* CryptQueryObject format type flags */ + CERT_QUERY_FORMAT_BINARY = 1 + CERT_QUERY_FORMAT_BASE64_ENCODED = 2 + CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3 + CERT_QUERY_FORMAT_FLAG_BINARY = (1 << CERT_QUERY_FORMAT_BINARY) + CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED) + CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED) + CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED) + + /* CertGetNameString name types */ + CERT_NAME_EMAIL_TYPE = 1 + CERT_NAME_RDN_TYPE = 2 + CERT_NAME_ATTR_TYPE = 3 + CERT_NAME_SIMPLE_DISPLAY_TYPE = 4 + CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5 + CERT_NAME_DNS_TYPE = 6 + CERT_NAME_URL_TYPE = 7 + CERT_NAME_UPN_TYPE = 8 + + /* CertGetNameString flags */ + CERT_NAME_ISSUER_FLAG = 0x1 + CERT_NAME_DISABLE_IE4_UTF8_FLAG = 0x10000 + CERT_NAME_SEARCH_ALL_NAMES_FLAG = 0x2 + CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000 + /* AuthType values for SSLExtraCertChainPolicyPara struct */ AUTHTYPE_CLIENT = 1 AUTHTYPE_SERVER = 2 @@ -419,6 +498,22 @@ const ( SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 + + /* Flags for Crypt[Un]ProtectData */ + CRYPTPROTECT_UI_FORBIDDEN = 0x1 + CRYPTPROTECT_LOCAL_MACHINE = 0x4 + CRYPTPROTECT_CRED_SYNC = 0x8 + CRYPTPROTECT_AUDIT = 0x10 + CRYPTPROTECT_NO_RECOVERY = 0x20 + CRYPTPROTECT_VERIFY_PROTECTION = 0x40 + CRYPTPROTECT_CRED_REGENERATE = 0x80 + + /* Flags for CryptProtectPromptStruct */ + CRYPTPROTECT_PROMPT_ON_UNPROTECT = 1 + CRYPTPROTECT_PROMPT_ON_PROTECT = 2 + CRYPTPROTECT_PROMPT_RESERVED = 4 + CRYPTPROTECT_PROMPT_STRONG = 8 + CRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16 ) const ( @@ -441,10 +536,58 @@ const ( REALTIME_PRIORITY_CLASS = 0x00000100 ) +/* wintrust.h constants for WinVerifyTrustEx */ +const ( + WTD_UI_ALL = 1 + WTD_UI_NONE = 2 + WTD_UI_NOBAD = 3 + WTD_UI_NOGOOD = 4 + + WTD_REVOKE_NONE = 0 + WTD_REVOKE_WHOLECHAIN = 1 + + WTD_CHOICE_FILE = 1 + WTD_CHOICE_CATALOG = 2 + WTD_CHOICE_BLOB = 3 + WTD_CHOICE_SIGNER = 4 + WTD_CHOICE_CERT = 5 + + WTD_STATEACTION_IGNORE = 0x00000000 + WTD_STATEACTION_VERIFY = 0x00000010 + WTD_STATEACTION_CLOSE = 0x00000002 + WTD_STATEACTION_AUTO_CACHE = 0x00000003 + WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004 + + WTD_USE_IE4_TRUST_FLAG = 0x1 + WTD_NO_IE4_CHAIN_FLAG = 0x2 + WTD_NO_POLICY_USAGE_FLAG = 0x4 + WTD_REVOCATION_CHECK_NONE = 0x10 + WTD_REVOCATION_CHECK_END_CERT = 0x20 + WTD_REVOCATION_CHECK_CHAIN = 0x40 + WTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80 + WTD_SAFER_FLAG = 0x100 + WTD_HASH_ONLY_FLAG = 0x200 + WTD_USE_DEFAULT_OSVER_CHECK = 0x400 + WTD_LIFETIME_SIGNING_FLAG = 0x800 + WTD_CACHE_ONLY_URL_RETRIEVAL = 0x1000 + WTD_DISABLE_MD2_MD4 = 0x2000 + WTD_MOTW = 0x4000 + + WTD_UICONTEXT_EXECUTE = 0 + WTD_UICONTEXT_INSTALL = 1 +) + var ( OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") + + WINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{ + Data1: 0xaac56b, + Data2: 0xcd44, + Data3: 0x11d0, + Data4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee}, + } ) // Pointer represents a pointer to an arbitrary Windows type. @@ -1033,7 +1176,57 @@ type MibIfRow struct { } type CertInfo struct { - // Not implemented + Version uint32 + SerialNumber CryptIntegerBlob + SignatureAlgorithm CryptAlgorithmIdentifier + Issuer CertNameBlob + NotBefore Filetime + NotAfter Filetime + Subject CertNameBlob + SubjectPublicKeyInfo CertPublicKeyInfo + IssuerUniqueId CryptBitBlob + SubjectUniqueId CryptBitBlob + CountExtensions uint32 + Extensions *CertExtension +} + +type CertExtension struct { + ObjId *byte + Critical int32 + Value CryptObjidBlob +} + +type CryptAlgorithmIdentifier struct { + ObjId *byte + Parameters CryptObjidBlob +} + +type CertPublicKeyInfo struct { + Algorithm CryptAlgorithmIdentifier + PublicKey CryptBitBlob +} + +type DataBlob struct { + Size uint32 + Data *byte +} +type CryptIntegerBlob DataBlob +type CryptUintBlob DataBlob +type CryptObjidBlob DataBlob +type CertNameBlob DataBlob +type CertRdnValueBlob DataBlob +type CertBlob DataBlob +type CrlBlob DataBlob +type CryptDataBlob DataBlob +type CryptHashBlob DataBlob +type CryptDigestBlob DataBlob +type CryptDerBlob DataBlob +type CryptAttrBlob DataBlob + +type CryptBitBlob struct { + Size uint32 + Data *byte + UnusedBits uint32 } type CertContext struct { @@ -1139,6 +1332,66 @@ type CertChainPolicyStatus struct { ExtraPolicyStatus Pointer } +type CertPolicyInfo struct { + Identifier *byte + CountQualifiers uint32 + Qualifiers *CertPolicyQualifierInfo +} + +type CertPoliciesInfo struct { + Count uint32 + PolicyInfos *CertPolicyInfo +} + +type CertPolicyQualifierInfo struct { + // Not implemented +} + +type CertStrongSignPara struct { + Size uint32 + InfoChoice uint32 + InfoOrSerializedInfoOrOID unsafe.Pointer +} + +type CryptProtectPromptStruct struct { + Size uint32 + PromptFlags uint32 + App HWND + Prompt *uint16 +} + +type WinTrustData struct { + Size uint32 + PolicyCallbackData uintptr + SIPClientData uintptr + UIChoice uint32 + RevocationChecks uint32 + UnionChoice uint32 + FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer + StateAction uint32 + StateData Handle + URLReference *uint16 + ProvFlags uint32 + UIContext uint32 + SignatureSettings *WinTrustSignatureSettings +} + +type WinTrustFileInfo struct { + Size uint32 + FilePath *uint16 + File Handle + KnownSubject *GUID +} + +type WinTrustSignatureSettings struct { + Size uint32 + Index uint32 + Flags uint32 + SecondarySigs uint32 + VerifiedSigIndex uint32 + CryptoPolicy *CertStrongSignPara +} + const ( // do not reorder HKEY_CLASSES_ROOT = 0x80000000 + iota @@ -1801,3 +2054,40 @@ const ( FileCaseSensitiveInfo = 23 FileNormalizedNameInfo = 24 ) + +// LoadLibrary flags for determining from where to search for a DLL +const ( + DONT_RESOLVE_DLL_REFERENCES = 0x1 + LOAD_LIBRARY_AS_DATAFILE = 0x2 + LOAD_WITH_ALTERED_SEARCH_PATH = 0x8 + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10 + LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20 + LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40 + LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80 + LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100 + LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200 + LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400 + LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800 + LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000 + LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000 + LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000 + LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000 +) + +// RegNotifyChangeKeyValue notifyFilter flags. +const ( + // REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted. + REG_NOTIFY_CHANGE_NAME = 0x00000001 + + // REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information. + REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 + + // REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value. + REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 + + // REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key. + REG_NOTIFY_CHANGE_SECURITY = 0x00000008 + + // REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later. + REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000 +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 8fbef7da6..c38c59d77 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -46,10 +46,12 @@ var ( modntdll = NewLazySystemDLL("ntdll.dll") modole32 = NewLazySystemDLL("ole32.dll") modpsapi = NewLazySystemDLL("psapi.dll") + modsechost = NewLazySystemDLL("sechost.dll") modsecur32 = NewLazySystemDLL("secur32.dll") modshell32 = NewLazySystemDLL("shell32.dll") moduser32 = NewLazySystemDLL("user32.dll") moduserenv = NewLazySystemDLL("userenv.dll") + modwintrust = NewLazySystemDLL("wintrust.dll") modws2_32 = NewLazySystemDLL("ws2_32.dll") modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") @@ -95,6 +97,7 @@ var ( procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor") procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW") + procIsTokenRestricted = modadvapi32.NewProc("IsTokenRestricted") procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor") procIsValidSid = modadvapi32.NewProc("IsValidSid") procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid") @@ -115,6 +118,7 @@ var ( procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") procRegCloseKey = modadvapi32.NewProc("RegCloseKey") procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegNotifyChangeKeyValue = modadvapi32.NewProc("RegNotifyChangeKeyValue") procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") @@ -140,13 +144,21 @@ var ( procCertCloseStore = modcrypt32.NewProc("CertCloseStore") procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore") + procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext") procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertFindExtension = modcrypt32.NewProc("CertFindExtension") procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertGetNameStringW = modcrypt32.NewProc("CertGetNameStringW") procCertOpenStore = modcrypt32.NewProc("CertOpenStore") procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procCryptDecodeObject = modcrypt32.NewProc("CryptDecodeObject") + procCryptProtectData = modcrypt32.NewProc("CryptProtectData") + procCryptQueryObject = modcrypt32.NewProc("CryptQueryObject") + procCryptUnprotectData = modcrypt32.NewProc("CryptUnprotectData") + procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore") procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") @@ -178,9 +190,12 @@ var ( procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") procExitProcess = modkernel32.NewProc("ExitProcess") procFindClose = modkernel32.NewProc("FindClose") + procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification") + procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW") procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindNextChangeNotification = modkernel32.NewProc("FindNextChangeNotification") procFindNextFileW = modkernel32.NewProc("FindNextFileW") procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") @@ -279,6 +294,8 @@ var ( procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories") + procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW") procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") procSetErrorMode = modkernel32.NewProc("SetErrorMode") @@ -326,16 +343,21 @@ var ( procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") procStringFromGUID2 = modole32.NewProc("StringFromGUID2") procEnumProcesses = modpsapi.NewProc("EnumProcesses") + procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications") + procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications") procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") procTranslateNameW = modsecur32.NewProc("TranslateNameW") procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") procShellExecuteW = modshell32.NewProc("ShellExecuteW") procExitWindowsEx = moduser32.NewProc("ExitWindowsEx") + procGetShellWindow = moduser32.NewProc("GetShellWindow") + procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") procMessageBoxW = moduser32.NewProc("MessageBoxW") procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx") procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") procWSACleanup = modws2_32.NewProc("WSACleanup") @@ -756,6 +778,15 @@ func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint return } +func isTokenRestricted(tokenHandle Token) (ret bool, err error) { + r0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0) + ret = r0 != 0 + if !ret { + err = errnoErr(e1) + } + return +} + func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) isValid = r0 != 0 @@ -916,6 +947,22 @@ func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reser return } +func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) { + var _p0 uint32 + if watchSubtree { + _p0 = 1 + } + var _p1 uint32 + if asynchronous { + _p1 = 1 + } + r0, _, _ := syscall.Syscall6(procRegNotifyChangeKeyValue.Addr(), 5, uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) if r0 != 0 { @@ -1148,6 +1195,12 @@ func CertDeleteCertificateFromStore(certContext *CertContext) (err error) { return } +func CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) { + r0, _, _ := syscall.Syscall(procCertDuplicateCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) + dupContext = (*CertContext)(unsafe.Pointer(r0)) + return +} + func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) context = (*CertContext)(unsafe.Pointer(r0)) @@ -1157,6 +1210,12 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex return } +func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) { + r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions))) + ret = (*CertExtension)(unsafe.Pointer(r0)) + return +} + func CertFreeCertificateChain(ctx *CertChainContext) { syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) return @@ -1178,10 +1237,16 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a return } +func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) { + r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size)) + chars = uint32(r0) + return +} + func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) handle = Handle(r0) - if handle == InvalidHandle { + if handle == 0 { err = errnoErr(e1) } return @@ -1204,6 +1269,47 @@ func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext return } +func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { + r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) { + r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { + r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) { + r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags)) + store = Handle(r0) + if store == 0 { + err = errnoErr(e1) + } + return +} + func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) same = r0 != 0 @@ -1474,6 +1580,36 @@ func FindClose(handle Handle) (err error) { return } +func FindCloseChangeNotification(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(path) + if err != nil { + return + } + return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter) +} + +func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) { + var _p1 uint32 + if watchSubtree { + _p1 = 1 + } + r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0) handle = Handle(r0) @@ -1501,6 +1637,14 @@ func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, er return } +func FindNextChangeNotification(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func findNextFile1(handle Handle, data *win32finddata1) (err error) { r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) if r1 == 0 { @@ -2366,6 +2510,31 @@ func SetCurrentDirectory(path *uint16) (err error) { return } +func SetDefaultDllDirectories(directoryFlags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetDllDirectory(path string) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(path) + if err != nil { + return + } + return _SetDllDirectory(_p0) +} + +func _SetDllDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SetEndOfFile(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { @@ -2752,6 +2921,27 @@ func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { return } +func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { + ret = procSubscribeServiceChangeNotifications.Find() + if ret != nil { + return + } + r0, _, _ := syscall.Syscall6(procSubscribeServiceChangeNotifications.Addr(), 5, uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) { + err = procUnsubscribeServiceChangeNotifications.Find() + if err != nil { + return + } + syscall.Syscall(procUnsubscribeServiceChangeNotifications.Addr(), 1, uintptr(subscription), 0, 0) + return +} + func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) if r1&0xff == 0 { @@ -2801,7 +2991,22 @@ func ExitWindowsEx(flags uint32, reason uint32) (err error) { return } -func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { +func GetShellWindow() (shellWindow HWND) { + r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) + shellWindow = HWND(r0) + return +} + +func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0) + tid = uint32(r0) + if tid == 0 { + err = errnoErr(e1) + } + return +} + +func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) ret = int32(r0) if ret == 0 { @@ -2838,6 +3043,14 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { return } +func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { + r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + func FreeAddrInfoW(addrinfo *AddrinfoW) { syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) return diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go index eb3157f0b..e15b7bf6a 100644 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go +++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go @@ -57,7 +57,7 @@ loop: err = transform.ErrShortSrc break loop } - r = utf8.RuneError + r, size = utf8.RuneError, 1 goto write } size = 2 diff --git a/vendor/golang.org/x/text/internal/language/compact/tables.go b/vendor/golang.org/x/text/internal/language/compact/tables.go index 554ca354b..fe7ad9ea7 100644 --- a/vendor/golang.org/x/text/internal/language/compact/tables.go +++ b/vendor/golang.org/x/text/internal/language/compact/tables.go @@ -802,16 +802,16 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements 0x03a0010b, 0x03a00115, 0x03a00117, 0x03a0011c, 0x03a00120, 0x03a00128, 0x03a0015e, 0x04000000, 0x04300000, 0x04300099, 0x04400000, 0x0440012f, - 0x04800000, 0x0480006e, 0x05800000, 0x0581f000, - 0x0581f032, 0x05857000, 0x05857032, 0x05e00000, + 0x04800000, 0x0480006e, 0x05800000, 0x05820000, + 0x05820032, 0x0585a000, 0x0585a032, 0x05e00000, 0x05e00052, 0x07100000, 0x07100047, 0x07500000, 0x07500162, 0x07900000, 0x0790012f, 0x07e00000, 0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c3, // Entry 40 - 5F 0x0a500000, 0x0a500035, 0x0a500099, 0x0a900000, 0x0a900053, 0x0a900099, 0x0b200000, 0x0b200078, - 0x0b500000, 0x0b500099, 0x0b700000, 0x0b71f000, - 0x0b71f033, 0x0b757000, 0x0b757033, 0x0d700000, + 0x0b500000, 0x0b500099, 0x0b700000, 0x0b720000, + 0x0b720033, 0x0b75a000, 0x0b75a033, 0x0d700000, 0x0d700022, 0x0d70006e, 0x0d700078, 0x0d70009e, 0x0db00000, 0x0db00035, 0x0db00099, 0x0dc00000, 0x0dc00106, 0x0df00000, 0x0df00131, 0x0e500000, @@ -947,7 +947,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements 0x38900000, 0x38900131, 0x39000000, 0x3900006f, 0x390000a4, 0x39500000, 0x39500099, 0x39800000, 0x3980007d, 0x39800106, 0x39d00000, 0x39d05000, - 0x39d050e8, 0x39d33000, 0x39d33099, 0x3a100000, + 0x39d050e8, 0x39d36000, 0x39d36099, 0x3a100000, 0x3b300000, 0x3b3000e9, 0x3bd00000, 0x3bd00001, 0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a, 0x3c000041, 0x3c00004e, 0x3c00005a, 0x3c000086, @@ -966,7 +966,7 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements 0x3fd00000, 0x3fd00072, 0x3fd000da, 0x3fd0010c, 0x3ff00000, 0x3ff000d1, 0x40100000, 0x401000c3, 0x40200000, 0x4020004c, 0x40700000, 0x40800000, - 0x40857000, 0x408570ba, 0x408dc000, 0x408dc0ba, + 0x4085a000, 0x4085a0ba, 0x408e3000, 0x408e30ba, 0x40c00000, 0x40c000b3, 0x41200000, 0x41200111, 0x41600000, 0x4160010f, 0x41c00000, 0x41d00000, // Entry 280 - 29F @@ -974,9 +974,9 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements 0x42300000, 0x42300164, 0x42900000, 0x42900062, 0x4290006f, 0x429000a4, 0x42900115, 0x43100000, 0x43100027, 0x431000c2, 0x4310014d, 0x43200000, - 0x4321f000, 0x4321f033, 0x4321f0bd, 0x4321f105, - 0x4321f14d, 0x43257000, 0x43257033, 0x432570bd, - 0x43257105, 0x4325714d, 0x43700000, 0x43a00000, + 0x43220000, 0x43220033, 0x432200bd, 0x43220105, + 0x4322014d, 0x4325a000, 0x4325a033, 0x4325a0bd, + 0x4325a105, 0x4325a14d, 0x43700000, 0x43a00000, 0x43b00000, 0x44400000, 0x44400031, 0x44400072, // Entry 2A0 - 2BF 0x4440010c, 0x44500000, 0x4450004b, 0x445000a4, @@ -992,24 +992,24 @@ var coreTags = []language.CompactCoreInfo{ // 773 elements 0x49400106, 0x4a400000, 0x4a4000d4, 0x4a900000, 0x4a9000ba, 0x4ac00000, 0x4ac00053, 0x4ae00000, 0x4ae00130, 0x4b400000, 0x4b400099, 0x4b4000e8, - 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc1f000, - 0x4bc1f137, 0x4bc57000, 0x4bc57137, 0x4be00000, - 0x4be57000, 0x4be570b4, 0x4bee3000, 0x4bee30b4, + 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000, + 0x4bc20137, 0x4bc5a000, 0x4bc5a137, 0x4be00000, + 0x4be5a000, 0x4be5a0b4, 0x4beeb000, 0x4beeb0b4, 0x4c000000, 0x4c300000, 0x4c30013e, 0x4c900000, // Entry 2E0 - 2FF 0x4c900001, 0x4cc00000, 0x4cc0012f, 0x4ce00000, 0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500114, 0x4f200000, 0x4fb00000, 0x4fb00131, 0x50900000, 0x50900052, 0x51200000, 0x51200001, 0x51800000, - 0x5180003b, 0x518000d6, 0x51f00000, 0x51f38000, - 0x51f38053, 0x51f39000, 0x51f3908d, 0x52800000, - 0x528000ba, 0x52900000, 0x52938000, 0x52938053, - 0x5293808d, 0x529380c6, 0x5293810d, 0x52939000, + 0x5180003b, 0x518000d6, 0x51f00000, 0x51f3b000, + 0x51f3b053, 0x51f3c000, 0x51f3c08d, 0x52800000, + 0x528000ba, 0x52900000, 0x5293b000, 0x5293b053, + 0x5293b08d, 0x5293b0c6, 0x5293b10d, 0x5293c000, // Entry 300 - 31F - 0x5293908d, 0x529390c6, 0x5293912e, 0x52f00000, + 0x5293c08d, 0x5293c0c6, 0x5293c12e, 0x52f00000, 0x52f00161, } // Size: 3116 bytes const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix" -// Total table size 3147 bytes (3KiB); checksum: F4E57D15 +// Total table size 3147 bytes (3KiB); checksum: BE816D44 diff --git a/vendor/golang.org/x/text/internal/language/parse.go b/vendor/golang.org/x/text/internal/language/parse.go index 2be83e1da..a2fdad89d 100644 --- a/vendor/golang.org/x/text/internal/language/parse.go +++ b/vendor/golang.org/x/text/internal/language/parse.go @@ -133,14 +133,15 @@ func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) { s.start = oldStart if end := oldStart + newSize; end != oldEnd { diff := end - oldEnd - if end < cap(s.b) { - b := make([]byte, len(s.b)+diff) + var b []byte + if n := len(s.b) + diff; n > cap(s.b) { + b = make([]byte, n) copy(b, s.b[:oldStart]) - copy(b[end:], s.b[oldEnd:]) - s.b = b } else { - s.b = append(s.b[end:], s.b[oldEnd:]...) + b = s.b[:n:n] } + copy(b[end:], s.b[oldEnd:]) + s.b = b s.next = end + (s.next - s.end) s.end = end } diff --git a/vendor/golang.org/x/text/internal/language/tables.go b/vendor/golang.org/x/text/internal/language/tables.go index 239e2d29e..a19480c5b 100644 --- a/vendor/golang.org/x/text/internal/language/tables.go +++ b/vendor/golang.org/x/text/internal/language/tables.go @@ -7,9 +7,9 @@ import "golang.org/x/text/internal/tag" // CLDRVersion is the CLDR version from which the tables in this package are derived. const CLDRVersion = "32" -const NumLanguages = 8665 +const NumLanguages = 8717 -const NumScripts = 242 +const NumScripts = 251 const NumRegions = 357 @@ -284,14 +284,14 @@ var langNoIndex = [2197]uint8{ 0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff, 0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5, 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c, - 0x08, 0x20, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, + 0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, // Entry C0 - FF 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96, - 0x1b, 0x14, 0x08, 0xf2, 0x2b, 0xe7, 0x17, 0x56, - 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef, + 0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56, + 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7b, 0xf3, 0xef, 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10, - 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35, - 0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x00, 0x81, 0x00, + 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x73, 0x35, + 0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00, 0xb0, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d, // Entry 100 - 13F @@ -299,14 +299,14 @@ var langNoIndex = [2197]uint8{ 0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00, 0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3, 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x01, 0x0c, - 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc5, 0x67, 0x5f, - 0x56, 0x89, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00, + 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc7, 0x67, 0x5f, + 0x56, 0x99, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56, 0x90, 0x69, 0x01, 0x2c, 0x96, 0x69, 0x20, 0xfb, // Entry 140 - 17F - 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x16, - 0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x06, - 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x09, + 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16, + 0x03, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x06, + 0x0a, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x09, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x04, 0x08, 0x00, 0x00, 0x04, 0x00, 0x80, 0x28, 0x04, @@ -322,7 +322,7 @@ var langNoIndex = [2197]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // Entry 1C0 - 1FF - 0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00, 0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55, @@ -332,28 +332,28 @@ var langNoIndex = [2197]uint8{ 0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf, // Entry 200 - 23F 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27, - 0xcd, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, + 0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe0, 0xdf, - 0x03, 0x44, 0x08, 0x10, 0x01, 0x04, 0x01, 0xe3, - 0x92, 0x54, 0xdb, 0x28, 0xd1, 0x5f, 0xf6, 0x6d, + 0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x01, 0xe3, + 0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d, 0x79, 0xed, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01, 0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f, 0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54, // Entry 240 - 27F 0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00, - 0x20, 0x7b, 0x38, 0x02, 0x05, 0x84, 0x00, 0xf0, + 0x20, 0x7b, 0x78, 0x02, 0x05, 0x84, 0x00, 0xf0, 0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00, 0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04, 0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00, - 0x11, 0x04, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff, - 0x7b, 0x7f, 0x60, 0x00, 0x05, 0x9b, 0xdd, 0x66, + 0x11, 0x24, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff, + 0x7b, 0x7f, 0x70, 0x00, 0x05, 0x9b, 0xdd, 0x66, // Entry 280 - 2BF 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51, 0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, 0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04, 0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20, @@ -397,9 +397,9 @@ var langNoIndex = [2197]uint8{ 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57, 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7, 0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x00, - 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xd9, 0x0e, 0x11, - 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01, - 0x05, 0xd1, 0x50, 0x58, 0x00, 0x00, 0x00, 0x10, + 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xf9, 0x2e, 0x11, + 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x01, + 0x05, 0xd1, 0x50, 0x5c, 0x00, 0x00, 0x00, 0x10, 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2, 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe, // Entry 400 - 43F @@ -417,14 +417,14 @@ var langNoIndex = [2197]uint8{ 0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf, 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7, 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce, - 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xbd, + 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xfd, 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff, 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4, // Entry 480 - 4BF - 0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xfd, 0x99, 0xfb, + 0x13, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb, 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20, 0x14, 0x00, 0x55, 0x51, 0x82, 0x65, 0xf5, 0x41, - 0xe2, 0xff, 0xfc, 0xdf, 0x00, 0x05, 0xc5, 0x05, + 0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x05, 0xc5, 0x05, 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x04, 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00, @@ -437,12 +437,12 @@ var langNoIndex = [2197]uint8{ 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00, 0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d, - 0xba, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41, + 0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41, // Entry 500 - 53F 0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49, 0x2d, 0x14, 0x27, 0x57, 0xed, 0xf1, 0x3f, 0xe7, 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8, - 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe5, 0xf7, + 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe7, 0xf7, 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10, 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9, 0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c, @@ -473,7 +473,7 @@ var langNoIndex = [2197]uint8{ 0x31, 0x00, 0x00, 0x00, 0x01, 0x10, 0x02, 0x20, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00, 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f, - 0x1f, 0x98, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe, + 0x1f, 0x98, 0xcf, 0x9c, 0xff, 0xaf, 0x5f, 0xfe, // Entry 600 - 63F 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9, 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1, @@ -484,28 +484,28 @@ var langNoIndex = [2197]uint8{ 0xbe, 0x5f, 0x46, 0x1b, 0xe9, 0x5f, 0x50, 0x18, 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f, // Entry 640 - 67F - 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf1, 0x57, 0x6c, + 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c, 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde, - 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x1f, 0x00, 0x98, + 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98, 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff, - 0xb9, 0xda, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4, + 0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4, 0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7, 0x5f, 0xff, 0xff, 0x9e, 0xdb, 0xf6, 0xd7, 0xb9, 0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3, // Entry 680 - 6BF 0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37, - 0xce, 0x7f, 0x04, 0x1d, 0x53, 0x7f, 0xf8, 0xda, + 0xce, 0x7f, 0x04, 0x1d, 0x73, 0x7f, 0xf8, 0xda, 0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x69, 0xa0, 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08, 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06, 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x04, 0x00, 0x10, 0xcc, 0x58, 0xd5, 0x0d, 0x0f, + 0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f, // Entry 6C0 - 6FF 0x14, 0x4d, 0xf1, 0x16, 0x44, 0xd1, 0x42, 0x08, 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, - 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x08, 0x41, - 0x04, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00, + 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x48, 0x41, + 0x24, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab, 0x6d, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, @@ -524,7 +524,7 @@ var langNoIndex = [2197]uint8{ 0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x44, 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04, 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a, - 0x01, 0x00, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55, + 0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75, 0x97, 0x7c, 0x9f, 0x31, 0xcc, 0x68, 0xd1, 0x03, 0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60, @@ -538,8 +538,8 @@ var langNoIndex = [2197]uint8{ 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02, 0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed, // Entry 7C0 - 7FF - 0xdd, 0xbf, 0x72, 0x19, 0xc7, 0x0c, 0xd5, 0x42, - 0x54, 0xdd, 0x77, 0x14, 0x00, 0x80, 0x40, 0x56, + 0xdd, 0xbf, 0x72, 0x1d, 0xc7, 0x0c, 0xd5, 0x42, + 0xfc, 0xff, 0xf7, 0x1f, 0x00, 0x80, 0x40, 0x56, 0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff, 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d, 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80, @@ -556,7 +556,7 @@ var langNoIndex = [2197]uint8{ 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10, 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00, // Entry 840 - 87F - 0xf0, 0xfb, 0xfd, 0x3f, 0x05, 0x00, 0x12, 0x81, + 0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x12, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28, 0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00, @@ -582,8 +582,8 @@ var altLangIndex = [6]uint16{ } // AliasMap maps langIDs to their suggested replacements. -// Size: 656 bytes, 164 elements -var AliasMap = [164]FromTo{ +// Size: 704 bytes, 176 elements +var AliasMap = [176]FromTo{ 0: {From: 0x82, To: 0x88}, 1: {From: 0x187, To: 0x1ae}, 2: {From: 0x1f3, To: 0x1e1}, @@ -603,224 +603,237 @@ var AliasMap = [164]FromTo{ 16: {From: 0x662, To: 0x431}, 17: {From: 0x6ed, To: 0x3a}, 18: {From: 0x6f8, To: 0x1d7}, - 19: {From: 0x73e, To: 0x21a1}, - 20: {From: 0x7b3, To: 0x56}, - 21: {From: 0x7b9, To: 0x299b}, - 22: {From: 0x7c5, To: 0x58}, - 23: {From: 0x7e6, To: 0x145}, - 24: {From: 0x80c, To: 0x5a}, - 25: {From: 0x815, To: 0x8d}, - 26: {From: 0x87e, To: 0x810}, - 27: {From: 0x8c3, To: 0xee3}, - 28: {From: 0x9ef, To: 0x331}, - 29: {From: 0xa36, To: 0x2c5}, - 30: {From: 0xa3d, To: 0xbf}, - 31: {From: 0xabe, To: 0x3322}, - 32: {From: 0xb38, To: 0x529}, - 33: {From: 0xb75, To: 0x265a}, - 34: {From: 0xb7e, To: 0xbc3}, - 35: {From: 0xb9b, To: 0x44e}, - 36: {From: 0xbbc, To: 0x4229}, - 37: {From: 0xbbf, To: 0x529}, - 38: {From: 0xbfe, To: 0x2da7}, - 39: {From: 0xc2e, To: 0x3181}, - 40: {From: 0xcb9, To: 0xf3}, - 41: {From: 0xd08, To: 0xfa}, - 42: {From: 0xdc8, To: 0x11a}, - 43: {From: 0xdd7, To: 0x32d}, - 44: {From: 0xdf8, To: 0xdfb}, - 45: {From: 0xdfe, To: 0x531}, - 46: {From: 0xedf, To: 0x205a}, - 47: {From: 0xeee, To: 0x2e9a}, - 48: {From: 0xf39, To: 0x367}, - 49: {From: 0x10d0, To: 0x140}, - 50: {From: 0x1104, To: 0x2d0}, - 51: {From: 0x11a0, To: 0x1ec}, - 52: {From: 0x1279, To: 0x21}, - 53: {From: 0x1424, To: 0x15e}, - 54: {From: 0x1470, To: 0x14e}, - 55: {From: 0x151f, To: 0xd9b}, - 56: {From: 0x1523, To: 0x390}, - 57: {From: 0x1532, To: 0x19f}, - 58: {From: 0x1580, To: 0x210}, - 59: {From: 0x1583, To: 0x10d}, - 60: {From: 0x15a3, To: 0x3caf}, - 61: {From: 0x166a, To: 0x19b}, - 62: {From: 0x16c8, To: 0x136}, - 63: {From: 0x1700, To: 0x29f8}, - 64: {From: 0x1718, To: 0x194}, - 65: {From: 0x1727, To: 0xf3f}, - 66: {From: 0x177a, To: 0x178}, - 67: {From: 0x1809, To: 0x17b6}, - 68: {From: 0x1816, To: 0x18f3}, - 69: {From: 0x188a, To: 0x436}, - 70: {From: 0x1979, To: 0x1d01}, - 71: {From: 0x1a74, To: 0x2bb0}, - 72: {From: 0x1a8a, To: 0x1f8}, - 73: {From: 0x1b5a, To: 0x1fa}, - 74: {From: 0x1b86, To: 0x1515}, - 75: {From: 0x1d64, To: 0x2c9b}, - 76: {From: 0x2038, To: 0x37b1}, - 77: {From: 0x203d, To: 0x20dd}, - 78: {From: 0x205a, To: 0x30b}, - 79: {From: 0x20e3, To: 0x274}, - 80: {From: 0x20ee, To: 0x263}, - 81: {From: 0x20f2, To: 0x22d}, - 82: {From: 0x20f9, To: 0x256}, - 83: {From: 0x210f, To: 0x21eb}, - 84: {From: 0x2135, To: 0x27d}, - 85: {From: 0x2160, To: 0x913}, - 86: {From: 0x2199, To: 0x121}, - 87: {From: 0x21ce, To: 0x1561}, - 88: {From: 0x21e6, To: 0x504}, - 89: {From: 0x21f4, To: 0x49f}, - 90: {From: 0x222d, To: 0x121}, - 91: {From: 0x2237, To: 0x121}, - 92: {From: 0x2262, To: 0x92a}, - 93: {From: 0x2316, To: 0x3226}, - 94: {From: 0x2382, To: 0x3365}, - 95: {From: 0x2472, To: 0x2c7}, - 96: {From: 0x24e4, To: 0x2ff}, - 97: {From: 0x24f0, To: 0x2fa}, - 98: {From: 0x24fa, To: 0x31f}, - 99: {From: 0x2550, To: 0xb5b}, - 100: {From: 0x25a9, To: 0xe2}, - 101: {From: 0x263e, To: 0x2d0}, - 102: {From: 0x26c9, To: 0x26b4}, - 103: {From: 0x26f9, To: 0x3c8}, - 104: {From: 0x2727, To: 0x3caf}, - 105: {From: 0x2765, To: 0x26b4}, - 106: {From: 0x2789, To: 0x4358}, - 107: {From: 0x28ef, To: 0x2837}, - 108: {From: 0x2914, To: 0x351}, - 109: {From: 0x2986, To: 0x2da7}, - 110: {From: 0x2b1a, To: 0x38d}, - 111: {From: 0x2bfc, To: 0x395}, - 112: {From: 0x2c3f, To: 0x3caf}, - 113: {From: 0x2cfc, To: 0x3be}, - 114: {From: 0x2d13, To: 0x597}, - 115: {From: 0x2d47, To: 0x148}, - 116: {From: 0x2d48, To: 0x148}, - 117: {From: 0x2dff, To: 0x2f1}, - 118: {From: 0x2e08, To: 0x19cc}, - 119: {From: 0x2e1a, To: 0x2d95}, - 120: {From: 0x2e21, To: 0x292}, - 121: {From: 0x2e54, To: 0x7d}, - 122: {From: 0x2e65, To: 0x2282}, - 123: {From: 0x2ea0, To: 0x2e9b}, - 124: {From: 0x2eef, To: 0x2ed7}, - 125: {From: 0x3193, To: 0x3c4}, - 126: {From: 0x3366, To: 0x338e}, - 127: {From: 0x342a, To: 0x3dc}, - 128: {From: 0x34ee, To: 0x18d0}, - 129: {From: 0x35c8, To: 0x2c9b}, - 130: {From: 0x35e6, To: 0x412}, - 131: {From: 0x3658, To: 0x246}, - 132: {From: 0x3676, To: 0x3f4}, - 133: {From: 0x36fd, To: 0x445}, - 134: {From: 0x37c0, To: 0x121}, - 135: {From: 0x3816, To: 0x38f2}, - 136: {From: 0x382b, To: 0x2c9b}, - 137: {From: 0x382f, To: 0xa9}, - 138: {From: 0x3832, To: 0x3228}, - 139: {From: 0x386c, To: 0x39a6}, - 140: {From: 0x3892, To: 0x3fc0}, - 141: {From: 0x38a5, To: 0x39d7}, - 142: {From: 0x38b4, To: 0x1fa4}, - 143: {From: 0x38b5, To: 0x2e9a}, - 144: {From: 0x395c, To: 0x47e}, - 145: {From: 0x3b4e, To: 0xd91}, - 146: {From: 0x3b78, To: 0x137}, - 147: {From: 0x3c99, To: 0x4bc}, - 148: {From: 0x3fbd, To: 0x100}, - 149: {From: 0x4208, To: 0xa91}, - 150: {From: 0x42be, To: 0x573}, - 151: {From: 0x42f9, To: 0x3f60}, - 152: {From: 0x4378, To: 0x25a}, - 153: {From: 0x43cb, To: 0x36cb}, - 154: {From: 0x43cd, To: 0x10f}, - 155: {From: 0x44af, To: 0x3322}, - 156: {From: 0x44e3, To: 0x512}, - 157: {From: 0x45ca, To: 0x2409}, - 158: {From: 0x45dd, To: 0x26dc}, - 159: {From: 0x4610, To: 0x48ae}, - 160: {From: 0x46ae, To: 0x46a0}, - 161: {From: 0x473e, To: 0x4745}, - 162: {From: 0x4916, To: 0x31f}, - 163: {From: 0x49a7, To: 0x523}, + 19: {From: 0x709, To: 0x3625}, + 20: {From: 0x73e, To: 0x21a1}, + 21: {From: 0x7b3, To: 0x56}, + 22: {From: 0x7b9, To: 0x299b}, + 23: {From: 0x7c5, To: 0x58}, + 24: {From: 0x7e6, To: 0x145}, + 25: {From: 0x80c, To: 0x5a}, + 26: {From: 0x815, To: 0x8d}, + 27: {From: 0x87e, To: 0x810}, + 28: {From: 0x8c3, To: 0xee3}, + 29: {From: 0x9ef, To: 0x331}, + 30: {From: 0xa36, To: 0x2c5}, + 31: {From: 0xa3d, To: 0xbf}, + 32: {From: 0xabe, To: 0x3322}, + 33: {From: 0xb38, To: 0x529}, + 34: {From: 0xb75, To: 0x265a}, + 35: {From: 0xb7e, To: 0xbc3}, + 36: {From: 0xb9b, To: 0x44e}, + 37: {From: 0xbbc, To: 0x4229}, + 38: {From: 0xbbf, To: 0x529}, + 39: {From: 0xbfe, To: 0x2da7}, + 40: {From: 0xc2e, To: 0x3181}, + 41: {From: 0xcb9, To: 0xf3}, + 42: {From: 0xd08, To: 0xfa}, + 43: {From: 0xdc8, To: 0x11a}, + 44: {From: 0xdd7, To: 0x32d}, + 45: {From: 0xdf8, To: 0xdfb}, + 46: {From: 0xdfe, To: 0x531}, + 47: {From: 0xe01, To: 0xdf3}, + 48: {From: 0xedf, To: 0x205a}, + 49: {From: 0xee9, To: 0x222e}, + 50: {From: 0xeee, To: 0x2e9a}, + 51: {From: 0xf39, To: 0x367}, + 52: {From: 0x10d0, To: 0x140}, + 53: {From: 0x1104, To: 0x2d0}, + 54: {From: 0x11a0, To: 0x1ec}, + 55: {From: 0x1279, To: 0x21}, + 56: {From: 0x1424, To: 0x15e}, + 57: {From: 0x1470, To: 0x14e}, + 58: {From: 0x151f, To: 0xd9b}, + 59: {From: 0x1523, To: 0x390}, + 60: {From: 0x1532, To: 0x19f}, + 61: {From: 0x1580, To: 0x210}, + 62: {From: 0x1583, To: 0x10d}, + 63: {From: 0x15a3, To: 0x3caf}, + 64: {From: 0x1630, To: 0x222e}, + 65: {From: 0x166a, To: 0x19b}, + 66: {From: 0x16c8, To: 0x136}, + 67: {From: 0x1700, To: 0x29f8}, + 68: {From: 0x1718, To: 0x194}, + 69: {From: 0x1727, To: 0xf3f}, + 70: {From: 0x177a, To: 0x178}, + 71: {From: 0x1809, To: 0x17b6}, + 72: {From: 0x1816, To: 0x18f3}, + 73: {From: 0x188a, To: 0x436}, + 74: {From: 0x1979, To: 0x1d01}, + 75: {From: 0x1a74, To: 0x2bb0}, + 76: {From: 0x1a8a, To: 0x1f8}, + 77: {From: 0x1b5a, To: 0x1fa}, + 78: {From: 0x1b86, To: 0x1515}, + 79: {From: 0x1d64, To: 0x2c9b}, + 80: {From: 0x2038, To: 0x37b1}, + 81: {From: 0x203d, To: 0x20dd}, + 82: {From: 0x205a, To: 0x30b}, + 83: {From: 0x20e3, To: 0x274}, + 84: {From: 0x20ee, To: 0x263}, + 85: {From: 0x20f2, To: 0x22d}, + 86: {From: 0x20f9, To: 0x256}, + 87: {From: 0x210f, To: 0x21eb}, + 88: {From: 0x2135, To: 0x27d}, + 89: {From: 0x2160, To: 0x913}, + 90: {From: 0x2199, To: 0x121}, + 91: {From: 0x21ce, To: 0x1561}, + 92: {From: 0x21e6, To: 0x504}, + 93: {From: 0x21f4, To: 0x49f}, + 94: {From: 0x21fb, To: 0x269}, + 95: {From: 0x222d, To: 0x121}, + 96: {From: 0x2237, To: 0x121}, + 97: {From: 0x2262, To: 0x92a}, + 98: {From: 0x2316, To: 0x3226}, + 99: {From: 0x236a, To: 0x2835}, + 100: {From: 0x2382, To: 0x3365}, + 101: {From: 0x2472, To: 0x2c7}, + 102: {From: 0x24e4, To: 0x2ff}, + 103: {From: 0x24f0, To: 0x2fa}, + 104: {From: 0x24fa, To: 0x31f}, + 105: {From: 0x2550, To: 0xb5b}, + 106: {From: 0x25a9, To: 0xe2}, + 107: {From: 0x263e, To: 0x2d0}, + 108: {From: 0x26c9, To: 0x26b4}, + 109: {From: 0x26f9, To: 0x3c8}, + 110: {From: 0x2727, To: 0x3caf}, + 111: {From: 0x2755, To: 0x6a4}, + 112: {From: 0x2765, To: 0x26b4}, + 113: {From: 0x2789, To: 0x4358}, + 114: {From: 0x27c9, To: 0x2001}, + 115: {From: 0x28ea, To: 0x27b1}, + 116: {From: 0x28ef, To: 0x2837}, + 117: {From: 0x2914, To: 0x351}, + 118: {From: 0x2986, To: 0x2da7}, + 119: {From: 0x29f0, To: 0x96b}, + 120: {From: 0x2b1a, To: 0x38d}, + 121: {From: 0x2bfc, To: 0x395}, + 122: {From: 0x2c3f, To: 0x3caf}, + 123: {From: 0x2cfc, To: 0x3be}, + 124: {From: 0x2d13, To: 0x597}, + 125: {From: 0x2d47, To: 0x148}, + 126: {From: 0x2d48, To: 0x148}, + 127: {From: 0x2dff, To: 0x2f1}, + 128: {From: 0x2e08, To: 0x19cc}, + 129: {From: 0x2e1a, To: 0x2d95}, + 130: {From: 0x2e21, To: 0x292}, + 131: {From: 0x2e54, To: 0x7d}, + 132: {From: 0x2e65, To: 0x2282}, + 133: {From: 0x2ea0, To: 0x2e9b}, + 134: {From: 0x2eef, To: 0x2ed7}, + 135: {From: 0x3193, To: 0x3c4}, + 136: {From: 0x3366, To: 0x338e}, + 137: {From: 0x342a, To: 0x3dc}, + 138: {From: 0x34ee, To: 0x18d0}, + 139: {From: 0x35c8, To: 0x2c9b}, + 140: {From: 0x35e6, To: 0x412}, + 141: {From: 0x3658, To: 0x246}, + 142: {From: 0x3676, To: 0x3f4}, + 143: {From: 0x36fd, To: 0x445}, + 144: {From: 0x37c0, To: 0x121}, + 145: {From: 0x3816, To: 0x38f2}, + 146: {From: 0x382a, To: 0x2b48}, + 147: {From: 0x382b, To: 0x2c9b}, + 148: {From: 0x382f, To: 0xa9}, + 149: {From: 0x3832, To: 0x3228}, + 150: {From: 0x386c, To: 0x39a6}, + 151: {From: 0x3892, To: 0x3fc0}, + 152: {From: 0x38a5, To: 0x39d7}, + 153: {From: 0x38b4, To: 0x1fa4}, + 154: {From: 0x38b5, To: 0x2e9a}, + 155: {From: 0x395c, To: 0x47e}, + 156: {From: 0x3b4e, To: 0xd91}, + 157: {From: 0x3b78, To: 0x137}, + 158: {From: 0x3c99, To: 0x4bc}, + 159: {From: 0x3fbd, To: 0x100}, + 160: {From: 0x4208, To: 0xa91}, + 161: {From: 0x42be, To: 0x573}, + 162: {From: 0x42f9, To: 0x3f60}, + 163: {From: 0x4378, To: 0x25a}, + 164: {From: 0x43b8, To: 0xe6c}, + 165: {From: 0x43cd, To: 0x10f}, + 166: {From: 0x44af, To: 0x3322}, + 167: {From: 0x44e3, To: 0x512}, + 168: {From: 0x45ca, To: 0x2409}, + 169: {From: 0x45dd, To: 0x26dc}, + 170: {From: 0x4610, To: 0x48ae}, + 171: {From: 0x46ae, To: 0x46a0}, + 172: {From: 0x473e, To: 0x4745}, + 173: {From: 0x4817, To: 0x3503}, + 174: {From: 0x4916, To: 0x31f}, + 175: {From: 0x49a7, To: 0x523}, } -// Size: 164 bytes, 164 elements -var AliasTypes = [164]AliasType{ +// Size: 176 bytes, 176 elements +var AliasTypes = [176]AliasType{ // Entry 0 - 3F 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2, - 1, 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, 0, - 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, - 2, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, + 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, + 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, + 0, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, // Entry 40 - 7F - 1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 0, 1, 1, - 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, - 0, 1, 0, 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, + 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 2, 1, 1, // Entry 80 - BF - 0, 0, 2, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 1, 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, - 0, 1, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 0, 2, 1, 1, 1, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, + 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, } const ( - _Latn = 87 - _Hani = 54 - _Hans = 56 - _Hant = 57 - _Qaaa = 139 - _Qaai = 147 - _Qabx = 188 - _Zinh = 236 - _Zyyy = 241 - _Zzzz = 242 + _Latn = 90 + _Hani = 57 + _Hans = 59 + _Hant = 60 + _Qaaa = 143 + _Qaai = 151 + _Qabx = 192 + _Zinh = 245 + _Zyyy = 250 + _Zzzz = 251 ) // script is an alphabetically sorted list of ISO 15924 codes. The index // of the script in the string, divided by 4, is the internal scriptID. -const script tag.Index = "" + // Size: 976 bytes +const script tag.Index = "" + // Size: 1012 bytes "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + - "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCpmnCprtCyrlCyrsDevaDogrDsrt" + - "DuplEgydEgyhEgypElbaEthiGeokGeorGlagGongGonmGothGranGrekGujrGuruHanbHang" + - "HaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamoJavaJpanJurc" + - "KaliKanaKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepc" + - "LimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedfMendMercMeroMlym" + - "ModiMongMoonMrooMteiMultMymrNarbNbatNewaNkdbNkgbNkooNshuOgamOlckOrkhOrya" + - "OsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaae" + - "QaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaaw" + - "QaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabkQablQabmQabnQabo" + - "QabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSaraSarbSaurSgnwShaw" + - "ShrdShuiSiddSindSinhSoraSoyoSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTaml" + - "TangTavtTeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWchoWoleXpeoXsux" + - "YiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff\xff" + "BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak" + + "DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr" + + "GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo" + + "JavaJpanJurcKaliKanaKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatfLatg" + + "LatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedfMend" + + "MercMeroMlymModiMongMoonMrooMteiMultMymrNandNarbNbatNewaNkdbNkgbNkooNshu" + + "OgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPiqdPlrdPrtiQaaa" + + "QaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaas" + + "QaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabk" + + "QablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRohgRoroRunrSamr" + + "SaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogdSogoSoraSoyoSundSyloSyrcSyre" + + "SyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhToto" + + "UgarVaiiVispWaraWchoWoleXpeoXsuxYeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz" + + "\xff\xff\xff\xff" // suppressScript is an index from langID to the dominant script for that language, // if it exists. If a script is given, it should be suppressed from the language tag. // Size: 1330 bytes, 1330 elements var suppressScript = [1330]uint8{ // Entry 0 - 3F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 40 - 7F 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // Entry 80 - BF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -828,66 +841,66 @@ var suppressScript = [1330]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry C0 - FF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 100 - 13F - 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, + 0x5a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xde, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x57, 0x00, 0x57, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x5a, 0x00, 0x5a, 0x00, // Entry 140 - 17F - 0x57, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0x00, 0x57, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x57, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, + 0x00, 0x5a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 180 - 1BF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x57, 0x32, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5a, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x22, 0x00, // Entry 1C0 - 1FF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x57, 0x00, 0x57, 0x57, 0x00, 0x08, + 0x00, 0x5a, 0x5a, 0x00, 0x5a, 0x5a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x57, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0x5a, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, // Entry 200 - 23F - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 240 - 27F - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x57, 0x00, 0x00, - 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x4f, 0x00, 0x00, 0x50, 0x00, 0x21, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x5a, 0x00, 0x00, + 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x53, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -895,101 +908,101 @@ var suppressScript = [1330]uint8{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 280 - 2BF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 2C0 - 2FF - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, // Entry 300 - 33F - 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x57, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5a, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, + 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, // Entry 340 - 37F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, - 0x57, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, + 0x5a, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x57, 0x00, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x5a, 0x00, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 380 - 3BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, // Entry 3C0 - 3FF - 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x00, 0x00, 0x57, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 400 - 43F - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, - 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, // Entry 440 - 47F - 0x00, 0x00, 0x00, 0x00, 0x57, 0x57, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5a, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xda, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x29, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, + 0x00, 0xe1, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, // Entry 480 - 4BF - 0x57, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x57, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 4C0 - 4FF - 0x57, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Entry 500 - 53F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, } @@ -1255,97 +1268,117 @@ var fromM49 = [333]uint16{ 0xc759, 0xc95a, 0xcb5b, 0xcd5c, 0xcf65, } -// Size: 1615 bytes +// Size: 1995 bytes var variantIndex = map[string]uint8{ "1606nict": 0x0, "1694acad": 0x1, "1901": 0x2, "1959acad": 0x3, - "1994": 0x4d, + "1994": 0x60, "1996": 0x4, "abl1943": 0x5, "akuapem": 0x6, - "alalc97": 0x4f, + "alalc97": 0x62, "aluku": 0x7, "ao1990": 0x8, - "arevela": 0x9, - "arevmda": 0xa, - "asante": 0xb, - "baku1926": 0xc, - "balanka": 0xd, - "barla": 0xe, - "basiceng": 0xf, - "bauddha": 0x10, - "biscayan": 0x11, - "biske": 0x48, - "bohoric": 0x12, - "boont": 0x13, - "colb1945": 0x14, - "cornu": 0x15, - "dajnko": 0x16, - "ekavsk": 0x17, - "emodeng": 0x18, - "fonipa": 0x50, - "fonnapa": 0x51, - "fonupa": 0x52, - "fonxsamp": 0x53, - "hepburn": 0x19, - "heploc": 0x4e, - "hognorsk": 0x1a, - "hsistemo": 0x1b, - "ijekavsk": 0x1c, - "itihasa": 0x1d, - "jauer": 0x1e, - "jyutping": 0x1f, - "kkcor": 0x20, - "kociewie": 0x21, - "kscor": 0x22, - "laukika": 0x23, - "lipaw": 0x49, - "luna1918": 0x24, - "metelko": 0x25, - "monoton": 0x26, - "ndyuka": 0x27, - "nedis": 0x28, - "newfound": 0x29, - "njiva": 0x4a, - "nulik": 0x2a, - "osojs": 0x4b, - "oxendict": 0x2b, - "pahawh2": 0x2c, - "pahawh3": 0x2d, - "pahawh4": 0x2e, - "pamaka": 0x2f, - "petr1708": 0x30, - "pinyin": 0x31, - "polyton": 0x32, - "puter": 0x33, - "rigik": 0x34, - "rozaj": 0x35, - "rumgr": 0x36, - "scotland": 0x37, - "scouse": 0x38, - "simple": 0x54, - "solba": 0x4c, - "sotav": 0x39, - "spanglis": 0x3a, - "surmiran": 0x3b, - "sursilv": 0x3c, - "sutsilv": 0x3d, - "tarask": 0x3e, - "uccor": 0x3f, - "ucrcor": 0x40, - "ulster": 0x41, - "unifon": 0x42, - "vaidika": 0x43, - "valencia": 0x44, - "vallader": 0x45, - "wadegile": 0x46, - "xsistemo": 0x47, + "aranes": 0x9, + "arevela": 0xa, + "arevmda": 0xb, + "asante": 0xc, + "auvern": 0xd, + "baku1926": 0xe, + "balanka": 0xf, + "barla": 0x10, + "basiceng": 0x11, + "bauddha": 0x12, + "biscayan": 0x13, + "biske": 0x5b, + "bohoric": 0x14, + "boont": 0x15, + "bornholm": 0x16, + "cisaup": 0x17, + "colb1945": 0x18, + "cornu": 0x19, + "creiss": 0x1a, + "dajnko": 0x1b, + "ekavsk": 0x1c, + "emodeng": 0x1d, + "fonipa": 0x63, + "fonkirsh": 0x64, + "fonnapa": 0x65, + "fonupa": 0x66, + "fonxsamp": 0x67, + "gascon": 0x1e, + "grclass": 0x1f, + "grital": 0x20, + "grmistr": 0x21, + "hepburn": 0x22, + "heploc": 0x61, + "hognorsk": 0x23, + "hsistemo": 0x24, + "ijekavsk": 0x25, + "itihasa": 0x26, + "ivanchov": 0x27, + "jauer": 0x28, + "jyutping": 0x29, + "kkcor": 0x2a, + "kociewie": 0x2b, + "kscor": 0x2c, + "laukika": 0x2d, + "lemosin": 0x2e, + "lengadoc": 0x2f, + "lipaw": 0x5c, + "luna1918": 0x30, + "metelko": 0x31, + "monoton": 0x32, + "ndyuka": 0x33, + "nedis": 0x34, + "newfound": 0x35, + "nicard": 0x36, + "njiva": 0x5d, + "nulik": 0x37, + "osojs": 0x5e, + "oxendict": 0x38, + "pahawh2": 0x39, + "pahawh3": 0x3a, + "pahawh4": 0x3b, + "pamaka": 0x3c, + "peano": 0x3d, + "petr1708": 0x3e, + "pinyin": 0x3f, + "polyton": 0x40, + "provenc": 0x41, + "puter": 0x42, + "rigik": 0x43, + "rozaj": 0x44, + "rumgr": 0x45, + "scotland": 0x46, + "scouse": 0x47, + "simple": 0x68, + "solba": 0x5f, + "sotav": 0x48, + "spanglis": 0x49, + "surmiran": 0x4a, + "sursilv": 0x4b, + "sutsilv": 0x4c, + "tarask": 0x4d, + "tongyong": 0x4e, + "tunumiit": 0x4f, + "uccor": 0x50, + "ucrcor": 0x51, + "ulster": 0x52, + "unifon": 0x53, + "vaidika": 0x54, + "valencia": 0x55, + "vallader": 0x56, + "vecdruka": 0x57, + "vivaraup": 0x58, + "wadegile": 0x59, + "xsistemo": 0x5a, } // variantNumSpecialized is the number of specialized variants in variants. -const variantNumSpecialized = 79 +const variantNumSpecialized = 98 // nRegionGroups is the number of region groups. const nRegionGroups = 33 @@ -1357,8 +1390,8 @@ type likelyLangRegion struct { // likelyScript is a lookup table, indexed by scriptID, for the most likely // languages and regions given a script. -// Size: 976 bytes, 244 elements -var likelyScript = [244]likelyLangRegion{ +// Size: 1012 bytes, 253 elements +var likelyScript = [253]likelyLangRegion{ 1: {lang: 0x14e, region: 0x84}, 3: {lang: 0x2a2, region: 0x106}, 4: {lang: 0x1f, region: 0x99}, @@ -1382,126 +1415,126 @@ var likelyScript = [244]likelyLangRegion{ 24: {lang: 0x4f0, region: 0x12b}, 25: {lang: 0xe7, region: 0x13e}, 26: {lang: 0xe5, region: 0x135}, - 28: {lang: 0xf1, region: 0x6b}, - 30: {lang: 0x1a0, region: 0x5d}, - 31: {lang: 0x3e2, region: 0x106}, - 33: {lang: 0x1be, region: 0x99}, - 36: {lang: 0x15e, region: 0x78}, - 39: {lang: 0x133, region: 0x6b}, - 40: {lang: 0x431, region: 0x27}, - 41: {lang: 0x27, region: 0x6f}, - 43: {lang: 0x210, region: 0x7d}, - 44: {lang: 0xfe, region: 0x38}, - 46: {lang: 0x19b, region: 0x99}, - 47: {lang: 0x19e, region: 0x130}, - 48: {lang: 0x3e9, region: 0x99}, - 49: {lang: 0x136, region: 0x87}, - 50: {lang: 0x1a4, region: 0x99}, - 51: {lang: 0x39d, region: 0x99}, - 52: {lang: 0x529, region: 0x12e}, - 53: {lang: 0x254, region: 0xab}, - 54: {lang: 0x529, region: 0x53}, - 55: {lang: 0x1cb, region: 0xe7}, - 56: {lang: 0x529, region: 0x53}, - 57: {lang: 0x529, region: 0x12e}, - 58: {lang: 0x2fd, region: 0x9b}, - 59: {lang: 0x1bc, region: 0x97}, - 60: {lang: 0x200, region: 0xa2}, - 61: {lang: 0x1c5, region: 0x12b}, - 62: {lang: 0x1ca, region: 0xaf}, - 65: {lang: 0x1d5, region: 0x92}, - 67: {lang: 0x142, region: 0x9e}, - 68: {lang: 0x254, region: 0xab}, - 69: {lang: 0x20e, region: 0x95}, - 70: {lang: 0x200, region: 0xa2}, - 72: {lang: 0x135, region: 0xc4}, + 29: {lang: 0xf1, region: 0x6b}, + 31: {lang: 0x1a0, region: 0x5d}, + 32: {lang: 0x3e2, region: 0x106}, + 34: {lang: 0x1be, region: 0x99}, + 38: {lang: 0x15e, region: 0x78}, + 41: {lang: 0x133, region: 0x6b}, + 42: {lang: 0x431, region: 0x27}, + 44: {lang: 0x27, region: 0x6f}, + 46: {lang: 0x210, region: 0x7d}, + 47: {lang: 0xfe, region: 0x38}, + 49: {lang: 0x19b, region: 0x99}, + 50: {lang: 0x19e, region: 0x130}, + 51: {lang: 0x3e9, region: 0x99}, + 52: {lang: 0x136, region: 0x87}, + 53: {lang: 0x1a4, region: 0x99}, + 54: {lang: 0x39d, region: 0x99}, + 55: {lang: 0x529, region: 0x12e}, + 56: {lang: 0x254, region: 0xab}, + 57: {lang: 0x529, region: 0x53}, + 58: {lang: 0x1cb, region: 0xe7}, + 59: {lang: 0x529, region: 0x53}, + 60: {lang: 0x529, region: 0x12e}, + 61: {lang: 0x2fd, region: 0x9b}, + 62: {lang: 0x1bc, region: 0x97}, + 63: {lang: 0x200, region: 0xa2}, + 64: {lang: 0x1c5, region: 0x12b}, + 65: {lang: 0x1ca, region: 0xaf}, + 68: {lang: 0x1d5, region: 0x92}, + 70: {lang: 0x142, region: 0x9e}, + 71: {lang: 0x254, region: 0xab}, + 72: {lang: 0x20e, region: 0x95}, 73: {lang: 0x200, region: 0xa2}, - 74: {lang: 0x3bb, region: 0xe8}, - 75: {lang: 0x24a, region: 0xa6}, - 76: {lang: 0x3fa, region: 0x99}, - 79: {lang: 0x251, region: 0x99}, - 80: {lang: 0x254, region: 0xab}, - 82: {lang: 0x88, region: 0x99}, - 83: {lang: 0x370, region: 0x123}, - 84: {lang: 0x2b8, region: 0xaf}, - 89: {lang: 0x29f, region: 0x99}, - 90: {lang: 0x2a8, region: 0x99}, - 91: {lang: 0x28f, region: 0x87}, - 92: {lang: 0x1a0, region: 0x87}, - 93: {lang: 0x2ac, region: 0x53}, - 95: {lang: 0x4f4, region: 0x12b}, - 96: {lang: 0x4f5, region: 0x12b}, - 97: {lang: 0x1be, region: 0x99}, - 99: {lang: 0x337, region: 0x9c}, - 100: {lang: 0x4f7, region: 0x53}, - 101: {lang: 0xa9, region: 0x53}, - 104: {lang: 0x2e8, region: 0x112}, - 105: {lang: 0x4f8, region: 0x10b}, - 106: {lang: 0x4f8, region: 0x10b}, - 107: {lang: 0x304, region: 0x99}, - 108: {lang: 0x31b, region: 0x99}, - 109: {lang: 0x30b, region: 0x53}, - 111: {lang: 0x31e, region: 0x35}, - 112: {lang: 0x30e, region: 0x99}, - 113: {lang: 0x414, region: 0xe8}, - 114: {lang: 0x331, region: 0xc4}, - 115: {lang: 0x4f9, region: 0x108}, - 116: {lang: 0x3b, region: 0xa1}, - 117: {lang: 0x353, region: 0xdb}, - 120: {lang: 0x2d0, region: 0x84}, - 121: {lang: 0x52a, region: 0x53}, - 122: {lang: 0x403, region: 0x96}, - 123: {lang: 0x3ee, region: 0x99}, - 124: {lang: 0x39b, region: 0xc5}, - 125: {lang: 0x395, region: 0x99}, - 126: {lang: 0x399, region: 0x135}, - 127: {lang: 0x429, region: 0x115}, - 128: {lang: 0x3b, region: 0x11c}, - 129: {lang: 0xfd, region: 0xc4}, - 130: {lang: 0x27d, region: 0x106}, - 131: {lang: 0x2c9, region: 0x53}, - 132: {lang: 0x39f, region: 0x9c}, - 133: {lang: 0x39f, region: 0x53}, - 135: {lang: 0x3ad, region: 0xb0}, - 137: {lang: 0x1c6, region: 0x53}, - 138: {lang: 0x4fd, region: 0x9c}, - 189: {lang: 0x3cb, region: 0x95}, - 191: {lang: 0x372, region: 0x10c}, - 192: {lang: 0x420, region: 0x97}, - 194: {lang: 0x4ff, region: 0x15e}, - 195: {lang: 0x3f0, region: 0x99}, - 196: {lang: 0x45, region: 0x135}, - 197: {lang: 0x139, region: 0x7b}, - 198: {lang: 0x3e9, region: 0x99}, - 200: {lang: 0x3e9, region: 0x99}, - 201: {lang: 0x3fa, region: 0x99}, - 202: {lang: 0x40c, region: 0xb3}, - 203: {lang: 0x433, region: 0x99}, - 204: {lang: 0xef, region: 0xc5}, - 205: {lang: 0x43e, region: 0x95}, - 206: {lang: 0x44d, region: 0x35}, - 207: {lang: 0x44e, region: 0x9b}, - 211: {lang: 0x45a, region: 0xe7}, - 212: {lang: 0x11a, region: 0x99}, - 213: {lang: 0x45e, region: 0x53}, - 214: {lang: 0x232, region: 0x53}, - 215: {lang: 0x450, region: 0x99}, - 216: {lang: 0x4a5, region: 0x53}, - 217: {lang: 0x9f, region: 0x13e}, - 218: {lang: 0x461, region: 0x99}, - 220: {lang: 0x528, region: 0xba}, - 221: {lang: 0x153, region: 0xe7}, - 222: {lang: 0x128, region: 0xcd}, - 223: {lang: 0x46b, region: 0x123}, - 224: {lang: 0xa9, region: 0x53}, - 225: {lang: 0x2ce, region: 0x99}, - 226: {lang: 0x4ad, region: 0x11c}, - 227: {lang: 0x4be, region: 0xb4}, - 229: {lang: 0x1ce, region: 0x99}, - 232: {lang: 0x3a9, region: 0x9c}, - 233: {lang: 0x22, region: 0x9b}, - 234: {lang: 0x1ea, region: 0x53}, - 235: {lang: 0xef, region: 0xc5}, + 75: {lang: 0x135, region: 0xc4}, + 76: {lang: 0x200, region: 0xa2}, + 77: {lang: 0x3bb, region: 0xe8}, + 78: {lang: 0x24a, region: 0xa6}, + 79: {lang: 0x3fa, region: 0x99}, + 82: {lang: 0x251, region: 0x99}, + 83: {lang: 0x254, region: 0xab}, + 85: {lang: 0x88, region: 0x99}, + 86: {lang: 0x370, region: 0x123}, + 87: {lang: 0x2b8, region: 0xaf}, + 92: {lang: 0x29f, region: 0x99}, + 93: {lang: 0x2a8, region: 0x99}, + 94: {lang: 0x28f, region: 0x87}, + 95: {lang: 0x1a0, region: 0x87}, + 96: {lang: 0x2ac, region: 0x53}, + 98: {lang: 0x4f4, region: 0x12b}, + 99: {lang: 0x4f5, region: 0x12b}, + 100: {lang: 0x1be, region: 0x99}, + 102: {lang: 0x337, region: 0x9c}, + 103: {lang: 0x4f7, region: 0x53}, + 104: {lang: 0xa9, region: 0x53}, + 107: {lang: 0x2e8, region: 0x112}, + 108: {lang: 0x4f8, region: 0x10b}, + 109: {lang: 0x4f8, region: 0x10b}, + 110: {lang: 0x304, region: 0x99}, + 111: {lang: 0x31b, region: 0x99}, + 112: {lang: 0x30b, region: 0x53}, + 114: {lang: 0x31e, region: 0x35}, + 115: {lang: 0x30e, region: 0x99}, + 116: {lang: 0x414, region: 0xe8}, + 117: {lang: 0x331, region: 0xc4}, + 119: {lang: 0x4f9, region: 0x108}, + 120: {lang: 0x3b, region: 0xa1}, + 121: {lang: 0x353, region: 0xdb}, + 124: {lang: 0x2d0, region: 0x84}, + 125: {lang: 0x52a, region: 0x53}, + 126: {lang: 0x403, region: 0x96}, + 127: {lang: 0x3ee, region: 0x99}, + 128: {lang: 0x39b, region: 0xc5}, + 129: {lang: 0x395, region: 0x99}, + 130: {lang: 0x399, region: 0x135}, + 131: {lang: 0x429, region: 0x115}, + 132: {lang: 0x3b, region: 0x11c}, + 133: {lang: 0xfd, region: 0xc4}, + 134: {lang: 0x27d, region: 0x106}, + 135: {lang: 0x2c9, region: 0x53}, + 136: {lang: 0x39f, region: 0x9c}, + 137: {lang: 0x39f, region: 0x53}, + 139: {lang: 0x3ad, region: 0xb0}, + 141: {lang: 0x1c6, region: 0x53}, + 142: {lang: 0x4fd, region: 0x9c}, + 193: {lang: 0x3cb, region: 0x95}, + 196: {lang: 0x372, region: 0x10c}, + 197: {lang: 0x420, region: 0x97}, + 199: {lang: 0x4ff, region: 0x15e}, + 200: {lang: 0x3f0, region: 0x99}, + 201: {lang: 0x45, region: 0x135}, + 202: {lang: 0x139, region: 0x7b}, + 203: {lang: 0x3e9, region: 0x99}, + 205: {lang: 0x3e9, region: 0x99}, + 206: {lang: 0x3fa, region: 0x99}, + 207: {lang: 0x40c, region: 0xb3}, + 210: {lang: 0x433, region: 0x99}, + 211: {lang: 0xef, region: 0xc5}, + 212: {lang: 0x43e, region: 0x95}, + 213: {lang: 0x44d, region: 0x35}, + 214: {lang: 0x44e, region: 0x9b}, + 218: {lang: 0x45a, region: 0xe7}, + 219: {lang: 0x11a, region: 0x99}, + 220: {lang: 0x45e, region: 0x53}, + 221: {lang: 0x232, region: 0x53}, + 222: {lang: 0x450, region: 0x99}, + 223: {lang: 0x4a5, region: 0x53}, + 224: {lang: 0x9f, region: 0x13e}, + 225: {lang: 0x461, region: 0x99}, + 227: {lang: 0x528, region: 0xba}, + 228: {lang: 0x153, region: 0xe7}, + 229: {lang: 0x128, region: 0xcd}, + 230: {lang: 0x46b, region: 0x123}, + 231: {lang: 0xa9, region: 0x53}, + 232: {lang: 0x2ce, region: 0x99}, + 234: {lang: 0x4ad, region: 0x11c}, + 235: {lang: 0x4be, region: 0xb4}, + 237: {lang: 0x1ce, region: 0x99}, + 240: {lang: 0x3a9, region: 0x9c}, + 241: {lang: 0x22, region: 0x9b}, + 243: {lang: 0x1ea, region: 0x53}, + 244: {lang: 0xef, region: 0xc5}, } type likelyScriptRegion struct { @@ -1516,1423 +1549,1423 @@ type likelyScriptRegion struct { // of the list in likelyLangList. // Size: 5320 bytes, 1330 elements var likelyLang = [1330]likelyScriptRegion{ - 0: {region: 0x135, script: 0x57, flags: 0x0}, - 1: {region: 0x6f, script: 0x57, flags: 0x0}, - 2: {region: 0x165, script: 0x57, flags: 0x0}, - 3: {region: 0x165, script: 0x57, flags: 0x0}, - 4: {region: 0x165, script: 0x57, flags: 0x0}, - 5: {region: 0x7d, script: 0x1f, flags: 0x0}, - 6: {region: 0x165, script: 0x57, flags: 0x0}, - 7: {region: 0x165, script: 0x1f, flags: 0x0}, - 8: {region: 0x80, script: 0x57, flags: 0x0}, - 9: {region: 0x165, script: 0x57, flags: 0x0}, - 10: {region: 0x165, script: 0x57, flags: 0x0}, - 11: {region: 0x165, script: 0x57, flags: 0x0}, - 12: {region: 0x95, script: 0x57, flags: 0x0}, - 13: {region: 0x131, script: 0x57, flags: 0x0}, - 14: {region: 0x80, script: 0x57, flags: 0x0}, - 15: {region: 0x165, script: 0x57, flags: 0x0}, - 16: {region: 0x165, script: 0x57, flags: 0x0}, - 17: {region: 0x106, script: 0x1f, flags: 0x0}, - 18: {region: 0x165, script: 0x57, flags: 0x0}, + 0: {region: 0x135, script: 0x5a, flags: 0x0}, + 1: {region: 0x6f, script: 0x5a, flags: 0x0}, + 2: {region: 0x165, script: 0x5a, flags: 0x0}, + 3: {region: 0x165, script: 0x5a, flags: 0x0}, + 4: {region: 0x165, script: 0x5a, flags: 0x0}, + 5: {region: 0x7d, script: 0x20, flags: 0x0}, + 6: {region: 0x165, script: 0x5a, flags: 0x0}, + 7: {region: 0x165, script: 0x20, flags: 0x0}, + 8: {region: 0x80, script: 0x5a, flags: 0x0}, + 9: {region: 0x165, script: 0x5a, flags: 0x0}, + 10: {region: 0x165, script: 0x5a, flags: 0x0}, + 11: {region: 0x165, script: 0x5a, flags: 0x0}, + 12: {region: 0x95, script: 0x5a, flags: 0x0}, + 13: {region: 0x131, script: 0x5a, flags: 0x0}, + 14: {region: 0x80, script: 0x5a, flags: 0x0}, + 15: {region: 0x165, script: 0x5a, flags: 0x0}, + 16: {region: 0x165, script: 0x5a, flags: 0x0}, + 17: {region: 0x106, script: 0x20, flags: 0x0}, + 18: {region: 0x165, script: 0x5a, flags: 0x0}, 19: {region: 0x9c, script: 0x9, flags: 0x0}, 20: {region: 0x128, script: 0x5, flags: 0x0}, - 21: {region: 0x165, script: 0x57, flags: 0x0}, - 22: {region: 0x161, script: 0x57, flags: 0x0}, - 23: {region: 0x165, script: 0x57, flags: 0x0}, - 24: {region: 0x165, script: 0x57, flags: 0x0}, - 25: {region: 0x165, script: 0x57, flags: 0x0}, - 26: {region: 0x165, script: 0x57, flags: 0x0}, - 27: {region: 0x165, script: 0x57, flags: 0x0}, - 28: {region: 0x52, script: 0x57, flags: 0x0}, - 29: {region: 0x165, script: 0x57, flags: 0x0}, - 30: {region: 0x165, script: 0x57, flags: 0x0}, + 21: {region: 0x165, script: 0x5a, flags: 0x0}, + 22: {region: 0x161, script: 0x5a, flags: 0x0}, + 23: {region: 0x165, script: 0x5a, flags: 0x0}, + 24: {region: 0x165, script: 0x5a, flags: 0x0}, + 25: {region: 0x165, script: 0x5a, flags: 0x0}, + 26: {region: 0x165, script: 0x5a, flags: 0x0}, + 27: {region: 0x165, script: 0x5a, flags: 0x0}, + 28: {region: 0x52, script: 0x5a, flags: 0x0}, + 29: {region: 0x165, script: 0x5a, flags: 0x0}, + 30: {region: 0x165, script: 0x5a, flags: 0x0}, 31: {region: 0x99, script: 0x4, flags: 0x0}, - 32: {region: 0x165, script: 0x57, flags: 0x0}, - 33: {region: 0x80, script: 0x57, flags: 0x0}, - 34: {region: 0x9b, script: 0xe9, flags: 0x0}, - 35: {region: 0x165, script: 0x57, flags: 0x0}, - 36: {region: 0x165, script: 0x57, flags: 0x0}, - 37: {region: 0x14d, script: 0x57, flags: 0x0}, - 38: {region: 0x106, script: 0x1f, flags: 0x0}, - 39: {region: 0x6f, script: 0x29, flags: 0x0}, - 40: {region: 0x165, script: 0x57, flags: 0x0}, - 41: {region: 0x165, script: 0x57, flags: 0x0}, - 42: {region: 0xd6, script: 0x57, flags: 0x0}, - 43: {region: 0x165, script: 0x57, flags: 0x0}, - 45: {region: 0x165, script: 0x57, flags: 0x0}, - 46: {region: 0x165, script: 0x57, flags: 0x0}, - 47: {region: 0x165, script: 0x57, flags: 0x0}, - 48: {region: 0x165, script: 0x57, flags: 0x0}, - 49: {region: 0x165, script: 0x57, flags: 0x0}, - 50: {region: 0x165, script: 0x57, flags: 0x0}, - 51: {region: 0x95, script: 0x57, flags: 0x0}, + 32: {region: 0x165, script: 0x5a, flags: 0x0}, + 33: {region: 0x80, script: 0x5a, flags: 0x0}, + 34: {region: 0x9b, script: 0xf1, flags: 0x0}, + 35: {region: 0x165, script: 0x5a, flags: 0x0}, + 36: {region: 0x165, script: 0x5a, flags: 0x0}, + 37: {region: 0x14d, script: 0x5a, flags: 0x0}, + 38: {region: 0x106, script: 0x20, flags: 0x0}, + 39: {region: 0x6f, script: 0x2c, flags: 0x0}, + 40: {region: 0x165, script: 0x5a, flags: 0x0}, + 41: {region: 0x165, script: 0x5a, flags: 0x0}, + 42: {region: 0xd6, script: 0x5a, flags: 0x0}, + 43: {region: 0x165, script: 0x5a, flags: 0x0}, + 45: {region: 0x165, script: 0x5a, flags: 0x0}, + 46: {region: 0x165, script: 0x5a, flags: 0x0}, + 47: {region: 0x165, script: 0x5a, flags: 0x0}, + 48: {region: 0x165, script: 0x5a, flags: 0x0}, + 49: {region: 0x165, script: 0x5a, flags: 0x0}, + 50: {region: 0x165, script: 0x5a, flags: 0x0}, + 51: {region: 0x95, script: 0x5a, flags: 0x0}, 52: {region: 0x165, script: 0x5, flags: 0x0}, 53: {region: 0x122, script: 0x5, flags: 0x0}, - 54: {region: 0x165, script: 0x57, flags: 0x0}, - 55: {region: 0x165, script: 0x57, flags: 0x0}, - 56: {region: 0x165, script: 0x57, flags: 0x0}, - 57: {region: 0x165, script: 0x57, flags: 0x0}, + 54: {region: 0x165, script: 0x5a, flags: 0x0}, + 55: {region: 0x165, script: 0x5a, flags: 0x0}, + 56: {region: 0x165, script: 0x5a, flags: 0x0}, + 57: {region: 0x165, script: 0x5a, flags: 0x0}, 58: {region: 0x6b, script: 0x5, flags: 0x0}, 59: {region: 0x0, script: 0x3, flags: 0x1}, - 60: {region: 0x165, script: 0x57, flags: 0x0}, - 61: {region: 0x51, script: 0x57, flags: 0x0}, - 62: {region: 0x3f, script: 0x57, flags: 0x0}, + 60: {region: 0x165, script: 0x5a, flags: 0x0}, + 61: {region: 0x51, script: 0x5a, flags: 0x0}, + 62: {region: 0x3f, script: 0x5a, flags: 0x0}, 63: {region: 0x67, script: 0x5, flags: 0x0}, 65: {region: 0xba, script: 0x5, flags: 0x0}, 66: {region: 0x6b, script: 0x5, flags: 0x0}, 67: {region: 0x99, script: 0xe, flags: 0x0}, - 68: {region: 0x12f, script: 0x57, flags: 0x0}, - 69: {region: 0x135, script: 0xc4, flags: 0x0}, - 70: {region: 0x165, script: 0x57, flags: 0x0}, - 71: {region: 0x165, script: 0x57, flags: 0x0}, - 72: {region: 0x6e, script: 0x57, flags: 0x0}, - 73: {region: 0x165, script: 0x57, flags: 0x0}, - 74: {region: 0x165, script: 0x57, flags: 0x0}, - 75: {region: 0x49, script: 0x57, flags: 0x0}, - 76: {region: 0x165, script: 0x57, flags: 0x0}, - 77: {region: 0x106, script: 0x1f, flags: 0x0}, + 68: {region: 0x12f, script: 0x5a, flags: 0x0}, + 69: {region: 0x135, script: 0xc9, flags: 0x0}, + 70: {region: 0x165, script: 0x5a, flags: 0x0}, + 71: {region: 0x165, script: 0x5a, flags: 0x0}, + 72: {region: 0x6e, script: 0x5a, flags: 0x0}, + 73: {region: 0x165, script: 0x5a, flags: 0x0}, + 74: {region: 0x165, script: 0x5a, flags: 0x0}, + 75: {region: 0x49, script: 0x5a, flags: 0x0}, + 76: {region: 0x165, script: 0x5a, flags: 0x0}, + 77: {region: 0x106, script: 0x20, flags: 0x0}, 78: {region: 0x165, script: 0x5, flags: 0x0}, - 79: {region: 0x165, script: 0x57, flags: 0x0}, - 80: {region: 0x165, script: 0x57, flags: 0x0}, - 81: {region: 0x165, script: 0x57, flags: 0x0}, - 82: {region: 0x99, script: 0x21, flags: 0x0}, - 83: {region: 0x165, script: 0x57, flags: 0x0}, - 84: {region: 0x165, script: 0x57, flags: 0x0}, - 85: {region: 0x165, script: 0x57, flags: 0x0}, - 86: {region: 0x3f, script: 0x57, flags: 0x0}, - 87: {region: 0x165, script: 0x57, flags: 0x0}, + 79: {region: 0x165, script: 0x5a, flags: 0x0}, + 80: {region: 0x165, script: 0x5a, flags: 0x0}, + 81: {region: 0x165, script: 0x5a, flags: 0x0}, + 82: {region: 0x99, script: 0x22, flags: 0x0}, + 83: {region: 0x165, script: 0x5a, flags: 0x0}, + 84: {region: 0x165, script: 0x5a, flags: 0x0}, + 85: {region: 0x165, script: 0x5a, flags: 0x0}, + 86: {region: 0x3f, script: 0x5a, flags: 0x0}, + 87: {region: 0x165, script: 0x5a, flags: 0x0}, 88: {region: 0x3, script: 0x5, flags: 0x1}, - 89: {region: 0x106, script: 0x1f, flags: 0x0}, + 89: {region: 0x106, script: 0x20, flags: 0x0}, 90: {region: 0xe8, script: 0x5, flags: 0x0}, - 91: {region: 0x95, script: 0x57, flags: 0x0}, - 92: {region: 0xdb, script: 0x21, flags: 0x0}, - 93: {region: 0x2e, script: 0x57, flags: 0x0}, - 94: {region: 0x52, script: 0x57, flags: 0x0}, - 95: {region: 0x165, script: 0x57, flags: 0x0}, + 91: {region: 0x95, script: 0x5a, flags: 0x0}, + 92: {region: 0xdb, script: 0x22, flags: 0x0}, + 93: {region: 0x2e, script: 0x5a, flags: 0x0}, + 94: {region: 0x52, script: 0x5a, flags: 0x0}, + 95: {region: 0x165, script: 0x5a, flags: 0x0}, 96: {region: 0x52, script: 0xb, flags: 0x0}, - 97: {region: 0x165, script: 0x57, flags: 0x0}, - 98: {region: 0x165, script: 0x57, flags: 0x0}, - 99: {region: 0x95, script: 0x57, flags: 0x0}, - 100: {region: 0x165, script: 0x57, flags: 0x0}, - 101: {region: 0x52, script: 0x57, flags: 0x0}, - 102: {region: 0x165, script: 0x57, flags: 0x0}, - 103: {region: 0x165, script: 0x57, flags: 0x0}, - 104: {region: 0x165, script: 0x57, flags: 0x0}, - 105: {region: 0x165, script: 0x57, flags: 0x0}, - 106: {region: 0x4f, script: 0x57, flags: 0x0}, - 107: {region: 0x165, script: 0x57, flags: 0x0}, - 108: {region: 0x165, script: 0x57, flags: 0x0}, - 109: {region: 0x165, script: 0x57, flags: 0x0}, - 110: {region: 0x165, script: 0x29, flags: 0x0}, - 111: {region: 0x165, script: 0x57, flags: 0x0}, - 112: {region: 0x165, script: 0x57, flags: 0x0}, - 113: {region: 0x47, script: 0x1f, flags: 0x0}, - 114: {region: 0x165, script: 0x57, flags: 0x0}, - 115: {region: 0x165, script: 0x57, flags: 0x0}, + 97: {region: 0x165, script: 0x5a, flags: 0x0}, + 98: {region: 0x165, script: 0x5a, flags: 0x0}, + 99: {region: 0x95, script: 0x5a, flags: 0x0}, + 100: {region: 0x165, script: 0x5a, flags: 0x0}, + 101: {region: 0x52, script: 0x5a, flags: 0x0}, + 102: {region: 0x165, script: 0x5a, flags: 0x0}, + 103: {region: 0x165, script: 0x5a, flags: 0x0}, + 104: {region: 0x165, script: 0x5a, flags: 0x0}, + 105: {region: 0x165, script: 0x5a, flags: 0x0}, + 106: {region: 0x4f, script: 0x5a, flags: 0x0}, + 107: {region: 0x165, script: 0x5a, flags: 0x0}, + 108: {region: 0x165, script: 0x5a, flags: 0x0}, + 109: {region: 0x165, script: 0x5a, flags: 0x0}, + 110: {region: 0x165, script: 0x2c, flags: 0x0}, + 111: {region: 0x165, script: 0x5a, flags: 0x0}, + 112: {region: 0x165, script: 0x5a, flags: 0x0}, + 113: {region: 0x47, script: 0x20, flags: 0x0}, + 114: {region: 0x165, script: 0x5a, flags: 0x0}, + 115: {region: 0x165, script: 0x5a, flags: 0x0}, 116: {region: 0x10b, script: 0x5, flags: 0x0}, - 117: {region: 0x162, script: 0x57, flags: 0x0}, - 118: {region: 0x165, script: 0x57, flags: 0x0}, - 119: {region: 0x95, script: 0x57, flags: 0x0}, - 120: {region: 0x165, script: 0x57, flags: 0x0}, - 121: {region: 0x12f, script: 0x57, flags: 0x0}, - 122: {region: 0x52, script: 0x57, flags: 0x0}, - 123: {region: 0x99, script: 0xd7, flags: 0x0}, + 117: {region: 0x162, script: 0x5a, flags: 0x0}, + 118: {region: 0x165, script: 0x5a, flags: 0x0}, + 119: {region: 0x95, script: 0x5a, flags: 0x0}, + 120: {region: 0x165, script: 0x5a, flags: 0x0}, + 121: {region: 0x12f, script: 0x5a, flags: 0x0}, + 122: {region: 0x52, script: 0x5a, flags: 0x0}, + 123: {region: 0x99, script: 0xde, flags: 0x0}, 124: {region: 0xe8, script: 0x5, flags: 0x0}, - 125: {region: 0x99, script: 0x21, flags: 0x0}, - 126: {region: 0x38, script: 0x1f, flags: 0x0}, - 127: {region: 0x99, script: 0x21, flags: 0x0}, + 125: {region: 0x99, script: 0x22, flags: 0x0}, + 126: {region: 0x38, script: 0x20, flags: 0x0}, + 127: {region: 0x99, script: 0x22, flags: 0x0}, 128: {region: 0xe8, script: 0x5, flags: 0x0}, - 129: {region: 0x12b, script: 0x31, flags: 0x0}, - 131: {region: 0x99, script: 0x21, flags: 0x0}, - 132: {region: 0x165, script: 0x57, flags: 0x0}, - 133: {region: 0x99, script: 0x21, flags: 0x0}, - 134: {region: 0xe7, script: 0x57, flags: 0x0}, - 135: {region: 0x165, script: 0x57, flags: 0x0}, - 136: {region: 0x99, script: 0x21, flags: 0x0}, - 137: {region: 0x165, script: 0x57, flags: 0x0}, - 138: {region: 0x13f, script: 0x57, flags: 0x0}, - 139: {region: 0x165, script: 0x57, flags: 0x0}, - 140: {region: 0x165, script: 0x57, flags: 0x0}, - 141: {region: 0xe7, script: 0x57, flags: 0x0}, - 142: {region: 0x165, script: 0x57, flags: 0x0}, - 143: {region: 0xd6, script: 0x57, flags: 0x0}, - 144: {region: 0x165, script: 0x57, flags: 0x0}, - 145: {region: 0x165, script: 0x57, flags: 0x0}, - 146: {region: 0x165, script: 0x57, flags: 0x0}, - 147: {region: 0x165, script: 0x29, flags: 0x0}, - 148: {region: 0x99, script: 0x21, flags: 0x0}, - 149: {region: 0x95, script: 0x57, flags: 0x0}, - 150: {region: 0x165, script: 0x57, flags: 0x0}, - 151: {region: 0x165, script: 0x57, flags: 0x0}, - 152: {region: 0x114, script: 0x57, flags: 0x0}, - 153: {region: 0x165, script: 0x57, flags: 0x0}, - 154: {region: 0x165, script: 0x57, flags: 0x0}, - 155: {region: 0x52, script: 0x57, flags: 0x0}, - 156: {region: 0x165, script: 0x57, flags: 0x0}, - 157: {region: 0xe7, script: 0x57, flags: 0x0}, - 158: {region: 0x165, script: 0x57, flags: 0x0}, - 159: {region: 0x13e, script: 0xd9, flags: 0x0}, - 160: {region: 0xc3, script: 0x57, flags: 0x0}, - 161: {region: 0x165, script: 0x57, flags: 0x0}, - 162: {region: 0x165, script: 0x57, flags: 0x0}, - 163: {region: 0xc3, script: 0x57, flags: 0x0}, - 164: {region: 0x165, script: 0x57, flags: 0x0}, + 129: {region: 0x12b, script: 0x34, flags: 0x0}, + 131: {region: 0x99, script: 0x22, flags: 0x0}, + 132: {region: 0x165, script: 0x5a, flags: 0x0}, + 133: {region: 0x99, script: 0x22, flags: 0x0}, + 134: {region: 0xe7, script: 0x5a, flags: 0x0}, + 135: {region: 0x165, script: 0x5a, flags: 0x0}, + 136: {region: 0x99, script: 0x22, flags: 0x0}, + 137: {region: 0x165, script: 0x5a, flags: 0x0}, + 138: {region: 0x13f, script: 0x5a, flags: 0x0}, + 139: {region: 0x165, script: 0x5a, flags: 0x0}, + 140: {region: 0x165, script: 0x5a, flags: 0x0}, + 141: {region: 0xe7, script: 0x5a, flags: 0x0}, + 142: {region: 0x165, script: 0x5a, flags: 0x0}, + 143: {region: 0xd6, script: 0x5a, flags: 0x0}, + 144: {region: 0x165, script: 0x5a, flags: 0x0}, + 145: {region: 0x165, script: 0x5a, flags: 0x0}, + 146: {region: 0x165, script: 0x5a, flags: 0x0}, + 147: {region: 0x165, script: 0x2c, flags: 0x0}, + 148: {region: 0x99, script: 0x22, flags: 0x0}, + 149: {region: 0x95, script: 0x5a, flags: 0x0}, + 150: {region: 0x165, script: 0x5a, flags: 0x0}, + 151: {region: 0x165, script: 0x5a, flags: 0x0}, + 152: {region: 0x114, script: 0x5a, flags: 0x0}, + 153: {region: 0x165, script: 0x5a, flags: 0x0}, + 154: {region: 0x165, script: 0x5a, flags: 0x0}, + 155: {region: 0x52, script: 0x5a, flags: 0x0}, + 156: {region: 0x165, script: 0x5a, flags: 0x0}, + 157: {region: 0xe7, script: 0x5a, flags: 0x0}, + 158: {region: 0x165, script: 0x5a, flags: 0x0}, + 159: {region: 0x13e, script: 0xe0, flags: 0x0}, + 160: {region: 0xc3, script: 0x5a, flags: 0x0}, + 161: {region: 0x165, script: 0x5a, flags: 0x0}, + 162: {region: 0x165, script: 0x5a, flags: 0x0}, + 163: {region: 0xc3, script: 0x5a, flags: 0x0}, + 164: {region: 0x165, script: 0x5a, flags: 0x0}, 165: {region: 0x35, script: 0xe, flags: 0x0}, - 166: {region: 0x165, script: 0x57, flags: 0x0}, - 167: {region: 0x165, script: 0x57, flags: 0x0}, - 168: {region: 0x165, script: 0x57, flags: 0x0}, - 169: {region: 0x53, script: 0xe0, flags: 0x0}, - 170: {region: 0x165, script: 0x57, flags: 0x0}, - 171: {region: 0x165, script: 0x57, flags: 0x0}, - 172: {region: 0x165, script: 0x57, flags: 0x0}, + 166: {region: 0x165, script: 0x5a, flags: 0x0}, + 167: {region: 0x165, script: 0x5a, flags: 0x0}, + 168: {region: 0x165, script: 0x5a, flags: 0x0}, + 169: {region: 0x53, script: 0xe7, flags: 0x0}, + 170: {region: 0x165, script: 0x5a, flags: 0x0}, + 171: {region: 0x165, script: 0x5a, flags: 0x0}, + 172: {region: 0x165, script: 0x5a, flags: 0x0}, 173: {region: 0x99, script: 0xe, flags: 0x0}, - 174: {region: 0x165, script: 0x57, flags: 0x0}, + 174: {region: 0x165, script: 0x5a, flags: 0x0}, 175: {region: 0x9c, script: 0x5, flags: 0x0}, - 176: {region: 0x165, script: 0x57, flags: 0x0}, - 177: {region: 0x4f, script: 0x57, flags: 0x0}, - 178: {region: 0x78, script: 0x57, flags: 0x0}, - 179: {region: 0x99, script: 0x21, flags: 0x0}, + 176: {region: 0x165, script: 0x5a, flags: 0x0}, + 177: {region: 0x4f, script: 0x5a, flags: 0x0}, + 178: {region: 0x78, script: 0x5a, flags: 0x0}, + 179: {region: 0x99, script: 0x22, flags: 0x0}, 180: {region: 0xe8, script: 0x5, flags: 0x0}, - 181: {region: 0x99, script: 0x21, flags: 0x0}, - 182: {region: 0x165, script: 0x57, flags: 0x0}, - 183: {region: 0x33, script: 0x57, flags: 0x0}, - 184: {region: 0x165, script: 0x57, flags: 0x0}, + 181: {region: 0x99, script: 0x22, flags: 0x0}, + 182: {region: 0x165, script: 0x5a, flags: 0x0}, + 183: {region: 0x33, script: 0x5a, flags: 0x0}, + 184: {region: 0x165, script: 0x5a, flags: 0x0}, 185: {region: 0xb4, script: 0xc, flags: 0x0}, - 186: {region: 0x52, script: 0x57, flags: 0x0}, - 187: {region: 0x165, script: 0x29, flags: 0x0}, - 188: {region: 0xe7, script: 0x57, flags: 0x0}, - 189: {region: 0x165, script: 0x57, flags: 0x0}, - 190: {region: 0xe8, script: 0x21, flags: 0x0}, - 191: {region: 0x106, script: 0x1f, flags: 0x0}, - 192: {region: 0x15f, script: 0x57, flags: 0x0}, - 193: {region: 0x165, script: 0x57, flags: 0x0}, - 194: {region: 0x95, script: 0x57, flags: 0x0}, - 195: {region: 0x165, script: 0x57, flags: 0x0}, - 196: {region: 0x52, script: 0x57, flags: 0x0}, - 197: {region: 0x165, script: 0x57, flags: 0x0}, - 198: {region: 0x165, script: 0x57, flags: 0x0}, - 199: {region: 0x165, script: 0x57, flags: 0x0}, - 200: {region: 0x86, script: 0x57, flags: 0x0}, - 201: {region: 0x165, script: 0x57, flags: 0x0}, - 202: {region: 0x165, script: 0x57, flags: 0x0}, - 203: {region: 0x165, script: 0x57, flags: 0x0}, - 204: {region: 0x165, script: 0x57, flags: 0x0}, - 205: {region: 0x6d, script: 0x29, flags: 0x0}, - 206: {region: 0x165, script: 0x57, flags: 0x0}, - 207: {region: 0x165, script: 0x57, flags: 0x0}, - 208: {region: 0x52, script: 0x57, flags: 0x0}, - 209: {region: 0x165, script: 0x57, flags: 0x0}, - 210: {region: 0x165, script: 0x57, flags: 0x0}, - 211: {region: 0xc3, script: 0x57, flags: 0x0}, - 212: {region: 0x165, script: 0x57, flags: 0x0}, - 213: {region: 0x165, script: 0x57, flags: 0x0}, - 214: {region: 0x165, script: 0x57, flags: 0x0}, - 215: {region: 0x6e, script: 0x57, flags: 0x0}, - 216: {region: 0x165, script: 0x57, flags: 0x0}, - 217: {region: 0x165, script: 0x57, flags: 0x0}, - 218: {region: 0xd6, script: 0x57, flags: 0x0}, + 186: {region: 0x52, script: 0x5a, flags: 0x0}, + 187: {region: 0x165, script: 0x2c, flags: 0x0}, + 188: {region: 0xe7, script: 0x5a, flags: 0x0}, + 189: {region: 0x165, script: 0x5a, flags: 0x0}, + 190: {region: 0xe8, script: 0x22, flags: 0x0}, + 191: {region: 0x106, script: 0x20, flags: 0x0}, + 192: {region: 0x15f, script: 0x5a, flags: 0x0}, + 193: {region: 0x165, script: 0x5a, flags: 0x0}, + 194: {region: 0x95, script: 0x5a, flags: 0x0}, + 195: {region: 0x165, script: 0x5a, flags: 0x0}, + 196: {region: 0x52, script: 0x5a, flags: 0x0}, + 197: {region: 0x165, script: 0x5a, flags: 0x0}, + 198: {region: 0x165, script: 0x5a, flags: 0x0}, + 199: {region: 0x165, script: 0x5a, flags: 0x0}, + 200: {region: 0x86, script: 0x5a, flags: 0x0}, + 201: {region: 0x165, script: 0x5a, flags: 0x0}, + 202: {region: 0x165, script: 0x5a, flags: 0x0}, + 203: {region: 0x165, script: 0x5a, flags: 0x0}, + 204: {region: 0x165, script: 0x5a, flags: 0x0}, + 205: {region: 0x6d, script: 0x2c, flags: 0x0}, + 206: {region: 0x165, script: 0x5a, flags: 0x0}, + 207: {region: 0x165, script: 0x5a, flags: 0x0}, + 208: {region: 0x52, script: 0x5a, flags: 0x0}, + 209: {region: 0x165, script: 0x5a, flags: 0x0}, + 210: {region: 0x165, script: 0x5a, flags: 0x0}, + 211: {region: 0xc3, script: 0x5a, flags: 0x0}, + 212: {region: 0x165, script: 0x5a, flags: 0x0}, + 213: {region: 0x165, script: 0x5a, flags: 0x0}, + 214: {region: 0x165, script: 0x5a, flags: 0x0}, + 215: {region: 0x6e, script: 0x5a, flags: 0x0}, + 216: {region: 0x165, script: 0x5a, flags: 0x0}, + 217: {region: 0x165, script: 0x5a, flags: 0x0}, + 218: {region: 0xd6, script: 0x5a, flags: 0x0}, 219: {region: 0x35, script: 0x16, flags: 0x0}, - 220: {region: 0x106, script: 0x1f, flags: 0x0}, - 221: {region: 0xe7, script: 0x57, flags: 0x0}, - 222: {region: 0x165, script: 0x57, flags: 0x0}, - 223: {region: 0x131, script: 0x57, flags: 0x0}, - 224: {region: 0x8a, script: 0x57, flags: 0x0}, - 225: {region: 0x75, script: 0x57, flags: 0x0}, - 226: {region: 0x106, script: 0x1f, flags: 0x0}, - 227: {region: 0x135, script: 0x57, flags: 0x0}, - 228: {region: 0x49, script: 0x57, flags: 0x0}, + 220: {region: 0x106, script: 0x20, flags: 0x0}, + 221: {region: 0xe7, script: 0x5a, flags: 0x0}, + 222: {region: 0x165, script: 0x5a, flags: 0x0}, + 223: {region: 0x131, script: 0x5a, flags: 0x0}, + 224: {region: 0x8a, script: 0x5a, flags: 0x0}, + 225: {region: 0x75, script: 0x5a, flags: 0x0}, + 226: {region: 0x106, script: 0x20, flags: 0x0}, + 227: {region: 0x135, script: 0x5a, flags: 0x0}, + 228: {region: 0x49, script: 0x5a, flags: 0x0}, 229: {region: 0x135, script: 0x1a, flags: 0x0}, 230: {region: 0xa6, script: 0x5, flags: 0x0}, 231: {region: 0x13e, script: 0x19, flags: 0x0}, - 232: {region: 0x165, script: 0x57, flags: 0x0}, + 232: {region: 0x165, script: 0x5a, flags: 0x0}, 233: {region: 0x9b, script: 0x5, flags: 0x0}, - 234: {region: 0x165, script: 0x57, flags: 0x0}, - 235: {region: 0x165, script: 0x57, flags: 0x0}, - 236: {region: 0x165, script: 0x57, flags: 0x0}, - 237: {region: 0x165, script: 0x57, flags: 0x0}, - 238: {region: 0x165, script: 0x57, flags: 0x0}, - 239: {region: 0xc5, script: 0xcc, flags: 0x0}, - 240: {region: 0x78, script: 0x57, flags: 0x0}, - 241: {region: 0x6b, script: 0x1c, flags: 0x0}, - 242: {region: 0xe7, script: 0x57, flags: 0x0}, + 234: {region: 0x165, script: 0x5a, flags: 0x0}, + 235: {region: 0x165, script: 0x5a, flags: 0x0}, + 236: {region: 0x165, script: 0x5a, flags: 0x0}, + 237: {region: 0x165, script: 0x5a, flags: 0x0}, + 238: {region: 0x165, script: 0x5a, flags: 0x0}, + 239: {region: 0xc5, script: 0xd3, flags: 0x0}, + 240: {region: 0x78, script: 0x5a, flags: 0x0}, + 241: {region: 0x6b, script: 0x1d, flags: 0x0}, + 242: {region: 0xe7, script: 0x5a, flags: 0x0}, 243: {region: 0x49, script: 0x17, flags: 0x0}, - 244: {region: 0x130, script: 0x1f, flags: 0x0}, + 244: {region: 0x130, script: 0x20, flags: 0x0}, 245: {region: 0x49, script: 0x17, flags: 0x0}, 246: {region: 0x49, script: 0x17, flags: 0x0}, 247: {region: 0x49, script: 0x17, flags: 0x0}, 248: {region: 0x49, script: 0x17, flags: 0x0}, - 249: {region: 0x10a, script: 0x57, flags: 0x0}, - 250: {region: 0x5e, script: 0x57, flags: 0x0}, - 251: {region: 0xe9, script: 0x57, flags: 0x0}, + 249: {region: 0x10a, script: 0x5a, flags: 0x0}, + 250: {region: 0x5e, script: 0x5a, flags: 0x0}, + 251: {region: 0xe9, script: 0x5a, flags: 0x0}, 252: {region: 0x49, script: 0x17, flags: 0x0}, - 253: {region: 0xc4, script: 0x81, flags: 0x0}, + 253: {region: 0xc4, script: 0x85, flags: 0x0}, 254: {region: 0x8, script: 0x2, flags: 0x1}, - 255: {region: 0x106, script: 0x1f, flags: 0x0}, - 256: {region: 0x7b, script: 0x57, flags: 0x0}, - 257: {region: 0x63, script: 0x57, flags: 0x0}, - 258: {region: 0x165, script: 0x57, flags: 0x0}, - 259: {region: 0x165, script: 0x57, flags: 0x0}, - 260: {region: 0x165, script: 0x57, flags: 0x0}, - 261: {region: 0x165, script: 0x57, flags: 0x0}, - 262: {region: 0x135, script: 0x57, flags: 0x0}, - 263: {region: 0x106, script: 0x1f, flags: 0x0}, - 264: {region: 0xa4, script: 0x57, flags: 0x0}, - 265: {region: 0x165, script: 0x57, flags: 0x0}, - 266: {region: 0x165, script: 0x57, flags: 0x0}, + 255: {region: 0x106, script: 0x20, flags: 0x0}, + 256: {region: 0x7b, script: 0x5a, flags: 0x0}, + 257: {region: 0x63, script: 0x5a, flags: 0x0}, + 258: {region: 0x165, script: 0x5a, flags: 0x0}, + 259: {region: 0x165, script: 0x5a, flags: 0x0}, + 260: {region: 0x165, script: 0x5a, flags: 0x0}, + 261: {region: 0x165, script: 0x5a, flags: 0x0}, + 262: {region: 0x135, script: 0x5a, flags: 0x0}, + 263: {region: 0x106, script: 0x20, flags: 0x0}, + 264: {region: 0xa4, script: 0x5a, flags: 0x0}, + 265: {region: 0x165, script: 0x5a, flags: 0x0}, + 266: {region: 0x165, script: 0x5a, flags: 0x0}, 267: {region: 0x99, script: 0x5, flags: 0x0}, - 268: {region: 0x165, script: 0x57, flags: 0x0}, - 269: {region: 0x60, script: 0x57, flags: 0x0}, - 270: {region: 0x165, script: 0x57, flags: 0x0}, - 271: {region: 0x49, script: 0x57, flags: 0x0}, - 272: {region: 0x165, script: 0x57, flags: 0x0}, - 273: {region: 0x165, script: 0x57, flags: 0x0}, - 274: {region: 0x165, script: 0x57, flags: 0x0}, + 268: {region: 0x165, script: 0x5a, flags: 0x0}, + 269: {region: 0x60, script: 0x5a, flags: 0x0}, + 270: {region: 0x165, script: 0x5a, flags: 0x0}, + 271: {region: 0x49, script: 0x5a, flags: 0x0}, + 272: {region: 0x165, script: 0x5a, flags: 0x0}, + 273: {region: 0x165, script: 0x5a, flags: 0x0}, + 274: {region: 0x165, script: 0x5a, flags: 0x0}, 275: {region: 0x165, script: 0x5, flags: 0x0}, - 276: {region: 0x49, script: 0x57, flags: 0x0}, - 277: {region: 0x165, script: 0x57, flags: 0x0}, - 278: {region: 0x165, script: 0x57, flags: 0x0}, - 279: {region: 0xd4, script: 0x57, flags: 0x0}, - 280: {region: 0x4f, script: 0x57, flags: 0x0}, - 281: {region: 0x165, script: 0x57, flags: 0x0}, + 276: {region: 0x49, script: 0x5a, flags: 0x0}, + 277: {region: 0x165, script: 0x5a, flags: 0x0}, + 278: {region: 0x165, script: 0x5a, flags: 0x0}, + 279: {region: 0xd4, script: 0x5a, flags: 0x0}, + 280: {region: 0x4f, script: 0x5a, flags: 0x0}, + 281: {region: 0x165, script: 0x5a, flags: 0x0}, 282: {region: 0x99, script: 0x5, flags: 0x0}, - 283: {region: 0x165, script: 0x57, flags: 0x0}, - 284: {region: 0x165, script: 0x57, flags: 0x0}, - 285: {region: 0x165, script: 0x57, flags: 0x0}, - 286: {region: 0x165, script: 0x29, flags: 0x0}, - 287: {region: 0x60, script: 0x57, flags: 0x0}, - 288: {region: 0xc3, script: 0x57, flags: 0x0}, - 289: {region: 0xd0, script: 0x57, flags: 0x0}, - 290: {region: 0x165, script: 0x57, flags: 0x0}, - 291: {region: 0xdb, script: 0x21, flags: 0x0}, - 292: {region: 0x52, script: 0x57, flags: 0x0}, - 293: {region: 0x165, script: 0x57, flags: 0x0}, - 294: {region: 0x165, script: 0x57, flags: 0x0}, - 295: {region: 0x165, script: 0x57, flags: 0x0}, - 296: {region: 0xcd, script: 0xde, flags: 0x0}, - 297: {region: 0x165, script: 0x57, flags: 0x0}, - 298: {region: 0x165, script: 0x57, flags: 0x0}, - 299: {region: 0x114, script: 0x57, flags: 0x0}, - 300: {region: 0x37, script: 0x57, flags: 0x0}, - 301: {region: 0x43, script: 0xe0, flags: 0x0}, - 302: {region: 0x165, script: 0x57, flags: 0x0}, - 303: {region: 0xa4, script: 0x57, flags: 0x0}, - 304: {region: 0x80, script: 0x57, flags: 0x0}, - 305: {region: 0xd6, script: 0x57, flags: 0x0}, - 306: {region: 0x9e, script: 0x57, flags: 0x0}, - 307: {region: 0x6b, script: 0x27, flags: 0x0}, - 308: {region: 0x165, script: 0x57, flags: 0x0}, - 309: {region: 0xc4, script: 0x48, flags: 0x0}, - 310: {region: 0x87, script: 0x31, flags: 0x0}, - 311: {region: 0x165, script: 0x57, flags: 0x0}, - 312: {region: 0x165, script: 0x57, flags: 0x0}, + 283: {region: 0x165, script: 0x5a, flags: 0x0}, + 284: {region: 0x165, script: 0x5a, flags: 0x0}, + 285: {region: 0x165, script: 0x5a, flags: 0x0}, + 286: {region: 0x165, script: 0x2c, flags: 0x0}, + 287: {region: 0x60, script: 0x5a, flags: 0x0}, + 288: {region: 0xc3, script: 0x5a, flags: 0x0}, + 289: {region: 0xd0, script: 0x5a, flags: 0x0}, + 290: {region: 0x165, script: 0x5a, flags: 0x0}, + 291: {region: 0xdb, script: 0x22, flags: 0x0}, + 292: {region: 0x52, script: 0x5a, flags: 0x0}, + 293: {region: 0x165, script: 0x5a, flags: 0x0}, + 294: {region: 0x165, script: 0x5a, flags: 0x0}, + 295: {region: 0x165, script: 0x5a, flags: 0x0}, + 296: {region: 0xcd, script: 0xe5, flags: 0x0}, + 297: {region: 0x165, script: 0x5a, flags: 0x0}, + 298: {region: 0x165, script: 0x5a, flags: 0x0}, + 299: {region: 0x114, script: 0x5a, flags: 0x0}, + 300: {region: 0x37, script: 0x5a, flags: 0x0}, + 301: {region: 0x43, script: 0xe7, flags: 0x0}, + 302: {region: 0x165, script: 0x5a, flags: 0x0}, + 303: {region: 0xa4, script: 0x5a, flags: 0x0}, + 304: {region: 0x80, script: 0x5a, flags: 0x0}, + 305: {region: 0xd6, script: 0x5a, flags: 0x0}, + 306: {region: 0x9e, script: 0x5a, flags: 0x0}, + 307: {region: 0x6b, script: 0x29, flags: 0x0}, + 308: {region: 0x165, script: 0x5a, flags: 0x0}, + 309: {region: 0xc4, script: 0x4b, flags: 0x0}, + 310: {region: 0x87, script: 0x34, flags: 0x0}, + 311: {region: 0x165, script: 0x5a, flags: 0x0}, + 312: {region: 0x165, script: 0x5a, flags: 0x0}, 313: {region: 0xa, script: 0x2, flags: 0x1}, - 314: {region: 0x165, script: 0x57, flags: 0x0}, - 315: {region: 0x165, script: 0x57, flags: 0x0}, - 316: {region: 0x1, script: 0x57, flags: 0x0}, - 317: {region: 0x165, script: 0x57, flags: 0x0}, - 318: {region: 0x6e, script: 0x57, flags: 0x0}, - 319: {region: 0x135, script: 0x57, flags: 0x0}, - 320: {region: 0x6a, script: 0x57, flags: 0x0}, - 321: {region: 0x165, script: 0x57, flags: 0x0}, - 322: {region: 0x9e, script: 0x43, flags: 0x0}, - 323: {region: 0x165, script: 0x57, flags: 0x0}, - 324: {region: 0x165, script: 0x57, flags: 0x0}, - 325: {region: 0x6e, script: 0x57, flags: 0x0}, - 326: {region: 0x52, script: 0x57, flags: 0x0}, - 327: {region: 0x6e, script: 0x57, flags: 0x0}, + 314: {region: 0x165, script: 0x5a, flags: 0x0}, + 315: {region: 0x165, script: 0x5a, flags: 0x0}, + 316: {region: 0x1, script: 0x5a, flags: 0x0}, + 317: {region: 0x165, script: 0x5a, flags: 0x0}, + 318: {region: 0x6e, script: 0x5a, flags: 0x0}, + 319: {region: 0x135, script: 0x5a, flags: 0x0}, + 320: {region: 0x6a, script: 0x5a, flags: 0x0}, + 321: {region: 0x165, script: 0x5a, flags: 0x0}, + 322: {region: 0x9e, script: 0x46, flags: 0x0}, + 323: {region: 0x165, script: 0x5a, flags: 0x0}, + 324: {region: 0x165, script: 0x5a, flags: 0x0}, + 325: {region: 0x6e, script: 0x5a, flags: 0x0}, + 326: {region: 0x52, script: 0x5a, flags: 0x0}, + 327: {region: 0x6e, script: 0x5a, flags: 0x0}, 328: {region: 0x9c, script: 0x5, flags: 0x0}, - 329: {region: 0x165, script: 0x57, flags: 0x0}, - 330: {region: 0x165, script: 0x57, flags: 0x0}, - 331: {region: 0x165, script: 0x57, flags: 0x0}, - 332: {region: 0x165, script: 0x57, flags: 0x0}, - 333: {region: 0x86, script: 0x57, flags: 0x0}, + 329: {region: 0x165, script: 0x5a, flags: 0x0}, + 330: {region: 0x165, script: 0x5a, flags: 0x0}, + 331: {region: 0x165, script: 0x5a, flags: 0x0}, + 332: {region: 0x165, script: 0x5a, flags: 0x0}, + 333: {region: 0x86, script: 0x5a, flags: 0x0}, 334: {region: 0xc, script: 0x2, flags: 0x1}, - 335: {region: 0x165, script: 0x57, flags: 0x0}, - 336: {region: 0xc3, script: 0x57, flags: 0x0}, - 337: {region: 0x72, script: 0x57, flags: 0x0}, + 335: {region: 0x165, script: 0x5a, flags: 0x0}, + 336: {region: 0xc3, script: 0x5a, flags: 0x0}, + 337: {region: 0x72, script: 0x5a, flags: 0x0}, 338: {region: 0x10b, script: 0x5, flags: 0x0}, - 339: {region: 0xe7, script: 0x57, flags: 0x0}, - 340: {region: 0x10c, script: 0x57, flags: 0x0}, - 341: {region: 0x73, script: 0x57, flags: 0x0}, - 342: {region: 0x165, script: 0x57, flags: 0x0}, - 343: {region: 0x165, script: 0x57, flags: 0x0}, - 344: {region: 0x76, script: 0x57, flags: 0x0}, - 345: {region: 0x165, script: 0x57, flags: 0x0}, - 346: {region: 0x3b, script: 0x57, flags: 0x0}, - 347: {region: 0x165, script: 0x57, flags: 0x0}, - 348: {region: 0x165, script: 0x57, flags: 0x0}, - 349: {region: 0x165, script: 0x57, flags: 0x0}, - 350: {region: 0x78, script: 0x57, flags: 0x0}, - 351: {region: 0x135, script: 0x57, flags: 0x0}, - 352: {region: 0x78, script: 0x57, flags: 0x0}, - 353: {region: 0x60, script: 0x57, flags: 0x0}, - 354: {region: 0x60, script: 0x57, flags: 0x0}, + 339: {region: 0xe7, script: 0x5a, flags: 0x0}, + 340: {region: 0x10c, script: 0x5a, flags: 0x0}, + 341: {region: 0x73, script: 0x5a, flags: 0x0}, + 342: {region: 0x165, script: 0x5a, flags: 0x0}, + 343: {region: 0x165, script: 0x5a, flags: 0x0}, + 344: {region: 0x76, script: 0x5a, flags: 0x0}, + 345: {region: 0x165, script: 0x5a, flags: 0x0}, + 346: {region: 0x3b, script: 0x5a, flags: 0x0}, + 347: {region: 0x165, script: 0x5a, flags: 0x0}, + 348: {region: 0x165, script: 0x5a, flags: 0x0}, + 349: {region: 0x165, script: 0x5a, flags: 0x0}, + 350: {region: 0x78, script: 0x5a, flags: 0x0}, + 351: {region: 0x135, script: 0x5a, flags: 0x0}, + 352: {region: 0x78, script: 0x5a, flags: 0x0}, + 353: {region: 0x60, script: 0x5a, flags: 0x0}, + 354: {region: 0x60, script: 0x5a, flags: 0x0}, 355: {region: 0x52, script: 0x5, flags: 0x0}, - 356: {region: 0x140, script: 0x57, flags: 0x0}, - 357: {region: 0x165, script: 0x57, flags: 0x0}, - 358: {region: 0x84, script: 0x57, flags: 0x0}, - 359: {region: 0x165, script: 0x57, flags: 0x0}, - 360: {region: 0xd4, script: 0x57, flags: 0x0}, - 361: {region: 0x9e, script: 0x57, flags: 0x0}, - 362: {region: 0xd6, script: 0x57, flags: 0x0}, - 363: {region: 0x165, script: 0x57, flags: 0x0}, - 364: {region: 0x10b, script: 0x57, flags: 0x0}, - 365: {region: 0xd9, script: 0x57, flags: 0x0}, - 366: {region: 0x96, script: 0x57, flags: 0x0}, - 367: {region: 0x80, script: 0x57, flags: 0x0}, - 368: {region: 0x165, script: 0x57, flags: 0x0}, - 369: {region: 0xbc, script: 0x57, flags: 0x0}, - 370: {region: 0x165, script: 0x57, flags: 0x0}, - 371: {region: 0x165, script: 0x57, flags: 0x0}, - 372: {region: 0x165, script: 0x57, flags: 0x0}, - 373: {region: 0x53, script: 0x38, flags: 0x0}, - 374: {region: 0x165, script: 0x57, flags: 0x0}, - 375: {region: 0x95, script: 0x57, flags: 0x0}, - 376: {region: 0x165, script: 0x57, flags: 0x0}, - 377: {region: 0x165, script: 0x57, flags: 0x0}, - 378: {region: 0x99, script: 0x21, flags: 0x0}, - 379: {region: 0x165, script: 0x57, flags: 0x0}, + 356: {region: 0x140, script: 0x5a, flags: 0x0}, + 357: {region: 0x165, script: 0x5a, flags: 0x0}, + 358: {region: 0x84, script: 0x5a, flags: 0x0}, + 359: {region: 0x165, script: 0x5a, flags: 0x0}, + 360: {region: 0xd4, script: 0x5a, flags: 0x0}, + 361: {region: 0x9e, script: 0x5a, flags: 0x0}, + 362: {region: 0xd6, script: 0x5a, flags: 0x0}, + 363: {region: 0x165, script: 0x5a, flags: 0x0}, + 364: {region: 0x10b, script: 0x5a, flags: 0x0}, + 365: {region: 0xd9, script: 0x5a, flags: 0x0}, + 366: {region: 0x96, script: 0x5a, flags: 0x0}, + 367: {region: 0x80, script: 0x5a, flags: 0x0}, + 368: {region: 0x165, script: 0x5a, flags: 0x0}, + 369: {region: 0xbc, script: 0x5a, flags: 0x0}, + 370: {region: 0x165, script: 0x5a, flags: 0x0}, + 371: {region: 0x165, script: 0x5a, flags: 0x0}, + 372: {region: 0x165, script: 0x5a, flags: 0x0}, + 373: {region: 0x53, script: 0x3b, flags: 0x0}, + 374: {region: 0x165, script: 0x5a, flags: 0x0}, + 375: {region: 0x95, script: 0x5a, flags: 0x0}, + 376: {region: 0x165, script: 0x5a, flags: 0x0}, + 377: {region: 0x165, script: 0x5a, flags: 0x0}, + 378: {region: 0x99, script: 0x22, flags: 0x0}, + 379: {region: 0x165, script: 0x5a, flags: 0x0}, 380: {region: 0x9c, script: 0x5, flags: 0x0}, - 381: {region: 0x7e, script: 0x57, flags: 0x0}, - 382: {region: 0x7b, script: 0x57, flags: 0x0}, - 383: {region: 0x165, script: 0x57, flags: 0x0}, - 384: {region: 0x165, script: 0x57, flags: 0x0}, - 385: {region: 0x165, script: 0x57, flags: 0x0}, - 386: {region: 0x165, script: 0x57, flags: 0x0}, - 387: {region: 0x165, script: 0x57, flags: 0x0}, - 388: {region: 0x165, script: 0x57, flags: 0x0}, - 389: {region: 0x6f, script: 0x29, flags: 0x0}, - 390: {region: 0x165, script: 0x57, flags: 0x0}, - 391: {region: 0xdb, script: 0x21, flags: 0x0}, - 392: {region: 0x165, script: 0x57, flags: 0x0}, - 393: {region: 0xa7, script: 0x57, flags: 0x0}, - 394: {region: 0x165, script: 0x57, flags: 0x0}, + 381: {region: 0x7e, script: 0x5a, flags: 0x0}, + 382: {region: 0x7b, script: 0x5a, flags: 0x0}, + 383: {region: 0x165, script: 0x5a, flags: 0x0}, + 384: {region: 0x165, script: 0x5a, flags: 0x0}, + 385: {region: 0x165, script: 0x5a, flags: 0x0}, + 386: {region: 0x165, script: 0x5a, flags: 0x0}, + 387: {region: 0x165, script: 0x5a, flags: 0x0}, + 388: {region: 0x165, script: 0x5a, flags: 0x0}, + 389: {region: 0x6f, script: 0x2c, flags: 0x0}, + 390: {region: 0x165, script: 0x5a, flags: 0x0}, + 391: {region: 0xdb, script: 0x22, flags: 0x0}, + 392: {region: 0x165, script: 0x5a, flags: 0x0}, + 393: {region: 0xa7, script: 0x5a, flags: 0x0}, + 394: {region: 0x165, script: 0x5a, flags: 0x0}, 395: {region: 0xe8, script: 0x5, flags: 0x0}, - 396: {region: 0x165, script: 0x57, flags: 0x0}, + 396: {region: 0x165, script: 0x5a, flags: 0x0}, 397: {region: 0xe8, script: 0x5, flags: 0x0}, - 398: {region: 0x165, script: 0x57, flags: 0x0}, - 399: {region: 0x165, script: 0x57, flags: 0x0}, - 400: {region: 0x6e, script: 0x57, flags: 0x0}, + 398: {region: 0x165, script: 0x5a, flags: 0x0}, + 399: {region: 0x165, script: 0x5a, flags: 0x0}, + 400: {region: 0x6e, script: 0x5a, flags: 0x0}, 401: {region: 0x9c, script: 0x5, flags: 0x0}, - 402: {region: 0x165, script: 0x57, flags: 0x0}, - 403: {region: 0x165, script: 0x29, flags: 0x0}, - 404: {region: 0xf1, script: 0x57, flags: 0x0}, - 405: {region: 0x165, script: 0x57, flags: 0x0}, - 406: {region: 0x165, script: 0x57, flags: 0x0}, - 407: {region: 0x165, script: 0x57, flags: 0x0}, - 408: {region: 0x165, script: 0x29, flags: 0x0}, - 409: {region: 0x165, script: 0x57, flags: 0x0}, - 410: {region: 0x99, script: 0x21, flags: 0x0}, - 411: {region: 0x99, script: 0xda, flags: 0x0}, - 412: {region: 0x95, script: 0x57, flags: 0x0}, - 413: {region: 0xd9, script: 0x57, flags: 0x0}, - 414: {region: 0x130, script: 0x2f, flags: 0x0}, - 415: {region: 0x165, script: 0x57, flags: 0x0}, + 402: {region: 0x165, script: 0x5a, flags: 0x0}, + 403: {region: 0x165, script: 0x2c, flags: 0x0}, + 404: {region: 0xf1, script: 0x5a, flags: 0x0}, + 405: {region: 0x165, script: 0x5a, flags: 0x0}, + 406: {region: 0x165, script: 0x5a, flags: 0x0}, + 407: {region: 0x165, script: 0x5a, flags: 0x0}, + 408: {region: 0x165, script: 0x2c, flags: 0x0}, + 409: {region: 0x165, script: 0x5a, flags: 0x0}, + 410: {region: 0x99, script: 0x22, flags: 0x0}, + 411: {region: 0x99, script: 0xe1, flags: 0x0}, + 412: {region: 0x95, script: 0x5a, flags: 0x0}, + 413: {region: 0xd9, script: 0x5a, flags: 0x0}, + 414: {region: 0x130, script: 0x32, flags: 0x0}, + 415: {region: 0x165, script: 0x5a, flags: 0x0}, 416: {region: 0xe, script: 0x2, flags: 0x1}, 417: {region: 0x99, script: 0xe, flags: 0x0}, - 418: {region: 0x165, script: 0x57, flags: 0x0}, - 419: {region: 0x4e, script: 0x57, flags: 0x0}, - 420: {region: 0x99, script: 0x32, flags: 0x0}, - 421: {region: 0x41, script: 0x57, flags: 0x0}, - 422: {region: 0x54, script: 0x57, flags: 0x0}, - 423: {region: 0x165, script: 0x57, flags: 0x0}, - 424: {region: 0x80, script: 0x57, flags: 0x0}, - 425: {region: 0x165, script: 0x57, flags: 0x0}, - 426: {region: 0x165, script: 0x57, flags: 0x0}, - 427: {region: 0xa4, script: 0x57, flags: 0x0}, - 428: {region: 0x98, script: 0x57, flags: 0x0}, - 429: {region: 0x165, script: 0x57, flags: 0x0}, - 430: {region: 0xdb, script: 0x21, flags: 0x0}, - 431: {region: 0x165, script: 0x57, flags: 0x0}, + 418: {region: 0x165, script: 0x5a, flags: 0x0}, + 419: {region: 0x4e, script: 0x5a, flags: 0x0}, + 420: {region: 0x99, script: 0x35, flags: 0x0}, + 421: {region: 0x41, script: 0x5a, flags: 0x0}, + 422: {region: 0x54, script: 0x5a, flags: 0x0}, + 423: {region: 0x165, script: 0x5a, flags: 0x0}, + 424: {region: 0x80, script: 0x5a, flags: 0x0}, + 425: {region: 0x165, script: 0x5a, flags: 0x0}, + 426: {region: 0x165, script: 0x5a, flags: 0x0}, + 427: {region: 0xa4, script: 0x5a, flags: 0x0}, + 428: {region: 0x98, script: 0x5a, flags: 0x0}, + 429: {region: 0x165, script: 0x5a, flags: 0x0}, + 430: {region: 0xdb, script: 0x22, flags: 0x0}, + 431: {region: 0x165, script: 0x5a, flags: 0x0}, 432: {region: 0x165, script: 0x5, flags: 0x0}, - 433: {region: 0x49, script: 0x57, flags: 0x0}, + 433: {region: 0x49, script: 0x5a, flags: 0x0}, 434: {region: 0x165, script: 0x5, flags: 0x0}, - 435: {region: 0x165, script: 0x57, flags: 0x0}, + 435: {region: 0x165, script: 0x5a, flags: 0x0}, 436: {region: 0x10, script: 0x3, flags: 0x1}, - 437: {region: 0x165, script: 0x57, flags: 0x0}, - 438: {region: 0x53, script: 0x38, flags: 0x0}, - 439: {region: 0x165, script: 0x57, flags: 0x0}, - 440: {region: 0x135, script: 0x57, flags: 0x0}, + 437: {region: 0x165, script: 0x5a, flags: 0x0}, + 438: {region: 0x53, script: 0x3b, flags: 0x0}, + 439: {region: 0x165, script: 0x5a, flags: 0x0}, + 440: {region: 0x135, script: 0x5a, flags: 0x0}, 441: {region: 0x24, script: 0x5, flags: 0x0}, - 442: {region: 0x165, script: 0x57, flags: 0x0}, - 443: {region: 0x165, script: 0x29, flags: 0x0}, - 444: {region: 0x97, script: 0x3b, flags: 0x0}, - 445: {region: 0x165, script: 0x57, flags: 0x0}, - 446: {region: 0x99, script: 0x21, flags: 0x0}, - 447: {region: 0x165, script: 0x57, flags: 0x0}, - 448: {region: 0x73, script: 0x57, flags: 0x0}, - 449: {region: 0x165, script: 0x57, flags: 0x0}, - 450: {region: 0x165, script: 0x57, flags: 0x0}, - 451: {region: 0xe7, script: 0x57, flags: 0x0}, - 452: {region: 0x165, script: 0x57, flags: 0x0}, - 453: {region: 0x12b, script: 0x3d, flags: 0x0}, - 454: {region: 0x53, script: 0x89, flags: 0x0}, - 455: {region: 0x165, script: 0x57, flags: 0x0}, + 442: {region: 0x165, script: 0x5a, flags: 0x0}, + 443: {region: 0x165, script: 0x2c, flags: 0x0}, + 444: {region: 0x97, script: 0x3e, flags: 0x0}, + 445: {region: 0x165, script: 0x5a, flags: 0x0}, + 446: {region: 0x99, script: 0x22, flags: 0x0}, + 447: {region: 0x165, script: 0x5a, flags: 0x0}, + 448: {region: 0x73, script: 0x5a, flags: 0x0}, + 449: {region: 0x165, script: 0x5a, flags: 0x0}, + 450: {region: 0x165, script: 0x5a, flags: 0x0}, + 451: {region: 0xe7, script: 0x5a, flags: 0x0}, + 452: {region: 0x165, script: 0x5a, flags: 0x0}, + 453: {region: 0x12b, script: 0x40, flags: 0x0}, + 454: {region: 0x53, script: 0x8d, flags: 0x0}, + 455: {region: 0x165, script: 0x5a, flags: 0x0}, 456: {region: 0xe8, script: 0x5, flags: 0x0}, - 457: {region: 0x99, script: 0x21, flags: 0x0}, - 458: {region: 0xaf, script: 0x3e, flags: 0x0}, - 459: {region: 0xe7, script: 0x57, flags: 0x0}, + 457: {region: 0x99, script: 0x22, flags: 0x0}, + 458: {region: 0xaf, script: 0x41, flags: 0x0}, + 459: {region: 0xe7, script: 0x5a, flags: 0x0}, 460: {region: 0xe8, script: 0x5, flags: 0x0}, - 461: {region: 0xe6, script: 0x57, flags: 0x0}, - 462: {region: 0x99, script: 0x21, flags: 0x0}, - 463: {region: 0x99, script: 0x21, flags: 0x0}, - 464: {region: 0x165, script: 0x57, flags: 0x0}, - 465: {region: 0x90, script: 0x57, flags: 0x0}, - 466: {region: 0x60, script: 0x57, flags: 0x0}, - 467: {region: 0x53, script: 0x38, flags: 0x0}, - 468: {region: 0x91, script: 0x57, flags: 0x0}, - 469: {region: 0x92, script: 0x57, flags: 0x0}, - 470: {region: 0x165, script: 0x57, flags: 0x0}, + 461: {region: 0xe6, script: 0x5a, flags: 0x0}, + 462: {region: 0x99, script: 0x22, flags: 0x0}, + 463: {region: 0x99, script: 0x22, flags: 0x0}, + 464: {region: 0x165, script: 0x5a, flags: 0x0}, + 465: {region: 0x90, script: 0x5a, flags: 0x0}, + 466: {region: 0x60, script: 0x5a, flags: 0x0}, + 467: {region: 0x53, script: 0x3b, flags: 0x0}, + 468: {region: 0x91, script: 0x5a, flags: 0x0}, + 469: {region: 0x92, script: 0x5a, flags: 0x0}, + 470: {region: 0x165, script: 0x5a, flags: 0x0}, 471: {region: 0x28, script: 0x8, flags: 0x0}, - 472: {region: 0xd2, script: 0x57, flags: 0x0}, - 473: {region: 0x78, script: 0x57, flags: 0x0}, - 474: {region: 0x165, script: 0x57, flags: 0x0}, - 475: {region: 0x165, script: 0x57, flags: 0x0}, - 476: {region: 0xd0, script: 0x57, flags: 0x0}, - 477: {region: 0xd6, script: 0x57, flags: 0x0}, - 478: {region: 0x165, script: 0x57, flags: 0x0}, - 479: {region: 0x165, script: 0x57, flags: 0x0}, - 480: {region: 0x165, script: 0x57, flags: 0x0}, - 481: {region: 0x95, script: 0x57, flags: 0x0}, - 482: {region: 0x165, script: 0x57, flags: 0x0}, - 483: {region: 0x165, script: 0x57, flags: 0x0}, - 484: {region: 0x165, script: 0x57, flags: 0x0}, - 486: {region: 0x122, script: 0x57, flags: 0x0}, - 487: {region: 0xd6, script: 0x57, flags: 0x0}, - 488: {region: 0x165, script: 0x57, flags: 0x0}, - 489: {region: 0x165, script: 0x57, flags: 0x0}, - 490: {region: 0x53, script: 0xea, flags: 0x0}, - 491: {region: 0x165, script: 0x57, flags: 0x0}, - 492: {region: 0x135, script: 0x57, flags: 0x0}, - 493: {region: 0x165, script: 0x57, flags: 0x0}, - 494: {region: 0x49, script: 0x57, flags: 0x0}, - 495: {region: 0x165, script: 0x57, flags: 0x0}, - 496: {region: 0x165, script: 0x57, flags: 0x0}, - 497: {region: 0xe7, script: 0x57, flags: 0x0}, - 498: {region: 0x165, script: 0x57, flags: 0x0}, - 499: {region: 0x95, script: 0x57, flags: 0x0}, - 500: {region: 0x106, script: 0x1f, flags: 0x0}, - 501: {region: 0x1, script: 0x57, flags: 0x0}, - 502: {region: 0x165, script: 0x57, flags: 0x0}, - 503: {region: 0x165, script: 0x57, flags: 0x0}, - 504: {region: 0x9d, script: 0x57, flags: 0x0}, - 505: {region: 0x9e, script: 0x57, flags: 0x0}, + 472: {region: 0xd2, script: 0x5a, flags: 0x0}, + 473: {region: 0x78, script: 0x5a, flags: 0x0}, + 474: {region: 0x165, script: 0x5a, flags: 0x0}, + 475: {region: 0x165, script: 0x5a, flags: 0x0}, + 476: {region: 0xd0, script: 0x5a, flags: 0x0}, + 477: {region: 0xd6, script: 0x5a, flags: 0x0}, + 478: {region: 0x165, script: 0x5a, flags: 0x0}, + 479: {region: 0x165, script: 0x5a, flags: 0x0}, + 480: {region: 0x165, script: 0x5a, flags: 0x0}, + 481: {region: 0x95, script: 0x5a, flags: 0x0}, + 482: {region: 0x165, script: 0x5a, flags: 0x0}, + 483: {region: 0x165, script: 0x5a, flags: 0x0}, + 484: {region: 0x165, script: 0x5a, flags: 0x0}, + 486: {region: 0x122, script: 0x5a, flags: 0x0}, + 487: {region: 0xd6, script: 0x5a, flags: 0x0}, + 488: {region: 0x165, script: 0x5a, flags: 0x0}, + 489: {region: 0x165, script: 0x5a, flags: 0x0}, + 490: {region: 0x53, script: 0xf3, flags: 0x0}, + 491: {region: 0x165, script: 0x5a, flags: 0x0}, + 492: {region: 0x135, script: 0x5a, flags: 0x0}, + 493: {region: 0x165, script: 0x5a, flags: 0x0}, + 494: {region: 0x49, script: 0x5a, flags: 0x0}, + 495: {region: 0x165, script: 0x5a, flags: 0x0}, + 496: {region: 0x165, script: 0x5a, flags: 0x0}, + 497: {region: 0xe7, script: 0x5a, flags: 0x0}, + 498: {region: 0x165, script: 0x5a, flags: 0x0}, + 499: {region: 0x95, script: 0x5a, flags: 0x0}, + 500: {region: 0x106, script: 0x20, flags: 0x0}, + 501: {region: 0x1, script: 0x5a, flags: 0x0}, + 502: {region: 0x165, script: 0x5a, flags: 0x0}, + 503: {region: 0x165, script: 0x5a, flags: 0x0}, + 504: {region: 0x9d, script: 0x5a, flags: 0x0}, + 505: {region: 0x9e, script: 0x5a, flags: 0x0}, 506: {region: 0x49, script: 0x17, flags: 0x0}, - 507: {region: 0x97, script: 0x3b, flags: 0x0}, - 508: {region: 0x165, script: 0x57, flags: 0x0}, - 509: {region: 0x165, script: 0x57, flags: 0x0}, - 510: {region: 0x106, script: 0x57, flags: 0x0}, - 511: {region: 0x165, script: 0x57, flags: 0x0}, - 512: {region: 0xa2, script: 0x46, flags: 0x0}, - 513: {region: 0x165, script: 0x57, flags: 0x0}, - 514: {region: 0xa0, script: 0x57, flags: 0x0}, - 515: {region: 0x1, script: 0x57, flags: 0x0}, - 516: {region: 0x165, script: 0x57, flags: 0x0}, - 517: {region: 0x165, script: 0x57, flags: 0x0}, - 518: {region: 0x165, script: 0x57, flags: 0x0}, - 519: {region: 0x52, script: 0x57, flags: 0x0}, - 520: {region: 0x130, script: 0x3b, flags: 0x0}, - 521: {region: 0x165, script: 0x57, flags: 0x0}, - 522: {region: 0x12f, script: 0x57, flags: 0x0}, - 523: {region: 0xdb, script: 0x21, flags: 0x0}, - 524: {region: 0x165, script: 0x57, flags: 0x0}, - 525: {region: 0x63, script: 0x57, flags: 0x0}, - 526: {region: 0x95, script: 0x57, flags: 0x0}, - 527: {region: 0x95, script: 0x57, flags: 0x0}, - 528: {region: 0x7d, script: 0x2b, flags: 0x0}, - 529: {region: 0x137, script: 0x1f, flags: 0x0}, - 530: {region: 0x67, script: 0x57, flags: 0x0}, - 531: {region: 0xc4, script: 0x57, flags: 0x0}, - 532: {region: 0x165, script: 0x57, flags: 0x0}, - 533: {region: 0x165, script: 0x57, flags: 0x0}, - 534: {region: 0xd6, script: 0x57, flags: 0x0}, - 535: {region: 0xa4, script: 0x57, flags: 0x0}, - 536: {region: 0xc3, script: 0x57, flags: 0x0}, - 537: {region: 0x106, script: 0x1f, flags: 0x0}, - 538: {region: 0x165, script: 0x57, flags: 0x0}, - 539: {region: 0x165, script: 0x57, flags: 0x0}, - 540: {region: 0x165, script: 0x57, flags: 0x0}, - 541: {region: 0x165, script: 0x57, flags: 0x0}, + 507: {region: 0x97, script: 0x3e, flags: 0x0}, + 508: {region: 0x165, script: 0x5a, flags: 0x0}, + 509: {region: 0x165, script: 0x5a, flags: 0x0}, + 510: {region: 0x106, script: 0x5a, flags: 0x0}, + 511: {region: 0x165, script: 0x5a, flags: 0x0}, + 512: {region: 0xa2, script: 0x49, flags: 0x0}, + 513: {region: 0x165, script: 0x5a, flags: 0x0}, + 514: {region: 0xa0, script: 0x5a, flags: 0x0}, + 515: {region: 0x1, script: 0x5a, flags: 0x0}, + 516: {region: 0x165, script: 0x5a, flags: 0x0}, + 517: {region: 0x165, script: 0x5a, flags: 0x0}, + 518: {region: 0x165, script: 0x5a, flags: 0x0}, + 519: {region: 0x52, script: 0x5a, flags: 0x0}, + 520: {region: 0x130, script: 0x3e, flags: 0x0}, + 521: {region: 0x165, script: 0x5a, flags: 0x0}, + 522: {region: 0x12f, script: 0x5a, flags: 0x0}, + 523: {region: 0xdb, script: 0x22, flags: 0x0}, + 524: {region: 0x165, script: 0x5a, flags: 0x0}, + 525: {region: 0x63, script: 0x5a, flags: 0x0}, + 526: {region: 0x95, script: 0x5a, flags: 0x0}, + 527: {region: 0x95, script: 0x5a, flags: 0x0}, + 528: {region: 0x7d, script: 0x2e, flags: 0x0}, + 529: {region: 0x137, script: 0x20, flags: 0x0}, + 530: {region: 0x67, script: 0x5a, flags: 0x0}, + 531: {region: 0xc4, script: 0x5a, flags: 0x0}, + 532: {region: 0x165, script: 0x5a, flags: 0x0}, + 533: {region: 0x165, script: 0x5a, flags: 0x0}, + 534: {region: 0xd6, script: 0x5a, flags: 0x0}, + 535: {region: 0xa4, script: 0x5a, flags: 0x0}, + 536: {region: 0xc3, script: 0x5a, flags: 0x0}, + 537: {region: 0x106, script: 0x20, flags: 0x0}, + 538: {region: 0x165, script: 0x5a, flags: 0x0}, + 539: {region: 0x165, script: 0x5a, flags: 0x0}, + 540: {region: 0x165, script: 0x5a, flags: 0x0}, + 541: {region: 0x165, script: 0x5a, flags: 0x0}, 542: {region: 0xd4, script: 0x5, flags: 0x0}, - 543: {region: 0xd6, script: 0x57, flags: 0x0}, - 544: {region: 0x164, script: 0x57, flags: 0x0}, - 545: {region: 0x165, script: 0x57, flags: 0x0}, - 546: {region: 0x165, script: 0x57, flags: 0x0}, - 547: {region: 0x12f, script: 0x57, flags: 0x0}, + 543: {region: 0xd6, script: 0x5a, flags: 0x0}, + 544: {region: 0x164, script: 0x5a, flags: 0x0}, + 545: {region: 0x165, script: 0x5a, flags: 0x0}, + 546: {region: 0x165, script: 0x5a, flags: 0x0}, + 547: {region: 0x12f, script: 0x5a, flags: 0x0}, 548: {region: 0x122, script: 0x5, flags: 0x0}, - 549: {region: 0x165, script: 0x57, flags: 0x0}, - 550: {region: 0x123, script: 0xdf, flags: 0x0}, - 551: {region: 0x5a, script: 0x57, flags: 0x0}, - 552: {region: 0x52, script: 0x57, flags: 0x0}, - 553: {region: 0x165, script: 0x57, flags: 0x0}, - 554: {region: 0x4f, script: 0x57, flags: 0x0}, - 555: {region: 0x99, script: 0x21, flags: 0x0}, - 556: {region: 0x99, script: 0x21, flags: 0x0}, - 557: {region: 0x4b, script: 0x57, flags: 0x0}, - 558: {region: 0x95, script: 0x57, flags: 0x0}, - 559: {region: 0x165, script: 0x57, flags: 0x0}, - 560: {region: 0x41, script: 0x57, flags: 0x0}, - 561: {region: 0x99, script: 0x57, flags: 0x0}, - 562: {region: 0x53, script: 0xd6, flags: 0x0}, - 563: {region: 0x99, script: 0x21, flags: 0x0}, - 564: {region: 0xc3, script: 0x57, flags: 0x0}, - 565: {region: 0x165, script: 0x57, flags: 0x0}, - 566: {region: 0x99, script: 0x72, flags: 0x0}, + 549: {region: 0x165, script: 0x5a, flags: 0x0}, + 550: {region: 0x123, script: 0xe6, flags: 0x0}, + 551: {region: 0x5a, script: 0x5a, flags: 0x0}, + 552: {region: 0x52, script: 0x5a, flags: 0x0}, + 553: {region: 0x165, script: 0x5a, flags: 0x0}, + 554: {region: 0x4f, script: 0x5a, flags: 0x0}, + 555: {region: 0x99, script: 0x22, flags: 0x0}, + 556: {region: 0x99, script: 0x22, flags: 0x0}, + 557: {region: 0x4b, script: 0x5a, flags: 0x0}, + 558: {region: 0x95, script: 0x5a, flags: 0x0}, + 559: {region: 0x165, script: 0x5a, flags: 0x0}, + 560: {region: 0x41, script: 0x5a, flags: 0x0}, + 561: {region: 0x99, script: 0x5a, flags: 0x0}, + 562: {region: 0x53, script: 0xdd, flags: 0x0}, + 563: {region: 0x99, script: 0x22, flags: 0x0}, + 564: {region: 0xc3, script: 0x5a, flags: 0x0}, + 565: {region: 0x165, script: 0x5a, flags: 0x0}, + 566: {region: 0x99, script: 0x75, flags: 0x0}, 567: {region: 0xe8, script: 0x5, flags: 0x0}, - 568: {region: 0x165, script: 0x57, flags: 0x0}, - 569: {region: 0xa4, script: 0x57, flags: 0x0}, - 570: {region: 0x165, script: 0x57, flags: 0x0}, - 571: {region: 0x12b, script: 0x57, flags: 0x0}, - 572: {region: 0x165, script: 0x57, flags: 0x0}, - 573: {region: 0xd2, script: 0x57, flags: 0x0}, - 574: {region: 0x165, script: 0x57, flags: 0x0}, - 575: {region: 0xaf, script: 0x54, flags: 0x0}, - 576: {region: 0x165, script: 0x57, flags: 0x0}, - 577: {region: 0x165, script: 0x57, flags: 0x0}, + 568: {region: 0x165, script: 0x5a, flags: 0x0}, + 569: {region: 0xa4, script: 0x5a, flags: 0x0}, + 570: {region: 0x165, script: 0x5a, flags: 0x0}, + 571: {region: 0x12b, script: 0x5a, flags: 0x0}, + 572: {region: 0x165, script: 0x5a, flags: 0x0}, + 573: {region: 0xd2, script: 0x5a, flags: 0x0}, + 574: {region: 0x165, script: 0x5a, flags: 0x0}, + 575: {region: 0xaf, script: 0x57, flags: 0x0}, + 576: {region: 0x165, script: 0x5a, flags: 0x0}, + 577: {region: 0x165, script: 0x5a, flags: 0x0}, 578: {region: 0x13, script: 0x6, flags: 0x1}, - 579: {region: 0x165, script: 0x57, flags: 0x0}, - 580: {region: 0x52, script: 0x57, flags: 0x0}, - 581: {region: 0x82, script: 0x57, flags: 0x0}, - 582: {region: 0xa4, script: 0x57, flags: 0x0}, - 583: {region: 0x165, script: 0x57, flags: 0x0}, - 584: {region: 0x165, script: 0x57, flags: 0x0}, - 585: {region: 0x165, script: 0x57, flags: 0x0}, - 586: {region: 0xa6, script: 0x4b, flags: 0x0}, - 587: {region: 0x2a, script: 0x57, flags: 0x0}, - 588: {region: 0x165, script: 0x57, flags: 0x0}, - 589: {region: 0x165, script: 0x57, flags: 0x0}, - 590: {region: 0x165, script: 0x57, flags: 0x0}, - 591: {region: 0x165, script: 0x57, flags: 0x0}, - 592: {region: 0x165, script: 0x57, flags: 0x0}, - 593: {region: 0x99, script: 0x4f, flags: 0x0}, - 594: {region: 0x8b, script: 0x57, flags: 0x0}, - 595: {region: 0x165, script: 0x57, flags: 0x0}, - 596: {region: 0xab, script: 0x50, flags: 0x0}, - 597: {region: 0x106, script: 0x1f, flags: 0x0}, - 598: {region: 0x99, script: 0x21, flags: 0x0}, - 599: {region: 0x165, script: 0x57, flags: 0x0}, - 600: {region: 0x75, script: 0x57, flags: 0x0}, - 601: {region: 0x165, script: 0x57, flags: 0x0}, - 602: {region: 0xb4, script: 0x57, flags: 0x0}, - 603: {region: 0x165, script: 0x57, flags: 0x0}, - 604: {region: 0x165, script: 0x57, flags: 0x0}, - 605: {region: 0x165, script: 0x57, flags: 0x0}, - 606: {region: 0x165, script: 0x57, flags: 0x0}, - 607: {region: 0x165, script: 0x57, flags: 0x0}, - 608: {region: 0x165, script: 0x57, flags: 0x0}, - 609: {region: 0x165, script: 0x57, flags: 0x0}, - 610: {region: 0x165, script: 0x29, flags: 0x0}, - 611: {region: 0x165, script: 0x57, flags: 0x0}, - 612: {region: 0x106, script: 0x1f, flags: 0x0}, - 613: {region: 0x112, script: 0x57, flags: 0x0}, - 614: {region: 0xe7, script: 0x57, flags: 0x0}, - 615: {region: 0x106, script: 0x57, flags: 0x0}, - 616: {region: 0x165, script: 0x57, flags: 0x0}, - 617: {region: 0x99, script: 0x21, flags: 0x0}, + 579: {region: 0x165, script: 0x5a, flags: 0x0}, + 580: {region: 0x52, script: 0x5a, flags: 0x0}, + 581: {region: 0x82, script: 0x5a, flags: 0x0}, + 582: {region: 0xa4, script: 0x5a, flags: 0x0}, + 583: {region: 0x165, script: 0x5a, flags: 0x0}, + 584: {region: 0x165, script: 0x5a, flags: 0x0}, + 585: {region: 0x165, script: 0x5a, flags: 0x0}, + 586: {region: 0xa6, script: 0x4e, flags: 0x0}, + 587: {region: 0x2a, script: 0x5a, flags: 0x0}, + 588: {region: 0x165, script: 0x5a, flags: 0x0}, + 589: {region: 0x165, script: 0x5a, flags: 0x0}, + 590: {region: 0x165, script: 0x5a, flags: 0x0}, + 591: {region: 0x165, script: 0x5a, flags: 0x0}, + 592: {region: 0x165, script: 0x5a, flags: 0x0}, + 593: {region: 0x99, script: 0x52, flags: 0x0}, + 594: {region: 0x8b, script: 0x5a, flags: 0x0}, + 595: {region: 0x165, script: 0x5a, flags: 0x0}, + 596: {region: 0xab, script: 0x53, flags: 0x0}, + 597: {region: 0x106, script: 0x20, flags: 0x0}, + 598: {region: 0x99, script: 0x22, flags: 0x0}, + 599: {region: 0x165, script: 0x5a, flags: 0x0}, + 600: {region: 0x75, script: 0x5a, flags: 0x0}, + 601: {region: 0x165, script: 0x5a, flags: 0x0}, + 602: {region: 0xb4, script: 0x5a, flags: 0x0}, + 603: {region: 0x165, script: 0x5a, flags: 0x0}, + 604: {region: 0x165, script: 0x5a, flags: 0x0}, + 605: {region: 0x165, script: 0x5a, flags: 0x0}, + 606: {region: 0x165, script: 0x5a, flags: 0x0}, + 607: {region: 0x165, script: 0x5a, flags: 0x0}, + 608: {region: 0x165, script: 0x5a, flags: 0x0}, + 609: {region: 0x165, script: 0x5a, flags: 0x0}, + 610: {region: 0x165, script: 0x2c, flags: 0x0}, + 611: {region: 0x165, script: 0x5a, flags: 0x0}, + 612: {region: 0x106, script: 0x20, flags: 0x0}, + 613: {region: 0x112, script: 0x5a, flags: 0x0}, + 614: {region: 0xe7, script: 0x5a, flags: 0x0}, + 615: {region: 0x106, script: 0x5a, flags: 0x0}, + 616: {region: 0x165, script: 0x5a, flags: 0x0}, + 617: {region: 0x99, script: 0x22, flags: 0x0}, 618: {region: 0x99, script: 0x5, flags: 0x0}, - 619: {region: 0x12f, script: 0x57, flags: 0x0}, - 620: {region: 0x165, script: 0x57, flags: 0x0}, - 621: {region: 0x52, script: 0x57, flags: 0x0}, - 622: {region: 0x60, script: 0x57, flags: 0x0}, - 623: {region: 0x165, script: 0x57, flags: 0x0}, - 624: {region: 0x165, script: 0x57, flags: 0x0}, - 625: {region: 0x165, script: 0x29, flags: 0x0}, - 626: {region: 0x165, script: 0x57, flags: 0x0}, - 627: {region: 0x165, script: 0x57, flags: 0x0}, + 619: {region: 0x12f, script: 0x5a, flags: 0x0}, + 620: {region: 0x165, script: 0x5a, flags: 0x0}, + 621: {region: 0x52, script: 0x5a, flags: 0x0}, + 622: {region: 0x60, script: 0x5a, flags: 0x0}, + 623: {region: 0x165, script: 0x5a, flags: 0x0}, + 624: {region: 0x165, script: 0x5a, flags: 0x0}, + 625: {region: 0x165, script: 0x2c, flags: 0x0}, + 626: {region: 0x165, script: 0x5a, flags: 0x0}, + 627: {region: 0x165, script: 0x5a, flags: 0x0}, 628: {region: 0x19, script: 0x3, flags: 0x1}, - 629: {region: 0x165, script: 0x57, flags: 0x0}, - 630: {region: 0x165, script: 0x57, flags: 0x0}, - 631: {region: 0x165, script: 0x57, flags: 0x0}, - 632: {region: 0x165, script: 0x57, flags: 0x0}, - 633: {region: 0x106, script: 0x1f, flags: 0x0}, - 634: {region: 0x165, script: 0x57, flags: 0x0}, - 635: {region: 0x165, script: 0x57, flags: 0x0}, - 636: {region: 0x165, script: 0x57, flags: 0x0}, - 637: {region: 0x106, script: 0x1f, flags: 0x0}, - 638: {region: 0x165, script: 0x57, flags: 0x0}, - 639: {region: 0x95, script: 0x57, flags: 0x0}, + 629: {region: 0x165, script: 0x5a, flags: 0x0}, + 630: {region: 0x165, script: 0x5a, flags: 0x0}, + 631: {region: 0x165, script: 0x5a, flags: 0x0}, + 632: {region: 0x165, script: 0x5a, flags: 0x0}, + 633: {region: 0x106, script: 0x20, flags: 0x0}, + 634: {region: 0x165, script: 0x5a, flags: 0x0}, + 635: {region: 0x165, script: 0x5a, flags: 0x0}, + 636: {region: 0x165, script: 0x5a, flags: 0x0}, + 637: {region: 0x106, script: 0x20, flags: 0x0}, + 638: {region: 0x165, script: 0x5a, flags: 0x0}, + 639: {region: 0x95, script: 0x5a, flags: 0x0}, 640: {region: 0xe8, script: 0x5, flags: 0x0}, - 641: {region: 0x7b, script: 0x57, flags: 0x0}, - 642: {region: 0x165, script: 0x57, flags: 0x0}, - 643: {region: 0x165, script: 0x57, flags: 0x0}, - 644: {region: 0x165, script: 0x57, flags: 0x0}, - 645: {region: 0x165, script: 0x29, flags: 0x0}, - 646: {region: 0x123, script: 0xdf, flags: 0x0}, + 641: {region: 0x7b, script: 0x5a, flags: 0x0}, + 642: {region: 0x165, script: 0x5a, flags: 0x0}, + 643: {region: 0x165, script: 0x5a, flags: 0x0}, + 644: {region: 0x165, script: 0x5a, flags: 0x0}, + 645: {region: 0x165, script: 0x2c, flags: 0x0}, + 646: {region: 0x123, script: 0xe6, flags: 0x0}, 647: {region: 0xe8, script: 0x5, flags: 0x0}, - 648: {region: 0x165, script: 0x57, flags: 0x0}, - 649: {region: 0x165, script: 0x57, flags: 0x0}, + 648: {region: 0x165, script: 0x5a, flags: 0x0}, + 649: {region: 0x165, script: 0x5a, flags: 0x0}, 650: {region: 0x1c, script: 0x5, flags: 0x1}, - 651: {region: 0x165, script: 0x57, flags: 0x0}, - 652: {region: 0x165, script: 0x57, flags: 0x0}, - 653: {region: 0x165, script: 0x57, flags: 0x0}, - 654: {region: 0x138, script: 0x57, flags: 0x0}, - 655: {region: 0x87, script: 0x5b, flags: 0x0}, - 656: {region: 0x97, script: 0x3b, flags: 0x0}, - 657: {region: 0x12f, script: 0x57, flags: 0x0}, + 651: {region: 0x165, script: 0x5a, flags: 0x0}, + 652: {region: 0x165, script: 0x5a, flags: 0x0}, + 653: {region: 0x165, script: 0x5a, flags: 0x0}, + 654: {region: 0x138, script: 0x5a, flags: 0x0}, + 655: {region: 0x87, script: 0x5e, flags: 0x0}, + 656: {region: 0x97, script: 0x3e, flags: 0x0}, + 657: {region: 0x12f, script: 0x5a, flags: 0x0}, 658: {region: 0xe8, script: 0x5, flags: 0x0}, - 659: {region: 0x131, script: 0x57, flags: 0x0}, - 660: {region: 0x165, script: 0x57, flags: 0x0}, - 661: {region: 0xb7, script: 0x57, flags: 0x0}, - 662: {region: 0x106, script: 0x1f, flags: 0x0}, - 663: {region: 0x165, script: 0x57, flags: 0x0}, - 664: {region: 0x95, script: 0x57, flags: 0x0}, - 665: {region: 0x165, script: 0x57, flags: 0x0}, - 666: {region: 0x53, script: 0xdf, flags: 0x0}, - 667: {region: 0x165, script: 0x57, flags: 0x0}, - 668: {region: 0x165, script: 0x57, flags: 0x0}, - 669: {region: 0x165, script: 0x57, flags: 0x0}, - 670: {region: 0x165, script: 0x57, flags: 0x0}, - 671: {region: 0x99, script: 0x59, flags: 0x0}, - 672: {region: 0x165, script: 0x57, flags: 0x0}, - 673: {region: 0x165, script: 0x57, flags: 0x0}, - 674: {region: 0x106, script: 0x1f, flags: 0x0}, - 675: {region: 0x131, script: 0x57, flags: 0x0}, - 676: {region: 0x165, script: 0x57, flags: 0x0}, - 677: {region: 0xd9, script: 0x57, flags: 0x0}, - 678: {region: 0x165, script: 0x57, flags: 0x0}, - 679: {region: 0x165, script: 0x57, flags: 0x0}, + 659: {region: 0x131, script: 0x5a, flags: 0x0}, + 660: {region: 0x165, script: 0x5a, flags: 0x0}, + 661: {region: 0xb7, script: 0x5a, flags: 0x0}, + 662: {region: 0x106, script: 0x20, flags: 0x0}, + 663: {region: 0x165, script: 0x5a, flags: 0x0}, + 664: {region: 0x95, script: 0x5a, flags: 0x0}, + 665: {region: 0x165, script: 0x5a, flags: 0x0}, + 666: {region: 0x53, script: 0xe6, flags: 0x0}, + 667: {region: 0x165, script: 0x5a, flags: 0x0}, + 668: {region: 0x165, script: 0x5a, flags: 0x0}, + 669: {region: 0x165, script: 0x5a, flags: 0x0}, + 670: {region: 0x165, script: 0x5a, flags: 0x0}, + 671: {region: 0x99, script: 0x5c, flags: 0x0}, + 672: {region: 0x165, script: 0x5a, flags: 0x0}, + 673: {region: 0x165, script: 0x5a, flags: 0x0}, + 674: {region: 0x106, script: 0x20, flags: 0x0}, + 675: {region: 0x131, script: 0x5a, flags: 0x0}, + 676: {region: 0x165, script: 0x5a, flags: 0x0}, + 677: {region: 0xd9, script: 0x5a, flags: 0x0}, + 678: {region: 0x165, script: 0x5a, flags: 0x0}, + 679: {region: 0x165, script: 0x5a, flags: 0x0}, 680: {region: 0x21, script: 0x2, flags: 0x1}, - 681: {region: 0x165, script: 0x57, flags: 0x0}, - 682: {region: 0x165, script: 0x57, flags: 0x0}, - 683: {region: 0x9e, script: 0x57, flags: 0x0}, - 684: {region: 0x53, script: 0x5d, flags: 0x0}, - 685: {region: 0x95, script: 0x57, flags: 0x0}, + 681: {region: 0x165, script: 0x5a, flags: 0x0}, + 682: {region: 0x165, script: 0x5a, flags: 0x0}, + 683: {region: 0x9e, script: 0x5a, flags: 0x0}, + 684: {region: 0x53, script: 0x60, flags: 0x0}, + 685: {region: 0x95, script: 0x5a, flags: 0x0}, 686: {region: 0x9c, script: 0x5, flags: 0x0}, - 687: {region: 0x135, script: 0x57, flags: 0x0}, - 688: {region: 0x165, script: 0x57, flags: 0x0}, - 689: {region: 0x165, script: 0x57, flags: 0x0}, - 690: {region: 0x99, script: 0xda, flags: 0x0}, - 691: {region: 0x9e, script: 0x57, flags: 0x0}, - 692: {region: 0x165, script: 0x57, flags: 0x0}, - 693: {region: 0x4b, script: 0x57, flags: 0x0}, - 694: {region: 0x165, script: 0x57, flags: 0x0}, - 695: {region: 0x165, script: 0x57, flags: 0x0}, - 696: {region: 0xaf, script: 0x54, flags: 0x0}, - 697: {region: 0x165, script: 0x57, flags: 0x0}, - 698: {region: 0x165, script: 0x57, flags: 0x0}, - 699: {region: 0x4b, script: 0x57, flags: 0x0}, - 700: {region: 0x165, script: 0x57, flags: 0x0}, - 701: {region: 0x165, script: 0x57, flags: 0x0}, - 702: {region: 0x162, script: 0x57, flags: 0x0}, + 687: {region: 0x135, script: 0x5a, flags: 0x0}, + 688: {region: 0x165, script: 0x5a, flags: 0x0}, + 689: {region: 0x165, script: 0x5a, flags: 0x0}, + 690: {region: 0x99, script: 0xe1, flags: 0x0}, + 691: {region: 0x9e, script: 0x5a, flags: 0x0}, + 692: {region: 0x165, script: 0x5a, flags: 0x0}, + 693: {region: 0x4b, script: 0x5a, flags: 0x0}, + 694: {region: 0x165, script: 0x5a, flags: 0x0}, + 695: {region: 0x165, script: 0x5a, flags: 0x0}, + 696: {region: 0xaf, script: 0x57, flags: 0x0}, + 697: {region: 0x165, script: 0x5a, flags: 0x0}, + 698: {region: 0x165, script: 0x5a, flags: 0x0}, + 699: {region: 0x4b, script: 0x5a, flags: 0x0}, + 700: {region: 0x165, script: 0x5a, flags: 0x0}, + 701: {region: 0x165, script: 0x5a, flags: 0x0}, + 702: {region: 0x162, script: 0x5a, flags: 0x0}, 703: {region: 0x9c, script: 0x5, flags: 0x0}, - 704: {region: 0xb6, script: 0x57, flags: 0x0}, - 705: {region: 0xb8, script: 0x57, flags: 0x0}, - 706: {region: 0x4b, script: 0x57, flags: 0x0}, - 707: {region: 0x4b, script: 0x57, flags: 0x0}, - 708: {region: 0xa4, script: 0x57, flags: 0x0}, - 709: {region: 0xa4, script: 0x57, flags: 0x0}, + 704: {region: 0xb6, script: 0x5a, flags: 0x0}, + 705: {region: 0xb8, script: 0x5a, flags: 0x0}, + 706: {region: 0x4b, script: 0x5a, flags: 0x0}, + 707: {region: 0x4b, script: 0x5a, flags: 0x0}, + 708: {region: 0xa4, script: 0x5a, flags: 0x0}, + 709: {region: 0xa4, script: 0x5a, flags: 0x0}, 710: {region: 0x9c, script: 0x5, flags: 0x0}, - 711: {region: 0xb8, script: 0x57, flags: 0x0}, - 712: {region: 0x123, script: 0xdf, flags: 0x0}, - 713: {region: 0x53, script: 0x38, flags: 0x0}, - 714: {region: 0x12b, script: 0x57, flags: 0x0}, - 715: {region: 0x95, script: 0x57, flags: 0x0}, - 716: {region: 0x52, script: 0x57, flags: 0x0}, - 717: {region: 0x99, script: 0x21, flags: 0x0}, - 718: {region: 0x99, script: 0x21, flags: 0x0}, - 719: {region: 0x95, script: 0x57, flags: 0x0}, + 711: {region: 0xb8, script: 0x5a, flags: 0x0}, + 712: {region: 0x123, script: 0xe6, flags: 0x0}, + 713: {region: 0x53, script: 0x3b, flags: 0x0}, + 714: {region: 0x12b, script: 0x5a, flags: 0x0}, + 715: {region: 0x95, script: 0x5a, flags: 0x0}, + 716: {region: 0x52, script: 0x5a, flags: 0x0}, + 717: {region: 0x99, script: 0x22, flags: 0x0}, + 718: {region: 0x99, script: 0x22, flags: 0x0}, + 719: {region: 0x95, script: 0x5a, flags: 0x0}, 720: {region: 0x23, script: 0x3, flags: 0x1}, - 721: {region: 0xa4, script: 0x57, flags: 0x0}, - 722: {region: 0x165, script: 0x57, flags: 0x0}, - 723: {region: 0xcf, script: 0x57, flags: 0x0}, - 724: {region: 0x165, script: 0x57, flags: 0x0}, - 725: {region: 0x165, script: 0x57, flags: 0x0}, - 726: {region: 0x165, script: 0x57, flags: 0x0}, - 727: {region: 0x165, script: 0x57, flags: 0x0}, - 728: {region: 0x165, script: 0x57, flags: 0x0}, - 729: {region: 0x165, script: 0x57, flags: 0x0}, - 730: {region: 0x165, script: 0x57, flags: 0x0}, - 731: {region: 0x165, script: 0x57, flags: 0x0}, - 732: {region: 0x165, script: 0x57, flags: 0x0}, - 733: {region: 0x165, script: 0x57, flags: 0x0}, - 734: {region: 0x165, script: 0x57, flags: 0x0}, + 721: {region: 0xa4, script: 0x5a, flags: 0x0}, + 722: {region: 0x165, script: 0x5a, flags: 0x0}, + 723: {region: 0xcf, script: 0x5a, flags: 0x0}, + 724: {region: 0x165, script: 0x5a, flags: 0x0}, + 725: {region: 0x165, script: 0x5a, flags: 0x0}, + 726: {region: 0x165, script: 0x5a, flags: 0x0}, + 727: {region: 0x165, script: 0x5a, flags: 0x0}, + 728: {region: 0x165, script: 0x5a, flags: 0x0}, + 729: {region: 0x165, script: 0x5a, flags: 0x0}, + 730: {region: 0x165, script: 0x5a, flags: 0x0}, + 731: {region: 0x165, script: 0x5a, flags: 0x0}, + 732: {region: 0x165, script: 0x5a, flags: 0x0}, + 733: {region: 0x165, script: 0x5a, flags: 0x0}, + 734: {region: 0x165, script: 0x5a, flags: 0x0}, 735: {region: 0x165, script: 0x5, flags: 0x0}, - 736: {region: 0x106, script: 0x1f, flags: 0x0}, - 737: {region: 0xe7, script: 0x57, flags: 0x0}, - 738: {region: 0x165, script: 0x57, flags: 0x0}, - 739: {region: 0x95, script: 0x57, flags: 0x0}, - 740: {region: 0x165, script: 0x29, flags: 0x0}, - 741: {region: 0x165, script: 0x57, flags: 0x0}, - 742: {region: 0x165, script: 0x57, flags: 0x0}, - 743: {region: 0x165, script: 0x57, flags: 0x0}, - 744: {region: 0x112, script: 0x57, flags: 0x0}, - 745: {region: 0xa4, script: 0x57, flags: 0x0}, - 746: {region: 0x165, script: 0x57, flags: 0x0}, - 747: {region: 0x165, script: 0x57, flags: 0x0}, + 736: {region: 0x106, script: 0x20, flags: 0x0}, + 737: {region: 0xe7, script: 0x5a, flags: 0x0}, + 738: {region: 0x165, script: 0x5a, flags: 0x0}, + 739: {region: 0x95, script: 0x5a, flags: 0x0}, + 740: {region: 0x165, script: 0x2c, flags: 0x0}, + 741: {region: 0x165, script: 0x5a, flags: 0x0}, + 742: {region: 0x165, script: 0x5a, flags: 0x0}, + 743: {region: 0x165, script: 0x5a, flags: 0x0}, + 744: {region: 0x112, script: 0x5a, flags: 0x0}, + 745: {region: 0xa4, script: 0x5a, flags: 0x0}, + 746: {region: 0x165, script: 0x5a, flags: 0x0}, + 747: {region: 0x165, script: 0x5a, flags: 0x0}, 748: {region: 0x123, script: 0x5, flags: 0x0}, - 749: {region: 0xcc, script: 0x57, flags: 0x0}, - 750: {region: 0x165, script: 0x57, flags: 0x0}, - 751: {region: 0x165, script: 0x57, flags: 0x0}, - 752: {region: 0x165, script: 0x57, flags: 0x0}, - 753: {region: 0xbf, script: 0x57, flags: 0x0}, - 754: {region: 0xd1, script: 0x57, flags: 0x0}, - 755: {region: 0x165, script: 0x57, flags: 0x0}, - 756: {region: 0x52, script: 0x57, flags: 0x0}, - 757: {region: 0xdb, script: 0x21, flags: 0x0}, - 758: {region: 0x12f, script: 0x57, flags: 0x0}, - 759: {region: 0xc0, script: 0x57, flags: 0x0}, - 760: {region: 0x165, script: 0x57, flags: 0x0}, - 761: {region: 0x165, script: 0x57, flags: 0x0}, - 762: {region: 0xe0, script: 0x57, flags: 0x0}, - 763: {region: 0x165, script: 0x57, flags: 0x0}, - 764: {region: 0x95, script: 0x57, flags: 0x0}, - 765: {region: 0x9b, script: 0x3a, flags: 0x0}, - 766: {region: 0x165, script: 0x57, flags: 0x0}, - 767: {region: 0xc2, script: 0x1f, flags: 0x0}, + 749: {region: 0xcc, script: 0x5a, flags: 0x0}, + 750: {region: 0x165, script: 0x5a, flags: 0x0}, + 751: {region: 0x165, script: 0x5a, flags: 0x0}, + 752: {region: 0x165, script: 0x5a, flags: 0x0}, + 753: {region: 0xbf, script: 0x5a, flags: 0x0}, + 754: {region: 0xd1, script: 0x5a, flags: 0x0}, + 755: {region: 0x165, script: 0x5a, flags: 0x0}, + 756: {region: 0x52, script: 0x5a, flags: 0x0}, + 757: {region: 0xdb, script: 0x22, flags: 0x0}, + 758: {region: 0x12f, script: 0x5a, flags: 0x0}, + 759: {region: 0xc0, script: 0x5a, flags: 0x0}, + 760: {region: 0x165, script: 0x5a, flags: 0x0}, + 761: {region: 0x165, script: 0x5a, flags: 0x0}, + 762: {region: 0xe0, script: 0x5a, flags: 0x0}, + 763: {region: 0x165, script: 0x5a, flags: 0x0}, + 764: {region: 0x95, script: 0x5a, flags: 0x0}, + 765: {region: 0x9b, script: 0x3d, flags: 0x0}, + 766: {region: 0x165, script: 0x5a, flags: 0x0}, + 767: {region: 0xc2, script: 0x20, flags: 0x0}, 768: {region: 0x165, script: 0x5, flags: 0x0}, - 769: {region: 0x165, script: 0x57, flags: 0x0}, - 770: {region: 0x165, script: 0x57, flags: 0x0}, - 771: {region: 0x165, script: 0x57, flags: 0x0}, - 772: {region: 0x99, script: 0x6b, flags: 0x0}, - 773: {region: 0x165, script: 0x57, flags: 0x0}, - 774: {region: 0x165, script: 0x57, flags: 0x0}, - 775: {region: 0x10b, script: 0x57, flags: 0x0}, - 776: {region: 0x165, script: 0x57, flags: 0x0}, - 777: {region: 0x165, script: 0x57, flags: 0x0}, - 778: {region: 0x165, script: 0x57, flags: 0x0}, + 769: {region: 0x165, script: 0x5a, flags: 0x0}, + 770: {region: 0x165, script: 0x5a, flags: 0x0}, + 771: {region: 0x165, script: 0x5a, flags: 0x0}, + 772: {region: 0x99, script: 0x6e, flags: 0x0}, + 773: {region: 0x165, script: 0x5a, flags: 0x0}, + 774: {region: 0x165, script: 0x5a, flags: 0x0}, + 775: {region: 0x10b, script: 0x5a, flags: 0x0}, + 776: {region: 0x165, script: 0x5a, flags: 0x0}, + 777: {region: 0x165, script: 0x5a, flags: 0x0}, + 778: {region: 0x165, script: 0x5a, flags: 0x0}, 779: {region: 0x26, script: 0x3, flags: 0x1}, - 780: {region: 0x165, script: 0x57, flags: 0x0}, - 781: {region: 0x165, script: 0x57, flags: 0x0}, + 780: {region: 0x165, script: 0x5a, flags: 0x0}, + 781: {region: 0x165, script: 0x5a, flags: 0x0}, 782: {region: 0x99, script: 0xe, flags: 0x0}, - 783: {region: 0xc4, script: 0x72, flags: 0x0}, - 785: {region: 0x165, script: 0x57, flags: 0x0}, - 786: {region: 0x49, script: 0x57, flags: 0x0}, - 787: {region: 0x49, script: 0x57, flags: 0x0}, - 788: {region: 0x37, script: 0x57, flags: 0x0}, - 789: {region: 0x165, script: 0x57, flags: 0x0}, - 790: {region: 0x165, script: 0x57, flags: 0x0}, - 791: {region: 0x165, script: 0x57, flags: 0x0}, - 792: {region: 0x165, script: 0x57, flags: 0x0}, - 793: {region: 0x165, script: 0x57, flags: 0x0}, - 794: {region: 0x165, script: 0x57, flags: 0x0}, - 795: {region: 0x99, script: 0x21, flags: 0x0}, - 796: {region: 0xdb, script: 0x21, flags: 0x0}, - 797: {region: 0x106, script: 0x1f, flags: 0x0}, - 798: {region: 0x35, script: 0x6f, flags: 0x0}, + 783: {region: 0xc4, script: 0x75, flags: 0x0}, + 785: {region: 0x165, script: 0x5a, flags: 0x0}, + 786: {region: 0x49, script: 0x5a, flags: 0x0}, + 787: {region: 0x49, script: 0x5a, flags: 0x0}, + 788: {region: 0x37, script: 0x5a, flags: 0x0}, + 789: {region: 0x165, script: 0x5a, flags: 0x0}, + 790: {region: 0x165, script: 0x5a, flags: 0x0}, + 791: {region: 0x165, script: 0x5a, flags: 0x0}, + 792: {region: 0x165, script: 0x5a, flags: 0x0}, + 793: {region: 0x165, script: 0x5a, flags: 0x0}, + 794: {region: 0x165, script: 0x5a, flags: 0x0}, + 795: {region: 0x99, script: 0x22, flags: 0x0}, + 796: {region: 0xdb, script: 0x22, flags: 0x0}, + 797: {region: 0x106, script: 0x20, flags: 0x0}, + 798: {region: 0x35, script: 0x72, flags: 0x0}, 799: {region: 0x29, script: 0x3, flags: 0x1}, - 800: {region: 0xcb, script: 0x57, flags: 0x0}, - 801: {region: 0x165, script: 0x57, flags: 0x0}, - 802: {region: 0x165, script: 0x57, flags: 0x0}, - 803: {region: 0x165, script: 0x57, flags: 0x0}, - 804: {region: 0x99, script: 0x21, flags: 0x0}, - 805: {region: 0x52, script: 0x57, flags: 0x0}, - 807: {region: 0x165, script: 0x57, flags: 0x0}, - 808: {region: 0x135, script: 0x57, flags: 0x0}, - 809: {region: 0x165, script: 0x57, flags: 0x0}, - 810: {region: 0x165, script: 0x57, flags: 0x0}, + 800: {region: 0xcb, script: 0x5a, flags: 0x0}, + 801: {region: 0x165, script: 0x5a, flags: 0x0}, + 802: {region: 0x165, script: 0x5a, flags: 0x0}, + 803: {region: 0x165, script: 0x5a, flags: 0x0}, + 804: {region: 0x99, script: 0x22, flags: 0x0}, + 805: {region: 0x52, script: 0x5a, flags: 0x0}, + 807: {region: 0x165, script: 0x5a, flags: 0x0}, + 808: {region: 0x135, script: 0x5a, flags: 0x0}, + 809: {region: 0x165, script: 0x5a, flags: 0x0}, + 810: {region: 0x165, script: 0x5a, flags: 0x0}, 811: {region: 0xe8, script: 0x5, flags: 0x0}, - 812: {region: 0xc3, script: 0x57, flags: 0x0}, - 813: {region: 0x99, script: 0x21, flags: 0x0}, - 814: {region: 0x95, script: 0x57, flags: 0x0}, - 815: {region: 0x164, script: 0x57, flags: 0x0}, - 816: {region: 0x165, script: 0x57, flags: 0x0}, - 817: {region: 0xc4, script: 0x72, flags: 0x0}, - 818: {region: 0x165, script: 0x57, flags: 0x0}, - 819: {region: 0x165, script: 0x29, flags: 0x0}, - 820: {region: 0x106, script: 0x1f, flags: 0x0}, - 821: {region: 0x165, script: 0x57, flags: 0x0}, - 822: {region: 0x131, script: 0x57, flags: 0x0}, - 823: {region: 0x9c, script: 0x63, flags: 0x0}, - 824: {region: 0x165, script: 0x57, flags: 0x0}, - 825: {region: 0x165, script: 0x57, flags: 0x0}, + 812: {region: 0xc3, script: 0x5a, flags: 0x0}, + 813: {region: 0x99, script: 0x22, flags: 0x0}, + 814: {region: 0x95, script: 0x5a, flags: 0x0}, + 815: {region: 0x164, script: 0x5a, flags: 0x0}, + 816: {region: 0x165, script: 0x5a, flags: 0x0}, + 817: {region: 0xc4, script: 0x75, flags: 0x0}, + 818: {region: 0x165, script: 0x5a, flags: 0x0}, + 819: {region: 0x165, script: 0x2c, flags: 0x0}, + 820: {region: 0x106, script: 0x20, flags: 0x0}, + 821: {region: 0x165, script: 0x5a, flags: 0x0}, + 822: {region: 0x131, script: 0x5a, flags: 0x0}, + 823: {region: 0x9c, script: 0x66, flags: 0x0}, + 824: {region: 0x165, script: 0x5a, flags: 0x0}, + 825: {region: 0x165, script: 0x5a, flags: 0x0}, 826: {region: 0x9c, script: 0x5, flags: 0x0}, - 827: {region: 0x165, script: 0x57, flags: 0x0}, - 828: {region: 0x165, script: 0x57, flags: 0x0}, - 829: {region: 0x165, script: 0x57, flags: 0x0}, - 830: {region: 0xdd, script: 0x57, flags: 0x0}, - 831: {region: 0x165, script: 0x57, flags: 0x0}, - 832: {region: 0x165, script: 0x57, flags: 0x0}, - 834: {region: 0x165, script: 0x57, flags: 0x0}, - 835: {region: 0x53, script: 0x38, flags: 0x0}, - 836: {region: 0x9e, script: 0x57, flags: 0x0}, - 837: {region: 0xd2, script: 0x57, flags: 0x0}, - 838: {region: 0x165, script: 0x57, flags: 0x0}, - 839: {region: 0xda, script: 0x57, flags: 0x0}, - 840: {region: 0x165, script: 0x57, flags: 0x0}, - 841: {region: 0x165, script: 0x57, flags: 0x0}, - 842: {region: 0x165, script: 0x57, flags: 0x0}, - 843: {region: 0xcf, script: 0x57, flags: 0x0}, - 844: {region: 0x165, script: 0x57, flags: 0x0}, - 845: {region: 0x165, script: 0x57, flags: 0x0}, - 846: {region: 0x164, script: 0x57, flags: 0x0}, - 847: {region: 0xd1, script: 0x57, flags: 0x0}, - 848: {region: 0x60, script: 0x57, flags: 0x0}, - 849: {region: 0xdb, script: 0x21, flags: 0x0}, - 850: {region: 0x165, script: 0x57, flags: 0x0}, - 851: {region: 0xdb, script: 0x21, flags: 0x0}, - 852: {region: 0x165, script: 0x57, flags: 0x0}, - 853: {region: 0x165, script: 0x57, flags: 0x0}, - 854: {region: 0xd2, script: 0x57, flags: 0x0}, - 855: {region: 0x165, script: 0x57, flags: 0x0}, - 856: {region: 0x165, script: 0x57, flags: 0x0}, - 857: {region: 0xd1, script: 0x57, flags: 0x0}, - 858: {region: 0x165, script: 0x57, flags: 0x0}, - 859: {region: 0xcf, script: 0x57, flags: 0x0}, - 860: {region: 0xcf, script: 0x57, flags: 0x0}, - 861: {region: 0x165, script: 0x57, flags: 0x0}, - 862: {region: 0x165, script: 0x57, flags: 0x0}, - 863: {region: 0x95, script: 0x57, flags: 0x0}, - 864: {region: 0x165, script: 0x57, flags: 0x0}, - 865: {region: 0xdf, script: 0x57, flags: 0x0}, - 866: {region: 0x165, script: 0x57, flags: 0x0}, - 867: {region: 0x165, script: 0x57, flags: 0x0}, - 868: {region: 0x99, script: 0x57, flags: 0x0}, - 869: {region: 0x165, script: 0x57, flags: 0x0}, - 870: {region: 0x165, script: 0x57, flags: 0x0}, - 871: {region: 0xd9, script: 0x57, flags: 0x0}, - 872: {region: 0x52, script: 0x57, flags: 0x0}, - 873: {region: 0x165, script: 0x57, flags: 0x0}, - 874: {region: 0xda, script: 0x57, flags: 0x0}, - 875: {region: 0x165, script: 0x57, flags: 0x0}, - 876: {region: 0x52, script: 0x57, flags: 0x0}, - 877: {region: 0x165, script: 0x57, flags: 0x0}, - 878: {region: 0x165, script: 0x57, flags: 0x0}, - 879: {region: 0xda, script: 0x57, flags: 0x0}, - 880: {region: 0x123, script: 0x53, flags: 0x0}, - 881: {region: 0x99, script: 0x21, flags: 0x0}, - 882: {region: 0x10c, script: 0xbf, flags: 0x0}, - 883: {region: 0x165, script: 0x57, flags: 0x0}, - 884: {region: 0x165, script: 0x57, flags: 0x0}, - 885: {region: 0x84, script: 0x78, flags: 0x0}, - 886: {region: 0x161, script: 0x57, flags: 0x0}, - 887: {region: 0x165, script: 0x57, flags: 0x0}, + 827: {region: 0x165, script: 0x5a, flags: 0x0}, + 828: {region: 0x165, script: 0x5a, flags: 0x0}, + 829: {region: 0x165, script: 0x5a, flags: 0x0}, + 830: {region: 0xdd, script: 0x5a, flags: 0x0}, + 831: {region: 0x165, script: 0x5a, flags: 0x0}, + 832: {region: 0x165, script: 0x5a, flags: 0x0}, + 834: {region: 0x165, script: 0x5a, flags: 0x0}, + 835: {region: 0x53, script: 0x3b, flags: 0x0}, + 836: {region: 0x9e, script: 0x5a, flags: 0x0}, + 837: {region: 0xd2, script: 0x5a, flags: 0x0}, + 838: {region: 0x165, script: 0x5a, flags: 0x0}, + 839: {region: 0xda, script: 0x5a, flags: 0x0}, + 840: {region: 0x165, script: 0x5a, flags: 0x0}, + 841: {region: 0x165, script: 0x5a, flags: 0x0}, + 842: {region: 0x165, script: 0x5a, flags: 0x0}, + 843: {region: 0xcf, script: 0x5a, flags: 0x0}, + 844: {region: 0x165, script: 0x5a, flags: 0x0}, + 845: {region: 0x165, script: 0x5a, flags: 0x0}, + 846: {region: 0x164, script: 0x5a, flags: 0x0}, + 847: {region: 0xd1, script: 0x5a, flags: 0x0}, + 848: {region: 0x60, script: 0x5a, flags: 0x0}, + 849: {region: 0xdb, script: 0x22, flags: 0x0}, + 850: {region: 0x165, script: 0x5a, flags: 0x0}, + 851: {region: 0xdb, script: 0x22, flags: 0x0}, + 852: {region: 0x165, script: 0x5a, flags: 0x0}, + 853: {region: 0x165, script: 0x5a, flags: 0x0}, + 854: {region: 0xd2, script: 0x5a, flags: 0x0}, + 855: {region: 0x165, script: 0x5a, flags: 0x0}, + 856: {region: 0x165, script: 0x5a, flags: 0x0}, + 857: {region: 0xd1, script: 0x5a, flags: 0x0}, + 858: {region: 0x165, script: 0x5a, flags: 0x0}, + 859: {region: 0xcf, script: 0x5a, flags: 0x0}, + 860: {region: 0xcf, script: 0x5a, flags: 0x0}, + 861: {region: 0x165, script: 0x5a, flags: 0x0}, + 862: {region: 0x165, script: 0x5a, flags: 0x0}, + 863: {region: 0x95, script: 0x5a, flags: 0x0}, + 864: {region: 0x165, script: 0x5a, flags: 0x0}, + 865: {region: 0xdf, script: 0x5a, flags: 0x0}, + 866: {region: 0x165, script: 0x5a, flags: 0x0}, + 867: {region: 0x165, script: 0x5a, flags: 0x0}, + 868: {region: 0x99, script: 0x5a, flags: 0x0}, + 869: {region: 0x165, script: 0x5a, flags: 0x0}, + 870: {region: 0x165, script: 0x5a, flags: 0x0}, + 871: {region: 0xd9, script: 0x5a, flags: 0x0}, + 872: {region: 0x52, script: 0x5a, flags: 0x0}, + 873: {region: 0x165, script: 0x5a, flags: 0x0}, + 874: {region: 0xda, script: 0x5a, flags: 0x0}, + 875: {region: 0x165, script: 0x5a, flags: 0x0}, + 876: {region: 0x52, script: 0x5a, flags: 0x0}, + 877: {region: 0x165, script: 0x5a, flags: 0x0}, + 878: {region: 0x165, script: 0x5a, flags: 0x0}, + 879: {region: 0xda, script: 0x5a, flags: 0x0}, + 880: {region: 0x123, script: 0x56, flags: 0x0}, + 881: {region: 0x99, script: 0x22, flags: 0x0}, + 882: {region: 0x10c, script: 0xc4, flags: 0x0}, + 883: {region: 0x165, script: 0x5a, flags: 0x0}, + 884: {region: 0x165, script: 0x5a, flags: 0x0}, + 885: {region: 0x84, script: 0x7c, flags: 0x0}, + 886: {region: 0x161, script: 0x5a, flags: 0x0}, + 887: {region: 0x165, script: 0x5a, flags: 0x0}, 888: {region: 0x49, script: 0x17, flags: 0x0}, - 889: {region: 0x165, script: 0x57, flags: 0x0}, - 890: {region: 0x161, script: 0x57, flags: 0x0}, - 891: {region: 0x165, script: 0x57, flags: 0x0}, - 892: {region: 0x165, script: 0x57, flags: 0x0}, - 893: {region: 0x165, script: 0x57, flags: 0x0}, - 894: {region: 0x165, script: 0x57, flags: 0x0}, - 895: {region: 0x165, script: 0x57, flags: 0x0}, - 896: {region: 0x117, script: 0x57, flags: 0x0}, - 897: {region: 0x165, script: 0x57, flags: 0x0}, - 898: {region: 0x165, script: 0x57, flags: 0x0}, - 899: {region: 0x135, script: 0x57, flags: 0x0}, - 900: {region: 0x165, script: 0x57, flags: 0x0}, - 901: {region: 0x53, script: 0x57, flags: 0x0}, - 902: {region: 0x165, script: 0x57, flags: 0x0}, - 903: {region: 0xce, script: 0x57, flags: 0x0}, - 904: {region: 0x12f, script: 0x57, flags: 0x0}, - 905: {region: 0x131, script: 0x57, flags: 0x0}, - 906: {region: 0x80, script: 0x57, flags: 0x0}, - 907: {region: 0x78, script: 0x57, flags: 0x0}, - 908: {region: 0x165, script: 0x57, flags: 0x0}, - 910: {region: 0x165, script: 0x57, flags: 0x0}, - 911: {region: 0x165, script: 0x57, flags: 0x0}, - 912: {region: 0x6f, script: 0x57, flags: 0x0}, - 913: {region: 0x165, script: 0x57, flags: 0x0}, - 914: {region: 0x165, script: 0x57, flags: 0x0}, - 915: {region: 0x165, script: 0x57, flags: 0x0}, - 916: {region: 0x165, script: 0x57, flags: 0x0}, - 917: {region: 0x99, script: 0x7d, flags: 0x0}, - 918: {region: 0x165, script: 0x57, flags: 0x0}, + 889: {region: 0x165, script: 0x5a, flags: 0x0}, + 890: {region: 0x161, script: 0x5a, flags: 0x0}, + 891: {region: 0x165, script: 0x5a, flags: 0x0}, + 892: {region: 0x165, script: 0x5a, flags: 0x0}, + 893: {region: 0x165, script: 0x5a, flags: 0x0}, + 894: {region: 0x165, script: 0x5a, flags: 0x0}, + 895: {region: 0x165, script: 0x5a, flags: 0x0}, + 896: {region: 0x117, script: 0x5a, flags: 0x0}, + 897: {region: 0x165, script: 0x5a, flags: 0x0}, + 898: {region: 0x165, script: 0x5a, flags: 0x0}, + 899: {region: 0x135, script: 0x5a, flags: 0x0}, + 900: {region: 0x165, script: 0x5a, flags: 0x0}, + 901: {region: 0x53, script: 0x5a, flags: 0x0}, + 902: {region: 0x165, script: 0x5a, flags: 0x0}, + 903: {region: 0xce, script: 0x5a, flags: 0x0}, + 904: {region: 0x12f, script: 0x5a, flags: 0x0}, + 905: {region: 0x131, script: 0x5a, flags: 0x0}, + 906: {region: 0x80, script: 0x5a, flags: 0x0}, + 907: {region: 0x78, script: 0x5a, flags: 0x0}, + 908: {region: 0x165, script: 0x5a, flags: 0x0}, + 910: {region: 0x165, script: 0x5a, flags: 0x0}, + 911: {region: 0x165, script: 0x5a, flags: 0x0}, + 912: {region: 0x6f, script: 0x5a, flags: 0x0}, + 913: {region: 0x165, script: 0x5a, flags: 0x0}, + 914: {region: 0x165, script: 0x5a, flags: 0x0}, + 915: {region: 0x165, script: 0x5a, flags: 0x0}, + 916: {region: 0x165, script: 0x5a, flags: 0x0}, + 917: {region: 0x99, script: 0x81, flags: 0x0}, + 918: {region: 0x165, script: 0x5a, flags: 0x0}, 919: {region: 0x165, script: 0x5, flags: 0x0}, - 920: {region: 0x7d, script: 0x1f, flags: 0x0}, - 921: {region: 0x135, script: 0x7e, flags: 0x0}, + 920: {region: 0x7d, script: 0x20, flags: 0x0}, + 921: {region: 0x135, script: 0x82, flags: 0x0}, 922: {region: 0x165, script: 0x5, flags: 0x0}, - 923: {region: 0xc5, script: 0x7c, flags: 0x0}, - 924: {region: 0x165, script: 0x57, flags: 0x0}, + 923: {region: 0xc5, script: 0x80, flags: 0x0}, + 924: {region: 0x165, script: 0x5a, flags: 0x0}, 925: {region: 0x2c, script: 0x3, flags: 0x1}, - 926: {region: 0xe7, script: 0x57, flags: 0x0}, + 926: {region: 0xe7, script: 0x5a, flags: 0x0}, 927: {region: 0x2f, script: 0x2, flags: 0x1}, - 928: {region: 0xe7, script: 0x57, flags: 0x0}, - 929: {region: 0x30, script: 0x57, flags: 0x0}, - 930: {region: 0xf0, script: 0x57, flags: 0x0}, - 931: {region: 0x165, script: 0x57, flags: 0x0}, - 932: {region: 0x78, script: 0x57, flags: 0x0}, - 933: {region: 0xd6, script: 0x57, flags: 0x0}, - 934: {region: 0x135, script: 0x57, flags: 0x0}, - 935: {region: 0x49, script: 0x57, flags: 0x0}, - 936: {region: 0x165, script: 0x57, flags: 0x0}, - 937: {region: 0x9c, script: 0xe8, flags: 0x0}, - 938: {region: 0x165, script: 0x57, flags: 0x0}, - 939: {region: 0x60, script: 0x57, flags: 0x0}, + 928: {region: 0xe7, script: 0x5a, flags: 0x0}, + 929: {region: 0x30, script: 0x5a, flags: 0x0}, + 930: {region: 0xf0, script: 0x5a, flags: 0x0}, + 931: {region: 0x165, script: 0x5a, flags: 0x0}, + 932: {region: 0x78, script: 0x5a, flags: 0x0}, + 933: {region: 0xd6, script: 0x5a, flags: 0x0}, + 934: {region: 0x135, script: 0x5a, flags: 0x0}, + 935: {region: 0x49, script: 0x5a, flags: 0x0}, + 936: {region: 0x165, script: 0x5a, flags: 0x0}, + 937: {region: 0x9c, script: 0xf0, flags: 0x0}, + 938: {region: 0x165, script: 0x5a, flags: 0x0}, + 939: {region: 0x60, script: 0x5a, flags: 0x0}, 940: {region: 0x165, script: 0x5, flags: 0x0}, - 941: {region: 0xb0, script: 0x87, flags: 0x0}, - 943: {region: 0x165, script: 0x57, flags: 0x0}, - 944: {region: 0x165, script: 0x57, flags: 0x0}, + 941: {region: 0xb0, script: 0x8b, flags: 0x0}, + 943: {region: 0x165, script: 0x5a, flags: 0x0}, + 944: {region: 0x165, script: 0x5a, flags: 0x0}, 945: {region: 0x99, script: 0x12, flags: 0x0}, - 946: {region: 0xa4, script: 0x57, flags: 0x0}, - 947: {region: 0xe9, script: 0x57, flags: 0x0}, - 948: {region: 0x165, script: 0x57, flags: 0x0}, - 949: {region: 0x9e, script: 0x57, flags: 0x0}, - 950: {region: 0x165, script: 0x57, flags: 0x0}, - 951: {region: 0x165, script: 0x57, flags: 0x0}, - 952: {region: 0x87, script: 0x31, flags: 0x0}, - 953: {region: 0x75, script: 0x57, flags: 0x0}, - 954: {region: 0x165, script: 0x57, flags: 0x0}, - 955: {region: 0xe8, script: 0x4a, flags: 0x0}, + 946: {region: 0xa4, script: 0x5a, flags: 0x0}, + 947: {region: 0xe9, script: 0x5a, flags: 0x0}, + 948: {region: 0x165, script: 0x5a, flags: 0x0}, + 949: {region: 0x9e, script: 0x5a, flags: 0x0}, + 950: {region: 0x165, script: 0x5a, flags: 0x0}, + 951: {region: 0x165, script: 0x5a, flags: 0x0}, + 952: {region: 0x87, script: 0x34, flags: 0x0}, + 953: {region: 0x75, script: 0x5a, flags: 0x0}, + 954: {region: 0x165, script: 0x5a, flags: 0x0}, + 955: {region: 0xe8, script: 0x4d, flags: 0x0}, 956: {region: 0x9c, script: 0x5, flags: 0x0}, - 957: {region: 0x1, script: 0x57, flags: 0x0}, + 957: {region: 0x1, script: 0x5a, flags: 0x0}, 958: {region: 0x24, script: 0x5, flags: 0x0}, - 959: {region: 0x165, script: 0x57, flags: 0x0}, - 960: {region: 0x41, script: 0x57, flags: 0x0}, - 961: {region: 0x165, script: 0x57, flags: 0x0}, - 962: {region: 0x7a, script: 0x57, flags: 0x0}, - 963: {region: 0x165, script: 0x57, flags: 0x0}, - 964: {region: 0xe4, script: 0x57, flags: 0x0}, - 965: {region: 0x89, script: 0x57, flags: 0x0}, - 966: {region: 0x69, script: 0x57, flags: 0x0}, - 967: {region: 0x165, script: 0x57, flags: 0x0}, - 968: {region: 0x99, script: 0x21, flags: 0x0}, - 969: {region: 0x165, script: 0x57, flags: 0x0}, - 970: {region: 0x102, script: 0x57, flags: 0x0}, - 971: {region: 0x95, script: 0x57, flags: 0x0}, - 972: {region: 0x165, script: 0x57, flags: 0x0}, - 973: {region: 0x165, script: 0x57, flags: 0x0}, - 974: {region: 0x9e, script: 0x57, flags: 0x0}, + 959: {region: 0x165, script: 0x5a, flags: 0x0}, + 960: {region: 0x41, script: 0x5a, flags: 0x0}, + 961: {region: 0x165, script: 0x5a, flags: 0x0}, + 962: {region: 0x7a, script: 0x5a, flags: 0x0}, + 963: {region: 0x165, script: 0x5a, flags: 0x0}, + 964: {region: 0xe4, script: 0x5a, flags: 0x0}, + 965: {region: 0x89, script: 0x5a, flags: 0x0}, + 966: {region: 0x69, script: 0x5a, flags: 0x0}, + 967: {region: 0x165, script: 0x5a, flags: 0x0}, + 968: {region: 0x99, script: 0x22, flags: 0x0}, + 969: {region: 0x165, script: 0x5a, flags: 0x0}, + 970: {region: 0x102, script: 0x5a, flags: 0x0}, + 971: {region: 0x95, script: 0x5a, flags: 0x0}, + 972: {region: 0x165, script: 0x5a, flags: 0x0}, + 973: {region: 0x165, script: 0x5a, flags: 0x0}, + 974: {region: 0x9e, script: 0x5a, flags: 0x0}, 975: {region: 0x165, script: 0x5, flags: 0x0}, - 976: {region: 0x99, script: 0x57, flags: 0x0}, + 976: {region: 0x99, script: 0x5a, flags: 0x0}, 977: {region: 0x31, script: 0x2, flags: 0x1}, - 978: {region: 0xdb, script: 0x21, flags: 0x0}, + 978: {region: 0xdb, script: 0x22, flags: 0x0}, 979: {region: 0x35, script: 0xe, flags: 0x0}, - 980: {region: 0x4e, script: 0x57, flags: 0x0}, - 981: {region: 0x72, script: 0x57, flags: 0x0}, - 982: {region: 0x4e, script: 0x57, flags: 0x0}, + 980: {region: 0x4e, script: 0x5a, flags: 0x0}, + 981: {region: 0x72, script: 0x5a, flags: 0x0}, + 982: {region: 0x4e, script: 0x5a, flags: 0x0}, 983: {region: 0x9c, script: 0x5, flags: 0x0}, - 984: {region: 0x10c, script: 0x57, flags: 0x0}, - 985: {region: 0x3a, script: 0x57, flags: 0x0}, - 986: {region: 0x165, script: 0x57, flags: 0x0}, - 987: {region: 0xd1, script: 0x57, flags: 0x0}, - 988: {region: 0x104, script: 0x57, flags: 0x0}, - 989: {region: 0x95, script: 0x57, flags: 0x0}, - 990: {region: 0x12f, script: 0x57, flags: 0x0}, - 991: {region: 0x165, script: 0x57, flags: 0x0}, - 992: {region: 0x165, script: 0x57, flags: 0x0}, - 993: {region: 0x73, script: 0x57, flags: 0x0}, - 994: {region: 0x106, script: 0x1f, flags: 0x0}, - 995: {region: 0x130, script: 0x1f, flags: 0x0}, - 996: {region: 0x109, script: 0x57, flags: 0x0}, - 997: {region: 0x107, script: 0x57, flags: 0x0}, - 998: {region: 0x12f, script: 0x57, flags: 0x0}, - 999: {region: 0x165, script: 0x57, flags: 0x0}, - 1000: {region: 0xa2, script: 0x49, flags: 0x0}, - 1001: {region: 0x99, script: 0x21, flags: 0x0}, - 1002: {region: 0x80, script: 0x57, flags: 0x0}, - 1003: {region: 0x106, script: 0x1f, flags: 0x0}, - 1004: {region: 0xa4, script: 0x57, flags: 0x0}, - 1005: {region: 0x95, script: 0x57, flags: 0x0}, - 1006: {region: 0x99, script: 0x57, flags: 0x0}, - 1007: {region: 0x114, script: 0x57, flags: 0x0}, - 1008: {region: 0x99, script: 0xc3, flags: 0x0}, - 1009: {region: 0x165, script: 0x57, flags: 0x0}, - 1010: {region: 0x165, script: 0x57, flags: 0x0}, - 1011: {region: 0x12f, script: 0x57, flags: 0x0}, - 1012: {region: 0x9e, script: 0x57, flags: 0x0}, - 1013: {region: 0x99, script: 0x21, flags: 0x0}, + 984: {region: 0x10c, script: 0x5a, flags: 0x0}, + 985: {region: 0x3a, script: 0x5a, flags: 0x0}, + 986: {region: 0x165, script: 0x5a, flags: 0x0}, + 987: {region: 0xd1, script: 0x5a, flags: 0x0}, + 988: {region: 0x104, script: 0x5a, flags: 0x0}, + 989: {region: 0x95, script: 0x5a, flags: 0x0}, + 990: {region: 0x12f, script: 0x5a, flags: 0x0}, + 991: {region: 0x165, script: 0x5a, flags: 0x0}, + 992: {region: 0x165, script: 0x5a, flags: 0x0}, + 993: {region: 0x73, script: 0x5a, flags: 0x0}, + 994: {region: 0x106, script: 0x20, flags: 0x0}, + 995: {region: 0x130, script: 0x20, flags: 0x0}, + 996: {region: 0x109, script: 0x5a, flags: 0x0}, + 997: {region: 0x107, script: 0x5a, flags: 0x0}, + 998: {region: 0x12f, script: 0x5a, flags: 0x0}, + 999: {region: 0x165, script: 0x5a, flags: 0x0}, + 1000: {region: 0xa2, script: 0x4c, flags: 0x0}, + 1001: {region: 0x99, script: 0x22, flags: 0x0}, + 1002: {region: 0x80, script: 0x5a, flags: 0x0}, + 1003: {region: 0x106, script: 0x20, flags: 0x0}, + 1004: {region: 0xa4, script: 0x5a, flags: 0x0}, + 1005: {region: 0x95, script: 0x5a, flags: 0x0}, + 1006: {region: 0x99, script: 0x5a, flags: 0x0}, + 1007: {region: 0x114, script: 0x5a, flags: 0x0}, + 1008: {region: 0x99, script: 0xc8, flags: 0x0}, + 1009: {region: 0x165, script: 0x5a, flags: 0x0}, + 1010: {region: 0x165, script: 0x5a, flags: 0x0}, + 1011: {region: 0x12f, script: 0x5a, flags: 0x0}, + 1012: {region: 0x9e, script: 0x5a, flags: 0x0}, + 1013: {region: 0x99, script: 0x22, flags: 0x0}, 1014: {region: 0x165, script: 0x5, flags: 0x0}, - 1015: {region: 0x9e, script: 0x57, flags: 0x0}, - 1016: {region: 0x7b, script: 0x57, flags: 0x0}, - 1017: {region: 0x49, script: 0x57, flags: 0x0}, + 1015: {region: 0x9e, script: 0x5a, flags: 0x0}, + 1016: {region: 0x7b, script: 0x5a, flags: 0x0}, + 1017: {region: 0x49, script: 0x5a, flags: 0x0}, 1018: {region: 0x33, script: 0x4, flags: 0x1}, - 1019: {region: 0x9e, script: 0x57, flags: 0x0}, + 1019: {region: 0x9e, script: 0x5a, flags: 0x0}, 1020: {region: 0x9c, script: 0x5, flags: 0x0}, - 1021: {region: 0xda, script: 0x57, flags: 0x0}, - 1022: {region: 0x4f, script: 0x57, flags: 0x0}, - 1023: {region: 0xd1, script: 0x57, flags: 0x0}, - 1024: {region: 0xcf, script: 0x57, flags: 0x0}, - 1025: {region: 0xc3, script: 0x57, flags: 0x0}, - 1026: {region: 0x4c, script: 0x57, flags: 0x0}, - 1027: {region: 0x96, script: 0x7a, flags: 0x0}, - 1028: {region: 0xb6, script: 0x57, flags: 0x0}, - 1029: {region: 0x165, script: 0x29, flags: 0x0}, - 1030: {region: 0x165, script: 0x57, flags: 0x0}, - 1032: {region: 0xba, script: 0xdc, flags: 0x0}, - 1033: {region: 0x165, script: 0x57, flags: 0x0}, - 1034: {region: 0xc4, script: 0x72, flags: 0x0}, + 1021: {region: 0xda, script: 0x5a, flags: 0x0}, + 1022: {region: 0x4f, script: 0x5a, flags: 0x0}, + 1023: {region: 0xd1, script: 0x5a, flags: 0x0}, + 1024: {region: 0xcf, script: 0x5a, flags: 0x0}, + 1025: {region: 0xc3, script: 0x5a, flags: 0x0}, + 1026: {region: 0x4c, script: 0x5a, flags: 0x0}, + 1027: {region: 0x96, script: 0x7e, flags: 0x0}, + 1028: {region: 0xb6, script: 0x5a, flags: 0x0}, + 1029: {region: 0x165, script: 0x2c, flags: 0x0}, + 1030: {region: 0x165, script: 0x5a, flags: 0x0}, + 1032: {region: 0xba, script: 0xe3, flags: 0x0}, + 1033: {region: 0x165, script: 0x5a, flags: 0x0}, + 1034: {region: 0xc4, script: 0x75, flags: 0x0}, 1035: {region: 0x165, script: 0x5, flags: 0x0}, - 1036: {region: 0xb3, script: 0xca, flags: 0x0}, - 1037: {region: 0x6f, script: 0x57, flags: 0x0}, - 1038: {region: 0x165, script: 0x57, flags: 0x0}, - 1039: {region: 0x165, script: 0x57, flags: 0x0}, - 1040: {region: 0x165, script: 0x57, flags: 0x0}, - 1041: {region: 0x165, script: 0x57, flags: 0x0}, - 1042: {region: 0x111, script: 0x57, flags: 0x0}, - 1043: {region: 0x165, script: 0x57, flags: 0x0}, + 1036: {region: 0xb3, script: 0xcf, flags: 0x0}, + 1037: {region: 0x6f, script: 0x5a, flags: 0x0}, + 1038: {region: 0x165, script: 0x5a, flags: 0x0}, + 1039: {region: 0x165, script: 0x5a, flags: 0x0}, + 1040: {region: 0x165, script: 0x5a, flags: 0x0}, + 1041: {region: 0x165, script: 0x5a, flags: 0x0}, + 1042: {region: 0x111, script: 0x5a, flags: 0x0}, + 1043: {region: 0x165, script: 0x5a, flags: 0x0}, 1044: {region: 0xe8, script: 0x5, flags: 0x0}, - 1045: {region: 0x165, script: 0x57, flags: 0x0}, - 1046: {region: 0x10f, script: 0x57, flags: 0x0}, - 1047: {region: 0x165, script: 0x57, flags: 0x0}, - 1048: {region: 0xe9, script: 0x57, flags: 0x0}, - 1049: {region: 0x165, script: 0x57, flags: 0x0}, - 1050: {region: 0x95, script: 0x57, flags: 0x0}, - 1051: {region: 0x142, script: 0x57, flags: 0x0}, - 1052: {region: 0x10c, script: 0x57, flags: 0x0}, - 1054: {region: 0x10c, script: 0x57, flags: 0x0}, - 1055: {region: 0x72, script: 0x57, flags: 0x0}, - 1056: {region: 0x97, script: 0xc0, flags: 0x0}, - 1057: {region: 0x165, script: 0x57, flags: 0x0}, - 1058: {region: 0x72, script: 0x57, flags: 0x0}, - 1059: {region: 0x164, script: 0x57, flags: 0x0}, - 1060: {region: 0x165, script: 0x57, flags: 0x0}, - 1061: {region: 0xc3, script: 0x57, flags: 0x0}, - 1062: {region: 0x165, script: 0x57, flags: 0x0}, - 1063: {region: 0x165, script: 0x57, flags: 0x0}, - 1064: {region: 0x165, script: 0x57, flags: 0x0}, - 1065: {region: 0x115, script: 0x57, flags: 0x0}, - 1066: {region: 0x165, script: 0x57, flags: 0x0}, - 1067: {region: 0x165, script: 0x57, flags: 0x0}, - 1068: {region: 0x123, script: 0xdf, flags: 0x0}, - 1069: {region: 0x165, script: 0x57, flags: 0x0}, - 1070: {region: 0x165, script: 0x57, flags: 0x0}, - 1071: {region: 0x165, script: 0x57, flags: 0x0}, - 1072: {region: 0x165, script: 0x57, flags: 0x0}, - 1073: {region: 0x27, script: 0x57, flags: 0x0}, + 1045: {region: 0x165, script: 0x5a, flags: 0x0}, + 1046: {region: 0x10f, script: 0x5a, flags: 0x0}, + 1047: {region: 0x165, script: 0x5a, flags: 0x0}, + 1048: {region: 0xe9, script: 0x5a, flags: 0x0}, + 1049: {region: 0x165, script: 0x5a, flags: 0x0}, + 1050: {region: 0x95, script: 0x5a, flags: 0x0}, + 1051: {region: 0x142, script: 0x5a, flags: 0x0}, + 1052: {region: 0x10c, script: 0x5a, flags: 0x0}, + 1054: {region: 0x10c, script: 0x5a, flags: 0x0}, + 1055: {region: 0x72, script: 0x5a, flags: 0x0}, + 1056: {region: 0x97, script: 0xc5, flags: 0x0}, + 1057: {region: 0x165, script: 0x5a, flags: 0x0}, + 1058: {region: 0x72, script: 0x5a, flags: 0x0}, + 1059: {region: 0x164, script: 0x5a, flags: 0x0}, + 1060: {region: 0x165, script: 0x5a, flags: 0x0}, + 1061: {region: 0xc3, script: 0x5a, flags: 0x0}, + 1062: {region: 0x165, script: 0x5a, flags: 0x0}, + 1063: {region: 0x165, script: 0x5a, flags: 0x0}, + 1064: {region: 0x165, script: 0x5a, flags: 0x0}, + 1065: {region: 0x115, script: 0x5a, flags: 0x0}, + 1066: {region: 0x165, script: 0x5a, flags: 0x0}, + 1067: {region: 0x165, script: 0x5a, flags: 0x0}, + 1068: {region: 0x123, script: 0xe6, flags: 0x0}, + 1069: {region: 0x165, script: 0x5a, flags: 0x0}, + 1070: {region: 0x165, script: 0x5a, flags: 0x0}, + 1071: {region: 0x165, script: 0x5a, flags: 0x0}, + 1072: {region: 0x165, script: 0x5a, flags: 0x0}, + 1073: {region: 0x27, script: 0x5a, flags: 0x0}, 1074: {region: 0x37, script: 0x5, flags: 0x1}, - 1075: {region: 0x99, script: 0xcb, flags: 0x0}, - 1076: {region: 0x116, script: 0x57, flags: 0x0}, - 1077: {region: 0x114, script: 0x57, flags: 0x0}, - 1078: {region: 0x99, script: 0x21, flags: 0x0}, - 1079: {region: 0x161, script: 0x57, flags: 0x0}, - 1080: {region: 0x165, script: 0x57, flags: 0x0}, - 1081: {region: 0x165, script: 0x57, flags: 0x0}, - 1082: {region: 0x6d, script: 0x57, flags: 0x0}, - 1083: {region: 0x161, script: 0x57, flags: 0x0}, - 1084: {region: 0x165, script: 0x57, flags: 0x0}, - 1085: {region: 0x60, script: 0x57, flags: 0x0}, - 1086: {region: 0x95, script: 0x57, flags: 0x0}, - 1087: {region: 0x165, script: 0x57, flags: 0x0}, - 1088: {region: 0x165, script: 0x57, flags: 0x0}, - 1089: {region: 0x12f, script: 0x57, flags: 0x0}, - 1090: {region: 0x165, script: 0x57, flags: 0x0}, - 1091: {region: 0x84, script: 0x57, flags: 0x0}, - 1092: {region: 0x10c, script: 0x57, flags: 0x0}, - 1093: {region: 0x12f, script: 0x57, flags: 0x0}, + 1075: {region: 0x99, script: 0xd2, flags: 0x0}, + 1076: {region: 0x116, script: 0x5a, flags: 0x0}, + 1077: {region: 0x114, script: 0x5a, flags: 0x0}, + 1078: {region: 0x99, script: 0x22, flags: 0x0}, + 1079: {region: 0x161, script: 0x5a, flags: 0x0}, + 1080: {region: 0x165, script: 0x5a, flags: 0x0}, + 1081: {region: 0x165, script: 0x5a, flags: 0x0}, + 1082: {region: 0x6d, script: 0x5a, flags: 0x0}, + 1083: {region: 0x161, script: 0x5a, flags: 0x0}, + 1084: {region: 0x165, script: 0x5a, flags: 0x0}, + 1085: {region: 0x60, script: 0x5a, flags: 0x0}, + 1086: {region: 0x95, script: 0x5a, flags: 0x0}, + 1087: {region: 0x165, script: 0x5a, flags: 0x0}, + 1088: {region: 0x165, script: 0x5a, flags: 0x0}, + 1089: {region: 0x12f, script: 0x5a, flags: 0x0}, + 1090: {region: 0x165, script: 0x5a, flags: 0x0}, + 1091: {region: 0x84, script: 0x5a, flags: 0x0}, + 1092: {region: 0x10c, script: 0x5a, flags: 0x0}, + 1093: {region: 0x12f, script: 0x5a, flags: 0x0}, 1094: {region: 0x15f, script: 0x5, flags: 0x0}, - 1095: {region: 0x4b, script: 0x57, flags: 0x0}, - 1096: {region: 0x60, script: 0x57, flags: 0x0}, - 1097: {region: 0x165, script: 0x57, flags: 0x0}, - 1098: {region: 0x99, script: 0x21, flags: 0x0}, - 1099: {region: 0x95, script: 0x57, flags: 0x0}, - 1100: {region: 0x165, script: 0x57, flags: 0x0}, + 1095: {region: 0x4b, script: 0x5a, flags: 0x0}, + 1096: {region: 0x60, script: 0x5a, flags: 0x0}, + 1097: {region: 0x165, script: 0x5a, flags: 0x0}, + 1098: {region: 0x99, script: 0x22, flags: 0x0}, + 1099: {region: 0x95, script: 0x5a, flags: 0x0}, + 1100: {region: 0x165, script: 0x5a, flags: 0x0}, 1101: {region: 0x35, script: 0xe, flags: 0x0}, - 1102: {region: 0x9b, script: 0xcf, flags: 0x0}, - 1103: {region: 0xe9, script: 0x57, flags: 0x0}, - 1104: {region: 0x99, script: 0xd7, flags: 0x0}, - 1105: {region: 0xdb, script: 0x21, flags: 0x0}, - 1106: {region: 0x165, script: 0x57, flags: 0x0}, - 1107: {region: 0x165, script: 0x57, flags: 0x0}, - 1108: {region: 0x165, script: 0x57, flags: 0x0}, - 1109: {region: 0x165, script: 0x57, flags: 0x0}, - 1110: {region: 0x165, script: 0x57, flags: 0x0}, - 1111: {region: 0x165, script: 0x57, flags: 0x0}, - 1112: {region: 0x165, script: 0x57, flags: 0x0}, - 1113: {region: 0x165, script: 0x57, flags: 0x0}, - 1114: {region: 0xe7, script: 0x57, flags: 0x0}, - 1115: {region: 0x165, script: 0x57, flags: 0x0}, - 1116: {region: 0x165, script: 0x57, flags: 0x0}, - 1117: {region: 0x99, script: 0x4f, flags: 0x0}, - 1118: {region: 0x53, script: 0xd5, flags: 0x0}, - 1119: {region: 0xdb, script: 0x21, flags: 0x0}, - 1120: {region: 0xdb, script: 0x21, flags: 0x0}, - 1121: {region: 0x99, script: 0xda, flags: 0x0}, - 1122: {region: 0x165, script: 0x57, flags: 0x0}, - 1123: {region: 0x112, script: 0x57, flags: 0x0}, - 1124: {region: 0x131, script: 0x57, flags: 0x0}, - 1125: {region: 0x126, script: 0x57, flags: 0x0}, - 1126: {region: 0x165, script: 0x57, flags: 0x0}, + 1102: {region: 0x9b, script: 0xd6, flags: 0x0}, + 1103: {region: 0xe9, script: 0x5a, flags: 0x0}, + 1104: {region: 0x99, script: 0xde, flags: 0x0}, + 1105: {region: 0xdb, script: 0x22, flags: 0x0}, + 1106: {region: 0x165, script: 0x5a, flags: 0x0}, + 1107: {region: 0x165, script: 0x5a, flags: 0x0}, + 1108: {region: 0x165, script: 0x5a, flags: 0x0}, + 1109: {region: 0x165, script: 0x5a, flags: 0x0}, + 1110: {region: 0x165, script: 0x5a, flags: 0x0}, + 1111: {region: 0x165, script: 0x5a, flags: 0x0}, + 1112: {region: 0x165, script: 0x5a, flags: 0x0}, + 1113: {region: 0x165, script: 0x5a, flags: 0x0}, + 1114: {region: 0xe7, script: 0x5a, flags: 0x0}, + 1115: {region: 0x165, script: 0x5a, flags: 0x0}, + 1116: {region: 0x165, script: 0x5a, flags: 0x0}, + 1117: {region: 0x99, script: 0x52, flags: 0x0}, + 1118: {region: 0x53, script: 0xdc, flags: 0x0}, + 1119: {region: 0xdb, script: 0x22, flags: 0x0}, + 1120: {region: 0xdb, script: 0x22, flags: 0x0}, + 1121: {region: 0x99, script: 0xe1, flags: 0x0}, + 1122: {region: 0x165, script: 0x5a, flags: 0x0}, + 1123: {region: 0x112, script: 0x5a, flags: 0x0}, + 1124: {region: 0x131, script: 0x5a, flags: 0x0}, + 1125: {region: 0x126, script: 0x5a, flags: 0x0}, + 1126: {region: 0x165, script: 0x5a, flags: 0x0}, 1127: {region: 0x3c, script: 0x3, flags: 0x1}, - 1128: {region: 0x165, script: 0x57, flags: 0x0}, - 1129: {region: 0x165, script: 0x57, flags: 0x0}, - 1130: {region: 0x165, script: 0x57, flags: 0x0}, - 1131: {region: 0x123, script: 0xdf, flags: 0x0}, - 1132: {region: 0xdb, script: 0x21, flags: 0x0}, - 1133: {region: 0xdb, script: 0x21, flags: 0x0}, - 1134: {region: 0xdb, script: 0x21, flags: 0x0}, - 1135: {region: 0x6f, script: 0x29, flags: 0x0}, - 1136: {region: 0x165, script: 0x57, flags: 0x0}, - 1137: {region: 0x6d, script: 0x29, flags: 0x0}, - 1138: {region: 0x165, script: 0x57, flags: 0x0}, - 1139: {region: 0x165, script: 0x57, flags: 0x0}, - 1140: {region: 0x165, script: 0x57, flags: 0x0}, - 1141: {region: 0xd6, script: 0x57, flags: 0x0}, - 1142: {region: 0x127, script: 0x57, flags: 0x0}, - 1143: {region: 0x125, script: 0x57, flags: 0x0}, - 1144: {region: 0x32, script: 0x57, flags: 0x0}, - 1145: {region: 0xdb, script: 0x21, flags: 0x0}, - 1146: {region: 0xe7, script: 0x57, flags: 0x0}, - 1147: {region: 0x165, script: 0x57, flags: 0x0}, - 1148: {region: 0x165, script: 0x57, flags: 0x0}, - 1149: {region: 0x32, script: 0x57, flags: 0x0}, - 1150: {region: 0xd4, script: 0x57, flags: 0x0}, - 1151: {region: 0x165, script: 0x57, flags: 0x0}, - 1152: {region: 0x161, script: 0x57, flags: 0x0}, - 1153: {region: 0x165, script: 0x57, flags: 0x0}, - 1154: {region: 0x129, script: 0x57, flags: 0x0}, - 1155: {region: 0x165, script: 0x57, flags: 0x0}, - 1156: {region: 0xce, script: 0x57, flags: 0x0}, - 1157: {region: 0x165, script: 0x57, flags: 0x0}, - 1158: {region: 0xe6, script: 0x57, flags: 0x0}, - 1159: {region: 0x165, script: 0x57, flags: 0x0}, - 1160: {region: 0x165, script: 0x57, flags: 0x0}, - 1161: {region: 0x165, script: 0x57, flags: 0x0}, - 1162: {region: 0x12b, script: 0x57, flags: 0x0}, - 1163: {region: 0x12b, script: 0x57, flags: 0x0}, - 1164: {region: 0x12e, script: 0x57, flags: 0x0}, + 1128: {region: 0x165, script: 0x5a, flags: 0x0}, + 1129: {region: 0x165, script: 0x5a, flags: 0x0}, + 1130: {region: 0x165, script: 0x5a, flags: 0x0}, + 1131: {region: 0x123, script: 0xe6, flags: 0x0}, + 1132: {region: 0xdb, script: 0x22, flags: 0x0}, + 1133: {region: 0xdb, script: 0x22, flags: 0x0}, + 1134: {region: 0xdb, script: 0x22, flags: 0x0}, + 1135: {region: 0x6f, script: 0x2c, flags: 0x0}, + 1136: {region: 0x165, script: 0x5a, flags: 0x0}, + 1137: {region: 0x6d, script: 0x2c, flags: 0x0}, + 1138: {region: 0x165, script: 0x5a, flags: 0x0}, + 1139: {region: 0x165, script: 0x5a, flags: 0x0}, + 1140: {region: 0x165, script: 0x5a, flags: 0x0}, + 1141: {region: 0xd6, script: 0x5a, flags: 0x0}, + 1142: {region: 0x127, script: 0x5a, flags: 0x0}, + 1143: {region: 0x125, script: 0x5a, flags: 0x0}, + 1144: {region: 0x32, script: 0x5a, flags: 0x0}, + 1145: {region: 0xdb, script: 0x22, flags: 0x0}, + 1146: {region: 0xe7, script: 0x5a, flags: 0x0}, + 1147: {region: 0x165, script: 0x5a, flags: 0x0}, + 1148: {region: 0x165, script: 0x5a, flags: 0x0}, + 1149: {region: 0x32, script: 0x5a, flags: 0x0}, + 1150: {region: 0xd4, script: 0x5a, flags: 0x0}, + 1151: {region: 0x165, script: 0x5a, flags: 0x0}, + 1152: {region: 0x161, script: 0x5a, flags: 0x0}, + 1153: {region: 0x165, script: 0x5a, flags: 0x0}, + 1154: {region: 0x129, script: 0x5a, flags: 0x0}, + 1155: {region: 0x165, script: 0x5a, flags: 0x0}, + 1156: {region: 0xce, script: 0x5a, flags: 0x0}, + 1157: {region: 0x165, script: 0x5a, flags: 0x0}, + 1158: {region: 0xe6, script: 0x5a, flags: 0x0}, + 1159: {region: 0x165, script: 0x5a, flags: 0x0}, + 1160: {region: 0x165, script: 0x5a, flags: 0x0}, + 1161: {region: 0x165, script: 0x5a, flags: 0x0}, + 1162: {region: 0x12b, script: 0x5a, flags: 0x0}, + 1163: {region: 0x12b, script: 0x5a, flags: 0x0}, + 1164: {region: 0x12e, script: 0x5a, flags: 0x0}, 1165: {region: 0x165, script: 0x5, flags: 0x0}, - 1166: {region: 0x161, script: 0x57, flags: 0x0}, - 1167: {region: 0x87, script: 0x31, flags: 0x0}, - 1168: {region: 0xdb, script: 0x21, flags: 0x0}, - 1169: {region: 0xe7, script: 0x57, flags: 0x0}, - 1170: {region: 0x43, script: 0xe0, flags: 0x0}, - 1171: {region: 0x165, script: 0x57, flags: 0x0}, - 1172: {region: 0x106, script: 0x1f, flags: 0x0}, - 1173: {region: 0x165, script: 0x57, flags: 0x0}, - 1174: {region: 0x165, script: 0x57, flags: 0x0}, - 1175: {region: 0x131, script: 0x57, flags: 0x0}, - 1176: {region: 0x165, script: 0x57, flags: 0x0}, - 1177: {region: 0x123, script: 0xdf, flags: 0x0}, - 1178: {region: 0x32, script: 0x57, flags: 0x0}, - 1179: {region: 0x165, script: 0x57, flags: 0x0}, - 1180: {region: 0x165, script: 0x57, flags: 0x0}, - 1181: {region: 0xce, script: 0x57, flags: 0x0}, - 1182: {region: 0x165, script: 0x57, flags: 0x0}, - 1183: {region: 0x165, script: 0x57, flags: 0x0}, - 1184: {region: 0x12d, script: 0x57, flags: 0x0}, - 1185: {region: 0x165, script: 0x57, flags: 0x0}, - 1187: {region: 0x165, script: 0x57, flags: 0x0}, - 1188: {region: 0xd4, script: 0x57, flags: 0x0}, - 1189: {region: 0x53, script: 0xd8, flags: 0x0}, - 1190: {region: 0xe5, script: 0x57, flags: 0x0}, - 1191: {region: 0x165, script: 0x57, flags: 0x0}, - 1192: {region: 0x106, script: 0x1f, flags: 0x0}, - 1193: {region: 0xba, script: 0x57, flags: 0x0}, - 1194: {region: 0x165, script: 0x57, flags: 0x0}, - 1195: {region: 0x106, script: 0x1f, flags: 0x0}, + 1166: {region: 0x161, script: 0x5a, flags: 0x0}, + 1167: {region: 0x87, script: 0x34, flags: 0x0}, + 1168: {region: 0xdb, script: 0x22, flags: 0x0}, + 1169: {region: 0xe7, script: 0x5a, flags: 0x0}, + 1170: {region: 0x43, script: 0xe7, flags: 0x0}, + 1171: {region: 0x165, script: 0x5a, flags: 0x0}, + 1172: {region: 0x106, script: 0x20, flags: 0x0}, + 1173: {region: 0x165, script: 0x5a, flags: 0x0}, + 1174: {region: 0x165, script: 0x5a, flags: 0x0}, + 1175: {region: 0x131, script: 0x5a, flags: 0x0}, + 1176: {region: 0x165, script: 0x5a, flags: 0x0}, + 1177: {region: 0x123, script: 0xe6, flags: 0x0}, + 1178: {region: 0x32, script: 0x5a, flags: 0x0}, + 1179: {region: 0x165, script: 0x5a, flags: 0x0}, + 1180: {region: 0x165, script: 0x5a, flags: 0x0}, + 1181: {region: 0xce, script: 0x5a, flags: 0x0}, + 1182: {region: 0x165, script: 0x5a, flags: 0x0}, + 1183: {region: 0x165, script: 0x5a, flags: 0x0}, + 1184: {region: 0x12d, script: 0x5a, flags: 0x0}, + 1185: {region: 0x165, script: 0x5a, flags: 0x0}, + 1187: {region: 0x165, script: 0x5a, flags: 0x0}, + 1188: {region: 0xd4, script: 0x5a, flags: 0x0}, + 1189: {region: 0x53, script: 0xdf, flags: 0x0}, + 1190: {region: 0xe5, script: 0x5a, flags: 0x0}, + 1191: {region: 0x165, script: 0x5a, flags: 0x0}, + 1192: {region: 0x106, script: 0x20, flags: 0x0}, + 1193: {region: 0xba, script: 0x5a, flags: 0x0}, + 1194: {region: 0x165, script: 0x5a, flags: 0x0}, + 1195: {region: 0x106, script: 0x20, flags: 0x0}, 1196: {region: 0x3f, script: 0x4, flags: 0x1}, - 1197: {region: 0x11c, script: 0xe2, flags: 0x0}, - 1198: {region: 0x130, script: 0x1f, flags: 0x0}, - 1199: {region: 0x75, script: 0x57, flags: 0x0}, - 1200: {region: 0x2a, script: 0x57, flags: 0x0}, + 1197: {region: 0x11c, script: 0xea, flags: 0x0}, + 1198: {region: 0x130, script: 0x20, flags: 0x0}, + 1199: {region: 0x75, script: 0x5a, flags: 0x0}, + 1200: {region: 0x2a, script: 0x5a, flags: 0x0}, 1202: {region: 0x43, script: 0x3, flags: 0x1}, 1203: {region: 0x99, script: 0xe, flags: 0x0}, 1204: {region: 0xe8, script: 0x5, flags: 0x0}, - 1205: {region: 0x165, script: 0x57, flags: 0x0}, - 1206: {region: 0x165, script: 0x57, flags: 0x0}, - 1207: {region: 0x165, script: 0x57, flags: 0x0}, - 1208: {region: 0x165, script: 0x57, flags: 0x0}, - 1209: {region: 0x165, script: 0x57, flags: 0x0}, - 1210: {region: 0x165, script: 0x57, flags: 0x0}, - 1211: {region: 0x165, script: 0x57, flags: 0x0}, + 1205: {region: 0x165, script: 0x5a, flags: 0x0}, + 1206: {region: 0x165, script: 0x5a, flags: 0x0}, + 1207: {region: 0x165, script: 0x5a, flags: 0x0}, + 1208: {region: 0x165, script: 0x5a, flags: 0x0}, + 1209: {region: 0x165, script: 0x5a, flags: 0x0}, + 1210: {region: 0x165, script: 0x5a, flags: 0x0}, + 1211: {region: 0x165, script: 0x5a, flags: 0x0}, 1212: {region: 0x46, script: 0x4, flags: 0x1}, - 1213: {region: 0x165, script: 0x57, flags: 0x0}, - 1214: {region: 0xb4, script: 0xe3, flags: 0x0}, - 1215: {region: 0x165, script: 0x57, flags: 0x0}, - 1216: {region: 0x161, script: 0x57, flags: 0x0}, - 1217: {region: 0x9e, script: 0x57, flags: 0x0}, - 1218: {region: 0x106, script: 0x57, flags: 0x0}, - 1219: {region: 0x13e, script: 0x57, flags: 0x0}, - 1220: {region: 0x11b, script: 0x57, flags: 0x0}, - 1221: {region: 0x165, script: 0x57, flags: 0x0}, - 1222: {region: 0x36, script: 0x57, flags: 0x0}, - 1223: {region: 0x60, script: 0x57, flags: 0x0}, - 1224: {region: 0xd1, script: 0x57, flags: 0x0}, - 1225: {region: 0x1, script: 0x57, flags: 0x0}, - 1226: {region: 0x106, script: 0x57, flags: 0x0}, - 1227: {region: 0x6a, script: 0x57, flags: 0x0}, - 1228: {region: 0x12f, script: 0x57, flags: 0x0}, - 1229: {region: 0x165, script: 0x57, flags: 0x0}, - 1230: {region: 0x36, script: 0x57, flags: 0x0}, - 1231: {region: 0x4e, script: 0x57, flags: 0x0}, - 1232: {region: 0x165, script: 0x57, flags: 0x0}, - 1233: {region: 0x6f, script: 0x29, flags: 0x0}, - 1234: {region: 0x165, script: 0x57, flags: 0x0}, - 1235: {region: 0xe7, script: 0x57, flags: 0x0}, - 1236: {region: 0x2f, script: 0x57, flags: 0x0}, - 1237: {region: 0x99, script: 0xda, flags: 0x0}, - 1238: {region: 0x99, script: 0x21, flags: 0x0}, - 1239: {region: 0x165, script: 0x57, flags: 0x0}, - 1240: {region: 0x165, script: 0x57, flags: 0x0}, - 1241: {region: 0x165, script: 0x57, flags: 0x0}, - 1242: {region: 0x165, script: 0x57, flags: 0x0}, - 1243: {region: 0x165, script: 0x57, flags: 0x0}, - 1244: {region: 0x165, script: 0x57, flags: 0x0}, - 1245: {region: 0x165, script: 0x57, flags: 0x0}, - 1246: {region: 0x165, script: 0x57, flags: 0x0}, - 1247: {region: 0x165, script: 0x57, flags: 0x0}, - 1248: {region: 0x140, script: 0x57, flags: 0x0}, - 1249: {region: 0x165, script: 0x57, flags: 0x0}, - 1250: {region: 0x165, script: 0x57, flags: 0x0}, + 1213: {region: 0x165, script: 0x5a, flags: 0x0}, + 1214: {region: 0xb4, script: 0xeb, flags: 0x0}, + 1215: {region: 0x165, script: 0x5a, flags: 0x0}, + 1216: {region: 0x161, script: 0x5a, flags: 0x0}, + 1217: {region: 0x9e, script: 0x5a, flags: 0x0}, + 1218: {region: 0x106, script: 0x5a, flags: 0x0}, + 1219: {region: 0x13e, script: 0x5a, flags: 0x0}, + 1220: {region: 0x11b, script: 0x5a, flags: 0x0}, + 1221: {region: 0x165, script: 0x5a, flags: 0x0}, + 1222: {region: 0x36, script: 0x5a, flags: 0x0}, + 1223: {region: 0x60, script: 0x5a, flags: 0x0}, + 1224: {region: 0xd1, script: 0x5a, flags: 0x0}, + 1225: {region: 0x1, script: 0x5a, flags: 0x0}, + 1226: {region: 0x106, script: 0x5a, flags: 0x0}, + 1227: {region: 0x6a, script: 0x5a, flags: 0x0}, + 1228: {region: 0x12f, script: 0x5a, flags: 0x0}, + 1229: {region: 0x165, script: 0x5a, flags: 0x0}, + 1230: {region: 0x36, script: 0x5a, flags: 0x0}, + 1231: {region: 0x4e, script: 0x5a, flags: 0x0}, + 1232: {region: 0x165, script: 0x5a, flags: 0x0}, + 1233: {region: 0x6f, script: 0x2c, flags: 0x0}, + 1234: {region: 0x165, script: 0x5a, flags: 0x0}, + 1235: {region: 0xe7, script: 0x5a, flags: 0x0}, + 1236: {region: 0x2f, script: 0x5a, flags: 0x0}, + 1237: {region: 0x99, script: 0xe1, flags: 0x0}, + 1238: {region: 0x99, script: 0x22, flags: 0x0}, + 1239: {region: 0x165, script: 0x5a, flags: 0x0}, + 1240: {region: 0x165, script: 0x5a, flags: 0x0}, + 1241: {region: 0x165, script: 0x5a, flags: 0x0}, + 1242: {region: 0x165, script: 0x5a, flags: 0x0}, + 1243: {region: 0x165, script: 0x5a, flags: 0x0}, + 1244: {region: 0x165, script: 0x5a, flags: 0x0}, + 1245: {region: 0x165, script: 0x5a, flags: 0x0}, + 1246: {region: 0x165, script: 0x5a, flags: 0x0}, + 1247: {region: 0x165, script: 0x5a, flags: 0x0}, + 1248: {region: 0x140, script: 0x5a, flags: 0x0}, + 1249: {region: 0x165, script: 0x5a, flags: 0x0}, + 1250: {region: 0x165, script: 0x5a, flags: 0x0}, 1251: {region: 0xa8, script: 0x5, flags: 0x0}, - 1252: {region: 0x165, script: 0x57, flags: 0x0}, - 1253: {region: 0x114, script: 0x57, flags: 0x0}, - 1254: {region: 0x165, script: 0x57, flags: 0x0}, - 1255: {region: 0x165, script: 0x57, flags: 0x0}, - 1256: {region: 0x165, script: 0x57, flags: 0x0}, - 1257: {region: 0x165, script: 0x57, flags: 0x0}, - 1258: {region: 0x99, script: 0x21, flags: 0x0}, - 1259: {region: 0x53, script: 0x38, flags: 0x0}, - 1260: {region: 0x165, script: 0x57, flags: 0x0}, - 1261: {region: 0x165, script: 0x57, flags: 0x0}, - 1262: {region: 0x41, script: 0x57, flags: 0x0}, - 1263: {region: 0x165, script: 0x57, flags: 0x0}, + 1252: {region: 0x165, script: 0x5a, flags: 0x0}, + 1253: {region: 0x114, script: 0x5a, flags: 0x0}, + 1254: {region: 0x165, script: 0x5a, flags: 0x0}, + 1255: {region: 0x165, script: 0x5a, flags: 0x0}, + 1256: {region: 0x165, script: 0x5a, flags: 0x0}, + 1257: {region: 0x165, script: 0x5a, flags: 0x0}, + 1258: {region: 0x99, script: 0x22, flags: 0x0}, + 1259: {region: 0x53, script: 0x3b, flags: 0x0}, + 1260: {region: 0x165, script: 0x5a, flags: 0x0}, + 1261: {region: 0x165, script: 0x5a, flags: 0x0}, + 1262: {region: 0x41, script: 0x5a, flags: 0x0}, + 1263: {region: 0x165, script: 0x5a, flags: 0x0}, 1264: {region: 0x12b, script: 0x18, flags: 0x0}, - 1265: {region: 0x165, script: 0x57, flags: 0x0}, - 1266: {region: 0x161, script: 0x57, flags: 0x0}, - 1267: {region: 0x165, script: 0x57, flags: 0x0}, - 1268: {region: 0x12b, script: 0x5f, flags: 0x0}, - 1269: {region: 0x12b, script: 0x60, flags: 0x0}, - 1270: {region: 0x7d, script: 0x2b, flags: 0x0}, - 1271: {region: 0x53, script: 0x64, flags: 0x0}, - 1272: {region: 0x10b, script: 0x69, flags: 0x0}, - 1273: {region: 0x108, script: 0x73, flags: 0x0}, - 1274: {region: 0x99, script: 0x21, flags: 0x0}, - 1275: {region: 0x131, script: 0x57, flags: 0x0}, - 1276: {region: 0x165, script: 0x57, flags: 0x0}, - 1277: {region: 0x9c, script: 0x8a, flags: 0x0}, - 1278: {region: 0x165, script: 0x57, flags: 0x0}, - 1279: {region: 0x15e, script: 0xc2, flags: 0x0}, - 1280: {region: 0x165, script: 0x57, flags: 0x0}, - 1281: {region: 0x165, script: 0x57, flags: 0x0}, - 1282: {region: 0xdb, script: 0x21, flags: 0x0}, - 1283: {region: 0x165, script: 0x57, flags: 0x0}, - 1284: {region: 0x165, script: 0x57, flags: 0x0}, - 1285: {region: 0xd1, script: 0x57, flags: 0x0}, - 1286: {region: 0x75, script: 0x57, flags: 0x0}, - 1287: {region: 0x165, script: 0x57, flags: 0x0}, - 1288: {region: 0x165, script: 0x57, flags: 0x0}, - 1289: {region: 0x52, script: 0x57, flags: 0x0}, - 1290: {region: 0x165, script: 0x57, flags: 0x0}, - 1291: {region: 0x165, script: 0x57, flags: 0x0}, - 1292: {region: 0x165, script: 0x57, flags: 0x0}, - 1293: {region: 0x52, script: 0x57, flags: 0x0}, - 1294: {region: 0x165, script: 0x57, flags: 0x0}, - 1295: {region: 0x165, script: 0x57, flags: 0x0}, - 1296: {region: 0x165, script: 0x57, flags: 0x0}, - 1297: {region: 0x165, script: 0x57, flags: 0x0}, - 1298: {region: 0x1, script: 0x3b, flags: 0x0}, - 1299: {region: 0x165, script: 0x57, flags: 0x0}, - 1300: {region: 0x165, script: 0x57, flags: 0x0}, - 1301: {region: 0x165, script: 0x57, flags: 0x0}, - 1302: {region: 0x165, script: 0x57, flags: 0x0}, - 1303: {region: 0x165, script: 0x57, flags: 0x0}, - 1304: {region: 0xd6, script: 0x57, flags: 0x0}, - 1305: {region: 0x165, script: 0x57, flags: 0x0}, - 1306: {region: 0x165, script: 0x57, flags: 0x0}, - 1307: {region: 0x165, script: 0x57, flags: 0x0}, - 1308: {region: 0x41, script: 0x57, flags: 0x0}, - 1309: {region: 0x165, script: 0x57, flags: 0x0}, - 1310: {region: 0xcf, script: 0x57, flags: 0x0}, + 1265: {region: 0x165, script: 0x5a, flags: 0x0}, + 1266: {region: 0x161, script: 0x5a, flags: 0x0}, + 1267: {region: 0x165, script: 0x5a, flags: 0x0}, + 1268: {region: 0x12b, script: 0x62, flags: 0x0}, + 1269: {region: 0x12b, script: 0x63, flags: 0x0}, + 1270: {region: 0x7d, script: 0x2e, flags: 0x0}, + 1271: {region: 0x53, script: 0x67, flags: 0x0}, + 1272: {region: 0x10b, script: 0x6c, flags: 0x0}, + 1273: {region: 0x108, script: 0x77, flags: 0x0}, + 1274: {region: 0x99, script: 0x22, flags: 0x0}, + 1275: {region: 0x131, script: 0x5a, flags: 0x0}, + 1276: {region: 0x165, script: 0x5a, flags: 0x0}, + 1277: {region: 0x9c, script: 0x8e, flags: 0x0}, + 1278: {region: 0x165, script: 0x5a, flags: 0x0}, + 1279: {region: 0x15e, script: 0xc7, flags: 0x0}, + 1280: {region: 0x165, script: 0x5a, flags: 0x0}, + 1281: {region: 0x165, script: 0x5a, flags: 0x0}, + 1282: {region: 0xdb, script: 0x22, flags: 0x0}, + 1283: {region: 0x165, script: 0x5a, flags: 0x0}, + 1284: {region: 0x165, script: 0x5a, flags: 0x0}, + 1285: {region: 0xd1, script: 0x5a, flags: 0x0}, + 1286: {region: 0x75, script: 0x5a, flags: 0x0}, + 1287: {region: 0x165, script: 0x5a, flags: 0x0}, + 1288: {region: 0x165, script: 0x5a, flags: 0x0}, + 1289: {region: 0x52, script: 0x5a, flags: 0x0}, + 1290: {region: 0x165, script: 0x5a, flags: 0x0}, + 1291: {region: 0x165, script: 0x5a, flags: 0x0}, + 1292: {region: 0x165, script: 0x5a, flags: 0x0}, + 1293: {region: 0x52, script: 0x5a, flags: 0x0}, + 1294: {region: 0x165, script: 0x5a, flags: 0x0}, + 1295: {region: 0x165, script: 0x5a, flags: 0x0}, + 1296: {region: 0x165, script: 0x5a, flags: 0x0}, + 1297: {region: 0x165, script: 0x5a, flags: 0x0}, + 1298: {region: 0x1, script: 0x3e, flags: 0x0}, + 1299: {region: 0x165, script: 0x5a, flags: 0x0}, + 1300: {region: 0x165, script: 0x5a, flags: 0x0}, + 1301: {region: 0x165, script: 0x5a, flags: 0x0}, + 1302: {region: 0x165, script: 0x5a, flags: 0x0}, + 1303: {region: 0x165, script: 0x5a, flags: 0x0}, + 1304: {region: 0xd6, script: 0x5a, flags: 0x0}, + 1305: {region: 0x165, script: 0x5a, flags: 0x0}, + 1306: {region: 0x165, script: 0x5a, flags: 0x0}, + 1307: {region: 0x165, script: 0x5a, flags: 0x0}, + 1308: {region: 0x41, script: 0x5a, flags: 0x0}, + 1309: {region: 0x165, script: 0x5a, flags: 0x0}, + 1310: {region: 0xcf, script: 0x5a, flags: 0x0}, 1311: {region: 0x4a, script: 0x3, flags: 0x1}, - 1312: {region: 0x165, script: 0x57, flags: 0x0}, - 1313: {region: 0x165, script: 0x57, flags: 0x0}, - 1314: {region: 0x165, script: 0x57, flags: 0x0}, - 1315: {region: 0x53, script: 0x57, flags: 0x0}, - 1316: {region: 0x10b, script: 0x57, flags: 0x0}, + 1312: {region: 0x165, script: 0x5a, flags: 0x0}, + 1313: {region: 0x165, script: 0x5a, flags: 0x0}, + 1314: {region: 0x165, script: 0x5a, flags: 0x0}, + 1315: {region: 0x53, script: 0x5a, flags: 0x0}, + 1316: {region: 0x10b, script: 0x5a, flags: 0x0}, 1318: {region: 0xa8, script: 0x5, flags: 0x0}, - 1319: {region: 0xd9, script: 0x57, flags: 0x0}, - 1320: {region: 0xba, script: 0xdc, flags: 0x0}, + 1319: {region: 0xd9, script: 0x5a, flags: 0x0}, + 1320: {region: 0xba, script: 0xe3, flags: 0x0}, 1321: {region: 0x4d, script: 0x14, flags: 0x1}, - 1322: {region: 0x53, script: 0x79, flags: 0x0}, - 1323: {region: 0x165, script: 0x57, flags: 0x0}, - 1324: {region: 0x122, script: 0x57, flags: 0x0}, - 1325: {region: 0xd0, script: 0x57, flags: 0x0}, - 1326: {region: 0x165, script: 0x57, flags: 0x0}, - 1327: {region: 0x161, script: 0x57, flags: 0x0}, - 1329: {region: 0x12b, script: 0x57, flags: 0x0}, + 1322: {region: 0x53, script: 0x7d, flags: 0x0}, + 1323: {region: 0x165, script: 0x5a, flags: 0x0}, + 1324: {region: 0x122, script: 0x5a, flags: 0x0}, + 1325: {region: 0xd0, script: 0x5a, flags: 0x0}, + 1326: {region: 0x165, script: 0x5a, flags: 0x0}, + 1327: {region: 0x161, script: 0x5a, flags: 0x0}, + 1329: {region: 0x12b, script: 0x5a, flags: 0x0}, } // likelyLangList holds lists info associated with likelyLang. // Size: 388 bytes, 97 elements var likelyLangList = [97]likelyScriptRegion{ 0: {region: 0x9c, script: 0x7, flags: 0x0}, - 1: {region: 0xa1, script: 0x74, flags: 0x2}, - 2: {region: 0x11c, script: 0x80, flags: 0x2}, - 3: {region: 0x32, script: 0x57, flags: 0x0}, + 1: {region: 0xa1, script: 0x78, flags: 0x2}, + 2: {region: 0x11c, script: 0x84, flags: 0x2}, + 3: {region: 0x32, script: 0x5a, flags: 0x0}, 4: {region: 0x9b, script: 0x5, flags: 0x4}, 5: {region: 0x9c, script: 0x5, flags: 0x4}, - 6: {region: 0x106, script: 0x1f, flags: 0x4}, + 6: {region: 0x106, script: 0x20, flags: 0x4}, 7: {region: 0x9c, script: 0x5, flags: 0x2}, - 8: {region: 0x106, script: 0x1f, flags: 0x0}, - 9: {region: 0x38, script: 0x2c, flags: 0x2}, - 10: {region: 0x135, script: 0x57, flags: 0x0}, - 11: {region: 0x7b, script: 0xc5, flags: 0x2}, - 12: {region: 0x114, script: 0x57, flags: 0x0}, + 8: {region: 0x106, script: 0x20, flags: 0x0}, + 9: {region: 0x38, script: 0x2f, flags: 0x2}, + 10: {region: 0x135, script: 0x5a, flags: 0x0}, + 11: {region: 0x7b, script: 0xca, flags: 0x2}, + 12: {region: 0x114, script: 0x5a, flags: 0x0}, 13: {region: 0x84, script: 0x1, flags: 0x2}, - 14: {region: 0x5d, script: 0x1e, flags: 0x0}, - 15: {region: 0x87, script: 0x5c, flags: 0x2}, - 16: {region: 0xd6, script: 0x57, flags: 0x0}, + 14: {region: 0x5d, script: 0x1f, flags: 0x0}, + 15: {region: 0x87, script: 0x5f, flags: 0x2}, + 16: {region: 0xd6, script: 0x5a, flags: 0x0}, 17: {region: 0x52, script: 0x5, flags: 0x4}, 18: {region: 0x10b, script: 0x5, flags: 0x4}, - 19: {region: 0xae, script: 0x1f, flags: 0x0}, + 19: {region: 0xae, script: 0x20, flags: 0x0}, 20: {region: 0x24, script: 0x5, flags: 0x4}, 21: {region: 0x53, script: 0x5, flags: 0x4}, 22: {region: 0x9c, script: 0x5, flags: 0x4}, 23: {region: 0xc5, script: 0x5, flags: 0x4}, 24: {region: 0x53, script: 0x5, flags: 0x2}, - 25: {region: 0x12b, script: 0x57, flags: 0x0}, + 25: {region: 0x12b, script: 0x5a, flags: 0x0}, 26: {region: 0xb0, script: 0x5, flags: 0x4}, 27: {region: 0x9b, script: 0x5, flags: 0x2}, - 28: {region: 0xa5, script: 0x1f, flags: 0x0}, + 28: {region: 0xa5, script: 0x20, flags: 0x0}, 29: {region: 0x53, script: 0x5, flags: 0x4}, - 30: {region: 0x12b, script: 0x57, flags: 0x4}, + 30: {region: 0x12b, script: 0x5a, flags: 0x4}, 31: {region: 0x53, script: 0x5, flags: 0x2}, - 32: {region: 0x12b, script: 0x57, flags: 0x2}, - 33: {region: 0xdb, script: 0x21, flags: 0x0}, - 34: {region: 0x99, script: 0x5a, flags: 0x2}, - 35: {region: 0x83, script: 0x57, flags: 0x0}, - 36: {region: 0x84, script: 0x78, flags: 0x4}, - 37: {region: 0x84, script: 0x78, flags: 0x2}, - 38: {region: 0xc5, script: 0x1f, flags: 0x0}, - 39: {region: 0x53, script: 0x6d, flags: 0x4}, - 40: {region: 0x53, script: 0x6d, flags: 0x2}, - 41: {region: 0xd0, script: 0x57, flags: 0x0}, + 32: {region: 0x12b, script: 0x5a, flags: 0x2}, + 33: {region: 0xdb, script: 0x22, flags: 0x0}, + 34: {region: 0x99, script: 0x5d, flags: 0x2}, + 35: {region: 0x83, script: 0x5a, flags: 0x0}, + 36: {region: 0x84, script: 0x7c, flags: 0x4}, + 37: {region: 0x84, script: 0x7c, flags: 0x2}, + 38: {region: 0xc5, script: 0x20, flags: 0x0}, + 39: {region: 0x53, script: 0x70, flags: 0x4}, + 40: {region: 0x53, script: 0x70, flags: 0x2}, + 41: {region: 0xd0, script: 0x5a, flags: 0x0}, 42: {region: 0x4a, script: 0x5, flags: 0x4}, 43: {region: 0x95, script: 0x5, flags: 0x4}, - 44: {region: 0x99, script: 0x33, flags: 0x0}, + 44: {region: 0x99, script: 0x36, flags: 0x0}, 45: {region: 0xe8, script: 0x5, flags: 0x4}, 46: {region: 0xe8, script: 0x5, flags: 0x2}, - 47: {region: 0x9c, script: 0x84, flags: 0x0}, - 48: {region: 0x53, script: 0x85, flags: 0x2}, - 49: {region: 0xba, script: 0xdc, flags: 0x0}, - 50: {region: 0xd9, script: 0x57, flags: 0x4}, + 47: {region: 0x9c, script: 0x88, flags: 0x0}, + 48: {region: 0x53, script: 0x89, flags: 0x2}, + 49: {region: 0xba, script: 0xe3, flags: 0x0}, + 50: {region: 0xd9, script: 0x5a, flags: 0x4}, 51: {region: 0xe8, script: 0x5, flags: 0x0}, - 52: {region: 0x99, script: 0x21, flags: 0x2}, - 53: {region: 0x99, script: 0x4c, flags: 0x2}, - 54: {region: 0x99, script: 0xc9, flags: 0x2}, - 55: {region: 0x105, script: 0x1f, flags: 0x0}, - 56: {region: 0xbd, script: 0x57, flags: 0x4}, - 57: {region: 0x104, script: 0x57, flags: 0x4}, - 58: {region: 0x106, script: 0x57, flags: 0x4}, - 59: {region: 0x12b, script: 0x57, flags: 0x4}, - 60: {region: 0x124, script: 0x1f, flags: 0x0}, + 52: {region: 0x99, script: 0x22, flags: 0x2}, + 53: {region: 0x99, script: 0x4f, flags: 0x2}, + 54: {region: 0x99, script: 0xce, flags: 0x2}, + 55: {region: 0x105, script: 0x20, flags: 0x0}, + 56: {region: 0xbd, script: 0x5a, flags: 0x4}, + 57: {region: 0x104, script: 0x5a, flags: 0x4}, + 58: {region: 0x106, script: 0x5a, flags: 0x4}, + 59: {region: 0x12b, script: 0x5a, flags: 0x4}, + 60: {region: 0x124, script: 0x20, flags: 0x0}, 61: {region: 0xe8, script: 0x5, flags: 0x4}, 62: {region: 0xe8, script: 0x5, flags: 0x2}, 63: {region: 0x53, script: 0x5, flags: 0x0}, - 64: {region: 0xae, script: 0x1f, flags: 0x4}, - 65: {region: 0xc5, script: 0x1f, flags: 0x4}, - 66: {region: 0xae, script: 0x1f, flags: 0x2}, + 64: {region: 0xae, script: 0x20, flags: 0x4}, + 65: {region: 0xc5, script: 0x20, flags: 0x4}, + 66: {region: 0xae, script: 0x20, flags: 0x2}, 67: {region: 0x99, script: 0xe, flags: 0x0}, - 68: {region: 0xdb, script: 0x21, flags: 0x4}, - 69: {region: 0xdb, script: 0x21, flags: 0x2}, - 70: {region: 0x137, script: 0x57, flags: 0x0}, + 68: {region: 0xdb, script: 0x22, flags: 0x4}, + 69: {region: 0xdb, script: 0x22, flags: 0x2}, + 70: {region: 0x137, script: 0x5a, flags: 0x0}, 71: {region: 0x24, script: 0x5, flags: 0x4}, - 72: {region: 0x53, script: 0x1f, flags: 0x4}, + 72: {region: 0x53, script: 0x20, flags: 0x4}, 73: {region: 0x24, script: 0x5, flags: 0x2}, - 74: {region: 0x8d, script: 0x39, flags: 0x0}, - 75: {region: 0x53, script: 0x38, flags: 0x4}, - 76: {region: 0x53, script: 0x38, flags: 0x2}, - 77: {region: 0x53, script: 0x38, flags: 0x0}, - 78: {region: 0x2f, script: 0x39, flags: 0x4}, - 79: {region: 0x3e, script: 0x39, flags: 0x4}, - 80: {region: 0x7b, script: 0x39, flags: 0x4}, - 81: {region: 0x7e, script: 0x39, flags: 0x4}, - 82: {region: 0x8d, script: 0x39, flags: 0x4}, - 83: {region: 0x95, script: 0x39, flags: 0x4}, - 84: {region: 0xc6, script: 0x39, flags: 0x4}, - 85: {region: 0xd0, script: 0x39, flags: 0x4}, - 86: {region: 0xe2, script: 0x39, flags: 0x4}, - 87: {region: 0xe5, script: 0x39, flags: 0x4}, - 88: {region: 0xe7, script: 0x39, flags: 0x4}, - 89: {region: 0x116, script: 0x39, flags: 0x4}, - 90: {region: 0x123, script: 0x39, flags: 0x4}, - 91: {region: 0x12e, script: 0x39, flags: 0x4}, - 92: {region: 0x135, script: 0x39, flags: 0x4}, - 93: {region: 0x13e, script: 0x39, flags: 0x4}, + 74: {region: 0x8d, script: 0x3c, flags: 0x0}, + 75: {region: 0x53, script: 0x3b, flags: 0x4}, + 76: {region: 0x53, script: 0x3b, flags: 0x2}, + 77: {region: 0x53, script: 0x3b, flags: 0x0}, + 78: {region: 0x2f, script: 0x3c, flags: 0x4}, + 79: {region: 0x3e, script: 0x3c, flags: 0x4}, + 80: {region: 0x7b, script: 0x3c, flags: 0x4}, + 81: {region: 0x7e, script: 0x3c, flags: 0x4}, + 82: {region: 0x8d, script: 0x3c, flags: 0x4}, + 83: {region: 0x95, script: 0x3c, flags: 0x4}, + 84: {region: 0xc6, script: 0x3c, flags: 0x4}, + 85: {region: 0xd0, script: 0x3c, flags: 0x4}, + 86: {region: 0xe2, script: 0x3c, flags: 0x4}, + 87: {region: 0xe5, script: 0x3c, flags: 0x4}, + 88: {region: 0xe7, script: 0x3c, flags: 0x4}, + 89: {region: 0x116, script: 0x3c, flags: 0x4}, + 90: {region: 0x123, script: 0x3c, flags: 0x4}, + 91: {region: 0x12e, script: 0x3c, flags: 0x4}, + 92: {region: 0x135, script: 0x3c, flags: 0x4}, + 93: {region: 0x13e, script: 0x3c, flags: 0x4}, 94: {region: 0x12e, script: 0x11, flags: 0x2}, - 95: {region: 0x12e, script: 0x34, flags: 0x2}, - 96: {region: 0x12e, script: 0x39, flags: 0x2}, + 95: {region: 0x12e, script: 0x37, flags: 0x2}, + 96: {region: 0x12e, script: 0x3c, flags: 0x2}, } type likelyLangScript struct { @@ -2948,304 +2981,304 @@ type likelyLangScript struct { // TODO: exclude containers and user-definable regions from the list. // Size: 1432 bytes, 358 elements var likelyRegion = [358]likelyLangScript{ - 34: {lang: 0xd7, script: 0x57, flags: 0x0}, + 34: {lang: 0xd7, script: 0x5a, flags: 0x0}, 35: {lang: 0x3a, script: 0x5, flags: 0x0}, 36: {lang: 0x0, script: 0x2, flags: 0x1}, 39: {lang: 0x2, script: 0x2, flags: 0x1}, 40: {lang: 0x4, script: 0x2, flags: 0x1}, - 42: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 43: {lang: 0x0, script: 0x57, flags: 0x0}, - 44: {lang: 0x13e, script: 0x57, flags: 0x0}, - 45: {lang: 0x41b, script: 0x57, flags: 0x0}, - 46: {lang: 0x10d, script: 0x57, flags: 0x0}, - 48: {lang: 0x367, script: 0x57, flags: 0x0}, - 49: {lang: 0x444, script: 0x57, flags: 0x0}, - 50: {lang: 0x58, script: 0x57, flags: 0x0}, + 42: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 43: {lang: 0x0, script: 0x5a, flags: 0x0}, + 44: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 45: {lang: 0x41b, script: 0x5a, flags: 0x0}, + 46: {lang: 0x10d, script: 0x5a, flags: 0x0}, + 48: {lang: 0x367, script: 0x5a, flags: 0x0}, + 49: {lang: 0x444, script: 0x5a, flags: 0x0}, + 50: {lang: 0x58, script: 0x5a, flags: 0x0}, 51: {lang: 0x6, script: 0x2, flags: 0x1}, 53: {lang: 0xa5, script: 0xe, flags: 0x0}, - 54: {lang: 0x367, script: 0x57, flags: 0x0}, - 55: {lang: 0x15e, script: 0x57, flags: 0x0}, - 56: {lang: 0x7e, script: 0x1f, flags: 0x0}, + 54: {lang: 0x367, script: 0x5a, flags: 0x0}, + 55: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 56: {lang: 0x7e, script: 0x20, flags: 0x0}, 57: {lang: 0x3a, script: 0x5, flags: 0x0}, - 58: {lang: 0x3d9, script: 0x57, flags: 0x0}, - 59: {lang: 0x15e, script: 0x57, flags: 0x0}, - 60: {lang: 0x15e, script: 0x57, flags: 0x0}, - 62: {lang: 0x31f, script: 0x57, flags: 0x0}, - 63: {lang: 0x13e, script: 0x57, flags: 0x0}, - 64: {lang: 0x3a1, script: 0x57, flags: 0x0}, - 65: {lang: 0x3c0, script: 0x57, flags: 0x0}, + 58: {lang: 0x3d9, script: 0x5a, flags: 0x0}, + 59: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 60: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 62: {lang: 0x31f, script: 0x5a, flags: 0x0}, + 63: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 64: {lang: 0x3a1, script: 0x5a, flags: 0x0}, + 65: {lang: 0x3c0, script: 0x5a, flags: 0x0}, 67: {lang: 0x8, script: 0x2, flags: 0x1}, - 69: {lang: 0x0, script: 0x57, flags: 0x0}, - 71: {lang: 0x71, script: 0x1f, flags: 0x0}, - 73: {lang: 0x512, script: 0x3b, flags: 0x2}, + 69: {lang: 0x0, script: 0x5a, flags: 0x0}, + 71: {lang: 0x71, script: 0x20, flags: 0x0}, + 73: {lang: 0x512, script: 0x3e, flags: 0x2}, 74: {lang: 0x31f, script: 0x5, flags: 0x2}, - 75: {lang: 0x445, script: 0x57, flags: 0x0}, - 76: {lang: 0x15e, script: 0x57, flags: 0x0}, - 77: {lang: 0x15e, script: 0x57, flags: 0x0}, - 78: {lang: 0x10d, script: 0x57, flags: 0x0}, - 79: {lang: 0x15e, script: 0x57, flags: 0x0}, - 81: {lang: 0x13e, script: 0x57, flags: 0x0}, - 82: {lang: 0x15e, script: 0x57, flags: 0x0}, + 75: {lang: 0x445, script: 0x5a, flags: 0x0}, + 76: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 77: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 78: {lang: 0x10d, script: 0x5a, flags: 0x0}, + 79: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 81: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 82: {lang: 0x15e, script: 0x5a, flags: 0x0}, 83: {lang: 0xa, script: 0x4, flags: 0x1}, - 84: {lang: 0x13e, script: 0x57, flags: 0x0}, - 85: {lang: 0x0, script: 0x57, flags: 0x0}, - 86: {lang: 0x13e, script: 0x57, flags: 0x0}, - 89: {lang: 0x13e, script: 0x57, flags: 0x0}, - 90: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 91: {lang: 0x3a1, script: 0x57, flags: 0x0}, + 84: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 85: {lang: 0x0, script: 0x5a, flags: 0x0}, + 86: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 89: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 90: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 91: {lang: 0x3a1, script: 0x5a, flags: 0x0}, 93: {lang: 0xe, script: 0x2, flags: 0x1}, - 94: {lang: 0xfa, script: 0x57, flags: 0x0}, - 96: {lang: 0x10d, script: 0x57, flags: 0x0}, - 98: {lang: 0x1, script: 0x57, flags: 0x0}, - 99: {lang: 0x101, script: 0x57, flags: 0x0}, - 101: {lang: 0x13e, script: 0x57, flags: 0x0}, + 94: {lang: 0xfa, script: 0x5a, flags: 0x0}, + 96: {lang: 0x10d, script: 0x5a, flags: 0x0}, + 98: {lang: 0x1, script: 0x5a, flags: 0x0}, + 99: {lang: 0x101, script: 0x5a, flags: 0x0}, + 101: {lang: 0x13e, script: 0x5a, flags: 0x0}, 103: {lang: 0x10, script: 0x2, flags: 0x1}, - 104: {lang: 0x13e, script: 0x57, flags: 0x0}, - 105: {lang: 0x13e, script: 0x57, flags: 0x0}, - 106: {lang: 0x140, script: 0x57, flags: 0x0}, + 104: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 105: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 106: {lang: 0x140, script: 0x5a, flags: 0x0}, 107: {lang: 0x3a, script: 0x5, flags: 0x0}, 108: {lang: 0x3a, script: 0x5, flags: 0x0}, - 109: {lang: 0x46f, script: 0x29, flags: 0x0}, - 110: {lang: 0x13e, script: 0x57, flags: 0x0}, + 109: {lang: 0x46f, script: 0x2c, flags: 0x0}, + 110: {lang: 0x13e, script: 0x5a, flags: 0x0}, 111: {lang: 0x12, script: 0x2, flags: 0x1}, - 113: {lang: 0x10d, script: 0x57, flags: 0x0}, - 114: {lang: 0x151, script: 0x57, flags: 0x0}, - 115: {lang: 0x1c0, script: 0x21, flags: 0x2}, - 118: {lang: 0x158, script: 0x57, flags: 0x0}, - 120: {lang: 0x15e, script: 0x57, flags: 0x0}, - 122: {lang: 0x15e, script: 0x57, flags: 0x0}, + 113: {lang: 0x10d, script: 0x5a, flags: 0x0}, + 114: {lang: 0x151, script: 0x5a, flags: 0x0}, + 115: {lang: 0x1c0, script: 0x22, flags: 0x2}, + 118: {lang: 0x158, script: 0x5a, flags: 0x0}, + 120: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 122: {lang: 0x15e, script: 0x5a, flags: 0x0}, 123: {lang: 0x14, script: 0x2, flags: 0x1}, 125: {lang: 0x16, script: 0x3, flags: 0x1}, - 126: {lang: 0x15e, script: 0x57, flags: 0x0}, - 128: {lang: 0x21, script: 0x57, flags: 0x0}, - 130: {lang: 0x245, script: 0x57, flags: 0x0}, - 132: {lang: 0x15e, script: 0x57, flags: 0x0}, - 133: {lang: 0x15e, script: 0x57, flags: 0x0}, - 134: {lang: 0x13e, script: 0x57, flags: 0x0}, + 126: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 128: {lang: 0x21, script: 0x5a, flags: 0x0}, + 130: {lang: 0x245, script: 0x5a, flags: 0x0}, + 132: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 133: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 134: {lang: 0x13e, script: 0x5a, flags: 0x0}, 135: {lang: 0x19, script: 0x2, flags: 0x1}, - 136: {lang: 0x0, script: 0x57, flags: 0x0}, - 137: {lang: 0x13e, script: 0x57, flags: 0x0}, - 139: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 141: {lang: 0x529, script: 0x39, flags: 0x0}, - 142: {lang: 0x0, script: 0x57, flags: 0x0}, - 143: {lang: 0x13e, script: 0x57, flags: 0x0}, - 144: {lang: 0x1d1, script: 0x57, flags: 0x0}, - 145: {lang: 0x1d4, script: 0x57, flags: 0x0}, - 146: {lang: 0x1d5, script: 0x57, flags: 0x0}, - 148: {lang: 0x13e, script: 0x57, flags: 0x0}, + 136: {lang: 0x0, script: 0x5a, flags: 0x0}, + 137: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 139: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 141: {lang: 0x529, script: 0x3c, flags: 0x0}, + 142: {lang: 0x0, script: 0x5a, flags: 0x0}, + 143: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 144: {lang: 0x1d1, script: 0x5a, flags: 0x0}, + 145: {lang: 0x1d4, script: 0x5a, flags: 0x0}, + 146: {lang: 0x1d5, script: 0x5a, flags: 0x0}, + 148: {lang: 0x13e, script: 0x5a, flags: 0x0}, 149: {lang: 0x1b, script: 0x2, flags: 0x1}, - 151: {lang: 0x1bc, script: 0x3b, flags: 0x0}, + 151: {lang: 0x1bc, script: 0x3e, flags: 0x0}, 153: {lang: 0x1d, script: 0x3, flags: 0x1}, 155: {lang: 0x3a, script: 0x5, flags: 0x0}, 156: {lang: 0x20, script: 0x2, flags: 0x1}, - 157: {lang: 0x1f8, script: 0x57, flags: 0x0}, - 158: {lang: 0x1f9, script: 0x57, flags: 0x0}, + 157: {lang: 0x1f8, script: 0x5a, flags: 0x0}, + 158: {lang: 0x1f9, script: 0x5a, flags: 0x0}, 161: {lang: 0x3a, script: 0x5, flags: 0x0}, - 162: {lang: 0x200, script: 0x46, flags: 0x0}, - 164: {lang: 0x445, script: 0x57, flags: 0x0}, - 165: {lang: 0x28a, script: 0x1f, flags: 0x0}, + 162: {lang: 0x200, script: 0x49, flags: 0x0}, + 164: {lang: 0x445, script: 0x5a, flags: 0x0}, + 165: {lang: 0x28a, script: 0x20, flags: 0x0}, 166: {lang: 0x22, script: 0x3, flags: 0x1}, 168: {lang: 0x25, script: 0x2, flags: 0x1}, - 170: {lang: 0x254, script: 0x50, flags: 0x0}, - 171: {lang: 0x254, script: 0x50, flags: 0x0}, + 170: {lang: 0x254, script: 0x53, flags: 0x0}, + 171: {lang: 0x254, script: 0x53, flags: 0x0}, 172: {lang: 0x3a, script: 0x5, flags: 0x0}, - 174: {lang: 0x3e2, script: 0x1f, flags: 0x0}, + 174: {lang: 0x3e2, script: 0x20, flags: 0x0}, 175: {lang: 0x27, script: 0x2, flags: 0x1}, 176: {lang: 0x3a, script: 0x5, flags: 0x0}, - 178: {lang: 0x10d, script: 0x57, flags: 0x0}, - 179: {lang: 0x40c, script: 0xca, flags: 0x0}, - 181: {lang: 0x43b, script: 0x57, flags: 0x0}, - 182: {lang: 0x2c0, script: 0x57, flags: 0x0}, - 183: {lang: 0x15e, script: 0x57, flags: 0x0}, - 184: {lang: 0x2c7, script: 0x57, flags: 0x0}, + 178: {lang: 0x10d, script: 0x5a, flags: 0x0}, + 179: {lang: 0x40c, script: 0xcf, flags: 0x0}, + 181: {lang: 0x43b, script: 0x5a, flags: 0x0}, + 182: {lang: 0x2c0, script: 0x5a, flags: 0x0}, + 183: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 184: {lang: 0x2c7, script: 0x5a, flags: 0x0}, 185: {lang: 0x3a, script: 0x5, flags: 0x0}, 186: {lang: 0x29, script: 0x2, flags: 0x1}, - 187: {lang: 0x15e, script: 0x57, flags: 0x0}, + 187: {lang: 0x15e, script: 0x5a, flags: 0x0}, 188: {lang: 0x2b, script: 0x2, flags: 0x1}, - 189: {lang: 0x432, script: 0x57, flags: 0x0}, - 190: {lang: 0x15e, script: 0x57, flags: 0x0}, - 191: {lang: 0x2f1, script: 0x57, flags: 0x0}, + 189: {lang: 0x432, script: 0x5a, flags: 0x0}, + 190: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 191: {lang: 0x2f1, script: 0x5a, flags: 0x0}, 194: {lang: 0x2d, script: 0x2, flags: 0x1}, - 195: {lang: 0xa0, script: 0x57, flags: 0x0}, + 195: {lang: 0xa0, script: 0x5a, flags: 0x0}, 196: {lang: 0x2f, script: 0x2, flags: 0x1}, 197: {lang: 0x31, script: 0x2, flags: 0x1}, 198: {lang: 0x33, script: 0x2, flags: 0x1}, - 200: {lang: 0x15e, script: 0x57, flags: 0x0}, + 200: {lang: 0x15e, script: 0x5a, flags: 0x0}, 201: {lang: 0x35, script: 0x2, flags: 0x1}, - 203: {lang: 0x320, script: 0x57, flags: 0x0}, + 203: {lang: 0x320, script: 0x5a, flags: 0x0}, 204: {lang: 0x37, script: 0x3, flags: 0x1}, - 205: {lang: 0x128, script: 0xde, flags: 0x0}, - 207: {lang: 0x13e, script: 0x57, flags: 0x0}, - 208: {lang: 0x31f, script: 0x57, flags: 0x0}, - 209: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 210: {lang: 0x16, script: 0x57, flags: 0x0}, - 211: {lang: 0x15e, script: 0x57, flags: 0x0}, - 212: {lang: 0x1b4, script: 0x57, flags: 0x0}, + 205: {lang: 0x128, script: 0xe5, flags: 0x0}, + 207: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 208: {lang: 0x31f, script: 0x5a, flags: 0x0}, + 209: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 210: {lang: 0x16, script: 0x5a, flags: 0x0}, + 211: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 212: {lang: 0x1b4, script: 0x5a, flags: 0x0}, 214: {lang: 0x1b4, script: 0x5, flags: 0x2}, - 216: {lang: 0x13e, script: 0x57, flags: 0x0}, - 217: {lang: 0x367, script: 0x57, flags: 0x0}, - 218: {lang: 0x347, script: 0x57, flags: 0x0}, - 219: {lang: 0x351, script: 0x21, flags: 0x0}, + 216: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 217: {lang: 0x367, script: 0x5a, flags: 0x0}, + 218: {lang: 0x347, script: 0x5a, flags: 0x0}, + 219: {lang: 0x351, script: 0x22, flags: 0x0}, 225: {lang: 0x3a, script: 0x5, flags: 0x0}, - 226: {lang: 0x13e, script: 0x57, flags: 0x0}, - 228: {lang: 0x13e, script: 0x57, flags: 0x0}, - 229: {lang: 0x15e, script: 0x57, flags: 0x0}, - 230: {lang: 0x486, script: 0x57, flags: 0x0}, - 231: {lang: 0x153, script: 0x57, flags: 0x0}, + 226: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 228: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 229: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 230: {lang: 0x486, script: 0x5a, flags: 0x0}, + 231: {lang: 0x153, script: 0x5a, flags: 0x0}, 232: {lang: 0x3a, script: 0x3, flags: 0x1}, - 233: {lang: 0x3b3, script: 0x57, flags: 0x0}, - 234: {lang: 0x15e, script: 0x57, flags: 0x0}, - 236: {lang: 0x13e, script: 0x57, flags: 0x0}, + 233: {lang: 0x3b3, script: 0x5a, flags: 0x0}, + 234: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 236: {lang: 0x13e, script: 0x5a, flags: 0x0}, 237: {lang: 0x3a, script: 0x5, flags: 0x0}, - 238: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 240: {lang: 0x3a2, script: 0x57, flags: 0x0}, - 241: {lang: 0x194, script: 0x57, flags: 0x0}, + 238: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 240: {lang: 0x3a2, script: 0x5a, flags: 0x0}, + 241: {lang: 0x194, script: 0x5a, flags: 0x0}, 243: {lang: 0x3a, script: 0x5, flags: 0x0}, - 258: {lang: 0x15e, script: 0x57, flags: 0x0}, + 258: {lang: 0x15e, script: 0x5a, flags: 0x0}, 260: {lang: 0x3d, script: 0x2, flags: 0x1}, - 261: {lang: 0x432, script: 0x1f, flags: 0x0}, + 261: {lang: 0x432, script: 0x20, flags: 0x0}, 262: {lang: 0x3f, script: 0x2, flags: 0x1}, - 263: {lang: 0x3e5, script: 0x57, flags: 0x0}, + 263: {lang: 0x3e5, script: 0x5a, flags: 0x0}, 264: {lang: 0x3a, script: 0x5, flags: 0x0}, - 266: {lang: 0x15e, script: 0x57, flags: 0x0}, + 266: {lang: 0x15e, script: 0x5a, flags: 0x0}, 267: {lang: 0x3a, script: 0x5, flags: 0x0}, 268: {lang: 0x41, script: 0x2, flags: 0x1}, - 271: {lang: 0x416, script: 0x57, flags: 0x0}, - 272: {lang: 0x347, script: 0x57, flags: 0x0}, + 271: {lang: 0x416, script: 0x5a, flags: 0x0}, + 272: {lang: 0x347, script: 0x5a, flags: 0x0}, 273: {lang: 0x43, script: 0x2, flags: 0x1}, - 275: {lang: 0x1f9, script: 0x57, flags: 0x0}, - 276: {lang: 0x15e, script: 0x57, flags: 0x0}, - 277: {lang: 0x429, script: 0x57, flags: 0x0}, - 278: {lang: 0x367, script: 0x57, flags: 0x0}, - 280: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 282: {lang: 0x13e, script: 0x57, flags: 0x0}, + 275: {lang: 0x1f9, script: 0x5a, flags: 0x0}, + 276: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 277: {lang: 0x429, script: 0x5a, flags: 0x0}, + 278: {lang: 0x367, script: 0x5a, flags: 0x0}, + 280: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 282: {lang: 0x13e, script: 0x5a, flags: 0x0}, 284: {lang: 0x45, script: 0x2, flags: 0x1}, - 288: {lang: 0x15e, script: 0x57, flags: 0x0}, - 289: {lang: 0x15e, script: 0x57, flags: 0x0}, + 288: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 289: {lang: 0x15e, script: 0x5a, flags: 0x0}, 290: {lang: 0x47, script: 0x2, flags: 0x1}, 291: {lang: 0x49, script: 0x3, flags: 0x1}, 292: {lang: 0x4c, script: 0x2, flags: 0x1}, - 293: {lang: 0x477, script: 0x57, flags: 0x0}, - 294: {lang: 0x3c0, script: 0x57, flags: 0x0}, - 295: {lang: 0x476, script: 0x57, flags: 0x0}, + 293: {lang: 0x477, script: 0x5a, flags: 0x0}, + 294: {lang: 0x3c0, script: 0x5a, flags: 0x0}, + 295: {lang: 0x476, script: 0x5a, flags: 0x0}, 296: {lang: 0x4e, script: 0x2, flags: 0x1}, - 297: {lang: 0x482, script: 0x57, flags: 0x0}, + 297: {lang: 0x482, script: 0x5a, flags: 0x0}, 299: {lang: 0x50, script: 0x4, flags: 0x1}, - 301: {lang: 0x4a0, script: 0x57, flags: 0x0}, + 301: {lang: 0x4a0, script: 0x5a, flags: 0x0}, 302: {lang: 0x54, script: 0x2, flags: 0x1}, - 303: {lang: 0x445, script: 0x57, flags: 0x0}, + 303: {lang: 0x445, script: 0x5a, flags: 0x0}, 304: {lang: 0x56, script: 0x3, flags: 0x1}, - 305: {lang: 0x445, script: 0x57, flags: 0x0}, - 309: {lang: 0x512, script: 0x3b, flags: 0x2}, - 310: {lang: 0x13e, script: 0x57, flags: 0x0}, - 311: {lang: 0x4bc, script: 0x57, flags: 0x0}, - 312: {lang: 0x1f9, script: 0x57, flags: 0x0}, - 315: {lang: 0x13e, script: 0x57, flags: 0x0}, - 318: {lang: 0x4c3, script: 0x57, flags: 0x0}, - 319: {lang: 0x8a, script: 0x57, flags: 0x0}, - 320: {lang: 0x15e, script: 0x57, flags: 0x0}, - 322: {lang: 0x41b, script: 0x57, flags: 0x0}, + 305: {lang: 0x445, script: 0x5a, flags: 0x0}, + 309: {lang: 0x512, script: 0x3e, flags: 0x2}, + 310: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 311: {lang: 0x4bc, script: 0x5a, flags: 0x0}, + 312: {lang: 0x1f9, script: 0x5a, flags: 0x0}, + 315: {lang: 0x13e, script: 0x5a, flags: 0x0}, + 318: {lang: 0x4c3, script: 0x5a, flags: 0x0}, + 319: {lang: 0x8a, script: 0x5a, flags: 0x0}, + 320: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 322: {lang: 0x41b, script: 0x5a, flags: 0x0}, 333: {lang: 0x59, script: 0x2, flags: 0x1}, 350: {lang: 0x3a, script: 0x5, flags: 0x0}, 351: {lang: 0x5b, script: 0x2, flags: 0x1}, - 356: {lang: 0x423, script: 0x57, flags: 0x0}, + 356: {lang: 0x423, script: 0x5a, flags: 0x0}, } // likelyRegionList holds lists info associated with likelyRegion. // Size: 372 bytes, 93 elements var likelyRegionList = [93]likelyLangScript{ 0: {lang: 0x148, script: 0x5, flags: 0x0}, - 1: {lang: 0x476, script: 0x57, flags: 0x0}, - 2: {lang: 0x431, script: 0x57, flags: 0x0}, - 3: {lang: 0x2ff, script: 0x1f, flags: 0x0}, + 1: {lang: 0x476, script: 0x5a, flags: 0x0}, + 2: {lang: 0x431, script: 0x5a, flags: 0x0}, + 3: {lang: 0x2ff, script: 0x20, flags: 0x0}, 4: {lang: 0x1d7, script: 0x8, flags: 0x0}, - 5: {lang: 0x274, script: 0x57, flags: 0x0}, - 6: {lang: 0xb7, script: 0x57, flags: 0x0}, - 7: {lang: 0x432, script: 0x1f, flags: 0x0}, - 8: {lang: 0x12d, script: 0xe0, flags: 0x0}, - 9: {lang: 0x351, script: 0x21, flags: 0x0}, - 10: {lang: 0x529, script: 0x38, flags: 0x0}, + 5: {lang: 0x274, script: 0x5a, flags: 0x0}, + 6: {lang: 0xb7, script: 0x5a, flags: 0x0}, + 7: {lang: 0x432, script: 0x20, flags: 0x0}, + 8: {lang: 0x12d, script: 0xe7, flags: 0x0}, + 9: {lang: 0x351, script: 0x22, flags: 0x0}, + 10: {lang: 0x529, script: 0x3b, flags: 0x0}, 11: {lang: 0x4ac, script: 0x5, flags: 0x0}, - 12: {lang: 0x523, script: 0x57, flags: 0x0}, - 13: {lang: 0x29a, script: 0xdf, flags: 0x0}, - 14: {lang: 0x136, script: 0x31, flags: 0x0}, - 15: {lang: 0x48a, script: 0x57, flags: 0x0}, + 12: {lang: 0x523, script: 0x5a, flags: 0x0}, + 13: {lang: 0x29a, script: 0xe6, flags: 0x0}, + 14: {lang: 0x136, script: 0x34, flags: 0x0}, + 15: {lang: 0x48a, script: 0x5a, flags: 0x0}, 16: {lang: 0x3a, script: 0x5, flags: 0x0}, - 17: {lang: 0x15e, script: 0x57, flags: 0x0}, - 18: {lang: 0x27, script: 0x29, flags: 0x0}, - 19: {lang: 0x139, script: 0x57, flags: 0x0}, + 17: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 18: {lang: 0x27, script: 0x2c, flags: 0x0}, + 19: {lang: 0x139, script: 0x5a, flags: 0x0}, 20: {lang: 0x26a, script: 0x5, flags: 0x2}, - 21: {lang: 0x512, script: 0x3b, flags: 0x2}, - 22: {lang: 0x210, script: 0x2b, flags: 0x0}, - 23: {lang: 0x5, script: 0x1f, flags: 0x0}, - 24: {lang: 0x274, script: 0x57, flags: 0x0}, - 25: {lang: 0x136, script: 0x31, flags: 0x0}, - 26: {lang: 0x2ff, script: 0x1f, flags: 0x0}, - 27: {lang: 0x1e1, script: 0x57, flags: 0x0}, + 21: {lang: 0x512, script: 0x3e, flags: 0x2}, + 22: {lang: 0x210, script: 0x2e, flags: 0x0}, + 23: {lang: 0x5, script: 0x20, flags: 0x0}, + 24: {lang: 0x274, script: 0x5a, flags: 0x0}, + 25: {lang: 0x136, script: 0x34, flags: 0x0}, + 26: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 27: {lang: 0x1e1, script: 0x5a, flags: 0x0}, 28: {lang: 0x31f, script: 0x5, flags: 0x0}, - 29: {lang: 0x1be, script: 0x21, flags: 0x0}, + 29: {lang: 0x1be, script: 0x22, flags: 0x0}, 30: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 31: {lang: 0x236, script: 0x72, flags: 0x0}, + 31: {lang: 0x236, script: 0x75, flags: 0x0}, 32: {lang: 0x148, script: 0x5, flags: 0x0}, - 33: {lang: 0x476, script: 0x57, flags: 0x0}, - 34: {lang: 0x24a, script: 0x4b, flags: 0x0}, + 33: {lang: 0x476, script: 0x5a, flags: 0x0}, + 34: {lang: 0x24a, script: 0x4e, flags: 0x0}, 35: {lang: 0xe6, script: 0x5, flags: 0x0}, - 36: {lang: 0x226, script: 0xdf, flags: 0x0}, + 36: {lang: 0x226, script: 0xe6, flags: 0x0}, 37: {lang: 0x3a, script: 0x5, flags: 0x0}, - 38: {lang: 0x15e, script: 0x57, flags: 0x0}, - 39: {lang: 0x2b8, script: 0x54, flags: 0x0}, - 40: {lang: 0x226, script: 0xdf, flags: 0x0}, + 38: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 39: {lang: 0x2b8, script: 0x57, flags: 0x0}, + 40: {lang: 0x226, script: 0xe6, flags: 0x0}, 41: {lang: 0x3a, script: 0x5, flags: 0x0}, - 42: {lang: 0x15e, script: 0x57, flags: 0x0}, - 43: {lang: 0x3dc, script: 0x57, flags: 0x0}, - 44: {lang: 0x4ae, script: 0x1f, flags: 0x0}, - 45: {lang: 0x2ff, script: 0x1f, flags: 0x0}, - 46: {lang: 0x431, script: 0x57, flags: 0x0}, - 47: {lang: 0x331, script: 0x72, flags: 0x0}, - 48: {lang: 0x213, script: 0x57, flags: 0x0}, - 49: {lang: 0x30b, script: 0x1f, flags: 0x0}, + 42: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 43: {lang: 0x3dc, script: 0x5a, flags: 0x0}, + 44: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 45: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 46: {lang: 0x431, script: 0x5a, flags: 0x0}, + 47: {lang: 0x331, script: 0x75, flags: 0x0}, + 48: {lang: 0x213, script: 0x5a, flags: 0x0}, + 49: {lang: 0x30b, script: 0x20, flags: 0x0}, 50: {lang: 0x242, script: 0x5, flags: 0x0}, - 51: {lang: 0x529, script: 0x39, flags: 0x0}, - 52: {lang: 0x3c0, script: 0x57, flags: 0x0}, + 51: {lang: 0x529, script: 0x3c, flags: 0x0}, + 52: {lang: 0x3c0, script: 0x5a, flags: 0x0}, 53: {lang: 0x3a, script: 0x5, flags: 0x0}, - 54: {lang: 0x15e, script: 0x57, flags: 0x0}, - 55: {lang: 0x2ed, script: 0x57, flags: 0x0}, + 54: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 55: {lang: 0x2ed, script: 0x5a, flags: 0x0}, 56: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 57: {lang: 0x88, script: 0x21, flags: 0x0}, + 57: {lang: 0x88, script: 0x22, flags: 0x0}, 58: {lang: 0x4b4, script: 0x5, flags: 0x0}, 59: {lang: 0x4b4, script: 0x5, flags: 0x0}, - 60: {lang: 0xbe, script: 0x21, flags: 0x0}, - 61: {lang: 0x3dc, script: 0x57, flags: 0x0}, - 62: {lang: 0x7e, script: 0x1f, flags: 0x0}, - 63: {lang: 0x3e2, script: 0x1f, flags: 0x0}, - 64: {lang: 0x267, script: 0x57, flags: 0x0}, - 65: {lang: 0x444, script: 0x57, flags: 0x0}, - 66: {lang: 0x512, script: 0x3b, flags: 0x0}, - 67: {lang: 0x412, script: 0x57, flags: 0x0}, - 68: {lang: 0x4ae, script: 0x1f, flags: 0x0}, + 60: {lang: 0xbe, script: 0x22, flags: 0x0}, + 61: {lang: 0x3dc, script: 0x5a, flags: 0x0}, + 62: {lang: 0x7e, script: 0x20, flags: 0x0}, + 63: {lang: 0x3e2, script: 0x20, flags: 0x0}, + 64: {lang: 0x267, script: 0x5a, flags: 0x0}, + 65: {lang: 0x444, script: 0x5a, flags: 0x0}, + 66: {lang: 0x512, script: 0x3e, flags: 0x0}, + 67: {lang: 0x412, script: 0x5a, flags: 0x0}, + 68: {lang: 0x4ae, script: 0x20, flags: 0x0}, 69: {lang: 0x3a, script: 0x5, flags: 0x0}, - 70: {lang: 0x15e, script: 0x57, flags: 0x0}, - 71: {lang: 0x15e, script: 0x57, flags: 0x0}, + 70: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 71: {lang: 0x15e, script: 0x5a, flags: 0x0}, 72: {lang: 0x35, script: 0x5, flags: 0x0}, - 73: {lang: 0x46b, script: 0xdf, flags: 0x0}, + 73: {lang: 0x46b, script: 0xe6, flags: 0x0}, 74: {lang: 0x2ec, script: 0x5, flags: 0x0}, - 75: {lang: 0x30f, script: 0x72, flags: 0x0}, - 76: {lang: 0x467, script: 0x1f, flags: 0x0}, + 75: {lang: 0x30f, script: 0x75, flags: 0x0}, + 76: {lang: 0x467, script: 0x20, flags: 0x0}, 77: {lang: 0x148, script: 0x5, flags: 0x0}, 78: {lang: 0x3a, script: 0x5, flags: 0x0}, - 79: {lang: 0x15e, script: 0x57, flags: 0x0}, - 80: {lang: 0x48a, script: 0x57, flags: 0x0}, + 79: {lang: 0x15e, script: 0x5a, flags: 0x0}, + 80: {lang: 0x48a, script: 0x5a, flags: 0x0}, 81: {lang: 0x58, script: 0x5, flags: 0x0}, - 82: {lang: 0x219, script: 0x1f, flags: 0x0}, - 83: {lang: 0x81, script: 0x31, flags: 0x0}, - 84: {lang: 0x529, script: 0x39, flags: 0x0}, - 85: {lang: 0x48c, script: 0x57, flags: 0x0}, - 86: {lang: 0x4ae, script: 0x1f, flags: 0x0}, - 87: {lang: 0x512, script: 0x3b, flags: 0x0}, - 88: {lang: 0x3b3, script: 0x57, flags: 0x0}, - 89: {lang: 0x431, script: 0x57, flags: 0x0}, - 90: {lang: 0x432, script: 0x1f, flags: 0x0}, - 91: {lang: 0x15e, script: 0x57, flags: 0x0}, + 82: {lang: 0x219, script: 0x20, flags: 0x0}, + 83: {lang: 0x81, script: 0x34, flags: 0x0}, + 84: {lang: 0x529, script: 0x3c, flags: 0x0}, + 85: {lang: 0x48c, script: 0x5a, flags: 0x0}, + 86: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 87: {lang: 0x512, script: 0x3e, flags: 0x0}, + 88: {lang: 0x3b3, script: 0x5a, flags: 0x0}, + 89: {lang: 0x431, script: 0x5a, flags: 0x0}, + 90: {lang: 0x432, script: 0x20, flags: 0x0}, + 91: {lang: 0x15e, script: 0x5a, flags: 0x0}, 92: {lang: 0x446, script: 0x5, flags: 0x0}, } @@ -3257,38 +3290,38 @@ type likelyTag struct { // Size: 198 bytes, 33 elements var likelyRegionGroup = [33]likelyTag{ - 1: {lang: 0x139, region: 0xd6, script: 0x57}, - 2: {lang: 0x139, region: 0x135, script: 0x57}, - 3: {lang: 0x3c0, region: 0x41, script: 0x57}, - 4: {lang: 0x139, region: 0x2f, script: 0x57}, - 5: {lang: 0x139, region: 0xd6, script: 0x57}, - 6: {lang: 0x13e, region: 0xcf, script: 0x57}, - 7: {lang: 0x445, region: 0x12f, script: 0x57}, + 1: {lang: 0x139, region: 0xd6, script: 0x5a}, + 2: {lang: 0x139, region: 0x135, script: 0x5a}, + 3: {lang: 0x3c0, region: 0x41, script: 0x5a}, + 4: {lang: 0x139, region: 0x2f, script: 0x5a}, + 5: {lang: 0x139, region: 0xd6, script: 0x5a}, + 6: {lang: 0x13e, region: 0xcf, script: 0x5a}, + 7: {lang: 0x445, region: 0x12f, script: 0x5a}, 8: {lang: 0x3a, region: 0x6b, script: 0x5}, - 9: {lang: 0x445, region: 0x4b, script: 0x57}, - 10: {lang: 0x139, region: 0x161, script: 0x57}, - 11: {lang: 0x139, region: 0x135, script: 0x57}, - 12: {lang: 0x139, region: 0x135, script: 0x57}, - 13: {lang: 0x13e, region: 0x59, script: 0x57}, - 14: {lang: 0x529, region: 0x53, script: 0x38}, - 15: {lang: 0x1be, region: 0x99, script: 0x21}, - 16: {lang: 0x1e1, region: 0x95, script: 0x57}, - 17: {lang: 0x1f9, region: 0x9e, script: 0x57}, - 18: {lang: 0x139, region: 0x2f, script: 0x57}, - 19: {lang: 0x139, region: 0xe6, script: 0x57}, - 20: {lang: 0x139, region: 0x8a, script: 0x57}, - 21: {lang: 0x41b, region: 0x142, script: 0x57}, - 22: {lang: 0x529, region: 0x53, script: 0x38}, - 23: {lang: 0x4bc, region: 0x137, script: 0x57}, + 9: {lang: 0x445, region: 0x4b, script: 0x5a}, + 10: {lang: 0x139, region: 0x161, script: 0x5a}, + 11: {lang: 0x139, region: 0x135, script: 0x5a}, + 12: {lang: 0x139, region: 0x135, script: 0x5a}, + 13: {lang: 0x13e, region: 0x59, script: 0x5a}, + 14: {lang: 0x529, region: 0x53, script: 0x3b}, + 15: {lang: 0x1be, region: 0x99, script: 0x22}, + 16: {lang: 0x1e1, region: 0x95, script: 0x5a}, + 17: {lang: 0x1f9, region: 0x9e, script: 0x5a}, + 18: {lang: 0x139, region: 0x2f, script: 0x5a}, + 19: {lang: 0x139, region: 0xe6, script: 0x5a}, + 20: {lang: 0x139, region: 0x8a, script: 0x5a}, + 21: {lang: 0x41b, region: 0x142, script: 0x5a}, + 22: {lang: 0x529, region: 0x53, script: 0x3b}, + 23: {lang: 0x4bc, region: 0x137, script: 0x5a}, 24: {lang: 0x3a, region: 0x108, script: 0x5}, - 25: {lang: 0x3e2, region: 0x106, script: 0x1f}, - 26: {lang: 0x3e2, region: 0x106, script: 0x1f}, - 27: {lang: 0x139, region: 0x7b, script: 0x57}, - 28: {lang: 0x10d, region: 0x60, script: 0x57}, - 29: {lang: 0x139, region: 0xd6, script: 0x57}, - 30: {lang: 0x13e, region: 0x1f, script: 0x57}, - 31: {lang: 0x139, region: 0x9a, script: 0x57}, - 32: {lang: 0x139, region: 0x7b, script: 0x57}, + 25: {lang: 0x3e2, region: 0x106, script: 0x20}, + 26: {lang: 0x3e2, region: 0x106, script: 0x20}, + 27: {lang: 0x139, region: 0x7b, script: 0x5a}, + 28: {lang: 0x10d, region: 0x60, script: 0x5a}, + 29: {lang: 0x139, region: 0xd6, script: 0x5a}, + 30: {lang: 0x13e, region: 0x1f, script: 0x5a}, + 31: {lang: 0x139, region: 0x9a, script: 0x5a}, + 32: {lang: 0x139, region: 0x7b, script: 0x5a}, } // Size: 264 bytes, 33 elements @@ -3421,11 +3454,11 @@ type parentRel struct { // Size: 414 bytes, 5 elements var parents = [5]parentRel{ - 0: {lang: 0x139, script: 0x0, maxScript: 0x57, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5c, 0x5d, 0x61, 0x64, 0x6d, 0x73, 0x74, 0x75, 0x7b, 0x7c, 0x7f, 0x80, 0x81, 0x83, 0x8c, 0x8d, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9f, 0xa0, 0xa4, 0xa7, 0xa9, 0xad, 0xb1, 0xb4, 0xb5, 0xbf, 0xc6, 0xca, 0xcb, 0xcc, 0xce, 0xd0, 0xd2, 0xd5, 0xd6, 0xdd, 0xdf, 0xe0, 0xe6, 0xe7, 0xe8, 0xeb, 0xf0, 0x107, 0x109, 0x10a, 0x10b, 0x10d, 0x10e, 0x112, 0x117, 0x11b, 0x11d, 0x11f, 0x125, 0x129, 0x12c, 0x12d, 0x12f, 0x131, 0x139, 0x13c, 0x13f, 0x142, 0x161, 0x162, 0x164}}, - 1: {lang: 0x139, script: 0x0, maxScript: 0x57, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x60, 0x63, 0x72, 0xd9, 0x10c, 0x10f}}, - 2: {lang: 0x13e, script: 0x0, maxScript: 0x57, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x56, 0x59, 0x65, 0x69, 0x89, 0x8f, 0xcf, 0xd8, 0xe2, 0xe4, 0xec, 0xf1, 0x11a, 0x135, 0x136, 0x13b}}, - 3: {lang: 0x3c0, script: 0x0, maxScript: 0x57, toRegion: 0xee, fromRegion: []uint16{0x2a, 0x4e, 0x5a, 0x86, 0x8b, 0xb7, 0xc6, 0xd1, 0x118, 0x126}}, - 4: {lang: 0x529, script: 0x39, maxScript: 0x39, toRegion: 0x8d, fromRegion: []uint16{0xc6}}, + 0: {lang: 0x139, script: 0x0, maxScript: 0x5a, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5c, 0x5d, 0x61, 0x64, 0x6d, 0x73, 0x74, 0x75, 0x7b, 0x7c, 0x7f, 0x80, 0x81, 0x83, 0x8c, 0x8d, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9f, 0xa0, 0xa4, 0xa7, 0xa9, 0xad, 0xb1, 0xb4, 0xb5, 0xbf, 0xc6, 0xca, 0xcb, 0xcc, 0xce, 0xd0, 0xd2, 0xd5, 0xd6, 0xdd, 0xdf, 0xe0, 0xe6, 0xe7, 0xe8, 0xeb, 0xf0, 0x107, 0x109, 0x10a, 0x10b, 0x10d, 0x10e, 0x112, 0x117, 0x11b, 0x11d, 0x11f, 0x125, 0x129, 0x12c, 0x12d, 0x12f, 0x131, 0x139, 0x13c, 0x13f, 0x142, 0x161, 0x162, 0x164}}, + 1: {lang: 0x139, script: 0x0, maxScript: 0x5a, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x60, 0x63, 0x72, 0xd9, 0x10c, 0x10f}}, + 2: {lang: 0x13e, script: 0x0, maxScript: 0x5a, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x56, 0x59, 0x65, 0x69, 0x89, 0x8f, 0xcf, 0xd8, 0xe2, 0xe4, 0xec, 0xf1, 0x11a, 0x135, 0x136, 0x13b}}, + 3: {lang: 0x3c0, script: 0x0, maxScript: 0x5a, toRegion: 0xee, fromRegion: []uint16{0x2a, 0x4e, 0x5a, 0x86, 0x8b, 0xb7, 0xc6, 0xd1, 0x118, 0x126}}, + 4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8d, fromRegion: []uint16{0xc6}}, } -// Total table size 25886 bytes (25KiB); checksum: 50D3D57D +// Total table size 26398 bytes (25KiB); checksum: 1C859EA7 diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go index e22807719..87e58a02a 100644 --- a/vendor/golang.org/x/text/language/tables.go +++ b/vendor/golang.org/x/text/language/tables.go @@ -35,16 +35,16 @@ const ( _XK = 333 ) const ( - _Latn = 87 - _Hani = 54 - _Hans = 56 - _Hant = 57 - _Qaaa = 139 - _Qaai = 147 - _Qabx = 188 - _Zinh = 236 - _Zyyy = 241 - _Zzzz = 242 + _Latn = 90 + _Hani = 57 + _Hans = 59 + _Hant = 60 + _Qaaa = 143 + _Qaai = 151 + _Qabx = 192 + _Zinh = 245 + _Zyyy = 250 + _Zzzz = 251 ) var regionToGroups = []uint8{ // 357 elements @@ -249,32 +249,32 @@ var matchLang = []mutualIntelligibility{ // 113 elements // matchScript holds pairs of scriptIDs where readers of one script // can typically also read the other. Each is associated with a confidence. var matchScript = []scriptIntelligibility{ // 26 elements - 0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x57, haveScript: 0x1f, distance: 0x5}, - 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x1f, haveScript: 0x57, distance: 0x5}, - 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa}, - 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x57, distance: 0xa}, - 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x1f, distance: 0xa}, - 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2b, haveScript: 0x57, distance: 0xa}, - 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4b, haveScript: 0x57, distance: 0xa}, - 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x57, distance: 0xa}, - 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x54, haveScript: 0x57, distance: 0xa}, - 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6b, haveScript: 0x57, distance: 0xa}, - 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x72, haveScript: 0x57, distance: 0xa}, - 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x21, haveScript: 0x57, distance: 0xa}, - 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x7d, haveScript: 0x57, distance: 0xa}, - 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x33, haveScript: 0x57, distance: 0xa}, - 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa}, - 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa}, - 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xca, haveScript: 0x57, distance: 0xa}, - 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xd7, haveScript: 0x57, distance: 0xa}, - 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xda, haveScript: 0x57, distance: 0xa}, - 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x29, haveScript: 0x57, distance: 0xa}, - 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa}, - 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x57, distance: 0xa}, - 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x57, haveScript: 0x1f, distance: 0xa}, - 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3b, haveScript: 0x57, distance: 0xa}, - 24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x38, haveScript: 0x39, distance: 0xf}, - 25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x39, haveScript: 0x38, distance: 0x13}, + 0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5a, haveScript: 0x20, distance: 0x5}, + 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5a, distance: 0x5}, + 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa}, + 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5a, distance: 0xa}, + 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa}, + 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5a, distance: 0xa}, + 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4e, haveScript: 0x5a, distance: 0xa}, + 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x52, haveScript: 0x5a, distance: 0xa}, + 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x57, haveScript: 0x5a, distance: 0xa}, + 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6e, haveScript: 0x5a, distance: 0xa}, + 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x75, haveScript: 0x5a, distance: 0xa}, + 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5a, distance: 0xa}, + 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x81, haveScript: 0x5a, distance: 0xa}, + 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5a, distance: 0xa}, + 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa}, + 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa}, + 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xcf, haveScript: 0x5a, distance: 0xa}, + 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xde, haveScript: 0x5a, distance: 0xa}, + 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe1, haveScript: 0x5a, distance: 0xa}, + 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5a, distance: 0xa}, + 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa}, + 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5a, distance: 0xa}, + 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5a, haveScript: 0x20, distance: 0xa}, + 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5a, distance: 0xa}, + 24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3b, haveScript: 0x3c, distance: 0xf}, + 25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3c, haveScript: 0x3b, distance: 0x13}, } // Size: 232 bytes var matchRegion = []regionIntelligibility{ // 15 elements @@ -286,13 +286,13 @@ var matchRegion = []regionIntelligibility{ // 15 elements 5: {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4}, 6: {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4}, 7: {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4}, - 8: {lang: 0x529, script: 0x39, group: 0x2, distance: 0x4}, - 9: {lang: 0x529, script: 0x39, group: 0x82, distance: 0x4}, + 8: {lang: 0x529, script: 0x3c, group: 0x2, distance: 0x4}, + 9: {lang: 0x529, script: 0x3c, group: 0x82, distance: 0x4}, 10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5}, 11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5}, 12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5}, 13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5}, - 14: {lang: 0x529, script: 0x39, group: 0x80, distance: 0x5}, + 14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5}, } // Size: 114 bytes // Total table size 1471 bytes (1KiB); checksum: 4CB1CD46 diff --git a/vendor/golang.org/x/text/unicode/bidi/bidi.go b/vendor/golang.org/x/text/unicode/bidi/bidi.go index e8edc54cc..fd057601b 100644 --- a/vendor/golang.org/x/text/unicode/bidi/bidi.go +++ b/vendor/golang.org/x/text/unicode/bidi/bidi.go @@ -12,15 +12,14 @@ // and without notice. package bidi // import "golang.org/x/text/unicode/bidi" -// TODO: -// The following functionality would not be hard to implement, but hinges on -// the definition of a Segmenter interface. For now this is up to the user. -// - Iterate over paragraphs -// - Segmenter to iterate over runs directly from a given text. -// Also: +// TODO // - Transformer for reordering? // - Transformer (validator, really) for Bidi Rule. +import ( + "bytes" +) + // This API tries to avoid dealing with embedding levels for now. Under the hood // these will be computed, but the question is to which extent the user should // know they exist. We should at some point allow the user to specify an @@ -49,7 +48,9 @@ const ( Neutral ) -type options struct{} +type options struct { + defaultDirection Direction +} // An Option is an option for Bidi processing. type Option func(*options) @@ -66,12 +67,62 @@ type Option func(*options) // DefaultDirection sets the default direction for a Paragraph. The direction is // overridden if the text contains directional characters. func DefaultDirection(d Direction) Option { - panic("unimplemented") + return func(opts *options) { + opts.defaultDirection = d + } } // A Paragraph holds a single Paragraph for Bidi processing. type Paragraph struct { - // buffers + p []byte + o Ordering + opts []Option + types []Class + pairTypes []bracketType + pairValues []rune + runes []rune + options options +} + +// Initialize the p.pairTypes, p.pairValues and p.types from the input previously +// set by p.SetBytes() or p.SetString(). Also limit the input up to (and including) a paragraph +// separator (bidi class B). +// +// The function p.Order() needs these values to be set, so this preparation could be postponed. +// But since the SetBytes and SetStrings functions return the length of the input up to the paragraph +// separator, the whole input needs to be processed anyway and should not be done twice. +// +// The function has the same return values as SetBytes() / SetString() +func (p *Paragraph) prepareInput() (n int, err error) { + p.runes = bytes.Runes(p.p) + bytecount := 0 + // clear slices from previous SetString or SetBytes + p.pairTypes = nil + p.pairValues = nil + p.types = nil + + for _, r := range p.runes { + props, i := LookupRune(r) + bytecount += i + cls := props.Class() + if cls == B { + return bytecount, nil + } + p.types = append(p.types, cls) + if props.IsOpeningBracket() { + p.pairTypes = append(p.pairTypes, bpOpen) + p.pairValues = append(p.pairValues, r) + } else if props.IsBracket() { + // this must be a closing bracket, + // since IsOpeningBracket is not true + p.pairTypes = append(p.pairTypes, bpClose) + p.pairValues = append(p.pairValues, r) + } else { + p.pairTypes = append(p.pairTypes, bpNone) + p.pairValues = append(p.pairValues, 0) + } + } + return bytecount, nil } // SetBytes configures p for the given paragraph text. It replaces text @@ -80,70 +131,150 @@ type Paragraph struct { // consumed from b including this separator. Error may be non-nil if options are // given. func (p *Paragraph) SetBytes(b []byte, opts ...Option) (n int, err error) { - panic("unimplemented") + p.p = b + p.opts = opts + return p.prepareInput() } -// SetString configures p for the given paragraph text. It replaces text -// previously set by SetBytes or SetString. If b contains a paragraph separator +// SetString configures s for the given paragraph text. It replaces text +// previously set by SetBytes or SetString. If s contains a paragraph separator // it will only process the first paragraph and report the number of bytes -// consumed from b including this separator. Error may be non-nil if options are +// consumed from s including this separator. Error may be non-nil if options are // given. func (p *Paragraph) SetString(s string, opts ...Option) (n int, err error) { - panic("unimplemented") + p.p = []byte(s) + p.opts = opts + return p.prepareInput() } // IsLeftToRight reports whether the principle direction of rendering for this // paragraphs is left-to-right. If this returns false, the principle direction // of rendering is right-to-left. func (p *Paragraph) IsLeftToRight() bool { - panic("unimplemented") + return p.Direction() == LeftToRight } // Direction returns the direction of the text of this paragraph. // // The direction may be LeftToRight, RightToLeft, Mixed, or Neutral. func (p *Paragraph) Direction() Direction { - panic("unimplemented") + return p.o.Direction() } +// TODO: what happens if the position is > len(input)? This should return an error. + // RunAt reports the Run at the given position of the input text. // // This method can be used for computing line breaks on paragraphs. func (p *Paragraph) RunAt(pos int) Run { - panic("unimplemented") + c := 0 + runNumber := 0 + for i, r := range p.o.runes { + c += len(r) + if pos < c { + runNumber = i + } + } + return p.o.Run(runNumber) +} + +func calculateOrdering(levels []level, runes []rune) Ordering { + var curDir Direction + + prevDir := Neutral + prevI := 0 + + o := Ordering{} + // lvl = 0,2,4,...: left to right + // lvl = 1,3,5,...: right to left + for i, lvl := range levels { + if lvl%2 == 0 { + curDir = LeftToRight + } else { + curDir = RightToLeft + } + if curDir != prevDir { + if i > 0 { + o.runes = append(o.runes, runes[prevI:i]) + o.directions = append(o.directions, prevDir) + o.startpos = append(o.startpos, prevI) + } + prevI = i + prevDir = curDir + } + } + o.runes = append(o.runes, runes[prevI:]) + o.directions = append(o.directions, prevDir) + o.startpos = append(o.startpos, prevI) + return o } // Order computes the visual ordering of all the runs in a Paragraph. func (p *Paragraph) Order() (Ordering, error) { - panic("unimplemented") + if len(p.types) == 0 { + return Ordering{}, nil + } + + for _, fn := range p.opts { + fn(&p.options) + } + lvl := level(-1) + if p.options.defaultDirection == RightToLeft { + lvl = 1 + } + para, err := newParagraph(p.types, p.pairTypes, p.pairValues, lvl) + if err != nil { + return Ordering{}, err + } + + levels := para.getLevels([]int{len(p.types)}) + + p.o = calculateOrdering(levels, p.runes) + return p.o, nil } // Line computes the visual ordering of runs for a single line starting and // ending at the given positions in the original text. func (p *Paragraph) Line(start, end int) (Ordering, error) { - panic("unimplemented") + lineTypes := p.types[start:end] + para, err := newParagraph(lineTypes, p.pairTypes[start:end], p.pairValues[start:end], -1) + if err != nil { + return Ordering{}, err + } + levels := para.getLevels([]int{len(lineTypes)}) + o := calculateOrdering(levels, p.runes[start:end]) + return o, nil } // An Ordering holds the computed visual order of runs of a Paragraph. Calling // SetBytes or SetString on the originating Paragraph invalidates an Ordering. // The methods of an Ordering should only be called by one goroutine at a time. -type Ordering struct{} +type Ordering struct { + runes [][]rune + directions []Direction + startpos []int +} // Direction reports the directionality of the runs. // // The direction may be LeftToRight, RightToLeft, Mixed, or Neutral. func (o *Ordering) Direction() Direction { - panic("unimplemented") + return o.directions[0] } // NumRuns returns the number of runs. func (o *Ordering) NumRuns() int { - panic("unimplemented") + return len(o.runes) } // Run returns the ith run within the ordering. func (o *Ordering) Run(i int) Run { - panic("unimplemented") + r := Run{ + runes: o.runes[i], + direction: o.directions[i], + startpos: o.startpos[i], + } + return r } // TODO: perhaps with options. @@ -155,16 +286,19 @@ func (o *Ordering) Run(i int) Run { // A Run is a continuous sequence of characters of a single direction. type Run struct { + runes []rune + direction Direction + startpos int } // String returns the text of the run in its original order. func (r *Run) String() string { - panic("unimplemented") + return string(r.runes) } // Bytes returns the text of the run in its original order. func (r *Run) Bytes() []byte { - panic("unimplemented") + return []byte(r.String()) } // TODO: methods for @@ -174,25 +308,52 @@ func (r *Run) Bytes() []byte { // Direction reports the direction of the run. func (r *Run) Direction() Direction { - panic("unimplemented") + return r.direction } -// Position of the Run within the text passed to SetBytes or SetString of the +// Pos returns the position of the Run within the text passed to SetBytes or SetString of the // originating Paragraph value. func (r *Run) Pos() (start, end int) { - panic("unimplemented") + return r.startpos, r.startpos + len(r.runes) - 1 } // AppendReverse reverses the order of characters of in, appends them to out, // and returns the result. Modifiers will still follow the runes they modify. // Brackets are replaced with their counterparts. func AppendReverse(out, in []byte) []byte { - panic("unimplemented") + ret := make([]byte, len(in)+len(out)) + copy(ret, out) + inRunes := bytes.Runes(in) + + for i, r := range inRunes { + prop, _ := LookupRune(r) + if prop.IsBracket() { + inRunes[i] = prop.reverseBracket(r) + } + } + + for i, j := 0, len(inRunes)-1; i < j; i, j = i+1, j-1 { + inRunes[i], inRunes[j] = inRunes[j], inRunes[i] + } + copy(ret[len(out):], string(inRunes)) + + return ret } // ReverseString reverses the order of characters in s and returns a new string. // Modifiers will still follow the runes they modify. Brackets are replaced with // their counterparts. func ReverseString(s string) string { - panic("unimplemented") + input := []rune(s) + li := len(input) + ret := make([]rune, li) + for i, r := range input { + prop, _ := LookupRune(r) + if prop.IsBracket() { + ret[li-i-1] = prop.reverseBracket(r) + } else { + ret[li-i-1] = r + } + } + return string(ret) } diff --git a/vendor/golang.org/x/text/unicode/bidi/core.go b/vendor/golang.org/x/text/unicode/bidi/core.go index 50deb6600..e4c081101 100644 --- a/vendor/golang.org/x/text/unicode/bidi/core.go +++ b/vendor/golang.org/x/text/unicode/bidi/core.go @@ -4,7 +4,10 @@ package bidi -import "log" +import ( + "fmt" + "log" +) // This implementation is a port based on the reference implementation found at: // https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/ @@ -97,13 +100,20 @@ type paragraph struct { // rune (suggested is the rune of the open bracket for opening and matching // close brackets, after normalization). The embedding levels are optional, but // may be supplied to encode embedding levels of styled text. -// -// TODO: return an error. -func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) *paragraph { - validateTypes(types) - validatePbTypes(pairTypes) - validatePbValues(pairValues, pairTypes) - validateParagraphEmbeddingLevel(levels) +func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) (*paragraph, error) { + var err error + if err = validateTypes(types); err != nil { + return nil, err + } + if err = validatePbTypes(pairTypes); err != nil { + return nil, err + } + if err = validatePbValues(pairValues, pairTypes); err != nil { + return nil, err + } + if err = validateParagraphEmbeddingLevel(levels); err != nil { + return nil, err + } p := ¶graph{ initialTypes: append([]Class(nil), types...), @@ -115,7 +125,7 @@ func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, lev resultTypes: append([]Class(nil), types...), } p.run() - return p + return p, nil } func (p *paragraph) Len() int { return len(p.initialTypes) } @@ -1001,58 +1011,61 @@ func typeForLevel(level level) Class { return R } -// TODO: change validation to not panic - -func validateTypes(types []Class) { +func validateTypes(types []Class) error { if len(types) == 0 { - log.Panic("types is null") + return fmt.Errorf("types is null") } for i, t := range types[:len(types)-1] { if t == B { - log.Panicf("B type before end of paragraph at index: %d", i) + return fmt.Errorf("B type before end of paragraph at index: %d", i) } } + return nil } -func validateParagraphEmbeddingLevel(embeddingLevel level) { +func validateParagraphEmbeddingLevel(embeddingLevel level) error { if embeddingLevel != implicitLevel && embeddingLevel != 0 && embeddingLevel != 1 { - log.Panicf("illegal paragraph embedding level: %d", embeddingLevel) + return fmt.Errorf("illegal paragraph embedding level: %d", embeddingLevel) } + return nil } -func validateLineBreaks(linebreaks []int, textLength int) { +func validateLineBreaks(linebreaks []int, textLength int) error { prev := 0 for i, next := range linebreaks { if next <= prev { - log.Panicf("bad linebreak: %d at index: %d", next, i) + return fmt.Errorf("bad linebreak: %d at index: %d", next, i) } prev = next } if prev != textLength { - log.Panicf("last linebreak was %d, want %d", prev, textLength) + return fmt.Errorf("last linebreak was %d, want %d", prev, textLength) } + return nil } -func validatePbTypes(pairTypes []bracketType) { +func validatePbTypes(pairTypes []bracketType) error { if len(pairTypes) == 0 { - log.Panic("pairTypes is null") + return fmt.Errorf("pairTypes is null") } for i, pt := range pairTypes { switch pt { case bpNone, bpOpen, bpClose: default: - log.Panicf("illegal pairType value at %d: %v", i, pairTypes[i]) + return fmt.Errorf("illegal pairType value at %d: %v", i, pairTypes[i]) } } + return nil } -func validatePbValues(pairValues []rune, pairTypes []bracketType) { +func validatePbValues(pairValues []rune, pairTypes []bracketType) error { if pairValues == nil { - log.Panic("pairValues is null") + return fmt.Errorf("pairValues is null") } if len(pairTypes) != len(pairValues) { - log.Panic("pairTypes is different length from pairValues") + return fmt.Errorf("pairTypes is different length from pairValues") } + return nil } diff --git a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go index 7ffa36512..647f2d427 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go @@ -1,6 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -// +build go1.14 +// +build go1.14,!go1.16 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go new file mode 100644 index 000000000..c937d0976 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go @@ -0,0 +1,1955 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build go1.16 + +package bidi + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "13.0.0" + +// xorMasks contains masks to be xor-ed with brackets to get the reverse +// version. +var xorMasks = []int32{ // 8 elements + 0, 1, 6, 7, 3, 15, 29, 63, +} // Size: 56 bytes + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *bidiTrie) lookup(s []byte) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return bidiValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *bidiTrie) lookupUnsafe(s []byte) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return bidiValues[c0] + } + i := bidiIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *bidiTrie) lookupString(s string) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return bidiValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *bidiTrie) lookupStringUnsafe(s string) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return bidiValues[c0] + } + i := bidiIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// bidiTrie. Total size: 17408 bytes (17.00 KiB). Checksum: df85fcbfe9b8377f. +type bidiTrie struct{} + +func newBidiTrie(i int) *bidiTrie { + return &bidiTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *bidiTrie) lookupValue(n uint32, b byte) uint8 { + switch { + default: + return uint8(bidiValues[n<<6+uint32(b)]) + } +} + +// bidiValues: 248 blocks, 15872 entries, 15872 bytes +// The third block is the zero block. +var bidiValues = [15872]uint8{ + // Block 0x0, offset 0x0 + 0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b, + 0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008, + 0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b, + 0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b, + 0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007, + 0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004, + 0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a, + 0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006, + 0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002, + 0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a, + 0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a, + // Block 0x1, offset 0x40 + 0x40: 0x000a, + 0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a, + 0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a, + 0x7b: 0x005a, + 0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007, + 0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b, + 0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b, + 0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b, + 0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b, + 0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004, + 0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a, + 0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a, + 0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a, + 0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a, + 0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a, + // Block 0x4, offset 0x100 + 0x117: 0x000a, + 0x137: 0x000a, + // Block 0x5, offset 0x140 + 0x179: 0x000a, 0x17a: 0x000a, + // Block 0x6, offset 0x180 + 0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a, + 0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a, + 0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a, + 0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a, + 0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a, + 0x19e: 0x000a, 0x19f: 0x000a, + 0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a, + 0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a, + 0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a, + 0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a, + 0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c, + 0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c, + 0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c, + 0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c, + 0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c, + 0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c, + 0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c, + 0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c, + 0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c, + 0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c, + 0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c, + // Block 0x8, offset 0x200 + 0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c, + 0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c, + 0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c, + 0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c, + 0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c, + 0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c, + 0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c, + 0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c, + 0x234: 0x000a, 0x235: 0x000a, + 0x23e: 0x000a, + // Block 0x9, offset 0x240 + 0x244: 0x000a, 0x245: 0x000a, + 0x247: 0x000a, + // Block 0xa, offset 0x280 + 0x2b6: 0x000a, + // Block 0xb, offset 0x2c0 + 0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c, + 0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c, + // Block 0xc, offset 0x300 + 0x30a: 0x000a, + 0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c, + 0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c, + 0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c, + 0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c, + 0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c, + 0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c, + 0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c, + 0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c, + 0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c, + // Block 0xd, offset 0x340 + 0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c, + 0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001, + 0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001, + 0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001, + 0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001, + 0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001, + 0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001, + 0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001, + 0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001, + 0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001, + 0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001, + // Block 0xe, offset 0x380 + 0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005, + 0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d, + 0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c, + 0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c, + 0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d, + 0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d, + 0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d, + 0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d, + 0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d, + 0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d, + 0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d, + 0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c, + 0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c, + 0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c, + 0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c, + 0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005, + 0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005, + 0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d, + 0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d, + 0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d, + 0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d, + // Block 0x10, offset 0x400 + 0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d, + 0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d, + 0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d, + 0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d, + 0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d, + 0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d, + 0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d, + 0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d, + 0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d, + 0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d, + 0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d, + // Block 0x11, offset 0x440 + 0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d, + 0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d, + 0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d, + 0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c, + 0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005, + 0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c, + 0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a, + 0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d, + 0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002, + 0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d, + 0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d, + // Block 0x12, offset 0x480 + 0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d, + 0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d, + 0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c, + 0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d, + 0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d, + 0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d, + 0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d, + 0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d, + 0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c, + 0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c, + 0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c, + 0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d, + 0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d, + 0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d, + 0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d, + 0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d, + 0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d, + 0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d, + 0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d, + 0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d, + 0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d, + // Block 0x14, offset 0x500 + 0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d, + 0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d, + 0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d, + 0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d, + 0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d, + 0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d, + 0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c, + 0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c, + 0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d, + 0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d, + 0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d, + // Block 0x15, offset 0x540 + 0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001, + 0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001, + 0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001, + 0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001, + 0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001, + 0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001, + 0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001, + 0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c, + 0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001, + 0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001, + 0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001, + // Block 0x16, offset 0x580 + 0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001, + 0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001, + 0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001, + 0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c, + 0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c, + 0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c, + 0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c, + 0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001, + 0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001, + 0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001, + 0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001, + 0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001, + 0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001, + 0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001, + 0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001, + 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d, + 0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d, + 0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d, + 0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001, + 0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001, + 0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001, + // Block 0x18, offset 0x600 + 0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001, + 0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001, + 0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001, + 0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001, + 0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001, + 0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d, + 0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d, + 0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d, + 0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d, + 0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d, + 0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d, + // Block 0x19, offset 0x640 + 0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d, + 0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d, + 0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d, + 0x652: 0x000d, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c, + 0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c, + 0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c, + 0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c, + 0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c, + 0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c, + 0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c, + 0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c, + // Block 0x1a, offset 0x680 + 0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c, + 0x6ba: 0x000c, + 0x6bc: 0x000c, + // Block 0x1b, offset 0x6c0 + 0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c, + 0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c, + 0x6cd: 0x000c, 0x6d1: 0x000c, + 0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c, + 0x6e2: 0x000c, 0x6e3: 0x000c, + // Block 0x1c, offset 0x700 + 0x701: 0x000c, + 0x73c: 0x000c, + // Block 0x1d, offset 0x740 + 0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c, + 0x74d: 0x000c, + 0x762: 0x000c, 0x763: 0x000c, + 0x772: 0x0004, 0x773: 0x0004, + 0x77b: 0x0004, + 0x77e: 0x000c, + // Block 0x1e, offset 0x780 + 0x781: 0x000c, 0x782: 0x000c, + 0x7bc: 0x000c, + // Block 0x1f, offset 0x7c0 + 0x7c1: 0x000c, 0x7c2: 0x000c, + 0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c, + 0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c, + 0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c, + // Block 0x20, offset 0x800 + 0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c, + 0x807: 0x000c, 0x808: 0x000c, + 0x80d: 0x000c, + 0x822: 0x000c, 0x823: 0x000c, + 0x831: 0x0004, + 0x83a: 0x000c, 0x83b: 0x000c, + 0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c, + // Block 0x21, offset 0x840 + 0x841: 0x000c, + 0x87c: 0x000c, 0x87f: 0x000c, + // Block 0x22, offset 0x880 + 0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c, + 0x88d: 0x000c, + 0x895: 0x000c, 0x896: 0x000c, + 0x8a2: 0x000c, 0x8a3: 0x000c, + // Block 0x23, offset 0x8c0 + 0x8c2: 0x000c, + // Block 0x24, offset 0x900 + 0x900: 0x000c, + 0x90d: 0x000c, + 0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a, + 0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a, + // Block 0x25, offset 0x940 + 0x940: 0x000c, 0x944: 0x000c, + 0x97e: 0x000c, 0x97f: 0x000c, + // Block 0x26, offset 0x980 + 0x980: 0x000c, + 0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c, + 0x98c: 0x000c, 0x98d: 0x000c, + 0x995: 0x000c, 0x996: 0x000c, + 0x9a2: 0x000c, 0x9a3: 0x000c, + 0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a, + 0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a, + // Block 0x27, offset 0x9c0 + 0x9cc: 0x000c, 0x9cd: 0x000c, + 0x9e2: 0x000c, 0x9e3: 0x000c, + // Block 0x28, offset 0xa00 + 0xa00: 0x000c, 0xa01: 0x000c, + 0xa3b: 0x000c, + 0xa3c: 0x000c, + // Block 0x29, offset 0xa40 + 0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c, + 0xa4d: 0x000c, + 0xa62: 0x000c, 0xa63: 0x000c, + // Block 0x2a, offset 0xa80 + 0xa81: 0x000c, + // Block 0x2b, offset 0xac0 + 0xaca: 0x000c, + 0xad2: 0x000c, 0xad3: 0x000c, 0xad4: 0x000c, 0xad6: 0x000c, + // Block 0x2c, offset 0xb00 + 0xb31: 0x000c, 0xb34: 0x000c, 0xb35: 0x000c, + 0xb36: 0x000c, 0xb37: 0x000c, 0xb38: 0x000c, 0xb39: 0x000c, 0xb3a: 0x000c, + 0xb3f: 0x0004, + // Block 0x2d, offset 0xb40 + 0xb47: 0x000c, 0xb48: 0x000c, 0xb49: 0x000c, 0xb4a: 0x000c, 0xb4b: 0x000c, + 0xb4c: 0x000c, 0xb4d: 0x000c, 0xb4e: 0x000c, + // Block 0x2e, offset 0xb80 + 0xbb1: 0x000c, 0xbb4: 0x000c, 0xbb5: 0x000c, + 0xbb6: 0x000c, 0xbb7: 0x000c, 0xbb8: 0x000c, 0xbb9: 0x000c, 0xbba: 0x000c, 0xbbb: 0x000c, + 0xbbc: 0x000c, + // Block 0x2f, offset 0xbc0 + 0xbc8: 0x000c, 0xbc9: 0x000c, 0xbca: 0x000c, 0xbcb: 0x000c, + 0xbcc: 0x000c, 0xbcd: 0x000c, + // Block 0x30, offset 0xc00 + 0xc18: 0x000c, 0xc19: 0x000c, + 0xc35: 0x000c, + 0xc37: 0x000c, 0xc39: 0x000c, 0xc3a: 0x003a, 0xc3b: 0x002a, + 0xc3c: 0x003a, 0xc3d: 0x002a, + // Block 0x31, offset 0xc40 + 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c, + 0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c, + 0xc7c: 0x000c, 0xc7d: 0x000c, 0xc7e: 0x000c, + // Block 0x32, offset 0xc80 + 0xc80: 0x000c, 0xc81: 0x000c, 0xc82: 0x000c, 0xc83: 0x000c, 0xc84: 0x000c, + 0xc86: 0x000c, 0xc87: 0x000c, + 0xc8d: 0x000c, 0xc8e: 0x000c, 0xc8f: 0x000c, 0xc90: 0x000c, 0xc91: 0x000c, + 0xc92: 0x000c, 0xc93: 0x000c, 0xc94: 0x000c, 0xc95: 0x000c, 0xc96: 0x000c, 0xc97: 0x000c, + 0xc99: 0x000c, 0xc9a: 0x000c, 0xc9b: 0x000c, 0xc9c: 0x000c, 0xc9d: 0x000c, + 0xc9e: 0x000c, 0xc9f: 0x000c, 0xca0: 0x000c, 0xca1: 0x000c, 0xca2: 0x000c, 0xca3: 0x000c, + 0xca4: 0x000c, 0xca5: 0x000c, 0xca6: 0x000c, 0xca7: 0x000c, 0xca8: 0x000c, 0xca9: 0x000c, + 0xcaa: 0x000c, 0xcab: 0x000c, 0xcac: 0x000c, 0xcad: 0x000c, 0xcae: 0x000c, 0xcaf: 0x000c, + 0xcb0: 0x000c, 0xcb1: 0x000c, 0xcb2: 0x000c, 0xcb3: 0x000c, 0xcb4: 0x000c, 0xcb5: 0x000c, + 0xcb6: 0x000c, 0xcb7: 0x000c, 0xcb8: 0x000c, 0xcb9: 0x000c, 0xcba: 0x000c, 0xcbb: 0x000c, + 0xcbc: 0x000c, + // Block 0x33, offset 0xcc0 + 0xcc6: 0x000c, + // Block 0x34, offset 0xd00 + 0xd2d: 0x000c, 0xd2e: 0x000c, 0xd2f: 0x000c, + 0xd30: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, 0xd35: 0x000c, + 0xd36: 0x000c, 0xd37: 0x000c, 0xd39: 0x000c, 0xd3a: 0x000c, + 0xd3d: 0x000c, 0xd3e: 0x000c, + // Block 0x35, offset 0xd40 + 0xd58: 0x000c, 0xd59: 0x000c, + 0xd5e: 0x000c, 0xd5f: 0x000c, 0xd60: 0x000c, + 0xd71: 0x000c, 0xd72: 0x000c, 0xd73: 0x000c, 0xd74: 0x000c, + // Block 0x36, offset 0xd80 + 0xd82: 0x000c, 0xd85: 0x000c, + 0xd86: 0x000c, + 0xd8d: 0x000c, + 0xd9d: 0x000c, + // Block 0x37, offset 0xdc0 + 0xddd: 0x000c, + 0xdde: 0x000c, 0xddf: 0x000c, + // Block 0x38, offset 0xe00 + 0xe10: 0x000a, 0xe11: 0x000a, + 0xe12: 0x000a, 0xe13: 0x000a, 0xe14: 0x000a, 0xe15: 0x000a, 0xe16: 0x000a, 0xe17: 0x000a, + 0xe18: 0x000a, 0xe19: 0x000a, + // Block 0x39, offset 0xe40 + 0xe40: 0x000a, + // Block 0x3a, offset 0xe80 + 0xe80: 0x0009, + 0xe9b: 0x007a, 0xe9c: 0x006a, + // Block 0x3b, offset 0xec0 + 0xed2: 0x000c, 0xed3: 0x000c, 0xed4: 0x000c, + 0xef2: 0x000c, 0xef3: 0x000c, 0xef4: 0x000c, + // Block 0x3c, offset 0xf00 + 0xf12: 0x000c, 0xf13: 0x000c, + 0xf32: 0x000c, 0xf33: 0x000c, + // Block 0x3d, offset 0xf40 + 0xf74: 0x000c, 0xf75: 0x000c, + 0xf77: 0x000c, 0xf78: 0x000c, 0xf79: 0x000c, 0xf7a: 0x000c, 0xf7b: 0x000c, + 0xf7c: 0x000c, 0xf7d: 0x000c, + // Block 0x3e, offset 0xf80 + 0xf86: 0x000c, 0xf89: 0x000c, 0xf8a: 0x000c, 0xf8b: 0x000c, + 0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000c, 0xf8f: 0x000c, 0xf90: 0x000c, 0xf91: 0x000c, + 0xf92: 0x000c, 0xf93: 0x000c, + 0xf9b: 0x0004, 0xf9d: 0x000c, + 0xfb0: 0x000a, 0xfb1: 0x000a, 0xfb2: 0x000a, 0xfb3: 0x000a, 0xfb4: 0x000a, 0xfb5: 0x000a, + 0xfb6: 0x000a, 0xfb7: 0x000a, 0xfb8: 0x000a, 0xfb9: 0x000a, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x000a, 0xfc1: 0x000a, 0xfc2: 0x000a, 0xfc3: 0x000a, 0xfc4: 0x000a, 0xfc5: 0x000a, + 0xfc6: 0x000a, 0xfc7: 0x000a, 0xfc8: 0x000a, 0xfc9: 0x000a, 0xfca: 0x000a, 0xfcb: 0x000c, + 0xfcc: 0x000c, 0xfcd: 0x000c, 0xfce: 0x000b, + // Block 0x40, offset 0x1000 + 0x1005: 0x000c, + 0x1006: 0x000c, + 0x1029: 0x000c, + // Block 0x41, offset 0x1040 + 0x1060: 0x000c, 0x1061: 0x000c, 0x1062: 0x000c, + 0x1067: 0x000c, 0x1068: 0x000c, + 0x1072: 0x000c, + 0x1079: 0x000c, 0x107a: 0x000c, 0x107b: 0x000c, + // Block 0x42, offset 0x1080 + 0x1080: 0x000a, 0x1084: 0x000a, 0x1085: 0x000a, + // Block 0x43, offset 0x10c0 + 0x10de: 0x000a, 0x10df: 0x000a, 0x10e0: 0x000a, 0x10e1: 0x000a, 0x10e2: 0x000a, 0x10e3: 0x000a, + 0x10e4: 0x000a, 0x10e5: 0x000a, 0x10e6: 0x000a, 0x10e7: 0x000a, 0x10e8: 0x000a, 0x10e9: 0x000a, + 0x10ea: 0x000a, 0x10eb: 0x000a, 0x10ec: 0x000a, 0x10ed: 0x000a, 0x10ee: 0x000a, 0x10ef: 0x000a, + 0x10f0: 0x000a, 0x10f1: 0x000a, 0x10f2: 0x000a, 0x10f3: 0x000a, 0x10f4: 0x000a, 0x10f5: 0x000a, + 0x10f6: 0x000a, 0x10f7: 0x000a, 0x10f8: 0x000a, 0x10f9: 0x000a, 0x10fa: 0x000a, 0x10fb: 0x000a, + 0x10fc: 0x000a, 0x10fd: 0x000a, 0x10fe: 0x000a, 0x10ff: 0x000a, + // Block 0x44, offset 0x1100 + 0x1117: 0x000c, + 0x1118: 0x000c, 0x111b: 0x000c, + // Block 0x45, offset 0x1140 + 0x1156: 0x000c, + 0x1158: 0x000c, 0x1159: 0x000c, 0x115a: 0x000c, 0x115b: 0x000c, 0x115c: 0x000c, 0x115d: 0x000c, + 0x115e: 0x000c, 0x1160: 0x000c, 0x1162: 0x000c, + 0x1165: 0x000c, 0x1166: 0x000c, 0x1167: 0x000c, 0x1168: 0x000c, 0x1169: 0x000c, + 0x116a: 0x000c, 0x116b: 0x000c, 0x116c: 0x000c, + 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c, + 0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c, + 0x117c: 0x000c, 0x117f: 0x000c, + // Block 0x46, offset 0x1180 + 0x11b0: 0x000c, 0x11b1: 0x000c, 0x11b2: 0x000c, 0x11b3: 0x000c, 0x11b4: 0x000c, 0x11b5: 0x000c, + 0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, 0x11bb: 0x000c, + 0x11bc: 0x000c, 0x11bd: 0x000c, 0x11be: 0x000c, 0x11bf: 0x000c, + // Block 0x47, offset 0x11c0 + 0x11c0: 0x000c, + // Block 0x48, offset 0x1200 + 0x1200: 0x000c, 0x1201: 0x000c, 0x1202: 0x000c, 0x1203: 0x000c, + 0x1234: 0x000c, + 0x1236: 0x000c, 0x1237: 0x000c, 0x1238: 0x000c, 0x1239: 0x000c, 0x123a: 0x000c, + 0x123c: 0x000c, + // Block 0x49, offset 0x1240 + 0x1242: 0x000c, + 0x126b: 0x000c, 0x126c: 0x000c, 0x126d: 0x000c, 0x126e: 0x000c, 0x126f: 0x000c, + 0x1270: 0x000c, 0x1271: 0x000c, 0x1272: 0x000c, 0x1273: 0x000c, + // Block 0x4a, offset 0x1280 + 0x1280: 0x000c, 0x1281: 0x000c, + 0x12a2: 0x000c, 0x12a3: 0x000c, + 0x12a4: 0x000c, 0x12a5: 0x000c, 0x12a8: 0x000c, 0x12a9: 0x000c, + 0x12ab: 0x000c, 0x12ac: 0x000c, 0x12ad: 0x000c, + // Block 0x4b, offset 0x12c0 + 0x12e6: 0x000c, 0x12e8: 0x000c, 0x12e9: 0x000c, + 0x12ed: 0x000c, 0x12ef: 0x000c, + 0x12f0: 0x000c, 0x12f1: 0x000c, + // Block 0x4c, offset 0x1300 + 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c, + 0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, + 0x1336: 0x000c, 0x1337: 0x000c, + // Block 0x4d, offset 0x1340 + 0x1350: 0x000c, 0x1351: 0x000c, + 0x1352: 0x000c, 0x1354: 0x000c, 0x1355: 0x000c, 0x1356: 0x000c, 0x1357: 0x000c, + 0x1358: 0x000c, 0x1359: 0x000c, 0x135a: 0x000c, 0x135b: 0x000c, 0x135c: 0x000c, 0x135d: 0x000c, + 0x135e: 0x000c, 0x135f: 0x000c, 0x1360: 0x000c, 0x1362: 0x000c, 0x1363: 0x000c, + 0x1364: 0x000c, 0x1365: 0x000c, 0x1366: 0x000c, 0x1367: 0x000c, 0x1368: 0x000c, + 0x136d: 0x000c, + 0x1374: 0x000c, + 0x1378: 0x000c, 0x1379: 0x000c, + // Block 0x4e, offset 0x1380 + 0x1380: 0x000c, 0x1381: 0x000c, 0x1382: 0x000c, 0x1383: 0x000c, 0x1384: 0x000c, 0x1385: 0x000c, + 0x1386: 0x000c, 0x1387: 0x000c, 0x1388: 0x000c, 0x1389: 0x000c, 0x138a: 0x000c, 0x138b: 0x000c, + 0x138c: 0x000c, 0x138d: 0x000c, 0x138e: 0x000c, 0x138f: 0x000c, 0x1390: 0x000c, 0x1391: 0x000c, + 0x1392: 0x000c, 0x1393: 0x000c, 0x1394: 0x000c, 0x1395: 0x000c, 0x1396: 0x000c, 0x1397: 0x000c, + 0x1398: 0x000c, 0x1399: 0x000c, 0x139a: 0x000c, 0x139b: 0x000c, 0x139c: 0x000c, 0x139d: 0x000c, + 0x139e: 0x000c, 0x139f: 0x000c, 0x13a0: 0x000c, 0x13a1: 0x000c, 0x13a2: 0x000c, 0x13a3: 0x000c, + 0x13a4: 0x000c, 0x13a5: 0x000c, 0x13a6: 0x000c, 0x13a7: 0x000c, 0x13a8: 0x000c, 0x13a9: 0x000c, + 0x13aa: 0x000c, 0x13ab: 0x000c, 0x13ac: 0x000c, 0x13ad: 0x000c, 0x13ae: 0x000c, 0x13af: 0x000c, + 0x13b0: 0x000c, 0x13b1: 0x000c, 0x13b2: 0x000c, 0x13b3: 0x000c, 0x13b4: 0x000c, 0x13b5: 0x000c, + 0x13b6: 0x000c, 0x13b7: 0x000c, 0x13b8: 0x000c, 0x13b9: 0x000c, 0x13bb: 0x000c, + 0x13bc: 0x000c, 0x13bd: 0x000c, 0x13be: 0x000c, 0x13bf: 0x000c, + // Block 0x4f, offset 0x13c0 + 0x13fd: 0x000a, 0x13ff: 0x000a, + // Block 0x50, offset 0x1400 + 0x1400: 0x000a, 0x1401: 0x000a, + 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, + 0x141d: 0x000a, + 0x141e: 0x000a, 0x141f: 0x000a, + 0x142d: 0x000a, 0x142e: 0x000a, 0x142f: 0x000a, + 0x143d: 0x000a, 0x143e: 0x000a, + // Block 0x51, offset 0x1440 + 0x1440: 0x0009, 0x1441: 0x0009, 0x1442: 0x0009, 0x1443: 0x0009, 0x1444: 0x0009, 0x1445: 0x0009, + 0x1446: 0x0009, 0x1447: 0x0009, 0x1448: 0x0009, 0x1449: 0x0009, 0x144a: 0x0009, 0x144b: 0x000b, + 0x144c: 0x000b, 0x144d: 0x000b, 0x144f: 0x0001, 0x1450: 0x000a, 0x1451: 0x000a, + 0x1452: 0x000a, 0x1453: 0x000a, 0x1454: 0x000a, 0x1455: 0x000a, 0x1456: 0x000a, 0x1457: 0x000a, + 0x1458: 0x000a, 0x1459: 0x000a, 0x145a: 0x000a, 0x145b: 0x000a, 0x145c: 0x000a, 0x145d: 0x000a, + 0x145e: 0x000a, 0x145f: 0x000a, 0x1460: 0x000a, 0x1461: 0x000a, 0x1462: 0x000a, 0x1463: 0x000a, + 0x1464: 0x000a, 0x1465: 0x000a, 0x1466: 0x000a, 0x1467: 0x000a, 0x1468: 0x0009, 0x1469: 0x0007, + 0x146a: 0x000e, 0x146b: 0x000e, 0x146c: 0x000e, 0x146d: 0x000e, 0x146e: 0x000e, 0x146f: 0x0006, + 0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x000a, + 0x1476: 0x000a, 0x1477: 0x000a, 0x1478: 0x000a, 0x1479: 0x000a, 0x147a: 0x000a, 0x147b: 0x000a, + 0x147c: 0x000a, 0x147d: 0x000a, 0x147e: 0x000a, 0x147f: 0x000a, + // Block 0x52, offset 0x1480 + 0x1480: 0x000a, 0x1481: 0x000a, 0x1482: 0x000a, 0x1483: 0x000a, 0x1484: 0x0006, 0x1485: 0x009a, + 0x1486: 0x008a, 0x1487: 0x000a, 0x1488: 0x000a, 0x1489: 0x000a, 0x148a: 0x000a, 0x148b: 0x000a, + 0x148c: 0x000a, 0x148d: 0x000a, 0x148e: 0x000a, 0x148f: 0x000a, 0x1490: 0x000a, 0x1491: 0x000a, + 0x1492: 0x000a, 0x1493: 0x000a, 0x1494: 0x000a, 0x1495: 0x000a, 0x1496: 0x000a, 0x1497: 0x000a, + 0x1498: 0x000a, 0x1499: 0x000a, 0x149a: 0x000a, 0x149b: 0x000a, 0x149c: 0x000a, 0x149d: 0x000a, + 0x149e: 0x000a, 0x149f: 0x0009, 0x14a0: 0x000b, 0x14a1: 0x000b, 0x14a2: 0x000b, 0x14a3: 0x000b, + 0x14a4: 0x000b, 0x14a5: 0x000b, 0x14a6: 0x000e, 0x14a7: 0x000e, 0x14a8: 0x000e, 0x14a9: 0x000e, + 0x14aa: 0x000b, 0x14ab: 0x000b, 0x14ac: 0x000b, 0x14ad: 0x000b, 0x14ae: 0x000b, 0x14af: 0x000b, + 0x14b0: 0x0002, 0x14b4: 0x0002, 0x14b5: 0x0002, + 0x14b6: 0x0002, 0x14b7: 0x0002, 0x14b8: 0x0002, 0x14b9: 0x0002, 0x14ba: 0x0003, 0x14bb: 0x0003, + 0x14bc: 0x000a, 0x14bd: 0x009a, 0x14be: 0x008a, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x0002, 0x14c1: 0x0002, 0x14c2: 0x0002, 0x14c3: 0x0002, 0x14c4: 0x0002, 0x14c5: 0x0002, + 0x14c6: 0x0002, 0x14c7: 0x0002, 0x14c8: 0x0002, 0x14c9: 0x0002, 0x14ca: 0x0003, 0x14cb: 0x0003, + 0x14cc: 0x000a, 0x14cd: 0x009a, 0x14ce: 0x008a, + 0x14e0: 0x0004, 0x14e1: 0x0004, 0x14e2: 0x0004, 0x14e3: 0x0004, + 0x14e4: 0x0004, 0x14e5: 0x0004, 0x14e6: 0x0004, 0x14e7: 0x0004, 0x14e8: 0x0004, 0x14e9: 0x0004, + 0x14ea: 0x0004, 0x14eb: 0x0004, 0x14ec: 0x0004, 0x14ed: 0x0004, 0x14ee: 0x0004, 0x14ef: 0x0004, + 0x14f0: 0x0004, 0x14f1: 0x0004, 0x14f2: 0x0004, 0x14f3: 0x0004, 0x14f4: 0x0004, 0x14f5: 0x0004, + 0x14f6: 0x0004, 0x14f7: 0x0004, 0x14f8: 0x0004, 0x14f9: 0x0004, 0x14fa: 0x0004, 0x14fb: 0x0004, + 0x14fc: 0x0004, 0x14fd: 0x0004, 0x14fe: 0x0004, 0x14ff: 0x0004, + // Block 0x54, offset 0x1500 + 0x1500: 0x0004, 0x1501: 0x0004, 0x1502: 0x0004, 0x1503: 0x0004, 0x1504: 0x0004, 0x1505: 0x0004, + 0x1506: 0x0004, 0x1507: 0x0004, 0x1508: 0x0004, 0x1509: 0x0004, 0x150a: 0x0004, 0x150b: 0x0004, + 0x150c: 0x0004, 0x150d: 0x0004, 0x150e: 0x0004, 0x150f: 0x0004, 0x1510: 0x000c, 0x1511: 0x000c, + 0x1512: 0x000c, 0x1513: 0x000c, 0x1514: 0x000c, 0x1515: 0x000c, 0x1516: 0x000c, 0x1517: 0x000c, + 0x1518: 0x000c, 0x1519: 0x000c, 0x151a: 0x000c, 0x151b: 0x000c, 0x151c: 0x000c, 0x151d: 0x000c, + 0x151e: 0x000c, 0x151f: 0x000c, 0x1520: 0x000c, 0x1521: 0x000c, 0x1522: 0x000c, 0x1523: 0x000c, + 0x1524: 0x000c, 0x1525: 0x000c, 0x1526: 0x000c, 0x1527: 0x000c, 0x1528: 0x000c, 0x1529: 0x000c, + 0x152a: 0x000c, 0x152b: 0x000c, 0x152c: 0x000c, 0x152d: 0x000c, 0x152e: 0x000c, 0x152f: 0x000c, + 0x1530: 0x000c, + // Block 0x55, offset 0x1540 + 0x1540: 0x000a, 0x1541: 0x000a, 0x1543: 0x000a, 0x1544: 0x000a, 0x1545: 0x000a, + 0x1546: 0x000a, 0x1548: 0x000a, 0x1549: 0x000a, + 0x1554: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a, + 0x1558: 0x000a, + 0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a, + 0x1565: 0x000a, 0x1567: 0x000a, 0x1569: 0x000a, + 0x156e: 0x0004, + 0x157a: 0x000a, 0x157b: 0x000a, + // Block 0x56, offset 0x1580 + 0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, + 0x158a: 0x000a, 0x158b: 0x000a, + 0x158c: 0x000a, 0x158d: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a, + 0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a, + 0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a, + 0x159e: 0x000a, 0x159f: 0x000a, + // Block 0x57, offset 0x15c0 + 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a, + 0x15d0: 0x000a, 0x15d1: 0x000a, + 0x15d2: 0x000a, 0x15d3: 0x000a, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a, + 0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a, + 0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a, + 0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a, + 0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a, + 0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a, + 0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a, + 0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a, + // Block 0x58, offset 0x1600 + 0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a, + 0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x000a, 0x1609: 0x000a, 0x160a: 0x000a, 0x160b: 0x000a, + 0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a, + 0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a, + 0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a, + 0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a, + 0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x000a, + 0x162a: 0x000a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a, + 0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a, + 0x1636: 0x000a, 0x1637: 0x000a, 0x1638: 0x000a, 0x1639: 0x000a, 0x163a: 0x000a, 0x163b: 0x000a, + 0x163c: 0x000a, 0x163d: 0x000a, 0x163e: 0x000a, 0x163f: 0x000a, + // Block 0x59, offset 0x1640 + 0x1640: 0x000a, 0x1641: 0x000a, 0x1642: 0x000a, 0x1643: 0x000a, 0x1644: 0x000a, 0x1645: 0x000a, + 0x1646: 0x000a, 0x1647: 0x000a, 0x1648: 0x000a, 0x1649: 0x000a, 0x164a: 0x000a, 0x164b: 0x000a, + 0x164c: 0x000a, 0x164d: 0x000a, 0x164e: 0x000a, 0x164f: 0x000a, 0x1650: 0x000a, 0x1651: 0x000a, + 0x1652: 0x0003, 0x1653: 0x0004, 0x1654: 0x000a, 0x1655: 0x000a, 0x1656: 0x000a, 0x1657: 0x000a, + 0x1658: 0x000a, 0x1659: 0x000a, 0x165a: 0x000a, 0x165b: 0x000a, 0x165c: 0x000a, 0x165d: 0x000a, + 0x165e: 0x000a, 0x165f: 0x000a, 0x1660: 0x000a, 0x1661: 0x000a, 0x1662: 0x000a, 0x1663: 0x000a, + 0x1664: 0x000a, 0x1665: 0x000a, 0x1666: 0x000a, 0x1667: 0x000a, 0x1668: 0x000a, 0x1669: 0x000a, + 0x166a: 0x000a, 0x166b: 0x000a, 0x166c: 0x000a, 0x166d: 0x000a, 0x166e: 0x000a, 0x166f: 0x000a, + 0x1670: 0x000a, 0x1671: 0x000a, 0x1672: 0x000a, 0x1673: 0x000a, 0x1674: 0x000a, 0x1675: 0x000a, + 0x1676: 0x000a, 0x1677: 0x000a, 0x1678: 0x000a, 0x1679: 0x000a, 0x167a: 0x000a, 0x167b: 0x000a, + 0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a, + // Block 0x5a, offset 0x1680 + 0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a, + 0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x003a, 0x1689: 0x002a, 0x168a: 0x003a, 0x168b: 0x002a, + 0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a, + 0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1695: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a, + 0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a, + 0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a, + 0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x009a, + 0x16aa: 0x008a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a, + 0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a, + // Block 0x5b, offset 0x16c0 + 0x16fb: 0x000a, + 0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, 0x16ff: 0x000a, + // Block 0x5c, offset 0x1700 + 0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a, + 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a, + 0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a, + 0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a, + 0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a, + 0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a, + 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a, + 0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a, + 0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a, + 0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a, + 0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a, + // Block 0x5d, offset 0x1740 + 0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a, + 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a, 0x174b: 0x000a, + 0x174c: 0x000a, 0x174d: 0x000a, 0x174e: 0x000a, 0x174f: 0x000a, 0x1750: 0x000a, 0x1751: 0x000a, + 0x1752: 0x000a, 0x1753: 0x000a, 0x1754: 0x000a, 0x1755: 0x000a, 0x1756: 0x000a, 0x1757: 0x000a, + 0x1758: 0x000a, 0x1759: 0x000a, 0x175a: 0x000a, 0x175b: 0x000a, 0x175c: 0x000a, 0x175d: 0x000a, + 0x175e: 0x000a, 0x175f: 0x000a, 0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a, + 0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, + // Block 0x5e, offset 0x1780 + 0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a, + 0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x000a, 0x1789: 0x000a, 0x178a: 0x000a, + 0x17a0: 0x000a, 0x17a1: 0x000a, 0x17a2: 0x000a, 0x17a3: 0x000a, + 0x17a4: 0x000a, 0x17a5: 0x000a, 0x17a6: 0x000a, 0x17a7: 0x000a, 0x17a8: 0x000a, 0x17a9: 0x000a, + 0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a, + 0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a, + 0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a, + 0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a, + 0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x0002, 0x17c9: 0x0002, 0x17ca: 0x0002, 0x17cb: 0x0002, + 0x17cc: 0x0002, 0x17cd: 0x0002, 0x17ce: 0x0002, 0x17cf: 0x0002, 0x17d0: 0x0002, 0x17d1: 0x0002, + 0x17d2: 0x0002, 0x17d3: 0x0002, 0x17d4: 0x0002, 0x17d5: 0x0002, 0x17d6: 0x0002, 0x17d7: 0x0002, + 0x17d8: 0x0002, 0x17d9: 0x0002, 0x17da: 0x0002, 0x17db: 0x0002, + // Block 0x60, offset 0x1800 + 0x182a: 0x000a, 0x182b: 0x000a, 0x182c: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a, + 0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a, + 0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a, + 0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a, + // Block 0x61, offset 0x1840 + 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a, + 0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a, + 0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a, + 0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a, + 0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a, + 0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a, + 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x000a, 0x1869: 0x000a, + 0x186a: 0x000a, 0x186b: 0x000a, 0x186d: 0x000a, 0x186e: 0x000a, 0x186f: 0x000a, + 0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a, + 0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a, + 0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a, + // Block 0x62, offset 0x1880 + 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x000a, + 0x1886: 0x000a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a, + 0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a, + 0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a, + 0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a, + 0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a, + 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x003a, 0x18a9: 0x002a, + 0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a, + 0x18b0: 0x003a, 0x18b1: 0x002a, 0x18b2: 0x003a, 0x18b3: 0x002a, 0x18b4: 0x003a, 0x18b5: 0x002a, + 0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a, + 0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x009a, + 0x18c6: 0x008a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a, + 0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a, + 0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a, + 0x18d8: 0x000a, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a, + 0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a, + 0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x003a, 0x18e7: 0x002a, 0x18e8: 0x003a, 0x18e9: 0x002a, + 0x18ea: 0x003a, 0x18eb: 0x002a, 0x18ec: 0x003a, 0x18ed: 0x002a, 0x18ee: 0x003a, 0x18ef: 0x002a, + 0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a, + 0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a, + 0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a, + // Block 0x64, offset 0x1900 + 0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x007a, 0x1904: 0x006a, 0x1905: 0x009a, + 0x1906: 0x008a, 0x1907: 0x00ba, 0x1908: 0x00aa, 0x1909: 0x009a, 0x190a: 0x008a, 0x190b: 0x007a, + 0x190c: 0x006a, 0x190d: 0x00da, 0x190e: 0x002a, 0x190f: 0x003a, 0x1910: 0x00ca, 0x1911: 0x009a, + 0x1912: 0x008a, 0x1913: 0x007a, 0x1914: 0x006a, 0x1915: 0x009a, 0x1916: 0x008a, 0x1917: 0x00ba, + 0x1918: 0x00aa, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a, + 0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a, + 0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a, + 0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a, + 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a, + 0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a, + 0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a, + // Block 0x65, offset 0x1940 + 0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a, + 0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a, + 0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a, + 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a, + 0x1958: 0x003a, 0x1959: 0x002a, 0x195a: 0x003a, 0x195b: 0x002a, 0x195c: 0x000a, 0x195d: 0x000a, + 0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a, + 0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a, + 0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a, + 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a, + 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a, + 0x197c: 0x003a, 0x197d: 0x002a, 0x197e: 0x000a, 0x197f: 0x000a, + // Block 0x66, offset 0x1980 + 0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a, + 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a, + 0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a, + 0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1996: 0x000a, 0x1997: 0x000a, + 0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a, + 0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a, + 0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a, + 0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a, + 0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, + 0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a, + 0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a, + 0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19c9: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a, + 0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a, + 0x19d2: 0x000a, 0x19d3: 0x000a, 0x19d4: 0x000a, 0x19d5: 0x000a, 0x19d7: 0x000a, + 0x19d8: 0x000a, 0x19d9: 0x000a, 0x19da: 0x000a, 0x19db: 0x000a, 0x19dc: 0x000a, 0x19dd: 0x000a, + 0x19de: 0x000a, 0x19df: 0x000a, 0x19e0: 0x000a, 0x19e1: 0x000a, 0x19e2: 0x000a, 0x19e3: 0x000a, + 0x19e4: 0x000a, 0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a, + 0x19ea: 0x000a, 0x19eb: 0x000a, 0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a, + 0x19f0: 0x000a, 0x19f1: 0x000a, 0x19f2: 0x000a, 0x19f3: 0x000a, 0x19f4: 0x000a, 0x19f5: 0x000a, + 0x19f6: 0x000a, 0x19f7: 0x000a, 0x19f8: 0x000a, 0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a, + 0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a, + // Block 0x68, offset 0x1a00 + 0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a, + 0x1a2a: 0x000a, 0x1a2f: 0x000c, + 0x1a30: 0x000c, 0x1a31: 0x000c, + 0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a, + 0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a, + // Block 0x69, offset 0x1a40 + 0x1a7f: 0x000c, + // Block 0x6a, offset 0x1a80 + 0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c, + 0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c, + 0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c, + 0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c, + 0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c, + 0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a, + 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a, + 0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a, + 0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a, + 0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a, + 0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a, + 0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a, + 0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a, + 0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a, + 0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a, + 0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a, + 0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a, + 0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a, + 0x1b12: 0x000a, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a, + 0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a, + 0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a, + 0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a, + 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a, + 0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a, + 0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a, + 0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a, + 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a, + 0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a, + 0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a, + 0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a, + 0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a, + 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a, + 0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a, + 0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a, + 0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a, + 0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a, + 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a, + 0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a, + 0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a, + 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a, + 0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a, + 0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a, + // Block 0x70, offset 0x1c00 + 0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a, + 0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a, + 0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a, + 0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a, + 0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a, + 0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a, + 0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c, + 0x1c30: 0x000a, + 0x1c36: 0x000a, 0x1c37: 0x000a, + 0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a, + // Block 0x71, offset 0x1c40 + 0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a, + 0x1c60: 0x000a, + // Block 0x72, offset 0x1c80 + 0x1cbb: 0x000a, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a, + 0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a, + 0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a, + 0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a, + 0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a, + 0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a, + // Block 0x74, offset 0x1d00 + 0x1d1d: 0x000a, + 0x1d1e: 0x000a, + // Block 0x75, offset 0x1d40 + 0x1d50: 0x000a, 0x1d51: 0x000a, + 0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a, + 0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a, + 0x1d5e: 0x000a, 0x1d5f: 0x000a, + 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, + // Block 0x76, offset 0x1d80 + 0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a, + 0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a, + 0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a, + // Block 0x77, offset 0x1dc0 + 0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a, + // Block 0x78, offset 0x1e00 + 0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a, + // Block 0x79, offset 0x1e40 + 0x1e5e: 0x000a, 0x1e5f: 0x000a, + 0x1e7f: 0x000a, + // Block 0x7a, offset 0x1e80 + 0x1e90: 0x000a, 0x1e91: 0x000a, + 0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a, + 0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a, + 0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a, + 0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a, + 0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a, + 0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a, + 0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a, + 0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a, + 0x1ec6: 0x000a, + // Block 0x7c, offset 0x1f00 + 0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a, + // Block 0x7d, offset 0x1f40 + 0x1f6f: 0x000c, + 0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c, + 0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c, + 0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a, + // Block 0x7e, offset 0x1f80 + 0x1f9e: 0x000c, 0x1f9f: 0x000c, + // Block 0x7f, offset 0x1fc0 + 0x1ff0: 0x000c, 0x1ff1: 0x000c, + // Block 0x80, offset 0x2000 + 0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a, + 0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a, + 0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a, + 0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a, + 0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a, + 0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a, + // Block 0x81, offset 0x2040 + 0x2048: 0x000a, + // Block 0x82, offset 0x2080 + 0x2082: 0x000c, + 0x2086: 0x000c, 0x208b: 0x000c, + 0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a, + 0x20aa: 0x000a, 0x20ab: 0x000a, 0x20ac: 0x000c, + 0x20b8: 0x0004, 0x20b9: 0x0004, + // Block 0x83, offset 0x20c0 + 0x20f4: 0x000a, 0x20f5: 0x000a, + 0x20f6: 0x000a, 0x20f7: 0x000a, + // Block 0x84, offset 0x2100 + 0x2104: 0x000c, 0x2105: 0x000c, + 0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c, + 0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c, + 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c, + 0x2130: 0x000c, 0x2131: 0x000c, + 0x213f: 0x000c, + // Block 0x85, offset 0x2140 + 0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c, + 0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c, + // Block 0x86, offset 0x2180 + 0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c, + 0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c, + // Block 0x87, offset 0x21c0 + 0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c, + 0x21f3: 0x000c, + 0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c, + 0x21fc: 0x000c, 0x21fd: 0x000c, + // Block 0x88, offset 0x2200 + 0x2225: 0x000c, + // Block 0x89, offset 0x2240 + 0x2269: 0x000c, + 0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c, + 0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c, + 0x2276: 0x000c, + // Block 0x8a, offset 0x2280 + 0x2283: 0x000c, + 0x228c: 0x000c, + 0x22bc: 0x000c, + // Block 0x8b, offset 0x22c0 + 0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c, + 0x22f7: 0x000c, 0x22f8: 0x000c, + 0x22fe: 0x000c, 0x22ff: 0x000c, + // Block 0x8c, offset 0x2300 + 0x2301: 0x000c, + 0x232c: 0x000c, 0x232d: 0x000c, + 0x2336: 0x000c, + // Block 0x8d, offset 0x2340 + 0x236a: 0x000a, 0x236b: 0x000a, + // Block 0x8e, offset 0x2380 + 0x23a5: 0x000c, 0x23a8: 0x000c, + 0x23ad: 0x000c, + // Block 0x8f, offset 0x23c0 + 0x23dd: 0x0001, + 0x23de: 0x000c, 0x23df: 0x0001, 0x23e0: 0x0001, 0x23e1: 0x0001, 0x23e2: 0x0001, 0x23e3: 0x0001, + 0x23e4: 0x0001, 0x23e5: 0x0001, 0x23e6: 0x0001, 0x23e7: 0x0001, 0x23e8: 0x0001, 0x23e9: 0x0003, + 0x23ea: 0x0001, 0x23eb: 0x0001, 0x23ec: 0x0001, 0x23ed: 0x0001, 0x23ee: 0x0001, 0x23ef: 0x0001, + 0x23f0: 0x0001, 0x23f1: 0x0001, 0x23f2: 0x0001, 0x23f3: 0x0001, 0x23f4: 0x0001, 0x23f5: 0x0001, + 0x23f6: 0x0001, 0x23f7: 0x0001, 0x23f8: 0x0001, 0x23f9: 0x0001, 0x23fa: 0x0001, 0x23fb: 0x0001, + 0x23fc: 0x0001, 0x23fd: 0x0001, 0x23fe: 0x0001, 0x23ff: 0x0001, + // Block 0x90, offset 0x2400 + 0x2400: 0x0001, 0x2401: 0x0001, 0x2402: 0x0001, 0x2403: 0x0001, 0x2404: 0x0001, 0x2405: 0x0001, + 0x2406: 0x0001, 0x2407: 0x0001, 0x2408: 0x0001, 0x2409: 0x0001, 0x240a: 0x0001, 0x240b: 0x0001, + 0x240c: 0x0001, 0x240d: 0x0001, 0x240e: 0x0001, 0x240f: 0x0001, 0x2410: 0x000d, 0x2411: 0x000d, + 0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d, + 0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d, + 0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d, + 0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d, + 0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d, + 0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d, + 0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d, + 0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000d, 0x243f: 0x000d, + // Block 0x91, offset 0x2440 + 0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d, + 0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d, + 0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000d, 0x2451: 0x000d, + 0x2452: 0x000d, 0x2453: 0x000d, 0x2454: 0x000d, 0x2455: 0x000d, 0x2456: 0x000d, 0x2457: 0x000d, + 0x2458: 0x000d, 0x2459: 0x000d, 0x245a: 0x000d, 0x245b: 0x000d, 0x245c: 0x000d, 0x245d: 0x000d, + 0x245e: 0x000d, 0x245f: 0x000d, 0x2460: 0x000d, 0x2461: 0x000d, 0x2462: 0x000d, 0x2463: 0x000d, + 0x2464: 0x000d, 0x2465: 0x000d, 0x2466: 0x000d, 0x2467: 0x000d, 0x2468: 0x000d, 0x2469: 0x000d, + 0x246a: 0x000d, 0x246b: 0x000d, 0x246c: 0x000d, 0x246d: 0x000d, 0x246e: 0x000d, 0x246f: 0x000d, + 0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d, + 0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d, + 0x247c: 0x000d, 0x247d: 0x000d, 0x247e: 0x000a, 0x247f: 0x000a, + // Block 0x92, offset 0x2480 + 0x2480: 0x000d, 0x2481: 0x000d, 0x2482: 0x000d, 0x2483: 0x000d, 0x2484: 0x000d, 0x2485: 0x000d, + 0x2486: 0x000d, 0x2487: 0x000d, 0x2488: 0x000d, 0x2489: 0x000d, 0x248a: 0x000d, 0x248b: 0x000d, + 0x248c: 0x000d, 0x248d: 0x000d, 0x248e: 0x000d, 0x248f: 0x000d, 0x2490: 0x000b, 0x2491: 0x000b, + 0x2492: 0x000b, 0x2493: 0x000b, 0x2494: 0x000b, 0x2495: 0x000b, 0x2496: 0x000b, 0x2497: 0x000b, + 0x2498: 0x000b, 0x2499: 0x000b, 0x249a: 0x000b, 0x249b: 0x000b, 0x249c: 0x000b, 0x249d: 0x000b, + 0x249e: 0x000b, 0x249f: 0x000b, 0x24a0: 0x000b, 0x24a1: 0x000b, 0x24a2: 0x000b, 0x24a3: 0x000b, + 0x24a4: 0x000b, 0x24a5: 0x000b, 0x24a6: 0x000b, 0x24a7: 0x000b, 0x24a8: 0x000b, 0x24a9: 0x000b, + 0x24aa: 0x000b, 0x24ab: 0x000b, 0x24ac: 0x000b, 0x24ad: 0x000b, 0x24ae: 0x000b, 0x24af: 0x000b, + 0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d, + 0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d, + 0x24bc: 0x000d, 0x24bd: 0x000a, 0x24be: 0x000d, 0x24bf: 0x000d, + // Block 0x93, offset 0x24c0 + 0x24c0: 0x000c, 0x24c1: 0x000c, 0x24c2: 0x000c, 0x24c3: 0x000c, 0x24c4: 0x000c, 0x24c5: 0x000c, + 0x24c6: 0x000c, 0x24c7: 0x000c, 0x24c8: 0x000c, 0x24c9: 0x000c, 0x24ca: 0x000c, 0x24cb: 0x000c, + 0x24cc: 0x000c, 0x24cd: 0x000c, 0x24ce: 0x000c, 0x24cf: 0x000c, 0x24d0: 0x000a, 0x24d1: 0x000a, + 0x24d2: 0x000a, 0x24d3: 0x000a, 0x24d4: 0x000a, 0x24d5: 0x000a, 0x24d6: 0x000a, 0x24d7: 0x000a, + 0x24d8: 0x000a, 0x24d9: 0x000a, + 0x24e0: 0x000c, 0x24e1: 0x000c, 0x24e2: 0x000c, 0x24e3: 0x000c, + 0x24e4: 0x000c, 0x24e5: 0x000c, 0x24e6: 0x000c, 0x24e7: 0x000c, 0x24e8: 0x000c, 0x24e9: 0x000c, + 0x24ea: 0x000c, 0x24eb: 0x000c, 0x24ec: 0x000c, 0x24ed: 0x000c, 0x24ee: 0x000c, 0x24ef: 0x000c, + 0x24f0: 0x000a, 0x24f1: 0x000a, 0x24f2: 0x000a, 0x24f3: 0x000a, 0x24f4: 0x000a, 0x24f5: 0x000a, + 0x24f6: 0x000a, 0x24f7: 0x000a, 0x24f8: 0x000a, 0x24f9: 0x000a, 0x24fa: 0x000a, 0x24fb: 0x000a, + 0x24fc: 0x000a, 0x24fd: 0x000a, 0x24fe: 0x000a, 0x24ff: 0x000a, + // Block 0x94, offset 0x2500 + 0x2500: 0x000a, 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x000a, 0x2504: 0x000a, 0x2505: 0x000a, + 0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x000a, 0x2509: 0x000a, 0x250a: 0x000a, 0x250b: 0x000a, + 0x250c: 0x000a, 0x250d: 0x000a, 0x250e: 0x000a, 0x250f: 0x000a, 0x2510: 0x0006, 0x2511: 0x000a, + 0x2512: 0x0006, 0x2514: 0x000a, 0x2515: 0x0006, 0x2516: 0x000a, 0x2517: 0x000a, + 0x2518: 0x000a, 0x2519: 0x009a, 0x251a: 0x008a, 0x251b: 0x007a, 0x251c: 0x006a, 0x251d: 0x009a, + 0x251e: 0x008a, 0x251f: 0x0004, 0x2520: 0x000a, 0x2521: 0x000a, 0x2522: 0x0003, 0x2523: 0x0003, + 0x2524: 0x000a, 0x2525: 0x000a, 0x2526: 0x000a, 0x2528: 0x000a, 0x2529: 0x0004, + 0x252a: 0x0004, 0x252b: 0x000a, + 0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d, + 0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d, + 0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000d, + // Block 0x95, offset 0x2540 + 0x2540: 0x000d, 0x2541: 0x000d, 0x2542: 0x000d, 0x2543: 0x000d, 0x2544: 0x000d, 0x2545: 0x000d, + 0x2546: 0x000d, 0x2547: 0x000d, 0x2548: 0x000d, 0x2549: 0x000d, 0x254a: 0x000d, 0x254b: 0x000d, + 0x254c: 0x000d, 0x254d: 0x000d, 0x254e: 0x000d, 0x254f: 0x000d, 0x2550: 0x000d, 0x2551: 0x000d, + 0x2552: 0x000d, 0x2553: 0x000d, 0x2554: 0x000d, 0x2555: 0x000d, 0x2556: 0x000d, 0x2557: 0x000d, + 0x2558: 0x000d, 0x2559: 0x000d, 0x255a: 0x000d, 0x255b: 0x000d, 0x255c: 0x000d, 0x255d: 0x000d, + 0x255e: 0x000d, 0x255f: 0x000d, 0x2560: 0x000d, 0x2561: 0x000d, 0x2562: 0x000d, 0x2563: 0x000d, + 0x2564: 0x000d, 0x2565: 0x000d, 0x2566: 0x000d, 0x2567: 0x000d, 0x2568: 0x000d, 0x2569: 0x000d, + 0x256a: 0x000d, 0x256b: 0x000d, 0x256c: 0x000d, 0x256d: 0x000d, 0x256e: 0x000d, 0x256f: 0x000d, + 0x2570: 0x000d, 0x2571: 0x000d, 0x2572: 0x000d, 0x2573: 0x000d, 0x2574: 0x000d, 0x2575: 0x000d, + 0x2576: 0x000d, 0x2577: 0x000d, 0x2578: 0x000d, 0x2579: 0x000d, 0x257a: 0x000d, 0x257b: 0x000d, + 0x257c: 0x000d, 0x257d: 0x000d, 0x257e: 0x000d, 0x257f: 0x000b, + // Block 0x96, offset 0x2580 + 0x2581: 0x000a, 0x2582: 0x000a, 0x2583: 0x0004, 0x2584: 0x0004, 0x2585: 0x0004, + 0x2586: 0x000a, 0x2587: 0x000a, 0x2588: 0x003a, 0x2589: 0x002a, 0x258a: 0x000a, 0x258b: 0x0003, + 0x258c: 0x0006, 0x258d: 0x0003, 0x258e: 0x0006, 0x258f: 0x0006, 0x2590: 0x0002, 0x2591: 0x0002, + 0x2592: 0x0002, 0x2593: 0x0002, 0x2594: 0x0002, 0x2595: 0x0002, 0x2596: 0x0002, 0x2597: 0x0002, + 0x2598: 0x0002, 0x2599: 0x0002, 0x259a: 0x0006, 0x259b: 0x000a, 0x259c: 0x000a, 0x259d: 0x000a, + 0x259e: 0x000a, 0x259f: 0x000a, 0x25a0: 0x000a, + 0x25bb: 0x005a, + 0x25bc: 0x000a, 0x25bd: 0x004a, 0x25be: 0x000a, 0x25bf: 0x000a, + // Block 0x97, offset 0x25c0 + 0x25c0: 0x000a, + 0x25db: 0x005a, 0x25dc: 0x000a, 0x25dd: 0x004a, + 0x25de: 0x000a, 0x25df: 0x00fa, 0x25e0: 0x00ea, 0x25e1: 0x000a, 0x25e2: 0x003a, 0x25e3: 0x002a, + 0x25e4: 0x000a, 0x25e5: 0x000a, + // Block 0x98, offset 0x2600 + 0x2620: 0x0004, 0x2621: 0x0004, 0x2622: 0x000a, 0x2623: 0x000a, + 0x2624: 0x000a, 0x2625: 0x0004, 0x2626: 0x0004, 0x2628: 0x000a, 0x2629: 0x000a, + 0x262a: 0x000a, 0x262b: 0x000a, 0x262c: 0x000a, 0x262d: 0x000a, 0x262e: 0x000a, + 0x2630: 0x000b, 0x2631: 0x000b, 0x2632: 0x000b, 0x2633: 0x000b, 0x2634: 0x000b, 0x2635: 0x000b, + 0x2636: 0x000b, 0x2637: 0x000b, 0x2638: 0x000b, 0x2639: 0x000a, 0x263a: 0x000a, 0x263b: 0x000a, + 0x263c: 0x000a, 0x263d: 0x000a, 0x263e: 0x000b, 0x263f: 0x000b, + // Block 0x99, offset 0x2640 + 0x2641: 0x000a, + // Block 0x9a, offset 0x2680 + 0x2680: 0x000a, 0x2681: 0x000a, 0x2682: 0x000a, 0x2683: 0x000a, 0x2684: 0x000a, 0x2685: 0x000a, + 0x2686: 0x000a, 0x2687: 0x000a, 0x2688: 0x000a, 0x2689: 0x000a, 0x268a: 0x000a, 0x268b: 0x000a, + 0x268c: 0x000a, 0x2690: 0x000a, 0x2691: 0x000a, + 0x2692: 0x000a, 0x2693: 0x000a, 0x2694: 0x000a, 0x2695: 0x000a, 0x2696: 0x000a, 0x2697: 0x000a, + 0x2698: 0x000a, 0x2699: 0x000a, 0x269a: 0x000a, 0x269b: 0x000a, 0x269c: 0x000a, + 0x26a0: 0x000a, + // Block 0x9b, offset 0x26c0 + 0x26fd: 0x000c, + // Block 0x9c, offset 0x2700 + 0x2720: 0x000c, 0x2721: 0x0002, 0x2722: 0x0002, 0x2723: 0x0002, + 0x2724: 0x0002, 0x2725: 0x0002, 0x2726: 0x0002, 0x2727: 0x0002, 0x2728: 0x0002, 0x2729: 0x0002, + 0x272a: 0x0002, 0x272b: 0x0002, 0x272c: 0x0002, 0x272d: 0x0002, 0x272e: 0x0002, 0x272f: 0x0002, + 0x2730: 0x0002, 0x2731: 0x0002, 0x2732: 0x0002, 0x2733: 0x0002, 0x2734: 0x0002, 0x2735: 0x0002, + 0x2736: 0x0002, 0x2737: 0x0002, 0x2738: 0x0002, 0x2739: 0x0002, 0x273a: 0x0002, 0x273b: 0x0002, + // Block 0x9d, offset 0x2740 + 0x2776: 0x000c, 0x2777: 0x000c, 0x2778: 0x000c, 0x2779: 0x000c, 0x277a: 0x000c, + // Block 0x9e, offset 0x2780 + 0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001, + 0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001, + 0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001, + 0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001, + 0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001, + 0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001, + 0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001, + 0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001, + 0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001, + 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001, + 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001, + // Block 0x9f, offset 0x27c0 + 0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001, + 0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001, + 0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001, + 0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001, + 0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001, + 0x27de: 0x0001, 0x27df: 0x000a, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001, + 0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001, + 0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001, + 0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001, + 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001, + 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001, + // Block 0xa0, offset 0x2800 + 0x2800: 0x0001, 0x2801: 0x000c, 0x2802: 0x000c, 0x2803: 0x000c, 0x2804: 0x0001, 0x2805: 0x000c, + 0x2806: 0x000c, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001, + 0x280c: 0x000c, 0x280d: 0x000c, 0x280e: 0x000c, 0x280f: 0x000c, 0x2810: 0x0001, 0x2811: 0x0001, + 0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001, + 0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001, + 0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001, + 0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001, + 0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001, + 0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001, + 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x000c, 0x2839: 0x000c, 0x283a: 0x000c, 0x283b: 0x0001, + 0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x000c, + // Block 0xa1, offset 0x2840 + 0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001, + 0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001, + 0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001, + 0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001, + 0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001, + 0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001, + 0x2864: 0x0001, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001, + 0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001, + 0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001, + 0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x0001, 0x287a: 0x0001, 0x287b: 0x0001, + 0x287c: 0x0001, 0x287d: 0x0001, 0x287e: 0x0001, 0x287f: 0x0001, + // Block 0xa2, offset 0x2880 + 0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001, + 0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001, + 0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001, + 0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001, + 0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001, + 0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0001, 0x28a1: 0x0001, 0x28a2: 0x0001, 0x28a3: 0x0001, + 0x28a4: 0x0001, 0x28a5: 0x0001, 0x28a6: 0x0001, 0x28a7: 0x0001, 0x28a8: 0x0001, 0x28a9: 0x0001, + 0x28aa: 0x0001, 0x28ab: 0x0001, 0x28ac: 0x0001, 0x28ad: 0x0001, 0x28ae: 0x0001, 0x28af: 0x0001, + 0x28b0: 0x0001, 0x28b1: 0x0001, 0x28b2: 0x0001, 0x28b3: 0x0001, 0x28b4: 0x0001, 0x28b5: 0x0001, + 0x28b6: 0x0001, 0x28b7: 0x0001, 0x28b8: 0x0001, 0x28b9: 0x000a, 0x28ba: 0x000a, 0x28bb: 0x000a, + 0x28bc: 0x000a, 0x28bd: 0x000a, 0x28be: 0x000a, 0x28bf: 0x000a, + // Block 0xa3, offset 0x28c0 + 0x28c0: 0x000d, 0x28c1: 0x000d, 0x28c2: 0x000d, 0x28c3: 0x000d, 0x28c4: 0x000d, 0x28c5: 0x000d, + 0x28c6: 0x000d, 0x28c7: 0x000d, 0x28c8: 0x000d, 0x28c9: 0x000d, 0x28ca: 0x000d, 0x28cb: 0x000d, + 0x28cc: 0x000d, 0x28cd: 0x000d, 0x28ce: 0x000d, 0x28cf: 0x000d, 0x28d0: 0x000d, 0x28d1: 0x000d, + 0x28d2: 0x000d, 0x28d3: 0x000d, 0x28d4: 0x000d, 0x28d5: 0x000d, 0x28d6: 0x000d, 0x28d7: 0x000d, + 0x28d8: 0x000d, 0x28d9: 0x000d, 0x28da: 0x000d, 0x28db: 0x000d, 0x28dc: 0x000d, 0x28dd: 0x000d, + 0x28de: 0x000d, 0x28df: 0x000d, 0x28e0: 0x000d, 0x28e1: 0x000d, 0x28e2: 0x000d, 0x28e3: 0x000d, + 0x28e4: 0x000c, 0x28e5: 0x000c, 0x28e6: 0x000c, 0x28e7: 0x000c, 0x28e8: 0x000d, 0x28e9: 0x000d, + 0x28ea: 0x000d, 0x28eb: 0x000d, 0x28ec: 0x000d, 0x28ed: 0x000d, 0x28ee: 0x000d, 0x28ef: 0x000d, + 0x28f0: 0x0005, 0x28f1: 0x0005, 0x28f2: 0x0005, 0x28f3: 0x0005, 0x28f4: 0x0005, 0x28f5: 0x0005, + 0x28f6: 0x0005, 0x28f7: 0x0005, 0x28f8: 0x0005, 0x28f9: 0x0005, 0x28fa: 0x000d, 0x28fb: 0x000d, + 0x28fc: 0x000d, 0x28fd: 0x000d, 0x28fe: 0x000d, 0x28ff: 0x000d, + // Block 0xa4, offset 0x2900 + 0x2900: 0x0001, 0x2901: 0x0001, 0x2902: 0x0001, 0x2903: 0x0001, 0x2904: 0x0001, 0x2905: 0x0001, + 0x2906: 0x0001, 0x2907: 0x0001, 0x2908: 0x0001, 0x2909: 0x0001, 0x290a: 0x0001, 0x290b: 0x0001, + 0x290c: 0x0001, 0x290d: 0x0001, 0x290e: 0x0001, 0x290f: 0x0001, 0x2910: 0x0001, 0x2911: 0x0001, + 0x2912: 0x0001, 0x2913: 0x0001, 0x2914: 0x0001, 0x2915: 0x0001, 0x2916: 0x0001, 0x2917: 0x0001, + 0x2918: 0x0001, 0x2919: 0x0001, 0x291a: 0x0001, 0x291b: 0x0001, 0x291c: 0x0001, 0x291d: 0x0001, + 0x291e: 0x0001, 0x291f: 0x0001, 0x2920: 0x0005, 0x2921: 0x0005, 0x2922: 0x0005, 0x2923: 0x0005, + 0x2924: 0x0005, 0x2925: 0x0005, 0x2926: 0x0005, 0x2927: 0x0005, 0x2928: 0x0005, 0x2929: 0x0005, + 0x292a: 0x0005, 0x292b: 0x0005, 0x292c: 0x0005, 0x292d: 0x0005, 0x292e: 0x0005, 0x292f: 0x0005, + 0x2930: 0x0005, 0x2931: 0x0005, 0x2932: 0x0005, 0x2933: 0x0005, 0x2934: 0x0005, 0x2935: 0x0005, + 0x2936: 0x0005, 0x2937: 0x0005, 0x2938: 0x0005, 0x2939: 0x0005, 0x293a: 0x0005, 0x293b: 0x0005, + 0x293c: 0x0005, 0x293d: 0x0005, 0x293e: 0x0005, 0x293f: 0x0001, + // Block 0xa5, offset 0x2940 + 0x2940: 0x0001, 0x2941: 0x0001, 0x2942: 0x0001, 0x2943: 0x0001, 0x2944: 0x0001, 0x2945: 0x0001, + 0x2946: 0x0001, 0x2947: 0x0001, 0x2948: 0x0001, 0x2949: 0x0001, 0x294a: 0x0001, 0x294b: 0x0001, + 0x294c: 0x0001, 0x294d: 0x0001, 0x294e: 0x0001, 0x294f: 0x0001, 0x2950: 0x0001, 0x2951: 0x0001, + 0x2952: 0x0001, 0x2953: 0x0001, 0x2954: 0x0001, 0x2955: 0x0001, 0x2956: 0x0001, 0x2957: 0x0001, + 0x2958: 0x0001, 0x2959: 0x0001, 0x295a: 0x0001, 0x295b: 0x0001, 0x295c: 0x0001, 0x295d: 0x0001, + 0x295e: 0x0001, 0x295f: 0x0001, 0x2960: 0x0001, 0x2961: 0x0001, 0x2962: 0x0001, 0x2963: 0x0001, + 0x2964: 0x0001, 0x2965: 0x0001, 0x2966: 0x0001, 0x2967: 0x0001, 0x2968: 0x0001, 0x2969: 0x0001, + 0x296a: 0x0001, 0x296b: 0x000c, 0x296c: 0x000c, 0x296d: 0x0001, 0x296e: 0x0001, 0x296f: 0x0001, + 0x2970: 0x0001, 0x2971: 0x0001, 0x2972: 0x0001, 0x2973: 0x0001, 0x2974: 0x0001, 0x2975: 0x0001, + 0x2976: 0x0001, 0x2977: 0x0001, 0x2978: 0x0001, 0x2979: 0x0001, 0x297a: 0x0001, 0x297b: 0x0001, + 0x297c: 0x0001, 0x297d: 0x0001, 0x297e: 0x0001, 0x297f: 0x0001, + // Block 0xa6, offset 0x2980 + 0x2980: 0x0001, 0x2981: 0x0001, 0x2982: 0x0001, 0x2983: 0x0001, 0x2984: 0x0001, 0x2985: 0x0001, + 0x2986: 0x0001, 0x2987: 0x0001, 0x2988: 0x0001, 0x2989: 0x0001, 0x298a: 0x0001, 0x298b: 0x0001, + 0x298c: 0x0001, 0x298d: 0x0001, 0x298e: 0x0001, 0x298f: 0x0001, 0x2990: 0x0001, 0x2991: 0x0001, + 0x2992: 0x0001, 0x2993: 0x0001, 0x2994: 0x0001, 0x2995: 0x0001, 0x2996: 0x0001, 0x2997: 0x0001, + 0x2998: 0x0001, 0x2999: 0x0001, 0x299a: 0x0001, 0x299b: 0x0001, 0x299c: 0x0001, 0x299d: 0x0001, + 0x299e: 0x0001, 0x299f: 0x0001, 0x29a0: 0x0001, 0x29a1: 0x0001, 0x29a2: 0x0001, 0x29a3: 0x0001, + 0x29a4: 0x0001, 0x29a5: 0x0001, 0x29a6: 0x0001, 0x29a7: 0x0001, 0x29a8: 0x0001, 0x29a9: 0x0001, + 0x29aa: 0x0001, 0x29ab: 0x0001, 0x29ac: 0x0001, 0x29ad: 0x0001, 0x29ae: 0x0001, 0x29af: 0x0001, + 0x29b0: 0x000d, 0x29b1: 0x000d, 0x29b2: 0x000d, 0x29b3: 0x000d, 0x29b4: 0x000d, 0x29b5: 0x000d, + 0x29b6: 0x000d, 0x29b7: 0x000d, 0x29b8: 0x000d, 0x29b9: 0x000d, 0x29ba: 0x000d, 0x29bb: 0x000d, + 0x29bc: 0x000d, 0x29bd: 0x000d, 0x29be: 0x000d, 0x29bf: 0x000d, + // Block 0xa7, offset 0x29c0 + 0x29c0: 0x000d, 0x29c1: 0x000d, 0x29c2: 0x000d, 0x29c3: 0x000d, 0x29c4: 0x000d, 0x29c5: 0x000d, + 0x29c6: 0x000c, 0x29c7: 0x000c, 0x29c8: 0x000c, 0x29c9: 0x000c, 0x29ca: 0x000c, 0x29cb: 0x000c, + 0x29cc: 0x000c, 0x29cd: 0x000c, 0x29ce: 0x000c, 0x29cf: 0x000c, 0x29d0: 0x000c, 0x29d1: 0x000d, + 0x29d2: 0x000d, 0x29d3: 0x000d, 0x29d4: 0x000d, 0x29d5: 0x000d, 0x29d6: 0x000d, 0x29d7: 0x000d, + 0x29d8: 0x000d, 0x29d9: 0x000d, 0x29da: 0x000d, 0x29db: 0x000d, 0x29dc: 0x000d, 0x29dd: 0x000d, + 0x29de: 0x000d, 0x29df: 0x000d, 0x29e0: 0x000d, 0x29e1: 0x000d, 0x29e2: 0x000d, 0x29e3: 0x000d, + 0x29e4: 0x000d, 0x29e5: 0x000d, 0x29e6: 0x000d, 0x29e7: 0x000d, 0x29e8: 0x000d, 0x29e9: 0x000d, + 0x29ea: 0x000d, 0x29eb: 0x000d, 0x29ec: 0x000d, 0x29ed: 0x000d, 0x29ee: 0x000d, 0x29ef: 0x000d, + 0x29f0: 0x0001, 0x29f1: 0x0001, 0x29f2: 0x0001, 0x29f3: 0x0001, 0x29f4: 0x0001, 0x29f5: 0x0001, + 0x29f6: 0x0001, 0x29f7: 0x0001, 0x29f8: 0x0001, 0x29f9: 0x0001, 0x29fa: 0x0001, 0x29fb: 0x0001, + 0x29fc: 0x0001, 0x29fd: 0x0001, 0x29fe: 0x0001, 0x29ff: 0x0001, + // Block 0xa8, offset 0x2a00 + 0x2a01: 0x000c, + 0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c, + 0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c, 0x2a3f: 0x000c, + // Block 0xa9, offset 0x2a40 + 0x2a40: 0x000c, 0x2a41: 0x000c, 0x2a42: 0x000c, 0x2a43: 0x000c, 0x2a44: 0x000c, 0x2a45: 0x000c, + 0x2a46: 0x000c, + 0x2a52: 0x000a, 0x2a53: 0x000a, 0x2a54: 0x000a, 0x2a55: 0x000a, 0x2a56: 0x000a, 0x2a57: 0x000a, + 0x2a58: 0x000a, 0x2a59: 0x000a, 0x2a5a: 0x000a, 0x2a5b: 0x000a, 0x2a5c: 0x000a, 0x2a5d: 0x000a, + 0x2a5e: 0x000a, 0x2a5f: 0x000a, 0x2a60: 0x000a, 0x2a61: 0x000a, 0x2a62: 0x000a, 0x2a63: 0x000a, + 0x2a64: 0x000a, 0x2a65: 0x000a, + 0x2a7f: 0x000c, + // Block 0xaa, offset 0x2a80 + 0x2a80: 0x000c, 0x2a81: 0x000c, + 0x2ab3: 0x000c, 0x2ab4: 0x000c, 0x2ab5: 0x000c, + 0x2ab6: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c, + // Block 0xab, offset 0x2ac0 + 0x2ac0: 0x000c, 0x2ac1: 0x000c, 0x2ac2: 0x000c, + 0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c, + 0x2aea: 0x000c, 0x2aeb: 0x000c, 0x2aed: 0x000c, 0x2aee: 0x000c, 0x2aef: 0x000c, + 0x2af0: 0x000c, 0x2af1: 0x000c, 0x2af2: 0x000c, 0x2af3: 0x000c, 0x2af4: 0x000c, + // Block 0xac, offset 0x2b00 + 0x2b33: 0x000c, + // Block 0xad, offset 0x2b40 + 0x2b40: 0x000c, 0x2b41: 0x000c, + 0x2b76: 0x000c, 0x2b77: 0x000c, 0x2b78: 0x000c, 0x2b79: 0x000c, 0x2b7a: 0x000c, 0x2b7b: 0x000c, + 0x2b7c: 0x000c, 0x2b7d: 0x000c, 0x2b7e: 0x000c, + // Block 0xae, offset 0x2b80 + 0x2b89: 0x000c, 0x2b8a: 0x000c, 0x2b8b: 0x000c, + 0x2b8c: 0x000c, 0x2b8f: 0x000c, + // Block 0xaf, offset 0x2bc0 + 0x2bef: 0x000c, + 0x2bf0: 0x000c, 0x2bf1: 0x000c, 0x2bf4: 0x000c, + 0x2bf6: 0x000c, 0x2bf7: 0x000c, + 0x2bfe: 0x000c, + // Block 0xb0, offset 0x2c00 + 0x2c1f: 0x000c, 0x2c23: 0x000c, + 0x2c24: 0x000c, 0x2c25: 0x000c, 0x2c26: 0x000c, 0x2c27: 0x000c, 0x2c28: 0x000c, 0x2c29: 0x000c, + 0x2c2a: 0x000c, + // Block 0xb1, offset 0x2c40 + 0x2c40: 0x000c, + 0x2c66: 0x000c, 0x2c67: 0x000c, 0x2c68: 0x000c, 0x2c69: 0x000c, + 0x2c6a: 0x000c, 0x2c6b: 0x000c, 0x2c6c: 0x000c, + 0x2c70: 0x000c, 0x2c71: 0x000c, 0x2c72: 0x000c, 0x2c73: 0x000c, 0x2c74: 0x000c, + // Block 0xb2, offset 0x2c80 + 0x2cb8: 0x000c, 0x2cb9: 0x000c, 0x2cba: 0x000c, 0x2cbb: 0x000c, + 0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbe: 0x000c, 0x2cbf: 0x000c, + // Block 0xb3, offset 0x2cc0 + 0x2cc2: 0x000c, 0x2cc3: 0x000c, 0x2cc4: 0x000c, + 0x2cc6: 0x000c, + 0x2cde: 0x000c, + // Block 0xb4, offset 0x2d00 + 0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c, + 0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d3a: 0x000c, + 0x2d3f: 0x000c, + // Block 0xb5, offset 0x2d40 + 0x2d40: 0x000c, 0x2d42: 0x000c, 0x2d43: 0x000c, + // Block 0xb6, offset 0x2d80 + 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c, + 0x2dbc: 0x000c, 0x2dbd: 0x000c, 0x2dbf: 0x000c, + // Block 0xb7, offset 0x2dc0 + 0x2dc0: 0x000c, + 0x2ddc: 0x000c, 0x2ddd: 0x000c, + // Block 0xb8, offset 0x2e00 + 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c, + 0x2e36: 0x000c, 0x2e37: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c, + 0x2e3d: 0x000c, 0x2e3f: 0x000c, + // Block 0xb9, offset 0x2e40 + 0x2e40: 0x000c, + 0x2e60: 0x000a, 0x2e61: 0x000a, 0x2e62: 0x000a, 0x2e63: 0x000a, + 0x2e64: 0x000a, 0x2e65: 0x000a, 0x2e66: 0x000a, 0x2e67: 0x000a, 0x2e68: 0x000a, 0x2e69: 0x000a, + 0x2e6a: 0x000a, 0x2e6b: 0x000a, 0x2e6c: 0x000a, + // Block 0xba, offset 0x2e80 + 0x2eab: 0x000c, 0x2ead: 0x000c, + 0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c, + 0x2eb7: 0x000c, + // Block 0xbb, offset 0x2ec0 + 0x2edd: 0x000c, + 0x2ede: 0x000c, 0x2edf: 0x000c, 0x2ee2: 0x000c, 0x2ee3: 0x000c, + 0x2ee4: 0x000c, 0x2ee5: 0x000c, 0x2ee7: 0x000c, 0x2ee8: 0x000c, 0x2ee9: 0x000c, + 0x2eea: 0x000c, 0x2eeb: 0x000c, + // Block 0xbc, offset 0x2f00 + 0x2f2f: 0x000c, + 0x2f30: 0x000c, 0x2f31: 0x000c, 0x2f32: 0x000c, 0x2f33: 0x000c, 0x2f34: 0x000c, 0x2f35: 0x000c, + 0x2f36: 0x000c, 0x2f37: 0x000c, 0x2f39: 0x000c, 0x2f3a: 0x000c, + // Block 0xbd, offset 0x2f40 + 0x2f7b: 0x000c, + 0x2f7c: 0x000c, 0x2f7e: 0x000c, + // Block 0xbe, offset 0x2f80 + 0x2f83: 0x000c, + // Block 0xbf, offset 0x2fc0 + 0x2fd4: 0x000c, 0x2fd5: 0x000c, 0x2fd6: 0x000c, 0x2fd7: 0x000c, + 0x2fda: 0x000c, 0x2fdb: 0x000c, + 0x2fe0: 0x000c, + // Block 0xc0, offset 0x3000 + 0x3001: 0x000c, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000c, + 0x3006: 0x000c, 0x3009: 0x000c, 0x300a: 0x000c, + 0x3033: 0x000c, 0x3034: 0x000c, 0x3035: 0x000c, + 0x3036: 0x000c, 0x3037: 0x000c, 0x3038: 0x000c, 0x303b: 0x000c, + 0x303c: 0x000c, 0x303d: 0x000c, 0x303e: 0x000c, + // Block 0xc1, offset 0x3040 + 0x3047: 0x000c, + 0x3051: 0x000c, + 0x3052: 0x000c, 0x3053: 0x000c, 0x3054: 0x000c, 0x3055: 0x000c, 0x3056: 0x000c, + 0x3059: 0x000c, 0x305a: 0x000c, 0x305b: 0x000c, + // Block 0xc2, offset 0x3080 + 0x308a: 0x000c, 0x308b: 0x000c, + 0x308c: 0x000c, 0x308d: 0x000c, 0x308e: 0x000c, 0x308f: 0x000c, 0x3090: 0x000c, 0x3091: 0x000c, + 0x3092: 0x000c, 0x3093: 0x000c, 0x3094: 0x000c, 0x3095: 0x000c, 0x3096: 0x000c, + 0x3098: 0x000c, 0x3099: 0x000c, + // Block 0xc3, offset 0x30c0 + 0x30f0: 0x000c, 0x30f1: 0x000c, 0x30f2: 0x000c, 0x30f3: 0x000c, 0x30f4: 0x000c, 0x30f5: 0x000c, + 0x30f6: 0x000c, 0x30f8: 0x000c, 0x30f9: 0x000c, 0x30fa: 0x000c, 0x30fb: 0x000c, + 0x30fc: 0x000c, 0x30fd: 0x000c, + // Block 0xc4, offset 0x3100 + 0x3112: 0x000c, 0x3113: 0x000c, 0x3114: 0x000c, 0x3115: 0x000c, 0x3116: 0x000c, 0x3117: 0x000c, + 0x3118: 0x000c, 0x3119: 0x000c, 0x311a: 0x000c, 0x311b: 0x000c, 0x311c: 0x000c, 0x311d: 0x000c, + 0x311e: 0x000c, 0x311f: 0x000c, 0x3120: 0x000c, 0x3121: 0x000c, 0x3122: 0x000c, 0x3123: 0x000c, + 0x3124: 0x000c, 0x3125: 0x000c, 0x3126: 0x000c, 0x3127: 0x000c, + 0x312a: 0x000c, 0x312b: 0x000c, 0x312c: 0x000c, 0x312d: 0x000c, 0x312e: 0x000c, 0x312f: 0x000c, + 0x3130: 0x000c, 0x3132: 0x000c, 0x3133: 0x000c, 0x3135: 0x000c, + 0x3136: 0x000c, + // Block 0xc5, offset 0x3140 + 0x3171: 0x000c, 0x3172: 0x000c, 0x3173: 0x000c, 0x3174: 0x000c, 0x3175: 0x000c, + 0x3176: 0x000c, 0x317a: 0x000c, + 0x317c: 0x000c, 0x317d: 0x000c, 0x317f: 0x000c, + // Block 0xc6, offset 0x3180 + 0x3180: 0x000c, 0x3181: 0x000c, 0x3182: 0x000c, 0x3183: 0x000c, 0x3184: 0x000c, 0x3185: 0x000c, + 0x3187: 0x000c, + // Block 0xc7, offset 0x31c0 + 0x31d0: 0x000c, 0x31d1: 0x000c, + 0x31d5: 0x000c, 0x31d7: 0x000c, + // Block 0xc8, offset 0x3200 + 0x3233: 0x000c, 0x3234: 0x000c, + // Block 0xc9, offset 0x3240 + 0x3255: 0x000a, 0x3256: 0x000a, 0x3257: 0x000a, + 0x3258: 0x000a, 0x3259: 0x000a, 0x325a: 0x000a, 0x325b: 0x000a, 0x325c: 0x000a, 0x325d: 0x0004, + 0x325e: 0x0004, 0x325f: 0x0004, 0x3260: 0x0004, 0x3261: 0x000a, 0x3262: 0x000a, 0x3263: 0x000a, + 0x3264: 0x000a, 0x3265: 0x000a, 0x3266: 0x000a, 0x3267: 0x000a, 0x3268: 0x000a, 0x3269: 0x000a, + 0x326a: 0x000a, 0x326b: 0x000a, 0x326c: 0x000a, 0x326d: 0x000a, 0x326e: 0x000a, 0x326f: 0x000a, + 0x3270: 0x000a, 0x3271: 0x000a, + // Block 0xca, offset 0x3280 + 0x32b0: 0x000c, 0x32b1: 0x000c, 0x32b2: 0x000c, 0x32b3: 0x000c, 0x32b4: 0x000c, + // Block 0xcb, offset 0x32c0 + 0x32f0: 0x000c, 0x32f1: 0x000c, 0x32f2: 0x000c, 0x32f3: 0x000c, 0x32f4: 0x000c, 0x32f5: 0x000c, + 0x32f6: 0x000c, + // Block 0xcc, offset 0x3300 + 0x330f: 0x000c, + // Block 0xcd, offset 0x3340 + 0x334f: 0x000c, 0x3350: 0x000c, 0x3351: 0x000c, + 0x3352: 0x000c, + // Block 0xce, offset 0x3380 + 0x33a2: 0x000a, + 0x33a4: 0x000c, + // Block 0xcf, offset 0x33c0 + 0x33dd: 0x000c, + 0x33de: 0x000c, 0x33e0: 0x000b, 0x33e1: 0x000b, 0x33e2: 0x000b, 0x33e3: 0x000b, + // Block 0xd0, offset 0x3400 + 0x3427: 0x000c, 0x3428: 0x000c, 0x3429: 0x000c, + 0x3433: 0x000b, 0x3434: 0x000b, 0x3435: 0x000b, + 0x3436: 0x000b, 0x3437: 0x000b, 0x3438: 0x000b, 0x3439: 0x000b, 0x343a: 0x000b, 0x343b: 0x000c, + 0x343c: 0x000c, 0x343d: 0x000c, 0x343e: 0x000c, 0x343f: 0x000c, + // Block 0xd1, offset 0x3440 + 0x3440: 0x000c, 0x3441: 0x000c, 0x3442: 0x000c, 0x3445: 0x000c, + 0x3446: 0x000c, 0x3447: 0x000c, 0x3448: 0x000c, 0x3449: 0x000c, 0x344a: 0x000c, 0x344b: 0x000c, + 0x346a: 0x000c, 0x346b: 0x000c, 0x346c: 0x000c, 0x346d: 0x000c, + // Block 0xd2, offset 0x3480 + 0x3480: 0x000a, 0x3481: 0x000a, 0x3482: 0x000c, 0x3483: 0x000c, 0x3484: 0x000c, 0x3485: 0x000a, + // Block 0xd3, offset 0x34c0 + 0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a, + 0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a, + 0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a, + 0x34d2: 0x000a, 0x34d3: 0x000a, 0x34d4: 0x000a, 0x34d5: 0x000a, 0x34d6: 0x000a, + // Block 0xd4, offset 0x3500 + 0x351b: 0x000a, + // Block 0xd5, offset 0x3540 + 0x3555: 0x000a, + // Block 0xd6, offset 0x3580 + 0x358f: 0x000a, + // Block 0xd7, offset 0x35c0 + 0x35c9: 0x000a, + // Block 0xd8, offset 0x3600 + 0x3603: 0x000a, + 0x360e: 0x0002, 0x360f: 0x0002, 0x3610: 0x0002, 0x3611: 0x0002, + 0x3612: 0x0002, 0x3613: 0x0002, 0x3614: 0x0002, 0x3615: 0x0002, 0x3616: 0x0002, 0x3617: 0x0002, + 0x3618: 0x0002, 0x3619: 0x0002, 0x361a: 0x0002, 0x361b: 0x0002, 0x361c: 0x0002, 0x361d: 0x0002, + 0x361e: 0x0002, 0x361f: 0x0002, 0x3620: 0x0002, 0x3621: 0x0002, 0x3622: 0x0002, 0x3623: 0x0002, + 0x3624: 0x0002, 0x3625: 0x0002, 0x3626: 0x0002, 0x3627: 0x0002, 0x3628: 0x0002, 0x3629: 0x0002, + 0x362a: 0x0002, 0x362b: 0x0002, 0x362c: 0x0002, 0x362d: 0x0002, 0x362e: 0x0002, 0x362f: 0x0002, + 0x3630: 0x0002, 0x3631: 0x0002, 0x3632: 0x0002, 0x3633: 0x0002, 0x3634: 0x0002, 0x3635: 0x0002, + 0x3636: 0x0002, 0x3637: 0x0002, 0x3638: 0x0002, 0x3639: 0x0002, 0x363a: 0x0002, 0x363b: 0x0002, + 0x363c: 0x0002, 0x363d: 0x0002, 0x363e: 0x0002, 0x363f: 0x0002, + // Block 0xd9, offset 0x3640 + 0x3640: 0x000c, 0x3641: 0x000c, 0x3642: 0x000c, 0x3643: 0x000c, 0x3644: 0x000c, 0x3645: 0x000c, + 0x3646: 0x000c, 0x3647: 0x000c, 0x3648: 0x000c, 0x3649: 0x000c, 0x364a: 0x000c, 0x364b: 0x000c, + 0x364c: 0x000c, 0x364d: 0x000c, 0x364e: 0x000c, 0x364f: 0x000c, 0x3650: 0x000c, 0x3651: 0x000c, + 0x3652: 0x000c, 0x3653: 0x000c, 0x3654: 0x000c, 0x3655: 0x000c, 0x3656: 0x000c, 0x3657: 0x000c, + 0x3658: 0x000c, 0x3659: 0x000c, 0x365a: 0x000c, 0x365b: 0x000c, 0x365c: 0x000c, 0x365d: 0x000c, + 0x365e: 0x000c, 0x365f: 0x000c, 0x3660: 0x000c, 0x3661: 0x000c, 0x3662: 0x000c, 0x3663: 0x000c, + 0x3664: 0x000c, 0x3665: 0x000c, 0x3666: 0x000c, 0x3667: 0x000c, 0x3668: 0x000c, 0x3669: 0x000c, + 0x366a: 0x000c, 0x366b: 0x000c, 0x366c: 0x000c, 0x366d: 0x000c, 0x366e: 0x000c, 0x366f: 0x000c, + 0x3670: 0x000c, 0x3671: 0x000c, 0x3672: 0x000c, 0x3673: 0x000c, 0x3674: 0x000c, 0x3675: 0x000c, + 0x3676: 0x000c, 0x367b: 0x000c, + 0x367c: 0x000c, 0x367d: 0x000c, 0x367e: 0x000c, 0x367f: 0x000c, + // Block 0xda, offset 0x3680 + 0x3680: 0x000c, 0x3681: 0x000c, 0x3682: 0x000c, 0x3683: 0x000c, 0x3684: 0x000c, 0x3685: 0x000c, + 0x3686: 0x000c, 0x3687: 0x000c, 0x3688: 0x000c, 0x3689: 0x000c, 0x368a: 0x000c, 0x368b: 0x000c, + 0x368c: 0x000c, 0x368d: 0x000c, 0x368e: 0x000c, 0x368f: 0x000c, 0x3690: 0x000c, 0x3691: 0x000c, + 0x3692: 0x000c, 0x3693: 0x000c, 0x3694: 0x000c, 0x3695: 0x000c, 0x3696: 0x000c, 0x3697: 0x000c, + 0x3698: 0x000c, 0x3699: 0x000c, 0x369a: 0x000c, 0x369b: 0x000c, 0x369c: 0x000c, 0x369d: 0x000c, + 0x369e: 0x000c, 0x369f: 0x000c, 0x36a0: 0x000c, 0x36a1: 0x000c, 0x36a2: 0x000c, 0x36a3: 0x000c, + 0x36a4: 0x000c, 0x36a5: 0x000c, 0x36a6: 0x000c, 0x36a7: 0x000c, 0x36a8: 0x000c, 0x36a9: 0x000c, + 0x36aa: 0x000c, 0x36ab: 0x000c, 0x36ac: 0x000c, + 0x36b5: 0x000c, + // Block 0xdb, offset 0x36c0 + 0x36c4: 0x000c, + 0x36db: 0x000c, 0x36dc: 0x000c, 0x36dd: 0x000c, + 0x36de: 0x000c, 0x36df: 0x000c, 0x36e1: 0x000c, 0x36e2: 0x000c, 0x36e3: 0x000c, + 0x36e4: 0x000c, 0x36e5: 0x000c, 0x36e6: 0x000c, 0x36e7: 0x000c, 0x36e8: 0x000c, 0x36e9: 0x000c, + 0x36ea: 0x000c, 0x36eb: 0x000c, 0x36ec: 0x000c, 0x36ed: 0x000c, 0x36ee: 0x000c, 0x36ef: 0x000c, + // Block 0xdc, offset 0x3700 + 0x3700: 0x000c, 0x3701: 0x000c, 0x3702: 0x000c, 0x3703: 0x000c, 0x3704: 0x000c, 0x3705: 0x000c, + 0x3706: 0x000c, 0x3708: 0x000c, 0x3709: 0x000c, 0x370a: 0x000c, 0x370b: 0x000c, + 0x370c: 0x000c, 0x370d: 0x000c, 0x370e: 0x000c, 0x370f: 0x000c, 0x3710: 0x000c, 0x3711: 0x000c, + 0x3712: 0x000c, 0x3713: 0x000c, 0x3714: 0x000c, 0x3715: 0x000c, 0x3716: 0x000c, 0x3717: 0x000c, + 0x3718: 0x000c, 0x371b: 0x000c, 0x371c: 0x000c, 0x371d: 0x000c, + 0x371e: 0x000c, 0x371f: 0x000c, 0x3720: 0x000c, 0x3721: 0x000c, 0x3723: 0x000c, + 0x3724: 0x000c, 0x3726: 0x000c, 0x3727: 0x000c, 0x3728: 0x000c, 0x3729: 0x000c, + 0x372a: 0x000c, + // Block 0xdd, offset 0x3740 + 0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c, + 0x377f: 0x0004, + // Block 0xde, offset 0x3780 + 0x3780: 0x0001, 0x3781: 0x0001, 0x3782: 0x0001, 0x3783: 0x0001, 0x3784: 0x0001, 0x3785: 0x0001, + 0x3786: 0x0001, 0x3787: 0x0001, 0x3788: 0x0001, 0x3789: 0x0001, 0x378a: 0x0001, 0x378b: 0x0001, + 0x378c: 0x0001, 0x378d: 0x0001, 0x378e: 0x0001, 0x378f: 0x0001, 0x3790: 0x000c, 0x3791: 0x000c, + 0x3792: 0x000c, 0x3793: 0x000c, 0x3794: 0x000c, 0x3795: 0x000c, 0x3796: 0x000c, 0x3797: 0x0001, + 0x3798: 0x0001, 0x3799: 0x0001, 0x379a: 0x0001, 0x379b: 0x0001, 0x379c: 0x0001, 0x379d: 0x0001, + 0x379e: 0x0001, 0x379f: 0x0001, 0x37a0: 0x0001, 0x37a1: 0x0001, 0x37a2: 0x0001, 0x37a3: 0x0001, + 0x37a4: 0x0001, 0x37a5: 0x0001, 0x37a6: 0x0001, 0x37a7: 0x0001, 0x37a8: 0x0001, 0x37a9: 0x0001, + 0x37aa: 0x0001, 0x37ab: 0x0001, 0x37ac: 0x0001, 0x37ad: 0x0001, 0x37ae: 0x0001, 0x37af: 0x0001, + 0x37b0: 0x0001, 0x37b1: 0x0001, 0x37b2: 0x0001, 0x37b3: 0x0001, 0x37b4: 0x0001, 0x37b5: 0x0001, + 0x37b6: 0x0001, 0x37b7: 0x0001, 0x37b8: 0x0001, 0x37b9: 0x0001, 0x37ba: 0x0001, 0x37bb: 0x0001, + 0x37bc: 0x0001, 0x37bd: 0x0001, 0x37be: 0x0001, 0x37bf: 0x0001, + // Block 0xdf, offset 0x37c0 + 0x37c0: 0x0001, 0x37c1: 0x0001, 0x37c2: 0x0001, 0x37c3: 0x0001, 0x37c4: 0x000c, 0x37c5: 0x000c, + 0x37c6: 0x000c, 0x37c7: 0x000c, 0x37c8: 0x000c, 0x37c9: 0x000c, 0x37ca: 0x000c, 0x37cb: 0x0001, + 0x37cc: 0x0001, 0x37cd: 0x0001, 0x37ce: 0x0001, 0x37cf: 0x0001, 0x37d0: 0x0001, 0x37d1: 0x0001, + 0x37d2: 0x0001, 0x37d3: 0x0001, 0x37d4: 0x0001, 0x37d5: 0x0001, 0x37d6: 0x0001, 0x37d7: 0x0001, + 0x37d8: 0x0001, 0x37d9: 0x0001, 0x37da: 0x0001, 0x37db: 0x0001, 0x37dc: 0x0001, 0x37dd: 0x0001, + 0x37de: 0x0001, 0x37df: 0x0001, 0x37e0: 0x0001, 0x37e1: 0x0001, 0x37e2: 0x0001, 0x37e3: 0x0001, + 0x37e4: 0x0001, 0x37e5: 0x0001, 0x37e6: 0x0001, 0x37e7: 0x0001, 0x37e8: 0x0001, 0x37e9: 0x0001, + 0x37ea: 0x0001, 0x37eb: 0x0001, 0x37ec: 0x0001, 0x37ed: 0x0001, 0x37ee: 0x0001, 0x37ef: 0x0001, + 0x37f0: 0x0001, 0x37f1: 0x0001, 0x37f2: 0x0001, 0x37f3: 0x0001, 0x37f4: 0x0001, 0x37f5: 0x0001, + 0x37f6: 0x0001, 0x37f7: 0x0001, 0x37f8: 0x0001, 0x37f9: 0x0001, 0x37fa: 0x0001, 0x37fb: 0x0001, + 0x37fc: 0x0001, 0x37fd: 0x0001, 0x37fe: 0x0001, 0x37ff: 0x0001, + // Block 0xe0, offset 0x3800 + 0x3800: 0x000d, 0x3801: 0x000d, 0x3802: 0x000d, 0x3803: 0x000d, 0x3804: 0x000d, 0x3805: 0x000d, + 0x3806: 0x000d, 0x3807: 0x000d, 0x3808: 0x000d, 0x3809: 0x000d, 0x380a: 0x000d, 0x380b: 0x000d, + 0x380c: 0x000d, 0x380d: 0x000d, 0x380e: 0x000d, 0x380f: 0x000d, 0x3810: 0x0001, 0x3811: 0x0001, + 0x3812: 0x0001, 0x3813: 0x0001, 0x3814: 0x0001, 0x3815: 0x0001, 0x3816: 0x0001, 0x3817: 0x0001, + 0x3818: 0x0001, 0x3819: 0x0001, 0x381a: 0x0001, 0x381b: 0x0001, 0x381c: 0x0001, 0x381d: 0x0001, + 0x381e: 0x0001, 0x381f: 0x0001, 0x3820: 0x0001, 0x3821: 0x0001, 0x3822: 0x0001, 0x3823: 0x0001, + 0x3824: 0x0001, 0x3825: 0x0001, 0x3826: 0x0001, 0x3827: 0x0001, 0x3828: 0x0001, 0x3829: 0x0001, + 0x382a: 0x0001, 0x382b: 0x0001, 0x382c: 0x0001, 0x382d: 0x0001, 0x382e: 0x0001, 0x382f: 0x0001, + 0x3830: 0x0001, 0x3831: 0x0001, 0x3832: 0x0001, 0x3833: 0x0001, 0x3834: 0x0001, 0x3835: 0x0001, + 0x3836: 0x0001, 0x3837: 0x0001, 0x3838: 0x0001, 0x3839: 0x0001, 0x383a: 0x0001, 0x383b: 0x0001, + 0x383c: 0x0001, 0x383d: 0x0001, 0x383e: 0x0001, 0x383f: 0x0001, + // Block 0xe1, offset 0x3840 + 0x3840: 0x000d, 0x3841: 0x000d, 0x3842: 0x000d, 0x3843: 0x000d, 0x3844: 0x000d, 0x3845: 0x000d, + 0x3846: 0x000d, 0x3847: 0x000d, 0x3848: 0x000d, 0x3849: 0x000d, 0x384a: 0x000d, 0x384b: 0x000d, + 0x384c: 0x000d, 0x384d: 0x000d, 0x384e: 0x000d, 0x384f: 0x000d, 0x3850: 0x000d, 0x3851: 0x000d, + 0x3852: 0x000d, 0x3853: 0x000d, 0x3854: 0x000d, 0x3855: 0x000d, 0x3856: 0x000d, 0x3857: 0x000d, + 0x3858: 0x000d, 0x3859: 0x000d, 0x385a: 0x000d, 0x385b: 0x000d, 0x385c: 0x000d, 0x385d: 0x000d, + 0x385e: 0x000d, 0x385f: 0x000d, 0x3860: 0x000d, 0x3861: 0x000d, 0x3862: 0x000d, 0x3863: 0x000d, + 0x3864: 0x000d, 0x3865: 0x000d, 0x3866: 0x000d, 0x3867: 0x000d, 0x3868: 0x000d, 0x3869: 0x000d, + 0x386a: 0x000d, 0x386b: 0x000d, 0x386c: 0x000d, 0x386d: 0x000d, 0x386e: 0x000d, 0x386f: 0x000d, + 0x3870: 0x000a, 0x3871: 0x000a, 0x3872: 0x000d, 0x3873: 0x000d, 0x3874: 0x000d, 0x3875: 0x000d, + 0x3876: 0x000d, 0x3877: 0x000d, 0x3878: 0x000d, 0x3879: 0x000d, 0x387a: 0x000d, 0x387b: 0x000d, + 0x387c: 0x000d, 0x387d: 0x000d, 0x387e: 0x000d, 0x387f: 0x000d, + // Block 0xe2, offset 0x3880 + 0x3880: 0x000a, 0x3881: 0x000a, 0x3882: 0x000a, 0x3883: 0x000a, 0x3884: 0x000a, 0x3885: 0x000a, + 0x3886: 0x000a, 0x3887: 0x000a, 0x3888: 0x000a, 0x3889: 0x000a, 0x388a: 0x000a, 0x388b: 0x000a, + 0x388c: 0x000a, 0x388d: 0x000a, 0x388e: 0x000a, 0x388f: 0x000a, 0x3890: 0x000a, 0x3891: 0x000a, + 0x3892: 0x000a, 0x3893: 0x000a, 0x3894: 0x000a, 0x3895: 0x000a, 0x3896: 0x000a, 0x3897: 0x000a, + 0x3898: 0x000a, 0x3899: 0x000a, 0x389a: 0x000a, 0x389b: 0x000a, 0x389c: 0x000a, 0x389d: 0x000a, + 0x389e: 0x000a, 0x389f: 0x000a, 0x38a0: 0x000a, 0x38a1: 0x000a, 0x38a2: 0x000a, 0x38a3: 0x000a, + 0x38a4: 0x000a, 0x38a5: 0x000a, 0x38a6: 0x000a, 0x38a7: 0x000a, 0x38a8: 0x000a, 0x38a9: 0x000a, + 0x38aa: 0x000a, 0x38ab: 0x000a, + 0x38b0: 0x000a, 0x38b1: 0x000a, 0x38b2: 0x000a, 0x38b3: 0x000a, 0x38b4: 0x000a, 0x38b5: 0x000a, + 0x38b6: 0x000a, 0x38b7: 0x000a, 0x38b8: 0x000a, 0x38b9: 0x000a, 0x38ba: 0x000a, 0x38bb: 0x000a, + 0x38bc: 0x000a, 0x38bd: 0x000a, 0x38be: 0x000a, 0x38bf: 0x000a, + // Block 0xe3, offset 0x38c0 + 0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000a, 0x38c3: 0x000a, 0x38c4: 0x000a, 0x38c5: 0x000a, + 0x38c6: 0x000a, 0x38c7: 0x000a, 0x38c8: 0x000a, 0x38c9: 0x000a, 0x38ca: 0x000a, 0x38cb: 0x000a, + 0x38cc: 0x000a, 0x38cd: 0x000a, 0x38ce: 0x000a, 0x38cf: 0x000a, 0x38d0: 0x000a, 0x38d1: 0x000a, + 0x38d2: 0x000a, 0x38d3: 0x000a, + 0x38e0: 0x000a, 0x38e1: 0x000a, 0x38e2: 0x000a, 0x38e3: 0x000a, + 0x38e4: 0x000a, 0x38e5: 0x000a, 0x38e6: 0x000a, 0x38e7: 0x000a, 0x38e8: 0x000a, 0x38e9: 0x000a, + 0x38ea: 0x000a, 0x38eb: 0x000a, 0x38ec: 0x000a, 0x38ed: 0x000a, 0x38ee: 0x000a, + 0x38f1: 0x000a, 0x38f2: 0x000a, 0x38f3: 0x000a, 0x38f4: 0x000a, 0x38f5: 0x000a, + 0x38f6: 0x000a, 0x38f7: 0x000a, 0x38f8: 0x000a, 0x38f9: 0x000a, 0x38fa: 0x000a, 0x38fb: 0x000a, + 0x38fc: 0x000a, 0x38fd: 0x000a, 0x38fe: 0x000a, 0x38ff: 0x000a, + // Block 0xe4, offset 0x3900 + 0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a, + 0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a, + 0x390c: 0x000a, 0x390d: 0x000a, 0x390e: 0x000a, 0x390f: 0x000a, 0x3911: 0x000a, + 0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a, 0x3917: 0x000a, + 0x3918: 0x000a, 0x3919: 0x000a, 0x391a: 0x000a, 0x391b: 0x000a, 0x391c: 0x000a, 0x391d: 0x000a, + 0x391e: 0x000a, 0x391f: 0x000a, 0x3920: 0x000a, 0x3921: 0x000a, 0x3922: 0x000a, 0x3923: 0x000a, + 0x3924: 0x000a, 0x3925: 0x000a, 0x3926: 0x000a, 0x3927: 0x000a, 0x3928: 0x000a, 0x3929: 0x000a, + 0x392a: 0x000a, 0x392b: 0x000a, 0x392c: 0x000a, 0x392d: 0x000a, 0x392e: 0x000a, 0x392f: 0x000a, + 0x3930: 0x000a, 0x3931: 0x000a, 0x3932: 0x000a, 0x3933: 0x000a, 0x3934: 0x000a, 0x3935: 0x000a, + // Block 0xe5, offset 0x3940 + 0x3940: 0x0002, 0x3941: 0x0002, 0x3942: 0x0002, 0x3943: 0x0002, 0x3944: 0x0002, 0x3945: 0x0002, + 0x3946: 0x0002, 0x3947: 0x0002, 0x3948: 0x0002, 0x3949: 0x0002, 0x394a: 0x0002, 0x394b: 0x000a, + 0x394c: 0x000a, 0x394d: 0x000a, 0x394e: 0x000a, 0x394f: 0x000a, + 0x396f: 0x000a, + // Block 0xe6, offset 0x3980 + 0x39aa: 0x000a, 0x39ab: 0x000a, 0x39ac: 0x000a, 0x39ad: 0x000a, 0x39ae: 0x000a, 0x39af: 0x000a, + // Block 0xe7, offset 0x39c0 + 0x39ed: 0x000a, + // Block 0xe8, offset 0x3a00 + 0x3a20: 0x000a, 0x3a21: 0x000a, 0x3a22: 0x000a, 0x3a23: 0x000a, + 0x3a24: 0x000a, 0x3a25: 0x000a, + // Block 0xe9, offset 0x3a40 + 0x3a40: 0x000a, 0x3a41: 0x000a, 0x3a42: 0x000a, 0x3a43: 0x000a, 0x3a44: 0x000a, 0x3a45: 0x000a, + 0x3a46: 0x000a, 0x3a47: 0x000a, 0x3a48: 0x000a, 0x3a49: 0x000a, 0x3a4a: 0x000a, 0x3a4b: 0x000a, + 0x3a4c: 0x000a, 0x3a4d: 0x000a, 0x3a4e: 0x000a, 0x3a4f: 0x000a, 0x3a50: 0x000a, 0x3a51: 0x000a, + 0x3a52: 0x000a, 0x3a53: 0x000a, 0x3a54: 0x000a, 0x3a55: 0x000a, 0x3a56: 0x000a, 0x3a57: 0x000a, + 0x3a60: 0x000a, 0x3a61: 0x000a, 0x3a62: 0x000a, 0x3a63: 0x000a, + 0x3a64: 0x000a, 0x3a65: 0x000a, 0x3a66: 0x000a, 0x3a67: 0x000a, 0x3a68: 0x000a, 0x3a69: 0x000a, + 0x3a6a: 0x000a, 0x3a6b: 0x000a, 0x3a6c: 0x000a, + 0x3a70: 0x000a, 0x3a71: 0x000a, 0x3a72: 0x000a, 0x3a73: 0x000a, 0x3a74: 0x000a, 0x3a75: 0x000a, + 0x3a76: 0x000a, 0x3a77: 0x000a, 0x3a78: 0x000a, 0x3a79: 0x000a, 0x3a7a: 0x000a, 0x3a7b: 0x000a, + 0x3a7c: 0x000a, + // Block 0xea, offset 0x3a80 + 0x3a80: 0x000a, 0x3a81: 0x000a, 0x3a82: 0x000a, 0x3a83: 0x000a, 0x3a84: 0x000a, 0x3a85: 0x000a, + 0x3a86: 0x000a, 0x3a87: 0x000a, 0x3a88: 0x000a, 0x3a89: 0x000a, 0x3a8a: 0x000a, 0x3a8b: 0x000a, + 0x3a8c: 0x000a, 0x3a8d: 0x000a, 0x3a8e: 0x000a, 0x3a8f: 0x000a, 0x3a90: 0x000a, 0x3a91: 0x000a, + 0x3a92: 0x000a, 0x3a93: 0x000a, 0x3a94: 0x000a, 0x3a95: 0x000a, 0x3a96: 0x000a, 0x3a97: 0x000a, + 0x3a98: 0x000a, + 0x3aa0: 0x000a, 0x3aa1: 0x000a, 0x3aa2: 0x000a, 0x3aa3: 0x000a, + 0x3aa4: 0x000a, 0x3aa5: 0x000a, 0x3aa6: 0x000a, 0x3aa7: 0x000a, 0x3aa8: 0x000a, 0x3aa9: 0x000a, + 0x3aaa: 0x000a, 0x3aab: 0x000a, + // Block 0xeb, offset 0x3ac0 + 0x3ac0: 0x000a, 0x3ac1: 0x000a, 0x3ac2: 0x000a, 0x3ac3: 0x000a, 0x3ac4: 0x000a, 0x3ac5: 0x000a, + 0x3ac6: 0x000a, 0x3ac7: 0x000a, 0x3ac8: 0x000a, 0x3ac9: 0x000a, 0x3aca: 0x000a, 0x3acb: 0x000a, + 0x3ad0: 0x000a, 0x3ad1: 0x000a, + 0x3ad2: 0x000a, 0x3ad3: 0x000a, 0x3ad4: 0x000a, 0x3ad5: 0x000a, 0x3ad6: 0x000a, 0x3ad7: 0x000a, + 0x3ad8: 0x000a, 0x3ad9: 0x000a, 0x3ada: 0x000a, 0x3adb: 0x000a, 0x3adc: 0x000a, 0x3add: 0x000a, + 0x3ade: 0x000a, 0x3adf: 0x000a, 0x3ae0: 0x000a, 0x3ae1: 0x000a, 0x3ae2: 0x000a, 0x3ae3: 0x000a, + 0x3ae4: 0x000a, 0x3ae5: 0x000a, 0x3ae6: 0x000a, 0x3ae7: 0x000a, 0x3ae8: 0x000a, 0x3ae9: 0x000a, + 0x3aea: 0x000a, 0x3aeb: 0x000a, 0x3aec: 0x000a, 0x3aed: 0x000a, 0x3aee: 0x000a, 0x3aef: 0x000a, + 0x3af0: 0x000a, 0x3af1: 0x000a, 0x3af2: 0x000a, 0x3af3: 0x000a, 0x3af4: 0x000a, 0x3af5: 0x000a, + 0x3af6: 0x000a, 0x3af7: 0x000a, 0x3af8: 0x000a, 0x3af9: 0x000a, 0x3afa: 0x000a, 0x3afb: 0x000a, + 0x3afc: 0x000a, 0x3afd: 0x000a, 0x3afe: 0x000a, 0x3aff: 0x000a, + // Block 0xec, offset 0x3b00 + 0x3b00: 0x000a, 0x3b01: 0x000a, 0x3b02: 0x000a, 0x3b03: 0x000a, 0x3b04: 0x000a, 0x3b05: 0x000a, + 0x3b06: 0x000a, 0x3b07: 0x000a, + 0x3b10: 0x000a, 0x3b11: 0x000a, + 0x3b12: 0x000a, 0x3b13: 0x000a, 0x3b14: 0x000a, 0x3b15: 0x000a, 0x3b16: 0x000a, 0x3b17: 0x000a, + 0x3b18: 0x000a, 0x3b19: 0x000a, + 0x3b20: 0x000a, 0x3b21: 0x000a, 0x3b22: 0x000a, 0x3b23: 0x000a, + 0x3b24: 0x000a, 0x3b25: 0x000a, 0x3b26: 0x000a, 0x3b27: 0x000a, 0x3b28: 0x000a, 0x3b29: 0x000a, + 0x3b2a: 0x000a, 0x3b2b: 0x000a, 0x3b2c: 0x000a, 0x3b2d: 0x000a, 0x3b2e: 0x000a, 0x3b2f: 0x000a, + 0x3b30: 0x000a, 0x3b31: 0x000a, 0x3b32: 0x000a, 0x3b33: 0x000a, 0x3b34: 0x000a, 0x3b35: 0x000a, + 0x3b36: 0x000a, 0x3b37: 0x000a, 0x3b38: 0x000a, 0x3b39: 0x000a, 0x3b3a: 0x000a, 0x3b3b: 0x000a, + 0x3b3c: 0x000a, 0x3b3d: 0x000a, 0x3b3e: 0x000a, 0x3b3f: 0x000a, + // Block 0xed, offset 0x3b40 + 0x3b40: 0x000a, 0x3b41: 0x000a, 0x3b42: 0x000a, 0x3b43: 0x000a, 0x3b44: 0x000a, 0x3b45: 0x000a, + 0x3b46: 0x000a, 0x3b47: 0x000a, + 0x3b50: 0x000a, 0x3b51: 0x000a, + 0x3b52: 0x000a, 0x3b53: 0x000a, 0x3b54: 0x000a, 0x3b55: 0x000a, 0x3b56: 0x000a, 0x3b57: 0x000a, + 0x3b58: 0x000a, 0x3b59: 0x000a, 0x3b5a: 0x000a, 0x3b5b: 0x000a, 0x3b5c: 0x000a, 0x3b5d: 0x000a, + 0x3b5e: 0x000a, 0x3b5f: 0x000a, 0x3b60: 0x000a, 0x3b61: 0x000a, 0x3b62: 0x000a, 0x3b63: 0x000a, + 0x3b64: 0x000a, 0x3b65: 0x000a, 0x3b66: 0x000a, 0x3b67: 0x000a, 0x3b68: 0x000a, 0x3b69: 0x000a, + 0x3b6a: 0x000a, 0x3b6b: 0x000a, 0x3b6c: 0x000a, 0x3b6d: 0x000a, + 0x3b70: 0x000a, 0x3b71: 0x000a, + // Block 0xee, offset 0x3b80 + 0x3b80: 0x000a, 0x3b81: 0x000a, 0x3b82: 0x000a, 0x3b83: 0x000a, 0x3b84: 0x000a, 0x3b85: 0x000a, + 0x3b86: 0x000a, 0x3b87: 0x000a, 0x3b88: 0x000a, 0x3b89: 0x000a, 0x3b8a: 0x000a, 0x3b8b: 0x000a, + 0x3b8c: 0x000a, 0x3b8d: 0x000a, 0x3b8e: 0x000a, 0x3b8f: 0x000a, 0x3b90: 0x000a, 0x3b91: 0x000a, + 0x3b92: 0x000a, 0x3b93: 0x000a, 0x3b94: 0x000a, 0x3b95: 0x000a, 0x3b96: 0x000a, 0x3b97: 0x000a, + 0x3b98: 0x000a, 0x3b99: 0x000a, 0x3b9a: 0x000a, 0x3b9b: 0x000a, 0x3b9c: 0x000a, 0x3b9d: 0x000a, + 0x3b9e: 0x000a, 0x3b9f: 0x000a, 0x3ba0: 0x000a, 0x3ba1: 0x000a, 0x3ba2: 0x000a, 0x3ba3: 0x000a, + 0x3ba4: 0x000a, 0x3ba5: 0x000a, 0x3ba6: 0x000a, 0x3ba7: 0x000a, 0x3ba8: 0x000a, 0x3ba9: 0x000a, + 0x3baa: 0x000a, 0x3bab: 0x000a, 0x3bac: 0x000a, 0x3bad: 0x000a, 0x3bae: 0x000a, 0x3baf: 0x000a, + 0x3bb0: 0x000a, 0x3bb1: 0x000a, 0x3bb2: 0x000a, 0x3bb3: 0x000a, 0x3bb4: 0x000a, 0x3bb5: 0x000a, + 0x3bb6: 0x000a, 0x3bb7: 0x000a, 0x3bb8: 0x000a, 0x3bba: 0x000a, 0x3bbb: 0x000a, + 0x3bbc: 0x000a, 0x3bbd: 0x000a, 0x3bbe: 0x000a, 0x3bbf: 0x000a, + // Block 0xef, offset 0x3bc0 + 0x3bc0: 0x000a, 0x3bc1: 0x000a, 0x3bc2: 0x000a, 0x3bc3: 0x000a, 0x3bc4: 0x000a, 0x3bc5: 0x000a, + 0x3bc6: 0x000a, 0x3bc7: 0x000a, 0x3bc8: 0x000a, 0x3bc9: 0x000a, 0x3bca: 0x000a, 0x3bcb: 0x000a, + 0x3bcd: 0x000a, 0x3bce: 0x000a, 0x3bcf: 0x000a, 0x3bd0: 0x000a, 0x3bd1: 0x000a, + 0x3bd2: 0x000a, 0x3bd3: 0x000a, 0x3bd4: 0x000a, 0x3bd5: 0x000a, 0x3bd6: 0x000a, 0x3bd7: 0x000a, + 0x3bd8: 0x000a, 0x3bd9: 0x000a, 0x3bda: 0x000a, 0x3bdb: 0x000a, 0x3bdc: 0x000a, 0x3bdd: 0x000a, + 0x3bde: 0x000a, 0x3bdf: 0x000a, 0x3be0: 0x000a, 0x3be1: 0x000a, 0x3be2: 0x000a, 0x3be3: 0x000a, + 0x3be4: 0x000a, 0x3be5: 0x000a, 0x3be6: 0x000a, 0x3be7: 0x000a, 0x3be8: 0x000a, 0x3be9: 0x000a, + 0x3bea: 0x000a, 0x3beb: 0x000a, 0x3bec: 0x000a, 0x3bed: 0x000a, 0x3bee: 0x000a, 0x3bef: 0x000a, + 0x3bf0: 0x000a, 0x3bf1: 0x000a, 0x3bf2: 0x000a, 0x3bf3: 0x000a, 0x3bf4: 0x000a, 0x3bf5: 0x000a, + 0x3bf6: 0x000a, 0x3bf7: 0x000a, 0x3bf8: 0x000a, 0x3bf9: 0x000a, 0x3bfa: 0x000a, 0x3bfb: 0x000a, + 0x3bfc: 0x000a, 0x3bfd: 0x000a, 0x3bfe: 0x000a, 0x3bff: 0x000a, + // Block 0xf0, offset 0x3c00 + 0x3c00: 0x000a, 0x3c01: 0x000a, 0x3c02: 0x000a, 0x3c03: 0x000a, 0x3c04: 0x000a, 0x3c05: 0x000a, + 0x3c06: 0x000a, 0x3c07: 0x000a, 0x3c08: 0x000a, 0x3c09: 0x000a, 0x3c0a: 0x000a, 0x3c0b: 0x000a, + 0x3c0c: 0x000a, 0x3c0d: 0x000a, 0x3c0e: 0x000a, 0x3c0f: 0x000a, 0x3c10: 0x000a, 0x3c11: 0x000a, + 0x3c12: 0x000a, 0x3c13: 0x000a, + 0x3c20: 0x000a, 0x3c21: 0x000a, 0x3c22: 0x000a, 0x3c23: 0x000a, + 0x3c24: 0x000a, 0x3c25: 0x000a, 0x3c26: 0x000a, 0x3c27: 0x000a, 0x3c28: 0x000a, 0x3c29: 0x000a, + 0x3c2a: 0x000a, 0x3c2b: 0x000a, 0x3c2c: 0x000a, 0x3c2d: 0x000a, + 0x3c30: 0x000a, 0x3c31: 0x000a, 0x3c32: 0x000a, 0x3c33: 0x000a, 0x3c34: 0x000a, + 0x3c38: 0x000a, 0x3c39: 0x000a, 0x3c3a: 0x000a, + // Block 0xf1, offset 0x3c40 + 0x3c40: 0x000a, 0x3c41: 0x000a, 0x3c42: 0x000a, 0x3c43: 0x000a, 0x3c44: 0x000a, 0x3c45: 0x000a, + 0x3c46: 0x000a, + 0x3c50: 0x000a, 0x3c51: 0x000a, + 0x3c52: 0x000a, 0x3c53: 0x000a, 0x3c54: 0x000a, 0x3c55: 0x000a, 0x3c56: 0x000a, 0x3c57: 0x000a, + 0x3c58: 0x000a, 0x3c59: 0x000a, 0x3c5a: 0x000a, 0x3c5b: 0x000a, 0x3c5c: 0x000a, 0x3c5d: 0x000a, + 0x3c5e: 0x000a, 0x3c5f: 0x000a, 0x3c60: 0x000a, 0x3c61: 0x000a, 0x3c62: 0x000a, 0x3c63: 0x000a, + 0x3c64: 0x000a, 0x3c65: 0x000a, 0x3c66: 0x000a, 0x3c67: 0x000a, 0x3c68: 0x000a, + 0x3c70: 0x000a, 0x3c71: 0x000a, 0x3c72: 0x000a, 0x3c73: 0x000a, 0x3c74: 0x000a, 0x3c75: 0x000a, + 0x3c76: 0x000a, + // Block 0xf2, offset 0x3c80 + 0x3c80: 0x000a, 0x3c81: 0x000a, 0x3c82: 0x000a, + 0x3c90: 0x000a, 0x3c91: 0x000a, + 0x3c92: 0x000a, 0x3c93: 0x000a, 0x3c94: 0x000a, 0x3c95: 0x000a, 0x3c96: 0x000a, + // Block 0xf3, offset 0x3cc0 + 0x3cc0: 0x000a, 0x3cc1: 0x000a, 0x3cc2: 0x000a, 0x3cc3: 0x000a, 0x3cc4: 0x000a, 0x3cc5: 0x000a, + 0x3cc6: 0x000a, 0x3cc7: 0x000a, 0x3cc8: 0x000a, 0x3cc9: 0x000a, 0x3cca: 0x000a, 0x3ccb: 0x000a, + 0x3ccc: 0x000a, 0x3ccd: 0x000a, 0x3cce: 0x000a, 0x3ccf: 0x000a, 0x3cd0: 0x000a, 0x3cd1: 0x000a, + 0x3cd2: 0x000a, 0x3cd4: 0x000a, 0x3cd5: 0x000a, 0x3cd6: 0x000a, 0x3cd7: 0x000a, + 0x3cd8: 0x000a, 0x3cd9: 0x000a, 0x3cda: 0x000a, 0x3cdb: 0x000a, 0x3cdc: 0x000a, 0x3cdd: 0x000a, + 0x3cde: 0x000a, 0x3cdf: 0x000a, 0x3ce0: 0x000a, 0x3ce1: 0x000a, 0x3ce2: 0x000a, 0x3ce3: 0x000a, + 0x3ce4: 0x000a, 0x3ce5: 0x000a, 0x3ce6: 0x000a, 0x3ce7: 0x000a, 0x3ce8: 0x000a, 0x3ce9: 0x000a, + 0x3cea: 0x000a, 0x3ceb: 0x000a, 0x3cec: 0x000a, 0x3ced: 0x000a, 0x3cee: 0x000a, 0x3cef: 0x000a, + 0x3cf0: 0x000a, 0x3cf1: 0x000a, 0x3cf2: 0x000a, 0x3cf3: 0x000a, 0x3cf4: 0x000a, 0x3cf5: 0x000a, + 0x3cf6: 0x000a, 0x3cf7: 0x000a, 0x3cf8: 0x000a, 0x3cf9: 0x000a, 0x3cfa: 0x000a, 0x3cfb: 0x000a, + 0x3cfc: 0x000a, 0x3cfd: 0x000a, 0x3cfe: 0x000a, 0x3cff: 0x000a, + // Block 0xf4, offset 0x3d00 + 0x3d00: 0x000a, 0x3d01: 0x000a, 0x3d02: 0x000a, 0x3d03: 0x000a, 0x3d04: 0x000a, 0x3d05: 0x000a, + 0x3d06: 0x000a, 0x3d07: 0x000a, 0x3d08: 0x000a, 0x3d09: 0x000a, 0x3d0a: 0x000a, + 0x3d30: 0x0002, 0x3d31: 0x0002, 0x3d32: 0x0002, 0x3d33: 0x0002, 0x3d34: 0x0002, 0x3d35: 0x0002, + 0x3d36: 0x0002, 0x3d37: 0x0002, 0x3d38: 0x0002, 0x3d39: 0x0002, + // Block 0xf5, offset 0x3d40 + 0x3d7e: 0x000b, 0x3d7f: 0x000b, + // Block 0xf6, offset 0x3d80 + 0x3d80: 0x000b, 0x3d81: 0x000b, 0x3d82: 0x000b, 0x3d83: 0x000b, 0x3d84: 0x000b, 0x3d85: 0x000b, + 0x3d86: 0x000b, 0x3d87: 0x000b, 0x3d88: 0x000b, 0x3d89: 0x000b, 0x3d8a: 0x000b, 0x3d8b: 0x000b, + 0x3d8c: 0x000b, 0x3d8d: 0x000b, 0x3d8e: 0x000b, 0x3d8f: 0x000b, 0x3d90: 0x000b, 0x3d91: 0x000b, + 0x3d92: 0x000b, 0x3d93: 0x000b, 0x3d94: 0x000b, 0x3d95: 0x000b, 0x3d96: 0x000b, 0x3d97: 0x000b, + 0x3d98: 0x000b, 0x3d99: 0x000b, 0x3d9a: 0x000b, 0x3d9b: 0x000b, 0x3d9c: 0x000b, 0x3d9d: 0x000b, + 0x3d9e: 0x000b, 0x3d9f: 0x000b, 0x3da0: 0x000b, 0x3da1: 0x000b, 0x3da2: 0x000b, 0x3da3: 0x000b, + 0x3da4: 0x000b, 0x3da5: 0x000b, 0x3da6: 0x000b, 0x3da7: 0x000b, 0x3da8: 0x000b, 0x3da9: 0x000b, + 0x3daa: 0x000b, 0x3dab: 0x000b, 0x3dac: 0x000b, 0x3dad: 0x000b, 0x3dae: 0x000b, 0x3daf: 0x000b, + 0x3db0: 0x000b, 0x3db1: 0x000b, 0x3db2: 0x000b, 0x3db3: 0x000b, 0x3db4: 0x000b, 0x3db5: 0x000b, + 0x3db6: 0x000b, 0x3db7: 0x000b, 0x3db8: 0x000b, 0x3db9: 0x000b, 0x3dba: 0x000b, 0x3dbb: 0x000b, + 0x3dbc: 0x000b, 0x3dbd: 0x000b, 0x3dbe: 0x000b, 0x3dbf: 0x000b, + // Block 0xf7, offset 0x3dc0 + 0x3dc0: 0x000c, 0x3dc1: 0x000c, 0x3dc2: 0x000c, 0x3dc3: 0x000c, 0x3dc4: 0x000c, 0x3dc5: 0x000c, + 0x3dc6: 0x000c, 0x3dc7: 0x000c, 0x3dc8: 0x000c, 0x3dc9: 0x000c, 0x3dca: 0x000c, 0x3dcb: 0x000c, + 0x3dcc: 0x000c, 0x3dcd: 0x000c, 0x3dce: 0x000c, 0x3dcf: 0x000c, 0x3dd0: 0x000c, 0x3dd1: 0x000c, + 0x3dd2: 0x000c, 0x3dd3: 0x000c, 0x3dd4: 0x000c, 0x3dd5: 0x000c, 0x3dd6: 0x000c, 0x3dd7: 0x000c, + 0x3dd8: 0x000c, 0x3dd9: 0x000c, 0x3dda: 0x000c, 0x3ddb: 0x000c, 0x3ddc: 0x000c, 0x3ddd: 0x000c, + 0x3dde: 0x000c, 0x3ddf: 0x000c, 0x3de0: 0x000c, 0x3de1: 0x000c, 0x3de2: 0x000c, 0x3de3: 0x000c, + 0x3de4: 0x000c, 0x3de5: 0x000c, 0x3de6: 0x000c, 0x3de7: 0x000c, 0x3de8: 0x000c, 0x3de9: 0x000c, + 0x3dea: 0x000c, 0x3deb: 0x000c, 0x3dec: 0x000c, 0x3ded: 0x000c, 0x3dee: 0x000c, 0x3def: 0x000c, + 0x3df0: 0x000b, 0x3df1: 0x000b, 0x3df2: 0x000b, 0x3df3: 0x000b, 0x3df4: 0x000b, 0x3df5: 0x000b, + 0x3df6: 0x000b, 0x3df7: 0x000b, 0x3df8: 0x000b, 0x3df9: 0x000b, 0x3dfa: 0x000b, 0x3dfb: 0x000b, + 0x3dfc: 0x000b, 0x3dfd: 0x000b, 0x3dfe: 0x000b, 0x3dff: 0x000b, +} + +// bidiIndex: 24 blocks, 1536 entries, 1536 bytes +// Block 0 is the zero block. +var bidiIndex = [1536]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x02, + 0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08, + 0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b, + 0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, + 0xea: 0x07, 0xef: 0x08, + 0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15, + // Block 0x4, offset 0x100 + 0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b, + 0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22, + 0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x136: 0x28, 0x137: 0x29, + 0x138: 0x2a, 0x139: 0x2b, 0x13a: 0x2c, 0x13b: 0x2d, 0x13c: 0x2e, 0x13d: 0x2f, 0x13e: 0x30, 0x13f: 0x31, + // Block 0x5, offset 0x140 + 0x140: 0x32, 0x141: 0x33, 0x142: 0x34, + 0x14d: 0x35, 0x14e: 0x36, + 0x150: 0x37, + 0x15a: 0x38, 0x15c: 0x39, 0x15d: 0x3a, 0x15e: 0x3b, 0x15f: 0x3c, + 0x160: 0x3d, 0x162: 0x3e, 0x164: 0x3f, 0x165: 0x40, 0x167: 0x41, + 0x168: 0x42, 0x169: 0x43, 0x16a: 0x44, 0x16b: 0x45, 0x16c: 0x46, 0x16d: 0x47, 0x16e: 0x48, 0x16f: 0x49, + 0x170: 0x4a, 0x173: 0x4b, 0x177: 0x4c, + 0x17e: 0x4d, 0x17f: 0x4e, + // Block 0x6, offset 0x180 + 0x180: 0x4f, 0x181: 0x50, 0x182: 0x51, 0x183: 0x52, 0x184: 0x53, 0x185: 0x54, 0x186: 0x55, 0x187: 0x56, + 0x188: 0x57, 0x189: 0x56, 0x18a: 0x56, 0x18b: 0x56, 0x18c: 0x58, 0x18d: 0x59, 0x18e: 0x5a, 0x18f: 0x56, + 0x190: 0x5b, 0x191: 0x5c, 0x192: 0x5d, 0x193: 0x5e, 0x194: 0x56, 0x195: 0x56, 0x196: 0x56, 0x197: 0x56, + 0x198: 0x56, 0x199: 0x56, 0x19a: 0x5f, 0x19b: 0x56, 0x19c: 0x56, 0x19d: 0x60, 0x19e: 0x56, 0x19f: 0x61, + 0x1a4: 0x56, 0x1a5: 0x56, 0x1a6: 0x62, 0x1a7: 0x63, + 0x1a8: 0x56, 0x1a9: 0x56, 0x1aa: 0x56, 0x1ab: 0x56, 0x1ac: 0x56, 0x1ad: 0x64, 0x1ae: 0x65, 0x1af: 0x56, + 0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68, + 0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x56, 0x1bd: 0x56, 0x1be: 0x56, 0x1bf: 0x6d, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71, + 0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77, + // Block 0x8, offset 0x200 + 0x237: 0x56, + // Block 0x9, offset 0x240 + 0x252: 0x78, 0x253: 0x79, + 0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f, + 0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86, + 0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26d: 0x8b, 0x26f: 0x8c, + // Block 0xa, offset 0x280 + 0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x0e, 0x2af: 0x0e, + 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8f, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x90, + 0x2b8: 0x91, 0x2b9: 0x92, 0x2ba: 0x0e, 0x2bb: 0x93, 0x2bc: 0x94, 0x2bd: 0x95, 0x2bf: 0x96, + // Block 0xb, offset 0x2c0 + 0x2c4: 0x97, 0x2c5: 0x56, 0x2c6: 0x98, 0x2c7: 0x99, + 0x2cb: 0x9a, 0x2cd: 0x9b, + 0x2e0: 0x9c, 0x2e1: 0x9c, 0x2e2: 0x9c, 0x2e3: 0x9c, 0x2e4: 0x9d, 0x2e5: 0x9c, 0x2e6: 0x9c, 0x2e7: 0x9c, + 0x2e8: 0x9e, 0x2e9: 0x9c, 0x2ea: 0x9c, 0x2eb: 0x9f, 0x2ec: 0xa0, 0x2ed: 0x9c, 0x2ee: 0x9c, 0x2ef: 0x9c, + 0x2f0: 0x9c, 0x2f1: 0x9c, 0x2f2: 0x9c, 0x2f3: 0x9c, 0x2f4: 0xa1, 0x2f5: 0x9c, 0x2f6: 0x9c, 0x2f7: 0x9c, + 0x2f8: 0x9c, 0x2f9: 0xa2, 0x2fa: 0xa3, 0x2fb: 0x9c, 0x2fc: 0xa4, 0x2fd: 0xa5, 0x2fe: 0x9c, 0x2ff: 0x9c, + // Block 0xc, offset 0x300 + 0x300: 0xa6, 0x301: 0xa7, 0x302: 0xa8, 0x304: 0xa9, 0x305: 0xaa, 0x306: 0xab, 0x307: 0xac, + 0x308: 0xad, 0x30b: 0xae, 0x30c: 0x26, 0x30d: 0xaf, + 0x310: 0xb0, 0x311: 0xb1, 0x312: 0xb2, 0x313: 0xb3, 0x316: 0xb4, 0x317: 0xb5, + 0x318: 0xb6, 0x319: 0xb7, 0x31a: 0xb8, 0x31c: 0xb9, + 0x320: 0xba, 0x324: 0xbb, 0x325: 0xbc, 0x327: 0xbd, + 0x328: 0xbe, 0x329: 0xbf, 0x32a: 0xc0, + 0x330: 0xc1, 0x332: 0xc2, 0x334: 0xc3, 0x335: 0xc4, 0x336: 0xc5, + 0x33b: 0xc6, 0x33f: 0xc7, + // Block 0xd, offset 0x340 + 0x36b: 0xc8, 0x36c: 0xc9, + 0x37d: 0xca, 0x37e: 0xcb, 0x37f: 0xcc, + // Block 0xe, offset 0x380 + 0x3b2: 0xcd, + // Block 0xf, offset 0x3c0 + 0x3c5: 0xce, 0x3c6: 0xcf, + 0x3c8: 0x56, 0x3c9: 0xd0, 0x3cc: 0x56, 0x3cd: 0xd1, + 0x3db: 0xd2, 0x3dc: 0xd3, 0x3dd: 0xd4, 0x3de: 0xd5, 0x3df: 0xd6, + 0x3e8: 0xd7, 0x3e9: 0xd8, 0x3ea: 0xd9, + // Block 0x10, offset 0x400 + 0x400: 0xda, 0x404: 0xc9, + 0x40b: 0xdb, + 0x420: 0x9c, 0x421: 0x9c, 0x422: 0x9c, 0x423: 0xdc, 0x424: 0x9c, 0x425: 0xdd, 0x426: 0x9c, 0x427: 0x9c, + 0x428: 0x9c, 0x429: 0x9c, 0x42a: 0x9c, 0x42b: 0x9c, 0x42c: 0x9c, 0x42d: 0x9c, 0x42e: 0x9c, 0x42f: 0x9c, + 0x430: 0x9c, 0x431: 0xa4, 0x432: 0x0e, 0x433: 0x9c, 0x434: 0x0e, 0x435: 0xde, 0x436: 0x9c, 0x437: 0x9c, + 0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xdf, 0x43c: 0x9c, 0x43d: 0x9c, 0x43e: 0x9c, 0x43f: 0x9c, + // Block 0x11, offset 0x440 + 0x440: 0xe0, 0x441: 0x56, 0x442: 0xe1, 0x443: 0xe2, 0x444: 0xe3, 0x445: 0xe4, 0x446: 0xe5, + 0x449: 0xe6, 0x44c: 0x56, 0x44d: 0x56, 0x44e: 0x56, 0x44f: 0x56, + 0x450: 0x56, 0x451: 0x56, 0x452: 0x56, 0x453: 0x56, 0x454: 0x56, 0x455: 0x56, 0x456: 0x56, 0x457: 0x56, + 0x458: 0x56, 0x459: 0x56, 0x45a: 0x56, 0x45b: 0xe7, 0x45c: 0x56, 0x45d: 0x6c, 0x45e: 0x56, 0x45f: 0xe8, + 0x460: 0xe9, 0x461: 0xea, 0x462: 0xeb, 0x464: 0x56, 0x465: 0xec, 0x466: 0x56, 0x467: 0xed, + 0x468: 0x56, 0x469: 0xee, 0x46a: 0xef, 0x46b: 0xf0, 0x46c: 0x56, 0x46d: 0x56, 0x46e: 0xf1, 0x46f: 0xf2, + 0x47f: 0xf3, + // Block 0x12, offset 0x480 + 0x4bf: 0xf3, + // Block 0x13, offset 0x4c0 + 0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b, + 0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f, + 0x4ef: 0x10, + 0x4ff: 0x10, + // Block 0x14, offset 0x500 + 0x50f: 0x10, + 0x51f: 0x10, + 0x52f: 0x10, + 0x53f: 0x10, + // Block 0x15, offset 0x540 + 0x540: 0xf4, 0x541: 0xf4, 0x542: 0xf4, 0x543: 0xf4, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xf5, + 0x548: 0xf4, 0x549: 0xf4, 0x54a: 0xf4, 0x54b: 0xf4, 0x54c: 0xf4, 0x54d: 0xf4, 0x54e: 0xf4, 0x54f: 0xf4, + 0x550: 0xf4, 0x551: 0xf4, 0x552: 0xf4, 0x553: 0xf4, 0x554: 0xf4, 0x555: 0xf4, 0x556: 0xf4, 0x557: 0xf4, + 0x558: 0xf4, 0x559: 0xf4, 0x55a: 0xf4, 0x55b: 0xf4, 0x55c: 0xf4, 0x55d: 0xf4, 0x55e: 0xf4, 0x55f: 0xf4, + 0x560: 0xf4, 0x561: 0xf4, 0x562: 0xf4, 0x563: 0xf4, 0x564: 0xf4, 0x565: 0xf4, 0x566: 0xf4, 0x567: 0xf4, + 0x568: 0xf4, 0x569: 0xf4, 0x56a: 0xf4, 0x56b: 0xf4, 0x56c: 0xf4, 0x56d: 0xf4, 0x56e: 0xf4, 0x56f: 0xf4, + 0x570: 0xf4, 0x571: 0xf4, 0x572: 0xf4, 0x573: 0xf4, 0x574: 0xf4, 0x575: 0xf4, 0x576: 0xf4, 0x577: 0xf4, + 0x578: 0xf4, 0x579: 0xf4, 0x57a: 0xf4, 0x57b: 0xf4, 0x57c: 0xf4, 0x57d: 0xf4, 0x57e: 0xf4, 0x57f: 0xf4, + // Block 0x16, offset 0x580 + 0x58f: 0x10, + 0x59f: 0x10, + 0x5a0: 0x13, + 0x5af: 0x10, + 0x5bf: 0x10, + // Block 0x17, offset 0x5c0 + 0x5cf: 0x10, +} + +// Total table size 17464 bytes (17KiB); checksum: F50EF68C diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go index 10f5202c6..7e1ae096e 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go @@ -1,6 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -// +build go1.14 +// +build go1.14,!go1.16 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go new file mode 100644 index 000000000..9ea1b4214 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go @@ -0,0 +1,7760 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build go1.16 + +package norm + +import "sync" + +const ( + // Version is the Unicode edition from which the tables are derived. + Version = "13.0.0" + + // MaxTransformChunkSize indicates the maximum number of bytes that Transform + // may need to write atomically for any Form. Making a destination buffer at + // least this size ensures that Transform can always make progress and that + // the user does not need to grow the buffer on an ErrShortDst. + MaxTransformChunkSize = 35 + maxNonStarters*4 +) + +var ccc = [56]uint8{ + 0, 1, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, + 36, 84, 91, 103, 107, 118, 122, 129, + 130, 132, 202, 214, 216, 218, 220, 222, + 224, 226, 228, 230, 232, 233, 234, 240, +} + +const ( + firstMulti = 0x1870 + firstCCC = 0x2CAB + endMulti = 0x2F77 + firstLeadingCCC = 0x49C5 + firstCCCZeroExcept = 0x4A8F + firstStarterWithNLead = 0x4AB6 + lastDecomp = 0x4AB8 + maxDecomp = 0x8000 +) + +// decomps: 19128 bytes +var decomps = [...]byte{ + // Bytes 0 - 3f + 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41, + 0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41, + 0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41, + 0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41, + 0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41, + 0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41, + 0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41, + 0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41, + // Bytes 40 - 7f + 0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41, + 0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41, + 0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41, + 0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41, + 0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41, + 0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, + 0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41, + 0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, + // Bytes 80 - bf + 0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41, + 0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41, + 0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41, + 0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41, + 0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41, + 0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41, + 0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41, + 0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42, + // Bytes c0 - ff + 0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5, + 0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2, + 0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42, + 0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, + 0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, + 0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, + 0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, + 0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, + // Bytes 100 - 13f + 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42, + 0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F, + 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9, + 0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42, + 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB, + 0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9, + 0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42, + 0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5, + // Bytes 140 - 17f + 0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, + 0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42, + 0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A, + 0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA, + 0x8D, 0x42, 0xCA, 0x90, 0x42, 0xCA, 0x91, 0x42, + 0xCA, 0x92, 0x42, 0xCA, 0x95, 0x42, 0xCA, 0x9D, + 0x42, 0xCA, 0x9F, 0x42, 0xCA, 0xB9, 0x42, 0xCE, + 0x91, 0x42, 0xCE, 0x92, 0x42, 0xCE, 0x93, 0x42, + // Bytes 180 - 1bf + 0xCE, 0x94, 0x42, 0xCE, 0x95, 0x42, 0xCE, 0x96, + 0x42, 0xCE, 0x97, 0x42, 0xCE, 0x98, 0x42, 0xCE, + 0x99, 0x42, 0xCE, 0x9A, 0x42, 0xCE, 0x9B, 0x42, + 0xCE, 0x9C, 0x42, 0xCE, 0x9D, 0x42, 0xCE, 0x9E, + 0x42, 0xCE, 0x9F, 0x42, 0xCE, 0xA0, 0x42, 0xCE, + 0xA1, 0x42, 0xCE, 0xA3, 0x42, 0xCE, 0xA4, 0x42, + 0xCE, 0xA5, 0x42, 0xCE, 0xA6, 0x42, 0xCE, 0xA7, + 0x42, 0xCE, 0xA8, 0x42, 0xCE, 0xA9, 0x42, 0xCE, + // Bytes 1c0 - 1ff + 0xB1, 0x42, 0xCE, 0xB2, 0x42, 0xCE, 0xB3, 0x42, + 0xCE, 0xB4, 0x42, 0xCE, 0xB5, 0x42, 0xCE, 0xB6, + 0x42, 0xCE, 0xB7, 0x42, 0xCE, 0xB8, 0x42, 0xCE, + 0xB9, 0x42, 0xCE, 0xBA, 0x42, 0xCE, 0xBB, 0x42, + 0xCE, 0xBC, 0x42, 0xCE, 0xBD, 0x42, 0xCE, 0xBE, + 0x42, 0xCE, 0xBF, 0x42, 0xCF, 0x80, 0x42, 0xCF, + 0x81, 0x42, 0xCF, 0x82, 0x42, 0xCF, 0x83, 0x42, + 0xCF, 0x84, 0x42, 0xCF, 0x85, 0x42, 0xCF, 0x86, + // Bytes 200 - 23f + 0x42, 0xCF, 0x87, 0x42, 0xCF, 0x88, 0x42, 0xCF, + 0x89, 0x42, 0xCF, 0x9C, 0x42, 0xCF, 0x9D, 0x42, + 0xD0, 0xBD, 0x42, 0xD1, 0x8A, 0x42, 0xD1, 0x8C, + 0x42, 0xD7, 0x90, 0x42, 0xD7, 0x91, 0x42, 0xD7, + 0x92, 0x42, 0xD7, 0x93, 0x42, 0xD7, 0x94, 0x42, + 0xD7, 0x9B, 0x42, 0xD7, 0x9C, 0x42, 0xD7, 0x9D, + 0x42, 0xD7, 0xA2, 0x42, 0xD7, 0xA8, 0x42, 0xD7, + 0xAA, 0x42, 0xD8, 0xA1, 0x42, 0xD8, 0xA7, 0x42, + // Bytes 240 - 27f + 0xD8, 0xA8, 0x42, 0xD8, 0xA9, 0x42, 0xD8, 0xAA, + 0x42, 0xD8, 0xAB, 0x42, 0xD8, 0xAC, 0x42, 0xD8, + 0xAD, 0x42, 0xD8, 0xAE, 0x42, 0xD8, 0xAF, 0x42, + 0xD8, 0xB0, 0x42, 0xD8, 0xB1, 0x42, 0xD8, 0xB2, + 0x42, 0xD8, 0xB3, 0x42, 0xD8, 0xB4, 0x42, 0xD8, + 0xB5, 0x42, 0xD8, 0xB6, 0x42, 0xD8, 0xB7, 0x42, + 0xD8, 0xB8, 0x42, 0xD8, 0xB9, 0x42, 0xD8, 0xBA, + 0x42, 0xD9, 0x81, 0x42, 0xD9, 0x82, 0x42, 0xD9, + // Bytes 280 - 2bf + 0x83, 0x42, 0xD9, 0x84, 0x42, 0xD9, 0x85, 0x42, + 0xD9, 0x86, 0x42, 0xD9, 0x87, 0x42, 0xD9, 0x88, + 0x42, 0xD9, 0x89, 0x42, 0xD9, 0x8A, 0x42, 0xD9, + 0xAE, 0x42, 0xD9, 0xAF, 0x42, 0xD9, 0xB1, 0x42, + 0xD9, 0xB9, 0x42, 0xD9, 0xBA, 0x42, 0xD9, 0xBB, + 0x42, 0xD9, 0xBE, 0x42, 0xD9, 0xBF, 0x42, 0xDA, + 0x80, 0x42, 0xDA, 0x83, 0x42, 0xDA, 0x84, 0x42, + 0xDA, 0x86, 0x42, 0xDA, 0x87, 0x42, 0xDA, 0x88, + // Bytes 2c0 - 2ff + 0x42, 0xDA, 0x8C, 0x42, 0xDA, 0x8D, 0x42, 0xDA, + 0x8E, 0x42, 0xDA, 0x91, 0x42, 0xDA, 0x98, 0x42, + 0xDA, 0xA1, 0x42, 0xDA, 0xA4, 0x42, 0xDA, 0xA6, + 0x42, 0xDA, 0xA9, 0x42, 0xDA, 0xAD, 0x42, 0xDA, + 0xAF, 0x42, 0xDA, 0xB1, 0x42, 0xDA, 0xB3, 0x42, + 0xDA, 0xBA, 0x42, 0xDA, 0xBB, 0x42, 0xDA, 0xBE, + 0x42, 0xDB, 0x81, 0x42, 0xDB, 0x85, 0x42, 0xDB, + 0x86, 0x42, 0xDB, 0x87, 0x42, 0xDB, 0x88, 0x42, + // Bytes 300 - 33f + 0xDB, 0x89, 0x42, 0xDB, 0x8B, 0x42, 0xDB, 0x8C, + 0x42, 0xDB, 0x90, 0x42, 0xDB, 0x92, 0x43, 0xE0, + 0xBC, 0x8B, 0x43, 0xE1, 0x83, 0x9C, 0x43, 0xE1, + 0x84, 0x80, 0x43, 0xE1, 0x84, 0x81, 0x43, 0xE1, + 0x84, 0x82, 0x43, 0xE1, 0x84, 0x83, 0x43, 0xE1, + 0x84, 0x84, 0x43, 0xE1, 0x84, 0x85, 0x43, 0xE1, + 0x84, 0x86, 0x43, 0xE1, 0x84, 0x87, 0x43, 0xE1, + 0x84, 0x88, 0x43, 0xE1, 0x84, 0x89, 0x43, 0xE1, + // Bytes 340 - 37f + 0x84, 0x8A, 0x43, 0xE1, 0x84, 0x8B, 0x43, 0xE1, + 0x84, 0x8C, 0x43, 0xE1, 0x84, 0x8D, 0x43, 0xE1, + 0x84, 0x8E, 0x43, 0xE1, 0x84, 0x8F, 0x43, 0xE1, + 0x84, 0x90, 0x43, 0xE1, 0x84, 0x91, 0x43, 0xE1, + 0x84, 0x92, 0x43, 0xE1, 0x84, 0x94, 0x43, 0xE1, + 0x84, 0x95, 0x43, 0xE1, 0x84, 0x9A, 0x43, 0xE1, + 0x84, 0x9C, 0x43, 0xE1, 0x84, 0x9D, 0x43, 0xE1, + 0x84, 0x9E, 0x43, 0xE1, 0x84, 0xA0, 0x43, 0xE1, + // Bytes 380 - 3bf + 0x84, 0xA1, 0x43, 0xE1, 0x84, 0xA2, 0x43, 0xE1, + 0x84, 0xA3, 0x43, 0xE1, 0x84, 0xA7, 0x43, 0xE1, + 0x84, 0xA9, 0x43, 0xE1, 0x84, 0xAB, 0x43, 0xE1, + 0x84, 0xAC, 0x43, 0xE1, 0x84, 0xAD, 0x43, 0xE1, + 0x84, 0xAE, 0x43, 0xE1, 0x84, 0xAF, 0x43, 0xE1, + 0x84, 0xB2, 0x43, 0xE1, 0x84, 0xB6, 0x43, 0xE1, + 0x85, 0x80, 0x43, 0xE1, 0x85, 0x87, 0x43, 0xE1, + 0x85, 0x8C, 0x43, 0xE1, 0x85, 0x97, 0x43, 0xE1, + // Bytes 3c0 - 3ff + 0x85, 0x98, 0x43, 0xE1, 0x85, 0x99, 0x43, 0xE1, + 0x85, 0xA0, 0x43, 0xE1, 0x86, 0x84, 0x43, 0xE1, + 0x86, 0x85, 0x43, 0xE1, 0x86, 0x88, 0x43, 0xE1, + 0x86, 0x91, 0x43, 0xE1, 0x86, 0x92, 0x43, 0xE1, + 0x86, 0x94, 0x43, 0xE1, 0x86, 0x9E, 0x43, 0xE1, + 0x86, 0xA1, 0x43, 0xE1, 0x87, 0x87, 0x43, 0xE1, + 0x87, 0x88, 0x43, 0xE1, 0x87, 0x8C, 0x43, 0xE1, + 0x87, 0x8E, 0x43, 0xE1, 0x87, 0x93, 0x43, 0xE1, + // Bytes 400 - 43f + 0x87, 0x97, 0x43, 0xE1, 0x87, 0x99, 0x43, 0xE1, + 0x87, 0x9D, 0x43, 0xE1, 0x87, 0x9F, 0x43, 0xE1, + 0x87, 0xB1, 0x43, 0xE1, 0x87, 0xB2, 0x43, 0xE1, + 0xB4, 0x82, 0x43, 0xE1, 0xB4, 0x96, 0x43, 0xE1, + 0xB4, 0x97, 0x43, 0xE1, 0xB4, 0x9C, 0x43, 0xE1, + 0xB4, 0x9D, 0x43, 0xE1, 0xB4, 0xA5, 0x43, 0xE1, + 0xB5, 0xBB, 0x43, 0xE1, 0xB6, 0x85, 0x43, 0xE2, + 0x80, 0x82, 0x43, 0xE2, 0x80, 0x83, 0x43, 0xE2, + // Bytes 440 - 47f + 0x80, 0x90, 0x43, 0xE2, 0x80, 0x93, 0x43, 0xE2, + 0x80, 0x94, 0x43, 0xE2, 0x82, 0xA9, 0x43, 0xE2, + 0x86, 0x90, 0x43, 0xE2, 0x86, 0x91, 0x43, 0xE2, + 0x86, 0x92, 0x43, 0xE2, 0x86, 0x93, 0x43, 0xE2, + 0x88, 0x82, 0x43, 0xE2, 0x88, 0x87, 0x43, 0xE2, + 0x88, 0x91, 0x43, 0xE2, 0x88, 0x92, 0x43, 0xE2, + 0x94, 0x82, 0x43, 0xE2, 0x96, 0xA0, 0x43, 0xE2, + 0x97, 0x8B, 0x43, 0xE2, 0xA6, 0x85, 0x43, 0xE2, + // Bytes 480 - 4bf + 0xA6, 0x86, 0x43, 0xE2, 0xB5, 0xA1, 0x43, 0xE3, + 0x80, 0x81, 0x43, 0xE3, 0x80, 0x82, 0x43, 0xE3, + 0x80, 0x88, 0x43, 0xE3, 0x80, 0x89, 0x43, 0xE3, + 0x80, 0x8A, 0x43, 0xE3, 0x80, 0x8B, 0x43, 0xE3, + 0x80, 0x8C, 0x43, 0xE3, 0x80, 0x8D, 0x43, 0xE3, + 0x80, 0x8E, 0x43, 0xE3, 0x80, 0x8F, 0x43, 0xE3, + 0x80, 0x90, 0x43, 0xE3, 0x80, 0x91, 0x43, 0xE3, + 0x80, 0x92, 0x43, 0xE3, 0x80, 0x94, 0x43, 0xE3, + // Bytes 4c0 - 4ff + 0x80, 0x95, 0x43, 0xE3, 0x80, 0x96, 0x43, 0xE3, + 0x80, 0x97, 0x43, 0xE3, 0x82, 0xA1, 0x43, 0xE3, + 0x82, 0xA2, 0x43, 0xE3, 0x82, 0xA3, 0x43, 0xE3, + 0x82, 0xA4, 0x43, 0xE3, 0x82, 0xA5, 0x43, 0xE3, + 0x82, 0xA6, 0x43, 0xE3, 0x82, 0xA7, 0x43, 0xE3, + 0x82, 0xA8, 0x43, 0xE3, 0x82, 0xA9, 0x43, 0xE3, + 0x82, 0xAA, 0x43, 0xE3, 0x82, 0xAB, 0x43, 0xE3, + 0x82, 0xAD, 0x43, 0xE3, 0x82, 0xAF, 0x43, 0xE3, + // Bytes 500 - 53f + 0x82, 0xB1, 0x43, 0xE3, 0x82, 0xB3, 0x43, 0xE3, + 0x82, 0xB5, 0x43, 0xE3, 0x82, 0xB7, 0x43, 0xE3, + 0x82, 0xB9, 0x43, 0xE3, 0x82, 0xBB, 0x43, 0xE3, + 0x82, 0xBD, 0x43, 0xE3, 0x82, 0xBF, 0x43, 0xE3, + 0x83, 0x81, 0x43, 0xE3, 0x83, 0x83, 0x43, 0xE3, + 0x83, 0x84, 0x43, 0xE3, 0x83, 0x86, 0x43, 0xE3, + 0x83, 0x88, 0x43, 0xE3, 0x83, 0x8A, 0x43, 0xE3, + 0x83, 0x8B, 0x43, 0xE3, 0x83, 0x8C, 0x43, 0xE3, + // Bytes 540 - 57f + 0x83, 0x8D, 0x43, 0xE3, 0x83, 0x8E, 0x43, 0xE3, + 0x83, 0x8F, 0x43, 0xE3, 0x83, 0x92, 0x43, 0xE3, + 0x83, 0x95, 0x43, 0xE3, 0x83, 0x98, 0x43, 0xE3, + 0x83, 0x9B, 0x43, 0xE3, 0x83, 0x9E, 0x43, 0xE3, + 0x83, 0x9F, 0x43, 0xE3, 0x83, 0xA0, 0x43, 0xE3, + 0x83, 0xA1, 0x43, 0xE3, 0x83, 0xA2, 0x43, 0xE3, + 0x83, 0xA3, 0x43, 0xE3, 0x83, 0xA4, 0x43, 0xE3, + 0x83, 0xA5, 0x43, 0xE3, 0x83, 0xA6, 0x43, 0xE3, + // Bytes 580 - 5bf + 0x83, 0xA7, 0x43, 0xE3, 0x83, 0xA8, 0x43, 0xE3, + 0x83, 0xA9, 0x43, 0xE3, 0x83, 0xAA, 0x43, 0xE3, + 0x83, 0xAB, 0x43, 0xE3, 0x83, 0xAC, 0x43, 0xE3, + 0x83, 0xAD, 0x43, 0xE3, 0x83, 0xAF, 0x43, 0xE3, + 0x83, 0xB0, 0x43, 0xE3, 0x83, 0xB1, 0x43, 0xE3, + 0x83, 0xB2, 0x43, 0xE3, 0x83, 0xB3, 0x43, 0xE3, + 0x83, 0xBB, 0x43, 0xE3, 0x83, 0xBC, 0x43, 0xE3, + 0x92, 0x9E, 0x43, 0xE3, 0x92, 0xB9, 0x43, 0xE3, + // Bytes 5c0 - 5ff + 0x92, 0xBB, 0x43, 0xE3, 0x93, 0x9F, 0x43, 0xE3, + 0x94, 0x95, 0x43, 0xE3, 0x9B, 0xAE, 0x43, 0xE3, + 0x9B, 0xBC, 0x43, 0xE3, 0x9E, 0x81, 0x43, 0xE3, + 0xA0, 0xAF, 0x43, 0xE3, 0xA1, 0xA2, 0x43, 0xE3, + 0xA1, 0xBC, 0x43, 0xE3, 0xA3, 0x87, 0x43, 0xE3, + 0xA3, 0xA3, 0x43, 0xE3, 0xA4, 0x9C, 0x43, 0xE3, + 0xA4, 0xBA, 0x43, 0xE3, 0xA8, 0xAE, 0x43, 0xE3, + 0xA9, 0xAC, 0x43, 0xE3, 0xAB, 0xA4, 0x43, 0xE3, + // Bytes 600 - 63f + 0xAC, 0x88, 0x43, 0xE3, 0xAC, 0x99, 0x43, 0xE3, + 0xAD, 0x89, 0x43, 0xE3, 0xAE, 0x9D, 0x43, 0xE3, + 0xB0, 0x98, 0x43, 0xE3, 0xB1, 0x8E, 0x43, 0xE3, + 0xB4, 0xB3, 0x43, 0xE3, 0xB6, 0x96, 0x43, 0xE3, + 0xBA, 0xAC, 0x43, 0xE3, 0xBA, 0xB8, 0x43, 0xE3, + 0xBC, 0x9B, 0x43, 0xE3, 0xBF, 0xBC, 0x43, 0xE4, + 0x80, 0x88, 0x43, 0xE4, 0x80, 0x98, 0x43, 0xE4, + 0x80, 0xB9, 0x43, 0xE4, 0x81, 0x86, 0x43, 0xE4, + // Bytes 640 - 67f + 0x82, 0x96, 0x43, 0xE4, 0x83, 0xA3, 0x43, 0xE4, + 0x84, 0xAF, 0x43, 0xE4, 0x88, 0x82, 0x43, 0xE4, + 0x88, 0xA7, 0x43, 0xE4, 0x8A, 0xA0, 0x43, 0xE4, + 0x8C, 0x81, 0x43, 0xE4, 0x8C, 0xB4, 0x43, 0xE4, + 0x8D, 0x99, 0x43, 0xE4, 0x8F, 0x95, 0x43, 0xE4, + 0x8F, 0x99, 0x43, 0xE4, 0x90, 0x8B, 0x43, 0xE4, + 0x91, 0xAB, 0x43, 0xE4, 0x94, 0xAB, 0x43, 0xE4, + 0x95, 0x9D, 0x43, 0xE4, 0x95, 0xA1, 0x43, 0xE4, + // Bytes 680 - 6bf + 0x95, 0xAB, 0x43, 0xE4, 0x97, 0x97, 0x43, 0xE4, + 0x97, 0xB9, 0x43, 0xE4, 0x98, 0xB5, 0x43, 0xE4, + 0x9A, 0xBE, 0x43, 0xE4, 0x9B, 0x87, 0x43, 0xE4, + 0xA6, 0x95, 0x43, 0xE4, 0xA7, 0xA6, 0x43, 0xE4, + 0xA9, 0xAE, 0x43, 0xE4, 0xA9, 0xB6, 0x43, 0xE4, + 0xAA, 0xB2, 0x43, 0xE4, 0xAC, 0xB3, 0x43, 0xE4, + 0xAF, 0x8E, 0x43, 0xE4, 0xB3, 0x8E, 0x43, 0xE4, + 0xB3, 0xAD, 0x43, 0xE4, 0xB3, 0xB8, 0x43, 0xE4, + // Bytes 6c0 - 6ff + 0xB5, 0x96, 0x43, 0xE4, 0xB8, 0x80, 0x43, 0xE4, + 0xB8, 0x81, 0x43, 0xE4, 0xB8, 0x83, 0x43, 0xE4, + 0xB8, 0x89, 0x43, 0xE4, 0xB8, 0x8A, 0x43, 0xE4, + 0xB8, 0x8B, 0x43, 0xE4, 0xB8, 0x8D, 0x43, 0xE4, + 0xB8, 0x99, 0x43, 0xE4, 0xB8, 0xA6, 0x43, 0xE4, + 0xB8, 0xA8, 0x43, 0xE4, 0xB8, 0xAD, 0x43, 0xE4, + 0xB8, 0xB2, 0x43, 0xE4, 0xB8, 0xB6, 0x43, 0xE4, + 0xB8, 0xB8, 0x43, 0xE4, 0xB8, 0xB9, 0x43, 0xE4, + // Bytes 700 - 73f + 0xB8, 0xBD, 0x43, 0xE4, 0xB8, 0xBF, 0x43, 0xE4, + 0xB9, 0x81, 0x43, 0xE4, 0xB9, 0x99, 0x43, 0xE4, + 0xB9, 0x9D, 0x43, 0xE4, 0xBA, 0x82, 0x43, 0xE4, + 0xBA, 0x85, 0x43, 0xE4, 0xBA, 0x86, 0x43, 0xE4, + 0xBA, 0x8C, 0x43, 0xE4, 0xBA, 0x94, 0x43, 0xE4, + 0xBA, 0xA0, 0x43, 0xE4, 0xBA, 0xA4, 0x43, 0xE4, + 0xBA, 0xAE, 0x43, 0xE4, 0xBA, 0xBA, 0x43, 0xE4, + 0xBB, 0x80, 0x43, 0xE4, 0xBB, 0x8C, 0x43, 0xE4, + // Bytes 740 - 77f + 0xBB, 0xA4, 0x43, 0xE4, 0xBC, 0x81, 0x43, 0xE4, + 0xBC, 0x91, 0x43, 0xE4, 0xBD, 0xA0, 0x43, 0xE4, + 0xBE, 0x80, 0x43, 0xE4, 0xBE, 0x86, 0x43, 0xE4, + 0xBE, 0x8B, 0x43, 0xE4, 0xBE, 0xAE, 0x43, 0xE4, + 0xBE, 0xBB, 0x43, 0xE4, 0xBE, 0xBF, 0x43, 0xE5, + 0x80, 0x82, 0x43, 0xE5, 0x80, 0xAB, 0x43, 0xE5, + 0x81, 0xBA, 0x43, 0xE5, 0x82, 0x99, 0x43, 0xE5, + 0x83, 0x8F, 0x43, 0xE5, 0x83, 0x9A, 0x43, 0xE5, + // Bytes 780 - 7bf + 0x83, 0xA7, 0x43, 0xE5, 0x84, 0xAA, 0x43, 0xE5, + 0x84, 0xBF, 0x43, 0xE5, 0x85, 0x80, 0x43, 0xE5, + 0x85, 0x85, 0x43, 0xE5, 0x85, 0x8D, 0x43, 0xE5, + 0x85, 0x94, 0x43, 0xE5, 0x85, 0xA4, 0x43, 0xE5, + 0x85, 0xA5, 0x43, 0xE5, 0x85, 0xA7, 0x43, 0xE5, + 0x85, 0xA8, 0x43, 0xE5, 0x85, 0xA9, 0x43, 0xE5, + 0x85, 0xAB, 0x43, 0xE5, 0x85, 0xAD, 0x43, 0xE5, + 0x85, 0xB7, 0x43, 0xE5, 0x86, 0x80, 0x43, 0xE5, + // Bytes 7c0 - 7ff + 0x86, 0x82, 0x43, 0xE5, 0x86, 0x8D, 0x43, 0xE5, + 0x86, 0x92, 0x43, 0xE5, 0x86, 0x95, 0x43, 0xE5, + 0x86, 0x96, 0x43, 0xE5, 0x86, 0x97, 0x43, 0xE5, + 0x86, 0x99, 0x43, 0xE5, 0x86, 0xA4, 0x43, 0xE5, + 0x86, 0xAB, 0x43, 0xE5, 0x86, 0xAC, 0x43, 0xE5, + 0x86, 0xB5, 0x43, 0xE5, 0x86, 0xB7, 0x43, 0xE5, + 0x87, 0x89, 0x43, 0xE5, 0x87, 0x8C, 0x43, 0xE5, + 0x87, 0x9C, 0x43, 0xE5, 0x87, 0x9E, 0x43, 0xE5, + // Bytes 800 - 83f + 0x87, 0xA0, 0x43, 0xE5, 0x87, 0xB5, 0x43, 0xE5, + 0x88, 0x80, 0x43, 0xE5, 0x88, 0x83, 0x43, 0xE5, + 0x88, 0x87, 0x43, 0xE5, 0x88, 0x97, 0x43, 0xE5, + 0x88, 0x9D, 0x43, 0xE5, 0x88, 0xA9, 0x43, 0xE5, + 0x88, 0xBA, 0x43, 0xE5, 0x88, 0xBB, 0x43, 0xE5, + 0x89, 0x86, 0x43, 0xE5, 0x89, 0x8D, 0x43, 0xE5, + 0x89, 0xB2, 0x43, 0xE5, 0x89, 0xB7, 0x43, 0xE5, + 0x8A, 0x89, 0x43, 0xE5, 0x8A, 0x9B, 0x43, 0xE5, + // Bytes 840 - 87f + 0x8A, 0xA3, 0x43, 0xE5, 0x8A, 0xB3, 0x43, 0xE5, + 0x8A, 0xB4, 0x43, 0xE5, 0x8B, 0x87, 0x43, 0xE5, + 0x8B, 0x89, 0x43, 0xE5, 0x8B, 0x92, 0x43, 0xE5, + 0x8B, 0x9E, 0x43, 0xE5, 0x8B, 0xA4, 0x43, 0xE5, + 0x8B, 0xB5, 0x43, 0xE5, 0x8B, 0xB9, 0x43, 0xE5, + 0x8B, 0xBA, 0x43, 0xE5, 0x8C, 0x85, 0x43, 0xE5, + 0x8C, 0x86, 0x43, 0xE5, 0x8C, 0x95, 0x43, 0xE5, + 0x8C, 0x97, 0x43, 0xE5, 0x8C, 0x9A, 0x43, 0xE5, + // Bytes 880 - 8bf + 0x8C, 0xB8, 0x43, 0xE5, 0x8C, 0xBB, 0x43, 0xE5, + 0x8C, 0xBF, 0x43, 0xE5, 0x8D, 0x81, 0x43, 0xE5, + 0x8D, 0x84, 0x43, 0xE5, 0x8D, 0x85, 0x43, 0xE5, + 0x8D, 0x89, 0x43, 0xE5, 0x8D, 0x91, 0x43, 0xE5, + 0x8D, 0x94, 0x43, 0xE5, 0x8D, 0x9A, 0x43, 0xE5, + 0x8D, 0x9C, 0x43, 0xE5, 0x8D, 0xA9, 0x43, 0xE5, + 0x8D, 0xB0, 0x43, 0xE5, 0x8D, 0xB3, 0x43, 0xE5, + 0x8D, 0xB5, 0x43, 0xE5, 0x8D, 0xBD, 0x43, 0xE5, + // Bytes 8c0 - 8ff + 0x8D, 0xBF, 0x43, 0xE5, 0x8E, 0x82, 0x43, 0xE5, + 0x8E, 0xB6, 0x43, 0xE5, 0x8F, 0x83, 0x43, 0xE5, + 0x8F, 0x88, 0x43, 0xE5, 0x8F, 0x8A, 0x43, 0xE5, + 0x8F, 0x8C, 0x43, 0xE5, 0x8F, 0x9F, 0x43, 0xE5, + 0x8F, 0xA3, 0x43, 0xE5, 0x8F, 0xA5, 0x43, 0xE5, + 0x8F, 0xAB, 0x43, 0xE5, 0x8F, 0xAF, 0x43, 0xE5, + 0x8F, 0xB1, 0x43, 0xE5, 0x8F, 0xB3, 0x43, 0xE5, + 0x90, 0x86, 0x43, 0xE5, 0x90, 0x88, 0x43, 0xE5, + // Bytes 900 - 93f + 0x90, 0x8D, 0x43, 0xE5, 0x90, 0x8F, 0x43, 0xE5, + 0x90, 0x9D, 0x43, 0xE5, 0x90, 0xB8, 0x43, 0xE5, + 0x90, 0xB9, 0x43, 0xE5, 0x91, 0x82, 0x43, 0xE5, + 0x91, 0x88, 0x43, 0xE5, 0x91, 0xA8, 0x43, 0xE5, + 0x92, 0x9E, 0x43, 0xE5, 0x92, 0xA2, 0x43, 0xE5, + 0x92, 0xBD, 0x43, 0xE5, 0x93, 0xB6, 0x43, 0xE5, + 0x94, 0x90, 0x43, 0xE5, 0x95, 0x8F, 0x43, 0xE5, + 0x95, 0x93, 0x43, 0xE5, 0x95, 0x95, 0x43, 0xE5, + // Bytes 940 - 97f + 0x95, 0xA3, 0x43, 0xE5, 0x96, 0x84, 0x43, 0xE5, + 0x96, 0x87, 0x43, 0xE5, 0x96, 0x99, 0x43, 0xE5, + 0x96, 0x9D, 0x43, 0xE5, 0x96, 0xAB, 0x43, 0xE5, + 0x96, 0xB3, 0x43, 0xE5, 0x96, 0xB6, 0x43, 0xE5, + 0x97, 0x80, 0x43, 0xE5, 0x97, 0x82, 0x43, 0xE5, + 0x97, 0xA2, 0x43, 0xE5, 0x98, 0x86, 0x43, 0xE5, + 0x99, 0x91, 0x43, 0xE5, 0x99, 0xA8, 0x43, 0xE5, + 0x99, 0xB4, 0x43, 0xE5, 0x9B, 0x97, 0x43, 0xE5, + // Bytes 980 - 9bf + 0x9B, 0x9B, 0x43, 0xE5, 0x9B, 0xB9, 0x43, 0xE5, + 0x9C, 0x96, 0x43, 0xE5, 0x9C, 0x97, 0x43, 0xE5, + 0x9C, 0x9F, 0x43, 0xE5, 0x9C, 0xB0, 0x43, 0xE5, + 0x9E, 0x8B, 0x43, 0xE5, 0x9F, 0x8E, 0x43, 0xE5, + 0x9F, 0xB4, 0x43, 0xE5, 0xA0, 0x8D, 0x43, 0xE5, + 0xA0, 0xB1, 0x43, 0xE5, 0xA0, 0xB2, 0x43, 0xE5, + 0xA1, 0x80, 0x43, 0xE5, 0xA1, 0x9A, 0x43, 0xE5, + 0xA1, 0x9E, 0x43, 0xE5, 0xA2, 0xA8, 0x43, 0xE5, + // Bytes 9c0 - 9ff + 0xA2, 0xAC, 0x43, 0xE5, 0xA2, 0xB3, 0x43, 0xE5, + 0xA3, 0x98, 0x43, 0xE5, 0xA3, 0x9F, 0x43, 0xE5, + 0xA3, 0xAB, 0x43, 0xE5, 0xA3, 0xAE, 0x43, 0xE5, + 0xA3, 0xB0, 0x43, 0xE5, 0xA3, 0xB2, 0x43, 0xE5, + 0xA3, 0xB7, 0x43, 0xE5, 0xA4, 0x82, 0x43, 0xE5, + 0xA4, 0x86, 0x43, 0xE5, 0xA4, 0x8A, 0x43, 0xE5, + 0xA4, 0x95, 0x43, 0xE5, 0xA4, 0x9A, 0x43, 0xE5, + 0xA4, 0x9C, 0x43, 0xE5, 0xA4, 0xA2, 0x43, 0xE5, + // Bytes a00 - a3f + 0xA4, 0xA7, 0x43, 0xE5, 0xA4, 0xA9, 0x43, 0xE5, + 0xA5, 0x84, 0x43, 0xE5, 0xA5, 0x88, 0x43, 0xE5, + 0xA5, 0x91, 0x43, 0xE5, 0xA5, 0x94, 0x43, 0xE5, + 0xA5, 0xA2, 0x43, 0xE5, 0xA5, 0xB3, 0x43, 0xE5, + 0xA7, 0x98, 0x43, 0xE5, 0xA7, 0xAC, 0x43, 0xE5, + 0xA8, 0x9B, 0x43, 0xE5, 0xA8, 0xA7, 0x43, 0xE5, + 0xA9, 0xA2, 0x43, 0xE5, 0xA9, 0xA6, 0x43, 0xE5, + 0xAA, 0xB5, 0x43, 0xE5, 0xAC, 0x88, 0x43, 0xE5, + // Bytes a40 - a7f + 0xAC, 0xA8, 0x43, 0xE5, 0xAC, 0xBE, 0x43, 0xE5, + 0xAD, 0x90, 0x43, 0xE5, 0xAD, 0x97, 0x43, 0xE5, + 0xAD, 0xA6, 0x43, 0xE5, 0xAE, 0x80, 0x43, 0xE5, + 0xAE, 0x85, 0x43, 0xE5, 0xAE, 0x97, 0x43, 0xE5, + 0xAF, 0x83, 0x43, 0xE5, 0xAF, 0x98, 0x43, 0xE5, + 0xAF, 0xA7, 0x43, 0xE5, 0xAF, 0xAE, 0x43, 0xE5, + 0xAF, 0xB3, 0x43, 0xE5, 0xAF, 0xB8, 0x43, 0xE5, + 0xAF, 0xBF, 0x43, 0xE5, 0xB0, 0x86, 0x43, 0xE5, + // Bytes a80 - abf + 0xB0, 0x8F, 0x43, 0xE5, 0xB0, 0xA2, 0x43, 0xE5, + 0xB0, 0xB8, 0x43, 0xE5, 0xB0, 0xBF, 0x43, 0xE5, + 0xB1, 0xA0, 0x43, 0xE5, 0xB1, 0xA2, 0x43, 0xE5, + 0xB1, 0xA4, 0x43, 0xE5, 0xB1, 0xA5, 0x43, 0xE5, + 0xB1, 0xAE, 0x43, 0xE5, 0xB1, 0xB1, 0x43, 0xE5, + 0xB2, 0x8D, 0x43, 0xE5, 0xB3, 0x80, 0x43, 0xE5, + 0xB4, 0x99, 0x43, 0xE5, 0xB5, 0x83, 0x43, 0xE5, + 0xB5, 0x90, 0x43, 0xE5, 0xB5, 0xAB, 0x43, 0xE5, + // Bytes ac0 - aff + 0xB5, 0xAE, 0x43, 0xE5, 0xB5, 0xBC, 0x43, 0xE5, + 0xB6, 0xB2, 0x43, 0xE5, 0xB6, 0xBA, 0x43, 0xE5, + 0xB7, 0x9B, 0x43, 0xE5, 0xB7, 0xA1, 0x43, 0xE5, + 0xB7, 0xA2, 0x43, 0xE5, 0xB7, 0xA5, 0x43, 0xE5, + 0xB7, 0xA6, 0x43, 0xE5, 0xB7, 0xB1, 0x43, 0xE5, + 0xB7, 0xBD, 0x43, 0xE5, 0xB7, 0xBE, 0x43, 0xE5, + 0xB8, 0xA8, 0x43, 0xE5, 0xB8, 0xBD, 0x43, 0xE5, + 0xB9, 0xA9, 0x43, 0xE5, 0xB9, 0xB2, 0x43, 0xE5, + // Bytes b00 - b3f + 0xB9, 0xB4, 0x43, 0xE5, 0xB9, 0xBA, 0x43, 0xE5, + 0xB9, 0xBC, 0x43, 0xE5, 0xB9, 0xBF, 0x43, 0xE5, + 0xBA, 0xA6, 0x43, 0xE5, 0xBA, 0xB0, 0x43, 0xE5, + 0xBA, 0xB3, 0x43, 0xE5, 0xBA, 0xB6, 0x43, 0xE5, + 0xBB, 0x89, 0x43, 0xE5, 0xBB, 0x8A, 0x43, 0xE5, + 0xBB, 0x92, 0x43, 0xE5, 0xBB, 0x93, 0x43, 0xE5, + 0xBB, 0x99, 0x43, 0xE5, 0xBB, 0xAC, 0x43, 0xE5, + 0xBB, 0xB4, 0x43, 0xE5, 0xBB, 0xBE, 0x43, 0xE5, + // Bytes b40 - b7f + 0xBC, 0x84, 0x43, 0xE5, 0xBC, 0x8B, 0x43, 0xE5, + 0xBC, 0x93, 0x43, 0xE5, 0xBC, 0xA2, 0x43, 0xE5, + 0xBD, 0x90, 0x43, 0xE5, 0xBD, 0x93, 0x43, 0xE5, + 0xBD, 0xA1, 0x43, 0xE5, 0xBD, 0xA2, 0x43, 0xE5, + 0xBD, 0xA9, 0x43, 0xE5, 0xBD, 0xAB, 0x43, 0xE5, + 0xBD, 0xB3, 0x43, 0xE5, 0xBE, 0x8B, 0x43, 0xE5, + 0xBE, 0x8C, 0x43, 0xE5, 0xBE, 0x97, 0x43, 0xE5, + 0xBE, 0x9A, 0x43, 0xE5, 0xBE, 0xA9, 0x43, 0xE5, + // Bytes b80 - bbf + 0xBE, 0xAD, 0x43, 0xE5, 0xBF, 0x83, 0x43, 0xE5, + 0xBF, 0x8D, 0x43, 0xE5, 0xBF, 0x97, 0x43, 0xE5, + 0xBF, 0xB5, 0x43, 0xE5, 0xBF, 0xB9, 0x43, 0xE6, + 0x80, 0x92, 0x43, 0xE6, 0x80, 0x9C, 0x43, 0xE6, + 0x81, 0xB5, 0x43, 0xE6, 0x82, 0x81, 0x43, 0xE6, + 0x82, 0x94, 0x43, 0xE6, 0x83, 0x87, 0x43, 0xE6, + 0x83, 0x98, 0x43, 0xE6, 0x83, 0xA1, 0x43, 0xE6, + 0x84, 0x88, 0x43, 0xE6, 0x85, 0x84, 0x43, 0xE6, + // Bytes bc0 - bff + 0x85, 0x88, 0x43, 0xE6, 0x85, 0x8C, 0x43, 0xE6, + 0x85, 0x8E, 0x43, 0xE6, 0x85, 0xA0, 0x43, 0xE6, + 0x85, 0xA8, 0x43, 0xE6, 0x85, 0xBA, 0x43, 0xE6, + 0x86, 0x8E, 0x43, 0xE6, 0x86, 0x90, 0x43, 0xE6, + 0x86, 0xA4, 0x43, 0xE6, 0x86, 0xAF, 0x43, 0xE6, + 0x86, 0xB2, 0x43, 0xE6, 0x87, 0x9E, 0x43, 0xE6, + 0x87, 0xB2, 0x43, 0xE6, 0x87, 0xB6, 0x43, 0xE6, + 0x88, 0x80, 0x43, 0xE6, 0x88, 0x88, 0x43, 0xE6, + // Bytes c00 - c3f + 0x88, 0x90, 0x43, 0xE6, 0x88, 0x9B, 0x43, 0xE6, + 0x88, 0xAE, 0x43, 0xE6, 0x88, 0xB4, 0x43, 0xE6, + 0x88, 0xB6, 0x43, 0xE6, 0x89, 0x8B, 0x43, 0xE6, + 0x89, 0x93, 0x43, 0xE6, 0x89, 0x9D, 0x43, 0xE6, + 0x8A, 0x95, 0x43, 0xE6, 0x8A, 0xB1, 0x43, 0xE6, + 0x8B, 0x89, 0x43, 0xE6, 0x8B, 0x8F, 0x43, 0xE6, + 0x8B, 0x93, 0x43, 0xE6, 0x8B, 0x94, 0x43, 0xE6, + 0x8B, 0xBC, 0x43, 0xE6, 0x8B, 0xBE, 0x43, 0xE6, + // Bytes c40 - c7f + 0x8C, 0x87, 0x43, 0xE6, 0x8C, 0xBD, 0x43, 0xE6, + 0x8D, 0x90, 0x43, 0xE6, 0x8D, 0x95, 0x43, 0xE6, + 0x8D, 0xA8, 0x43, 0xE6, 0x8D, 0xBB, 0x43, 0xE6, + 0x8E, 0x83, 0x43, 0xE6, 0x8E, 0xA0, 0x43, 0xE6, + 0x8E, 0xA9, 0x43, 0xE6, 0x8F, 0x84, 0x43, 0xE6, + 0x8F, 0x85, 0x43, 0xE6, 0x8F, 0xA4, 0x43, 0xE6, + 0x90, 0x9C, 0x43, 0xE6, 0x90, 0xA2, 0x43, 0xE6, + 0x91, 0x92, 0x43, 0xE6, 0x91, 0xA9, 0x43, 0xE6, + // Bytes c80 - cbf + 0x91, 0xB7, 0x43, 0xE6, 0x91, 0xBE, 0x43, 0xE6, + 0x92, 0x9A, 0x43, 0xE6, 0x92, 0x9D, 0x43, 0xE6, + 0x93, 0x84, 0x43, 0xE6, 0x94, 0xAF, 0x43, 0xE6, + 0x94, 0xB4, 0x43, 0xE6, 0x95, 0x8F, 0x43, 0xE6, + 0x95, 0x96, 0x43, 0xE6, 0x95, 0xAC, 0x43, 0xE6, + 0x95, 0xB8, 0x43, 0xE6, 0x96, 0x87, 0x43, 0xE6, + 0x96, 0x97, 0x43, 0xE6, 0x96, 0x99, 0x43, 0xE6, + 0x96, 0xA4, 0x43, 0xE6, 0x96, 0xB0, 0x43, 0xE6, + // Bytes cc0 - cff + 0x96, 0xB9, 0x43, 0xE6, 0x97, 0x85, 0x43, 0xE6, + 0x97, 0xA0, 0x43, 0xE6, 0x97, 0xA2, 0x43, 0xE6, + 0x97, 0xA3, 0x43, 0xE6, 0x97, 0xA5, 0x43, 0xE6, + 0x98, 0x93, 0x43, 0xE6, 0x98, 0xA0, 0x43, 0xE6, + 0x99, 0x89, 0x43, 0xE6, 0x99, 0xB4, 0x43, 0xE6, + 0x9A, 0x88, 0x43, 0xE6, 0x9A, 0x91, 0x43, 0xE6, + 0x9A, 0x9C, 0x43, 0xE6, 0x9A, 0xB4, 0x43, 0xE6, + 0x9B, 0x86, 0x43, 0xE6, 0x9B, 0xB0, 0x43, 0xE6, + // Bytes d00 - d3f + 0x9B, 0xB4, 0x43, 0xE6, 0x9B, 0xB8, 0x43, 0xE6, + 0x9C, 0x80, 0x43, 0xE6, 0x9C, 0x88, 0x43, 0xE6, + 0x9C, 0x89, 0x43, 0xE6, 0x9C, 0x97, 0x43, 0xE6, + 0x9C, 0x9B, 0x43, 0xE6, 0x9C, 0xA1, 0x43, 0xE6, + 0x9C, 0xA8, 0x43, 0xE6, 0x9D, 0x8E, 0x43, 0xE6, + 0x9D, 0x93, 0x43, 0xE6, 0x9D, 0x96, 0x43, 0xE6, + 0x9D, 0x9E, 0x43, 0xE6, 0x9D, 0xBB, 0x43, 0xE6, + 0x9E, 0x85, 0x43, 0xE6, 0x9E, 0x97, 0x43, 0xE6, + // Bytes d40 - d7f + 0x9F, 0xB3, 0x43, 0xE6, 0x9F, 0xBA, 0x43, 0xE6, + 0xA0, 0x97, 0x43, 0xE6, 0xA0, 0x9F, 0x43, 0xE6, + 0xA0, 0xAA, 0x43, 0xE6, 0xA1, 0x92, 0x43, 0xE6, + 0xA2, 0x81, 0x43, 0xE6, 0xA2, 0x85, 0x43, 0xE6, + 0xA2, 0x8E, 0x43, 0xE6, 0xA2, 0xA8, 0x43, 0xE6, + 0xA4, 0x94, 0x43, 0xE6, 0xA5, 0x82, 0x43, 0xE6, + 0xA6, 0xA3, 0x43, 0xE6, 0xA7, 0xAA, 0x43, 0xE6, + 0xA8, 0x82, 0x43, 0xE6, 0xA8, 0x93, 0x43, 0xE6, + // Bytes d80 - dbf + 0xAA, 0xA8, 0x43, 0xE6, 0xAB, 0x93, 0x43, 0xE6, + 0xAB, 0x9B, 0x43, 0xE6, 0xAC, 0x84, 0x43, 0xE6, + 0xAC, 0xA0, 0x43, 0xE6, 0xAC, 0xA1, 0x43, 0xE6, + 0xAD, 0x94, 0x43, 0xE6, 0xAD, 0xA2, 0x43, 0xE6, + 0xAD, 0xA3, 0x43, 0xE6, 0xAD, 0xB2, 0x43, 0xE6, + 0xAD, 0xB7, 0x43, 0xE6, 0xAD, 0xB9, 0x43, 0xE6, + 0xAE, 0x9F, 0x43, 0xE6, 0xAE, 0xAE, 0x43, 0xE6, + 0xAE, 0xB3, 0x43, 0xE6, 0xAE, 0xBA, 0x43, 0xE6, + // Bytes dc0 - dff + 0xAE, 0xBB, 0x43, 0xE6, 0xAF, 0x8B, 0x43, 0xE6, + 0xAF, 0x8D, 0x43, 0xE6, 0xAF, 0x94, 0x43, 0xE6, + 0xAF, 0x9B, 0x43, 0xE6, 0xB0, 0x8F, 0x43, 0xE6, + 0xB0, 0x94, 0x43, 0xE6, 0xB0, 0xB4, 0x43, 0xE6, + 0xB1, 0x8E, 0x43, 0xE6, 0xB1, 0xA7, 0x43, 0xE6, + 0xB2, 0x88, 0x43, 0xE6, 0xB2, 0xBF, 0x43, 0xE6, + 0xB3, 0x8C, 0x43, 0xE6, 0xB3, 0x8D, 0x43, 0xE6, + 0xB3, 0xA5, 0x43, 0xE6, 0xB3, 0xA8, 0x43, 0xE6, + // Bytes e00 - e3f + 0xB4, 0x96, 0x43, 0xE6, 0xB4, 0x9B, 0x43, 0xE6, + 0xB4, 0x9E, 0x43, 0xE6, 0xB4, 0xB4, 0x43, 0xE6, + 0xB4, 0xBE, 0x43, 0xE6, 0xB5, 0x81, 0x43, 0xE6, + 0xB5, 0xA9, 0x43, 0xE6, 0xB5, 0xAA, 0x43, 0xE6, + 0xB5, 0xB7, 0x43, 0xE6, 0xB5, 0xB8, 0x43, 0xE6, + 0xB6, 0x85, 0x43, 0xE6, 0xB7, 0x8B, 0x43, 0xE6, + 0xB7, 0x9A, 0x43, 0xE6, 0xB7, 0xAA, 0x43, 0xE6, + 0xB7, 0xB9, 0x43, 0xE6, 0xB8, 0x9A, 0x43, 0xE6, + // Bytes e40 - e7f + 0xB8, 0xAF, 0x43, 0xE6, 0xB9, 0xAE, 0x43, 0xE6, + 0xBA, 0x80, 0x43, 0xE6, 0xBA, 0x9C, 0x43, 0xE6, + 0xBA, 0xBA, 0x43, 0xE6, 0xBB, 0x87, 0x43, 0xE6, + 0xBB, 0x8B, 0x43, 0xE6, 0xBB, 0x91, 0x43, 0xE6, + 0xBB, 0x9B, 0x43, 0xE6, 0xBC, 0x8F, 0x43, 0xE6, + 0xBC, 0x94, 0x43, 0xE6, 0xBC, 0xA2, 0x43, 0xE6, + 0xBC, 0xA3, 0x43, 0xE6, 0xBD, 0xAE, 0x43, 0xE6, + 0xBF, 0x86, 0x43, 0xE6, 0xBF, 0xAB, 0x43, 0xE6, + // Bytes e80 - ebf + 0xBF, 0xBE, 0x43, 0xE7, 0x80, 0x9B, 0x43, 0xE7, + 0x80, 0x9E, 0x43, 0xE7, 0x80, 0xB9, 0x43, 0xE7, + 0x81, 0x8A, 0x43, 0xE7, 0x81, 0xAB, 0x43, 0xE7, + 0x81, 0xB0, 0x43, 0xE7, 0x81, 0xB7, 0x43, 0xE7, + 0x81, 0xBD, 0x43, 0xE7, 0x82, 0x99, 0x43, 0xE7, + 0x82, 0xAD, 0x43, 0xE7, 0x83, 0x88, 0x43, 0xE7, + 0x83, 0x99, 0x43, 0xE7, 0x84, 0xA1, 0x43, 0xE7, + 0x85, 0x85, 0x43, 0xE7, 0x85, 0x89, 0x43, 0xE7, + // Bytes ec0 - eff + 0x85, 0xAE, 0x43, 0xE7, 0x86, 0x9C, 0x43, 0xE7, + 0x87, 0x8E, 0x43, 0xE7, 0x87, 0x90, 0x43, 0xE7, + 0x88, 0x90, 0x43, 0xE7, 0x88, 0x9B, 0x43, 0xE7, + 0x88, 0xA8, 0x43, 0xE7, 0x88, 0xAA, 0x43, 0xE7, + 0x88, 0xAB, 0x43, 0xE7, 0x88, 0xB5, 0x43, 0xE7, + 0x88, 0xB6, 0x43, 0xE7, 0x88, 0xBB, 0x43, 0xE7, + 0x88, 0xBF, 0x43, 0xE7, 0x89, 0x87, 0x43, 0xE7, + 0x89, 0x90, 0x43, 0xE7, 0x89, 0x99, 0x43, 0xE7, + // Bytes f00 - f3f + 0x89, 0x9B, 0x43, 0xE7, 0x89, 0xA2, 0x43, 0xE7, + 0x89, 0xB9, 0x43, 0xE7, 0x8A, 0x80, 0x43, 0xE7, + 0x8A, 0x95, 0x43, 0xE7, 0x8A, 0xAC, 0x43, 0xE7, + 0x8A, 0xAF, 0x43, 0xE7, 0x8B, 0x80, 0x43, 0xE7, + 0x8B, 0xBC, 0x43, 0xE7, 0x8C, 0xAA, 0x43, 0xE7, + 0x8D, 0xB5, 0x43, 0xE7, 0x8D, 0xBA, 0x43, 0xE7, + 0x8E, 0x84, 0x43, 0xE7, 0x8E, 0x87, 0x43, 0xE7, + 0x8E, 0x89, 0x43, 0xE7, 0x8E, 0x8B, 0x43, 0xE7, + // Bytes f40 - f7f + 0x8E, 0xA5, 0x43, 0xE7, 0x8E, 0xB2, 0x43, 0xE7, + 0x8F, 0x9E, 0x43, 0xE7, 0x90, 0x86, 0x43, 0xE7, + 0x90, 0x89, 0x43, 0xE7, 0x90, 0xA2, 0x43, 0xE7, + 0x91, 0x87, 0x43, 0xE7, 0x91, 0x9C, 0x43, 0xE7, + 0x91, 0xA9, 0x43, 0xE7, 0x91, 0xB1, 0x43, 0xE7, + 0x92, 0x85, 0x43, 0xE7, 0x92, 0x89, 0x43, 0xE7, + 0x92, 0x98, 0x43, 0xE7, 0x93, 0x8A, 0x43, 0xE7, + 0x93, 0x9C, 0x43, 0xE7, 0x93, 0xA6, 0x43, 0xE7, + // Bytes f80 - fbf + 0x94, 0x86, 0x43, 0xE7, 0x94, 0x98, 0x43, 0xE7, + 0x94, 0x9F, 0x43, 0xE7, 0x94, 0xA4, 0x43, 0xE7, + 0x94, 0xA8, 0x43, 0xE7, 0x94, 0xB0, 0x43, 0xE7, + 0x94, 0xB2, 0x43, 0xE7, 0x94, 0xB3, 0x43, 0xE7, + 0x94, 0xB7, 0x43, 0xE7, 0x94, 0xBB, 0x43, 0xE7, + 0x94, 0xBE, 0x43, 0xE7, 0x95, 0x99, 0x43, 0xE7, + 0x95, 0xA5, 0x43, 0xE7, 0x95, 0xB0, 0x43, 0xE7, + 0x96, 0x8B, 0x43, 0xE7, 0x96, 0x92, 0x43, 0xE7, + // Bytes fc0 - fff + 0x97, 0xA2, 0x43, 0xE7, 0x98, 0x90, 0x43, 0xE7, + 0x98, 0x9D, 0x43, 0xE7, 0x98, 0x9F, 0x43, 0xE7, + 0x99, 0x82, 0x43, 0xE7, 0x99, 0xA9, 0x43, 0xE7, + 0x99, 0xB6, 0x43, 0xE7, 0x99, 0xBD, 0x43, 0xE7, + 0x9A, 0xAE, 0x43, 0xE7, 0x9A, 0xBF, 0x43, 0xE7, + 0x9B, 0x8A, 0x43, 0xE7, 0x9B, 0x9B, 0x43, 0xE7, + 0x9B, 0xA3, 0x43, 0xE7, 0x9B, 0xA7, 0x43, 0xE7, + 0x9B, 0xAE, 0x43, 0xE7, 0x9B, 0xB4, 0x43, 0xE7, + // Bytes 1000 - 103f + 0x9C, 0x81, 0x43, 0xE7, 0x9C, 0x9E, 0x43, 0xE7, + 0x9C, 0x9F, 0x43, 0xE7, 0x9D, 0x80, 0x43, 0xE7, + 0x9D, 0x8A, 0x43, 0xE7, 0x9E, 0x8B, 0x43, 0xE7, + 0x9E, 0xA7, 0x43, 0xE7, 0x9F, 0x9B, 0x43, 0xE7, + 0x9F, 0xA2, 0x43, 0xE7, 0x9F, 0xB3, 0x43, 0xE7, + 0xA1, 0x8E, 0x43, 0xE7, 0xA1, 0xAB, 0x43, 0xE7, + 0xA2, 0x8C, 0x43, 0xE7, 0xA2, 0x91, 0x43, 0xE7, + 0xA3, 0x8A, 0x43, 0xE7, 0xA3, 0x8C, 0x43, 0xE7, + // Bytes 1040 - 107f + 0xA3, 0xBB, 0x43, 0xE7, 0xA4, 0xAA, 0x43, 0xE7, + 0xA4, 0xBA, 0x43, 0xE7, 0xA4, 0xBC, 0x43, 0xE7, + 0xA4, 0xBE, 0x43, 0xE7, 0xA5, 0x88, 0x43, 0xE7, + 0xA5, 0x89, 0x43, 0xE7, 0xA5, 0x90, 0x43, 0xE7, + 0xA5, 0x96, 0x43, 0xE7, 0xA5, 0x9D, 0x43, 0xE7, + 0xA5, 0x9E, 0x43, 0xE7, 0xA5, 0xA5, 0x43, 0xE7, + 0xA5, 0xBF, 0x43, 0xE7, 0xA6, 0x81, 0x43, 0xE7, + 0xA6, 0x8D, 0x43, 0xE7, 0xA6, 0x8E, 0x43, 0xE7, + // Bytes 1080 - 10bf + 0xA6, 0x8F, 0x43, 0xE7, 0xA6, 0xAE, 0x43, 0xE7, + 0xA6, 0xB8, 0x43, 0xE7, 0xA6, 0xBE, 0x43, 0xE7, + 0xA7, 0x8A, 0x43, 0xE7, 0xA7, 0x98, 0x43, 0xE7, + 0xA7, 0xAB, 0x43, 0xE7, 0xA8, 0x9C, 0x43, 0xE7, + 0xA9, 0x80, 0x43, 0xE7, 0xA9, 0x8A, 0x43, 0xE7, + 0xA9, 0x8F, 0x43, 0xE7, 0xA9, 0xB4, 0x43, 0xE7, + 0xA9, 0xBA, 0x43, 0xE7, 0xAA, 0x81, 0x43, 0xE7, + 0xAA, 0xB1, 0x43, 0xE7, 0xAB, 0x8B, 0x43, 0xE7, + // Bytes 10c0 - 10ff + 0xAB, 0xAE, 0x43, 0xE7, 0xAB, 0xB9, 0x43, 0xE7, + 0xAC, 0xA0, 0x43, 0xE7, 0xAE, 0x8F, 0x43, 0xE7, + 0xAF, 0x80, 0x43, 0xE7, 0xAF, 0x86, 0x43, 0xE7, + 0xAF, 0x89, 0x43, 0xE7, 0xB0, 0xBE, 0x43, 0xE7, + 0xB1, 0xA0, 0x43, 0xE7, 0xB1, 0xB3, 0x43, 0xE7, + 0xB1, 0xBB, 0x43, 0xE7, 0xB2, 0x92, 0x43, 0xE7, + 0xB2, 0xBE, 0x43, 0xE7, 0xB3, 0x92, 0x43, 0xE7, + 0xB3, 0x96, 0x43, 0xE7, 0xB3, 0xA3, 0x43, 0xE7, + // Bytes 1100 - 113f + 0xB3, 0xA7, 0x43, 0xE7, 0xB3, 0xA8, 0x43, 0xE7, + 0xB3, 0xB8, 0x43, 0xE7, 0xB4, 0x80, 0x43, 0xE7, + 0xB4, 0x90, 0x43, 0xE7, 0xB4, 0xA2, 0x43, 0xE7, + 0xB4, 0xAF, 0x43, 0xE7, 0xB5, 0x82, 0x43, 0xE7, + 0xB5, 0x9B, 0x43, 0xE7, 0xB5, 0xA3, 0x43, 0xE7, + 0xB6, 0xA0, 0x43, 0xE7, 0xB6, 0xBE, 0x43, 0xE7, + 0xB7, 0x87, 0x43, 0xE7, 0xB7, 0xB4, 0x43, 0xE7, + 0xB8, 0x82, 0x43, 0xE7, 0xB8, 0x89, 0x43, 0xE7, + // Bytes 1140 - 117f + 0xB8, 0xB7, 0x43, 0xE7, 0xB9, 0x81, 0x43, 0xE7, + 0xB9, 0x85, 0x43, 0xE7, 0xBC, 0xB6, 0x43, 0xE7, + 0xBC, 0xBE, 0x43, 0xE7, 0xBD, 0x91, 0x43, 0xE7, + 0xBD, 0xB2, 0x43, 0xE7, 0xBD, 0xB9, 0x43, 0xE7, + 0xBD, 0xBA, 0x43, 0xE7, 0xBE, 0x85, 0x43, 0xE7, + 0xBE, 0x8A, 0x43, 0xE7, 0xBE, 0x95, 0x43, 0xE7, + 0xBE, 0x9A, 0x43, 0xE7, 0xBE, 0xBD, 0x43, 0xE7, + 0xBF, 0xBA, 0x43, 0xE8, 0x80, 0x81, 0x43, 0xE8, + // Bytes 1180 - 11bf + 0x80, 0x85, 0x43, 0xE8, 0x80, 0x8C, 0x43, 0xE8, + 0x80, 0x92, 0x43, 0xE8, 0x80, 0xB3, 0x43, 0xE8, + 0x81, 0x86, 0x43, 0xE8, 0x81, 0xA0, 0x43, 0xE8, + 0x81, 0xAF, 0x43, 0xE8, 0x81, 0xB0, 0x43, 0xE8, + 0x81, 0xBE, 0x43, 0xE8, 0x81, 0xBF, 0x43, 0xE8, + 0x82, 0x89, 0x43, 0xE8, 0x82, 0x8B, 0x43, 0xE8, + 0x82, 0xAD, 0x43, 0xE8, 0x82, 0xB2, 0x43, 0xE8, + 0x84, 0x83, 0x43, 0xE8, 0x84, 0xBE, 0x43, 0xE8, + // Bytes 11c0 - 11ff + 0x87, 0x98, 0x43, 0xE8, 0x87, 0xA3, 0x43, 0xE8, + 0x87, 0xA8, 0x43, 0xE8, 0x87, 0xAA, 0x43, 0xE8, + 0x87, 0xAD, 0x43, 0xE8, 0x87, 0xB3, 0x43, 0xE8, + 0x87, 0xBC, 0x43, 0xE8, 0x88, 0x81, 0x43, 0xE8, + 0x88, 0x84, 0x43, 0xE8, 0x88, 0x8C, 0x43, 0xE8, + 0x88, 0x98, 0x43, 0xE8, 0x88, 0x9B, 0x43, 0xE8, + 0x88, 0x9F, 0x43, 0xE8, 0x89, 0xAE, 0x43, 0xE8, + 0x89, 0xAF, 0x43, 0xE8, 0x89, 0xB2, 0x43, 0xE8, + // Bytes 1200 - 123f + 0x89, 0xB8, 0x43, 0xE8, 0x89, 0xB9, 0x43, 0xE8, + 0x8A, 0x8B, 0x43, 0xE8, 0x8A, 0x91, 0x43, 0xE8, + 0x8A, 0x9D, 0x43, 0xE8, 0x8A, 0xB1, 0x43, 0xE8, + 0x8A, 0xB3, 0x43, 0xE8, 0x8A, 0xBD, 0x43, 0xE8, + 0x8B, 0xA5, 0x43, 0xE8, 0x8B, 0xA6, 0x43, 0xE8, + 0x8C, 0x9D, 0x43, 0xE8, 0x8C, 0xA3, 0x43, 0xE8, + 0x8C, 0xB6, 0x43, 0xE8, 0x8D, 0x92, 0x43, 0xE8, + 0x8D, 0x93, 0x43, 0xE8, 0x8D, 0xA3, 0x43, 0xE8, + // Bytes 1240 - 127f + 0x8E, 0xAD, 0x43, 0xE8, 0x8E, 0xBD, 0x43, 0xE8, + 0x8F, 0x89, 0x43, 0xE8, 0x8F, 0x8A, 0x43, 0xE8, + 0x8F, 0x8C, 0x43, 0xE8, 0x8F, 0x9C, 0x43, 0xE8, + 0x8F, 0xA7, 0x43, 0xE8, 0x8F, 0xAF, 0x43, 0xE8, + 0x8F, 0xB1, 0x43, 0xE8, 0x90, 0xBD, 0x43, 0xE8, + 0x91, 0x89, 0x43, 0xE8, 0x91, 0x97, 0x43, 0xE8, + 0x93, 0xAE, 0x43, 0xE8, 0x93, 0xB1, 0x43, 0xE8, + 0x93, 0xB3, 0x43, 0xE8, 0x93, 0xBC, 0x43, 0xE8, + // Bytes 1280 - 12bf + 0x94, 0x96, 0x43, 0xE8, 0x95, 0xA4, 0x43, 0xE8, + 0x97, 0x8D, 0x43, 0xE8, 0x97, 0xBA, 0x43, 0xE8, + 0x98, 0x86, 0x43, 0xE8, 0x98, 0x92, 0x43, 0xE8, + 0x98, 0xAD, 0x43, 0xE8, 0x98, 0xBF, 0x43, 0xE8, + 0x99, 0x8D, 0x43, 0xE8, 0x99, 0x90, 0x43, 0xE8, + 0x99, 0x9C, 0x43, 0xE8, 0x99, 0xA7, 0x43, 0xE8, + 0x99, 0xA9, 0x43, 0xE8, 0x99, 0xAB, 0x43, 0xE8, + 0x9A, 0x88, 0x43, 0xE8, 0x9A, 0xA9, 0x43, 0xE8, + // Bytes 12c0 - 12ff + 0x9B, 0xA2, 0x43, 0xE8, 0x9C, 0x8E, 0x43, 0xE8, + 0x9C, 0xA8, 0x43, 0xE8, 0x9D, 0xAB, 0x43, 0xE8, + 0x9D, 0xB9, 0x43, 0xE8, 0x9E, 0x86, 0x43, 0xE8, + 0x9E, 0xBA, 0x43, 0xE8, 0x9F, 0xA1, 0x43, 0xE8, + 0xA0, 0x81, 0x43, 0xE8, 0xA0, 0x9F, 0x43, 0xE8, + 0xA1, 0x80, 0x43, 0xE8, 0xA1, 0x8C, 0x43, 0xE8, + 0xA1, 0xA0, 0x43, 0xE8, 0xA1, 0xA3, 0x43, 0xE8, + 0xA3, 0x82, 0x43, 0xE8, 0xA3, 0x8F, 0x43, 0xE8, + // Bytes 1300 - 133f + 0xA3, 0x97, 0x43, 0xE8, 0xA3, 0x9E, 0x43, 0xE8, + 0xA3, 0xA1, 0x43, 0xE8, 0xA3, 0xB8, 0x43, 0xE8, + 0xA3, 0xBA, 0x43, 0xE8, 0xA4, 0x90, 0x43, 0xE8, + 0xA5, 0x81, 0x43, 0xE8, 0xA5, 0xA4, 0x43, 0xE8, + 0xA5, 0xBE, 0x43, 0xE8, 0xA6, 0x86, 0x43, 0xE8, + 0xA6, 0x8B, 0x43, 0xE8, 0xA6, 0x96, 0x43, 0xE8, + 0xA7, 0x92, 0x43, 0xE8, 0xA7, 0xA3, 0x43, 0xE8, + 0xA8, 0x80, 0x43, 0xE8, 0xAA, 0xA0, 0x43, 0xE8, + // Bytes 1340 - 137f + 0xAA, 0xAA, 0x43, 0xE8, 0xAA, 0xBF, 0x43, 0xE8, + 0xAB, 0x8B, 0x43, 0xE8, 0xAB, 0x92, 0x43, 0xE8, + 0xAB, 0x96, 0x43, 0xE8, 0xAB, 0xAD, 0x43, 0xE8, + 0xAB, 0xB8, 0x43, 0xE8, 0xAB, 0xBE, 0x43, 0xE8, + 0xAC, 0x81, 0x43, 0xE8, 0xAC, 0xB9, 0x43, 0xE8, + 0xAD, 0x98, 0x43, 0xE8, 0xAE, 0x80, 0x43, 0xE8, + 0xAE, 0x8A, 0x43, 0xE8, 0xB0, 0xB7, 0x43, 0xE8, + 0xB1, 0x86, 0x43, 0xE8, 0xB1, 0x88, 0x43, 0xE8, + // Bytes 1380 - 13bf + 0xB1, 0x95, 0x43, 0xE8, 0xB1, 0xB8, 0x43, 0xE8, + 0xB2, 0x9D, 0x43, 0xE8, 0xB2, 0xA1, 0x43, 0xE8, + 0xB2, 0xA9, 0x43, 0xE8, 0xB2, 0xAB, 0x43, 0xE8, + 0xB3, 0x81, 0x43, 0xE8, 0xB3, 0x82, 0x43, 0xE8, + 0xB3, 0x87, 0x43, 0xE8, 0xB3, 0x88, 0x43, 0xE8, + 0xB3, 0x93, 0x43, 0xE8, 0xB4, 0x88, 0x43, 0xE8, + 0xB4, 0x9B, 0x43, 0xE8, 0xB5, 0xA4, 0x43, 0xE8, + 0xB5, 0xB0, 0x43, 0xE8, 0xB5, 0xB7, 0x43, 0xE8, + // Bytes 13c0 - 13ff + 0xB6, 0xB3, 0x43, 0xE8, 0xB6, 0xBC, 0x43, 0xE8, + 0xB7, 0x8B, 0x43, 0xE8, 0xB7, 0xAF, 0x43, 0xE8, + 0xB7, 0xB0, 0x43, 0xE8, 0xBA, 0xAB, 0x43, 0xE8, + 0xBB, 0x8A, 0x43, 0xE8, 0xBB, 0x94, 0x43, 0xE8, + 0xBC, 0xA6, 0x43, 0xE8, 0xBC, 0xAA, 0x43, 0xE8, + 0xBC, 0xB8, 0x43, 0xE8, 0xBC, 0xBB, 0x43, 0xE8, + 0xBD, 0xA2, 0x43, 0xE8, 0xBE, 0x9B, 0x43, 0xE8, + 0xBE, 0x9E, 0x43, 0xE8, 0xBE, 0xB0, 0x43, 0xE8, + // Bytes 1400 - 143f + 0xBE, 0xB5, 0x43, 0xE8, 0xBE, 0xB6, 0x43, 0xE9, + 0x80, 0xA3, 0x43, 0xE9, 0x80, 0xB8, 0x43, 0xE9, + 0x81, 0x8A, 0x43, 0xE9, 0x81, 0xA9, 0x43, 0xE9, + 0x81, 0xB2, 0x43, 0xE9, 0x81, 0xBC, 0x43, 0xE9, + 0x82, 0x8F, 0x43, 0xE9, 0x82, 0x91, 0x43, 0xE9, + 0x82, 0x94, 0x43, 0xE9, 0x83, 0x8E, 0x43, 0xE9, + 0x83, 0x9E, 0x43, 0xE9, 0x83, 0xB1, 0x43, 0xE9, + 0x83, 0xBD, 0x43, 0xE9, 0x84, 0x91, 0x43, 0xE9, + // Bytes 1440 - 147f + 0x84, 0x9B, 0x43, 0xE9, 0x85, 0x89, 0x43, 0xE9, + 0x85, 0x8D, 0x43, 0xE9, 0x85, 0xAA, 0x43, 0xE9, + 0x86, 0x99, 0x43, 0xE9, 0x86, 0xB4, 0x43, 0xE9, + 0x87, 0x86, 0x43, 0xE9, 0x87, 0x8C, 0x43, 0xE9, + 0x87, 0x8F, 0x43, 0xE9, 0x87, 0x91, 0x43, 0xE9, + 0x88, 0xB4, 0x43, 0xE9, 0x88, 0xB8, 0x43, 0xE9, + 0x89, 0xB6, 0x43, 0xE9, 0x89, 0xBC, 0x43, 0xE9, + 0x8B, 0x97, 0x43, 0xE9, 0x8B, 0x98, 0x43, 0xE9, + // Bytes 1480 - 14bf + 0x8C, 0x84, 0x43, 0xE9, 0x8D, 0x8A, 0x43, 0xE9, + 0x8F, 0xB9, 0x43, 0xE9, 0x90, 0x95, 0x43, 0xE9, + 0x95, 0xB7, 0x43, 0xE9, 0x96, 0x80, 0x43, 0xE9, + 0x96, 0x8B, 0x43, 0xE9, 0x96, 0xAD, 0x43, 0xE9, + 0x96, 0xB7, 0x43, 0xE9, 0x98, 0x9C, 0x43, 0xE9, + 0x98, 0xAE, 0x43, 0xE9, 0x99, 0x8B, 0x43, 0xE9, + 0x99, 0x8D, 0x43, 0xE9, 0x99, 0xB5, 0x43, 0xE9, + 0x99, 0xB8, 0x43, 0xE9, 0x99, 0xBC, 0x43, 0xE9, + // Bytes 14c0 - 14ff + 0x9A, 0x86, 0x43, 0xE9, 0x9A, 0xA3, 0x43, 0xE9, + 0x9A, 0xB6, 0x43, 0xE9, 0x9A, 0xB7, 0x43, 0xE9, + 0x9A, 0xB8, 0x43, 0xE9, 0x9A, 0xB9, 0x43, 0xE9, + 0x9B, 0x83, 0x43, 0xE9, 0x9B, 0xA2, 0x43, 0xE9, + 0x9B, 0xA3, 0x43, 0xE9, 0x9B, 0xA8, 0x43, 0xE9, + 0x9B, 0xB6, 0x43, 0xE9, 0x9B, 0xB7, 0x43, 0xE9, + 0x9C, 0xA3, 0x43, 0xE9, 0x9C, 0xB2, 0x43, 0xE9, + 0x9D, 0x88, 0x43, 0xE9, 0x9D, 0x91, 0x43, 0xE9, + // Bytes 1500 - 153f + 0x9D, 0x96, 0x43, 0xE9, 0x9D, 0x9E, 0x43, 0xE9, + 0x9D, 0xA2, 0x43, 0xE9, 0x9D, 0xA9, 0x43, 0xE9, + 0x9F, 0x8B, 0x43, 0xE9, 0x9F, 0x9B, 0x43, 0xE9, + 0x9F, 0xA0, 0x43, 0xE9, 0x9F, 0xAD, 0x43, 0xE9, + 0x9F, 0xB3, 0x43, 0xE9, 0x9F, 0xBF, 0x43, 0xE9, + 0xA0, 0x81, 0x43, 0xE9, 0xA0, 0x85, 0x43, 0xE9, + 0xA0, 0x8B, 0x43, 0xE9, 0xA0, 0x98, 0x43, 0xE9, + 0xA0, 0xA9, 0x43, 0xE9, 0xA0, 0xBB, 0x43, 0xE9, + // Bytes 1540 - 157f + 0xA1, 0x9E, 0x43, 0xE9, 0xA2, 0xA8, 0x43, 0xE9, + 0xA3, 0x9B, 0x43, 0xE9, 0xA3, 0x9F, 0x43, 0xE9, + 0xA3, 0xA2, 0x43, 0xE9, 0xA3, 0xAF, 0x43, 0xE9, + 0xA3, 0xBC, 0x43, 0xE9, 0xA4, 0xA8, 0x43, 0xE9, + 0xA4, 0xA9, 0x43, 0xE9, 0xA6, 0x96, 0x43, 0xE9, + 0xA6, 0x99, 0x43, 0xE9, 0xA6, 0xA7, 0x43, 0xE9, + 0xA6, 0xAC, 0x43, 0xE9, 0xA7, 0x82, 0x43, 0xE9, + 0xA7, 0xB1, 0x43, 0xE9, 0xA7, 0xBE, 0x43, 0xE9, + // Bytes 1580 - 15bf + 0xA9, 0xAA, 0x43, 0xE9, 0xAA, 0xA8, 0x43, 0xE9, + 0xAB, 0x98, 0x43, 0xE9, 0xAB, 0x9F, 0x43, 0xE9, + 0xAC, 0x92, 0x43, 0xE9, 0xAC, 0xA5, 0x43, 0xE9, + 0xAC, 0xAF, 0x43, 0xE9, 0xAC, 0xB2, 0x43, 0xE9, + 0xAC, 0xBC, 0x43, 0xE9, 0xAD, 0x9A, 0x43, 0xE9, + 0xAD, 0xAF, 0x43, 0xE9, 0xB1, 0x80, 0x43, 0xE9, + 0xB1, 0x97, 0x43, 0xE9, 0xB3, 0xA5, 0x43, 0xE9, + 0xB3, 0xBD, 0x43, 0xE9, 0xB5, 0xA7, 0x43, 0xE9, + // Bytes 15c0 - 15ff + 0xB6, 0xB4, 0x43, 0xE9, 0xB7, 0xBA, 0x43, 0xE9, + 0xB8, 0x9E, 0x43, 0xE9, 0xB9, 0xB5, 0x43, 0xE9, + 0xB9, 0xBF, 0x43, 0xE9, 0xBA, 0x97, 0x43, 0xE9, + 0xBA, 0x9F, 0x43, 0xE9, 0xBA, 0xA5, 0x43, 0xE9, + 0xBA, 0xBB, 0x43, 0xE9, 0xBB, 0x83, 0x43, 0xE9, + 0xBB, 0x8D, 0x43, 0xE9, 0xBB, 0x8E, 0x43, 0xE9, + 0xBB, 0x91, 0x43, 0xE9, 0xBB, 0xB9, 0x43, 0xE9, + 0xBB, 0xBD, 0x43, 0xE9, 0xBB, 0xBE, 0x43, 0xE9, + // Bytes 1600 - 163f + 0xBC, 0x85, 0x43, 0xE9, 0xBC, 0x8E, 0x43, 0xE9, + 0xBC, 0x8F, 0x43, 0xE9, 0xBC, 0x93, 0x43, 0xE9, + 0xBC, 0x96, 0x43, 0xE9, 0xBC, 0xA0, 0x43, 0xE9, + 0xBC, 0xBB, 0x43, 0xE9, 0xBD, 0x83, 0x43, 0xE9, + 0xBD, 0x8A, 0x43, 0xE9, 0xBD, 0x92, 0x43, 0xE9, + 0xBE, 0x8D, 0x43, 0xE9, 0xBE, 0x8E, 0x43, 0xE9, + 0xBE, 0x9C, 0x43, 0xE9, 0xBE, 0x9F, 0x43, 0xE9, + 0xBE, 0xA0, 0x43, 0xEA, 0x9C, 0xA7, 0x43, 0xEA, + // Bytes 1640 - 167f + 0x9D, 0xAF, 0x43, 0xEA, 0xAC, 0xB7, 0x43, 0xEA, + 0xAD, 0x92, 0x44, 0xF0, 0xA0, 0x84, 0xA2, 0x44, + 0xF0, 0xA0, 0x94, 0x9C, 0x44, 0xF0, 0xA0, 0x94, + 0xA5, 0x44, 0xF0, 0xA0, 0x95, 0x8B, 0x44, 0xF0, + 0xA0, 0x98, 0xBA, 0x44, 0xF0, 0xA0, 0xA0, 0x84, + 0x44, 0xF0, 0xA0, 0xA3, 0x9E, 0x44, 0xF0, 0xA0, + 0xA8, 0xAC, 0x44, 0xF0, 0xA0, 0xAD, 0xA3, 0x44, + 0xF0, 0xA1, 0x93, 0xA4, 0x44, 0xF0, 0xA1, 0x9A, + // Bytes 1680 - 16bf + 0xA8, 0x44, 0xF0, 0xA1, 0x9B, 0xAA, 0x44, 0xF0, + 0xA1, 0xA7, 0x88, 0x44, 0xF0, 0xA1, 0xAC, 0x98, + 0x44, 0xF0, 0xA1, 0xB4, 0x8B, 0x44, 0xF0, 0xA1, + 0xB7, 0xA4, 0x44, 0xF0, 0xA1, 0xB7, 0xA6, 0x44, + 0xF0, 0xA2, 0x86, 0x83, 0x44, 0xF0, 0xA2, 0x86, + 0x9F, 0x44, 0xF0, 0xA2, 0x8C, 0xB1, 0x44, 0xF0, + 0xA2, 0x9B, 0x94, 0x44, 0xF0, 0xA2, 0xA1, 0x84, + 0x44, 0xF0, 0xA2, 0xA1, 0x8A, 0x44, 0xF0, 0xA2, + // Bytes 16c0 - 16ff + 0xAC, 0x8C, 0x44, 0xF0, 0xA2, 0xAF, 0xB1, 0x44, + 0xF0, 0xA3, 0x80, 0x8A, 0x44, 0xF0, 0xA3, 0x8A, + 0xB8, 0x44, 0xF0, 0xA3, 0x8D, 0x9F, 0x44, 0xF0, + 0xA3, 0x8E, 0x93, 0x44, 0xF0, 0xA3, 0x8E, 0x9C, + 0x44, 0xF0, 0xA3, 0x8F, 0x83, 0x44, 0xF0, 0xA3, + 0x8F, 0x95, 0x44, 0xF0, 0xA3, 0x91, 0xAD, 0x44, + 0xF0, 0xA3, 0x9A, 0xA3, 0x44, 0xF0, 0xA3, 0xA2, + 0xA7, 0x44, 0xF0, 0xA3, 0xAA, 0x8D, 0x44, 0xF0, + // Bytes 1700 - 173f + 0xA3, 0xAB, 0xBA, 0x44, 0xF0, 0xA3, 0xB2, 0xBC, + 0x44, 0xF0, 0xA3, 0xB4, 0x9E, 0x44, 0xF0, 0xA3, + 0xBB, 0x91, 0x44, 0xF0, 0xA3, 0xBD, 0x9E, 0x44, + 0xF0, 0xA3, 0xBE, 0x8E, 0x44, 0xF0, 0xA4, 0x89, + 0xA3, 0x44, 0xF0, 0xA4, 0x8B, 0xAE, 0x44, 0xF0, + 0xA4, 0x8E, 0xAB, 0x44, 0xF0, 0xA4, 0x98, 0x88, + 0x44, 0xF0, 0xA4, 0x9C, 0xB5, 0x44, 0xF0, 0xA4, + 0xA0, 0x94, 0x44, 0xF0, 0xA4, 0xB0, 0xB6, 0x44, + // Bytes 1740 - 177f + 0xF0, 0xA4, 0xB2, 0x92, 0x44, 0xF0, 0xA4, 0xBE, + 0xA1, 0x44, 0xF0, 0xA4, 0xBE, 0xB8, 0x44, 0xF0, + 0xA5, 0x81, 0x84, 0x44, 0xF0, 0xA5, 0x83, 0xB2, + 0x44, 0xF0, 0xA5, 0x83, 0xB3, 0x44, 0xF0, 0xA5, + 0x84, 0x99, 0x44, 0xF0, 0xA5, 0x84, 0xB3, 0x44, + 0xF0, 0xA5, 0x89, 0x89, 0x44, 0xF0, 0xA5, 0x90, + 0x9D, 0x44, 0xF0, 0xA5, 0x98, 0xA6, 0x44, 0xF0, + 0xA5, 0x9A, 0x9A, 0x44, 0xF0, 0xA5, 0x9B, 0x85, + // Bytes 1780 - 17bf + 0x44, 0xF0, 0xA5, 0xA5, 0xBC, 0x44, 0xF0, 0xA5, + 0xAA, 0xA7, 0x44, 0xF0, 0xA5, 0xAE, 0xAB, 0x44, + 0xF0, 0xA5, 0xB2, 0x80, 0x44, 0xF0, 0xA5, 0xB3, + 0x90, 0x44, 0xF0, 0xA5, 0xBE, 0x86, 0x44, 0xF0, + 0xA6, 0x87, 0x9A, 0x44, 0xF0, 0xA6, 0x88, 0xA8, + 0x44, 0xF0, 0xA6, 0x89, 0x87, 0x44, 0xF0, 0xA6, + 0x8B, 0x99, 0x44, 0xF0, 0xA6, 0x8C, 0xBE, 0x44, + 0xF0, 0xA6, 0x93, 0x9A, 0x44, 0xF0, 0xA6, 0x94, + // Bytes 17c0 - 17ff + 0xA3, 0x44, 0xF0, 0xA6, 0x96, 0xA8, 0x44, 0xF0, + 0xA6, 0x9E, 0xA7, 0x44, 0xF0, 0xA6, 0x9E, 0xB5, + 0x44, 0xF0, 0xA6, 0xAC, 0xBC, 0x44, 0xF0, 0xA6, + 0xB0, 0xB6, 0x44, 0xF0, 0xA6, 0xB3, 0x95, 0x44, + 0xF0, 0xA6, 0xB5, 0xAB, 0x44, 0xF0, 0xA6, 0xBC, + 0xAC, 0x44, 0xF0, 0xA6, 0xBE, 0xB1, 0x44, 0xF0, + 0xA7, 0x83, 0x92, 0x44, 0xF0, 0xA7, 0x8F, 0x8A, + 0x44, 0xF0, 0xA7, 0x99, 0xA7, 0x44, 0xF0, 0xA7, + // Bytes 1800 - 183f + 0xA2, 0xAE, 0x44, 0xF0, 0xA7, 0xA5, 0xA6, 0x44, + 0xF0, 0xA7, 0xB2, 0xA8, 0x44, 0xF0, 0xA7, 0xBB, + 0x93, 0x44, 0xF0, 0xA7, 0xBC, 0xAF, 0x44, 0xF0, + 0xA8, 0x97, 0x92, 0x44, 0xF0, 0xA8, 0x97, 0xAD, + 0x44, 0xF0, 0xA8, 0x9C, 0xAE, 0x44, 0xF0, 0xA8, + 0xAF, 0xBA, 0x44, 0xF0, 0xA8, 0xB5, 0xB7, 0x44, + 0xF0, 0xA9, 0x85, 0x85, 0x44, 0xF0, 0xA9, 0x87, + 0x9F, 0x44, 0xF0, 0xA9, 0x88, 0x9A, 0x44, 0xF0, + // Bytes 1840 - 187f + 0xA9, 0x90, 0x8A, 0x44, 0xF0, 0xA9, 0x92, 0x96, + 0x44, 0xF0, 0xA9, 0x96, 0xB6, 0x44, 0xF0, 0xA9, + 0xAC, 0xB0, 0x44, 0xF0, 0xAA, 0x83, 0x8E, 0x44, + 0xF0, 0xAA, 0x84, 0x85, 0x44, 0xF0, 0xAA, 0x88, + 0x8E, 0x44, 0xF0, 0xAA, 0x8A, 0x91, 0x44, 0xF0, + 0xAA, 0x8E, 0x92, 0x44, 0xF0, 0xAA, 0x98, 0x80, + 0x42, 0x21, 0x21, 0x42, 0x21, 0x3F, 0x42, 0x2E, + 0x2E, 0x42, 0x30, 0x2C, 0x42, 0x30, 0x2E, 0x42, + // Bytes 1880 - 18bf + 0x31, 0x2C, 0x42, 0x31, 0x2E, 0x42, 0x31, 0x30, + 0x42, 0x31, 0x31, 0x42, 0x31, 0x32, 0x42, 0x31, + 0x33, 0x42, 0x31, 0x34, 0x42, 0x31, 0x35, 0x42, + 0x31, 0x36, 0x42, 0x31, 0x37, 0x42, 0x31, 0x38, + 0x42, 0x31, 0x39, 0x42, 0x32, 0x2C, 0x42, 0x32, + 0x2E, 0x42, 0x32, 0x30, 0x42, 0x32, 0x31, 0x42, + 0x32, 0x32, 0x42, 0x32, 0x33, 0x42, 0x32, 0x34, + 0x42, 0x32, 0x35, 0x42, 0x32, 0x36, 0x42, 0x32, + // Bytes 18c0 - 18ff + 0x37, 0x42, 0x32, 0x38, 0x42, 0x32, 0x39, 0x42, + 0x33, 0x2C, 0x42, 0x33, 0x2E, 0x42, 0x33, 0x30, + 0x42, 0x33, 0x31, 0x42, 0x33, 0x32, 0x42, 0x33, + 0x33, 0x42, 0x33, 0x34, 0x42, 0x33, 0x35, 0x42, + 0x33, 0x36, 0x42, 0x33, 0x37, 0x42, 0x33, 0x38, + 0x42, 0x33, 0x39, 0x42, 0x34, 0x2C, 0x42, 0x34, + 0x2E, 0x42, 0x34, 0x30, 0x42, 0x34, 0x31, 0x42, + 0x34, 0x32, 0x42, 0x34, 0x33, 0x42, 0x34, 0x34, + // Bytes 1900 - 193f + 0x42, 0x34, 0x35, 0x42, 0x34, 0x36, 0x42, 0x34, + 0x37, 0x42, 0x34, 0x38, 0x42, 0x34, 0x39, 0x42, + 0x35, 0x2C, 0x42, 0x35, 0x2E, 0x42, 0x35, 0x30, + 0x42, 0x36, 0x2C, 0x42, 0x36, 0x2E, 0x42, 0x37, + 0x2C, 0x42, 0x37, 0x2E, 0x42, 0x38, 0x2C, 0x42, + 0x38, 0x2E, 0x42, 0x39, 0x2C, 0x42, 0x39, 0x2E, + 0x42, 0x3D, 0x3D, 0x42, 0x3F, 0x21, 0x42, 0x3F, + 0x3F, 0x42, 0x41, 0x55, 0x42, 0x42, 0x71, 0x42, + // Bytes 1940 - 197f + 0x43, 0x44, 0x42, 0x44, 0x4A, 0x42, 0x44, 0x5A, + 0x42, 0x44, 0x7A, 0x42, 0x47, 0x42, 0x42, 0x47, + 0x79, 0x42, 0x48, 0x50, 0x42, 0x48, 0x56, 0x42, + 0x48, 0x67, 0x42, 0x48, 0x7A, 0x42, 0x49, 0x49, + 0x42, 0x49, 0x4A, 0x42, 0x49, 0x55, 0x42, 0x49, + 0x56, 0x42, 0x49, 0x58, 0x42, 0x4B, 0x42, 0x42, + 0x4B, 0x4B, 0x42, 0x4B, 0x4D, 0x42, 0x4C, 0x4A, + 0x42, 0x4C, 0x6A, 0x42, 0x4D, 0x42, 0x42, 0x4D, + // Bytes 1980 - 19bf + 0x43, 0x42, 0x4D, 0x44, 0x42, 0x4D, 0x52, 0x42, + 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, 0x4E, 0x4A, + 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, 0x42, 0x50, + 0x48, 0x42, 0x50, 0x52, 0x42, 0x50, 0x61, 0x42, + 0x52, 0x73, 0x42, 0x53, 0x44, 0x42, 0x53, 0x4D, + 0x42, 0x53, 0x53, 0x42, 0x53, 0x76, 0x42, 0x54, + 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, 0x43, 0x42, + 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, 0x58, 0x49, + // Bytes 19c0 - 19ff + 0x42, 0x63, 0x63, 0x42, 0x63, 0x64, 0x42, 0x63, + 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, 0x61, 0x42, + 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, 0x64, 0x7A, + 0x42, 0x65, 0x56, 0x42, 0x66, 0x66, 0x42, 0x66, + 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, 0x6D, 0x42, + 0x68, 0x61, 0x42, 0x69, 0x69, 0x42, 0x69, 0x6A, + 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, 0x42, 0x69, + 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, 0x56, 0x42, + // Bytes 1a00 - 1a3f + 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, 0x6B, 0x6C, + 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, 0x42, 0x6C, + 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, 0x6E, 0x42, + 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, 0x6D, 0x33, + 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, 0x42, 0x6D, + 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, 0x67, 0x42, + 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, 0x6D, 0x73, + 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, 0x42, 0x6E, + // Bytes 1a40 - 1a7f + 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, 0x6A, 0x42, + 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, 0x6F, 0x56, + 0x42, 0x70, 0x41, 0x42, 0x70, 0x46, 0x42, 0x70, + 0x56, 0x42, 0x70, 0x57, 0x42, 0x70, 0x63, 0x42, + 0x70, 0x73, 0x42, 0x73, 0x72, 0x42, 0x73, 0x74, + 0x42, 0x76, 0x69, 0x42, 0x78, 0x69, 0x43, 0x28, + 0x31, 0x29, 0x43, 0x28, 0x32, 0x29, 0x43, 0x28, + 0x33, 0x29, 0x43, 0x28, 0x34, 0x29, 0x43, 0x28, + // Bytes 1a80 - 1abf + 0x35, 0x29, 0x43, 0x28, 0x36, 0x29, 0x43, 0x28, + 0x37, 0x29, 0x43, 0x28, 0x38, 0x29, 0x43, 0x28, + 0x39, 0x29, 0x43, 0x28, 0x41, 0x29, 0x43, 0x28, + 0x42, 0x29, 0x43, 0x28, 0x43, 0x29, 0x43, 0x28, + 0x44, 0x29, 0x43, 0x28, 0x45, 0x29, 0x43, 0x28, + 0x46, 0x29, 0x43, 0x28, 0x47, 0x29, 0x43, 0x28, + 0x48, 0x29, 0x43, 0x28, 0x49, 0x29, 0x43, 0x28, + 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, 0x43, 0x28, + // Bytes 1ac0 - 1aff + 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, 0x43, 0x28, + 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, 0x43, 0x28, + 0x50, 0x29, 0x43, 0x28, 0x51, 0x29, 0x43, 0x28, + 0x52, 0x29, 0x43, 0x28, 0x53, 0x29, 0x43, 0x28, + 0x54, 0x29, 0x43, 0x28, 0x55, 0x29, 0x43, 0x28, + 0x56, 0x29, 0x43, 0x28, 0x57, 0x29, 0x43, 0x28, + 0x58, 0x29, 0x43, 0x28, 0x59, 0x29, 0x43, 0x28, + 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, 0x43, 0x28, + // Bytes 1b00 - 1b3f + 0x62, 0x29, 0x43, 0x28, 0x63, 0x29, 0x43, 0x28, + 0x64, 0x29, 0x43, 0x28, 0x65, 0x29, 0x43, 0x28, + 0x66, 0x29, 0x43, 0x28, 0x67, 0x29, 0x43, 0x28, + 0x68, 0x29, 0x43, 0x28, 0x69, 0x29, 0x43, 0x28, + 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, 0x43, 0x28, + 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, 0x43, 0x28, + 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, 0x43, 0x28, + 0x70, 0x29, 0x43, 0x28, 0x71, 0x29, 0x43, 0x28, + // Bytes 1b40 - 1b7f + 0x72, 0x29, 0x43, 0x28, 0x73, 0x29, 0x43, 0x28, + 0x74, 0x29, 0x43, 0x28, 0x75, 0x29, 0x43, 0x28, + 0x76, 0x29, 0x43, 0x28, 0x77, 0x29, 0x43, 0x28, + 0x78, 0x29, 0x43, 0x28, 0x79, 0x29, 0x43, 0x28, + 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, 0x43, 0x31, + 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, 0x43, 0x31, + 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, 0x43, 0x31, + 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, 0x43, 0x31, + // Bytes 1b80 - 1bbf + 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, 0x43, 0x31, + 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, 0x43, 0x32, + 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, 0x43, 0x3D, + 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, 0x43, 0x46, + 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, 0x43, 0x47, + 0x50, 0x61, 0x43, 0x49, 0x49, 0x49, 0x43, 0x4C, + 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, 0x43, 0x4D, + 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, 0x43, 0x4D, + // Bytes 1bc0 - 1bff + 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, 0x43, 0x50, + 0x50, 0x56, 0x43, 0x50, 0x54, 0x45, 0x43, 0x54, + 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, 0x43, 0x56, + 0x49, 0x49, 0x43, 0x58, 0x49, 0x49, 0x43, 0x61, + 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, 0x43, 0x61, + 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, 0x43, 0x63, + 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, 0x43, 0x63, + 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, 0x43, 0x63, + // Bytes 1c00 - 1c3f + 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, 0x43, 0x64, + 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, 0x43, 0x66, + 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, 0x43, 0x67, + 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, 0x43, 0x69, + 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, 0x43, 0x6B, + 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, 0x43, 0x6B, + 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, 0x43, 0x6C, + 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, 0x43, 0x6D, + // Bytes 1c40 - 1c7f + 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, 0x43, 0x6D, + 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, 0x43, 0x72, + 0x61, 0x64, 0x43, 0x76, 0x69, 0x69, 0x43, 0x78, + 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, 0x43, 0xC2, + 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, 0x43, 0xCE, + 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, 0x43, 0xCE, + 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, 0x43, 0xCE, + 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, 0x43, 0xCE, + // Bytes 1c80 - 1cbf + 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, 0x44, 0x28, + 0x31, 0x30, 0x29, 0x44, 0x28, 0x31, 0x31, 0x29, + 0x44, 0x28, 0x31, 0x32, 0x29, 0x44, 0x28, 0x31, + 0x33, 0x29, 0x44, 0x28, 0x31, 0x34, 0x29, 0x44, + 0x28, 0x31, 0x35, 0x29, 0x44, 0x28, 0x31, 0x36, + 0x29, 0x44, 0x28, 0x31, 0x37, 0x29, 0x44, 0x28, + 0x31, 0x38, 0x29, 0x44, 0x28, 0x31, 0x39, 0x29, + 0x44, 0x28, 0x32, 0x30, 0x29, 0x44, 0x30, 0xE7, + // Bytes 1cc0 - 1cff + 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, 0x84, 0x44, + 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, 0xE6, 0x9C, + 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, 0x44, 0x32, + 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, 0x9C, 0x88, + 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, 0x33, 0xE6, + 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, 0x88, 0x44, + 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, 0xE6, 0x97, + 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, 0x44, 0x34, + // Bytes 1d00 - 1d3f + 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, 0x97, 0xA5, + 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, 0x35, 0xE7, + 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, 0xA5, 0x44, + 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, 0xE7, 0x82, + 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, 0x44, 0x37, + 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, 0x82, 0xB9, + 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, 0x38, 0xE6, + 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, 0xB9, 0x44, + // Bytes 1d40 - 1d7f + 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, 0xE6, 0x9C, + 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, 0x44, 0x56, + 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, 0x6D, 0x2E, + 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, 0x70, 0x2E, + 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, 0x69, 0x44, + 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, 0xB4, 0xD5, + 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, 0x44, 0xD5, + 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, 0xD5, 0xB6, + // Bytes 1d80 - 1dbf + 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, 0xD7, 0x90, + 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, 0xB4, 0x44, + 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, 0xA8, 0xD8, + 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, 0x44, 0xD8, + 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, 0xD8, 0xB2, + 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, 0xD8, 0xA8, + 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, 0x87, 0x44, + 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, 0xA8, 0xD9, + // Bytes 1dc0 - 1dff + 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, 0x44, 0xD8, + 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, 0xD8, 0xAE, + 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, 0xD8, 0xAA, + 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, 0x85, 0x44, + 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, 0xAA, 0xD9, + 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, 0x44, 0xD8, + 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, 0xD8, 0xAC, + 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, 0xD8, 0xAB, + // Bytes 1e00 - 1e3f + 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, 0x85, 0x44, + 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, 0xAB, 0xD9, + 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, 0x44, 0xD8, + 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, 0xD8, 0xAD, + 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, 0xD8, 0xAC, + 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, 0x8A, 0x44, + 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, 0xAD, 0xD9, + 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, 0x44, 0xD8, + // Bytes 1e40 - 1e7f + 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, 0xD8, 0xAC, + 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, 0xD8, 0xAE, + 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, 0x89, 0x44, + 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, 0xB3, 0xD8, + 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, 0x44, 0xD8, + 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, 0xD8, 0xB1, + 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, 0xD8, 0xB3, + 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, 0x89, 0x44, + // Bytes 1e80 - 1ebf + 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, 0xB4, 0xD8, + 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, 0x44, 0xD8, + 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, 0xD8, 0xB1, + 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, 0xD8, 0xB4, + 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, 0x89, 0x44, + 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, 0xB5, 0xD8, + 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, 0x44, 0xD8, + 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, 0xD9, 0x85, + // Bytes 1ec0 - 1eff + 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, 0xD8, 0xB5, + 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, 0xAC, 0x44, + 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, 0xB6, 0xD8, + 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, 0x44, 0xD8, + 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, 0xD9, 0x89, + 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, 0xD8, 0xB7, + 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, 0x85, 0x44, + 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, 0xB7, 0xD9, + // Bytes 1f00 - 1f3f + 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, 0x44, 0xD8, + 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, 0xD9, 0x85, + 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, 0xD8, 0xB9, + 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, 0xAC, 0x44, + 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, 0xBA, 0xD9, + 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, 0x44, 0xD9, + 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, 0xD8, 0xAD, + 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, 0xD9, 0x81, + // Bytes 1f40 - 1f7f + 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, 0x89, 0x44, + 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, 0x82, 0xD8, + 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, 0x44, 0xD9, + 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, 0xD9, 0x8A, + 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, 0xD9, 0x83, + 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, 0xAD, 0x44, + 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, 0x83, 0xD9, + 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, 0x44, 0xD9, + // Bytes 1f80 - 1fbf + 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, 0xD9, 0x8A, + 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, 0xD9, 0x84, + 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, 0xAD, 0x44, + 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, 0x84, 0xD9, + 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, 0x44, 0xD9, + 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, 0xD9, 0x8A, + 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, 0xD9, 0x85, + 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, 0xAD, 0x44, + // Bytes 1fc0 - 1fff + 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, 0x85, 0xD9, + 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, 0x44, 0xD9, + 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, 0xD8, 0xAC, + 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, 0xD9, 0x86, + 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, 0xB1, 0x44, + 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, 0x86, 0xD9, + 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, 0x44, 0xD9, + 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, 0xD9, 0x89, + // Bytes 2000 - 203f + 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, 0xD9, 0x87, + 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, 0x85, 0x44, + 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, 0x87, 0xD9, + 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, 0x44, 0xD9, + 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, 0xD8, 0xAD, + 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, 0xD9, 0x8A, + 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, 0xB2, 0x44, + 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, 0x8A, 0xD9, + // Bytes 2040 - 207f + 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, 0x44, 0xD9, + 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, 0xD9, 0x8A, + 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, 0xDB, 0x87, + 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, 0x80, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, 0x45, 0x28, + 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x86, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, 0x45, 0x28, + // Bytes 2080 - 20bf + 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8C, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, 0x45, 0x28, + 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x91, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, 0x45, 0x28, + 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, 0xE4, 0xB8, + 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, 0x89, 0x29, + // Bytes 20c0 - 20ff + 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, 0x45, 0x28, + 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, 0xE4, 0xBA, + 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, 0xA3, 0x29, + 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, 0x45, 0x28, + 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, 0xE5, 0x85, + 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, 0xAD, 0x29, + 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, 0x45, 0x28, + 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, 0xE5, 0x8D, + // Bytes 2100 - 213f + 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, 0x8D, 0x29, + 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, 0x45, 0x28, + 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, 0xE5, 0x9C, + 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, 0xA6, 0x29, + 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, 0x45, 0x28, + 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, 0xE6, 0x9C, + 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, 0xA8, 0x29, + 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x45, 0x28, + // Bytes 2140 - 217f + 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, 0xE7, 0x81, + 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, 0xB9, 0x29, + 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x45, 0x28, + 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, 0xE7, 0xA5, + 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, 0xAD, 0x29, + 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, 0x45, 0x28, + 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, 0xE8, 0xB2, + 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, 0x87, 0x29, + // Bytes 2180 - 21bf + 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x45, 0x30, + 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0x30, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, 0x9C, 0x88, + 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x31, + 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x31, 0xE6, + 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x32, 0xE7, + // Bytes 21c0 - 21ff + 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, 0x97, 0xA5, + 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x31, + 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x34, 0xE7, + 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, 0x97, 0xA5, + 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, 0x45, 0x31, + 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x36, 0xE7, + 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, 0x97, 0xA5, + 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x45, 0x31, + // Bytes 2200 - 223f + 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x38, 0xE7, + 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, 0x97, 0xA5, + 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, 0x45, 0x31, + 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, 0xE2, 0x81, + 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x34, + 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x31, + 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, 0xE2, 0x81, + 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x38, + // Bytes 2240 - 227f + 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, 0x45, 0x32, + 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x30, 0xE7, + 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, 0x97, 0xA5, + 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x45, 0x32, + 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x32, 0xE7, + 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, 0x97, 0xA5, + 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, 0x45, 0x32, + 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x34, 0xE7, + // Bytes 2280 - 22bf + 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, 0x97, 0xA5, + 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x38, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, 0x97, 0xA5, + 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x32, + 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0x30, 0xE6, + 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, 0x97, 0xA5, + 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, 0x45, 0x33, + // Bytes 22c0 - 22ff + 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, 0xE2, 0x81, + 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, 0x84, 0x35, + 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x35, + 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, 0xE2, 0x81, + 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, 0x95, 0x6D, + 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, 0x45, 0x6D, + 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, 0xE2, 0x81, + 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, 0x88, 0x95, + // Bytes 2300 - 233f + 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, 0x95, 0x73, + 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A, + 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, + 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD8, + 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD8, 0xAA, + 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAA, 0xD8, + 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, 0xD8, 0xAD, + 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, + // Bytes 2340 - 237f + 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89, + 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, + 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, + 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xAA, + 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, 0xAA, 0xD9, + 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD9, 0x85, + 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, + 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A, + // Bytes 2380 - 23bf + 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0x46, + 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, + 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAD, + 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xAD, 0xD9, + 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, 0xD9, 0x85, + 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, + 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89, + 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, + // Bytes 23c0 - 23ff + 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0x46, 0xD8, + 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, + 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, 0xB3, 0xD9, + 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD9, 0x85, + 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9, + 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85, + 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, + 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, + // Bytes 2400 - 243f + 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB5, + 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, 0xB5, 0xD8, + 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, 0xD9, 0x84, + 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, 0x84, 0xDB, + 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, + 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0x46, + 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, + 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xB7, + // Bytes 2440 - 247f + 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB7, 0xD9, + 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, 0xD9, 0x85, + 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, + 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, + 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x89, 0x46, + 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, + 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xBA, + 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xBA, 0xD9, + // Bytes 2480 - 24bf + 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, 0xD8, 0xAE, + 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, 0x85, 0xD9, + 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92, + 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0x46, + 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, + 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x83, + 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x83, 0xD9, + 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAC, + // Bytes 24c0 - 24ff + 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, + 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A, + 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0x46, + 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0x46, 0xD9, + 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x84, + 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD9, + 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, 0xD9, 0x85, + 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, + // Bytes 2500 - 253f + 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE, + 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0x46, + 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, + 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD9, 0x85, + 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, + 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, 0xAE, + 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, + 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A, + // Bytes 2540 - 257f + 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0x46, + 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0x46, 0xD9, + 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x86, + 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, + 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAD, + 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, + 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A, + 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, 0x46, + // Bytes 2580 - 25bf + 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, + 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD9, 0x87, + 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD8, + 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, + 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0x46, + 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0x46, 0xD9, + // Bytes 25c0 - 25ff + 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, 0xD9, 0x8A, + 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, 0x8A, 0xD9, + 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, 0xD9, 0x94, + 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, + 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0x46, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0x46, 0xD9, + 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, 0xD9, 0x8A, + // Bytes 2600 - 263f + 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, + 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0x46, + 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, 0x46, 0xE0, + 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, 0xE0, 0xBA, + 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, 0xBB, 0x8D, + // Bytes 2640 - 267f + 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, 0x80, 0xE0, + 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, 0xE0, 0xBE, + 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7, + 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0x46, + 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, + 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, + 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBE, 0x92, + 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0x9C, 0xE0, + // Bytes 2680 - 26bf + 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE, + 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7, + 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0x46, + 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x46, 0xE2, + 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, 0xE2, 0x88, + 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, 0x88, 0xAE, + 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, 0xBB, 0xE3, + 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, 0xE3, 0x82, + // Bytes 26c0 - 26ff + 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, + 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB3, 0x46, + 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, 0x46, 0xE3, + 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, + 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, 0x83, 0x9B, + 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, 0x9F, 0xE3, + 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, 0xE3, 0x83, + 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0, + // Bytes 2700 - 273f + 0x46, 0xE4, 0xBB, 0xA4, 0xE5, 0x92, 0x8C, 0x46, + 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0x46, 0xE5, + 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0x46, 0xE6, 0x98, + 0x8E, 0xE6, 0xB2, 0xBB, 0x46, 0xE6, 0x98, 0xAD, + 0xE5, 0x92, 0x8C, 0x47, 0x72, 0x61, 0x64, 0xE2, + 0x88, 0x95, 0x73, 0x47, 0xE3, 0x80, 0x94, 0x53, + 0xE3, 0x80, 0x95, 0x48, 0x28, 0xE1, 0x84, 0x80, + 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, + // Bytes 2740 - 277f + 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, + 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, + 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x48, + 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29, + 0x48, 0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, + 0x29, 0x48, 0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85, + 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8B, 0xE1, + 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8C, + // Bytes 2780 - 27bf + 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, + 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x48, 0x28, 0xE1, + 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, + 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x48, + 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29, + 0x48, 0x28, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, + 0x29, 0x48, 0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85, + 0xA1, 0x29, 0x48, 0x72, 0x61, 0x64, 0xE2, 0x88, + // Bytes 27c0 - 27ff + 0x95, 0x73, 0x32, 0x48, 0xD8, 0xA7, 0xD9, 0x83, + 0xD8, 0xA8, 0xD8, 0xB1, 0x48, 0xD8, 0xA7, 0xD9, + 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x48, 0xD8, 0xB1, + 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0x48, 0xD8, + 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x48, + 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85, + 0x48, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, + 0x87, 0x48, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, + // Bytes 2800 - 283f + 0xD8, 0xAF, 0x48, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, + 0x84, 0xD9, 0x85, 0x49, 0xE2, 0x80, 0xB2, 0xE2, + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x49, 0xE2, 0x80, + 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x49, + 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, + 0xAB, 0x49, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, + 0xE2, 0x88, 0xAE, 0x49, 0xE3, 0x80, 0x94, 0xE4, + 0xB8, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, + // Bytes 2840 - 287f + 0x94, 0xE4, 0xBA, 0x8C, 0xE3, 0x80, 0x95, 0x49, + 0xE3, 0x80, 0x94, 0xE5, 0x8B, 0x9D, 0xE3, 0x80, + 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0xAE, 0x89, + 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, + 0x89, 0x93, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, + 0x94, 0xE6, 0x95, 0x97, 0xE3, 0x80, 0x95, 0x49, + 0xE3, 0x80, 0x94, 0xE6, 0x9C, 0xAC, 0xE3, 0x80, + 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, 0x82, 0xB9, + // Bytes 2880 - 28bf + 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE7, + 0x9B, 0x97, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x82, + 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, + 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x81, 0x49, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, + 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x82, 0xAA, 0xE3, + 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, + 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x49, + // Bytes 28c0 - 28ff + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xAA, 0x49, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, + 0xE3, 0x82, 0xB9, 0x49, 0xE3, 0x82, 0xB3, 0xE3, + 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0x49, 0xE3, 0x82, + 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0x49, + 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x88, 0x49, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0xB7, 0x49, 0xE3, 0x83, 0x88, 0xE3, + // Bytes 2900 - 293f + 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, + 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x49, + 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0x84, 0x49, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x92, 0xE3, + 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0x49, 0xE3, 0x83, + 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0x49, + 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, + // Bytes 2940 - 297f + 0xBD, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, + 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x9B, 0xE3, + 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, + 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0x49, + 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xAB, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83, + 0xE3, 0x83, 0x8F, 0x49, 0xE3, 0x83, 0x9E, 0xE3, + 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0x49, 0xE3, 0x83, + // Bytes 2980 - 29bf + 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x49, + 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, + 0xB3, 0x49, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, + 0xE3, 0x83, 0x88, 0x4C, 0xE2, 0x80, 0xB2, 0xE2, + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0x4C, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, + 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x4C, 0xE3, 0x82, + 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, + // Bytes 29c0 - 29ff + 0x82, 0xA1, 0x4C, 0xE3, 0x82, 0xA8, 0xE3, 0x83, + 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0x4C, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, 0x82, 0xAB, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x9E, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE3, + 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA, + // Bytes 2a00 - 2a3f + 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC, + 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3, + 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, + 0x83, 0xA0, 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x83, + 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0x4C, + 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82, + // Bytes 2a40 - 2a7f + 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x82, 0xBF, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, + 0xB9, 0x4C, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0x4C, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF, + 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0x95, 0xE3, + 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, + 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3, + // Bytes 2a80 - 2abf + 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0x4C, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3, + 0x83, 0x92, 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0x4C, + 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xAB, 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x9E, + 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, + 0xAD, 0x4C, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF, + // Bytes 2ac0 - 2aff + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, 0xE3, + 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, + 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAA, 0xE3, + 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, + 0x4C, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, + 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0x4C, 0xE6, 0xA0, + 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7, + 0xA4, 0xBE, 0x4E, 0x28, 0xE1, 0x84, 0x8B, 0xE1, + // Bytes 2b00 - 2b3f + 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE, + 0x29, 0x4F, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8, + 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, + 0x87, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0x88, 0x4F, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, + 0xA2, 0x4F, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, + // Bytes 2b40 - 2b7f + 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, + 0x88, 0x4F, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xA0, 0x4F, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83, + 0xAB, 0x4F, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF, + 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAB, 0x4F, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, + // Bytes 2b80 - 2bbf + 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, + 0x88, 0x4F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3, + 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83, + 0xB3, 0x4F, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83, + 0xB3, 0x4F, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xAB, 0x51, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, + // Bytes 2bc0 - 2bff + 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1, + 0x86, 0xAB, 0x29, 0x52, 0xE3, 0x82, 0xAD, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0x52, 0xE3, + 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0xA0, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + // Bytes 2c00 - 2c3f + 0x88, 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x82, 0xAF, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x52, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, + 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, + 0x83, 0xAD, 0x52, 0xE3, 0x83, 0x8F, 0xE3, 0x82, + 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3, + 0x83, 0xB3, 0xE3, 0x83, 0x88, 0x52, 0xE3, 0x83, + // Bytes 2c40 - 2c7f + 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, + 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, + 0x52, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7, + 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x9F, 0xE3, + 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0x52, 0xE3, + 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, + // Bytes 2c80 - 2cbf + 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xB3, 0x61, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, + 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, + 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, + 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, + 0x84, 0xD9, 0x85, 0x06, 0xE0, 0xA7, 0x87, 0xE0, + 0xA6, 0xBE, 0x01, 0x06, 0xE0, 0xA7, 0x87, 0xE0, + 0xA7, 0x97, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, + // Bytes 2cc0 - 2cff + 0xAC, 0xBE, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, + 0xAD, 0x96, 0x01, 0x06, 0xE0, 0xAD, 0x87, 0xE0, + 0xAD, 0x97, 0x01, 0x06, 0xE0, 0xAE, 0x92, 0xE0, + 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0, + 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xAF, 0x86, 0xE0, + 0xAF, 0x97, 0x01, 0x06, 0xE0, 0xAF, 0x87, 0xE0, + 0xAE, 0xBE, 0x01, 0x06, 0xE0, 0xB2, 0xBF, 0xE0, + 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0, + // Bytes 2d00 - 2d3f + 0xB3, 0x95, 0x01, 0x06, 0xE0, 0xB3, 0x86, 0xE0, + 0xB3, 0x96, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0, + 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB5, 0x86, 0xE0, + 0xB5, 0x97, 0x01, 0x06, 0xE0, 0xB5, 0x87, 0xE0, + 0xB4, 0xBE, 0x01, 0x06, 0xE0, 0xB7, 0x99, 0xE0, + 0xB7, 0x9F, 0x01, 0x06, 0xE1, 0x80, 0xA5, 0xE1, + 0x80, 0xAE, 0x01, 0x06, 0xE1, 0xAC, 0x85, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x87, 0xE1, + // Bytes 2d40 - 2d7f + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x89, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8B, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x8D, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0x91, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBA, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBC, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBE, 0xE1, + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAC, 0xBF, 0xE1, + // Bytes 2d80 - 2dbf + 0xAC, 0xB5, 0x01, 0x06, 0xE1, 0xAD, 0x82, 0xE1, + 0xAC, 0xB5, 0x01, 0x08, 0xF0, 0x91, 0x84, 0xB1, + 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, 0xF0, 0x91, + 0x84, 0xB2, 0xF0, 0x91, 0x84, 0xA7, 0x01, 0x08, + 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, 0x8C, 0xBE, + 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, 0x91, + 0x8D, 0x97, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, + 0xF0, 0x91, 0x92, 0xB0, 0x01, 0x08, 0xF0, 0x91, + // Bytes 2dc0 - 2dff + 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBA, 0x01, 0x08, + 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xBD, + 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB8, 0xF0, 0x91, + 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91, 0x96, 0xB9, + 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, 0x91, + 0xA4, 0xB5, 0xF0, 0x91, 0xA4, 0xB0, 0x01, 0x09, + 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3, + 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, + // Bytes 2e00 - 2e3f + 0x8F, 0xE0, 0xB7, 0x8A, 0x16, 0x44, 0x44, 0x5A, + 0xCC, 0x8C, 0xCD, 0x44, 0x44, 0x7A, 0xCC, 0x8C, + 0xCD, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xCD, 0x46, + 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x46, + 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xCD, 0x46, + 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x46, + 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01, 0x46, + // Bytes 2e40 - 2e7f + 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01, 0x46, + 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01, 0x46, + // Bytes 2e80 - 2ebf + 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01, 0x46, + 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01, 0x49, + 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0x99, 0x11, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, 0x85, + 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0x01, + // Bytes 2ec0 - 2eff + 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, + 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x4C, 0xE3, + 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B, + 0xE3, 0x82, 0x9A, 0x11, 0x4C, 0xE3, 0x83, 0xA4, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, + 0x99, 0x11, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, 0x85, + 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1, + 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, 0xE3, + // Bytes 2f00 - 2f3f + 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, + 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x82, 0xB7, + 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x4F, 0xE3, + 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x52, + // Bytes 2f40 - 2f7f + 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, + 0x82, 0x99, 0x11, 0x52, 0xE3, 0x83, 0x95, 0xE3, + 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x86, + 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, 0x86, + 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, 0x03, + 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, 0xB8, + // Bytes 2f80 - 2fbf + 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, 0x41, + 0xCC, 0x80, 0xCD, 0x03, 0x41, 0xCC, 0x81, 0xCD, + 0x03, 0x41, 0xCC, 0x83, 0xCD, 0x03, 0x41, 0xCC, + 0x84, 0xCD, 0x03, 0x41, 0xCC, 0x89, 0xCD, 0x03, + 0x41, 0xCC, 0x8C, 0xCD, 0x03, 0x41, 0xCC, 0x8F, + 0xCD, 0x03, 0x41, 0xCC, 0x91, 0xCD, 0x03, 0x41, + 0xCC, 0xA5, 0xB9, 0x03, 0x41, 0xCC, 0xA8, 0xA9, + 0x03, 0x42, 0xCC, 0x87, 0xCD, 0x03, 0x42, 0xCC, + // Bytes 2fc0 - 2fff + 0xA3, 0xB9, 0x03, 0x42, 0xCC, 0xB1, 0xB9, 0x03, + 0x43, 0xCC, 0x81, 0xCD, 0x03, 0x43, 0xCC, 0x82, + 0xCD, 0x03, 0x43, 0xCC, 0x87, 0xCD, 0x03, 0x43, + 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, 0x87, 0xCD, + 0x03, 0x44, 0xCC, 0x8C, 0xCD, 0x03, 0x44, 0xCC, + 0xA3, 0xB9, 0x03, 0x44, 0xCC, 0xA7, 0xA9, 0x03, + 0x44, 0xCC, 0xAD, 0xB9, 0x03, 0x44, 0xCC, 0xB1, + 0xB9, 0x03, 0x45, 0xCC, 0x80, 0xCD, 0x03, 0x45, + // Bytes 3000 - 303f + 0xCC, 0x81, 0xCD, 0x03, 0x45, 0xCC, 0x83, 0xCD, + 0x03, 0x45, 0xCC, 0x86, 0xCD, 0x03, 0x45, 0xCC, + 0x87, 0xCD, 0x03, 0x45, 0xCC, 0x88, 0xCD, 0x03, + 0x45, 0xCC, 0x89, 0xCD, 0x03, 0x45, 0xCC, 0x8C, + 0xCD, 0x03, 0x45, 0xCC, 0x8F, 0xCD, 0x03, 0x45, + 0xCC, 0x91, 0xCD, 0x03, 0x45, 0xCC, 0xA8, 0xA9, + 0x03, 0x45, 0xCC, 0xAD, 0xB9, 0x03, 0x45, 0xCC, + 0xB0, 0xB9, 0x03, 0x46, 0xCC, 0x87, 0xCD, 0x03, + // Bytes 3040 - 307f + 0x47, 0xCC, 0x81, 0xCD, 0x03, 0x47, 0xCC, 0x82, + 0xCD, 0x03, 0x47, 0xCC, 0x84, 0xCD, 0x03, 0x47, + 0xCC, 0x86, 0xCD, 0x03, 0x47, 0xCC, 0x87, 0xCD, + 0x03, 0x47, 0xCC, 0x8C, 0xCD, 0x03, 0x47, 0xCC, + 0xA7, 0xA9, 0x03, 0x48, 0xCC, 0x82, 0xCD, 0x03, + 0x48, 0xCC, 0x87, 0xCD, 0x03, 0x48, 0xCC, 0x88, + 0xCD, 0x03, 0x48, 0xCC, 0x8C, 0xCD, 0x03, 0x48, + 0xCC, 0xA3, 0xB9, 0x03, 0x48, 0xCC, 0xA7, 0xA9, + // Bytes 3080 - 30bf + 0x03, 0x48, 0xCC, 0xAE, 0xB9, 0x03, 0x49, 0xCC, + 0x80, 0xCD, 0x03, 0x49, 0xCC, 0x81, 0xCD, 0x03, + 0x49, 0xCC, 0x82, 0xCD, 0x03, 0x49, 0xCC, 0x83, + 0xCD, 0x03, 0x49, 0xCC, 0x84, 0xCD, 0x03, 0x49, + 0xCC, 0x86, 0xCD, 0x03, 0x49, 0xCC, 0x87, 0xCD, + 0x03, 0x49, 0xCC, 0x89, 0xCD, 0x03, 0x49, 0xCC, + 0x8C, 0xCD, 0x03, 0x49, 0xCC, 0x8F, 0xCD, 0x03, + 0x49, 0xCC, 0x91, 0xCD, 0x03, 0x49, 0xCC, 0xA3, + // Bytes 30c0 - 30ff + 0xB9, 0x03, 0x49, 0xCC, 0xA8, 0xA9, 0x03, 0x49, + 0xCC, 0xB0, 0xB9, 0x03, 0x4A, 0xCC, 0x82, 0xCD, + 0x03, 0x4B, 0xCC, 0x81, 0xCD, 0x03, 0x4B, 0xCC, + 0x8C, 0xCD, 0x03, 0x4B, 0xCC, 0xA3, 0xB9, 0x03, + 0x4B, 0xCC, 0xA7, 0xA9, 0x03, 0x4B, 0xCC, 0xB1, + 0xB9, 0x03, 0x4C, 0xCC, 0x81, 0xCD, 0x03, 0x4C, + 0xCC, 0x8C, 0xCD, 0x03, 0x4C, 0xCC, 0xA7, 0xA9, + 0x03, 0x4C, 0xCC, 0xAD, 0xB9, 0x03, 0x4C, 0xCC, + // Bytes 3100 - 313f + 0xB1, 0xB9, 0x03, 0x4D, 0xCC, 0x81, 0xCD, 0x03, + 0x4D, 0xCC, 0x87, 0xCD, 0x03, 0x4D, 0xCC, 0xA3, + 0xB9, 0x03, 0x4E, 0xCC, 0x80, 0xCD, 0x03, 0x4E, + 0xCC, 0x81, 0xCD, 0x03, 0x4E, 0xCC, 0x83, 0xCD, + 0x03, 0x4E, 0xCC, 0x87, 0xCD, 0x03, 0x4E, 0xCC, + 0x8C, 0xCD, 0x03, 0x4E, 0xCC, 0xA3, 0xB9, 0x03, + 0x4E, 0xCC, 0xA7, 0xA9, 0x03, 0x4E, 0xCC, 0xAD, + 0xB9, 0x03, 0x4E, 0xCC, 0xB1, 0xB9, 0x03, 0x4F, + // Bytes 3140 - 317f + 0xCC, 0x80, 0xCD, 0x03, 0x4F, 0xCC, 0x81, 0xCD, + 0x03, 0x4F, 0xCC, 0x86, 0xCD, 0x03, 0x4F, 0xCC, + 0x89, 0xCD, 0x03, 0x4F, 0xCC, 0x8B, 0xCD, 0x03, + 0x4F, 0xCC, 0x8C, 0xCD, 0x03, 0x4F, 0xCC, 0x8F, + 0xCD, 0x03, 0x4F, 0xCC, 0x91, 0xCD, 0x03, 0x50, + 0xCC, 0x81, 0xCD, 0x03, 0x50, 0xCC, 0x87, 0xCD, + 0x03, 0x52, 0xCC, 0x81, 0xCD, 0x03, 0x52, 0xCC, + 0x87, 0xCD, 0x03, 0x52, 0xCC, 0x8C, 0xCD, 0x03, + // Bytes 3180 - 31bf + 0x52, 0xCC, 0x8F, 0xCD, 0x03, 0x52, 0xCC, 0x91, + 0xCD, 0x03, 0x52, 0xCC, 0xA7, 0xA9, 0x03, 0x52, + 0xCC, 0xB1, 0xB9, 0x03, 0x53, 0xCC, 0x82, 0xCD, + 0x03, 0x53, 0xCC, 0x87, 0xCD, 0x03, 0x53, 0xCC, + 0xA6, 0xB9, 0x03, 0x53, 0xCC, 0xA7, 0xA9, 0x03, + 0x54, 0xCC, 0x87, 0xCD, 0x03, 0x54, 0xCC, 0x8C, + 0xCD, 0x03, 0x54, 0xCC, 0xA3, 0xB9, 0x03, 0x54, + 0xCC, 0xA6, 0xB9, 0x03, 0x54, 0xCC, 0xA7, 0xA9, + // Bytes 31c0 - 31ff + 0x03, 0x54, 0xCC, 0xAD, 0xB9, 0x03, 0x54, 0xCC, + 0xB1, 0xB9, 0x03, 0x55, 0xCC, 0x80, 0xCD, 0x03, + 0x55, 0xCC, 0x81, 0xCD, 0x03, 0x55, 0xCC, 0x82, + 0xCD, 0x03, 0x55, 0xCC, 0x86, 0xCD, 0x03, 0x55, + 0xCC, 0x89, 0xCD, 0x03, 0x55, 0xCC, 0x8A, 0xCD, + 0x03, 0x55, 0xCC, 0x8B, 0xCD, 0x03, 0x55, 0xCC, + 0x8C, 0xCD, 0x03, 0x55, 0xCC, 0x8F, 0xCD, 0x03, + 0x55, 0xCC, 0x91, 0xCD, 0x03, 0x55, 0xCC, 0xA3, + // Bytes 3200 - 323f + 0xB9, 0x03, 0x55, 0xCC, 0xA4, 0xB9, 0x03, 0x55, + 0xCC, 0xA8, 0xA9, 0x03, 0x55, 0xCC, 0xAD, 0xB9, + 0x03, 0x55, 0xCC, 0xB0, 0xB9, 0x03, 0x56, 0xCC, + 0x83, 0xCD, 0x03, 0x56, 0xCC, 0xA3, 0xB9, 0x03, + 0x57, 0xCC, 0x80, 0xCD, 0x03, 0x57, 0xCC, 0x81, + 0xCD, 0x03, 0x57, 0xCC, 0x82, 0xCD, 0x03, 0x57, + 0xCC, 0x87, 0xCD, 0x03, 0x57, 0xCC, 0x88, 0xCD, + 0x03, 0x57, 0xCC, 0xA3, 0xB9, 0x03, 0x58, 0xCC, + // Bytes 3240 - 327f + 0x87, 0xCD, 0x03, 0x58, 0xCC, 0x88, 0xCD, 0x03, + 0x59, 0xCC, 0x80, 0xCD, 0x03, 0x59, 0xCC, 0x81, + 0xCD, 0x03, 0x59, 0xCC, 0x82, 0xCD, 0x03, 0x59, + 0xCC, 0x83, 0xCD, 0x03, 0x59, 0xCC, 0x84, 0xCD, + 0x03, 0x59, 0xCC, 0x87, 0xCD, 0x03, 0x59, 0xCC, + 0x88, 0xCD, 0x03, 0x59, 0xCC, 0x89, 0xCD, 0x03, + 0x59, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, 0x81, + 0xCD, 0x03, 0x5A, 0xCC, 0x82, 0xCD, 0x03, 0x5A, + // Bytes 3280 - 32bf + 0xCC, 0x87, 0xCD, 0x03, 0x5A, 0xCC, 0x8C, 0xCD, + 0x03, 0x5A, 0xCC, 0xA3, 0xB9, 0x03, 0x5A, 0xCC, + 0xB1, 0xB9, 0x03, 0x61, 0xCC, 0x80, 0xCD, 0x03, + 0x61, 0xCC, 0x81, 0xCD, 0x03, 0x61, 0xCC, 0x83, + 0xCD, 0x03, 0x61, 0xCC, 0x84, 0xCD, 0x03, 0x61, + 0xCC, 0x89, 0xCD, 0x03, 0x61, 0xCC, 0x8C, 0xCD, + 0x03, 0x61, 0xCC, 0x8F, 0xCD, 0x03, 0x61, 0xCC, + 0x91, 0xCD, 0x03, 0x61, 0xCC, 0xA5, 0xB9, 0x03, + // Bytes 32c0 - 32ff + 0x61, 0xCC, 0xA8, 0xA9, 0x03, 0x62, 0xCC, 0x87, + 0xCD, 0x03, 0x62, 0xCC, 0xA3, 0xB9, 0x03, 0x62, + 0xCC, 0xB1, 0xB9, 0x03, 0x63, 0xCC, 0x81, 0xCD, + 0x03, 0x63, 0xCC, 0x82, 0xCD, 0x03, 0x63, 0xCC, + 0x87, 0xCD, 0x03, 0x63, 0xCC, 0x8C, 0xCD, 0x03, + 0x64, 0xCC, 0x87, 0xCD, 0x03, 0x64, 0xCC, 0x8C, + 0xCD, 0x03, 0x64, 0xCC, 0xA3, 0xB9, 0x03, 0x64, + 0xCC, 0xA7, 0xA9, 0x03, 0x64, 0xCC, 0xAD, 0xB9, + // Bytes 3300 - 333f + 0x03, 0x64, 0xCC, 0xB1, 0xB9, 0x03, 0x65, 0xCC, + 0x80, 0xCD, 0x03, 0x65, 0xCC, 0x81, 0xCD, 0x03, + 0x65, 0xCC, 0x83, 0xCD, 0x03, 0x65, 0xCC, 0x86, + 0xCD, 0x03, 0x65, 0xCC, 0x87, 0xCD, 0x03, 0x65, + 0xCC, 0x88, 0xCD, 0x03, 0x65, 0xCC, 0x89, 0xCD, + 0x03, 0x65, 0xCC, 0x8C, 0xCD, 0x03, 0x65, 0xCC, + 0x8F, 0xCD, 0x03, 0x65, 0xCC, 0x91, 0xCD, 0x03, + 0x65, 0xCC, 0xA8, 0xA9, 0x03, 0x65, 0xCC, 0xAD, + // Bytes 3340 - 337f + 0xB9, 0x03, 0x65, 0xCC, 0xB0, 0xB9, 0x03, 0x66, + 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x81, 0xCD, + 0x03, 0x67, 0xCC, 0x82, 0xCD, 0x03, 0x67, 0xCC, + 0x84, 0xCD, 0x03, 0x67, 0xCC, 0x86, 0xCD, 0x03, + 0x67, 0xCC, 0x87, 0xCD, 0x03, 0x67, 0xCC, 0x8C, + 0xCD, 0x03, 0x67, 0xCC, 0xA7, 0xA9, 0x03, 0x68, + 0xCC, 0x82, 0xCD, 0x03, 0x68, 0xCC, 0x87, 0xCD, + 0x03, 0x68, 0xCC, 0x88, 0xCD, 0x03, 0x68, 0xCC, + // Bytes 3380 - 33bf + 0x8C, 0xCD, 0x03, 0x68, 0xCC, 0xA3, 0xB9, 0x03, + 0x68, 0xCC, 0xA7, 0xA9, 0x03, 0x68, 0xCC, 0xAE, + 0xB9, 0x03, 0x68, 0xCC, 0xB1, 0xB9, 0x03, 0x69, + 0xCC, 0x80, 0xCD, 0x03, 0x69, 0xCC, 0x81, 0xCD, + 0x03, 0x69, 0xCC, 0x82, 0xCD, 0x03, 0x69, 0xCC, + 0x83, 0xCD, 0x03, 0x69, 0xCC, 0x84, 0xCD, 0x03, + 0x69, 0xCC, 0x86, 0xCD, 0x03, 0x69, 0xCC, 0x89, + 0xCD, 0x03, 0x69, 0xCC, 0x8C, 0xCD, 0x03, 0x69, + // Bytes 33c0 - 33ff + 0xCC, 0x8F, 0xCD, 0x03, 0x69, 0xCC, 0x91, 0xCD, + 0x03, 0x69, 0xCC, 0xA3, 0xB9, 0x03, 0x69, 0xCC, + 0xA8, 0xA9, 0x03, 0x69, 0xCC, 0xB0, 0xB9, 0x03, + 0x6A, 0xCC, 0x82, 0xCD, 0x03, 0x6A, 0xCC, 0x8C, + 0xCD, 0x03, 0x6B, 0xCC, 0x81, 0xCD, 0x03, 0x6B, + 0xCC, 0x8C, 0xCD, 0x03, 0x6B, 0xCC, 0xA3, 0xB9, + 0x03, 0x6B, 0xCC, 0xA7, 0xA9, 0x03, 0x6B, 0xCC, + 0xB1, 0xB9, 0x03, 0x6C, 0xCC, 0x81, 0xCD, 0x03, + // Bytes 3400 - 343f + 0x6C, 0xCC, 0x8C, 0xCD, 0x03, 0x6C, 0xCC, 0xA7, + 0xA9, 0x03, 0x6C, 0xCC, 0xAD, 0xB9, 0x03, 0x6C, + 0xCC, 0xB1, 0xB9, 0x03, 0x6D, 0xCC, 0x81, 0xCD, + 0x03, 0x6D, 0xCC, 0x87, 0xCD, 0x03, 0x6D, 0xCC, + 0xA3, 0xB9, 0x03, 0x6E, 0xCC, 0x80, 0xCD, 0x03, + 0x6E, 0xCC, 0x81, 0xCD, 0x03, 0x6E, 0xCC, 0x83, + 0xCD, 0x03, 0x6E, 0xCC, 0x87, 0xCD, 0x03, 0x6E, + 0xCC, 0x8C, 0xCD, 0x03, 0x6E, 0xCC, 0xA3, 0xB9, + // Bytes 3440 - 347f + 0x03, 0x6E, 0xCC, 0xA7, 0xA9, 0x03, 0x6E, 0xCC, + 0xAD, 0xB9, 0x03, 0x6E, 0xCC, 0xB1, 0xB9, 0x03, + 0x6F, 0xCC, 0x80, 0xCD, 0x03, 0x6F, 0xCC, 0x81, + 0xCD, 0x03, 0x6F, 0xCC, 0x86, 0xCD, 0x03, 0x6F, + 0xCC, 0x89, 0xCD, 0x03, 0x6F, 0xCC, 0x8B, 0xCD, + 0x03, 0x6F, 0xCC, 0x8C, 0xCD, 0x03, 0x6F, 0xCC, + 0x8F, 0xCD, 0x03, 0x6F, 0xCC, 0x91, 0xCD, 0x03, + 0x70, 0xCC, 0x81, 0xCD, 0x03, 0x70, 0xCC, 0x87, + // Bytes 3480 - 34bf + 0xCD, 0x03, 0x72, 0xCC, 0x81, 0xCD, 0x03, 0x72, + 0xCC, 0x87, 0xCD, 0x03, 0x72, 0xCC, 0x8C, 0xCD, + 0x03, 0x72, 0xCC, 0x8F, 0xCD, 0x03, 0x72, 0xCC, + 0x91, 0xCD, 0x03, 0x72, 0xCC, 0xA7, 0xA9, 0x03, + 0x72, 0xCC, 0xB1, 0xB9, 0x03, 0x73, 0xCC, 0x82, + 0xCD, 0x03, 0x73, 0xCC, 0x87, 0xCD, 0x03, 0x73, + 0xCC, 0xA6, 0xB9, 0x03, 0x73, 0xCC, 0xA7, 0xA9, + 0x03, 0x74, 0xCC, 0x87, 0xCD, 0x03, 0x74, 0xCC, + // Bytes 34c0 - 34ff + 0x88, 0xCD, 0x03, 0x74, 0xCC, 0x8C, 0xCD, 0x03, + 0x74, 0xCC, 0xA3, 0xB9, 0x03, 0x74, 0xCC, 0xA6, + 0xB9, 0x03, 0x74, 0xCC, 0xA7, 0xA9, 0x03, 0x74, + 0xCC, 0xAD, 0xB9, 0x03, 0x74, 0xCC, 0xB1, 0xB9, + 0x03, 0x75, 0xCC, 0x80, 0xCD, 0x03, 0x75, 0xCC, + 0x81, 0xCD, 0x03, 0x75, 0xCC, 0x82, 0xCD, 0x03, + 0x75, 0xCC, 0x86, 0xCD, 0x03, 0x75, 0xCC, 0x89, + 0xCD, 0x03, 0x75, 0xCC, 0x8A, 0xCD, 0x03, 0x75, + // Bytes 3500 - 353f + 0xCC, 0x8B, 0xCD, 0x03, 0x75, 0xCC, 0x8C, 0xCD, + 0x03, 0x75, 0xCC, 0x8F, 0xCD, 0x03, 0x75, 0xCC, + 0x91, 0xCD, 0x03, 0x75, 0xCC, 0xA3, 0xB9, 0x03, + 0x75, 0xCC, 0xA4, 0xB9, 0x03, 0x75, 0xCC, 0xA8, + 0xA9, 0x03, 0x75, 0xCC, 0xAD, 0xB9, 0x03, 0x75, + 0xCC, 0xB0, 0xB9, 0x03, 0x76, 0xCC, 0x83, 0xCD, + 0x03, 0x76, 0xCC, 0xA3, 0xB9, 0x03, 0x77, 0xCC, + 0x80, 0xCD, 0x03, 0x77, 0xCC, 0x81, 0xCD, 0x03, + // Bytes 3540 - 357f + 0x77, 0xCC, 0x82, 0xCD, 0x03, 0x77, 0xCC, 0x87, + 0xCD, 0x03, 0x77, 0xCC, 0x88, 0xCD, 0x03, 0x77, + 0xCC, 0x8A, 0xCD, 0x03, 0x77, 0xCC, 0xA3, 0xB9, + 0x03, 0x78, 0xCC, 0x87, 0xCD, 0x03, 0x78, 0xCC, + 0x88, 0xCD, 0x03, 0x79, 0xCC, 0x80, 0xCD, 0x03, + 0x79, 0xCC, 0x81, 0xCD, 0x03, 0x79, 0xCC, 0x82, + 0xCD, 0x03, 0x79, 0xCC, 0x83, 0xCD, 0x03, 0x79, + 0xCC, 0x84, 0xCD, 0x03, 0x79, 0xCC, 0x87, 0xCD, + // Bytes 3580 - 35bf + 0x03, 0x79, 0xCC, 0x88, 0xCD, 0x03, 0x79, 0xCC, + 0x89, 0xCD, 0x03, 0x79, 0xCC, 0x8A, 0xCD, 0x03, + 0x79, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, 0x81, + 0xCD, 0x03, 0x7A, 0xCC, 0x82, 0xCD, 0x03, 0x7A, + 0xCC, 0x87, 0xCD, 0x03, 0x7A, 0xCC, 0x8C, 0xCD, + 0x03, 0x7A, 0xCC, 0xA3, 0xB9, 0x03, 0x7A, 0xCC, + 0xB1, 0xB9, 0x04, 0xC2, 0xA8, 0xCC, 0x80, 0xCE, + 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x04, 0xC2, + // Bytes 35c0 - 35ff + 0xA8, 0xCD, 0x82, 0xCE, 0x04, 0xC3, 0x86, 0xCC, + 0x81, 0xCD, 0x04, 0xC3, 0x86, 0xCC, 0x84, 0xCD, + 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xCD, 0x04, 0xC3, + 0xA6, 0xCC, 0x81, 0xCD, 0x04, 0xC3, 0xA6, 0xCC, + 0x84, 0xCD, 0x04, 0xC3, 0xB8, 0xCC, 0x81, 0xCD, + 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xCD, 0x04, 0xC6, + 0xB7, 0xCC, 0x8C, 0xCD, 0x04, 0xCA, 0x92, 0xCC, + 0x8C, 0xCD, 0x04, 0xCE, 0x91, 0xCC, 0x80, 0xCD, + // Bytes 3600 - 363f + 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xCD, 0x04, 0xCE, + 0x91, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0x91, 0xCC, + 0x86, 0xCD, 0x04, 0xCE, 0x91, 0xCD, 0x85, 0xDD, + 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xCE, + 0x95, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0x97, 0xCC, + 0x80, 0xCD, 0x04, 0xCE, 0x97, 0xCC, 0x81, 0xCD, + 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xDD, 0x04, 0xCE, + 0x99, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0x99, 0xCC, + // Bytes 3640 - 367f + 0x81, 0xCD, 0x04, 0xCE, 0x99, 0xCC, 0x84, 0xCD, + 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xCD, 0x04, 0xCE, + 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, + 0x80, 0xCD, 0x04, 0xCE, 0x9F, 0xCC, 0x81, 0xCD, + 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xCD, 0x04, 0xCE, + 0xA5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, + 0x81, 0xCD, 0x04, 0xCE, 0xA5, 0xCC, 0x84, 0xCD, + 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xCD, 0x04, 0xCE, + // Bytes 3680 - 36bf + 0xA5, 0xCC, 0x88, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, + 0x80, 0xCD, 0x04, 0xCE, 0xA9, 0xCC, 0x81, 0xCD, + 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xDD, 0x04, 0xCE, + 0xB1, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB1, 0xCC, + 0x86, 0xCD, 0x04, 0xCE, 0xB1, 0xCD, 0x85, 0xDD, + 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xCD, 0x04, 0xCE, + 0xB5, 0xCC, 0x81, 0xCD, 0x04, 0xCE, 0xB7, 0xCD, + 0x85, 0xDD, 0x04, 0xCE, 0xB9, 0xCC, 0x80, 0xCD, + // Bytes 36c0 - 36ff + 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x04, 0xCE, + 0xB9, 0xCC, 0x84, 0xCD, 0x04, 0xCE, 0xB9, 0xCC, + 0x86, 0xCD, 0x04, 0xCE, 0xB9, 0xCD, 0x82, 0xCD, + 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xCD, 0x04, 0xCE, + 0xBF, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x81, 0xCC, + 0x93, 0xCD, 0x04, 0xCF, 0x81, 0xCC, 0x94, 0xCD, + 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xCD, 0x04, 0xCF, + 0x85, 0xCC, 0x81, 0xCD, 0x04, 0xCF, 0x85, 0xCC, + // Bytes 3700 - 373f + 0x84, 0xCD, 0x04, 0xCF, 0x85, 0xCC, 0x86, 0xCD, + 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xCD, 0x04, 0xCF, + 0x89, 0xCD, 0x85, 0xDD, 0x04, 0xCF, 0x92, 0xCC, + 0x81, 0xCD, 0x04, 0xCF, 0x92, 0xCC, 0x88, 0xCD, + 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xCD, 0x04, 0xD0, + 0x90, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x90, 0xCC, + 0x88, 0xCD, 0x04, 0xD0, 0x93, 0xCC, 0x81, 0xCD, + 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xCD, 0x04, 0xD0, + // Bytes 3740 - 377f + 0x95, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0x95, 0xCC, + 0x88, 0xCD, 0x04, 0xD0, 0x96, 0xCC, 0x86, 0xCD, + 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD0, + 0x97, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x98, 0xCC, + 0x80, 0xCD, 0x04, 0xD0, 0x98, 0xCC, 0x84, 0xCD, + 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xCD, 0x04, 0xD0, + 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0x9A, 0xCC, + 0x81, 0xCD, 0x04, 0xD0, 0x9E, 0xCC, 0x88, 0xCD, + // Bytes 3780 - 37bf + 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xCD, 0x04, 0xD0, + 0xA3, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, + 0x88, 0xCD, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, 0xCD, + 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xCD, 0x04, 0xD0, + 0xAB, 0xCC, 0x88, 0xCD, 0x04, 0xD0, 0xAD, 0xCC, + 0x88, 0xCD, 0x04, 0xD0, 0xB0, 0xCC, 0x86, 0xCD, + 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xCD, 0x04, 0xD0, + 0xB3, 0xCC, 0x81, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, + // Bytes 37c0 - 37ff + 0x80, 0xCD, 0x04, 0xD0, 0xB5, 0xCC, 0x86, 0xCD, + 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xCD, 0x04, 0xD0, + 0xB6, 0xCC, 0x86, 0xCD, 0x04, 0xD0, 0xB6, 0xCC, + 0x88, 0xCD, 0x04, 0xD0, 0xB7, 0xCC, 0x88, 0xCD, + 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xCD, 0x04, 0xD0, + 0xB8, 0xCC, 0x84, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, + 0x86, 0xCD, 0x04, 0xD0, 0xB8, 0xCC, 0x88, 0xCD, + 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xCD, 0x04, 0xD0, + // Bytes 3800 - 383f + 0xBE, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0x83, 0xCC, + 0x84, 0xCD, 0x04, 0xD1, 0x83, 0xCC, 0x86, 0xCD, + 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xCD, 0x04, 0xD1, + 0x83, 0xCC, 0x8B, 0xCD, 0x04, 0xD1, 0x87, 0xCC, + 0x88, 0xCD, 0x04, 0xD1, 0x8B, 0xCC, 0x88, 0xCD, + 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xCD, 0x04, 0xD1, + 0x96, 0xCC, 0x88, 0xCD, 0x04, 0xD1, 0xB4, 0xCC, + 0x8F, 0xCD, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, 0xCD, + // Bytes 3840 - 387f + 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xCD, 0x04, 0xD3, + 0x99, 0xCC, 0x88, 0xCD, 0x04, 0xD3, 0xA8, 0xCC, + 0x88, 0xCD, 0x04, 0xD3, 0xA9, 0xCC, 0x88, 0xCD, + 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xCD, 0x04, 0xD8, + 0xA7, 0xD9, 0x94, 0xCD, 0x04, 0xD8, 0xA7, 0xD9, + 0x95, 0xB9, 0x04, 0xD9, 0x88, 0xD9, 0x94, 0xCD, + 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x04, 0xDB, + 0x81, 0xD9, 0x94, 0xCD, 0x04, 0xDB, 0x92, 0xD9, + // Bytes 3880 - 38bf + 0x94, 0xCD, 0x04, 0xDB, 0x95, 0xD9, 0x94, 0xCD, + 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, + 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x41, + 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x41, 0xCC, + 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x41, 0xCC, 0x86, + 0xCC, 0x80, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, + 0x81, 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x83, + 0xCE, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xCE, + // Bytes 38c0 - 38ff + 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, + 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x41, + 0xCC, 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x41, 0xCC, + 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x41, 0xCC, 0xA3, + 0xCC, 0x86, 0xCE, 0x05, 0x43, 0xCC, 0xA7, 0xCC, + 0x81, 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x80, + 0xCE, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xCE, + 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, + // Bytes 3900 - 393f + 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x45, + 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x45, 0xCC, + 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x45, 0xCC, 0xA3, + 0xCC, 0x82, 0xCE, 0x05, 0x45, 0xCC, 0xA7, 0xCC, + 0x86, 0xCE, 0x05, 0x49, 0xCC, 0x88, 0xCC, 0x81, + 0xCE, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, + 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, + 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x4F, + // Bytes 3940 - 397f + 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x4F, 0xCC, + 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x4F, 0xCC, 0x83, + 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, + 0x84, 0xCE, 0x05, 0x4F, 0xCC, 0x83, 0xCC, 0x88, + 0xCE, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, + 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, + 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x4F, + 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x4F, 0xCC, + // Bytes 3980 - 39bf + 0x9B, 0xCC, 0x80, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, + 0xCC, 0x81, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, + 0x83, 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0x89, + 0xCE, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, + 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, + 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x52, + 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x53, 0xCC, + 0x81, 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0x8C, + // Bytes 39c0 - 39ff + 0xCC, 0x87, 0xCE, 0x05, 0x53, 0xCC, 0xA3, 0xCC, + 0x87, 0xCE, 0x05, 0x55, 0xCC, 0x83, 0xCC, 0x81, + 0xCE, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xCE, + 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, + 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x55, + 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x55, 0xCC, + 0x88, 0xCC, 0x8C, 0xCE, 0x05, 0x55, 0xCC, 0x9B, + 0xCC, 0x80, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, + // Bytes 3a00 - 3a3f + 0x81, 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x83, + 0xCE, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, + 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, + 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x61, + 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, + 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x61, 0xCC, 0x82, + 0xCC, 0x89, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, + 0x80, 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x81, + // Bytes 3a40 - 3a7f + 0xCE, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xCE, + 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCE, 0x05, + 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x61, + 0xCC, 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x61, 0xCC, + 0x8A, 0xCC, 0x81, 0xCE, 0x05, 0x61, 0xCC, 0xA3, + 0xCC, 0x82, 0xCE, 0x05, 0x61, 0xCC, 0xA3, 0xCC, + 0x86, 0xCE, 0x05, 0x63, 0xCC, 0xA7, 0xCC, 0x81, + 0xCE, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xCE, + // Bytes 3a80 - 3abf + 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, + 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x65, + 0xCC, 0x82, 0xCC, 0x89, 0xCE, 0x05, 0x65, 0xCC, + 0x84, 0xCC, 0x80, 0xCE, 0x05, 0x65, 0xCC, 0x84, + 0xCC, 0x81, 0xCE, 0x05, 0x65, 0xCC, 0xA3, 0xCC, + 0x82, 0xCE, 0x05, 0x65, 0xCC, 0xA7, 0xCC, 0x86, + 0xCE, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xCE, + 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCE, 0x05, + // Bytes 3ac0 - 3aff + 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCE, 0x05, 0x6F, + 0xCC, 0x82, 0xCC, 0x81, 0xCE, 0x05, 0x6F, 0xCC, + 0x82, 0xCC, 0x83, 0xCE, 0x05, 0x6F, 0xCC, 0x82, + 0xCC, 0x89, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, + 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x84, + 0xCE, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xCE, + 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCE, 0x05, + 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCE, 0x05, 0x6F, + // Bytes 3b00 - 3b3f + 0xCC, 0x87, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, + 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, + 0xCC, 0x80, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, + 0x81, 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x83, + 0xCE, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, + 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, + 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCE, 0x05, 0x6F, + 0xCC, 0xA8, 0xCC, 0x84, 0xCE, 0x05, 0x72, 0xCC, + // Bytes 3b40 - 3b7f + 0xA3, 0xCC, 0x84, 0xCE, 0x05, 0x73, 0xCC, 0x81, + 0xCC, 0x87, 0xCE, 0x05, 0x73, 0xCC, 0x8C, 0xCC, + 0x87, 0xCE, 0x05, 0x73, 0xCC, 0xA3, 0xCC, 0x87, + 0xCE, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xCE, + 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCE, 0x05, + 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x05, 0x75, + 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x05, 0x75, 0xCC, + 0x88, 0xCC, 0x84, 0xCE, 0x05, 0x75, 0xCC, 0x88, + // Bytes 3b80 - 3bbf + 0xCC, 0x8C, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, + 0x80, 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x81, + 0xCE, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xCE, + 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCE, 0x05, + 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xBA, 0x05, 0xE1, + 0xBE, 0xBF, 0xCC, 0x80, 0xCE, 0x05, 0xE1, 0xBE, + 0xBF, 0xCC, 0x81, 0xCE, 0x05, 0xE1, 0xBE, 0xBF, + 0xCD, 0x82, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, + // Bytes 3bc0 - 3bff + 0x80, 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, 0x81, + 0xCE, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0xCE, + 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, + 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x92, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, 0xB8, + // Bytes 3c00 - 3c3f + 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, + 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x83, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0x05, + // Bytes 3c40 - 3c7f + 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, + 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB3, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, 0x05, + // Bytes 3c80 - 3cbf + 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, + 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x83, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + // Bytes 3cc0 - 3cff + 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, + 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xAB, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, 0x06, + 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06, + // Bytes 3d00 - 3d3f + 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + // Bytes 3d40 - 3d7f + 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06, + 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06, + 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + // Bytes 3d80 - 3dbf + 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06, + 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06, + // Bytes 3dc0 - 3dff + 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06, + // Bytes 3e00 - 3e3f + 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06, + 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + // Bytes 3e40 - 3e7f + 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06, + 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + // Bytes 3e80 - 3ebf + 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x06, + 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x06, + // Bytes 3ec0 - 3eff + 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x06, + 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDE, 0x06, + 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDE, 0x06, + 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDE, 0x06, + 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDE, 0x06, + 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDE, 0x06, + 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x0D, 0x06, + 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x0D, 0x06, + // Bytes 3f00 - 3f3f + 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x0D, 0x06, + 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x89, 0x06, + 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x15, 0x06, + 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x11, 0x06, + // Bytes 3f40 - 3f7f + 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x11, 0x06, + // Bytes 3f80 - 3fbf + 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06, + // Bytes 3fc0 - 3fff + 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x11, 0x06, + // Bytes 4000 - 403f + 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x11, 0x06, + // Bytes 4040 - 407f + 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x11, 0x06, + // Bytes 4080 - 40bf + 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x11, 0x06, + 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x11, 0x06, + // Bytes 40c0 - 40ff + 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x11, 0x06, + 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x11, 0x08, + 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x93, + // Bytes 4100 - 413f + 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x91, + 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, + 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x93, + 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, + 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, + 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, + // Bytes 4140 - 417f + 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, 0xCC, 0x94, + 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0x97, + 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, + 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x93, + 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xA9, + // Bytes 4180 - 41bf + 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, + 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x93, + 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, + 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, + 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, + // Bytes 41c0 - 41ff + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, 0xCC, 0x94, + 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB1, + 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, + 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, + 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x93, + 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, 0xCE, 0xB7, + 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, + // Bytes 4200 - 423f + 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, + 0xDF, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, + 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x93, + 0xCC, 0x80, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, + 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, + 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, + 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, + 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, 0xCC, 0x94, + // Bytes 4240 - 427f + 0xCC, 0x81, 0xCD, 0x85, 0xDF, 0x08, 0xCF, 0x89, + 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDF, 0x08, + 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, 0xBA, + 0x0D, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, 0x91, + 0x82, 0xBA, 0x0D, 0x08, 0xF0, 0x91, 0x82, 0xA5, + 0xF0, 0x91, 0x82, 0xBA, 0x0D, 0x42, 0xC2, 0xB4, + 0x01, 0x43, 0x20, 0xCC, 0x81, 0xCD, 0x43, 0x20, + 0xCC, 0x83, 0xCD, 0x43, 0x20, 0xCC, 0x84, 0xCD, + // Bytes 4280 - 42bf + 0x43, 0x20, 0xCC, 0x85, 0xCD, 0x43, 0x20, 0xCC, + 0x86, 0xCD, 0x43, 0x20, 0xCC, 0x87, 0xCD, 0x43, + 0x20, 0xCC, 0x88, 0xCD, 0x43, 0x20, 0xCC, 0x8A, + 0xCD, 0x43, 0x20, 0xCC, 0x8B, 0xCD, 0x43, 0x20, + 0xCC, 0x93, 0xCD, 0x43, 0x20, 0xCC, 0x94, 0xCD, + 0x43, 0x20, 0xCC, 0xA7, 0xA9, 0x43, 0x20, 0xCC, + 0xA8, 0xA9, 0x43, 0x20, 0xCC, 0xB3, 0xB9, 0x43, + 0x20, 0xCD, 0x82, 0xCD, 0x43, 0x20, 0xCD, 0x85, + // Bytes 42c0 - 42ff + 0xDD, 0x43, 0x20, 0xD9, 0x8B, 0x5D, 0x43, 0x20, + 0xD9, 0x8C, 0x61, 0x43, 0x20, 0xD9, 0x8D, 0x65, + 0x43, 0x20, 0xD9, 0x8E, 0x69, 0x43, 0x20, 0xD9, + 0x8F, 0x6D, 0x43, 0x20, 0xD9, 0x90, 0x71, 0x43, + 0x20, 0xD9, 0x91, 0x75, 0x43, 0x20, 0xD9, 0x92, + 0x79, 0x43, 0x41, 0xCC, 0x8A, 0xCD, 0x43, 0x73, + 0xCC, 0x87, 0xCD, 0x44, 0x20, 0xE3, 0x82, 0x99, + 0x11, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x11, 0x44, + // Bytes 4300 - 433f + 0xC2, 0xA8, 0xCC, 0x81, 0xCE, 0x44, 0xCE, 0x91, + 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x95, 0xCC, 0x81, + 0xCD, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xCD, 0x44, + 0xCE, 0x99, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0x9F, + 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x81, + 0xCD, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xCD, 0x44, + 0xCE, 0xA9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB1, + 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xB5, 0xCC, 0x81, + // Bytes 4340 - 437f + 0xCD, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x44, + 0xCE, 0xB9, 0xCC, 0x81, 0xCD, 0x44, 0xCE, 0xBF, + 0xCC, 0x81, 0xCD, 0x44, 0xCF, 0x85, 0xCC, 0x81, + 0xCD, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x44, + 0xD7, 0x90, 0xD6, 0xB7, 0x35, 0x44, 0xD7, 0x90, + 0xD6, 0xB8, 0x39, 0x44, 0xD7, 0x90, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x45, 0x44, + 0xD7, 0x91, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x92, + // Bytes 4380 - 43bf + 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x93, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x45, 0x44, + 0xD7, 0x95, 0xD6, 0xB9, 0x3D, 0x44, 0xD7, 0x95, + 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x96, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x45, 0x44, + 0xD7, 0x99, 0xD6, 0xB4, 0x29, 0x44, 0xD7, 0x99, + 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9A, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x45, 0x44, + // Bytes 43c0 - 43ff + 0xD7, 0x9B, 0xD6, 0xBF, 0x4D, 0x44, 0xD7, 0x9C, + 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0x9E, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x45, 0x44, + 0xD7, 0xA1, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA3, + 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x4D, 0x44, + 0xD7, 0xA6, 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA7, + 0xD6, 0xBC, 0x45, 0x44, 0xD7, 0xA8, 0xD6, 0xBC, + // Bytes 4400 - 443f + 0x45, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x45, 0x44, + 0xD7, 0xA9, 0xD7, 0x81, 0x51, 0x44, 0xD7, 0xA9, + 0xD7, 0x82, 0x55, 0x44, 0xD7, 0xAA, 0xD6, 0xBC, + 0x45, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x35, 0x44, + 0xD8, 0xA7, 0xD9, 0x8B, 0x5D, 0x44, 0xD8, 0xA7, + 0xD9, 0x93, 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x94, + 0xCD, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB9, 0x44, + 0xD8, 0xB0, 0xD9, 0xB0, 0x7D, 0x44, 0xD8, 0xB1, + // Bytes 4440 - 447f + 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x80, 0xD9, 0x8B, + 0x5D, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x69, 0x44, + 0xD9, 0x80, 0xD9, 0x8F, 0x6D, 0x44, 0xD9, 0x80, + 0xD9, 0x90, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x91, + 0x75, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x79, 0x44, + 0xD9, 0x87, 0xD9, 0xB0, 0x7D, 0x44, 0xD9, 0x88, + 0xD9, 0x94, 0xCD, 0x44, 0xD9, 0x89, 0xD9, 0xB0, + 0x7D, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xCD, 0x44, + // Bytes 4480 - 44bf + 0xDB, 0x92, 0xD9, 0x94, 0xCD, 0x44, 0xDB, 0x95, + 0xD9, 0x94, 0xCD, 0x45, 0x20, 0xCC, 0x88, 0xCC, + 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81, + 0xCE, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xCE, + 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x45, + 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x45, 0x20, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x45, 0x20, 0xCC, + 0x94, 0xCC, 0x80, 0xCE, 0x45, 0x20, 0xCC, 0x94, + // Bytes 44c0 - 44ff + 0xCC, 0x81, 0xCE, 0x45, 0x20, 0xCC, 0x94, 0xCD, + 0x82, 0xCE, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91, + 0x76, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x76, + 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x76, 0x45, + 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x76, 0x45, 0x20, + 0xD9, 0x90, 0xD9, 0x91, 0x76, 0x45, 0x20, 0xD9, + 0x91, 0xD9, 0xB0, 0x7E, 0x45, 0xE2, 0xAB, 0x9D, + 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, 0x88, + // Bytes 4500 - 453f + 0xCC, 0x81, 0xCE, 0x46, 0xCF, 0x85, 0xCC, 0x88, + 0xCC, 0x81, 0xCE, 0x46, 0xD7, 0xA9, 0xD6, 0xBC, + 0xD7, 0x81, 0x52, 0x46, 0xD7, 0xA9, 0xD6, 0xBC, + 0xD7, 0x82, 0x56, 0x46, 0xD9, 0x80, 0xD9, 0x8E, + 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x8F, + 0xD9, 0x91, 0x76, 0x46, 0xD9, 0x80, 0xD9, 0x90, + 0xD9, 0x91, 0x76, 0x46, 0xE0, 0xA4, 0x95, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x96, 0xE0, + // Bytes 4540 - 457f + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x97, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0x9C, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA1, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xA2, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAB, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA4, 0xAF, 0xE0, + 0xA4, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA1, 0xE0, + 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xA2, 0xE0, + // Bytes 4580 - 45bf + 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA6, 0xAF, 0xE0, + 0xA6, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x96, 0xE0, + 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x97, 0xE0, + 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0x9C, 0xE0, + 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xAB, 0xE0, + 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB2, 0xE0, + 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xA8, 0xB8, 0xE0, + 0xA8, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA1, 0xE0, + // Bytes 45c0 - 45ff + 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xAC, 0xA2, 0xE0, + 0xAC, 0xBC, 0x0D, 0x46, 0xE0, 0xBE, 0xB2, 0xE0, + 0xBE, 0x80, 0xA1, 0x46, 0xE0, 0xBE, 0xB3, 0xE0, + 0xBE, 0x80, 0xA1, 0x46, 0xE3, 0x83, 0x86, 0xE3, + 0x82, 0x99, 0x11, 0x48, 0xF0, 0x9D, 0x85, 0x97, + 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, 0xF0, 0x9D, + 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xB1, 0x48, + 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, + // Bytes 4600 - 463f + 0xB1, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, + 0x85, 0xA5, 0xB1, 0x49, 0xE0, 0xBE, 0xB2, 0xE0, + 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x49, 0xE0, + 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, + 0xA2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, + 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, + 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, + 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, + // Bytes 4640 - 467f + 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, + 0x85, 0xB0, 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, + 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1, + 0xB2, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, + 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xB2, 0x4C, + 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, + 0xF0, 0x9D, 0x85, 0xAE, 0xB2, 0x4C, 0xF0, 0x9D, + 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, + // Bytes 4680 - 46bf + 0x85, 0xAF, 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, + 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, + 0xB2, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, + 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xB2, 0x83, + 0x41, 0xCC, 0x82, 0xCD, 0x83, 0x41, 0xCC, 0x86, + 0xCD, 0x83, 0x41, 0xCC, 0x87, 0xCD, 0x83, 0x41, + 0xCC, 0x88, 0xCD, 0x83, 0x41, 0xCC, 0x8A, 0xCD, + 0x83, 0x41, 0xCC, 0xA3, 0xB9, 0x83, 0x43, 0xCC, + // Bytes 46c0 - 46ff + 0xA7, 0xA9, 0x83, 0x45, 0xCC, 0x82, 0xCD, 0x83, + 0x45, 0xCC, 0x84, 0xCD, 0x83, 0x45, 0xCC, 0xA3, + 0xB9, 0x83, 0x45, 0xCC, 0xA7, 0xA9, 0x83, 0x49, + 0xCC, 0x88, 0xCD, 0x83, 0x4C, 0xCC, 0xA3, 0xB9, + 0x83, 0x4F, 0xCC, 0x82, 0xCD, 0x83, 0x4F, 0xCC, + 0x83, 0xCD, 0x83, 0x4F, 0xCC, 0x84, 0xCD, 0x83, + 0x4F, 0xCC, 0x87, 0xCD, 0x83, 0x4F, 0xCC, 0x88, + 0xCD, 0x83, 0x4F, 0xCC, 0x9B, 0xB1, 0x83, 0x4F, + // Bytes 4700 - 473f + 0xCC, 0xA3, 0xB9, 0x83, 0x4F, 0xCC, 0xA8, 0xA9, + 0x83, 0x52, 0xCC, 0xA3, 0xB9, 0x83, 0x53, 0xCC, + 0x81, 0xCD, 0x83, 0x53, 0xCC, 0x8C, 0xCD, 0x83, + 0x53, 0xCC, 0xA3, 0xB9, 0x83, 0x55, 0xCC, 0x83, + 0xCD, 0x83, 0x55, 0xCC, 0x84, 0xCD, 0x83, 0x55, + 0xCC, 0x88, 0xCD, 0x83, 0x55, 0xCC, 0x9B, 0xB1, + 0x83, 0x61, 0xCC, 0x82, 0xCD, 0x83, 0x61, 0xCC, + 0x86, 0xCD, 0x83, 0x61, 0xCC, 0x87, 0xCD, 0x83, + // Bytes 4740 - 477f + 0x61, 0xCC, 0x88, 0xCD, 0x83, 0x61, 0xCC, 0x8A, + 0xCD, 0x83, 0x61, 0xCC, 0xA3, 0xB9, 0x83, 0x63, + 0xCC, 0xA7, 0xA9, 0x83, 0x65, 0xCC, 0x82, 0xCD, + 0x83, 0x65, 0xCC, 0x84, 0xCD, 0x83, 0x65, 0xCC, + 0xA3, 0xB9, 0x83, 0x65, 0xCC, 0xA7, 0xA9, 0x83, + 0x69, 0xCC, 0x88, 0xCD, 0x83, 0x6C, 0xCC, 0xA3, + 0xB9, 0x83, 0x6F, 0xCC, 0x82, 0xCD, 0x83, 0x6F, + 0xCC, 0x83, 0xCD, 0x83, 0x6F, 0xCC, 0x84, 0xCD, + // Bytes 4780 - 47bf + 0x83, 0x6F, 0xCC, 0x87, 0xCD, 0x83, 0x6F, 0xCC, + 0x88, 0xCD, 0x83, 0x6F, 0xCC, 0x9B, 0xB1, 0x83, + 0x6F, 0xCC, 0xA3, 0xB9, 0x83, 0x6F, 0xCC, 0xA8, + 0xA9, 0x83, 0x72, 0xCC, 0xA3, 0xB9, 0x83, 0x73, + 0xCC, 0x81, 0xCD, 0x83, 0x73, 0xCC, 0x8C, 0xCD, + 0x83, 0x73, 0xCC, 0xA3, 0xB9, 0x83, 0x75, 0xCC, + 0x83, 0xCD, 0x83, 0x75, 0xCC, 0x84, 0xCD, 0x83, + 0x75, 0xCC, 0x88, 0xCD, 0x83, 0x75, 0xCC, 0x9B, + // Bytes 47c0 - 47ff + 0xB1, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x84, + 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x95, + 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x95, 0xCC, 0x94, + 0xCD, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x84, + 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0x99, + 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0x99, 0xCC, 0x94, + 0xCD, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xCD, 0x84, + 0xCE, 0x9F, 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA5, + // Bytes 4800 - 483f + 0xCC, 0x94, 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x93, + 0xCD, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x84, + 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x84, 0xCE, 0xB1, + 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x93, + 0xCD, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x84, + 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x84, 0xCE, 0xB5, + 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB5, 0xCC, 0x94, + 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x84, + // Bytes 4840 - 487f + 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x84, 0xCE, 0xB7, + 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB7, 0xCC, 0x94, + 0xCD, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x84, + 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x84, 0xCE, 0xB9, + 0xCC, 0x93, 0xCD, 0x84, 0xCE, 0xB9, 0xCC, 0x94, + 0xCD, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xCD, 0x84, + 0xCE, 0xBF, 0xCC, 0x94, 0xCD, 0x84, 0xCF, 0x85, + 0xCC, 0x88, 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x93, + // Bytes 4880 - 48bf + 0xCD, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x84, + 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x84, 0xCF, 0x89, + 0xCC, 0x81, 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x93, + 0xCD, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x84, + 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x86, 0xCE, 0x91, + 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91, + 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x91, + // Bytes 48c0 - 48ff + 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x91, + 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x91, + 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97, + 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97, + 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0x97, + 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0x97, + 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0x97, + // Bytes 4900 - 493f + 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9, + 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9, + 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xA9, + 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xA9, + 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xA9, + 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1, + 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1, + // Bytes 4940 - 497f + 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB1, + 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB1, + 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB1, + 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7, + 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7, + 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCE, 0xB7, + // Bytes 4980 - 49bf + 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCE, 0xB7, + 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCE, 0xB7, + 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89, + 0xCC, 0x93, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89, + 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89, + 0xCC, 0x93, 0xCD, 0x82, 0xCE, 0x86, 0xCF, 0x89, + 0xCC, 0x94, 0xCC, 0x80, 0xCE, 0x86, 0xCF, 0x89, + 0xCC, 0x94, 0xCC, 0x81, 0xCE, 0x86, 0xCF, 0x89, + // Bytes 49c0 - 49ff + 0xCC, 0x94, 0xCD, 0x82, 0xCE, 0x42, 0xCC, 0x80, + 0xCD, 0x33, 0x42, 0xCC, 0x81, 0xCD, 0x33, 0x42, + 0xCC, 0x93, 0xCD, 0x33, 0x43, 0xE1, 0x85, 0xA1, + 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01, 0x00, + 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43, 0xE1, + 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA5, + 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01, 0x00, + 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43, 0xE1, + // Bytes 4a00 - 4a3f + 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA9, + 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01, 0x00, + 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43, 0xE1, + 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAD, + 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01, 0x00, + 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43, 0xE1, + 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB1, + 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01, 0x00, + // Bytes 4a40 - 4a7f + 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43, 0xE1, + 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB5, + 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01, 0x00, + 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43, 0xE1, + 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB0, + 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01, 0x00, + 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43, 0xE1, + 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB4, + // Bytes 4a80 - 4abf + 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01, 0x00, + 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0x33, 0x43, + 0xE3, 0x82, 0x99, 0x11, 0x04, 0x43, 0xE3, 0x82, + 0x9A, 0x11, 0x04, 0x46, 0xE0, 0xBD, 0xB1, 0xE0, + 0xBD, 0xB2, 0xA2, 0x27, 0x46, 0xE0, 0xBD, 0xB1, + 0xE0, 0xBD, 0xB4, 0xA6, 0x27, 0x46, 0xE0, 0xBD, + 0xB1, 0xE0, 0xBE, 0x80, 0xA2, 0x27, 0x00, 0x01, +} + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfcTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfcTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfcValues[c0] + } + i := nfcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfcTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfcTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfcValues[c0] + } + i := nfcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// nfcTrie. Total size: 10680 bytes (10.43 KiB). Checksum: a555db76d4becdd2. +type nfcTrie struct{} + +func newNfcTrie(i int) *nfcTrie { + return &nfcTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 46: + return uint16(nfcValues[n<<6+uint32(b)]) + default: + n -= 46 + return uint16(nfcSparse.lookup(n, b)) + } +} + +// nfcValues: 48 blocks, 3072 entries, 6144 bytes +// The third block is the zero block. +var nfcValues = [3072]uint16{ + // Block 0x0, offset 0x0 + 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, + // Block 0x1, offset 0x40 + 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, + 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, + 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, + 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, + 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, + 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, + 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, + 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, + 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, + 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3, + 0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012, + 0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b, + 0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4, + 0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c, + 0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c, + 0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a, + 0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767, + 0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776, + 0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea, + 0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580, + // Block 0x4, offset 0x100 + 0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf, + 0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd, + 0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec, + 0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319, + 0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350, + 0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369, + 0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5, + 0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd, + 0x130: 0x30a3, 0x134: 0x30cb, 0x135: 0x33d7, + 0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3, + 0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff, + // Block 0x5, offset 0x140 + 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f, + 0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436, + 0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463, + 0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a, + 0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4, + 0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1, + 0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad, + 0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9, + 0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f, + 0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e, + 0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0xa000, + // Block 0x6, offset 0x180 + 0x184: 0x8100, 0x185: 0x8100, + 0x186: 0x8100, + 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157, + 0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df, + 0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67, + 0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc, + 0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6, + 0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4, + 0x1b0: 0x33dc, 0x1b4: 0x303f, 0x1b5: 0x334b, + 0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d, + 0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d, + 0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3, + 0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490, + 0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d, + 0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc, + 0x1de: 0x3071, 0x1df: 0x337d, + 0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762, + 0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780, + 0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576, + // Block 0x8, offset 0x200 + 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133, + 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933, + 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933, + 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e, + 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e, + 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e, + 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e, + 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e, + 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101, + 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e, + 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133, + // Block 0x9, offset 0x240 + 0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937, + 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133, + 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133, + 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133, + 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136, + 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133, + 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133, + 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133, + 0x274: 0x0173, + 0x27a: 0x8100, + 0x27e: 0x0037, + // Block 0xa, offset 0x280 + 0x284: 0x8100, 0x285: 0x35b8, + 0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c, + 0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000, + 0x295: 0xa000, 0x297: 0xa000, + 0x299: 0xa000, + 0x29f: 0xa000, 0x2a1: 0xa000, + 0x2a5: 0xa000, 0x2a9: 0xa000, + 0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0, + 0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000, + 0x2b7: 0xa000, 0x2b9: 0xa000, + 0x2bf: 0xa000, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x3738, 0x2c1: 0x3744, 0x2c3: 0x3732, + 0x2c6: 0xa000, 0x2c7: 0x3720, + 0x2cc: 0x3774, 0x2cd: 0x375c, 0x2ce: 0x3786, 0x2d0: 0xa000, + 0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000, + 0x2d8: 0xa000, 0x2d9: 0x3768, 0x2da: 0xa000, + 0x2de: 0xa000, 0x2e3: 0xa000, + 0x2e7: 0xa000, + 0x2eb: 0xa000, 0x2ed: 0xa000, + 0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000, + 0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37ec, 0x2fa: 0xa000, + 0x2fe: 0xa000, + // Block 0xc, offset 0x300 + 0x301: 0x374a, 0x302: 0x37ce, + 0x310: 0x3726, 0x311: 0x37aa, + 0x312: 0x372c, 0x313: 0x37b0, 0x316: 0x373e, 0x317: 0x37c2, + 0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3840, 0x31b: 0x3846, 0x31c: 0x3750, 0x31d: 0x37d4, + 0x31e: 0x3756, 0x31f: 0x37da, 0x322: 0x3762, 0x323: 0x37e6, + 0x324: 0x376e, 0x325: 0x37f2, 0x326: 0x377a, 0x327: 0x37fe, 0x328: 0xa000, 0x329: 0xa000, + 0x32a: 0x384c, 0x32b: 0x3852, 0x32c: 0x37a4, 0x32d: 0x3828, 0x32e: 0x3780, 0x32f: 0x3804, + 0x330: 0x378c, 0x331: 0x3810, 0x332: 0x3792, 0x333: 0x3816, 0x334: 0x3798, 0x335: 0x381c, + 0x338: 0x379e, 0x339: 0x3822, + // Block 0xd, offset 0x340 + 0x351: 0x812e, + 0x352: 0x8133, 0x353: 0x8133, 0x354: 0x8133, 0x355: 0x8133, 0x356: 0x812e, 0x357: 0x8133, + 0x358: 0x8133, 0x359: 0x8133, 0x35a: 0x812f, 0x35b: 0x812e, 0x35c: 0x8133, 0x35d: 0x8133, + 0x35e: 0x8133, 0x35f: 0x8133, 0x360: 0x8133, 0x361: 0x8133, 0x362: 0x812e, 0x363: 0x812e, + 0x364: 0x812e, 0x365: 0x812e, 0x366: 0x812e, 0x367: 0x812e, 0x368: 0x8133, 0x369: 0x8133, + 0x36a: 0x812e, 0x36b: 0x8133, 0x36c: 0x8133, 0x36d: 0x812f, 0x36e: 0x8132, 0x36f: 0x8133, + 0x370: 0x8106, 0x371: 0x8107, 0x372: 0x8108, 0x373: 0x8109, 0x374: 0x810a, 0x375: 0x810b, + 0x376: 0x810c, 0x377: 0x810d, 0x378: 0x810e, 0x379: 0x810f, 0x37a: 0x810f, 0x37b: 0x8110, + 0x37c: 0x8111, 0x37d: 0x8112, 0x37f: 0x8113, + // Block 0xe, offset 0x380 + 0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8117, + 0x38c: 0x8118, 0x38d: 0x8119, 0x38e: 0x811a, 0x38f: 0x811b, 0x390: 0x811c, 0x391: 0x811d, + 0x392: 0x811e, 0x393: 0x9933, 0x394: 0x9933, 0x395: 0x992e, 0x396: 0x812e, 0x397: 0x8133, + 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x8133, 0x39b: 0x8133, 0x39c: 0x812e, 0x39d: 0x8133, + 0x39e: 0x8133, 0x39f: 0x812e, + 0x3b0: 0x811f, + // Block 0xf, offset 0x3c0 + 0x3d3: 0x812e, 0x3d4: 0x8133, 0x3d5: 0x8133, 0x3d6: 0x8133, 0x3d7: 0x8133, + 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x8133, 0x3dd: 0x8133, + 0x3de: 0x8133, 0x3df: 0x8133, 0x3e0: 0x8133, 0x3e1: 0x8133, 0x3e3: 0x812e, + 0x3e4: 0x8133, 0x3e5: 0x8133, 0x3e6: 0x812e, 0x3e7: 0x8133, 0x3e8: 0x8133, 0x3e9: 0x812e, + 0x3ea: 0x8133, 0x3eb: 0x8133, 0x3ec: 0x8133, 0x3ed: 0x812e, 0x3ee: 0x812e, 0x3ef: 0x812e, + 0x3f0: 0x8117, 0x3f1: 0x8118, 0x3f2: 0x8119, 0x3f3: 0x8133, 0x3f4: 0x8133, 0x3f5: 0x8133, + 0x3f6: 0x812e, 0x3f7: 0x8133, 0x3f8: 0x8133, 0x3f9: 0x812e, 0x3fa: 0x812e, 0x3fb: 0x8133, + 0x3fc: 0x8133, 0x3fd: 0x8133, 0x3fe: 0x8133, 0x3ff: 0x8133, + // Block 0x10, offset 0x400 + 0x405: 0xa000, + 0x406: 0x2d33, 0x407: 0xa000, 0x408: 0x2d3b, 0x409: 0xa000, 0x40a: 0x2d43, 0x40b: 0xa000, + 0x40c: 0x2d4b, 0x40d: 0xa000, 0x40e: 0x2d53, 0x411: 0xa000, + 0x412: 0x2d5b, + 0x434: 0x8103, 0x435: 0x9900, + 0x43a: 0xa000, 0x43b: 0x2d63, + 0x43c: 0xa000, 0x43d: 0x2d6b, 0x43e: 0xa000, 0x43f: 0xa000, + // Block 0x11, offset 0x440 + 0x440: 0x8133, 0x441: 0x8133, 0x442: 0x812e, 0x443: 0x8133, 0x444: 0x8133, 0x445: 0x8133, + 0x446: 0x8133, 0x447: 0x8133, 0x448: 0x8133, 0x449: 0x8133, 0x44a: 0x812e, 0x44b: 0x8133, + 0x44c: 0x8133, 0x44d: 0x8136, 0x44e: 0x812b, 0x44f: 0x812e, 0x450: 0x812a, 0x451: 0x8133, + 0x452: 0x8133, 0x453: 0x8133, 0x454: 0x8133, 0x455: 0x8133, 0x456: 0x8133, 0x457: 0x8133, + 0x458: 0x8133, 0x459: 0x8133, 0x45a: 0x8133, 0x45b: 0x8133, 0x45c: 0x8133, 0x45d: 0x8133, + 0x45e: 0x8133, 0x45f: 0x8133, 0x460: 0x8133, 0x461: 0x8133, 0x462: 0x8133, 0x463: 0x8133, + 0x464: 0x8133, 0x465: 0x8133, 0x466: 0x8133, 0x467: 0x8133, 0x468: 0x8133, 0x469: 0x8133, + 0x46a: 0x8133, 0x46b: 0x8133, 0x46c: 0x8133, 0x46d: 0x8133, 0x46e: 0x8133, 0x46f: 0x8133, + 0x470: 0x8133, 0x471: 0x8133, 0x472: 0x8133, 0x473: 0x8133, 0x474: 0x8133, 0x475: 0x8133, + 0x476: 0x8134, 0x477: 0x8132, 0x478: 0x8132, 0x479: 0x812e, 0x47b: 0x8133, + 0x47c: 0x8135, 0x47d: 0x812e, 0x47e: 0x8133, 0x47f: 0x812e, + // Block 0x12, offset 0x480 + 0x480: 0x2fae, 0x481: 0x32ba, 0x482: 0x2fb8, 0x483: 0x32c4, 0x484: 0x2fbd, 0x485: 0x32c9, + 0x486: 0x2fc2, 0x487: 0x32ce, 0x488: 0x38e3, 0x489: 0x3a72, 0x48a: 0x2fdb, 0x48b: 0x32e7, + 0x48c: 0x2fe5, 0x48d: 0x32f1, 0x48e: 0x2ff4, 0x48f: 0x3300, 0x490: 0x2fea, 0x491: 0x32f6, + 0x492: 0x2fef, 0x493: 0x32fb, 0x494: 0x3906, 0x495: 0x3a95, 0x496: 0x390d, 0x497: 0x3a9c, + 0x498: 0x3030, 0x499: 0x333c, 0x49a: 0x3035, 0x49b: 0x3341, 0x49c: 0x391b, 0x49d: 0x3aaa, + 0x49e: 0x303a, 0x49f: 0x3346, 0x4a0: 0x3049, 0x4a1: 0x3355, 0x4a2: 0x3067, 0x4a3: 0x3373, + 0x4a4: 0x3076, 0x4a5: 0x3382, 0x4a6: 0x306c, 0x4a7: 0x3378, 0x4a8: 0x307b, 0x4a9: 0x3387, + 0x4aa: 0x3080, 0x4ab: 0x338c, 0x4ac: 0x30c6, 0x4ad: 0x33d2, 0x4ae: 0x3922, 0x4af: 0x3ab1, + 0x4b0: 0x30d0, 0x4b1: 0x33e1, 0x4b2: 0x30da, 0x4b3: 0x33eb, 0x4b4: 0x30e4, 0x4b5: 0x33f5, + 0x4b6: 0x46db, 0x4b7: 0x476c, 0x4b8: 0x3929, 0x4b9: 0x3ab8, 0x4ba: 0x30fd, 0x4bb: 0x340e, + 0x4bc: 0x30f8, 0x4bd: 0x3409, 0x4be: 0x3102, 0x4bf: 0x3413, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x3107, 0x4c1: 0x3418, 0x4c2: 0x310c, 0x4c3: 0x341d, 0x4c4: 0x3120, 0x4c5: 0x3431, + 0x4c6: 0x312a, 0x4c7: 0x343b, 0x4c8: 0x3139, 0x4c9: 0x344a, 0x4ca: 0x3134, 0x4cb: 0x3445, + 0x4cc: 0x394c, 0x4cd: 0x3adb, 0x4ce: 0x395a, 0x4cf: 0x3ae9, 0x4d0: 0x3961, 0x4d1: 0x3af0, + 0x4d2: 0x3968, 0x4d3: 0x3af7, 0x4d4: 0x3166, 0x4d5: 0x3477, 0x4d6: 0x316b, 0x4d7: 0x347c, + 0x4d8: 0x3175, 0x4d9: 0x3486, 0x4da: 0x4708, 0x4db: 0x4799, 0x4dc: 0x39ae, 0x4dd: 0x3b3d, + 0x4de: 0x318e, 0x4df: 0x349f, 0x4e0: 0x3198, 0x4e1: 0x34a9, 0x4e2: 0x4717, 0x4e3: 0x47a8, + 0x4e4: 0x39b5, 0x4e5: 0x3b44, 0x4e6: 0x39bc, 0x4e7: 0x3b4b, 0x4e8: 0x39c3, 0x4e9: 0x3b52, + 0x4ea: 0x31a7, 0x4eb: 0x34b8, 0x4ec: 0x31b1, 0x4ed: 0x34c7, 0x4ee: 0x31c5, 0x4ef: 0x34db, + 0x4f0: 0x31c0, 0x4f1: 0x34d6, 0x4f2: 0x3201, 0x4f3: 0x3517, 0x4f4: 0x3210, 0x4f5: 0x3526, + 0x4f6: 0x320b, 0x4f7: 0x3521, 0x4f8: 0x39ca, 0x4f9: 0x3b59, 0x4fa: 0x39d1, 0x4fb: 0x3b60, + 0x4fc: 0x3215, 0x4fd: 0x352b, 0x4fe: 0x321a, 0x4ff: 0x3530, + // Block 0x14, offset 0x500 + 0x500: 0x321f, 0x501: 0x3535, 0x502: 0x3224, 0x503: 0x353a, 0x504: 0x3233, 0x505: 0x3549, + 0x506: 0x322e, 0x507: 0x3544, 0x508: 0x3238, 0x509: 0x3553, 0x50a: 0x323d, 0x50b: 0x3558, + 0x50c: 0x3242, 0x50d: 0x355d, 0x50e: 0x3260, 0x50f: 0x357b, 0x510: 0x3279, 0x511: 0x3599, + 0x512: 0x3288, 0x513: 0x35a8, 0x514: 0x328d, 0x515: 0x35ad, 0x516: 0x3391, 0x517: 0x34bd, + 0x518: 0x354e, 0x519: 0x358a, 0x51b: 0x35e8, + 0x520: 0x46b8, 0x521: 0x4749, 0x522: 0x2f9a, 0x523: 0x32a6, + 0x524: 0x388f, 0x525: 0x3a1e, 0x526: 0x3888, 0x527: 0x3a17, 0x528: 0x389d, 0x529: 0x3a2c, + 0x52a: 0x3896, 0x52b: 0x3a25, 0x52c: 0x38d5, 0x52d: 0x3a64, 0x52e: 0x38ab, 0x52f: 0x3a3a, + 0x530: 0x38a4, 0x531: 0x3a33, 0x532: 0x38b9, 0x533: 0x3a48, 0x534: 0x38b2, 0x535: 0x3a41, + 0x536: 0x38dc, 0x537: 0x3a6b, 0x538: 0x46cc, 0x539: 0x475d, 0x53a: 0x3017, 0x53b: 0x3323, + 0x53c: 0x3003, 0x53d: 0x330f, 0x53e: 0x38f1, 0x53f: 0x3a80, + // Block 0x15, offset 0x540 + 0x540: 0x38ea, 0x541: 0x3a79, 0x542: 0x38ff, 0x543: 0x3a8e, 0x544: 0x38f8, 0x545: 0x3a87, + 0x546: 0x3914, 0x547: 0x3aa3, 0x548: 0x30a8, 0x549: 0x33b4, 0x54a: 0x30bc, 0x54b: 0x33c8, + 0x54c: 0x46fe, 0x54d: 0x478f, 0x54e: 0x314d, 0x54f: 0x345e, 0x550: 0x3937, 0x551: 0x3ac6, + 0x552: 0x3930, 0x553: 0x3abf, 0x554: 0x3945, 0x555: 0x3ad4, 0x556: 0x393e, 0x557: 0x3acd, + 0x558: 0x39a0, 0x559: 0x3b2f, 0x55a: 0x3984, 0x55b: 0x3b13, 0x55c: 0x397d, 0x55d: 0x3b0c, + 0x55e: 0x3992, 0x55f: 0x3b21, 0x560: 0x398b, 0x561: 0x3b1a, 0x562: 0x3999, 0x563: 0x3b28, + 0x564: 0x31fc, 0x565: 0x3512, 0x566: 0x31de, 0x567: 0x34f4, 0x568: 0x39fb, 0x569: 0x3b8a, + 0x56a: 0x39f4, 0x56b: 0x3b83, 0x56c: 0x3a09, 0x56d: 0x3b98, 0x56e: 0x3a02, 0x56f: 0x3b91, + 0x570: 0x3a10, 0x571: 0x3b9f, 0x572: 0x3247, 0x573: 0x3562, 0x574: 0x326f, 0x575: 0x358f, + 0x576: 0x326a, 0x577: 0x3585, 0x578: 0x3256, 0x579: 0x3571, + // Block 0x16, offset 0x580 + 0x580: 0x481b, 0x581: 0x4821, 0x582: 0x4935, 0x583: 0x494d, 0x584: 0x493d, 0x585: 0x4955, + 0x586: 0x4945, 0x587: 0x495d, 0x588: 0x47c1, 0x589: 0x47c7, 0x58a: 0x48a5, 0x58b: 0x48bd, + 0x58c: 0x48ad, 0x58d: 0x48c5, 0x58e: 0x48b5, 0x58f: 0x48cd, 0x590: 0x482d, 0x591: 0x4833, + 0x592: 0x3dcf, 0x593: 0x3ddf, 0x594: 0x3dd7, 0x595: 0x3de7, + 0x598: 0x47cd, 0x599: 0x47d3, 0x59a: 0x3cff, 0x59b: 0x3d0f, 0x59c: 0x3d07, 0x59d: 0x3d17, + 0x5a0: 0x4845, 0x5a1: 0x484b, 0x5a2: 0x4965, 0x5a3: 0x497d, + 0x5a4: 0x496d, 0x5a5: 0x4985, 0x5a6: 0x4975, 0x5a7: 0x498d, 0x5a8: 0x47d9, 0x5a9: 0x47df, + 0x5aa: 0x48d5, 0x5ab: 0x48ed, 0x5ac: 0x48dd, 0x5ad: 0x48f5, 0x5ae: 0x48e5, 0x5af: 0x48fd, + 0x5b0: 0x485d, 0x5b1: 0x4863, 0x5b2: 0x3e2f, 0x5b3: 0x3e47, 0x5b4: 0x3e37, 0x5b5: 0x3e4f, + 0x5b6: 0x3e3f, 0x5b7: 0x3e57, 0x5b8: 0x47e5, 0x5b9: 0x47eb, 0x5ba: 0x3d2f, 0x5bb: 0x3d47, + 0x5bc: 0x3d37, 0x5bd: 0x3d4f, 0x5be: 0x3d3f, 0x5bf: 0x3d57, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x4869, 0x5c1: 0x486f, 0x5c2: 0x3e5f, 0x5c3: 0x3e6f, 0x5c4: 0x3e67, 0x5c5: 0x3e77, + 0x5c8: 0x47f1, 0x5c9: 0x47f7, 0x5ca: 0x3d5f, 0x5cb: 0x3d6f, + 0x5cc: 0x3d67, 0x5cd: 0x3d77, 0x5d0: 0x487b, 0x5d1: 0x4881, + 0x5d2: 0x3e97, 0x5d3: 0x3eaf, 0x5d4: 0x3e9f, 0x5d5: 0x3eb7, 0x5d6: 0x3ea7, 0x5d7: 0x3ebf, + 0x5d9: 0x47fd, 0x5db: 0x3d7f, 0x5dd: 0x3d87, + 0x5df: 0x3d8f, 0x5e0: 0x4893, 0x5e1: 0x4899, 0x5e2: 0x4995, 0x5e3: 0x49ad, + 0x5e4: 0x499d, 0x5e5: 0x49b5, 0x5e6: 0x49a5, 0x5e7: 0x49bd, 0x5e8: 0x4803, 0x5e9: 0x4809, + 0x5ea: 0x4905, 0x5eb: 0x491d, 0x5ec: 0x490d, 0x5ed: 0x4925, 0x5ee: 0x4915, 0x5ef: 0x492d, + 0x5f0: 0x480f, 0x5f1: 0x4335, 0x5f2: 0x36a8, 0x5f3: 0x433b, 0x5f4: 0x4839, 0x5f5: 0x4341, + 0x5f6: 0x36ba, 0x5f7: 0x4347, 0x5f8: 0x36d8, 0x5f9: 0x434d, 0x5fa: 0x36f0, 0x5fb: 0x4353, + 0x5fc: 0x4887, 0x5fd: 0x4359, + // Block 0x18, offset 0x600 + 0x600: 0x3db7, 0x601: 0x3dbf, 0x602: 0x419b, 0x603: 0x41b9, 0x604: 0x41a5, 0x605: 0x41c3, + 0x606: 0x41af, 0x607: 0x41cd, 0x608: 0x3cef, 0x609: 0x3cf7, 0x60a: 0x40e7, 0x60b: 0x4105, + 0x60c: 0x40f1, 0x60d: 0x410f, 0x60e: 0x40fb, 0x60f: 0x4119, 0x610: 0x3dff, 0x611: 0x3e07, + 0x612: 0x41d7, 0x613: 0x41f5, 0x614: 0x41e1, 0x615: 0x41ff, 0x616: 0x41eb, 0x617: 0x4209, + 0x618: 0x3d1f, 0x619: 0x3d27, 0x61a: 0x4123, 0x61b: 0x4141, 0x61c: 0x412d, 0x61d: 0x414b, + 0x61e: 0x4137, 0x61f: 0x4155, 0x620: 0x3ed7, 0x621: 0x3edf, 0x622: 0x4213, 0x623: 0x4231, + 0x624: 0x421d, 0x625: 0x423b, 0x626: 0x4227, 0x627: 0x4245, 0x628: 0x3d97, 0x629: 0x3d9f, + 0x62a: 0x415f, 0x62b: 0x417d, 0x62c: 0x4169, 0x62d: 0x4187, 0x62e: 0x4173, 0x62f: 0x4191, + 0x630: 0x369c, 0x631: 0x3696, 0x632: 0x3da7, 0x633: 0x36a2, 0x634: 0x3daf, + 0x636: 0x4827, 0x637: 0x3dc7, 0x638: 0x360c, 0x639: 0x3606, 0x63a: 0x35fa, 0x63b: 0x4305, + 0x63c: 0x3612, 0x63d: 0x8100, 0x63e: 0x01d6, 0x63f: 0xa100, + // Block 0x19, offset 0x640 + 0x640: 0x8100, 0x641: 0x35be, 0x642: 0x3def, 0x643: 0x36b4, 0x644: 0x3df7, + 0x646: 0x4851, 0x647: 0x3e0f, 0x648: 0x3618, 0x649: 0x430b, 0x64a: 0x3624, 0x64b: 0x4311, + 0x64c: 0x3630, 0x64d: 0x3ba6, 0x64e: 0x3bad, 0x64f: 0x3bb4, 0x650: 0x36cc, 0x651: 0x36c6, + 0x652: 0x3e17, 0x653: 0x44fb, 0x656: 0x36d2, 0x657: 0x3e27, + 0x658: 0x3648, 0x659: 0x3642, 0x65a: 0x3636, 0x65b: 0x4317, 0x65d: 0x3bbb, + 0x65e: 0x3bc2, 0x65f: 0x3bc9, 0x660: 0x3702, 0x661: 0x36fc, 0x662: 0x3e7f, 0x663: 0x4503, + 0x664: 0x36e4, 0x665: 0x36ea, 0x666: 0x3708, 0x667: 0x3e8f, 0x668: 0x3678, 0x669: 0x3672, + 0x66a: 0x3666, 0x66b: 0x4323, 0x66c: 0x3660, 0x66d: 0x35b2, 0x66e: 0x42ff, 0x66f: 0x0081, + 0x672: 0x3ec7, 0x673: 0x370e, 0x674: 0x3ecf, + 0x676: 0x489f, 0x677: 0x3ee7, 0x678: 0x3654, 0x679: 0x431d, 0x67a: 0x3684, 0x67b: 0x432f, + 0x67c: 0x3690, 0x67d: 0x426d, 0x67e: 0xa100, + // Block 0x1a, offset 0x680 + 0x681: 0x3c1d, 0x683: 0xa000, 0x684: 0x3c24, 0x685: 0xa000, + 0x687: 0x3c2b, 0x688: 0xa000, 0x689: 0x3c32, + 0x68d: 0xa000, + 0x6a0: 0x2f7c, 0x6a1: 0xa000, 0x6a2: 0x3c40, + 0x6a4: 0xa000, 0x6a5: 0xa000, + 0x6ad: 0x3c39, 0x6ae: 0x2f77, 0x6af: 0x2f81, + 0x6b0: 0x3c47, 0x6b1: 0x3c4e, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c55, 0x6b5: 0x3c5c, + 0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c63, 0x6b9: 0x3c6a, 0x6ba: 0xa000, 0x6bb: 0xa000, + 0x6bc: 0xa000, 0x6bd: 0xa000, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x3c71, 0x6c1: 0x3c78, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c8d, 0x6c5: 0x3c94, + 0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c9b, 0x6c9: 0x3ca2, + 0x6d1: 0xa000, + 0x6d2: 0xa000, + 0x6e2: 0xa000, + 0x6e8: 0xa000, 0x6e9: 0xa000, + 0x6eb: 0xa000, 0x6ec: 0x3cb7, 0x6ed: 0x3cbe, 0x6ee: 0x3cc5, 0x6ef: 0x3ccc, + 0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000, + // Block 0x1c, offset 0x700 + 0x706: 0xa000, 0x70b: 0xa000, + 0x70c: 0x3f1f, 0x70d: 0xa000, 0x70e: 0x3f27, 0x70f: 0xa000, 0x710: 0x3f2f, 0x711: 0xa000, + 0x712: 0x3f37, 0x713: 0xa000, 0x714: 0x3f3f, 0x715: 0xa000, 0x716: 0x3f47, 0x717: 0xa000, + 0x718: 0x3f4f, 0x719: 0xa000, 0x71a: 0x3f57, 0x71b: 0xa000, 0x71c: 0x3f5f, 0x71d: 0xa000, + 0x71e: 0x3f67, 0x71f: 0xa000, 0x720: 0x3f6f, 0x721: 0xa000, 0x722: 0x3f77, + 0x724: 0xa000, 0x725: 0x3f7f, 0x726: 0xa000, 0x727: 0x3f87, 0x728: 0xa000, 0x729: 0x3f8f, + 0x72f: 0xa000, + 0x730: 0x3f97, 0x731: 0x3f9f, 0x732: 0xa000, 0x733: 0x3fa7, 0x734: 0x3faf, 0x735: 0xa000, + 0x736: 0x3fb7, 0x737: 0x3fbf, 0x738: 0xa000, 0x739: 0x3fc7, 0x73a: 0x3fcf, 0x73b: 0xa000, + 0x73c: 0x3fd7, 0x73d: 0x3fdf, + // Block 0x1d, offset 0x740 + 0x754: 0x3f17, + 0x759: 0x9904, 0x75a: 0x9904, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000, + 0x75e: 0x3fe7, + 0x766: 0xa000, + 0x76b: 0xa000, 0x76c: 0x3ff7, 0x76d: 0xa000, 0x76e: 0x3fff, 0x76f: 0xa000, + 0x770: 0x4007, 0x771: 0xa000, 0x772: 0x400f, 0x773: 0xa000, 0x774: 0x4017, 0x775: 0xa000, + 0x776: 0x401f, 0x777: 0xa000, 0x778: 0x4027, 0x779: 0xa000, 0x77a: 0x402f, 0x77b: 0xa000, + 0x77c: 0x4037, 0x77d: 0xa000, 0x77e: 0x403f, 0x77f: 0xa000, + // Block 0x1e, offset 0x780 + 0x780: 0x4047, 0x781: 0xa000, 0x782: 0x404f, 0x784: 0xa000, 0x785: 0x4057, + 0x786: 0xa000, 0x787: 0x405f, 0x788: 0xa000, 0x789: 0x4067, + 0x78f: 0xa000, 0x790: 0x406f, 0x791: 0x4077, + 0x792: 0xa000, 0x793: 0x407f, 0x794: 0x4087, 0x795: 0xa000, 0x796: 0x408f, 0x797: 0x4097, + 0x798: 0xa000, 0x799: 0x409f, 0x79a: 0x40a7, 0x79b: 0xa000, 0x79c: 0x40af, 0x79d: 0x40b7, + 0x7af: 0xa000, + 0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fef, + 0x7b7: 0x40bf, 0x7b8: 0x40c7, 0x7b9: 0x40cf, 0x7ba: 0x40d7, + 0x7bd: 0xa000, 0x7be: 0x40df, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x137a, 0x7c1: 0x0cfe, 0x7c2: 0x13d6, 0x7c3: 0x13a2, 0x7c4: 0x0e5a, 0x7c5: 0x06ee, + 0x7c6: 0x08e2, 0x7c7: 0x162e, 0x7c8: 0x162e, 0x7c9: 0x0a0e, 0x7ca: 0x1462, 0x7cb: 0x0946, + 0x7cc: 0x0a0a, 0x7cd: 0x0bf2, 0x7ce: 0x0fd2, 0x7cf: 0x1162, 0x7d0: 0x129a, 0x7d1: 0x12d6, + 0x7d2: 0x130a, 0x7d3: 0x141e, 0x7d4: 0x0d76, 0x7d5: 0x0e02, 0x7d6: 0x0eae, 0x7d7: 0x0f46, + 0x7d8: 0x1262, 0x7d9: 0x144a, 0x7da: 0x1576, 0x7db: 0x0712, 0x7dc: 0x08b6, 0x7dd: 0x0d8a, + 0x7de: 0x0ed2, 0x7df: 0x1296, 0x7e0: 0x15c6, 0x7e1: 0x0ab6, 0x7e2: 0x0e7a, 0x7e3: 0x1286, + 0x7e4: 0x131a, 0x7e5: 0x0c26, 0x7e6: 0x11be, 0x7e7: 0x12e2, 0x7e8: 0x0b22, 0x7e9: 0x0d12, + 0x7ea: 0x0e1a, 0x7eb: 0x0f1e, 0x7ec: 0x142a, 0x7ed: 0x0752, 0x7ee: 0x07ea, 0x7ef: 0x0856, + 0x7f0: 0x0c8e, 0x7f1: 0x0d82, 0x7f2: 0x0ece, 0x7f3: 0x0ff2, 0x7f4: 0x117a, 0x7f5: 0x128e, + 0x7f6: 0x12a6, 0x7f7: 0x13ca, 0x7f8: 0x14f2, 0x7f9: 0x15a6, 0x7fa: 0x15c2, 0x7fb: 0x102e, + 0x7fc: 0x106e, 0x7fd: 0x1126, 0x7fe: 0x1246, 0x7ff: 0x147e, + // Block 0x20, offset 0x800 + 0x800: 0x15ce, 0x801: 0x134e, 0x802: 0x09ca, 0x803: 0x0b3e, 0x804: 0x10de, 0x805: 0x119e, + 0x806: 0x0f02, 0x807: 0x1036, 0x808: 0x139a, 0x809: 0x14ea, 0x80a: 0x09c6, 0x80b: 0x0a92, + 0x80c: 0x0d7a, 0x80d: 0x0e2e, 0x80e: 0x0e62, 0x80f: 0x1116, 0x810: 0x113e, 0x811: 0x14aa, + 0x812: 0x0852, 0x813: 0x11aa, 0x814: 0x07f6, 0x815: 0x07f2, 0x816: 0x109a, 0x817: 0x112a, + 0x818: 0x125e, 0x819: 0x14b2, 0x81a: 0x136a, 0x81b: 0x0c2a, 0x81c: 0x0d76, 0x81d: 0x135a, + 0x81e: 0x06fa, 0x81f: 0x0a66, 0x820: 0x0b96, 0x821: 0x0f32, 0x822: 0x0fb2, 0x823: 0x0876, + 0x824: 0x103e, 0x825: 0x0762, 0x826: 0x0b7a, 0x827: 0x06da, 0x828: 0x0dee, 0x829: 0x0ca6, + 0x82a: 0x1112, 0x82b: 0x08ca, 0x82c: 0x09b6, 0x82d: 0x0ffe, 0x82e: 0x1266, 0x82f: 0x133e, + 0x830: 0x0dba, 0x831: 0x13fa, 0x832: 0x0de6, 0x833: 0x0c3a, 0x834: 0x121e, 0x835: 0x0c5a, + 0x836: 0x0fae, 0x837: 0x072e, 0x838: 0x07aa, 0x839: 0x07ee, 0x83a: 0x0d56, 0x83b: 0x10fe, + 0x83c: 0x11f6, 0x83d: 0x134a, 0x83e: 0x145e, 0x83f: 0x085e, + // Block 0x21, offset 0x840 + 0x840: 0x0912, 0x841: 0x0a1a, 0x842: 0x0b32, 0x843: 0x0cc2, 0x844: 0x0e7e, 0x845: 0x1042, + 0x846: 0x149a, 0x847: 0x157e, 0x848: 0x15d2, 0x849: 0x15ea, 0x84a: 0x083a, 0x84b: 0x0cf6, + 0x84c: 0x0da6, 0x84d: 0x13ee, 0x84e: 0x0afe, 0x84f: 0x0bda, 0x850: 0x0bf6, 0x851: 0x0c86, + 0x852: 0x0e6e, 0x853: 0x0eba, 0x854: 0x0f6a, 0x855: 0x108e, 0x856: 0x1132, 0x857: 0x1196, + 0x858: 0x13de, 0x859: 0x126e, 0x85a: 0x1406, 0x85b: 0x1482, 0x85c: 0x0812, 0x85d: 0x083e, + 0x85e: 0x0926, 0x85f: 0x0eaa, 0x860: 0x12f6, 0x861: 0x133e, 0x862: 0x0b1e, 0x863: 0x0b8e, + 0x864: 0x0c52, 0x865: 0x0db2, 0x866: 0x10da, 0x867: 0x0f26, 0x868: 0x073e, 0x869: 0x0982, + 0x86a: 0x0a66, 0x86b: 0x0aca, 0x86c: 0x0b9a, 0x86d: 0x0f42, 0x86e: 0x0f5e, 0x86f: 0x116e, + 0x870: 0x118e, 0x871: 0x1466, 0x872: 0x14e6, 0x873: 0x14f6, 0x874: 0x1532, 0x875: 0x0756, + 0x876: 0x1082, 0x877: 0x1452, 0x878: 0x14ce, 0x879: 0x0bb2, 0x87a: 0x071a, 0x87b: 0x077a, + 0x87c: 0x0a6a, 0x87d: 0x0a8a, 0x87e: 0x0cb2, 0x87f: 0x0d76, + // Block 0x22, offset 0x880 + 0x880: 0x0ec6, 0x881: 0x0fce, 0x882: 0x127a, 0x883: 0x141a, 0x884: 0x1626, 0x885: 0x0ce6, + 0x886: 0x14a6, 0x887: 0x0836, 0x888: 0x0d32, 0x889: 0x0d3e, 0x88a: 0x0e12, 0x88b: 0x0e4a, + 0x88c: 0x0f4e, 0x88d: 0x0faa, 0x88e: 0x102a, 0x88f: 0x110e, 0x890: 0x153e, 0x891: 0x07b2, + 0x892: 0x0c06, 0x893: 0x14b6, 0x894: 0x076a, 0x895: 0x0aae, 0x896: 0x0e32, 0x897: 0x13e2, + 0x898: 0x0b6a, 0x899: 0x0bba, 0x89a: 0x0d46, 0x89b: 0x0f32, 0x89c: 0x14be, 0x89d: 0x081a, + 0x89e: 0x0902, 0x89f: 0x0a9a, 0x8a0: 0x0cd6, 0x8a1: 0x0d22, 0x8a2: 0x0d62, 0x8a3: 0x0df6, + 0x8a4: 0x0f4a, 0x8a5: 0x0fbe, 0x8a6: 0x115a, 0x8a7: 0x12fa, 0x8a8: 0x1306, 0x8a9: 0x145a, + 0x8aa: 0x14da, 0x8ab: 0x0886, 0x8ac: 0x0e4e, 0x8ad: 0x0906, 0x8ae: 0x0eca, 0x8af: 0x0f6e, + 0x8b0: 0x128a, 0x8b1: 0x14c2, 0x8b2: 0x15ae, 0x8b3: 0x15d6, 0x8b4: 0x0d3a, 0x8b5: 0x0e2a, + 0x8b6: 0x11c6, 0x8b7: 0x10ba, 0x8b8: 0x10c6, 0x8b9: 0x10ea, 0x8ba: 0x0f1a, 0x8bb: 0x0ea2, + 0x8bc: 0x1366, 0x8bd: 0x0736, 0x8be: 0x122e, 0x8bf: 0x081e, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x080e, 0x8c1: 0x0b0e, 0x8c2: 0x0c2e, 0x8c3: 0x10f6, 0x8c4: 0x0a56, 0x8c5: 0x0e06, + 0x8c6: 0x0cf2, 0x8c7: 0x13ea, 0x8c8: 0x12ea, 0x8c9: 0x14ae, 0x8ca: 0x1326, 0x8cb: 0x0b2a, + 0x8cc: 0x078a, 0x8cd: 0x095e, 0x8d0: 0x09b2, + 0x8d2: 0x0ce2, 0x8d5: 0x07fa, 0x8d6: 0x0f22, 0x8d7: 0x0fe6, + 0x8d8: 0x104a, 0x8d9: 0x1066, 0x8da: 0x106a, 0x8db: 0x107e, 0x8dc: 0x14fe, 0x8dd: 0x10ee, + 0x8de: 0x1172, 0x8e0: 0x1292, 0x8e2: 0x1356, + 0x8e5: 0x140a, 0x8e6: 0x1436, + 0x8ea: 0x1552, 0x8eb: 0x1556, 0x8ec: 0x155a, 0x8ed: 0x15be, 0x8ee: 0x142e, 0x8ef: 0x14ca, + 0x8f0: 0x075a, 0x8f1: 0x077e, 0x8f2: 0x0792, 0x8f3: 0x084e, 0x8f4: 0x085a, 0x8f5: 0x089a, + 0x8f6: 0x094e, 0x8f7: 0x096a, 0x8f8: 0x0972, 0x8f9: 0x09ae, 0x8fa: 0x09ba, 0x8fb: 0x0a96, + 0x8fc: 0x0a9e, 0x8fd: 0x0ba6, 0x8fe: 0x0bce, 0x8ff: 0x0bd6, + // Block 0x24, offset 0x900 + 0x900: 0x0bee, 0x901: 0x0c9a, 0x902: 0x0cca, 0x903: 0x0cea, 0x904: 0x0d5a, 0x905: 0x0e1e, + 0x906: 0x0e3a, 0x907: 0x0e6a, 0x908: 0x0ebe, 0x909: 0x0ede, 0x90a: 0x0f52, 0x90b: 0x1032, + 0x90c: 0x104e, 0x90d: 0x1056, 0x90e: 0x1052, 0x90f: 0x105a, 0x910: 0x105e, 0x911: 0x1062, + 0x912: 0x1076, 0x913: 0x107a, 0x914: 0x109e, 0x915: 0x10b2, 0x916: 0x10ce, 0x917: 0x1132, + 0x918: 0x113a, 0x919: 0x1142, 0x91a: 0x1156, 0x91b: 0x117e, 0x91c: 0x11ce, 0x91d: 0x1202, + 0x91e: 0x1202, 0x91f: 0x126a, 0x920: 0x1312, 0x921: 0x132a, 0x922: 0x135e, 0x923: 0x1362, + 0x924: 0x13a6, 0x925: 0x13aa, 0x926: 0x1402, 0x927: 0x140a, 0x928: 0x14de, 0x929: 0x1522, + 0x92a: 0x153a, 0x92b: 0x0b9e, 0x92c: 0x1721, 0x92d: 0x11e6, + 0x930: 0x06e2, 0x931: 0x07e6, 0x932: 0x07a6, 0x933: 0x074e, 0x934: 0x078e, 0x935: 0x07ba, + 0x936: 0x084a, 0x937: 0x0866, 0x938: 0x094e, 0x939: 0x093a, 0x93a: 0x094a, 0x93b: 0x0966, + 0x93c: 0x09b2, 0x93d: 0x09c2, 0x93e: 0x0a06, 0x93f: 0x0a12, + // Block 0x25, offset 0x940 + 0x940: 0x0a2e, 0x941: 0x0a3e, 0x942: 0x0b26, 0x943: 0x0b2e, 0x944: 0x0b5e, 0x945: 0x0b7e, + 0x946: 0x0bae, 0x947: 0x0bc6, 0x948: 0x0bb6, 0x949: 0x0bd6, 0x94a: 0x0bca, 0x94b: 0x0bee, + 0x94c: 0x0c0a, 0x94d: 0x0c62, 0x94e: 0x0c6e, 0x94f: 0x0c76, 0x950: 0x0c9e, 0x951: 0x0ce2, + 0x952: 0x0d12, 0x953: 0x0d16, 0x954: 0x0d2a, 0x955: 0x0daa, 0x956: 0x0dba, 0x957: 0x0e12, + 0x958: 0x0e5e, 0x959: 0x0e56, 0x95a: 0x0e6a, 0x95b: 0x0e86, 0x95c: 0x0ebe, 0x95d: 0x1016, + 0x95e: 0x0ee2, 0x95f: 0x0f16, 0x960: 0x0f22, 0x961: 0x0f62, 0x962: 0x0f7e, 0x963: 0x0fa2, + 0x964: 0x0fc6, 0x965: 0x0fca, 0x966: 0x0fe6, 0x967: 0x0fea, 0x968: 0x0ffa, 0x969: 0x100e, + 0x96a: 0x100a, 0x96b: 0x103a, 0x96c: 0x10b6, 0x96d: 0x10ce, 0x96e: 0x10e6, 0x96f: 0x111e, + 0x970: 0x1132, 0x971: 0x114e, 0x972: 0x117e, 0x973: 0x1232, 0x974: 0x125a, 0x975: 0x12ce, + 0x976: 0x1316, 0x977: 0x1322, 0x978: 0x132a, 0x979: 0x1342, 0x97a: 0x1356, 0x97b: 0x1346, + 0x97c: 0x135e, 0x97d: 0x135a, 0x97e: 0x1352, 0x97f: 0x1362, + // Block 0x26, offset 0x980 + 0x980: 0x136e, 0x981: 0x13aa, 0x982: 0x13e6, 0x983: 0x1416, 0x984: 0x144e, 0x985: 0x146e, + 0x986: 0x14ba, 0x987: 0x14de, 0x988: 0x14fe, 0x989: 0x1512, 0x98a: 0x1522, 0x98b: 0x152e, + 0x98c: 0x153a, 0x98d: 0x158e, 0x98e: 0x162e, 0x98f: 0x16b8, 0x990: 0x16b3, 0x991: 0x16e5, + 0x992: 0x060a, 0x993: 0x0632, 0x994: 0x0636, 0x995: 0x1767, 0x996: 0x1794, 0x997: 0x180c, + 0x998: 0x161a, 0x999: 0x162a, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x06fe, 0x9c1: 0x06f6, 0x9c2: 0x0706, 0x9c3: 0x164a, 0x9c4: 0x074a, 0x9c5: 0x075a, + 0x9c6: 0x075e, 0x9c7: 0x0766, 0x9c8: 0x076e, 0x9c9: 0x0772, 0x9ca: 0x077e, 0x9cb: 0x0776, + 0x9cc: 0x05b6, 0x9cd: 0x165e, 0x9ce: 0x0792, 0x9cf: 0x0796, 0x9d0: 0x079a, 0x9d1: 0x07b6, + 0x9d2: 0x164f, 0x9d3: 0x05ba, 0x9d4: 0x07a2, 0x9d5: 0x07c2, 0x9d6: 0x1659, 0x9d7: 0x07d2, + 0x9d8: 0x07da, 0x9d9: 0x073a, 0x9da: 0x07e2, 0x9db: 0x07e6, 0x9dc: 0x1834, 0x9dd: 0x0802, + 0x9de: 0x080a, 0x9df: 0x05c2, 0x9e0: 0x0822, 0x9e1: 0x0826, 0x9e2: 0x082e, 0x9e3: 0x0832, + 0x9e4: 0x05c6, 0x9e5: 0x084a, 0x9e6: 0x084e, 0x9e7: 0x085a, 0x9e8: 0x0866, 0x9e9: 0x086a, + 0x9ea: 0x086e, 0x9eb: 0x0876, 0x9ec: 0x0896, 0x9ed: 0x089a, 0x9ee: 0x08a2, 0x9ef: 0x08b2, + 0x9f0: 0x08ba, 0x9f1: 0x08be, 0x9f2: 0x08be, 0x9f3: 0x08be, 0x9f4: 0x166d, 0x9f5: 0x0e96, + 0x9f6: 0x08d2, 0x9f7: 0x08da, 0x9f8: 0x1672, 0x9f9: 0x08e6, 0x9fa: 0x08ee, 0x9fb: 0x08f6, + 0x9fc: 0x091e, 0x9fd: 0x090a, 0x9fe: 0x0916, 0x9ff: 0x091a, + // Block 0x28, offset 0xa00 + 0xa00: 0x0922, 0xa01: 0x092a, 0xa02: 0x092e, 0xa03: 0x0936, 0xa04: 0x093e, 0xa05: 0x0942, + 0xa06: 0x0942, 0xa07: 0x094a, 0xa08: 0x0952, 0xa09: 0x0956, 0xa0a: 0x0962, 0xa0b: 0x0986, + 0xa0c: 0x096a, 0xa0d: 0x098a, 0xa0e: 0x096e, 0xa0f: 0x0976, 0xa10: 0x080e, 0xa11: 0x09d2, + 0xa12: 0x099a, 0xa13: 0x099e, 0xa14: 0x09a2, 0xa15: 0x0996, 0xa16: 0x09aa, 0xa17: 0x09a6, + 0xa18: 0x09be, 0xa19: 0x1677, 0xa1a: 0x09da, 0xa1b: 0x09de, 0xa1c: 0x09e6, 0xa1d: 0x09f2, + 0xa1e: 0x09fa, 0xa1f: 0x0a16, 0xa20: 0x167c, 0xa21: 0x1681, 0xa22: 0x0a22, 0xa23: 0x0a26, + 0xa24: 0x0a2a, 0xa25: 0x0a1e, 0xa26: 0x0a32, 0xa27: 0x05ca, 0xa28: 0x05ce, 0xa29: 0x0a3a, + 0xa2a: 0x0a42, 0xa2b: 0x0a42, 0xa2c: 0x1686, 0xa2d: 0x0a5e, 0xa2e: 0x0a62, 0xa2f: 0x0a66, + 0xa30: 0x0a6e, 0xa31: 0x168b, 0xa32: 0x0a76, 0xa33: 0x0a7a, 0xa34: 0x0b52, 0xa35: 0x0a82, + 0xa36: 0x05d2, 0xa37: 0x0a8e, 0xa38: 0x0a9e, 0xa39: 0x0aaa, 0xa3a: 0x0aa6, 0xa3b: 0x1695, + 0xa3c: 0x0ab2, 0xa3d: 0x169a, 0xa3e: 0x0abe, 0xa3f: 0x0aba, + // Block 0x29, offset 0xa40 + 0xa40: 0x0ac2, 0xa41: 0x0ad2, 0xa42: 0x0ad6, 0xa43: 0x05d6, 0xa44: 0x0ae6, 0xa45: 0x0aee, + 0xa46: 0x0af2, 0xa47: 0x0af6, 0xa48: 0x05da, 0xa49: 0x169f, 0xa4a: 0x05de, 0xa4b: 0x0b12, + 0xa4c: 0x0b16, 0xa4d: 0x0b1a, 0xa4e: 0x0b22, 0xa4f: 0x1866, 0xa50: 0x0b3a, 0xa51: 0x16a9, + 0xa52: 0x16a9, 0xa53: 0x11da, 0xa54: 0x0b4a, 0xa55: 0x0b4a, 0xa56: 0x05e2, 0xa57: 0x16cc, + 0xa58: 0x179e, 0xa59: 0x0b5a, 0xa5a: 0x0b62, 0xa5b: 0x05e6, 0xa5c: 0x0b76, 0xa5d: 0x0b86, + 0xa5e: 0x0b8a, 0xa5f: 0x0b92, 0xa60: 0x0ba2, 0xa61: 0x05ee, 0xa62: 0x05ea, 0xa63: 0x0ba6, + 0xa64: 0x16ae, 0xa65: 0x0baa, 0xa66: 0x0bbe, 0xa67: 0x0bc2, 0xa68: 0x0bc6, 0xa69: 0x0bc2, + 0xa6a: 0x0bd2, 0xa6b: 0x0bd6, 0xa6c: 0x0be6, 0xa6d: 0x0bde, 0xa6e: 0x0be2, 0xa6f: 0x0bea, + 0xa70: 0x0bee, 0xa71: 0x0bf2, 0xa72: 0x0bfe, 0xa73: 0x0c02, 0xa74: 0x0c1a, 0xa75: 0x0c22, + 0xa76: 0x0c32, 0xa77: 0x0c46, 0xa78: 0x16bd, 0xa79: 0x0c42, 0xa7a: 0x0c36, 0xa7b: 0x0c4e, + 0xa7c: 0x0c56, 0xa7d: 0x0c6a, 0xa7e: 0x16c2, 0xa7f: 0x0c72, + // Block 0x2a, offset 0xa80 + 0xa80: 0x0c66, 0xa81: 0x0c5e, 0xa82: 0x05f2, 0xa83: 0x0c7a, 0xa84: 0x0c82, 0xa85: 0x0c8a, + 0xa86: 0x0c7e, 0xa87: 0x05f6, 0xa88: 0x0c9a, 0xa89: 0x0ca2, 0xa8a: 0x16c7, 0xa8b: 0x0cce, + 0xa8c: 0x0d02, 0xa8d: 0x0cde, 0xa8e: 0x0602, 0xa8f: 0x0cea, 0xa90: 0x05fe, 0xa91: 0x05fa, + 0xa92: 0x07c6, 0xa93: 0x07ca, 0xa94: 0x0d06, 0xa95: 0x0cee, 0xa96: 0x11ae, 0xa97: 0x0666, + 0xa98: 0x0d12, 0xa99: 0x0d16, 0xa9a: 0x0d1a, 0xa9b: 0x0d2e, 0xa9c: 0x0d26, 0xa9d: 0x16e0, + 0xa9e: 0x0606, 0xa9f: 0x0d42, 0xaa0: 0x0d36, 0xaa1: 0x0d52, 0xaa2: 0x0d5a, 0xaa3: 0x16ea, + 0xaa4: 0x0d5e, 0xaa5: 0x0d4a, 0xaa6: 0x0d66, 0xaa7: 0x060a, 0xaa8: 0x0d6a, 0xaa9: 0x0d6e, + 0xaaa: 0x0d72, 0xaab: 0x0d7e, 0xaac: 0x16ef, 0xaad: 0x0d86, 0xaae: 0x060e, 0xaaf: 0x0d92, + 0xab0: 0x16f4, 0xab1: 0x0d96, 0xab2: 0x0612, 0xab3: 0x0da2, 0xab4: 0x0dae, 0xab5: 0x0dba, + 0xab6: 0x0dbe, 0xab7: 0x16f9, 0xab8: 0x1690, 0xab9: 0x16fe, 0xaba: 0x0dde, 0xabb: 0x1703, + 0xabc: 0x0dea, 0xabd: 0x0df2, 0xabe: 0x0de2, 0xabf: 0x0dfe, + // Block 0x2b, offset 0xac0 + 0xac0: 0x0e0e, 0xac1: 0x0e1e, 0xac2: 0x0e12, 0xac3: 0x0e16, 0xac4: 0x0e22, 0xac5: 0x0e26, + 0xac6: 0x1708, 0xac7: 0x0e0a, 0xac8: 0x0e3e, 0xac9: 0x0e42, 0xaca: 0x0616, 0xacb: 0x0e56, + 0xacc: 0x0e52, 0xacd: 0x170d, 0xace: 0x0e36, 0xacf: 0x0e72, 0xad0: 0x1712, 0xad1: 0x1717, + 0xad2: 0x0e76, 0xad3: 0x0e8a, 0xad4: 0x0e86, 0xad5: 0x0e82, 0xad6: 0x061a, 0xad7: 0x0e8e, + 0xad8: 0x0e9e, 0xad9: 0x0e9a, 0xada: 0x0ea6, 0xadb: 0x1654, 0xadc: 0x0eb6, 0xadd: 0x171c, + 0xade: 0x0ec2, 0xadf: 0x1726, 0xae0: 0x0ed6, 0xae1: 0x0ee2, 0xae2: 0x0ef6, 0xae3: 0x172b, + 0xae4: 0x0f0a, 0xae5: 0x0f0e, 0xae6: 0x1730, 0xae7: 0x1735, 0xae8: 0x0f2a, 0xae9: 0x0f3a, + 0xaea: 0x061e, 0xaeb: 0x0f3e, 0xaec: 0x0622, 0xaed: 0x0622, 0xaee: 0x0f56, 0xaef: 0x0f5a, + 0xaf0: 0x0f62, 0xaf1: 0x0f66, 0xaf2: 0x0f72, 0xaf3: 0x0626, 0xaf4: 0x0f8a, 0xaf5: 0x173a, + 0xaf6: 0x0fa6, 0xaf7: 0x173f, 0xaf8: 0x0fb2, 0xaf9: 0x16a4, 0xafa: 0x0fc2, 0xafb: 0x1744, + 0xafc: 0x1749, 0xafd: 0x174e, 0xafe: 0x062a, 0xaff: 0x062e, + // Block 0x2c, offset 0xb00 + 0xb00: 0x0ffa, 0xb01: 0x1758, 0xb02: 0x1753, 0xb03: 0x175d, 0xb04: 0x1762, 0xb05: 0x1002, + 0xb06: 0x1006, 0xb07: 0x1006, 0xb08: 0x100e, 0xb09: 0x0636, 0xb0a: 0x1012, 0xb0b: 0x063a, + 0xb0c: 0x063e, 0xb0d: 0x176c, 0xb0e: 0x1026, 0xb0f: 0x102e, 0xb10: 0x103a, 0xb11: 0x0642, + 0xb12: 0x1771, 0xb13: 0x105e, 0xb14: 0x1776, 0xb15: 0x177b, 0xb16: 0x107e, 0xb17: 0x1096, + 0xb18: 0x0646, 0xb19: 0x109e, 0xb1a: 0x10a2, 0xb1b: 0x10a6, 0xb1c: 0x1780, 0xb1d: 0x1785, + 0xb1e: 0x1785, 0xb1f: 0x10be, 0xb20: 0x064a, 0xb21: 0x178a, 0xb22: 0x10d2, 0xb23: 0x10d6, + 0xb24: 0x064e, 0xb25: 0x178f, 0xb26: 0x10f2, 0xb27: 0x0652, 0xb28: 0x1102, 0xb29: 0x10fa, + 0xb2a: 0x110a, 0xb2b: 0x1799, 0xb2c: 0x1122, 0xb2d: 0x0656, 0xb2e: 0x112e, 0xb2f: 0x1136, + 0xb30: 0x1146, 0xb31: 0x065a, 0xb32: 0x17a3, 0xb33: 0x17a8, 0xb34: 0x065e, 0xb35: 0x17ad, + 0xb36: 0x115e, 0xb37: 0x17b2, 0xb38: 0x116a, 0xb39: 0x1176, 0xb3a: 0x117e, 0xb3b: 0x17b7, + 0xb3c: 0x17bc, 0xb3d: 0x1192, 0xb3e: 0x17c1, 0xb3f: 0x119a, + // Block 0x2d, offset 0xb40 + 0xb40: 0x16d1, 0xb41: 0x0662, 0xb42: 0x11b2, 0xb43: 0x11b6, 0xb44: 0x066a, 0xb45: 0x11ba, + 0xb46: 0x0a36, 0xb47: 0x17c6, 0xb48: 0x17cb, 0xb49: 0x16d6, 0xb4a: 0x16db, 0xb4b: 0x11da, + 0xb4c: 0x11de, 0xb4d: 0x13f6, 0xb4e: 0x066e, 0xb4f: 0x120a, 0xb50: 0x1206, 0xb51: 0x120e, + 0xb52: 0x0842, 0xb53: 0x1212, 0xb54: 0x1216, 0xb55: 0x121a, 0xb56: 0x1222, 0xb57: 0x17d0, + 0xb58: 0x121e, 0xb59: 0x1226, 0xb5a: 0x123a, 0xb5b: 0x123e, 0xb5c: 0x122a, 0xb5d: 0x1242, + 0xb5e: 0x1256, 0xb5f: 0x126a, 0xb60: 0x1236, 0xb61: 0x124a, 0xb62: 0x124e, 0xb63: 0x1252, + 0xb64: 0x17d5, 0xb65: 0x17df, 0xb66: 0x17da, 0xb67: 0x0672, 0xb68: 0x1272, 0xb69: 0x1276, + 0xb6a: 0x127e, 0xb6b: 0x17f3, 0xb6c: 0x1282, 0xb6d: 0x17e4, 0xb6e: 0x0676, 0xb6f: 0x067a, + 0xb70: 0x17e9, 0xb71: 0x17ee, 0xb72: 0x067e, 0xb73: 0x12a2, 0xb74: 0x12a6, 0xb75: 0x12aa, + 0xb76: 0x12ae, 0xb77: 0x12ba, 0xb78: 0x12b6, 0xb79: 0x12c2, 0xb7a: 0x12be, 0xb7b: 0x12ce, + 0xb7c: 0x12c6, 0xb7d: 0x12ca, 0xb7e: 0x12d2, 0xb7f: 0x0682, + // Block 0x2e, offset 0xb80 + 0xb80: 0x12da, 0xb81: 0x12de, 0xb82: 0x0686, 0xb83: 0x12ee, 0xb84: 0x12f2, 0xb85: 0x17f8, + 0xb86: 0x12fe, 0xb87: 0x1302, 0xb88: 0x068a, 0xb89: 0x130e, 0xb8a: 0x05be, 0xb8b: 0x17fd, + 0xb8c: 0x1802, 0xb8d: 0x068e, 0xb8e: 0x0692, 0xb8f: 0x133a, 0xb90: 0x1352, 0xb91: 0x136e, + 0xb92: 0x137e, 0xb93: 0x1807, 0xb94: 0x1392, 0xb95: 0x1396, 0xb96: 0x13ae, 0xb97: 0x13ba, + 0xb98: 0x1811, 0xb99: 0x1663, 0xb9a: 0x13c6, 0xb9b: 0x13c2, 0xb9c: 0x13ce, 0xb9d: 0x1668, + 0xb9e: 0x13da, 0xb9f: 0x13e6, 0xba0: 0x1816, 0xba1: 0x181b, 0xba2: 0x1426, 0xba3: 0x1432, + 0xba4: 0x143a, 0xba5: 0x1820, 0xba6: 0x143e, 0xba7: 0x146a, 0xba8: 0x1476, 0xba9: 0x147a, + 0xbaa: 0x1472, 0xbab: 0x1486, 0xbac: 0x148a, 0xbad: 0x1825, 0xbae: 0x1496, 0xbaf: 0x0696, + 0xbb0: 0x149e, 0xbb1: 0x182a, 0xbb2: 0x069a, 0xbb3: 0x14d6, 0xbb4: 0x0ac6, 0xbb5: 0x14ee, + 0xbb6: 0x182f, 0xbb7: 0x1839, 0xbb8: 0x069e, 0xbb9: 0x06a2, 0xbba: 0x1516, 0xbbb: 0x183e, + 0xbbc: 0x06a6, 0xbbd: 0x1843, 0xbbe: 0x152e, 0xbbf: 0x152e, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x1536, 0xbc1: 0x1848, 0xbc2: 0x154e, 0xbc3: 0x06aa, 0xbc4: 0x155e, 0xbc5: 0x156a, + 0xbc6: 0x1572, 0xbc7: 0x157a, 0xbc8: 0x06ae, 0xbc9: 0x184d, 0xbca: 0x158e, 0xbcb: 0x15aa, + 0xbcc: 0x15b6, 0xbcd: 0x06b2, 0xbce: 0x06b6, 0xbcf: 0x15ba, 0xbd0: 0x1852, 0xbd1: 0x06ba, + 0xbd2: 0x1857, 0xbd3: 0x185c, 0xbd4: 0x1861, 0xbd5: 0x15de, 0xbd6: 0x06be, 0xbd7: 0x15f2, + 0xbd8: 0x15fa, 0xbd9: 0x15fe, 0xbda: 0x1606, 0xbdb: 0x160e, 0xbdc: 0x1616, 0xbdd: 0x186b, +} + +// nfcIndex: 22 blocks, 1408 entries, 1408 bytes +// Block 0 is the zero block. +var nfcIndex = [1408]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32, + 0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35, + 0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, + 0xf0: 0x13, + // Block 0x4, offset 0x100 + 0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40, + 0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47, + 0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d, + 0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55, + // Block 0x5, offset 0x140 + 0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b, + 0x14d: 0x5c, + 0x15c: 0x5d, 0x15f: 0x5e, + 0x162: 0x5f, 0x164: 0x60, + 0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16b: 0x64, 0x16c: 0x0e, 0x16d: 0x65, 0x16e: 0x66, 0x16f: 0x67, + 0x170: 0x68, 0x173: 0x69, 0x177: 0x0f, + 0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17, + // Block 0x6, offset 0x180 + 0x180: 0x6a, 0x183: 0x6b, 0x184: 0x6c, 0x186: 0x6d, 0x187: 0x6e, + 0x188: 0x6f, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x70, 0x18c: 0x71, + 0x1ab: 0x72, + 0x1b3: 0x73, 0x1b5: 0x74, 0x1b7: 0x75, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x76, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x77, 0x1c5: 0x78, + 0x1c9: 0x79, 0x1cc: 0x7a, 0x1cd: 0x7b, + // Block 0x8, offset 0x200 + 0x219: 0x7c, 0x21a: 0x7d, 0x21b: 0x7e, + 0x220: 0x7f, 0x223: 0x80, 0x224: 0x81, 0x225: 0x82, 0x226: 0x83, 0x227: 0x84, + 0x22a: 0x85, 0x22b: 0x86, 0x22f: 0x87, + 0x230: 0x88, 0x231: 0x89, 0x232: 0x8a, 0x233: 0x8b, 0x234: 0x8c, 0x235: 0x8d, 0x236: 0x8e, 0x237: 0x88, + 0x238: 0x89, 0x239: 0x8a, 0x23a: 0x8b, 0x23b: 0x8c, 0x23c: 0x8d, 0x23d: 0x8e, 0x23e: 0x88, 0x23f: 0x89, + // Block 0x9, offset 0x240 + 0x240: 0x8a, 0x241: 0x8b, 0x242: 0x8c, 0x243: 0x8d, 0x244: 0x8e, 0x245: 0x88, 0x246: 0x89, 0x247: 0x8a, + 0x248: 0x8b, 0x249: 0x8c, 0x24a: 0x8d, 0x24b: 0x8e, 0x24c: 0x88, 0x24d: 0x89, 0x24e: 0x8a, 0x24f: 0x8b, + 0x250: 0x8c, 0x251: 0x8d, 0x252: 0x8e, 0x253: 0x88, 0x254: 0x89, 0x255: 0x8a, 0x256: 0x8b, 0x257: 0x8c, + 0x258: 0x8d, 0x259: 0x8e, 0x25a: 0x88, 0x25b: 0x89, 0x25c: 0x8a, 0x25d: 0x8b, 0x25e: 0x8c, 0x25f: 0x8d, + 0x260: 0x8e, 0x261: 0x88, 0x262: 0x89, 0x263: 0x8a, 0x264: 0x8b, 0x265: 0x8c, 0x266: 0x8d, 0x267: 0x8e, + 0x268: 0x88, 0x269: 0x89, 0x26a: 0x8a, 0x26b: 0x8b, 0x26c: 0x8c, 0x26d: 0x8d, 0x26e: 0x8e, 0x26f: 0x88, + 0x270: 0x89, 0x271: 0x8a, 0x272: 0x8b, 0x273: 0x8c, 0x274: 0x8d, 0x275: 0x8e, 0x276: 0x88, 0x277: 0x89, + 0x278: 0x8a, 0x279: 0x8b, 0x27a: 0x8c, 0x27b: 0x8d, 0x27c: 0x8e, 0x27d: 0x88, 0x27e: 0x89, 0x27f: 0x8a, + // Block 0xa, offset 0x280 + 0x280: 0x8b, 0x281: 0x8c, 0x282: 0x8d, 0x283: 0x8e, 0x284: 0x88, 0x285: 0x89, 0x286: 0x8a, 0x287: 0x8b, + 0x288: 0x8c, 0x289: 0x8d, 0x28a: 0x8e, 0x28b: 0x88, 0x28c: 0x89, 0x28d: 0x8a, 0x28e: 0x8b, 0x28f: 0x8c, + 0x290: 0x8d, 0x291: 0x8e, 0x292: 0x88, 0x293: 0x89, 0x294: 0x8a, 0x295: 0x8b, 0x296: 0x8c, 0x297: 0x8d, + 0x298: 0x8e, 0x299: 0x88, 0x29a: 0x89, 0x29b: 0x8a, 0x29c: 0x8b, 0x29d: 0x8c, 0x29e: 0x8d, 0x29f: 0x8e, + 0x2a0: 0x88, 0x2a1: 0x89, 0x2a2: 0x8a, 0x2a3: 0x8b, 0x2a4: 0x8c, 0x2a5: 0x8d, 0x2a6: 0x8e, 0x2a7: 0x88, + 0x2a8: 0x89, 0x2a9: 0x8a, 0x2aa: 0x8b, 0x2ab: 0x8c, 0x2ac: 0x8d, 0x2ad: 0x8e, 0x2ae: 0x88, 0x2af: 0x89, + 0x2b0: 0x8a, 0x2b1: 0x8b, 0x2b2: 0x8c, 0x2b3: 0x8d, 0x2b4: 0x8e, 0x2b5: 0x88, 0x2b6: 0x89, 0x2b7: 0x8a, + 0x2b8: 0x8b, 0x2b9: 0x8c, 0x2ba: 0x8d, 0x2bb: 0x8e, 0x2bc: 0x88, 0x2bd: 0x89, 0x2be: 0x8a, 0x2bf: 0x8b, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x8c, 0x2c1: 0x8d, 0x2c2: 0x8e, 0x2c3: 0x88, 0x2c4: 0x89, 0x2c5: 0x8a, 0x2c6: 0x8b, 0x2c7: 0x8c, + 0x2c8: 0x8d, 0x2c9: 0x8e, 0x2ca: 0x88, 0x2cb: 0x89, 0x2cc: 0x8a, 0x2cd: 0x8b, 0x2ce: 0x8c, 0x2cf: 0x8d, + 0x2d0: 0x8e, 0x2d1: 0x88, 0x2d2: 0x89, 0x2d3: 0x8a, 0x2d4: 0x8b, 0x2d5: 0x8c, 0x2d6: 0x8d, 0x2d7: 0x8e, + 0x2d8: 0x88, 0x2d9: 0x89, 0x2da: 0x8a, 0x2db: 0x8b, 0x2dc: 0x8c, 0x2dd: 0x8d, 0x2de: 0x8f, + // Block 0xc, offset 0x300 + 0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20, + 0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x90, 0x32d: 0x91, 0x32e: 0x92, + 0x331: 0x93, 0x332: 0x94, 0x333: 0x95, 0x334: 0x96, + 0x338: 0x97, 0x339: 0x98, 0x33a: 0x99, 0x33b: 0x9a, 0x33e: 0x9b, 0x33f: 0x9c, + // Block 0xd, offset 0x340 + 0x347: 0x9d, + 0x34b: 0x9e, 0x34d: 0x9f, + 0x368: 0xa0, 0x36b: 0xa1, + 0x374: 0xa2, + 0x37a: 0xa3, 0x37d: 0xa4, + // Block 0xe, offset 0x380 + 0x381: 0xa5, 0x382: 0xa6, 0x384: 0xa7, 0x385: 0x83, 0x387: 0xa8, + 0x388: 0xa9, 0x38b: 0xaa, 0x38c: 0xab, 0x38d: 0xac, + 0x391: 0xad, 0x392: 0xae, 0x393: 0xaf, 0x396: 0xb0, 0x397: 0xb1, + 0x398: 0x74, 0x39a: 0xb2, 0x39c: 0xb3, + 0x3a0: 0xb4, 0x3a4: 0xb5, 0x3a5: 0xb6, 0x3a7: 0xb7, + 0x3a8: 0xb8, 0x3a9: 0xb9, 0x3aa: 0xba, + 0x3b0: 0x74, 0x3b5: 0xbb, 0x3b6: 0xbc, + // Block 0xf, offset 0x3c0 + 0x3eb: 0xbd, 0x3ec: 0xbe, + 0x3ff: 0xbf, + // Block 0x10, offset 0x400 + 0x432: 0xc0, + // Block 0x11, offset 0x440 + 0x445: 0xc1, 0x446: 0xc2, 0x447: 0xc3, + 0x449: 0xc4, + // Block 0x12, offset 0x480 + 0x480: 0xc5, 0x484: 0xbe, + 0x48b: 0xc6, + 0x4a3: 0xc7, 0x4a5: 0xc8, + // Block 0x13, offset 0x4c0 + 0x4c8: 0xc9, + // Block 0x14, offset 0x500 + 0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c, + 0x528: 0x2d, + // Block 0x15, offset 0x540 + 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, + 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, + 0x56f: 0x12, +} + +// nfcSparseOffset: 156 entries, 312 bytes +var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xd0, 0xd2, 0xd7, 0xe8, 0xf4, 0xf6, 0xfc, 0xfe, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10b, 0x10e, 0x110, 0x113, 0x116, 0x11a, 0x120, 0x122, 0x12b, 0x12d, 0x130, 0x132, 0x13d, 0x141, 0x14f, 0x152, 0x158, 0x15e, 0x169, 0x16d, 0x16f, 0x171, 0x173, 0x175, 0x177, 0x17d, 0x181, 0x183, 0x185, 0x18d, 0x191, 0x194, 0x196, 0x198, 0x19b, 0x19e, 0x1a0, 0x1a2, 0x1a4, 0x1a6, 0x1ac, 0x1af, 0x1b1, 0x1b8, 0x1be, 0x1c4, 0x1cc, 0x1d2, 0x1d8, 0x1de, 0x1e2, 0x1f0, 0x1f9, 0x1fc, 0x1ff, 0x201, 0x204, 0x206, 0x20a, 0x20f, 0x211, 0x213, 0x218, 0x21e, 0x220, 0x222, 0x224, 0x22a, 0x22d, 0x22f, 0x231, 0x237, 0x23a, 0x242, 0x249, 0x24c, 0x24f, 0x251, 0x254, 0x25c, 0x260, 0x267, 0x26a, 0x270, 0x272, 0x275, 0x277, 0x27a, 0x27f, 0x281, 0x283, 0x285, 0x287, 0x289, 0x28c, 0x28e, 0x290, 0x292, 0x294, 0x296, 0x2a3, 0x2ad, 0x2af, 0x2b1, 0x2b7, 0x2b9, 0x2bb, 0x2be} + +// nfcSparseValues: 704 entries, 2816 bytes +var nfcSparseValues = [704]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x04}, + {value: 0xa100, lo: 0xa8, hi: 0xa8}, + {value: 0x8100, lo: 0xaf, hi: 0xaf}, + {value: 0x8100, lo: 0xb4, hi: 0xb4}, + {value: 0x8100, lo: 0xb8, hi: 0xb8}, + // Block 0x1, offset 0x5 + {value: 0x0091, lo: 0x03}, + {value: 0x46f9, lo: 0xa0, hi: 0xa1}, + {value: 0x472b, lo: 0xaf, hi: 0xb0}, + {value: 0xa000, lo: 0xb7, hi: 0xb7}, + // Block 0x2, offset 0x9 + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + // Block 0x3, offset 0xb + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x98, hi: 0x9d}, + // Block 0x4, offset 0xd + {value: 0x0006, lo: 0x0a}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x85, hi: 0x85}, + {value: 0xa000, lo: 0x89, hi: 0x89}, + {value: 0x4857, lo: 0x8a, hi: 0x8a}, + {value: 0x4875, lo: 0x8b, hi: 0x8b}, + {value: 0x36de, lo: 0x8c, hi: 0x8c}, + {value: 0x36f6, lo: 0x8d, hi: 0x8d}, + {value: 0x488d, lo: 0x8e, hi: 0x8e}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x3714, lo: 0x93, hi: 0x94}, + // Block 0x5, offset 0x18 + {value: 0x0000, lo: 0x0f}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0xa000, lo: 0x8d, hi: 0x8d}, + {value: 0x37bc, lo: 0x90, hi: 0x90}, + {value: 0x37c8, lo: 0x91, hi: 0x91}, + {value: 0x37b6, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x96, hi: 0x96}, + {value: 0x382e, lo: 0x97, hi: 0x97}, + {value: 0x37f8, lo: 0x9c, hi: 0x9c}, + {value: 0x37e0, lo: 0x9d, hi: 0x9d}, + {value: 0x380a, lo: 0x9e, hi: 0x9e}, + {value: 0xa000, lo: 0xb4, hi: 0xb5}, + {value: 0x3834, lo: 0xb6, hi: 0xb6}, + {value: 0x383a, lo: 0xb7, hi: 0xb7}, + // Block 0x6, offset 0x28 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x83, hi: 0x87}, + // Block 0x7, offset 0x2a + {value: 0x0001, lo: 0x04}, + {value: 0x8114, lo: 0x81, hi: 0x82}, + {value: 0x8133, lo: 0x84, hi: 0x84}, + {value: 0x812e, lo: 0x85, hi: 0x85}, + {value: 0x810e, lo: 0x87, hi: 0x87}, + // Block 0x8, offset 0x2f + {value: 0x0000, lo: 0x0a}, + {value: 0x8133, lo: 0x90, hi: 0x97}, + {value: 0x811a, lo: 0x98, hi: 0x98}, + {value: 0x811b, lo: 0x99, hi: 0x99}, + {value: 0x811c, lo: 0x9a, hi: 0x9a}, + {value: 0x3858, lo: 0xa2, hi: 0xa2}, + {value: 0x385e, lo: 0xa3, hi: 0xa3}, + {value: 0x386a, lo: 0xa4, hi: 0xa4}, + {value: 0x3864, lo: 0xa5, hi: 0xa5}, + {value: 0x3870, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xa7, hi: 0xa7}, + // Block 0x9, offset 0x3a + {value: 0x0000, lo: 0x0e}, + {value: 0x3882, lo: 0x80, hi: 0x80}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0x3876, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x387c, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x95, hi: 0x95}, + {value: 0x8133, lo: 0x96, hi: 0x9c}, + {value: 0x8133, lo: 0x9f, hi: 0xa2}, + {value: 0x812e, lo: 0xa3, hi: 0xa3}, + {value: 0x8133, lo: 0xa4, hi: 0xa4}, + {value: 0x8133, lo: 0xa7, hi: 0xa8}, + {value: 0x812e, lo: 0xaa, hi: 0xaa}, + {value: 0x8133, lo: 0xab, hi: 0xac}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + // Block 0xa, offset 0x49 + {value: 0x0000, lo: 0x0c}, + {value: 0x8120, lo: 0x91, hi: 0x91}, + {value: 0x8133, lo: 0xb0, hi: 0xb0}, + {value: 0x812e, lo: 0xb1, hi: 0xb1}, + {value: 0x8133, lo: 0xb2, hi: 0xb3}, + {value: 0x812e, lo: 0xb4, hi: 0xb4}, + {value: 0x8133, lo: 0xb5, hi: 0xb6}, + {value: 0x812e, lo: 0xb7, hi: 0xb9}, + {value: 0x8133, lo: 0xba, hi: 0xba}, + {value: 0x812e, lo: 0xbb, hi: 0xbc}, + {value: 0x8133, lo: 0xbd, hi: 0xbd}, + {value: 0x812e, lo: 0xbe, hi: 0xbe}, + {value: 0x8133, lo: 0xbf, hi: 0xbf}, + // Block 0xb, offset 0x56 + {value: 0x0005, lo: 0x07}, + {value: 0x8133, lo: 0x80, hi: 0x80}, + {value: 0x8133, lo: 0x81, hi: 0x81}, + {value: 0x812e, lo: 0x82, hi: 0x83}, + {value: 0x812e, lo: 0x84, hi: 0x85}, + {value: 0x812e, lo: 0x86, hi: 0x87}, + {value: 0x812e, lo: 0x88, hi: 0x89}, + {value: 0x8133, lo: 0x8a, hi: 0x8a}, + // Block 0xc, offset 0x5e + {value: 0x0000, lo: 0x04}, + {value: 0x8133, lo: 0xab, hi: 0xb1}, + {value: 0x812e, lo: 0xb2, hi: 0xb2}, + {value: 0x8133, lo: 0xb3, hi: 0xb3}, + {value: 0x812e, lo: 0xbd, hi: 0xbd}, + // Block 0xd, offset 0x63 + {value: 0x0000, lo: 0x04}, + {value: 0x8133, lo: 0x96, hi: 0x99}, + {value: 0x8133, lo: 0x9b, hi: 0xa3}, + {value: 0x8133, lo: 0xa5, hi: 0xa7}, + {value: 0x8133, lo: 0xa9, hi: 0xad}, + // Block 0xe, offset 0x68 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x99, hi: 0x9b}, + // Block 0xf, offset 0x6a + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0xa8, hi: 0xa8}, + {value: 0x3eef, lo: 0xa9, hi: 0xa9}, + {value: 0xa000, lo: 0xb0, hi: 0xb0}, + {value: 0x3ef7, lo: 0xb1, hi: 0xb1}, + {value: 0xa000, lo: 0xb3, hi: 0xb3}, + {value: 0x3eff, lo: 0xb4, hi: 0xb4}, + {value: 0x9903, lo: 0xbc, hi: 0xbc}, + // Block 0x10, offset 0x72 + {value: 0x0008, lo: 0x06}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x8133, lo: 0x91, hi: 0x91}, + {value: 0x812e, lo: 0x92, hi: 0x92}, + {value: 0x8133, lo: 0x93, hi: 0x93}, + {value: 0x8133, lo: 0x94, hi: 0x94}, + {value: 0x4533, lo: 0x98, hi: 0x9f}, + // Block 0x11, offset 0x79 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x12, offset 0x7c + {value: 0x0008, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cab, lo: 0x8b, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x4573, lo: 0x9c, hi: 0x9d}, + {value: 0x4583, lo: 0x9f, hi: 0x9f}, + {value: 0x8133, lo: 0xbe, hi: 0xbe}, + // Block 0x13, offset 0x84 + {value: 0x0000, lo: 0x03}, + {value: 0x45ab, lo: 0xb3, hi: 0xb3}, + {value: 0x45b3, lo: 0xb6, hi: 0xb6}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + // Block 0x14, offset 0x88 + {value: 0x0008, lo: 0x03}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x458b, lo: 0x99, hi: 0x9b}, + {value: 0x45a3, lo: 0x9e, hi: 0x9e}, + // Block 0x15, offset 0x8c + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + // Block 0x16, offset 0x8e + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + // Block 0x17, offset 0x90 + {value: 0x0000, lo: 0x08}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cc3, lo: 0x88, hi: 0x88}, + {value: 0x2cbb, lo: 0x8b, hi: 0x8b}, + {value: 0x2ccb, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x96, hi: 0x97}, + {value: 0x45bb, lo: 0x9c, hi: 0x9c}, + {value: 0x45c3, lo: 0x9d, hi: 0x9d}, + // Block 0x18, offset 0x99 + {value: 0x0000, lo: 0x03}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x2cd3, lo: 0x94, hi: 0x94}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x19, offset 0x9d + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cdb, lo: 0x8a, hi: 0x8a}, + {value: 0x2ceb, lo: 0x8b, hi: 0x8b}, + {value: 0x2ce3, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1a, offset 0xa4 + {value: 0x1801, lo: 0x04}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x3f07, lo: 0x88, hi: 0x88}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x8121, lo: 0x95, hi: 0x96}, + // Block 0x1b, offset 0xa9 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + {value: 0xa000, lo: 0xbf, hi: 0xbf}, + // Block 0x1c, offset 0xac + {value: 0x0000, lo: 0x09}, + {value: 0x2cf3, lo: 0x80, hi: 0x80}, + {value: 0x9900, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x2cfb, lo: 0x87, hi: 0x87}, + {value: 0x2d03, lo: 0x88, hi: 0x88}, + {value: 0x2f67, lo: 0x8a, hi: 0x8a}, + {value: 0x2def, lo: 0x8b, hi: 0x8b}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x95, hi: 0x96}, + // Block 0x1d, offset 0xb6 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1e, offset 0xb9 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2d0b, lo: 0x8a, hi: 0x8a}, + {value: 0x2d1b, lo: 0x8b, hi: 0x8b}, + {value: 0x2d13, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1f, offset 0xc0 + {value: 0x6bdd, lo: 0x07}, + {value: 0x9905, lo: 0x8a, hi: 0x8a}, + {value: 0x9900, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x3f0f, lo: 0x9a, hi: 0x9a}, + {value: 0x2f6f, lo: 0x9c, hi: 0x9c}, + {value: 0x2dfa, lo: 0x9d, hi: 0x9d}, + {value: 0x2d23, lo: 0x9e, hi: 0x9f}, + // Block 0x20, offset 0xc8 + {value: 0x0000, lo: 0x02}, + {value: 0x8123, lo: 0xb8, hi: 0xb9}, + {value: 0x8105, lo: 0xba, hi: 0xba}, + // Block 0x21, offset 0xcb + {value: 0x0000, lo: 0x01}, + {value: 0x8124, lo: 0x88, hi: 0x8b}, + // Block 0x22, offset 0xcd + {value: 0x0000, lo: 0x02}, + {value: 0x8125, lo: 0xb8, hi: 0xb9}, + {value: 0x8105, lo: 0xba, hi: 0xba}, + // Block 0x23, offset 0xd0 + {value: 0x0000, lo: 0x01}, + {value: 0x8126, lo: 0x88, hi: 0x8b}, + // Block 0x24, offset 0xd2 + {value: 0x0000, lo: 0x04}, + {value: 0x812e, lo: 0x98, hi: 0x99}, + {value: 0x812e, lo: 0xb5, hi: 0xb5}, + {value: 0x812e, lo: 0xb7, hi: 0xb7}, + {value: 0x812c, lo: 0xb9, hi: 0xb9}, + // Block 0x25, offset 0xd7 + {value: 0x0000, lo: 0x10}, + {value: 0x264a, lo: 0x83, hi: 0x83}, + {value: 0x2651, lo: 0x8d, hi: 0x8d}, + {value: 0x2658, lo: 0x92, hi: 0x92}, + {value: 0x265f, lo: 0x97, hi: 0x97}, + {value: 0x2666, lo: 0x9c, hi: 0x9c}, + {value: 0x2643, lo: 0xa9, hi: 0xa9}, + {value: 0x8127, lo: 0xb1, hi: 0xb1}, + {value: 0x8128, lo: 0xb2, hi: 0xb2}, + {value: 0x4a9b, lo: 0xb3, hi: 0xb3}, + {value: 0x8129, lo: 0xb4, hi: 0xb4}, + {value: 0x4aa4, lo: 0xb5, hi: 0xb5}, + {value: 0x45cb, lo: 0xb6, hi: 0xb6}, + {value: 0x8200, lo: 0xb7, hi: 0xb7}, + {value: 0x45d3, lo: 0xb8, hi: 0xb8}, + {value: 0x8200, lo: 0xb9, hi: 0xb9}, + {value: 0x8128, lo: 0xba, hi: 0xbd}, + // Block 0x26, offset 0xe8 + {value: 0x0000, lo: 0x0b}, + {value: 0x8128, lo: 0x80, hi: 0x80}, + {value: 0x4aad, lo: 0x81, hi: 0x81}, + {value: 0x8133, lo: 0x82, hi: 0x83}, + {value: 0x8105, lo: 0x84, hi: 0x84}, + {value: 0x8133, lo: 0x86, hi: 0x87}, + {value: 0x2674, lo: 0x93, hi: 0x93}, + {value: 0x267b, lo: 0x9d, hi: 0x9d}, + {value: 0x2682, lo: 0xa2, hi: 0xa2}, + {value: 0x2689, lo: 0xa7, hi: 0xa7}, + {value: 0x2690, lo: 0xac, hi: 0xac}, + {value: 0x266d, lo: 0xb9, hi: 0xb9}, + // Block 0x27, offset 0xf4 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x86, hi: 0x86}, + // Block 0x28, offset 0xf6 + {value: 0x0000, lo: 0x05}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x2d2b, lo: 0xa6, hi: 0xa6}, + {value: 0x9900, lo: 0xae, hi: 0xae}, + {value: 0x8103, lo: 0xb7, hi: 0xb7}, + {value: 0x8105, lo: 0xb9, hi: 0xba}, + // Block 0x29, offset 0xfc + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x8d, hi: 0x8d}, + // Block 0x2a, offset 0xfe + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x80, hi: 0x92}, + // Block 0x2b, offset 0x100 + {value: 0x0000, lo: 0x01}, + {value: 0xb900, lo: 0xa1, hi: 0xb5}, + // Block 0x2c, offset 0x102 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xa8, hi: 0xbf}, + // Block 0x2d, offset 0x104 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0x80, hi: 0x82}, + // Block 0x2e, offset 0x106 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x9d, hi: 0x9f}, + // Block 0x2f, offset 0x108 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x94, hi: 0x94}, + {value: 0x8105, lo: 0xb4, hi: 0xb4}, + // Block 0x30, offset 0x10b + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x92, hi: 0x92}, + {value: 0x8133, lo: 0x9d, hi: 0x9d}, + // Block 0x31, offset 0x10e + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa9, hi: 0xa9}, + // Block 0x32, offset 0x110 + {value: 0x0004, lo: 0x02}, + {value: 0x812f, lo: 0xb9, hi: 0xba}, + {value: 0x812e, lo: 0xbb, hi: 0xbb}, + // Block 0x33, offset 0x113 + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0x97, hi: 0x97}, + {value: 0x812e, lo: 0x98, hi: 0x98}, + // Block 0x34, offset 0x116 + {value: 0x0000, lo: 0x03}, + {value: 0x8105, lo: 0xa0, hi: 0xa0}, + {value: 0x8133, lo: 0xb5, hi: 0xbc}, + {value: 0x812e, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x11a + {value: 0x0000, lo: 0x05}, + {value: 0x8133, lo: 0xb0, hi: 0xb4}, + {value: 0x812e, lo: 0xb5, hi: 0xba}, + {value: 0x8133, lo: 0xbb, hi: 0xbc}, + {value: 0x812e, lo: 0xbd, hi: 0xbd}, + {value: 0x812e, lo: 0xbf, hi: 0xbf}, + // Block 0x36, offset 0x120 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x80, hi: 0x80}, + // Block 0x37, offset 0x122 + {value: 0x0000, lo: 0x08}, + {value: 0x2d73, lo: 0x80, hi: 0x80}, + {value: 0x2d7b, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x82, hi: 0x82}, + {value: 0x2d83, lo: 0x83, hi: 0x83}, + {value: 0x8105, lo: 0x84, hi: 0x84}, + {value: 0x8133, lo: 0xab, hi: 0xab}, + {value: 0x812e, lo: 0xac, hi: 0xac}, + {value: 0x8133, lo: 0xad, hi: 0xb3}, + // Block 0x38, offset 0x12b + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xaa, hi: 0xab}, + // Block 0x39, offset 0x12d + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xa6, hi: 0xa6}, + {value: 0x8105, lo: 0xb2, hi: 0xb3}, + // Block 0x3a, offset 0x130 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0xb7, hi: 0xb7}, + // Block 0x3b, offset 0x132 + {value: 0x0000, lo: 0x0a}, + {value: 0x8133, lo: 0x90, hi: 0x92}, + {value: 0x8101, lo: 0x94, hi: 0x94}, + {value: 0x812e, lo: 0x95, hi: 0x99}, + {value: 0x8133, lo: 0x9a, hi: 0x9b}, + {value: 0x812e, lo: 0x9c, hi: 0x9f}, + {value: 0x8133, lo: 0xa0, hi: 0xa0}, + {value: 0x8101, lo: 0xa2, hi: 0xa8}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + {value: 0x8133, lo: 0xb4, hi: 0xb4}, + {value: 0x8133, lo: 0xb8, hi: 0xb9}, + // Block 0x3c, offset 0x13d + {value: 0x0004, lo: 0x03}, + {value: 0x0436, lo: 0x80, hi: 0x81}, + {value: 0x8100, lo: 0x97, hi: 0x97}, + {value: 0x8100, lo: 0xbe, hi: 0xbe}, + // Block 0x3d, offset 0x141 + {value: 0x0000, lo: 0x0d}, + {value: 0x8133, lo: 0x90, hi: 0x91}, + {value: 0x8101, lo: 0x92, hi: 0x93}, + {value: 0x8133, lo: 0x94, hi: 0x97}, + {value: 0x8101, lo: 0x98, hi: 0x9a}, + {value: 0x8133, lo: 0x9b, hi: 0x9c}, + {value: 0x8133, lo: 0xa1, hi: 0xa1}, + {value: 0x8101, lo: 0xa5, hi: 0xa6}, + {value: 0x8133, lo: 0xa7, hi: 0xa7}, + {value: 0x812e, lo: 0xa8, hi: 0xa8}, + {value: 0x8133, lo: 0xa9, hi: 0xa9}, + {value: 0x8101, lo: 0xaa, hi: 0xab}, + {value: 0x812e, lo: 0xac, hi: 0xaf}, + {value: 0x8133, lo: 0xb0, hi: 0xb0}, + // Block 0x3e, offset 0x14f + {value: 0x4292, lo: 0x02}, + {value: 0x01bb, lo: 0xa6, hi: 0xa6}, + {value: 0x0057, lo: 0xaa, hi: 0xab}, + // Block 0x3f, offset 0x152 + {value: 0x0007, lo: 0x05}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + {value: 0x3bd0, lo: 0x9a, hi: 0x9b}, + {value: 0x3bde, lo: 0xae, hi: 0xae}, + // Block 0x40, offset 0x158 + {value: 0x000e, lo: 0x05}, + {value: 0x3be5, lo: 0x8d, hi: 0x8e}, + {value: 0x3bec, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + // Block 0x41, offset 0x15e + {value: 0x63f1, lo: 0x0a}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0x3bfa, lo: 0x84, hi: 0x84}, + {value: 0xa000, lo: 0x88, hi: 0x88}, + {value: 0x3c01, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0x3c08, lo: 0x8c, hi: 0x8c}, + {value: 0xa000, lo: 0xa3, hi: 0xa3}, + {value: 0x3c0f, lo: 0xa4, hi: 0xa5}, + {value: 0x3c16, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xbc, hi: 0xbc}, + // Block 0x42, offset 0x169 + {value: 0x0007, lo: 0x03}, + {value: 0x3c7f, lo: 0xa0, hi: 0xa1}, + {value: 0x3ca9, lo: 0xa2, hi: 0xa3}, + {value: 0x3cd3, lo: 0xaa, hi: 0xad}, + // Block 0x43, offset 0x16d + {value: 0x0004, lo: 0x01}, + {value: 0x048e, lo: 0xa9, hi: 0xaa}, + // Block 0x44, offset 0x16f + {value: 0x0000, lo: 0x01}, + {value: 0x44f4, lo: 0x9c, hi: 0x9c}, + // Block 0x45, offset 0x171 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xaf, hi: 0xb1}, + // Block 0x46, offset 0x173 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x47, offset 0x175 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xa0, hi: 0xbf}, + // Block 0x48, offset 0x177 + {value: 0x0000, lo: 0x05}, + {value: 0x812d, lo: 0xaa, hi: 0xaa}, + {value: 0x8132, lo: 0xab, hi: 0xab}, + {value: 0x8134, lo: 0xac, hi: 0xac}, + {value: 0x812f, lo: 0xad, hi: 0xad}, + {value: 0x8130, lo: 0xae, hi: 0xaf}, + // Block 0x49, offset 0x17d + {value: 0x0000, lo: 0x03}, + {value: 0x4ab6, lo: 0xb3, hi: 0xb3}, + {value: 0x4ab6, lo: 0xb5, hi: 0xb6}, + {value: 0x4ab6, lo: 0xba, hi: 0xbf}, + // Block 0x4a, offset 0x181 + {value: 0x0000, lo: 0x01}, + {value: 0x4ab6, lo: 0x8f, hi: 0xa3}, + // Block 0x4b, offset 0x183 + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xae, hi: 0xbe}, + // Block 0x4c, offset 0x185 + {value: 0x0000, lo: 0x07}, + {value: 0x8100, lo: 0x84, hi: 0x84}, + {value: 0x8100, lo: 0x87, hi: 0x87}, + {value: 0x8100, lo: 0x90, hi: 0x90}, + {value: 0x8100, lo: 0x9e, hi: 0x9e}, + {value: 0x8100, lo: 0xa1, hi: 0xa1}, + {value: 0x8100, lo: 0xb2, hi: 0xb2}, + {value: 0x8100, lo: 0xbb, hi: 0xbb}, + // Block 0x4d, offset 0x18d + {value: 0x0000, lo: 0x03}, + {value: 0x8100, lo: 0x80, hi: 0x80}, + {value: 0x8100, lo: 0x8b, hi: 0x8b}, + {value: 0x8100, lo: 0x8e, hi: 0x8e}, + // Block 0x4e, offset 0x191 + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0xaf, hi: 0xaf}, + {value: 0x8133, lo: 0xb4, hi: 0xbd}, + // Block 0x4f, offset 0x194 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x9e, hi: 0x9f}, + // Block 0x50, offset 0x196 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xb0, hi: 0xb1}, + // Block 0x51, offset 0x198 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x86, hi: 0x86}, + {value: 0x8105, lo: 0xac, hi: 0xac}, + // Block 0x52, offset 0x19b + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x84, hi: 0x84}, + {value: 0x8133, lo: 0xa0, hi: 0xb1}, + // Block 0x53, offset 0x19e + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0xab, hi: 0xad}, + // Block 0x54, offset 0x1a0 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x93, hi: 0x93}, + // Block 0x55, offset 0x1a2 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0xb3, hi: 0xb3}, + // Block 0x56, offset 0x1a4 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x80, hi: 0x80}, + // Block 0x57, offset 0x1a6 + {value: 0x0000, lo: 0x05}, + {value: 0x8133, lo: 0xb0, hi: 0xb0}, + {value: 0x8133, lo: 0xb2, hi: 0xb3}, + {value: 0x812e, lo: 0xb4, hi: 0xb4}, + {value: 0x8133, lo: 0xb7, hi: 0xb8}, + {value: 0x8133, lo: 0xbe, hi: 0xbf}, + // Block 0x58, offset 0x1ac + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0x81, hi: 0x81}, + {value: 0x8105, lo: 0xb6, hi: 0xb6}, + // Block 0x59, offset 0x1af + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xad, hi: 0xad}, + // Block 0x5a, offset 0x1b1 + {value: 0x0000, lo: 0x06}, + {value: 0xe500, lo: 0x80, hi: 0x80}, + {value: 0xc600, lo: 0x81, hi: 0x9b}, + {value: 0xe500, lo: 0x9c, hi: 0x9c}, + {value: 0xc600, lo: 0x9d, hi: 0xb7}, + {value: 0xe500, lo: 0xb8, hi: 0xb8}, + {value: 0xc600, lo: 0xb9, hi: 0xbf}, + // Block 0x5b, offset 0x1b8 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x93}, + {value: 0xe500, lo: 0x94, hi: 0x94}, + {value: 0xc600, lo: 0x95, hi: 0xaf}, + {value: 0xe500, lo: 0xb0, hi: 0xb0}, + {value: 0xc600, lo: 0xb1, hi: 0xbf}, + // Block 0x5c, offset 0x1be + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8b}, + {value: 0xe500, lo: 0x8c, hi: 0x8c}, + {value: 0xc600, lo: 0x8d, hi: 0xa7}, + {value: 0xe500, lo: 0xa8, hi: 0xa8}, + {value: 0xc600, lo: 0xa9, hi: 0xbf}, + // Block 0x5d, offset 0x1c4 + {value: 0x0000, lo: 0x07}, + {value: 0xc600, lo: 0x80, hi: 0x83}, + {value: 0xe500, lo: 0x84, hi: 0x84}, + {value: 0xc600, lo: 0x85, hi: 0x9f}, + {value: 0xe500, lo: 0xa0, hi: 0xa0}, + {value: 0xc600, lo: 0xa1, hi: 0xbb}, + {value: 0xe500, lo: 0xbc, hi: 0xbc}, + {value: 0xc600, lo: 0xbd, hi: 0xbf}, + // Block 0x5e, offset 0x1cc + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x97}, + {value: 0xe500, lo: 0x98, hi: 0x98}, + {value: 0xc600, lo: 0x99, hi: 0xb3}, + {value: 0xe500, lo: 0xb4, hi: 0xb4}, + {value: 0xc600, lo: 0xb5, hi: 0xbf}, + // Block 0x5f, offset 0x1d2 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8f}, + {value: 0xe500, lo: 0x90, hi: 0x90}, + {value: 0xc600, lo: 0x91, hi: 0xab}, + {value: 0xe500, lo: 0xac, hi: 0xac}, + {value: 0xc600, lo: 0xad, hi: 0xbf}, + // Block 0x60, offset 0x1d8 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + {value: 0xe500, lo: 0xa4, hi: 0xa4}, + {value: 0xc600, lo: 0xa5, hi: 0xbf}, + // Block 0x61, offset 0x1de + {value: 0x0000, lo: 0x03}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + // Block 0x62, offset 0x1e2 + {value: 0x0006, lo: 0x0d}, + {value: 0x43a7, lo: 0x9d, hi: 0x9d}, + {value: 0x8116, lo: 0x9e, hi: 0x9e}, + {value: 0x4419, lo: 0x9f, hi: 0x9f}, + {value: 0x4407, lo: 0xaa, hi: 0xab}, + {value: 0x450b, lo: 0xac, hi: 0xac}, + {value: 0x4513, lo: 0xad, hi: 0xad}, + {value: 0x435f, lo: 0xae, hi: 0xb1}, + {value: 0x437d, lo: 0xb2, hi: 0xb4}, + {value: 0x4395, lo: 0xb5, hi: 0xb6}, + {value: 0x43a1, lo: 0xb8, hi: 0xb8}, + {value: 0x43ad, lo: 0xb9, hi: 0xbb}, + {value: 0x43c5, lo: 0xbc, hi: 0xbc}, + {value: 0x43cb, lo: 0xbe, hi: 0xbe}, + // Block 0x63, offset 0x1f0 + {value: 0x0006, lo: 0x08}, + {value: 0x43d1, lo: 0x80, hi: 0x81}, + {value: 0x43dd, lo: 0x83, hi: 0x84}, + {value: 0x43ef, lo: 0x86, hi: 0x89}, + {value: 0x4413, lo: 0x8a, hi: 0x8a}, + {value: 0x438f, lo: 0x8b, hi: 0x8b}, + {value: 0x4377, lo: 0x8c, hi: 0x8c}, + {value: 0x43bf, lo: 0x8d, hi: 0x8d}, + {value: 0x43e9, lo: 0x8e, hi: 0x8e}, + // Block 0x64, offset 0x1f9 + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0xa4, hi: 0xa5}, + {value: 0x8100, lo: 0xb0, hi: 0xb1}, + // Block 0x65, offset 0x1fc + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0x9b, hi: 0x9d}, + {value: 0x8200, lo: 0x9e, hi: 0xa3}, + // Block 0x66, offset 0x1ff + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x90, hi: 0x90}, + // Block 0x67, offset 0x201 + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0x99, hi: 0x99}, + {value: 0x8200, lo: 0xb2, hi: 0xb4}, + // Block 0x68, offset 0x204 + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xbc, hi: 0xbd}, + // Block 0x69, offset 0x206 + {value: 0x0000, lo: 0x03}, + {value: 0x8133, lo: 0xa0, hi: 0xa6}, + {value: 0x812e, lo: 0xa7, hi: 0xad}, + {value: 0x8133, lo: 0xae, hi: 0xaf}, + // Block 0x6a, offset 0x20a + {value: 0x0000, lo: 0x04}, + {value: 0x8100, lo: 0x89, hi: 0x8c}, + {value: 0x8100, lo: 0xb0, hi: 0xb2}, + {value: 0x8100, lo: 0xb4, hi: 0xb4}, + {value: 0x8100, lo: 0xb6, hi: 0xbf}, + // Block 0x6b, offset 0x20f + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x81, hi: 0x8c}, + // Block 0x6c, offset 0x211 + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xb5, hi: 0xba}, + // Block 0x6d, offset 0x213 + {value: 0x0000, lo: 0x04}, + {value: 0x4ab6, lo: 0x9e, hi: 0x9f}, + {value: 0x4ab6, lo: 0xa3, hi: 0xa3}, + {value: 0x4ab6, lo: 0xa5, hi: 0xa6}, + {value: 0x4ab6, lo: 0xaa, hi: 0xaf}, + // Block 0x6e, offset 0x218 + {value: 0x0000, lo: 0x05}, + {value: 0x4ab6, lo: 0x82, hi: 0x87}, + {value: 0x4ab6, lo: 0x8a, hi: 0x8f}, + {value: 0x4ab6, lo: 0x92, hi: 0x97}, + {value: 0x4ab6, lo: 0x9a, hi: 0x9c}, + {value: 0x8100, lo: 0xa3, hi: 0xa3}, + // Block 0x6f, offset 0x21e + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0xbd, hi: 0xbd}, + // Block 0x70, offset 0x220 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0xa0, hi: 0xa0}, + // Block 0x71, offset 0x222 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xb6, hi: 0xba}, + // Block 0x72, offset 0x224 + {value: 0x002d, lo: 0x05}, + {value: 0x812e, lo: 0x8d, hi: 0x8d}, + {value: 0x8133, lo: 0x8f, hi: 0x8f}, + {value: 0x8133, lo: 0xb8, hi: 0xb8}, + {value: 0x8101, lo: 0xb9, hi: 0xba}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x73, offset 0x22a + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0xa5, hi: 0xa5}, + {value: 0x812e, lo: 0xa6, hi: 0xa6}, + // Block 0x74, offset 0x22d + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xa4, hi: 0xa7}, + // Block 0x75, offset 0x22f + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xab, hi: 0xac}, + // Block 0x76, offset 0x231 + {value: 0x0000, lo: 0x05}, + {value: 0x812e, lo: 0x86, hi: 0x87}, + {value: 0x8133, lo: 0x88, hi: 0x8a}, + {value: 0x812e, lo: 0x8b, hi: 0x8b}, + {value: 0x8133, lo: 0x8c, hi: 0x8c}, + {value: 0x812e, lo: 0x8d, hi: 0x90}, + // Block 0x77, offset 0x237 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x86, hi: 0x86}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x78, offset 0x23a + {value: 0x17fe, lo: 0x07}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x424f, lo: 0x9a, hi: 0x9a}, + {value: 0xa000, lo: 0x9b, hi: 0x9b}, + {value: 0x4259, lo: 0x9c, hi: 0x9c}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x4263, lo: 0xab, hi: 0xab}, + {value: 0x8105, lo: 0xb9, hi: 0xba}, + // Block 0x79, offset 0x242 + {value: 0x0000, lo: 0x06}, + {value: 0x8133, lo: 0x80, hi: 0x82}, + {value: 0x9900, lo: 0xa7, hi: 0xa7}, + {value: 0x2d8b, lo: 0xae, hi: 0xae}, + {value: 0x2d95, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb1, hi: 0xb2}, + {value: 0x8105, lo: 0xb3, hi: 0xb4}, + // Block 0x7a, offset 0x249 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x80, hi: 0x80}, + {value: 0x8103, lo: 0x8a, hi: 0x8a}, + // Block 0x7b, offset 0x24c + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xb5, hi: 0xb5}, + {value: 0x8103, lo: 0xb6, hi: 0xb6}, + // Block 0x7c, offset 0x24f + {value: 0x0002, lo: 0x01}, + {value: 0x8103, lo: 0xa9, hi: 0xaa}, + // Block 0x7d, offset 0x251 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x7e, offset 0x254 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2d9f, lo: 0x8b, hi: 0x8b}, + {value: 0x2da9, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x8133, lo: 0xa6, hi: 0xac}, + {value: 0x8133, lo: 0xb0, hi: 0xb4}, + // Block 0x7f, offset 0x25c + {value: 0x0000, lo: 0x03}, + {value: 0x8105, lo: 0x82, hi: 0x82}, + {value: 0x8103, lo: 0x86, hi: 0x86}, + {value: 0x8133, lo: 0x9e, hi: 0x9e}, + // Block 0x80, offset 0x260 + {value: 0x6b4d, lo: 0x06}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb9, hi: 0xb9}, + {value: 0x9900, lo: 0xba, hi: 0xba}, + {value: 0x2dbd, lo: 0xbb, hi: 0xbb}, + {value: 0x2db3, lo: 0xbc, hi: 0xbd}, + {value: 0x2dc7, lo: 0xbe, hi: 0xbe}, + // Block 0x81, offset 0x267 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x82, hi: 0x82}, + {value: 0x8103, lo: 0x83, hi: 0x83}, + // Block 0x82, offset 0x26a + {value: 0x0000, lo: 0x05}, + {value: 0x9900, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb8, hi: 0xb9}, + {value: 0x2dd1, lo: 0xba, hi: 0xba}, + {value: 0x2ddb, lo: 0xbb, hi: 0xbb}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x83, offset 0x270 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0x80, hi: 0x80}, + // Block 0x84, offset 0x272 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xb6, hi: 0xb6}, + {value: 0x8103, lo: 0xb7, hi: 0xb7}, + // Block 0x85, offset 0x275 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xab, hi: 0xab}, + // Block 0x86, offset 0x277 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xb9, hi: 0xb9}, + {value: 0x8103, lo: 0xba, hi: 0xba}, + // Block 0x87, offset 0x27a + {value: 0x0000, lo: 0x04}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb5, hi: 0xb5}, + {value: 0x2de5, lo: 0xb8, hi: 0xb8}, + {value: 0x8105, lo: 0xbd, hi: 0xbe}, + // Block 0x88, offset 0x27f + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0x83, hi: 0x83}, + // Block 0x89, offset 0x281 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xa0, hi: 0xa0}, + // Block 0x8a, offset 0x283 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xb4, hi: 0xb4}, + // Block 0x8b, offset 0x285 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x87, hi: 0x87}, + // Block 0x8c, offset 0x287 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x99, hi: 0x99}, + // Block 0x8d, offset 0x289 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0x82, hi: 0x82}, + {value: 0x8105, lo: 0x84, hi: 0x85}, + // Block 0x8e, offset 0x28c + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x97, hi: 0x97}, + // Block 0x8f, offset 0x28e + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0xb0, hi: 0xb4}, + // Block 0x90, offset 0x290 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xb0, hi: 0xb6}, + // Block 0x91, offset 0x292 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb0, hi: 0xb1}, + // Block 0x92, offset 0x294 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0x9e, hi: 0x9e}, + // Block 0x93, offset 0x296 + {value: 0x0000, lo: 0x0c}, + {value: 0x45e3, lo: 0x9e, hi: 0x9e}, + {value: 0x45ed, lo: 0x9f, hi: 0x9f}, + {value: 0x4621, lo: 0xa0, hi: 0xa0}, + {value: 0x462f, lo: 0xa1, hi: 0xa1}, + {value: 0x463d, lo: 0xa2, hi: 0xa2}, + {value: 0x464b, lo: 0xa3, hi: 0xa3}, + {value: 0x4659, lo: 0xa4, hi: 0xa4}, + {value: 0x812c, lo: 0xa5, hi: 0xa6}, + {value: 0x8101, lo: 0xa7, hi: 0xa9}, + {value: 0x8131, lo: 0xad, hi: 0xad}, + {value: 0x812c, lo: 0xae, hi: 0xb2}, + {value: 0x812e, lo: 0xbb, hi: 0xbf}, + // Block 0x94, offset 0x2a3 + {value: 0x0000, lo: 0x09}, + {value: 0x812e, lo: 0x80, hi: 0x82}, + {value: 0x8133, lo: 0x85, hi: 0x89}, + {value: 0x812e, lo: 0x8a, hi: 0x8b}, + {value: 0x8133, lo: 0xaa, hi: 0xad}, + {value: 0x45f7, lo: 0xbb, hi: 0xbb}, + {value: 0x4601, lo: 0xbc, hi: 0xbc}, + {value: 0x4667, lo: 0xbd, hi: 0xbd}, + {value: 0x4683, lo: 0xbe, hi: 0xbe}, + {value: 0x4675, lo: 0xbf, hi: 0xbf}, + // Block 0x95, offset 0x2ad + {value: 0x0000, lo: 0x01}, + {value: 0x4691, lo: 0x80, hi: 0x80}, + // Block 0x96, offset 0x2af + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x82, hi: 0x84}, + // Block 0x97, offset 0x2b1 + {value: 0x0000, lo: 0x05}, + {value: 0x8133, lo: 0x80, hi: 0x86}, + {value: 0x8133, lo: 0x88, hi: 0x98}, + {value: 0x8133, lo: 0x9b, hi: 0xa1}, + {value: 0x8133, lo: 0xa3, hi: 0xa4}, + {value: 0x8133, lo: 0xa6, hi: 0xaa}, + // Block 0x98, offset 0x2b7 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xac, hi: 0xaf}, + // Block 0x99, offset 0x2b9 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x90, hi: 0x96}, + // Block 0x9a, offset 0x2bb + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0x84, hi: 0x89}, + {value: 0x8103, lo: 0x8a, hi: 0x8a}, + // Block 0x9b, offset 0x2be + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x93, hi: 0x93}, +} + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfkcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfkcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfkcTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfkcValues[c0] + } + i := nfkcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfkcTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfkcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfkcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfkcValues[c0] + } + i := nfkcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// nfkcTrie. Total size: 18768 bytes (18.33 KiB). Checksum: c51186dd2412943d. +type nfkcTrie struct{} + +func newNfkcTrie(i int) *nfkcTrie { + return &nfkcTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 92: + return uint16(nfkcValues[n<<6+uint32(b)]) + default: + n -= 92 + return uint16(nfkcSparse.lookup(n, b)) + } +} + +// nfkcValues: 94 blocks, 6016 entries, 12032 bytes +// The third block is the zero block. +var nfkcValues = [6016]uint16{ + // Block 0x0, offset 0x0 + 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, + // Block 0x1, offset 0x40 + 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, + 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, + 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, + 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, + 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, + 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, + 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, + 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, + 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, + 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x2f86, 0xc1: 0x2f8b, 0xc2: 0x469f, 0xc3: 0x2f90, 0xc4: 0x46ae, 0xc5: 0x46b3, + 0xc6: 0xa000, 0xc7: 0x46bd, 0xc8: 0x2ff9, 0xc9: 0x2ffe, 0xca: 0x46c2, 0xcb: 0x3012, + 0xcc: 0x3085, 0xcd: 0x308a, 0xce: 0x308f, 0xcf: 0x46d6, 0xd1: 0x311b, + 0xd2: 0x313e, 0xd3: 0x3143, 0xd4: 0x46e0, 0xd5: 0x46e5, 0xd6: 0x46f4, + 0xd8: 0xa000, 0xd9: 0x31ca, 0xda: 0x31cf, 0xdb: 0x31d4, 0xdc: 0x4726, 0xdd: 0x324c, + 0xe0: 0x3292, 0xe1: 0x3297, 0xe2: 0x4730, 0xe3: 0x329c, + 0xe4: 0x473f, 0xe5: 0x4744, 0xe6: 0xa000, 0xe7: 0x474e, 0xe8: 0x3305, 0xe9: 0x330a, + 0xea: 0x4753, 0xeb: 0x331e, 0xec: 0x3396, 0xed: 0x339b, 0xee: 0x33a0, 0xef: 0x4767, + 0xf1: 0x342c, 0xf2: 0x344f, 0xf3: 0x3454, 0xf4: 0x4771, 0xf5: 0x4776, + 0xf6: 0x4785, 0xf8: 0xa000, 0xf9: 0x34e0, 0xfa: 0x34e5, 0xfb: 0x34ea, + 0xfc: 0x47b7, 0xfd: 0x3567, 0xff: 0x3580, + // Block 0x4, offset 0x100 + 0x100: 0x2f95, 0x101: 0x32a1, 0x102: 0x46a4, 0x103: 0x4735, 0x104: 0x2fb3, 0x105: 0x32bf, + 0x106: 0x2fc7, 0x107: 0x32d3, 0x108: 0x2fcc, 0x109: 0x32d8, 0x10a: 0x2fd1, 0x10b: 0x32dd, + 0x10c: 0x2fd6, 0x10d: 0x32e2, 0x10e: 0x2fe0, 0x10f: 0x32ec, + 0x112: 0x46c7, 0x113: 0x4758, 0x114: 0x3008, 0x115: 0x3314, 0x116: 0x300d, 0x117: 0x3319, + 0x118: 0x302b, 0x119: 0x3337, 0x11a: 0x301c, 0x11b: 0x3328, 0x11c: 0x3044, 0x11d: 0x3350, + 0x11e: 0x304e, 0x11f: 0x335a, 0x120: 0x3053, 0x121: 0x335f, 0x122: 0x305d, 0x123: 0x3369, + 0x124: 0x3062, 0x125: 0x336e, 0x128: 0x3094, 0x129: 0x33a5, + 0x12a: 0x3099, 0x12b: 0x33aa, 0x12c: 0x309e, 0x12d: 0x33af, 0x12e: 0x30c1, 0x12f: 0x33cd, + 0x130: 0x30a3, 0x132: 0x1960, 0x133: 0x19ed, 0x134: 0x30cb, 0x135: 0x33d7, + 0x136: 0x30df, 0x137: 0x33f0, 0x139: 0x30e9, 0x13a: 0x33fa, 0x13b: 0x30f3, + 0x13c: 0x3404, 0x13d: 0x30ee, 0x13e: 0x33ff, 0x13f: 0x1bb2, + // Block 0x5, offset 0x140 + 0x140: 0x1c3a, 0x143: 0x3116, 0x144: 0x3427, 0x145: 0x312f, + 0x146: 0x3440, 0x147: 0x3125, 0x148: 0x3436, 0x149: 0x1c62, + 0x14c: 0x46ea, 0x14d: 0x477b, 0x14e: 0x3148, 0x14f: 0x3459, 0x150: 0x3152, 0x151: 0x3463, + 0x154: 0x3170, 0x155: 0x3481, 0x156: 0x3189, 0x157: 0x349a, + 0x158: 0x317a, 0x159: 0x348b, 0x15a: 0x470d, 0x15b: 0x479e, 0x15c: 0x3193, 0x15d: 0x34a4, + 0x15e: 0x31a2, 0x15f: 0x34b3, 0x160: 0x4712, 0x161: 0x47a3, 0x162: 0x31bb, 0x163: 0x34d1, + 0x164: 0x31ac, 0x165: 0x34c2, 0x168: 0x471c, 0x169: 0x47ad, + 0x16a: 0x4721, 0x16b: 0x47b2, 0x16c: 0x31d9, 0x16d: 0x34ef, 0x16e: 0x31e3, 0x16f: 0x34f9, + 0x170: 0x31e8, 0x171: 0x34fe, 0x172: 0x3206, 0x173: 0x351c, 0x174: 0x3229, 0x175: 0x353f, + 0x176: 0x3251, 0x177: 0x356c, 0x178: 0x3265, 0x179: 0x3274, 0x17a: 0x3594, 0x17b: 0x327e, + 0x17c: 0x359e, 0x17d: 0x3283, 0x17e: 0x35a3, 0x17f: 0x00a7, + // Block 0x6, offset 0x180 + 0x184: 0x2e05, 0x185: 0x2e0b, + 0x186: 0x2e11, 0x187: 0x1975, 0x188: 0x1978, 0x189: 0x1a0e, 0x18a: 0x198d, 0x18b: 0x1990, + 0x18c: 0x1a44, 0x18d: 0x2f9f, 0x18e: 0x32ab, 0x18f: 0x30ad, 0x190: 0x33b9, 0x191: 0x3157, + 0x192: 0x3468, 0x193: 0x31ed, 0x194: 0x3503, 0x195: 0x39e6, 0x196: 0x3b75, 0x197: 0x39df, + 0x198: 0x3b6e, 0x199: 0x39ed, 0x19a: 0x3b7c, 0x19b: 0x39d8, 0x19c: 0x3b67, + 0x19e: 0x38c7, 0x19f: 0x3a56, 0x1a0: 0x38c0, 0x1a1: 0x3a4f, 0x1a2: 0x35ca, 0x1a3: 0x35dc, + 0x1a6: 0x3058, 0x1a7: 0x3364, 0x1a8: 0x30d5, 0x1a9: 0x33e6, + 0x1aa: 0x4703, 0x1ab: 0x4794, 0x1ac: 0x39a7, 0x1ad: 0x3b36, 0x1ae: 0x35ee, 0x1af: 0x35f4, + 0x1b0: 0x33dc, 0x1b1: 0x1945, 0x1b2: 0x1948, 0x1b3: 0x19d5, 0x1b4: 0x303f, 0x1b5: 0x334b, + 0x1b8: 0x3111, 0x1b9: 0x3422, 0x1ba: 0x38ce, 0x1bb: 0x3a5d, + 0x1bc: 0x35c4, 0x1bd: 0x35d6, 0x1be: 0x35d0, 0x1bf: 0x35e2, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x2fa4, 0x1c1: 0x32b0, 0x1c2: 0x2fa9, 0x1c3: 0x32b5, 0x1c4: 0x3021, 0x1c5: 0x332d, + 0x1c6: 0x3026, 0x1c7: 0x3332, 0x1c8: 0x30b2, 0x1c9: 0x33be, 0x1ca: 0x30b7, 0x1cb: 0x33c3, + 0x1cc: 0x315c, 0x1cd: 0x346d, 0x1ce: 0x3161, 0x1cf: 0x3472, 0x1d0: 0x317f, 0x1d1: 0x3490, + 0x1d2: 0x3184, 0x1d3: 0x3495, 0x1d4: 0x31f2, 0x1d5: 0x3508, 0x1d6: 0x31f7, 0x1d7: 0x350d, + 0x1d8: 0x319d, 0x1d9: 0x34ae, 0x1da: 0x31b6, 0x1db: 0x34cc, + 0x1de: 0x3071, 0x1df: 0x337d, + 0x1e6: 0x46a9, 0x1e7: 0x473a, 0x1e8: 0x46d1, 0x1e9: 0x4762, + 0x1ea: 0x3976, 0x1eb: 0x3b05, 0x1ec: 0x3953, 0x1ed: 0x3ae2, 0x1ee: 0x46ef, 0x1ef: 0x4780, + 0x1f0: 0x396f, 0x1f1: 0x3afe, 0x1f2: 0x325b, 0x1f3: 0x3576, + // Block 0x8, offset 0x200 + 0x200: 0x9933, 0x201: 0x9933, 0x202: 0x9933, 0x203: 0x9933, 0x204: 0x9933, 0x205: 0x8133, + 0x206: 0x9933, 0x207: 0x9933, 0x208: 0x9933, 0x209: 0x9933, 0x20a: 0x9933, 0x20b: 0x9933, + 0x20c: 0x9933, 0x20d: 0x8133, 0x20e: 0x8133, 0x20f: 0x9933, 0x210: 0x8133, 0x211: 0x9933, + 0x212: 0x8133, 0x213: 0x9933, 0x214: 0x9933, 0x215: 0x8134, 0x216: 0x812e, 0x217: 0x812e, + 0x218: 0x812e, 0x219: 0x812e, 0x21a: 0x8134, 0x21b: 0x992c, 0x21c: 0x812e, 0x21d: 0x812e, + 0x21e: 0x812e, 0x21f: 0x812e, 0x220: 0x812e, 0x221: 0x812a, 0x222: 0x812a, 0x223: 0x992e, + 0x224: 0x992e, 0x225: 0x992e, 0x226: 0x992e, 0x227: 0x992a, 0x228: 0x992a, 0x229: 0x812e, + 0x22a: 0x812e, 0x22b: 0x812e, 0x22c: 0x812e, 0x22d: 0x992e, 0x22e: 0x992e, 0x22f: 0x812e, + 0x230: 0x992e, 0x231: 0x992e, 0x232: 0x812e, 0x233: 0x812e, 0x234: 0x8101, 0x235: 0x8101, + 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812e, 0x23a: 0x812e, 0x23b: 0x812e, + 0x23c: 0x812e, 0x23d: 0x8133, 0x23e: 0x8133, 0x23f: 0x8133, + // Block 0x9, offset 0x240 + 0x240: 0x49c5, 0x241: 0x49ca, 0x242: 0x9933, 0x243: 0x49cf, 0x244: 0x4a88, 0x245: 0x9937, + 0x246: 0x8133, 0x247: 0x812e, 0x248: 0x812e, 0x249: 0x812e, 0x24a: 0x8133, 0x24b: 0x8133, + 0x24c: 0x8133, 0x24d: 0x812e, 0x24e: 0x812e, 0x250: 0x8133, 0x251: 0x8133, + 0x252: 0x8133, 0x253: 0x812e, 0x254: 0x812e, 0x255: 0x812e, 0x256: 0x812e, 0x257: 0x8133, + 0x258: 0x8134, 0x259: 0x812e, 0x25a: 0x812e, 0x25b: 0x8133, 0x25c: 0x8135, 0x25d: 0x8136, + 0x25e: 0x8136, 0x25f: 0x8135, 0x260: 0x8136, 0x261: 0x8136, 0x262: 0x8135, 0x263: 0x8133, + 0x264: 0x8133, 0x265: 0x8133, 0x266: 0x8133, 0x267: 0x8133, 0x268: 0x8133, 0x269: 0x8133, + 0x26a: 0x8133, 0x26b: 0x8133, 0x26c: 0x8133, 0x26d: 0x8133, 0x26e: 0x8133, 0x26f: 0x8133, + 0x274: 0x0173, + 0x27a: 0x42bc, + 0x27e: 0x0037, + // Block 0xa, offset 0x280 + 0x284: 0x4271, 0x285: 0x4492, + 0x286: 0x3600, 0x287: 0x00ce, 0x288: 0x361e, 0x289: 0x362a, 0x28a: 0x363c, + 0x28c: 0x365a, 0x28e: 0x366c, 0x28f: 0x368a, 0x290: 0x3e1f, 0x291: 0xa000, + 0x295: 0xa000, 0x297: 0xa000, + 0x299: 0xa000, + 0x29f: 0xa000, 0x2a1: 0xa000, + 0x2a5: 0xa000, 0x2a9: 0xa000, + 0x2aa: 0x364e, 0x2ab: 0x367e, 0x2ac: 0x4815, 0x2ad: 0x36ae, 0x2ae: 0x483f, 0x2af: 0x36c0, + 0x2b0: 0x3e87, 0x2b1: 0xa000, 0x2b5: 0xa000, + 0x2b7: 0xa000, 0x2b9: 0xa000, + 0x2bf: 0xa000, + // Block 0xb, offset 0x2c0 + 0x2c1: 0xa000, 0x2c5: 0xa000, + 0x2c9: 0xa000, 0x2ca: 0x4857, 0x2cb: 0x4875, + 0x2cc: 0x36de, 0x2cd: 0x36f6, 0x2ce: 0x488d, 0x2d0: 0x01c1, 0x2d1: 0x01d3, + 0x2d2: 0x01af, 0x2d3: 0x4323, 0x2d4: 0x4329, 0x2d5: 0x01fd, 0x2d6: 0x01eb, + 0x2f0: 0x01d9, 0x2f1: 0x01ee, 0x2f2: 0x01f1, 0x2f4: 0x018b, 0x2f5: 0x01ca, + 0x2f9: 0x01a9, + // Block 0xc, offset 0x300 + 0x300: 0x3738, 0x301: 0x3744, 0x303: 0x3732, + 0x306: 0xa000, 0x307: 0x3720, + 0x30c: 0x3774, 0x30d: 0x375c, 0x30e: 0x3786, 0x310: 0xa000, + 0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000, + 0x318: 0xa000, 0x319: 0x3768, 0x31a: 0xa000, + 0x31e: 0xa000, 0x323: 0xa000, + 0x327: 0xa000, + 0x32b: 0xa000, 0x32d: 0xa000, + 0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000, + 0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37ec, 0x33a: 0xa000, + 0x33e: 0xa000, + // Block 0xd, offset 0x340 + 0x341: 0x374a, 0x342: 0x37ce, + 0x350: 0x3726, 0x351: 0x37aa, + 0x352: 0x372c, 0x353: 0x37b0, 0x356: 0x373e, 0x357: 0x37c2, + 0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3840, 0x35b: 0x3846, 0x35c: 0x3750, 0x35d: 0x37d4, + 0x35e: 0x3756, 0x35f: 0x37da, 0x362: 0x3762, 0x363: 0x37e6, + 0x364: 0x376e, 0x365: 0x37f2, 0x366: 0x377a, 0x367: 0x37fe, 0x368: 0xa000, 0x369: 0xa000, + 0x36a: 0x384c, 0x36b: 0x3852, 0x36c: 0x37a4, 0x36d: 0x3828, 0x36e: 0x3780, 0x36f: 0x3804, + 0x370: 0x378c, 0x371: 0x3810, 0x372: 0x3792, 0x373: 0x3816, 0x374: 0x3798, 0x375: 0x381c, + 0x378: 0x379e, 0x379: 0x3822, + // Block 0xe, offset 0x380 + 0x387: 0x1d67, + 0x391: 0x812e, + 0x392: 0x8133, 0x393: 0x8133, 0x394: 0x8133, 0x395: 0x8133, 0x396: 0x812e, 0x397: 0x8133, + 0x398: 0x8133, 0x399: 0x8133, 0x39a: 0x812f, 0x39b: 0x812e, 0x39c: 0x8133, 0x39d: 0x8133, + 0x39e: 0x8133, 0x39f: 0x8133, 0x3a0: 0x8133, 0x3a1: 0x8133, 0x3a2: 0x812e, 0x3a3: 0x812e, + 0x3a4: 0x812e, 0x3a5: 0x812e, 0x3a6: 0x812e, 0x3a7: 0x812e, 0x3a8: 0x8133, 0x3a9: 0x8133, + 0x3aa: 0x812e, 0x3ab: 0x8133, 0x3ac: 0x8133, 0x3ad: 0x812f, 0x3ae: 0x8132, 0x3af: 0x8133, + 0x3b0: 0x8106, 0x3b1: 0x8107, 0x3b2: 0x8108, 0x3b3: 0x8109, 0x3b4: 0x810a, 0x3b5: 0x810b, + 0x3b6: 0x810c, 0x3b7: 0x810d, 0x3b8: 0x810e, 0x3b9: 0x810f, 0x3ba: 0x810f, 0x3bb: 0x8110, + 0x3bc: 0x8111, 0x3bd: 0x8112, 0x3bf: 0x8113, + // Block 0xf, offset 0x3c0 + 0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8117, + 0x3cc: 0x8118, 0x3cd: 0x8119, 0x3ce: 0x811a, 0x3cf: 0x811b, 0x3d0: 0x811c, 0x3d1: 0x811d, + 0x3d2: 0x811e, 0x3d3: 0x9933, 0x3d4: 0x9933, 0x3d5: 0x992e, 0x3d6: 0x812e, 0x3d7: 0x8133, + 0x3d8: 0x8133, 0x3d9: 0x8133, 0x3da: 0x8133, 0x3db: 0x8133, 0x3dc: 0x812e, 0x3dd: 0x8133, + 0x3de: 0x8133, 0x3df: 0x812e, + 0x3f0: 0x811f, 0x3f5: 0x1d8a, + 0x3f6: 0x2019, 0x3f7: 0x2055, 0x3f8: 0x2050, + // Block 0x10, offset 0x400 + 0x413: 0x812e, 0x414: 0x8133, 0x415: 0x8133, 0x416: 0x8133, 0x417: 0x8133, + 0x418: 0x8133, 0x419: 0x8133, 0x41a: 0x8133, 0x41b: 0x8133, 0x41c: 0x8133, 0x41d: 0x8133, + 0x41e: 0x8133, 0x41f: 0x8133, 0x420: 0x8133, 0x421: 0x8133, 0x423: 0x812e, + 0x424: 0x8133, 0x425: 0x8133, 0x426: 0x812e, 0x427: 0x8133, 0x428: 0x8133, 0x429: 0x812e, + 0x42a: 0x8133, 0x42b: 0x8133, 0x42c: 0x8133, 0x42d: 0x812e, 0x42e: 0x812e, 0x42f: 0x812e, + 0x430: 0x8117, 0x431: 0x8118, 0x432: 0x8119, 0x433: 0x8133, 0x434: 0x8133, 0x435: 0x8133, + 0x436: 0x812e, 0x437: 0x8133, 0x438: 0x8133, 0x439: 0x812e, 0x43a: 0x812e, 0x43b: 0x8133, + 0x43c: 0x8133, 0x43d: 0x8133, 0x43e: 0x8133, 0x43f: 0x8133, + // Block 0x11, offset 0x440 + 0x445: 0xa000, + 0x446: 0x2d33, 0x447: 0xa000, 0x448: 0x2d3b, 0x449: 0xa000, 0x44a: 0x2d43, 0x44b: 0xa000, + 0x44c: 0x2d4b, 0x44d: 0xa000, 0x44e: 0x2d53, 0x451: 0xa000, + 0x452: 0x2d5b, + 0x474: 0x8103, 0x475: 0x9900, + 0x47a: 0xa000, 0x47b: 0x2d63, + 0x47c: 0xa000, 0x47d: 0x2d6b, 0x47e: 0xa000, 0x47f: 0xa000, + // Block 0x12, offset 0x480 + 0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8, + 0x486: 0x0416, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107, + 0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0, + 0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x041a, 0x495: 0x041e, 0x496: 0x00a1, 0x497: 0x00a9, + 0x498: 0x00ab, 0x499: 0x0426, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x042a, 0x49d: 0x01c1, + 0x49e: 0x01c4, 0x49f: 0x01c7, 0x4a0: 0x01fd, 0x4a1: 0x0200, 0x4a2: 0x0093, 0x4a3: 0x00a5, + 0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01c1, 0x4a7: 0x01c4, 0x4a8: 0x01ee, 0x4a9: 0x01fd, + 0x4aa: 0x0200, + 0x4b8: 0x020f, + // Block 0x13, offset 0x4c0 + 0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101, + 0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116, + 0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042e, 0x4e8: 0x016d, 0x4e9: 0x0128, + 0x4ea: 0x0432, 0x4eb: 0x0170, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137, + 0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec, + 0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x0422, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5, + 0x4fc: 0x0161, 0x4fd: 0x0164, 0x4fe: 0x0167, 0x4ff: 0x01d3, + // Block 0x14, offset 0x500 + 0x500: 0x8133, 0x501: 0x8133, 0x502: 0x812e, 0x503: 0x8133, 0x504: 0x8133, 0x505: 0x8133, + 0x506: 0x8133, 0x507: 0x8133, 0x508: 0x8133, 0x509: 0x8133, 0x50a: 0x812e, 0x50b: 0x8133, + 0x50c: 0x8133, 0x50d: 0x8136, 0x50e: 0x812b, 0x50f: 0x812e, 0x510: 0x812a, 0x511: 0x8133, + 0x512: 0x8133, 0x513: 0x8133, 0x514: 0x8133, 0x515: 0x8133, 0x516: 0x8133, 0x517: 0x8133, + 0x518: 0x8133, 0x519: 0x8133, 0x51a: 0x8133, 0x51b: 0x8133, 0x51c: 0x8133, 0x51d: 0x8133, + 0x51e: 0x8133, 0x51f: 0x8133, 0x520: 0x8133, 0x521: 0x8133, 0x522: 0x8133, 0x523: 0x8133, + 0x524: 0x8133, 0x525: 0x8133, 0x526: 0x8133, 0x527: 0x8133, 0x528: 0x8133, 0x529: 0x8133, + 0x52a: 0x8133, 0x52b: 0x8133, 0x52c: 0x8133, 0x52d: 0x8133, 0x52e: 0x8133, 0x52f: 0x8133, + 0x530: 0x8133, 0x531: 0x8133, 0x532: 0x8133, 0x533: 0x8133, 0x534: 0x8133, 0x535: 0x8133, + 0x536: 0x8134, 0x537: 0x8132, 0x538: 0x8132, 0x539: 0x812e, 0x53b: 0x8133, + 0x53c: 0x8135, 0x53d: 0x812e, 0x53e: 0x8133, 0x53f: 0x812e, + // Block 0x15, offset 0x540 + 0x540: 0x2fae, 0x541: 0x32ba, 0x542: 0x2fb8, 0x543: 0x32c4, 0x544: 0x2fbd, 0x545: 0x32c9, + 0x546: 0x2fc2, 0x547: 0x32ce, 0x548: 0x38e3, 0x549: 0x3a72, 0x54a: 0x2fdb, 0x54b: 0x32e7, + 0x54c: 0x2fe5, 0x54d: 0x32f1, 0x54e: 0x2ff4, 0x54f: 0x3300, 0x550: 0x2fea, 0x551: 0x32f6, + 0x552: 0x2fef, 0x553: 0x32fb, 0x554: 0x3906, 0x555: 0x3a95, 0x556: 0x390d, 0x557: 0x3a9c, + 0x558: 0x3030, 0x559: 0x333c, 0x55a: 0x3035, 0x55b: 0x3341, 0x55c: 0x391b, 0x55d: 0x3aaa, + 0x55e: 0x303a, 0x55f: 0x3346, 0x560: 0x3049, 0x561: 0x3355, 0x562: 0x3067, 0x563: 0x3373, + 0x564: 0x3076, 0x565: 0x3382, 0x566: 0x306c, 0x567: 0x3378, 0x568: 0x307b, 0x569: 0x3387, + 0x56a: 0x3080, 0x56b: 0x338c, 0x56c: 0x30c6, 0x56d: 0x33d2, 0x56e: 0x3922, 0x56f: 0x3ab1, + 0x570: 0x30d0, 0x571: 0x33e1, 0x572: 0x30da, 0x573: 0x33eb, 0x574: 0x30e4, 0x575: 0x33f5, + 0x576: 0x46db, 0x577: 0x476c, 0x578: 0x3929, 0x579: 0x3ab8, 0x57a: 0x30fd, 0x57b: 0x340e, + 0x57c: 0x30f8, 0x57d: 0x3409, 0x57e: 0x3102, 0x57f: 0x3413, + // Block 0x16, offset 0x580 + 0x580: 0x3107, 0x581: 0x3418, 0x582: 0x310c, 0x583: 0x341d, 0x584: 0x3120, 0x585: 0x3431, + 0x586: 0x312a, 0x587: 0x343b, 0x588: 0x3139, 0x589: 0x344a, 0x58a: 0x3134, 0x58b: 0x3445, + 0x58c: 0x394c, 0x58d: 0x3adb, 0x58e: 0x395a, 0x58f: 0x3ae9, 0x590: 0x3961, 0x591: 0x3af0, + 0x592: 0x3968, 0x593: 0x3af7, 0x594: 0x3166, 0x595: 0x3477, 0x596: 0x316b, 0x597: 0x347c, + 0x598: 0x3175, 0x599: 0x3486, 0x59a: 0x4708, 0x59b: 0x4799, 0x59c: 0x39ae, 0x59d: 0x3b3d, + 0x59e: 0x318e, 0x59f: 0x349f, 0x5a0: 0x3198, 0x5a1: 0x34a9, 0x5a2: 0x4717, 0x5a3: 0x47a8, + 0x5a4: 0x39b5, 0x5a5: 0x3b44, 0x5a6: 0x39bc, 0x5a7: 0x3b4b, 0x5a8: 0x39c3, 0x5a9: 0x3b52, + 0x5aa: 0x31a7, 0x5ab: 0x34b8, 0x5ac: 0x31b1, 0x5ad: 0x34c7, 0x5ae: 0x31c5, 0x5af: 0x34db, + 0x5b0: 0x31c0, 0x5b1: 0x34d6, 0x5b2: 0x3201, 0x5b3: 0x3517, 0x5b4: 0x3210, 0x5b5: 0x3526, + 0x5b6: 0x320b, 0x5b7: 0x3521, 0x5b8: 0x39ca, 0x5b9: 0x3b59, 0x5ba: 0x39d1, 0x5bb: 0x3b60, + 0x5bc: 0x3215, 0x5bd: 0x352b, 0x5be: 0x321a, 0x5bf: 0x3530, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x321f, 0x5c1: 0x3535, 0x5c2: 0x3224, 0x5c3: 0x353a, 0x5c4: 0x3233, 0x5c5: 0x3549, + 0x5c6: 0x322e, 0x5c7: 0x3544, 0x5c8: 0x3238, 0x5c9: 0x3553, 0x5ca: 0x323d, 0x5cb: 0x3558, + 0x5cc: 0x3242, 0x5cd: 0x355d, 0x5ce: 0x3260, 0x5cf: 0x357b, 0x5d0: 0x3279, 0x5d1: 0x3599, + 0x5d2: 0x3288, 0x5d3: 0x35a8, 0x5d4: 0x328d, 0x5d5: 0x35ad, 0x5d6: 0x3391, 0x5d7: 0x34bd, + 0x5d8: 0x354e, 0x5d9: 0x358a, 0x5da: 0x1be6, 0x5db: 0x42ee, + 0x5e0: 0x46b8, 0x5e1: 0x4749, 0x5e2: 0x2f9a, 0x5e3: 0x32a6, + 0x5e4: 0x388f, 0x5e5: 0x3a1e, 0x5e6: 0x3888, 0x5e7: 0x3a17, 0x5e8: 0x389d, 0x5e9: 0x3a2c, + 0x5ea: 0x3896, 0x5eb: 0x3a25, 0x5ec: 0x38d5, 0x5ed: 0x3a64, 0x5ee: 0x38ab, 0x5ef: 0x3a3a, + 0x5f0: 0x38a4, 0x5f1: 0x3a33, 0x5f2: 0x38b9, 0x5f3: 0x3a48, 0x5f4: 0x38b2, 0x5f5: 0x3a41, + 0x5f6: 0x38dc, 0x5f7: 0x3a6b, 0x5f8: 0x46cc, 0x5f9: 0x475d, 0x5fa: 0x3017, 0x5fb: 0x3323, + 0x5fc: 0x3003, 0x5fd: 0x330f, 0x5fe: 0x38f1, 0x5ff: 0x3a80, + // Block 0x18, offset 0x600 + 0x600: 0x38ea, 0x601: 0x3a79, 0x602: 0x38ff, 0x603: 0x3a8e, 0x604: 0x38f8, 0x605: 0x3a87, + 0x606: 0x3914, 0x607: 0x3aa3, 0x608: 0x30a8, 0x609: 0x33b4, 0x60a: 0x30bc, 0x60b: 0x33c8, + 0x60c: 0x46fe, 0x60d: 0x478f, 0x60e: 0x314d, 0x60f: 0x345e, 0x610: 0x3937, 0x611: 0x3ac6, + 0x612: 0x3930, 0x613: 0x3abf, 0x614: 0x3945, 0x615: 0x3ad4, 0x616: 0x393e, 0x617: 0x3acd, + 0x618: 0x39a0, 0x619: 0x3b2f, 0x61a: 0x3984, 0x61b: 0x3b13, 0x61c: 0x397d, 0x61d: 0x3b0c, + 0x61e: 0x3992, 0x61f: 0x3b21, 0x620: 0x398b, 0x621: 0x3b1a, 0x622: 0x3999, 0x623: 0x3b28, + 0x624: 0x31fc, 0x625: 0x3512, 0x626: 0x31de, 0x627: 0x34f4, 0x628: 0x39fb, 0x629: 0x3b8a, + 0x62a: 0x39f4, 0x62b: 0x3b83, 0x62c: 0x3a09, 0x62d: 0x3b98, 0x62e: 0x3a02, 0x62f: 0x3b91, + 0x630: 0x3a10, 0x631: 0x3b9f, 0x632: 0x3247, 0x633: 0x3562, 0x634: 0x326f, 0x635: 0x358f, + 0x636: 0x326a, 0x637: 0x3585, 0x638: 0x3256, 0x639: 0x3571, + // Block 0x19, offset 0x640 + 0x640: 0x481b, 0x641: 0x4821, 0x642: 0x4935, 0x643: 0x494d, 0x644: 0x493d, 0x645: 0x4955, + 0x646: 0x4945, 0x647: 0x495d, 0x648: 0x47c1, 0x649: 0x47c7, 0x64a: 0x48a5, 0x64b: 0x48bd, + 0x64c: 0x48ad, 0x64d: 0x48c5, 0x64e: 0x48b5, 0x64f: 0x48cd, 0x650: 0x482d, 0x651: 0x4833, + 0x652: 0x3dcf, 0x653: 0x3ddf, 0x654: 0x3dd7, 0x655: 0x3de7, + 0x658: 0x47cd, 0x659: 0x47d3, 0x65a: 0x3cff, 0x65b: 0x3d0f, 0x65c: 0x3d07, 0x65d: 0x3d17, + 0x660: 0x4845, 0x661: 0x484b, 0x662: 0x4965, 0x663: 0x497d, + 0x664: 0x496d, 0x665: 0x4985, 0x666: 0x4975, 0x667: 0x498d, 0x668: 0x47d9, 0x669: 0x47df, + 0x66a: 0x48d5, 0x66b: 0x48ed, 0x66c: 0x48dd, 0x66d: 0x48f5, 0x66e: 0x48e5, 0x66f: 0x48fd, + 0x670: 0x485d, 0x671: 0x4863, 0x672: 0x3e2f, 0x673: 0x3e47, 0x674: 0x3e37, 0x675: 0x3e4f, + 0x676: 0x3e3f, 0x677: 0x3e57, 0x678: 0x47e5, 0x679: 0x47eb, 0x67a: 0x3d2f, 0x67b: 0x3d47, + 0x67c: 0x3d37, 0x67d: 0x3d4f, 0x67e: 0x3d3f, 0x67f: 0x3d57, + // Block 0x1a, offset 0x680 + 0x680: 0x4869, 0x681: 0x486f, 0x682: 0x3e5f, 0x683: 0x3e6f, 0x684: 0x3e67, 0x685: 0x3e77, + 0x688: 0x47f1, 0x689: 0x47f7, 0x68a: 0x3d5f, 0x68b: 0x3d6f, + 0x68c: 0x3d67, 0x68d: 0x3d77, 0x690: 0x487b, 0x691: 0x4881, + 0x692: 0x3e97, 0x693: 0x3eaf, 0x694: 0x3e9f, 0x695: 0x3eb7, 0x696: 0x3ea7, 0x697: 0x3ebf, + 0x699: 0x47fd, 0x69b: 0x3d7f, 0x69d: 0x3d87, + 0x69f: 0x3d8f, 0x6a0: 0x4893, 0x6a1: 0x4899, 0x6a2: 0x4995, 0x6a3: 0x49ad, + 0x6a4: 0x499d, 0x6a5: 0x49b5, 0x6a6: 0x49a5, 0x6a7: 0x49bd, 0x6a8: 0x4803, 0x6a9: 0x4809, + 0x6aa: 0x4905, 0x6ab: 0x491d, 0x6ac: 0x490d, 0x6ad: 0x4925, 0x6ae: 0x4915, 0x6af: 0x492d, + 0x6b0: 0x480f, 0x6b1: 0x4335, 0x6b2: 0x36a8, 0x6b3: 0x433b, 0x6b4: 0x4839, 0x6b5: 0x4341, + 0x6b6: 0x36ba, 0x6b7: 0x4347, 0x6b8: 0x36d8, 0x6b9: 0x434d, 0x6ba: 0x36f0, 0x6bb: 0x4353, + 0x6bc: 0x4887, 0x6bd: 0x4359, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x3db7, 0x6c1: 0x3dbf, 0x6c2: 0x419b, 0x6c3: 0x41b9, 0x6c4: 0x41a5, 0x6c5: 0x41c3, + 0x6c6: 0x41af, 0x6c7: 0x41cd, 0x6c8: 0x3cef, 0x6c9: 0x3cf7, 0x6ca: 0x40e7, 0x6cb: 0x4105, + 0x6cc: 0x40f1, 0x6cd: 0x410f, 0x6ce: 0x40fb, 0x6cf: 0x4119, 0x6d0: 0x3dff, 0x6d1: 0x3e07, + 0x6d2: 0x41d7, 0x6d3: 0x41f5, 0x6d4: 0x41e1, 0x6d5: 0x41ff, 0x6d6: 0x41eb, 0x6d7: 0x4209, + 0x6d8: 0x3d1f, 0x6d9: 0x3d27, 0x6da: 0x4123, 0x6db: 0x4141, 0x6dc: 0x412d, 0x6dd: 0x414b, + 0x6de: 0x4137, 0x6df: 0x4155, 0x6e0: 0x3ed7, 0x6e1: 0x3edf, 0x6e2: 0x4213, 0x6e3: 0x4231, + 0x6e4: 0x421d, 0x6e5: 0x423b, 0x6e6: 0x4227, 0x6e7: 0x4245, 0x6e8: 0x3d97, 0x6e9: 0x3d9f, + 0x6ea: 0x415f, 0x6eb: 0x417d, 0x6ec: 0x4169, 0x6ed: 0x4187, 0x6ee: 0x4173, 0x6ef: 0x4191, + 0x6f0: 0x369c, 0x6f1: 0x3696, 0x6f2: 0x3da7, 0x6f3: 0x36a2, 0x6f4: 0x3daf, + 0x6f6: 0x4827, 0x6f7: 0x3dc7, 0x6f8: 0x360c, 0x6f9: 0x3606, 0x6fa: 0x35fa, 0x6fb: 0x4305, + 0x6fc: 0x3612, 0x6fd: 0x429e, 0x6fe: 0x01d6, 0x6ff: 0x429e, + // Block 0x1c, offset 0x700 + 0x700: 0x42b7, 0x701: 0x4499, 0x702: 0x3def, 0x703: 0x36b4, 0x704: 0x3df7, + 0x706: 0x4851, 0x707: 0x3e0f, 0x708: 0x3618, 0x709: 0x430b, 0x70a: 0x3624, 0x70b: 0x4311, + 0x70c: 0x3630, 0x70d: 0x44a0, 0x70e: 0x44a7, 0x70f: 0x44ae, 0x710: 0x36cc, 0x711: 0x36c6, + 0x712: 0x3e17, 0x713: 0x44fb, 0x716: 0x36d2, 0x717: 0x3e27, + 0x718: 0x3648, 0x719: 0x3642, 0x71a: 0x3636, 0x71b: 0x4317, 0x71d: 0x44b5, + 0x71e: 0x44bc, 0x71f: 0x44c3, 0x720: 0x3702, 0x721: 0x36fc, 0x722: 0x3e7f, 0x723: 0x4503, + 0x724: 0x36e4, 0x725: 0x36ea, 0x726: 0x3708, 0x727: 0x3e8f, 0x728: 0x3678, 0x729: 0x3672, + 0x72a: 0x3666, 0x72b: 0x4323, 0x72c: 0x3660, 0x72d: 0x448b, 0x72e: 0x4492, 0x72f: 0x0081, + 0x732: 0x3ec7, 0x733: 0x370e, 0x734: 0x3ecf, + 0x736: 0x489f, 0x737: 0x3ee7, 0x738: 0x3654, 0x739: 0x431d, 0x73a: 0x3684, 0x73b: 0x432f, + 0x73c: 0x3690, 0x73d: 0x4271, 0x73e: 0x42a3, + // Block 0x1d, offset 0x740 + 0x740: 0x1bde, 0x741: 0x1be2, 0x742: 0x0047, 0x743: 0x1c5a, 0x745: 0x1bee, + 0x746: 0x1bf2, 0x747: 0x00e9, 0x749: 0x1c5e, 0x74a: 0x008f, 0x74b: 0x0051, + 0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053, + 0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x1993, + 0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065, + 0x760: 0x19a5, 0x761: 0x1bce, 0x762: 0x19ae, + 0x764: 0x0075, 0x766: 0x01bb, 0x768: 0x0075, + 0x76a: 0x0057, 0x76b: 0x42e9, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b, + 0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0218, + 0x776: 0x021b, 0x777: 0x021e, 0x778: 0x0221, 0x779: 0x0093, 0x77b: 0x1b9e, + 0x77c: 0x01eb, 0x77d: 0x01c4, 0x77e: 0x017c, 0x77f: 0x01a3, + // Block 0x1e, offset 0x780 + 0x780: 0x0466, 0x785: 0x0049, + 0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095, + 0x790: 0x2234, 0x791: 0x2240, + 0x792: 0x22f4, 0x793: 0x221c, 0x794: 0x22a0, 0x795: 0x2228, 0x796: 0x22a6, 0x797: 0x22be, + 0x798: 0x22ca, 0x799: 0x222e, 0x79a: 0x22d0, 0x79b: 0x223a, 0x79c: 0x22c4, 0x79d: 0x22d6, + 0x79e: 0x22dc, 0x79f: 0x1cc2, 0x7a0: 0x0053, 0x7a1: 0x195d, 0x7a2: 0x1baa, 0x7a3: 0x1966, + 0x7a4: 0x006d, 0x7a5: 0x19b1, 0x7a6: 0x1bd6, 0x7a7: 0x1d4e, 0x7a8: 0x1969, 0x7a9: 0x0071, + 0x7aa: 0x19bd, 0x7ab: 0x1bda, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b, + 0x7b0: 0x0093, 0x7b1: 0x19ea, 0x7b2: 0x1c1e, 0x7b3: 0x19f3, 0x7b4: 0x00ad, 0x7b5: 0x1a68, + 0x7b6: 0x1c52, 0x7b7: 0x1d62, 0x7b8: 0x19f6, 0x7b9: 0x00b1, 0x7ba: 0x1a6b, 0x7bb: 0x1c56, + 0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b, + // Block 0x1f, offset 0x7c0 + 0x7c1: 0x3c1d, 0x7c3: 0xa000, 0x7c4: 0x3c24, 0x7c5: 0xa000, + 0x7c7: 0x3c2b, 0x7c8: 0xa000, 0x7c9: 0x3c32, + 0x7cd: 0xa000, + 0x7e0: 0x2f7c, 0x7e1: 0xa000, 0x7e2: 0x3c40, + 0x7e4: 0xa000, 0x7e5: 0xa000, + 0x7ed: 0x3c39, 0x7ee: 0x2f77, 0x7ef: 0x2f81, + 0x7f0: 0x3c47, 0x7f1: 0x3c4e, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c55, 0x7f5: 0x3c5c, + 0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c63, 0x7f9: 0x3c6a, 0x7fa: 0xa000, 0x7fb: 0xa000, + 0x7fc: 0xa000, 0x7fd: 0xa000, + // Block 0x20, offset 0x800 + 0x800: 0x3c71, 0x801: 0x3c78, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c8d, 0x805: 0x3c94, + 0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c9b, 0x809: 0x3ca2, + 0x811: 0xa000, + 0x812: 0xa000, + 0x822: 0xa000, + 0x828: 0xa000, 0x829: 0xa000, + 0x82b: 0xa000, 0x82c: 0x3cb7, 0x82d: 0x3cbe, 0x82e: 0x3cc5, 0x82f: 0x3ccc, + 0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000, + // Block 0x21, offset 0x840 + 0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029, + 0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1885, + 0x86a: 0x1888, 0x86b: 0x188b, 0x86c: 0x188e, 0x86d: 0x1891, 0x86e: 0x1894, 0x86f: 0x1897, + 0x870: 0x189a, 0x871: 0x189d, 0x872: 0x18a0, 0x873: 0x18a9, 0x874: 0x1a6e, 0x875: 0x1a72, + 0x876: 0x1a76, 0x877: 0x1a7a, 0x878: 0x1a7e, 0x879: 0x1a82, 0x87a: 0x1a86, 0x87b: 0x1a8a, + 0x87c: 0x1a8e, 0x87d: 0x1c86, 0x87e: 0x1c8b, 0x87f: 0x1c90, + // Block 0x22, offset 0x880 + 0x880: 0x1c95, 0x881: 0x1c9a, 0x882: 0x1c9f, 0x883: 0x1ca4, 0x884: 0x1ca9, 0x885: 0x1cae, + 0x886: 0x1cb3, 0x887: 0x1cb8, 0x888: 0x1882, 0x889: 0x18a6, 0x88a: 0x18ca, 0x88b: 0x18ee, + 0x88c: 0x1912, 0x88d: 0x191b, 0x88e: 0x1921, 0x88f: 0x1927, 0x890: 0x192d, 0x891: 0x1b66, + 0x892: 0x1b6a, 0x893: 0x1b6e, 0x894: 0x1b72, 0x895: 0x1b76, 0x896: 0x1b7a, 0x897: 0x1b7e, + 0x898: 0x1b82, 0x899: 0x1b86, 0x89a: 0x1b8a, 0x89b: 0x1b8e, 0x89c: 0x1afa, 0x89d: 0x1afe, + 0x89e: 0x1b02, 0x89f: 0x1b06, 0x8a0: 0x1b0a, 0x8a1: 0x1b0e, 0x8a2: 0x1b12, 0x8a3: 0x1b16, + 0x8a4: 0x1b1a, 0x8a5: 0x1b1e, 0x8a6: 0x1b22, 0x8a7: 0x1b26, 0x8a8: 0x1b2a, 0x8a9: 0x1b2e, + 0x8aa: 0x1b32, 0x8ab: 0x1b36, 0x8ac: 0x1b3a, 0x8ad: 0x1b3e, 0x8ae: 0x1b42, 0x8af: 0x1b46, + 0x8b0: 0x1b4a, 0x8b1: 0x1b4e, 0x8b2: 0x1b52, 0x8b3: 0x1b56, 0x8b4: 0x1b5a, 0x8b5: 0x1b5e, + 0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d, + 0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x06c2, 0x8c1: 0x06e6, 0x8c2: 0x06f2, 0x8c3: 0x0702, 0x8c4: 0x070a, 0x8c5: 0x0716, + 0x8c6: 0x071e, 0x8c7: 0x0726, 0x8c8: 0x0732, 0x8c9: 0x0786, 0x8ca: 0x079e, 0x8cb: 0x07ae, + 0x8cc: 0x07be, 0x8cd: 0x07ce, 0x8ce: 0x07de, 0x8cf: 0x07fe, 0x8d0: 0x0802, 0x8d1: 0x0806, + 0x8d2: 0x083a, 0x8d3: 0x0862, 0x8d4: 0x0872, 0x8d5: 0x087a, 0x8d6: 0x087e, 0x8d7: 0x088a, + 0x8d8: 0x08a6, 0x8d9: 0x08aa, 0x8da: 0x08c2, 0x8db: 0x08c6, 0x8dc: 0x08ce, 0x8dd: 0x08de, + 0x8de: 0x097a, 0x8df: 0x098e, 0x8e0: 0x09ce, 0x8e1: 0x09e2, 0x8e2: 0x09ea, 0x8e3: 0x09ee, + 0x8e4: 0x09fe, 0x8e5: 0x0a1a, 0x8e6: 0x0a46, 0x8e7: 0x0a52, 0x8e8: 0x0a72, 0x8e9: 0x0a7e, + 0x8ea: 0x0a82, 0x8eb: 0x0a86, 0x8ec: 0x0a9e, 0x8ed: 0x0aa2, 0x8ee: 0x0ace, 0x8ef: 0x0ada, + 0x8f0: 0x0ae2, 0x8f1: 0x0aea, 0x8f2: 0x0afa, 0x8f3: 0x0b02, 0x8f4: 0x0b0a, 0x8f5: 0x0b36, + 0x8f6: 0x0b3a, 0x8f7: 0x0b42, 0x8f8: 0x0b46, 0x8f9: 0x0b4e, 0x8fa: 0x0b56, 0x8fb: 0x0b66, + 0x8fc: 0x0b82, 0x8fd: 0x0bfa, 0x8fe: 0x0c0e, 0x8ff: 0x0c12, + // Block 0x24, offset 0x900 + 0x900: 0x0c92, 0x901: 0x0c96, 0x902: 0x0caa, 0x903: 0x0cae, 0x904: 0x0cb6, 0x905: 0x0cbe, + 0x906: 0x0cc6, 0x907: 0x0cd2, 0x908: 0x0cfa, 0x909: 0x0d0a, 0x90a: 0x0d1e, 0x90b: 0x0d8e, + 0x90c: 0x0d9a, 0x90d: 0x0daa, 0x90e: 0x0db6, 0x90f: 0x0dc2, 0x910: 0x0dca, 0x911: 0x0dce, + 0x912: 0x0dd2, 0x913: 0x0dd6, 0x914: 0x0dda, 0x915: 0x0e92, 0x916: 0x0eda, 0x917: 0x0ee6, + 0x918: 0x0eea, 0x919: 0x0eee, 0x91a: 0x0ef2, 0x91b: 0x0efa, 0x91c: 0x0efe, 0x91d: 0x0f12, + 0x91e: 0x0f2e, 0x91f: 0x0f36, 0x920: 0x0f76, 0x921: 0x0f7a, 0x922: 0x0f82, 0x923: 0x0f86, + 0x924: 0x0f8e, 0x925: 0x0f92, 0x926: 0x0fb6, 0x927: 0x0fba, 0x928: 0x0fd6, 0x929: 0x0fda, + 0x92a: 0x0fde, 0x92b: 0x0fe2, 0x92c: 0x0ff6, 0x92d: 0x101a, 0x92e: 0x101e, 0x92f: 0x1022, + 0x930: 0x1046, 0x931: 0x1086, 0x932: 0x108a, 0x933: 0x10aa, 0x934: 0x10ba, 0x935: 0x10c2, + 0x936: 0x10e2, 0x937: 0x1106, 0x938: 0x114a, 0x939: 0x1152, 0x93a: 0x1166, 0x93b: 0x1172, + 0x93c: 0x117a, 0x93d: 0x1182, 0x93e: 0x1186, 0x93f: 0x118a, + // Block 0x25, offset 0x940 + 0x940: 0x11a2, 0x941: 0x11a6, 0x942: 0x11c2, 0x943: 0x11ca, 0x944: 0x11d2, 0x945: 0x11d6, + 0x946: 0x11e2, 0x947: 0x11ea, 0x948: 0x11ee, 0x949: 0x11f2, 0x94a: 0x11fa, 0x94b: 0x11fe, + 0x94c: 0x129e, 0x94d: 0x12b2, 0x94e: 0x12e6, 0x94f: 0x12ea, 0x950: 0x12f2, 0x951: 0x131e, + 0x952: 0x1326, 0x953: 0x132e, 0x954: 0x1336, 0x955: 0x1372, 0x956: 0x1376, 0x957: 0x137e, + 0x958: 0x1382, 0x959: 0x1386, 0x95a: 0x13b2, 0x95b: 0x13b6, 0x95c: 0x13be, 0x95d: 0x13d2, + 0x95e: 0x13d6, 0x95f: 0x13f2, 0x960: 0x13fa, 0x961: 0x13fe, 0x962: 0x1422, 0x963: 0x1442, + 0x964: 0x1456, 0x965: 0x145a, 0x966: 0x1462, 0x967: 0x148e, 0x968: 0x1492, 0x969: 0x14a2, + 0x96a: 0x14c6, 0x96b: 0x14d2, 0x96c: 0x14e2, 0x96d: 0x14fa, 0x96e: 0x1502, 0x96f: 0x1506, + 0x970: 0x150a, 0x971: 0x150e, 0x972: 0x151a, 0x973: 0x151e, 0x974: 0x1526, 0x975: 0x1542, + 0x976: 0x1546, 0x977: 0x154a, 0x978: 0x1562, 0x979: 0x1566, 0x97a: 0x156e, 0x97b: 0x1582, + 0x97c: 0x1586, 0x97d: 0x158a, 0x97e: 0x1592, 0x97f: 0x1596, + // Block 0x26, offset 0x980 + 0x986: 0xa000, 0x98b: 0xa000, + 0x98c: 0x3f1f, 0x98d: 0xa000, 0x98e: 0x3f27, 0x98f: 0xa000, 0x990: 0x3f2f, 0x991: 0xa000, + 0x992: 0x3f37, 0x993: 0xa000, 0x994: 0x3f3f, 0x995: 0xa000, 0x996: 0x3f47, 0x997: 0xa000, + 0x998: 0x3f4f, 0x999: 0xa000, 0x99a: 0x3f57, 0x99b: 0xa000, 0x99c: 0x3f5f, 0x99d: 0xa000, + 0x99e: 0x3f67, 0x99f: 0xa000, 0x9a0: 0x3f6f, 0x9a1: 0xa000, 0x9a2: 0x3f77, + 0x9a4: 0xa000, 0x9a5: 0x3f7f, 0x9a6: 0xa000, 0x9a7: 0x3f87, 0x9a8: 0xa000, 0x9a9: 0x3f8f, + 0x9af: 0xa000, + 0x9b0: 0x3f97, 0x9b1: 0x3f9f, 0x9b2: 0xa000, 0x9b3: 0x3fa7, 0x9b4: 0x3faf, 0x9b5: 0xa000, + 0x9b6: 0x3fb7, 0x9b7: 0x3fbf, 0x9b8: 0xa000, 0x9b9: 0x3fc7, 0x9ba: 0x3fcf, 0x9bb: 0xa000, + 0x9bc: 0x3fd7, 0x9bd: 0x3fdf, + // Block 0x27, offset 0x9c0 + 0x9d4: 0x3f17, + 0x9d9: 0x9904, 0x9da: 0x9904, 0x9db: 0x42f3, 0x9dc: 0x42f9, 0x9dd: 0xa000, + 0x9de: 0x3fe7, 0x9df: 0x26ba, + 0x9e6: 0xa000, + 0x9eb: 0xa000, 0x9ec: 0x3ff7, 0x9ed: 0xa000, 0x9ee: 0x3fff, 0x9ef: 0xa000, + 0x9f0: 0x4007, 0x9f1: 0xa000, 0x9f2: 0x400f, 0x9f3: 0xa000, 0x9f4: 0x4017, 0x9f5: 0xa000, + 0x9f6: 0x401f, 0x9f7: 0xa000, 0x9f8: 0x4027, 0x9f9: 0xa000, 0x9fa: 0x402f, 0x9fb: 0xa000, + 0x9fc: 0x4037, 0x9fd: 0xa000, 0x9fe: 0x403f, 0x9ff: 0xa000, + // Block 0x28, offset 0xa00 + 0xa00: 0x4047, 0xa01: 0xa000, 0xa02: 0x404f, 0xa04: 0xa000, 0xa05: 0x4057, + 0xa06: 0xa000, 0xa07: 0x405f, 0xa08: 0xa000, 0xa09: 0x4067, + 0xa0f: 0xa000, 0xa10: 0x406f, 0xa11: 0x4077, + 0xa12: 0xa000, 0xa13: 0x407f, 0xa14: 0x4087, 0xa15: 0xa000, 0xa16: 0x408f, 0xa17: 0x4097, + 0xa18: 0xa000, 0xa19: 0x409f, 0xa1a: 0x40a7, 0xa1b: 0xa000, 0xa1c: 0x40af, 0xa1d: 0x40b7, + 0xa2f: 0xa000, + 0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fef, + 0xa37: 0x40bf, 0xa38: 0x40c7, 0xa39: 0x40cf, 0xa3a: 0x40d7, + 0xa3d: 0xa000, 0xa3e: 0x40df, 0xa3f: 0x26cf, + // Block 0x29, offset 0xa40 + 0xa40: 0x036a, 0xa41: 0x032e, 0xa42: 0x0332, 0xa43: 0x0336, 0xa44: 0x037e, 0xa45: 0x033a, + 0xa46: 0x033e, 0xa47: 0x0342, 0xa48: 0x0346, 0xa49: 0x034a, 0xa4a: 0x034e, 0xa4b: 0x0352, + 0xa4c: 0x0356, 0xa4d: 0x035a, 0xa4e: 0x035e, 0xa4f: 0x49d4, 0xa50: 0x49da, 0xa51: 0x49e0, + 0xa52: 0x49e6, 0xa53: 0x49ec, 0xa54: 0x49f2, 0xa55: 0x49f8, 0xa56: 0x49fe, 0xa57: 0x4a04, + 0xa58: 0x4a0a, 0xa59: 0x4a10, 0xa5a: 0x4a16, 0xa5b: 0x4a1c, 0xa5c: 0x4a22, 0xa5d: 0x4a28, + 0xa5e: 0x4a2e, 0xa5f: 0x4a34, 0xa60: 0x4a3a, 0xa61: 0x4a40, 0xa62: 0x4a46, 0xa63: 0x4a4c, + 0xa64: 0x03c6, 0xa65: 0x0362, 0xa66: 0x0366, 0xa67: 0x03ea, 0xa68: 0x03ee, 0xa69: 0x03f2, + 0xa6a: 0x03f6, 0xa6b: 0x03fa, 0xa6c: 0x03fe, 0xa6d: 0x0402, 0xa6e: 0x036e, 0xa6f: 0x0406, + 0xa70: 0x040a, 0xa71: 0x0372, 0xa72: 0x0376, 0xa73: 0x037a, 0xa74: 0x0382, 0xa75: 0x0386, + 0xa76: 0x038a, 0xa77: 0x038e, 0xa78: 0x0392, 0xa79: 0x0396, 0xa7a: 0x039a, 0xa7b: 0x039e, + 0xa7c: 0x03a2, 0xa7d: 0x03a6, 0xa7e: 0x03aa, 0xa7f: 0x03ae, + // Block 0x2a, offset 0xa80 + 0xa80: 0x03b2, 0xa81: 0x03b6, 0xa82: 0x040e, 0xa83: 0x0412, 0xa84: 0x03ba, 0xa85: 0x03be, + 0xa86: 0x03c2, 0xa87: 0x03ca, 0xa88: 0x03ce, 0xa89: 0x03d2, 0xa8a: 0x03d6, 0xa8b: 0x03da, + 0xa8c: 0x03de, 0xa8d: 0x03e2, 0xa8e: 0x03e6, + 0xa92: 0x06c2, 0xa93: 0x071e, 0xa94: 0x06ce, 0xa95: 0x097e, 0xa96: 0x06d2, 0xa97: 0x06ea, + 0xa98: 0x06d6, 0xa99: 0x0f96, 0xa9a: 0x070a, 0xa9b: 0x06de, 0xa9c: 0x06c6, 0xa9d: 0x0a02, + 0xa9e: 0x0992, 0xa9f: 0x0732, + // Block 0x2b, offset 0xac0 + 0xac0: 0x205a, 0xac1: 0x2060, 0xac2: 0x2066, 0xac3: 0x206c, 0xac4: 0x2072, 0xac5: 0x2078, + 0xac6: 0x207e, 0xac7: 0x2084, 0xac8: 0x208a, 0xac9: 0x2090, 0xaca: 0x2096, 0xacb: 0x209c, + 0xacc: 0x20a2, 0xacd: 0x20a8, 0xace: 0x2733, 0xacf: 0x273c, 0xad0: 0x2745, 0xad1: 0x274e, + 0xad2: 0x2757, 0xad3: 0x2760, 0xad4: 0x2769, 0xad5: 0x2772, 0xad6: 0x277b, 0xad7: 0x278d, + 0xad8: 0x2796, 0xad9: 0x279f, 0xada: 0x27a8, 0xadb: 0x27b1, 0xadc: 0x2784, 0xadd: 0x2bb9, + 0xade: 0x2afa, 0xae0: 0x20ae, 0xae1: 0x20c6, 0xae2: 0x20ba, 0xae3: 0x210e, + 0xae4: 0x20cc, 0xae5: 0x20ea, 0xae6: 0x20b4, 0xae7: 0x20e4, 0xae8: 0x20c0, 0xae9: 0x20f6, + 0xaea: 0x2126, 0xaeb: 0x2144, 0xaec: 0x213e, 0xaed: 0x2132, 0xaee: 0x2180, 0xaef: 0x2114, + 0xaf0: 0x2120, 0xaf1: 0x2138, 0xaf2: 0x212c, 0xaf3: 0x2156, 0xaf4: 0x2102, 0xaf5: 0x214a, + 0xaf6: 0x2174, 0xaf7: 0x215c, 0xaf8: 0x20f0, 0xaf9: 0x20d2, 0xafa: 0x2108, 0xafb: 0x211a, + 0xafc: 0x2150, 0xafd: 0x20d8, 0xafe: 0x217a, 0xaff: 0x20fc, + // Block 0x2c, offset 0xb00 + 0xb00: 0x2162, 0xb01: 0x20de, 0xb02: 0x2168, 0xb03: 0x216e, 0xb04: 0x0932, 0xb05: 0x0b06, + 0xb06: 0x0caa, 0xb07: 0x10ca, + 0xb10: 0x1bca, 0xb11: 0x18ac, + 0xb12: 0x18af, 0xb13: 0x18b2, 0xb14: 0x18b5, 0xb15: 0x18b8, 0xb16: 0x18bb, 0xb17: 0x18be, + 0xb18: 0x18c1, 0xb19: 0x18c4, 0xb1a: 0x18cd, 0xb1b: 0x18d0, 0xb1c: 0x18d3, 0xb1d: 0x18d6, + 0xb1e: 0x18d9, 0xb1f: 0x18dc, 0xb20: 0x0316, 0xb21: 0x031e, 0xb22: 0x0322, 0xb23: 0x032a, + 0xb24: 0x032e, 0xb25: 0x0332, 0xb26: 0x033a, 0xb27: 0x0342, 0xb28: 0x0346, 0xb29: 0x034e, + 0xb2a: 0x0352, 0xb2b: 0x0356, 0xb2c: 0x035a, 0xb2d: 0x035e, 0xb2e: 0x2e2f, 0xb2f: 0x2e37, + 0xb30: 0x2e3f, 0xb31: 0x2e47, 0xb32: 0x2e4f, 0xb33: 0x2e57, 0xb34: 0x2e5f, 0xb35: 0x2e67, + 0xb36: 0x2e77, 0xb37: 0x2e7f, 0xb38: 0x2e87, 0xb39: 0x2e8f, 0xb3a: 0x2e97, 0xb3b: 0x2e9f, + 0xb3c: 0x2eea, 0xb3d: 0x2eb2, 0xb3e: 0x2e6f, + // Block 0x2d, offset 0xb40 + 0xb40: 0x06c2, 0xb41: 0x071e, 0xb42: 0x06ce, 0xb43: 0x097e, 0xb44: 0x0722, 0xb45: 0x07b2, + 0xb46: 0x06ca, 0xb47: 0x07ae, 0xb48: 0x070e, 0xb49: 0x088a, 0xb4a: 0x0d0a, 0xb4b: 0x0e92, + 0xb4c: 0x0dda, 0xb4d: 0x0d1e, 0xb4e: 0x1462, 0xb4f: 0x098e, 0xb50: 0x0cd2, 0xb51: 0x0d4e, + 0xb52: 0x0d0e, 0xb53: 0x104e, 0xb54: 0x08fe, 0xb55: 0x0f06, 0xb56: 0x138a, 0xb57: 0x1062, + 0xb58: 0x0846, 0xb59: 0x1092, 0xb5a: 0x0f9e, 0xb5b: 0x0a1a, 0xb5c: 0x1412, 0xb5d: 0x0782, + 0xb5e: 0x08ae, 0xb5f: 0x0dfa, 0xb60: 0x152a, 0xb61: 0x0746, 0xb62: 0x07d6, 0xb63: 0x0d9e, + 0xb64: 0x06d2, 0xb65: 0x06ea, 0xb66: 0x06d6, 0xb67: 0x0ade, 0xb68: 0x08f2, 0xb69: 0x0882, + 0xb6a: 0x0a5a, 0xb6b: 0x0a4e, 0xb6c: 0x0fee, 0xb6d: 0x0742, 0xb6e: 0x139e, 0xb6f: 0x089e, + 0xb70: 0x09f6, 0xb71: 0x18df, 0xb72: 0x18e2, 0xb73: 0x18e5, 0xb74: 0x18e8, 0xb75: 0x18f1, + 0xb76: 0x18f4, 0xb77: 0x18f7, 0xb78: 0x18fa, 0xb79: 0x18fd, 0xb7a: 0x1900, 0xb7b: 0x1903, + 0xb7c: 0x1906, 0xb7d: 0x1909, 0xb7e: 0x190c, 0xb7f: 0x1915, + // Block 0x2e, offset 0xb80 + 0xb80: 0x1ccc, 0xb81: 0x1cdb, 0xb82: 0x1cea, 0xb83: 0x1cf9, 0xb84: 0x1d08, 0xb85: 0x1d17, + 0xb86: 0x1d26, 0xb87: 0x1d35, 0xb88: 0x1d44, 0xb89: 0x2192, 0xb8a: 0x21a4, 0xb8b: 0x21b6, + 0xb8c: 0x1957, 0xb8d: 0x1c0a, 0xb8e: 0x19d8, 0xb8f: 0x1bae, 0xb90: 0x04ce, 0xb91: 0x04d6, + 0xb92: 0x04de, 0xb93: 0x04e6, 0xb94: 0x04ee, 0xb95: 0x04f2, 0xb96: 0x04f6, 0xb97: 0x04fa, + 0xb98: 0x04fe, 0xb99: 0x0502, 0xb9a: 0x0506, 0xb9b: 0x050a, 0xb9c: 0x050e, 0xb9d: 0x0512, + 0xb9e: 0x0516, 0xb9f: 0x051a, 0xba0: 0x051e, 0xba1: 0x0526, 0xba2: 0x052a, 0xba3: 0x052e, + 0xba4: 0x0532, 0xba5: 0x0536, 0xba6: 0x053a, 0xba7: 0x053e, 0xba8: 0x0542, 0xba9: 0x0546, + 0xbaa: 0x054a, 0xbab: 0x054e, 0xbac: 0x0552, 0xbad: 0x0556, 0xbae: 0x055a, 0xbaf: 0x055e, + 0xbb0: 0x0562, 0xbb1: 0x0566, 0xbb2: 0x056a, 0xbb3: 0x0572, 0xbb4: 0x057a, 0xbb5: 0x0582, + 0xbb6: 0x0586, 0xbb7: 0x058a, 0xbb8: 0x058e, 0xbb9: 0x0592, 0xbba: 0x0596, 0xbbb: 0x059a, + 0xbbc: 0x059e, 0xbbd: 0x05a2, 0xbbe: 0x05a6, 0xbbf: 0x2700, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x2b19, 0xbc1: 0x29b5, 0xbc2: 0x2b29, 0xbc3: 0x288d, 0xbc4: 0x2efb, 0xbc5: 0x2897, + 0xbc6: 0x28a1, 0xbc7: 0x2f3f, 0xbc8: 0x29c2, 0xbc9: 0x28ab, 0xbca: 0x28b5, 0xbcb: 0x28bf, + 0xbcc: 0x29e9, 0xbcd: 0x29f6, 0xbce: 0x29cf, 0xbcf: 0x29dc, 0xbd0: 0x2ec0, 0xbd1: 0x2a03, + 0xbd2: 0x2a10, 0xbd3: 0x2bcb, 0xbd4: 0x26c1, 0xbd5: 0x2bde, 0xbd6: 0x2bf1, 0xbd7: 0x2b39, + 0xbd8: 0x2a1d, 0xbd9: 0x2c04, 0xbda: 0x2c17, 0xbdb: 0x2a2a, 0xbdc: 0x28c9, 0xbdd: 0x28d3, + 0xbde: 0x2ece, 0xbdf: 0x2a37, 0xbe0: 0x2b49, 0xbe1: 0x2f0c, 0xbe2: 0x28dd, 0xbe3: 0x28e7, + 0xbe4: 0x2a44, 0xbe5: 0x28f1, 0xbe6: 0x28fb, 0xbe7: 0x26d6, 0xbe8: 0x26dd, 0xbe9: 0x2905, + 0xbea: 0x290f, 0xbeb: 0x2c2a, 0xbec: 0x2a51, 0xbed: 0x2b59, 0xbee: 0x2c3d, 0xbef: 0x2a5e, + 0xbf0: 0x2923, 0xbf1: 0x2919, 0xbf2: 0x2f53, 0xbf3: 0x2a6b, 0xbf4: 0x2c50, 0xbf5: 0x292d, + 0xbf6: 0x2b69, 0xbf7: 0x2937, 0xbf8: 0x2a85, 0xbf9: 0x2941, 0xbfa: 0x2a92, 0xbfb: 0x2f1d, + 0xbfc: 0x2a78, 0xbfd: 0x2b79, 0xbfe: 0x2a9f, 0xbff: 0x26e4, + // Block 0x30, offset 0xc00 + 0xc00: 0x2f2e, 0xc01: 0x294b, 0xc02: 0x2955, 0xc03: 0x2aac, 0xc04: 0x295f, 0xc05: 0x2969, + 0xc06: 0x2973, 0xc07: 0x2b89, 0xc08: 0x2ab9, 0xc09: 0x26eb, 0xc0a: 0x2c63, 0xc0b: 0x2ea7, + 0xc0c: 0x2b99, 0xc0d: 0x2ac6, 0xc0e: 0x2edc, 0xc0f: 0x297d, 0xc10: 0x2987, 0xc11: 0x2ad3, + 0xc12: 0x26f2, 0xc13: 0x2ae0, 0xc14: 0x2ba9, 0xc15: 0x26f9, 0xc16: 0x2c76, 0xc17: 0x2991, + 0xc18: 0x1cbd, 0xc19: 0x1cd1, 0xc1a: 0x1ce0, 0xc1b: 0x1cef, 0xc1c: 0x1cfe, 0xc1d: 0x1d0d, + 0xc1e: 0x1d1c, 0xc1f: 0x1d2b, 0xc20: 0x1d3a, 0xc21: 0x1d49, 0xc22: 0x2198, 0xc23: 0x21aa, + 0xc24: 0x21bc, 0xc25: 0x21c8, 0xc26: 0x21d4, 0xc27: 0x21e0, 0xc28: 0x21ec, 0xc29: 0x21f8, + 0xc2a: 0x2204, 0xc2b: 0x2210, 0xc2c: 0x224c, 0xc2d: 0x2258, 0xc2e: 0x2264, 0xc2f: 0x2270, + 0xc30: 0x227c, 0xc31: 0x1c1a, 0xc32: 0x19cc, 0xc33: 0x1939, 0xc34: 0x1bea, 0xc35: 0x1a4d, + 0xc36: 0x1a5c, 0xc37: 0x19d2, 0xc38: 0x1c02, 0xc39: 0x1c06, 0xc3a: 0x1963, 0xc3b: 0x270e, + 0xc3c: 0x271c, 0xc3d: 0x2707, 0xc3e: 0x2715, 0xc3f: 0x2aed, + // Block 0x31, offset 0xc40 + 0xc40: 0x1a50, 0xc41: 0x1a38, 0xc42: 0x1c66, 0xc43: 0x1a20, 0xc44: 0x19f9, 0xc45: 0x196c, + 0xc46: 0x197b, 0xc47: 0x194b, 0xc48: 0x1bf6, 0xc49: 0x1d58, 0xc4a: 0x1a53, 0xc4b: 0x1a3b, + 0xc4c: 0x1c6a, 0xc4d: 0x1c76, 0xc4e: 0x1a2c, 0xc4f: 0x1a02, 0xc50: 0x195a, 0xc51: 0x1c22, + 0xc52: 0x1bb6, 0xc53: 0x1ba2, 0xc54: 0x1bd2, 0xc55: 0x1c7a, 0xc56: 0x1a2f, 0xc57: 0x19cf, + 0xc58: 0x1a05, 0xc59: 0x19e4, 0xc5a: 0x1a47, 0xc5b: 0x1c7e, 0xc5c: 0x1a32, 0xc5d: 0x19c6, + 0xc5e: 0x1a08, 0xc5f: 0x1c42, 0xc60: 0x1bfa, 0xc61: 0x1a1a, 0xc62: 0x1c2a, 0xc63: 0x1c46, + 0xc64: 0x1bfe, 0xc65: 0x1a1d, 0xc66: 0x1c2e, 0xc67: 0x22ee, 0xc68: 0x2302, 0xc69: 0x199c, + 0xc6a: 0x1c26, 0xc6b: 0x1bba, 0xc6c: 0x1ba6, 0xc6d: 0x1c4e, 0xc6e: 0x2723, 0xc6f: 0x27ba, + 0xc70: 0x1a5f, 0xc71: 0x1a4a, 0xc72: 0x1c82, 0xc73: 0x1a35, 0xc74: 0x1a56, 0xc75: 0x1a3e, + 0xc76: 0x1c6e, 0xc77: 0x1a23, 0xc78: 0x19fc, 0xc79: 0x1987, 0xc7a: 0x1a59, 0xc7b: 0x1a41, + 0xc7c: 0x1c72, 0xc7d: 0x1a26, 0xc7e: 0x19ff, 0xc7f: 0x198a, + // Block 0x32, offset 0xc80 + 0xc80: 0x1c32, 0xc81: 0x1bbe, 0xc82: 0x1d53, 0xc83: 0x193c, 0xc84: 0x19c0, 0xc85: 0x19c3, + 0xc86: 0x22fb, 0xc87: 0x1b9a, 0xc88: 0x19c9, 0xc89: 0x194e, 0xc8a: 0x19e7, 0xc8b: 0x1951, + 0xc8c: 0x19f0, 0xc8d: 0x196f, 0xc8e: 0x1972, 0xc8f: 0x1a0b, 0xc90: 0x1a11, 0xc91: 0x1a14, + 0xc92: 0x1c36, 0xc93: 0x1a17, 0xc94: 0x1a29, 0xc95: 0x1c3e, 0xc96: 0x1c4a, 0xc97: 0x1996, + 0xc98: 0x1d5d, 0xc99: 0x1bc2, 0xc9a: 0x1999, 0xc9b: 0x1a62, 0xc9c: 0x19ab, 0xc9d: 0x19ba, + 0xc9e: 0x22e8, 0xc9f: 0x22e2, 0xca0: 0x1cc7, 0xca1: 0x1cd6, 0xca2: 0x1ce5, 0xca3: 0x1cf4, + 0xca4: 0x1d03, 0xca5: 0x1d12, 0xca6: 0x1d21, 0xca7: 0x1d30, 0xca8: 0x1d3f, 0xca9: 0x218c, + 0xcaa: 0x219e, 0xcab: 0x21b0, 0xcac: 0x21c2, 0xcad: 0x21ce, 0xcae: 0x21da, 0xcaf: 0x21e6, + 0xcb0: 0x21f2, 0xcb1: 0x21fe, 0xcb2: 0x220a, 0xcb3: 0x2246, 0xcb4: 0x2252, 0xcb5: 0x225e, + 0xcb6: 0x226a, 0xcb7: 0x2276, 0xcb8: 0x2282, 0xcb9: 0x2288, 0xcba: 0x228e, 0xcbb: 0x2294, + 0xcbc: 0x229a, 0xcbd: 0x22ac, 0xcbe: 0x22b2, 0xcbf: 0x1c16, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x137a, 0xcc1: 0x0cfe, 0xcc2: 0x13d6, 0xcc3: 0x13a2, 0xcc4: 0x0e5a, 0xcc5: 0x06ee, + 0xcc6: 0x08e2, 0xcc7: 0x162e, 0xcc8: 0x162e, 0xcc9: 0x0a0e, 0xcca: 0x1462, 0xccb: 0x0946, + 0xccc: 0x0a0a, 0xccd: 0x0bf2, 0xcce: 0x0fd2, 0xccf: 0x1162, 0xcd0: 0x129a, 0xcd1: 0x12d6, + 0xcd2: 0x130a, 0xcd3: 0x141e, 0xcd4: 0x0d76, 0xcd5: 0x0e02, 0xcd6: 0x0eae, 0xcd7: 0x0f46, + 0xcd8: 0x1262, 0xcd9: 0x144a, 0xcda: 0x1576, 0xcdb: 0x0712, 0xcdc: 0x08b6, 0xcdd: 0x0d8a, + 0xcde: 0x0ed2, 0xcdf: 0x1296, 0xce0: 0x15c6, 0xce1: 0x0ab6, 0xce2: 0x0e7a, 0xce3: 0x1286, + 0xce4: 0x131a, 0xce5: 0x0c26, 0xce6: 0x11be, 0xce7: 0x12e2, 0xce8: 0x0b22, 0xce9: 0x0d12, + 0xcea: 0x0e1a, 0xceb: 0x0f1e, 0xcec: 0x142a, 0xced: 0x0752, 0xcee: 0x07ea, 0xcef: 0x0856, + 0xcf0: 0x0c8e, 0xcf1: 0x0d82, 0xcf2: 0x0ece, 0xcf3: 0x0ff2, 0xcf4: 0x117a, 0xcf5: 0x128e, + 0xcf6: 0x12a6, 0xcf7: 0x13ca, 0xcf8: 0x14f2, 0xcf9: 0x15a6, 0xcfa: 0x15c2, 0xcfb: 0x102e, + 0xcfc: 0x106e, 0xcfd: 0x1126, 0xcfe: 0x1246, 0xcff: 0x147e, + // Block 0x34, offset 0xd00 + 0xd00: 0x15ce, 0xd01: 0x134e, 0xd02: 0x09ca, 0xd03: 0x0b3e, 0xd04: 0x10de, 0xd05: 0x119e, + 0xd06: 0x0f02, 0xd07: 0x1036, 0xd08: 0x139a, 0xd09: 0x14ea, 0xd0a: 0x09c6, 0xd0b: 0x0a92, + 0xd0c: 0x0d7a, 0xd0d: 0x0e2e, 0xd0e: 0x0e62, 0xd0f: 0x1116, 0xd10: 0x113e, 0xd11: 0x14aa, + 0xd12: 0x0852, 0xd13: 0x11aa, 0xd14: 0x07f6, 0xd15: 0x07f2, 0xd16: 0x109a, 0xd17: 0x112a, + 0xd18: 0x125e, 0xd19: 0x14b2, 0xd1a: 0x136a, 0xd1b: 0x0c2a, 0xd1c: 0x0d76, 0xd1d: 0x135a, + 0xd1e: 0x06fa, 0xd1f: 0x0a66, 0xd20: 0x0b96, 0xd21: 0x0f32, 0xd22: 0x0fb2, 0xd23: 0x0876, + 0xd24: 0x103e, 0xd25: 0x0762, 0xd26: 0x0b7a, 0xd27: 0x06da, 0xd28: 0x0dee, 0xd29: 0x0ca6, + 0xd2a: 0x1112, 0xd2b: 0x08ca, 0xd2c: 0x09b6, 0xd2d: 0x0ffe, 0xd2e: 0x1266, 0xd2f: 0x133e, + 0xd30: 0x0dba, 0xd31: 0x13fa, 0xd32: 0x0de6, 0xd33: 0x0c3a, 0xd34: 0x121e, 0xd35: 0x0c5a, + 0xd36: 0x0fae, 0xd37: 0x072e, 0xd38: 0x07aa, 0xd39: 0x07ee, 0xd3a: 0x0d56, 0xd3b: 0x10fe, + 0xd3c: 0x11f6, 0xd3d: 0x134a, 0xd3e: 0x145e, 0xd3f: 0x085e, + // Block 0x35, offset 0xd40 + 0xd40: 0x0912, 0xd41: 0x0a1a, 0xd42: 0x0b32, 0xd43: 0x0cc2, 0xd44: 0x0e7e, 0xd45: 0x1042, + 0xd46: 0x149a, 0xd47: 0x157e, 0xd48: 0x15d2, 0xd49: 0x15ea, 0xd4a: 0x083a, 0xd4b: 0x0cf6, + 0xd4c: 0x0da6, 0xd4d: 0x13ee, 0xd4e: 0x0afe, 0xd4f: 0x0bda, 0xd50: 0x0bf6, 0xd51: 0x0c86, + 0xd52: 0x0e6e, 0xd53: 0x0eba, 0xd54: 0x0f6a, 0xd55: 0x108e, 0xd56: 0x1132, 0xd57: 0x1196, + 0xd58: 0x13de, 0xd59: 0x126e, 0xd5a: 0x1406, 0xd5b: 0x1482, 0xd5c: 0x0812, 0xd5d: 0x083e, + 0xd5e: 0x0926, 0xd5f: 0x0eaa, 0xd60: 0x12f6, 0xd61: 0x133e, 0xd62: 0x0b1e, 0xd63: 0x0b8e, + 0xd64: 0x0c52, 0xd65: 0x0db2, 0xd66: 0x10da, 0xd67: 0x0f26, 0xd68: 0x073e, 0xd69: 0x0982, + 0xd6a: 0x0a66, 0xd6b: 0x0aca, 0xd6c: 0x0b9a, 0xd6d: 0x0f42, 0xd6e: 0x0f5e, 0xd6f: 0x116e, + 0xd70: 0x118e, 0xd71: 0x1466, 0xd72: 0x14e6, 0xd73: 0x14f6, 0xd74: 0x1532, 0xd75: 0x0756, + 0xd76: 0x1082, 0xd77: 0x1452, 0xd78: 0x14ce, 0xd79: 0x0bb2, 0xd7a: 0x071a, 0xd7b: 0x077a, + 0xd7c: 0x0a6a, 0xd7d: 0x0a8a, 0xd7e: 0x0cb2, 0xd7f: 0x0d76, + // Block 0x36, offset 0xd80 + 0xd80: 0x0ec6, 0xd81: 0x0fce, 0xd82: 0x127a, 0xd83: 0x141a, 0xd84: 0x1626, 0xd85: 0x0ce6, + 0xd86: 0x14a6, 0xd87: 0x0836, 0xd88: 0x0d32, 0xd89: 0x0d3e, 0xd8a: 0x0e12, 0xd8b: 0x0e4a, + 0xd8c: 0x0f4e, 0xd8d: 0x0faa, 0xd8e: 0x102a, 0xd8f: 0x110e, 0xd90: 0x153e, 0xd91: 0x07b2, + 0xd92: 0x0c06, 0xd93: 0x14b6, 0xd94: 0x076a, 0xd95: 0x0aae, 0xd96: 0x0e32, 0xd97: 0x13e2, + 0xd98: 0x0b6a, 0xd99: 0x0bba, 0xd9a: 0x0d46, 0xd9b: 0x0f32, 0xd9c: 0x14be, 0xd9d: 0x081a, + 0xd9e: 0x0902, 0xd9f: 0x0a9a, 0xda0: 0x0cd6, 0xda1: 0x0d22, 0xda2: 0x0d62, 0xda3: 0x0df6, + 0xda4: 0x0f4a, 0xda5: 0x0fbe, 0xda6: 0x115a, 0xda7: 0x12fa, 0xda8: 0x1306, 0xda9: 0x145a, + 0xdaa: 0x14da, 0xdab: 0x0886, 0xdac: 0x0e4e, 0xdad: 0x0906, 0xdae: 0x0eca, 0xdaf: 0x0f6e, + 0xdb0: 0x128a, 0xdb1: 0x14c2, 0xdb2: 0x15ae, 0xdb3: 0x15d6, 0xdb4: 0x0d3a, 0xdb5: 0x0e2a, + 0xdb6: 0x11c6, 0xdb7: 0x10ba, 0xdb8: 0x10c6, 0xdb9: 0x10ea, 0xdba: 0x0f1a, 0xdbb: 0x0ea2, + 0xdbc: 0x1366, 0xdbd: 0x0736, 0xdbe: 0x122e, 0xdbf: 0x081e, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x080e, 0xdc1: 0x0b0e, 0xdc2: 0x0c2e, 0xdc3: 0x10f6, 0xdc4: 0x0a56, 0xdc5: 0x0e06, + 0xdc6: 0x0cf2, 0xdc7: 0x13ea, 0xdc8: 0x12ea, 0xdc9: 0x14ae, 0xdca: 0x1326, 0xdcb: 0x0b2a, + 0xdcc: 0x078a, 0xdcd: 0x095e, 0xdd0: 0x09b2, + 0xdd2: 0x0ce2, 0xdd5: 0x07fa, 0xdd6: 0x0f22, 0xdd7: 0x0fe6, + 0xdd8: 0x104a, 0xdd9: 0x1066, 0xdda: 0x106a, 0xddb: 0x107e, 0xddc: 0x14fe, 0xddd: 0x10ee, + 0xdde: 0x1172, 0xde0: 0x1292, 0xde2: 0x1356, + 0xde5: 0x140a, 0xde6: 0x1436, + 0xdea: 0x1552, 0xdeb: 0x1556, 0xdec: 0x155a, 0xded: 0x15be, 0xdee: 0x142e, 0xdef: 0x14ca, + 0xdf0: 0x075a, 0xdf1: 0x077e, 0xdf2: 0x0792, 0xdf3: 0x084e, 0xdf4: 0x085a, 0xdf5: 0x089a, + 0xdf6: 0x094e, 0xdf7: 0x096a, 0xdf8: 0x0972, 0xdf9: 0x09ae, 0xdfa: 0x09ba, 0xdfb: 0x0a96, + 0xdfc: 0x0a9e, 0xdfd: 0x0ba6, 0xdfe: 0x0bce, 0xdff: 0x0bd6, + // Block 0x38, offset 0xe00 + 0xe00: 0x0bee, 0xe01: 0x0c9a, 0xe02: 0x0cca, 0xe03: 0x0cea, 0xe04: 0x0d5a, 0xe05: 0x0e1e, + 0xe06: 0x0e3a, 0xe07: 0x0e6a, 0xe08: 0x0ebe, 0xe09: 0x0ede, 0xe0a: 0x0f52, 0xe0b: 0x1032, + 0xe0c: 0x104e, 0xe0d: 0x1056, 0xe0e: 0x1052, 0xe0f: 0x105a, 0xe10: 0x105e, 0xe11: 0x1062, + 0xe12: 0x1076, 0xe13: 0x107a, 0xe14: 0x109e, 0xe15: 0x10b2, 0xe16: 0x10ce, 0xe17: 0x1132, + 0xe18: 0x113a, 0xe19: 0x1142, 0xe1a: 0x1156, 0xe1b: 0x117e, 0xe1c: 0x11ce, 0xe1d: 0x1202, + 0xe1e: 0x1202, 0xe1f: 0x126a, 0xe20: 0x1312, 0xe21: 0x132a, 0xe22: 0x135e, 0xe23: 0x1362, + 0xe24: 0x13a6, 0xe25: 0x13aa, 0xe26: 0x1402, 0xe27: 0x140a, 0xe28: 0x14de, 0xe29: 0x1522, + 0xe2a: 0x153a, 0xe2b: 0x0b9e, 0xe2c: 0x1721, 0xe2d: 0x11e6, + 0xe30: 0x06e2, 0xe31: 0x07e6, 0xe32: 0x07a6, 0xe33: 0x074e, 0xe34: 0x078e, 0xe35: 0x07ba, + 0xe36: 0x084a, 0xe37: 0x0866, 0xe38: 0x094e, 0xe39: 0x093a, 0xe3a: 0x094a, 0xe3b: 0x0966, + 0xe3c: 0x09b2, 0xe3d: 0x09c2, 0xe3e: 0x0a06, 0xe3f: 0x0a12, + // Block 0x39, offset 0xe40 + 0xe40: 0x0a2e, 0xe41: 0x0a3e, 0xe42: 0x0b26, 0xe43: 0x0b2e, 0xe44: 0x0b5e, 0xe45: 0x0b7e, + 0xe46: 0x0bae, 0xe47: 0x0bc6, 0xe48: 0x0bb6, 0xe49: 0x0bd6, 0xe4a: 0x0bca, 0xe4b: 0x0bee, + 0xe4c: 0x0c0a, 0xe4d: 0x0c62, 0xe4e: 0x0c6e, 0xe4f: 0x0c76, 0xe50: 0x0c9e, 0xe51: 0x0ce2, + 0xe52: 0x0d12, 0xe53: 0x0d16, 0xe54: 0x0d2a, 0xe55: 0x0daa, 0xe56: 0x0dba, 0xe57: 0x0e12, + 0xe58: 0x0e5e, 0xe59: 0x0e56, 0xe5a: 0x0e6a, 0xe5b: 0x0e86, 0xe5c: 0x0ebe, 0xe5d: 0x1016, + 0xe5e: 0x0ee2, 0xe5f: 0x0f16, 0xe60: 0x0f22, 0xe61: 0x0f62, 0xe62: 0x0f7e, 0xe63: 0x0fa2, + 0xe64: 0x0fc6, 0xe65: 0x0fca, 0xe66: 0x0fe6, 0xe67: 0x0fea, 0xe68: 0x0ffa, 0xe69: 0x100e, + 0xe6a: 0x100a, 0xe6b: 0x103a, 0xe6c: 0x10b6, 0xe6d: 0x10ce, 0xe6e: 0x10e6, 0xe6f: 0x111e, + 0xe70: 0x1132, 0xe71: 0x114e, 0xe72: 0x117e, 0xe73: 0x1232, 0xe74: 0x125a, 0xe75: 0x12ce, + 0xe76: 0x1316, 0xe77: 0x1322, 0xe78: 0x132a, 0xe79: 0x1342, 0xe7a: 0x1356, 0xe7b: 0x1346, + 0xe7c: 0x135e, 0xe7d: 0x135a, 0xe7e: 0x1352, 0xe7f: 0x1362, + // Block 0x3a, offset 0xe80 + 0xe80: 0x136e, 0xe81: 0x13aa, 0xe82: 0x13e6, 0xe83: 0x1416, 0xe84: 0x144e, 0xe85: 0x146e, + 0xe86: 0x14ba, 0xe87: 0x14de, 0xe88: 0x14fe, 0xe89: 0x1512, 0xe8a: 0x1522, 0xe8b: 0x152e, + 0xe8c: 0x153a, 0xe8d: 0x158e, 0xe8e: 0x162e, 0xe8f: 0x16b8, 0xe90: 0x16b3, 0xe91: 0x16e5, + 0xe92: 0x060a, 0xe93: 0x0632, 0xe94: 0x0636, 0xe95: 0x1767, 0xe96: 0x1794, 0xe97: 0x180c, + 0xe98: 0x161a, 0xe99: 0x162a, + // Block 0x3b, offset 0xec0 + 0xec0: 0x19db, 0xec1: 0x19de, 0xec2: 0x19e1, 0xec3: 0x1c0e, 0xec4: 0x1c12, 0xec5: 0x1a65, + 0xec6: 0x1a65, + 0xed3: 0x1d7b, 0xed4: 0x1d6c, 0xed5: 0x1d71, 0xed6: 0x1d80, 0xed7: 0x1d76, + 0xedd: 0x43a7, + 0xede: 0x8116, 0xedf: 0x4419, 0xee0: 0x0230, 0xee1: 0x0218, 0xee2: 0x0221, 0xee3: 0x0224, + 0xee4: 0x0227, 0xee5: 0x022a, 0xee6: 0x022d, 0xee7: 0x0233, 0xee8: 0x0236, 0xee9: 0x0017, + 0xeea: 0x4407, 0xeeb: 0x440d, 0xeec: 0x450b, 0xeed: 0x4513, 0xeee: 0x435f, 0xeef: 0x4365, + 0xef0: 0x436b, 0xef1: 0x4371, 0xef2: 0x437d, 0xef3: 0x4383, 0xef4: 0x4389, 0xef5: 0x4395, + 0xef6: 0x439b, 0xef8: 0x43a1, 0xef9: 0x43ad, 0xefa: 0x43b3, 0xefb: 0x43b9, + 0xefc: 0x43c5, 0xefe: 0x43cb, + // Block 0x3c, offset 0xf00 + 0xf00: 0x43d1, 0xf01: 0x43d7, 0xf03: 0x43dd, 0xf04: 0x43e3, + 0xf06: 0x43ef, 0xf07: 0x43f5, 0xf08: 0x43fb, 0xf09: 0x4401, 0xf0a: 0x4413, 0xf0b: 0x438f, + 0xf0c: 0x4377, 0xf0d: 0x43bf, 0xf0e: 0x43e9, 0xf0f: 0x1d85, 0xf10: 0x029c, 0xf11: 0x029c, + 0xf12: 0x02a5, 0xf13: 0x02a5, 0xf14: 0x02a5, 0xf15: 0x02a5, 0xf16: 0x02a8, 0xf17: 0x02a8, + 0xf18: 0x02a8, 0xf19: 0x02a8, 0xf1a: 0x02ae, 0xf1b: 0x02ae, 0xf1c: 0x02ae, 0xf1d: 0x02ae, + 0xf1e: 0x02a2, 0xf1f: 0x02a2, 0xf20: 0x02a2, 0xf21: 0x02a2, 0xf22: 0x02ab, 0xf23: 0x02ab, + 0xf24: 0x02ab, 0xf25: 0x02ab, 0xf26: 0x029f, 0xf27: 0x029f, 0xf28: 0x029f, 0xf29: 0x029f, + 0xf2a: 0x02d2, 0xf2b: 0x02d2, 0xf2c: 0x02d2, 0xf2d: 0x02d2, 0xf2e: 0x02d5, 0xf2f: 0x02d5, + 0xf30: 0x02d5, 0xf31: 0x02d5, 0xf32: 0x02b4, 0xf33: 0x02b4, 0xf34: 0x02b4, 0xf35: 0x02b4, + 0xf36: 0x02b1, 0xf37: 0x02b1, 0xf38: 0x02b1, 0xf39: 0x02b1, 0xf3a: 0x02b7, 0xf3b: 0x02b7, + 0xf3c: 0x02b7, 0xf3d: 0x02b7, 0xf3e: 0x02ba, 0xf3f: 0x02ba, + // Block 0x3d, offset 0xf40 + 0xf40: 0x02ba, 0xf41: 0x02ba, 0xf42: 0x02c3, 0xf43: 0x02c3, 0xf44: 0x02c0, 0xf45: 0x02c0, + 0xf46: 0x02c6, 0xf47: 0x02c6, 0xf48: 0x02bd, 0xf49: 0x02bd, 0xf4a: 0x02cc, 0xf4b: 0x02cc, + 0xf4c: 0x02c9, 0xf4d: 0x02c9, 0xf4e: 0x02d8, 0xf4f: 0x02d8, 0xf50: 0x02d8, 0xf51: 0x02d8, + 0xf52: 0x02de, 0xf53: 0x02de, 0xf54: 0x02de, 0xf55: 0x02de, 0xf56: 0x02e4, 0xf57: 0x02e4, + 0xf58: 0x02e4, 0xf59: 0x02e4, 0xf5a: 0x02e1, 0xf5b: 0x02e1, 0xf5c: 0x02e1, 0xf5d: 0x02e1, + 0xf5e: 0x02e7, 0xf5f: 0x02e7, 0xf60: 0x02ea, 0xf61: 0x02ea, 0xf62: 0x02ea, 0xf63: 0x02ea, + 0xf64: 0x4485, 0xf65: 0x4485, 0xf66: 0x02f0, 0xf67: 0x02f0, 0xf68: 0x02f0, 0xf69: 0x02f0, + 0xf6a: 0x02ed, 0xf6b: 0x02ed, 0xf6c: 0x02ed, 0xf6d: 0x02ed, 0xf6e: 0x030b, 0xf6f: 0x030b, + 0xf70: 0x447f, 0xf71: 0x447f, + // Block 0x3e, offset 0xf80 + 0xf93: 0x02db, 0xf94: 0x02db, 0xf95: 0x02db, 0xf96: 0x02db, 0xf97: 0x02f9, + 0xf98: 0x02f9, 0xf99: 0x02f6, 0xf9a: 0x02f6, 0xf9b: 0x02fc, 0xf9c: 0x02fc, 0xf9d: 0x2055, + 0xf9e: 0x0302, 0xf9f: 0x0302, 0xfa0: 0x02f3, 0xfa1: 0x02f3, 0xfa2: 0x02ff, 0xfa3: 0x02ff, + 0xfa4: 0x0308, 0xfa5: 0x0308, 0xfa6: 0x0308, 0xfa7: 0x0308, 0xfa8: 0x0290, 0xfa9: 0x0290, + 0xfaa: 0x25b0, 0xfab: 0x25b0, 0xfac: 0x2620, 0xfad: 0x2620, 0xfae: 0x25ef, 0xfaf: 0x25ef, + 0xfb0: 0x260b, 0xfb1: 0x260b, 0xfb2: 0x2604, 0xfb3: 0x2604, 0xfb4: 0x2612, 0xfb5: 0x2612, + 0xfb6: 0x2619, 0xfb7: 0x2619, 0xfb8: 0x2619, 0xfb9: 0x25f6, 0xfba: 0x25f6, 0xfbb: 0x25f6, + 0xfbc: 0x0305, 0xfbd: 0x0305, 0xfbe: 0x0305, 0xfbf: 0x0305, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x25b7, 0xfc1: 0x25be, 0xfc2: 0x25da, 0xfc3: 0x25f6, 0xfc4: 0x25fd, 0xfc5: 0x1d8f, + 0xfc6: 0x1d94, 0xfc7: 0x1d99, 0xfc8: 0x1da8, 0xfc9: 0x1db7, 0xfca: 0x1dbc, 0xfcb: 0x1dc1, + 0xfcc: 0x1dc6, 0xfcd: 0x1dcb, 0xfce: 0x1dda, 0xfcf: 0x1de9, 0xfd0: 0x1dee, 0xfd1: 0x1df3, + 0xfd2: 0x1e02, 0xfd3: 0x1e11, 0xfd4: 0x1e16, 0xfd5: 0x1e1b, 0xfd6: 0x1e20, 0xfd7: 0x1e2f, + 0xfd8: 0x1e34, 0xfd9: 0x1e43, 0xfda: 0x1e48, 0xfdb: 0x1e4d, 0xfdc: 0x1e5c, 0xfdd: 0x1e61, + 0xfde: 0x1e66, 0xfdf: 0x1e70, 0xfe0: 0x1eac, 0xfe1: 0x1ebb, 0xfe2: 0x1eca, 0xfe3: 0x1ecf, + 0xfe4: 0x1ed4, 0xfe5: 0x1ede, 0xfe6: 0x1eed, 0xfe7: 0x1ef2, 0xfe8: 0x1f01, 0xfe9: 0x1f06, + 0xfea: 0x1f0b, 0xfeb: 0x1f1a, 0xfec: 0x1f1f, 0xfed: 0x1f2e, 0xfee: 0x1f33, 0xfef: 0x1f38, + 0xff0: 0x1f3d, 0xff1: 0x1f42, 0xff2: 0x1f47, 0xff3: 0x1f4c, 0xff4: 0x1f51, 0xff5: 0x1f56, + 0xff6: 0x1f5b, 0xff7: 0x1f60, 0xff8: 0x1f65, 0xff9: 0x1f6a, 0xffa: 0x1f6f, 0xffb: 0x1f74, + 0xffc: 0x1f79, 0xffd: 0x1f7e, 0xffe: 0x1f83, 0xfff: 0x1f8d, + // Block 0x40, offset 0x1000 + 0x1000: 0x1f92, 0x1001: 0x1f97, 0x1002: 0x1f9c, 0x1003: 0x1fa6, 0x1004: 0x1fab, 0x1005: 0x1fb5, + 0x1006: 0x1fba, 0x1007: 0x1fbf, 0x1008: 0x1fc4, 0x1009: 0x1fc9, 0x100a: 0x1fce, 0x100b: 0x1fd3, + 0x100c: 0x1fd8, 0x100d: 0x1fdd, 0x100e: 0x1fec, 0x100f: 0x1ffb, 0x1010: 0x2000, 0x1011: 0x2005, + 0x1012: 0x200a, 0x1013: 0x200f, 0x1014: 0x2014, 0x1015: 0x201e, 0x1016: 0x2023, 0x1017: 0x2028, + 0x1018: 0x2037, 0x1019: 0x2046, 0x101a: 0x204b, 0x101b: 0x4437, 0x101c: 0x443d, 0x101d: 0x4473, + 0x101e: 0x44ca, 0x101f: 0x44d1, 0x1020: 0x44d8, 0x1021: 0x44df, 0x1022: 0x44e6, 0x1023: 0x44ed, + 0x1024: 0x25cc, 0x1025: 0x25d3, 0x1026: 0x25da, 0x1027: 0x25e1, 0x1028: 0x25f6, 0x1029: 0x25fd, + 0x102a: 0x1d9e, 0x102b: 0x1da3, 0x102c: 0x1da8, 0x102d: 0x1dad, 0x102e: 0x1db7, 0x102f: 0x1dbc, + 0x1030: 0x1dd0, 0x1031: 0x1dd5, 0x1032: 0x1dda, 0x1033: 0x1ddf, 0x1034: 0x1de9, 0x1035: 0x1dee, + 0x1036: 0x1df8, 0x1037: 0x1dfd, 0x1038: 0x1e02, 0x1039: 0x1e07, 0x103a: 0x1e11, 0x103b: 0x1e16, + 0x103c: 0x1f42, 0x103d: 0x1f47, 0x103e: 0x1f56, 0x103f: 0x1f5b, + // Block 0x41, offset 0x1040 + 0x1040: 0x1f60, 0x1041: 0x1f74, 0x1042: 0x1f79, 0x1043: 0x1f7e, 0x1044: 0x1f83, 0x1045: 0x1f9c, + 0x1046: 0x1fa6, 0x1047: 0x1fab, 0x1048: 0x1fb0, 0x1049: 0x1fc4, 0x104a: 0x1fe2, 0x104b: 0x1fe7, + 0x104c: 0x1fec, 0x104d: 0x1ff1, 0x104e: 0x1ffb, 0x104f: 0x2000, 0x1050: 0x4473, 0x1051: 0x202d, + 0x1052: 0x2032, 0x1053: 0x2037, 0x1054: 0x203c, 0x1055: 0x2046, 0x1056: 0x204b, 0x1057: 0x25b7, + 0x1058: 0x25be, 0x1059: 0x25c5, 0x105a: 0x25da, 0x105b: 0x25e8, 0x105c: 0x1d8f, 0x105d: 0x1d94, + 0x105e: 0x1d99, 0x105f: 0x1da8, 0x1060: 0x1db2, 0x1061: 0x1dc1, 0x1062: 0x1dc6, 0x1063: 0x1dcb, + 0x1064: 0x1dda, 0x1065: 0x1de4, 0x1066: 0x1e02, 0x1067: 0x1e1b, 0x1068: 0x1e20, 0x1069: 0x1e2f, + 0x106a: 0x1e34, 0x106b: 0x1e43, 0x106c: 0x1e4d, 0x106d: 0x1e5c, 0x106e: 0x1e61, 0x106f: 0x1e66, + 0x1070: 0x1e70, 0x1071: 0x1eac, 0x1072: 0x1eb1, 0x1073: 0x1ebb, 0x1074: 0x1eca, 0x1075: 0x1ecf, + 0x1076: 0x1ed4, 0x1077: 0x1ede, 0x1078: 0x1eed, 0x1079: 0x1f01, 0x107a: 0x1f06, 0x107b: 0x1f0b, + 0x107c: 0x1f1a, 0x107d: 0x1f1f, 0x107e: 0x1f2e, 0x107f: 0x1f33, + // Block 0x42, offset 0x1080 + 0x1080: 0x1f38, 0x1081: 0x1f3d, 0x1082: 0x1f4c, 0x1083: 0x1f51, 0x1084: 0x1f65, 0x1085: 0x1f6a, + 0x1086: 0x1f6f, 0x1087: 0x1f74, 0x1088: 0x1f79, 0x1089: 0x1f8d, 0x108a: 0x1f92, 0x108b: 0x1f97, + 0x108c: 0x1f9c, 0x108d: 0x1fa1, 0x108e: 0x1fb5, 0x108f: 0x1fba, 0x1090: 0x1fbf, 0x1091: 0x1fc4, + 0x1092: 0x1fd3, 0x1093: 0x1fd8, 0x1094: 0x1fdd, 0x1095: 0x1fec, 0x1096: 0x1ff6, 0x1097: 0x2005, + 0x1098: 0x200a, 0x1099: 0x4467, 0x109a: 0x201e, 0x109b: 0x2023, 0x109c: 0x2028, 0x109d: 0x2037, + 0x109e: 0x2041, 0x109f: 0x25da, 0x10a0: 0x25e8, 0x10a1: 0x1da8, 0x10a2: 0x1db2, 0x10a3: 0x1dda, + 0x10a4: 0x1de4, 0x10a5: 0x1e02, 0x10a6: 0x1e0c, 0x10a7: 0x1e70, 0x10a8: 0x1e75, 0x10a9: 0x1e98, + 0x10aa: 0x1e9d, 0x10ab: 0x1f74, 0x10ac: 0x1f79, 0x10ad: 0x1f9c, 0x10ae: 0x1fec, 0x10af: 0x1ff6, + 0x10b0: 0x2037, 0x10b1: 0x2041, 0x10b2: 0x451b, 0x10b3: 0x4523, 0x10b4: 0x452b, 0x10b5: 0x1ef7, + 0x10b6: 0x1efc, 0x10b7: 0x1f10, 0x10b8: 0x1f15, 0x10b9: 0x1f24, 0x10ba: 0x1f29, 0x10bb: 0x1e7a, + 0x10bc: 0x1e7f, 0x10bd: 0x1ea2, 0x10be: 0x1ea7, 0x10bf: 0x1e39, + // Block 0x43, offset 0x10c0 + 0x10c0: 0x1e3e, 0x10c1: 0x1e25, 0x10c2: 0x1e2a, 0x10c3: 0x1e52, 0x10c4: 0x1e57, 0x10c5: 0x1ec0, + 0x10c6: 0x1ec5, 0x10c7: 0x1ee3, 0x10c8: 0x1ee8, 0x10c9: 0x1e84, 0x10ca: 0x1e89, 0x10cb: 0x1e8e, + 0x10cc: 0x1e98, 0x10cd: 0x1e93, 0x10ce: 0x1e6b, 0x10cf: 0x1eb6, 0x10d0: 0x1ed9, 0x10d1: 0x1ef7, + 0x10d2: 0x1efc, 0x10d3: 0x1f10, 0x10d4: 0x1f15, 0x10d5: 0x1f24, 0x10d6: 0x1f29, 0x10d7: 0x1e7a, + 0x10d8: 0x1e7f, 0x10d9: 0x1ea2, 0x10da: 0x1ea7, 0x10db: 0x1e39, 0x10dc: 0x1e3e, 0x10dd: 0x1e25, + 0x10de: 0x1e2a, 0x10df: 0x1e52, 0x10e0: 0x1e57, 0x10e1: 0x1ec0, 0x10e2: 0x1ec5, 0x10e3: 0x1ee3, + 0x10e4: 0x1ee8, 0x10e5: 0x1e84, 0x10e6: 0x1e89, 0x10e7: 0x1e8e, 0x10e8: 0x1e98, 0x10e9: 0x1e93, + 0x10ea: 0x1e6b, 0x10eb: 0x1eb6, 0x10ec: 0x1ed9, 0x10ed: 0x1e84, 0x10ee: 0x1e89, 0x10ef: 0x1e8e, + 0x10f0: 0x1e98, 0x10f1: 0x1e75, 0x10f2: 0x1e9d, 0x10f3: 0x1ef2, 0x10f4: 0x1e5c, 0x10f5: 0x1e61, + 0x10f6: 0x1e66, 0x10f7: 0x1e84, 0x10f8: 0x1e89, 0x10f9: 0x1e8e, 0x10fa: 0x1ef2, 0x10fb: 0x1f01, + 0x10fc: 0x441f, 0x10fd: 0x441f, + // Block 0x44, offset 0x1100 + 0x1110: 0x2317, 0x1111: 0x232c, + 0x1112: 0x232c, 0x1113: 0x2333, 0x1114: 0x233a, 0x1115: 0x234f, 0x1116: 0x2356, 0x1117: 0x235d, + 0x1118: 0x2380, 0x1119: 0x2380, 0x111a: 0x23a3, 0x111b: 0x239c, 0x111c: 0x23b8, 0x111d: 0x23aa, + 0x111e: 0x23b1, 0x111f: 0x23d4, 0x1120: 0x23d4, 0x1121: 0x23cd, 0x1122: 0x23db, 0x1123: 0x23db, + 0x1124: 0x2405, 0x1125: 0x2405, 0x1126: 0x2421, 0x1127: 0x23e9, 0x1128: 0x23e9, 0x1129: 0x23e2, + 0x112a: 0x23f7, 0x112b: 0x23f7, 0x112c: 0x23fe, 0x112d: 0x23fe, 0x112e: 0x2428, 0x112f: 0x2436, + 0x1130: 0x2436, 0x1131: 0x243d, 0x1132: 0x243d, 0x1133: 0x2444, 0x1134: 0x244b, 0x1135: 0x2452, + 0x1136: 0x2459, 0x1137: 0x2459, 0x1138: 0x2460, 0x1139: 0x246e, 0x113a: 0x247c, 0x113b: 0x2475, + 0x113c: 0x2483, 0x113d: 0x2483, 0x113e: 0x2498, 0x113f: 0x249f, + // Block 0x45, offset 0x1140 + 0x1140: 0x24d0, 0x1141: 0x24de, 0x1142: 0x24d7, 0x1143: 0x24bb, 0x1144: 0x24bb, 0x1145: 0x24e5, + 0x1146: 0x24e5, 0x1147: 0x24ec, 0x1148: 0x24ec, 0x1149: 0x2516, 0x114a: 0x251d, 0x114b: 0x2524, + 0x114c: 0x24fa, 0x114d: 0x2508, 0x114e: 0x252b, 0x114f: 0x2532, + 0x1152: 0x2501, 0x1153: 0x2586, 0x1154: 0x258d, 0x1155: 0x2563, 0x1156: 0x256a, 0x1157: 0x254e, + 0x1158: 0x254e, 0x1159: 0x2555, 0x115a: 0x257f, 0x115b: 0x2578, 0x115c: 0x25a2, 0x115d: 0x25a2, + 0x115e: 0x2310, 0x115f: 0x2325, 0x1160: 0x231e, 0x1161: 0x2348, 0x1162: 0x2341, 0x1163: 0x236b, + 0x1164: 0x2364, 0x1165: 0x238e, 0x1166: 0x2372, 0x1167: 0x2387, 0x1168: 0x23bf, 0x1169: 0x240c, + 0x116a: 0x23f0, 0x116b: 0x242f, 0x116c: 0x24c9, 0x116d: 0x24f3, 0x116e: 0x259b, 0x116f: 0x2594, + 0x1170: 0x25a9, 0x1171: 0x2540, 0x1172: 0x24a6, 0x1173: 0x2571, 0x1174: 0x2498, 0x1175: 0x24d0, + 0x1176: 0x2467, 0x1177: 0x24b4, 0x1178: 0x2547, 0x1179: 0x2539, 0x117a: 0x24c2, 0x117b: 0x24ad, + 0x117c: 0x24c2, 0x117d: 0x2547, 0x117e: 0x2379, 0x117f: 0x2395, + // Block 0x46, offset 0x1180 + 0x1180: 0x250f, 0x1181: 0x248a, 0x1182: 0x2309, 0x1183: 0x24ad, 0x1184: 0x2452, 0x1185: 0x2421, + 0x1186: 0x23c6, 0x1187: 0x255c, + 0x11b0: 0x241a, 0x11b1: 0x2491, 0x11b2: 0x27cc, 0x11b3: 0x27c3, 0x11b4: 0x27f9, 0x11b5: 0x27e7, + 0x11b6: 0x27d5, 0x11b7: 0x27f0, 0x11b8: 0x2802, 0x11b9: 0x2413, 0x11ba: 0x2c89, 0x11bb: 0x2b09, + 0x11bc: 0x27de, + // Block 0x47, offset 0x11c0 + 0x11d0: 0x0019, 0x11d1: 0x0486, + 0x11d2: 0x048a, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04c2, + 0x11d8: 0x04c6, 0x11d9: 0x1b62, + 0x11e0: 0x8133, 0x11e1: 0x8133, 0x11e2: 0x8133, 0x11e3: 0x8133, + 0x11e4: 0x8133, 0x11e5: 0x8133, 0x11e6: 0x8133, 0x11e7: 0x812e, 0x11e8: 0x812e, 0x11e9: 0x812e, + 0x11ea: 0x812e, 0x11eb: 0x812e, 0x11ec: 0x812e, 0x11ed: 0x812e, 0x11ee: 0x8133, 0x11ef: 0x8133, + 0x11f0: 0x1876, 0x11f1: 0x0446, 0x11f2: 0x0442, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011, + 0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04ba, 0x11fa: 0x04be, 0x11fb: 0x04ae, + 0x11fc: 0x04b2, 0x11fd: 0x0496, 0x11fe: 0x049a, 0x11ff: 0x048e, + // Block 0x48, offset 0x1200 + 0x1200: 0x0492, 0x1201: 0x049e, 0x1202: 0x04a2, 0x1203: 0x04a6, 0x1204: 0x04aa, + 0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4280, 0x120a: 0x4280, 0x120b: 0x4280, + 0x120c: 0x4280, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0486, + 0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003, + 0x1218: 0x0446, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04ba, + 0x121e: 0x04be, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b, + 0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009, + 0x122a: 0x000b, 0x122b: 0x0041, + 0x1230: 0x42c1, 0x1231: 0x4443, 0x1232: 0x42c6, 0x1234: 0x42cb, + 0x1236: 0x42d0, 0x1237: 0x4449, 0x1238: 0x42d5, 0x1239: 0x444f, 0x123a: 0x42da, 0x123b: 0x4455, + 0x123c: 0x42df, 0x123d: 0x445b, 0x123e: 0x42e4, 0x123f: 0x4461, + // Block 0x49, offset 0x1240 + 0x1240: 0x0239, 0x1241: 0x4425, 0x1242: 0x4425, 0x1243: 0x442b, 0x1244: 0x442b, 0x1245: 0x446d, + 0x1246: 0x446d, 0x1247: 0x4431, 0x1248: 0x4431, 0x1249: 0x4479, 0x124a: 0x4479, 0x124b: 0x4479, + 0x124c: 0x4479, 0x124d: 0x023c, 0x124e: 0x023c, 0x124f: 0x023f, 0x1250: 0x023f, 0x1251: 0x023f, + 0x1252: 0x023f, 0x1253: 0x0242, 0x1254: 0x0242, 0x1255: 0x0245, 0x1256: 0x0245, 0x1257: 0x0245, + 0x1258: 0x0245, 0x1259: 0x0248, 0x125a: 0x0248, 0x125b: 0x0248, 0x125c: 0x0248, 0x125d: 0x024b, + 0x125e: 0x024b, 0x125f: 0x024b, 0x1260: 0x024b, 0x1261: 0x024e, 0x1262: 0x024e, 0x1263: 0x024e, + 0x1264: 0x024e, 0x1265: 0x0251, 0x1266: 0x0251, 0x1267: 0x0251, 0x1268: 0x0251, 0x1269: 0x0254, + 0x126a: 0x0254, 0x126b: 0x0257, 0x126c: 0x0257, 0x126d: 0x025a, 0x126e: 0x025a, 0x126f: 0x025d, + 0x1270: 0x025d, 0x1271: 0x0260, 0x1272: 0x0260, 0x1273: 0x0260, 0x1274: 0x0260, 0x1275: 0x0263, + 0x1276: 0x0263, 0x1277: 0x0263, 0x1278: 0x0263, 0x1279: 0x0266, 0x127a: 0x0266, 0x127b: 0x0266, + 0x127c: 0x0266, 0x127d: 0x0269, 0x127e: 0x0269, 0x127f: 0x0269, + // Block 0x4a, offset 0x1280 + 0x1280: 0x0269, 0x1281: 0x026c, 0x1282: 0x026c, 0x1283: 0x026c, 0x1284: 0x026c, 0x1285: 0x026f, + 0x1286: 0x026f, 0x1287: 0x026f, 0x1288: 0x026f, 0x1289: 0x0272, 0x128a: 0x0272, 0x128b: 0x0272, + 0x128c: 0x0272, 0x128d: 0x0275, 0x128e: 0x0275, 0x128f: 0x0275, 0x1290: 0x0275, 0x1291: 0x0278, + 0x1292: 0x0278, 0x1293: 0x0278, 0x1294: 0x0278, 0x1295: 0x027b, 0x1296: 0x027b, 0x1297: 0x027b, + 0x1298: 0x027b, 0x1299: 0x027e, 0x129a: 0x027e, 0x129b: 0x027e, 0x129c: 0x027e, 0x129d: 0x0281, + 0x129e: 0x0281, 0x129f: 0x0281, 0x12a0: 0x0281, 0x12a1: 0x0284, 0x12a2: 0x0284, 0x12a3: 0x0284, + 0x12a4: 0x0284, 0x12a5: 0x0287, 0x12a6: 0x0287, 0x12a7: 0x0287, 0x12a8: 0x0287, 0x12a9: 0x028a, + 0x12aa: 0x028a, 0x12ab: 0x028a, 0x12ac: 0x028a, 0x12ad: 0x028d, 0x12ae: 0x028d, 0x12af: 0x0290, + 0x12b0: 0x0290, 0x12b1: 0x0293, 0x12b2: 0x0293, 0x12b3: 0x0293, 0x12b4: 0x0293, 0x12b5: 0x2e17, + 0x12b6: 0x2e17, 0x12b7: 0x2e1f, 0x12b8: 0x2e1f, 0x12b9: 0x2e27, 0x12ba: 0x2e27, 0x12bb: 0x1f88, + 0x12bc: 0x1f88, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b, + 0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097, + 0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3, + 0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af, + 0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb, + 0x12de: 0x00bd, 0x12df: 0x047a, 0x12e0: 0x047e, 0x12e1: 0x048a, 0x12e2: 0x049e, 0x12e3: 0x04a2, + 0x12e4: 0x0486, 0x12e5: 0x05ae, 0x12e6: 0x05a6, 0x12e7: 0x04ca, 0x12e8: 0x04d2, 0x12e9: 0x04da, + 0x12ea: 0x04e2, 0x12eb: 0x04ea, 0x12ec: 0x056e, 0x12ed: 0x0576, 0x12ee: 0x057e, 0x12ef: 0x0522, + 0x12f0: 0x05b2, 0x12f1: 0x04ce, 0x12f2: 0x04d6, 0x12f3: 0x04de, 0x12f4: 0x04e6, 0x12f5: 0x04ee, + 0x12f6: 0x04f2, 0x12f7: 0x04f6, 0x12f8: 0x04fa, 0x12f9: 0x04fe, 0x12fa: 0x0502, 0x12fb: 0x0506, + 0x12fc: 0x050a, 0x12fd: 0x050e, 0x12fe: 0x0512, 0x12ff: 0x0516, + // Block 0x4c, offset 0x1300 + 0x1300: 0x051a, 0x1301: 0x051e, 0x1302: 0x0526, 0x1303: 0x052a, 0x1304: 0x052e, 0x1305: 0x0532, + 0x1306: 0x0536, 0x1307: 0x053a, 0x1308: 0x053e, 0x1309: 0x0542, 0x130a: 0x0546, 0x130b: 0x054a, + 0x130c: 0x054e, 0x130d: 0x0552, 0x130e: 0x0556, 0x130f: 0x055a, 0x1310: 0x055e, 0x1311: 0x0562, + 0x1312: 0x0566, 0x1313: 0x056a, 0x1314: 0x0572, 0x1315: 0x057a, 0x1316: 0x0582, 0x1317: 0x0586, + 0x1318: 0x058a, 0x1319: 0x058e, 0x131a: 0x0592, 0x131b: 0x0596, 0x131c: 0x059a, 0x131d: 0x05aa, + 0x131e: 0x4a8f, 0x131f: 0x4a95, 0x1320: 0x03c6, 0x1321: 0x0316, 0x1322: 0x031a, 0x1323: 0x4a52, + 0x1324: 0x031e, 0x1325: 0x4a58, 0x1326: 0x4a5e, 0x1327: 0x0322, 0x1328: 0x0326, 0x1329: 0x032a, + 0x132a: 0x4a64, 0x132b: 0x4a6a, 0x132c: 0x4a70, 0x132d: 0x4a76, 0x132e: 0x4a7c, 0x132f: 0x4a82, + 0x1330: 0x036a, 0x1331: 0x032e, 0x1332: 0x0332, 0x1333: 0x0336, 0x1334: 0x037e, 0x1335: 0x033a, + 0x1336: 0x033e, 0x1337: 0x0342, 0x1338: 0x0346, 0x1339: 0x034a, 0x133a: 0x034e, 0x133b: 0x0352, + 0x133c: 0x0356, 0x133d: 0x035a, 0x133e: 0x035e, + // Block 0x4d, offset 0x1340 + 0x1342: 0x49d4, 0x1343: 0x49da, 0x1344: 0x49e0, 0x1345: 0x49e6, + 0x1346: 0x49ec, 0x1347: 0x49f2, 0x134a: 0x49f8, 0x134b: 0x49fe, + 0x134c: 0x4a04, 0x134d: 0x4a0a, 0x134e: 0x4a10, 0x134f: 0x4a16, + 0x1352: 0x4a1c, 0x1353: 0x4a22, 0x1354: 0x4a28, 0x1355: 0x4a2e, 0x1356: 0x4a34, 0x1357: 0x4a3a, + 0x135a: 0x4a40, 0x135b: 0x4a46, 0x135c: 0x4a4c, + 0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x427b, + 0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x044a, 0x1368: 0x046e, 0x1369: 0x044e, + 0x136a: 0x0452, 0x136b: 0x0456, 0x136c: 0x045a, 0x136d: 0x0472, 0x136e: 0x0476, + // Block 0x4e, offset 0x1380 + 0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d, + 0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085, + 0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091, + 0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d, + 0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9, + 0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5, + 0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0176, 0x13a9: 0x0179, + 0x13aa: 0x017c, 0x13ab: 0x017f, 0x13ac: 0x0182, 0x13ad: 0x0185, 0x13ae: 0x0188, 0x13af: 0x018b, + 0x13b0: 0x018e, 0x13b1: 0x0191, 0x13b2: 0x0194, 0x13b3: 0x0197, 0x13b4: 0x019a, 0x13b5: 0x019d, + 0x13b6: 0x01a0, 0x13b7: 0x01a3, 0x13b8: 0x01a6, 0x13b9: 0x018b, 0x13ba: 0x01a9, 0x13bb: 0x01ac, + 0x13bc: 0x01af, 0x13bd: 0x01b2, 0x13be: 0x01b5, 0x13bf: 0x01b8, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x0200, 0x13c1: 0x0203, 0x13c2: 0x0206, 0x13c3: 0x045e, 0x13c4: 0x01ca, 0x13c5: 0x01d3, + 0x13c6: 0x01d9, 0x13c7: 0x01fd, 0x13c8: 0x01ee, 0x13c9: 0x01eb, 0x13ca: 0x0209, 0x13cb: 0x020c, + 0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027, + 0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033, + 0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b, + 0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023, + 0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f, + 0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027, + 0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033, + 0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b, + 0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033, + // Block 0x50, offset 0x1400 + 0x1400: 0x023c, 0x1401: 0x023f, 0x1402: 0x024b, 0x1403: 0x0254, 0x1405: 0x028d, + 0x1406: 0x025d, 0x1407: 0x024e, 0x1408: 0x026c, 0x1409: 0x0293, 0x140a: 0x027e, 0x140b: 0x0281, + 0x140c: 0x0284, 0x140d: 0x0287, 0x140e: 0x0260, 0x140f: 0x0272, 0x1410: 0x0278, 0x1411: 0x0266, + 0x1412: 0x027b, 0x1413: 0x025a, 0x1414: 0x0263, 0x1415: 0x0245, 0x1416: 0x0248, 0x1417: 0x0251, + 0x1418: 0x0257, 0x1419: 0x0269, 0x141a: 0x026f, 0x141b: 0x0275, 0x141c: 0x0296, 0x141d: 0x02e7, + 0x141e: 0x02cf, 0x141f: 0x0299, 0x1421: 0x023f, 0x1422: 0x024b, + 0x1424: 0x028a, 0x1427: 0x024e, 0x1429: 0x0293, + 0x142a: 0x027e, 0x142b: 0x0281, 0x142c: 0x0284, 0x142d: 0x0287, 0x142e: 0x0260, 0x142f: 0x0272, + 0x1430: 0x0278, 0x1431: 0x0266, 0x1432: 0x027b, 0x1434: 0x0263, 0x1435: 0x0245, + 0x1436: 0x0248, 0x1437: 0x0251, 0x1439: 0x0269, 0x143b: 0x0275, + // Block 0x51, offset 0x1440 + 0x1442: 0x024b, + 0x1447: 0x024e, 0x1449: 0x0293, 0x144b: 0x0281, + 0x144d: 0x0287, 0x144e: 0x0260, 0x144f: 0x0272, 0x1451: 0x0266, + 0x1452: 0x027b, 0x1454: 0x0263, 0x1457: 0x0251, + 0x1459: 0x0269, 0x145b: 0x0275, 0x145d: 0x02e7, + 0x145f: 0x0299, 0x1461: 0x023f, 0x1462: 0x024b, + 0x1464: 0x028a, 0x1467: 0x024e, 0x1468: 0x026c, 0x1469: 0x0293, + 0x146a: 0x027e, 0x146c: 0x0284, 0x146d: 0x0287, 0x146e: 0x0260, 0x146f: 0x0272, + 0x1470: 0x0278, 0x1471: 0x0266, 0x1472: 0x027b, 0x1474: 0x0263, 0x1475: 0x0245, + 0x1476: 0x0248, 0x1477: 0x0251, 0x1479: 0x0269, 0x147a: 0x026f, 0x147b: 0x0275, + 0x147c: 0x0296, 0x147e: 0x02cf, + // Block 0x52, offset 0x1480 + 0x1480: 0x023c, 0x1481: 0x023f, 0x1482: 0x024b, 0x1483: 0x0254, 0x1484: 0x028a, 0x1485: 0x028d, + 0x1486: 0x025d, 0x1487: 0x024e, 0x1488: 0x026c, 0x1489: 0x0293, 0x148b: 0x0281, + 0x148c: 0x0284, 0x148d: 0x0287, 0x148e: 0x0260, 0x148f: 0x0272, 0x1490: 0x0278, 0x1491: 0x0266, + 0x1492: 0x027b, 0x1493: 0x025a, 0x1494: 0x0263, 0x1495: 0x0245, 0x1496: 0x0248, 0x1497: 0x0251, + 0x1498: 0x0257, 0x1499: 0x0269, 0x149a: 0x026f, 0x149b: 0x0275, + 0x14a1: 0x023f, 0x14a2: 0x024b, 0x14a3: 0x0254, + 0x14a5: 0x028d, 0x14a6: 0x025d, 0x14a7: 0x024e, 0x14a8: 0x026c, 0x14a9: 0x0293, + 0x14ab: 0x0281, 0x14ac: 0x0284, 0x14ad: 0x0287, 0x14ae: 0x0260, 0x14af: 0x0272, + 0x14b0: 0x0278, 0x14b1: 0x0266, 0x14b2: 0x027b, 0x14b3: 0x025a, 0x14b4: 0x0263, 0x14b5: 0x0245, + 0x14b6: 0x0248, 0x14b7: 0x0251, 0x14b8: 0x0257, 0x14b9: 0x0269, 0x14ba: 0x026f, 0x14bb: 0x0275, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x187c, 0x14c1: 0x1879, 0x14c2: 0x187f, 0x14c3: 0x18a3, 0x14c4: 0x18c7, 0x14c5: 0x18eb, + 0x14c6: 0x190f, 0x14c7: 0x1918, 0x14c8: 0x191e, 0x14c9: 0x1924, 0x14ca: 0x192a, + 0x14d0: 0x1a92, 0x14d1: 0x1a96, + 0x14d2: 0x1a9a, 0x14d3: 0x1a9e, 0x14d4: 0x1aa2, 0x14d5: 0x1aa6, 0x14d6: 0x1aaa, 0x14d7: 0x1aae, + 0x14d8: 0x1ab2, 0x14d9: 0x1ab6, 0x14da: 0x1aba, 0x14db: 0x1abe, 0x14dc: 0x1ac2, 0x14dd: 0x1ac6, + 0x14de: 0x1aca, 0x14df: 0x1ace, 0x14e0: 0x1ad2, 0x14e1: 0x1ad6, 0x14e2: 0x1ada, 0x14e3: 0x1ade, + 0x14e4: 0x1ae2, 0x14e5: 0x1ae6, 0x14e6: 0x1aea, 0x14e7: 0x1aee, 0x14e8: 0x1af2, 0x14e9: 0x1af6, + 0x14ea: 0x272b, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193f, 0x14ee: 0x19b7, + 0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d, + 0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059, + 0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061, + // Block 0x54, offset 0x1500 + 0x1500: 0x26b3, 0x1501: 0x26c8, 0x1502: 0x0506, + 0x1510: 0x0c12, 0x1511: 0x0a4a, + 0x1512: 0x08d6, 0x1513: 0x45db, 0x1514: 0x071e, 0x1515: 0x09f2, 0x1516: 0x1332, 0x1517: 0x0a02, + 0x1518: 0x072a, 0x1519: 0x0cda, 0x151a: 0x0eb2, 0x151b: 0x0cb2, 0x151c: 0x082a, 0x151d: 0x0b6e, + 0x151e: 0x07c2, 0x151f: 0x0cba, 0x1520: 0x0816, 0x1521: 0x111a, 0x1522: 0x0f86, 0x1523: 0x138e, + 0x1524: 0x09d6, 0x1525: 0x090e, 0x1526: 0x0e66, 0x1527: 0x0c1e, 0x1528: 0x0c4a, 0x1529: 0x06c2, + 0x152a: 0x06ce, 0x152b: 0x140e, 0x152c: 0x0ade, 0x152d: 0x06ea, 0x152e: 0x08f2, 0x152f: 0x0c3e, + 0x1530: 0x13b6, 0x1531: 0x0c16, 0x1532: 0x1072, 0x1533: 0x10ae, 0x1534: 0x08fa, 0x1535: 0x0e46, + 0x1536: 0x0d0e, 0x1537: 0x0d0a, 0x1538: 0x0f9a, 0x1539: 0x082e, 0x153a: 0x095a, 0x153b: 0x1446, + // Block 0x55, offset 0x1540 + 0x1540: 0x06fe, 0x1541: 0x06f6, 0x1542: 0x0706, 0x1543: 0x164a, 0x1544: 0x074a, 0x1545: 0x075a, + 0x1546: 0x075e, 0x1547: 0x0766, 0x1548: 0x076e, 0x1549: 0x0772, 0x154a: 0x077e, 0x154b: 0x0776, + 0x154c: 0x05b6, 0x154d: 0x165e, 0x154e: 0x0792, 0x154f: 0x0796, 0x1550: 0x079a, 0x1551: 0x07b6, + 0x1552: 0x164f, 0x1553: 0x05ba, 0x1554: 0x07a2, 0x1555: 0x07c2, 0x1556: 0x1659, 0x1557: 0x07d2, + 0x1558: 0x07da, 0x1559: 0x073a, 0x155a: 0x07e2, 0x155b: 0x07e6, 0x155c: 0x1834, 0x155d: 0x0802, + 0x155e: 0x080a, 0x155f: 0x05c2, 0x1560: 0x0822, 0x1561: 0x0826, 0x1562: 0x082e, 0x1563: 0x0832, + 0x1564: 0x05c6, 0x1565: 0x084a, 0x1566: 0x084e, 0x1567: 0x085a, 0x1568: 0x0866, 0x1569: 0x086a, + 0x156a: 0x086e, 0x156b: 0x0876, 0x156c: 0x0896, 0x156d: 0x089a, 0x156e: 0x08a2, 0x156f: 0x08b2, + 0x1570: 0x08ba, 0x1571: 0x08be, 0x1572: 0x08be, 0x1573: 0x08be, 0x1574: 0x166d, 0x1575: 0x0e96, + 0x1576: 0x08d2, 0x1577: 0x08da, 0x1578: 0x1672, 0x1579: 0x08e6, 0x157a: 0x08ee, 0x157b: 0x08f6, + 0x157c: 0x091e, 0x157d: 0x090a, 0x157e: 0x0916, 0x157f: 0x091a, + // Block 0x56, offset 0x1580 + 0x1580: 0x0922, 0x1581: 0x092a, 0x1582: 0x092e, 0x1583: 0x0936, 0x1584: 0x093e, 0x1585: 0x0942, + 0x1586: 0x0942, 0x1587: 0x094a, 0x1588: 0x0952, 0x1589: 0x0956, 0x158a: 0x0962, 0x158b: 0x0986, + 0x158c: 0x096a, 0x158d: 0x098a, 0x158e: 0x096e, 0x158f: 0x0976, 0x1590: 0x080e, 0x1591: 0x09d2, + 0x1592: 0x099a, 0x1593: 0x099e, 0x1594: 0x09a2, 0x1595: 0x0996, 0x1596: 0x09aa, 0x1597: 0x09a6, + 0x1598: 0x09be, 0x1599: 0x1677, 0x159a: 0x09da, 0x159b: 0x09de, 0x159c: 0x09e6, 0x159d: 0x09f2, + 0x159e: 0x09fa, 0x159f: 0x0a16, 0x15a0: 0x167c, 0x15a1: 0x1681, 0x15a2: 0x0a22, 0x15a3: 0x0a26, + 0x15a4: 0x0a2a, 0x15a5: 0x0a1e, 0x15a6: 0x0a32, 0x15a7: 0x05ca, 0x15a8: 0x05ce, 0x15a9: 0x0a3a, + 0x15aa: 0x0a42, 0x15ab: 0x0a42, 0x15ac: 0x1686, 0x15ad: 0x0a5e, 0x15ae: 0x0a62, 0x15af: 0x0a66, + 0x15b0: 0x0a6e, 0x15b1: 0x168b, 0x15b2: 0x0a76, 0x15b3: 0x0a7a, 0x15b4: 0x0b52, 0x15b5: 0x0a82, + 0x15b6: 0x05d2, 0x15b7: 0x0a8e, 0x15b8: 0x0a9e, 0x15b9: 0x0aaa, 0x15ba: 0x0aa6, 0x15bb: 0x1695, + 0x15bc: 0x0ab2, 0x15bd: 0x169a, 0x15be: 0x0abe, 0x15bf: 0x0aba, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x0ac2, 0x15c1: 0x0ad2, 0x15c2: 0x0ad6, 0x15c3: 0x05d6, 0x15c4: 0x0ae6, 0x15c5: 0x0aee, + 0x15c6: 0x0af2, 0x15c7: 0x0af6, 0x15c8: 0x05da, 0x15c9: 0x169f, 0x15ca: 0x05de, 0x15cb: 0x0b12, + 0x15cc: 0x0b16, 0x15cd: 0x0b1a, 0x15ce: 0x0b22, 0x15cf: 0x1866, 0x15d0: 0x0b3a, 0x15d1: 0x16a9, + 0x15d2: 0x16a9, 0x15d3: 0x11da, 0x15d4: 0x0b4a, 0x15d5: 0x0b4a, 0x15d6: 0x05e2, 0x15d7: 0x16cc, + 0x15d8: 0x179e, 0x15d9: 0x0b5a, 0x15da: 0x0b62, 0x15db: 0x05e6, 0x15dc: 0x0b76, 0x15dd: 0x0b86, + 0x15de: 0x0b8a, 0x15df: 0x0b92, 0x15e0: 0x0ba2, 0x15e1: 0x05ee, 0x15e2: 0x05ea, 0x15e3: 0x0ba6, + 0x15e4: 0x16ae, 0x15e5: 0x0baa, 0x15e6: 0x0bbe, 0x15e7: 0x0bc2, 0x15e8: 0x0bc6, 0x15e9: 0x0bc2, + 0x15ea: 0x0bd2, 0x15eb: 0x0bd6, 0x15ec: 0x0be6, 0x15ed: 0x0bde, 0x15ee: 0x0be2, 0x15ef: 0x0bea, + 0x15f0: 0x0bee, 0x15f1: 0x0bf2, 0x15f2: 0x0bfe, 0x15f3: 0x0c02, 0x15f4: 0x0c1a, 0x15f5: 0x0c22, + 0x15f6: 0x0c32, 0x15f7: 0x0c46, 0x15f8: 0x16bd, 0x15f9: 0x0c42, 0x15fa: 0x0c36, 0x15fb: 0x0c4e, + 0x15fc: 0x0c56, 0x15fd: 0x0c6a, 0x15fe: 0x16c2, 0x15ff: 0x0c72, + // Block 0x58, offset 0x1600 + 0x1600: 0x0c66, 0x1601: 0x0c5e, 0x1602: 0x05f2, 0x1603: 0x0c7a, 0x1604: 0x0c82, 0x1605: 0x0c8a, + 0x1606: 0x0c7e, 0x1607: 0x05f6, 0x1608: 0x0c9a, 0x1609: 0x0ca2, 0x160a: 0x16c7, 0x160b: 0x0cce, + 0x160c: 0x0d02, 0x160d: 0x0cde, 0x160e: 0x0602, 0x160f: 0x0cea, 0x1610: 0x05fe, 0x1611: 0x05fa, + 0x1612: 0x07c6, 0x1613: 0x07ca, 0x1614: 0x0d06, 0x1615: 0x0cee, 0x1616: 0x11ae, 0x1617: 0x0666, + 0x1618: 0x0d12, 0x1619: 0x0d16, 0x161a: 0x0d1a, 0x161b: 0x0d2e, 0x161c: 0x0d26, 0x161d: 0x16e0, + 0x161e: 0x0606, 0x161f: 0x0d42, 0x1620: 0x0d36, 0x1621: 0x0d52, 0x1622: 0x0d5a, 0x1623: 0x16ea, + 0x1624: 0x0d5e, 0x1625: 0x0d4a, 0x1626: 0x0d66, 0x1627: 0x060a, 0x1628: 0x0d6a, 0x1629: 0x0d6e, + 0x162a: 0x0d72, 0x162b: 0x0d7e, 0x162c: 0x16ef, 0x162d: 0x0d86, 0x162e: 0x060e, 0x162f: 0x0d92, + 0x1630: 0x16f4, 0x1631: 0x0d96, 0x1632: 0x0612, 0x1633: 0x0da2, 0x1634: 0x0dae, 0x1635: 0x0dba, + 0x1636: 0x0dbe, 0x1637: 0x16f9, 0x1638: 0x1690, 0x1639: 0x16fe, 0x163a: 0x0dde, 0x163b: 0x1703, + 0x163c: 0x0dea, 0x163d: 0x0df2, 0x163e: 0x0de2, 0x163f: 0x0dfe, + // Block 0x59, offset 0x1640 + 0x1640: 0x0e0e, 0x1641: 0x0e1e, 0x1642: 0x0e12, 0x1643: 0x0e16, 0x1644: 0x0e22, 0x1645: 0x0e26, + 0x1646: 0x1708, 0x1647: 0x0e0a, 0x1648: 0x0e3e, 0x1649: 0x0e42, 0x164a: 0x0616, 0x164b: 0x0e56, + 0x164c: 0x0e52, 0x164d: 0x170d, 0x164e: 0x0e36, 0x164f: 0x0e72, 0x1650: 0x1712, 0x1651: 0x1717, + 0x1652: 0x0e76, 0x1653: 0x0e8a, 0x1654: 0x0e86, 0x1655: 0x0e82, 0x1656: 0x061a, 0x1657: 0x0e8e, + 0x1658: 0x0e9e, 0x1659: 0x0e9a, 0x165a: 0x0ea6, 0x165b: 0x1654, 0x165c: 0x0eb6, 0x165d: 0x171c, + 0x165e: 0x0ec2, 0x165f: 0x1726, 0x1660: 0x0ed6, 0x1661: 0x0ee2, 0x1662: 0x0ef6, 0x1663: 0x172b, + 0x1664: 0x0f0a, 0x1665: 0x0f0e, 0x1666: 0x1730, 0x1667: 0x1735, 0x1668: 0x0f2a, 0x1669: 0x0f3a, + 0x166a: 0x061e, 0x166b: 0x0f3e, 0x166c: 0x0622, 0x166d: 0x0622, 0x166e: 0x0f56, 0x166f: 0x0f5a, + 0x1670: 0x0f62, 0x1671: 0x0f66, 0x1672: 0x0f72, 0x1673: 0x0626, 0x1674: 0x0f8a, 0x1675: 0x173a, + 0x1676: 0x0fa6, 0x1677: 0x173f, 0x1678: 0x0fb2, 0x1679: 0x16a4, 0x167a: 0x0fc2, 0x167b: 0x1744, + 0x167c: 0x1749, 0x167d: 0x174e, 0x167e: 0x062a, 0x167f: 0x062e, + // Block 0x5a, offset 0x1680 + 0x1680: 0x0ffa, 0x1681: 0x1758, 0x1682: 0x1753, 0x1683: 0x175d, 0x1684: 0x1762, 0x1685: 0x1002, + 0x1686: 0x1006, 0x1687: 0x1006, 0x1688: 0x100e, 0x1689: 0x0636, 0x168a: 0x1012, 0x168b: 0x063a, + 0x168c: 0x063e, 0x168d: 0x176c, 0x168e: 0x1026, 0x168f: 0x102e, 0x1690: 0x103a, 0x1691: 0x0642, + 0x1692: 0x1771, 0x1693: 0x105e, 0x1694: 0x1776, 0x1695: 0x177b, 0x1696: 0x107e, 0x1697: 0x1096, + 0x1698: 0x0646, 0x1699: 0x109e, 0x169a: 0x10a2, 0x169b: 0x10a6, 0x169c: 0x1780, 0x169d: 0x1785, + 0x169e: 0x1785, 0x169f: 0x10be, 0x16a0: 0x064a, 0x16a1: 0x178a, 0x16a2: 0x10d2, 0x16a3: 0x10d6, + 0x16a4: 0x064e, 0x16a5: 0x178f, 0x16a6: 0x10f2, 0x16a7: 0x0652, 0x16a8: 0x1102, 0x16a9: 0x10fa, + 0x16aa: 0x110a, 0x16ab: 0x1799, 0x16ac: 0x1122, 0x16ad: 0x0656, 0x16ae: 0x112e, 0x16af: 0x1136, + 0x16b0: 0x1146, 0x16b1: 0x065a, 0x16b2: 0x17a3, 0x16b3: 0x17a8, 0x16b4: 0x065e, 0x16b5: 0x17ad, + 0x16b6: 0x115e, 0x16b7: 0x17b2, 0x16b8: 0x116a, 0x16b9: 0x1176, 0x16ba: 0x117e, 0x16bb: 0x17b7, + 0x16bc: 0x17bc, 0x16bd: 0x1192, 0x16be: 0x17c1, 0x16bf: 0x119a, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x16d1, 0x16c1: 0x0662, 0x16c2: 0x11b2, 0x16c3: 0x11b6, 0x16c4: 0x066a, 0x16c5: 0x11ba, + 0x16c6: 0x0a36, 0x16c7: 0x17c6, 0x16c8: 0x17cb, 0x16c9: 0x16d6, 0x16ca: 0x16db, 0x16cb: 0x11da, + 0x16cc: 0x11de, 0x16cd: 0x13f6, 0x16ce: 0x066e, 0x16cf: 0x120a, 0x16d0: 0x1206, 0x16d1: 0x120e, + 0x16d2: 0x0842, 0x16d3: 0x1212, 0x16d4: 0x1216, 0x16d5: 0x121a, 0x16d6: 0x1222, 0x16d7: 0x17d0, + 0x16d8: 0x121e, 0x16d9: 0x1226, 0x16da: 0x123a, 0x16db: 0x123e, 0x16dc: 0x122a, 0x16dd: 0x1242, + 0x16de: 0x1256, 0x16df: 0x126a, 0x16e0: 0x1236, 0x16e1: 0x124a, 0x16e2: 0x124e, 0x16e3: 0x1252, + 0x16e4: 0x17d5, 0x16e5: 0x17df, 0x16e6: 0x17da, 0x16e7: 0x0672, 0x16e8: 0x1272, 0x16e9: 0x1276, + 0x16ea: 0x127e, 0x16eb: 0x17f3, 0x16ec: 0x1282, 0x16ed: 0x17e4, 0x16ee: 0x0676, 0x16ef: 0x067a, + 0x16f0: 0x17e9, 0x16f1: 0x17ee, 0x16f2: 0x067e, 0x16f3: 0x12a2, 0x16f4: 0x12a6, 0x16f5: 0x12aa, + 0x16f6: 0x12ae, 0x16f7: 0x12ba, 0x16f8: 0x12b6, 0x16f9: 0x12c2, 0x16fa: 0x12be, 0x16fb: 0x12ce, + 0x16fc: 0x12c6, 0x16fd: 0x12ca, 0x16fe: 0x12d2, 0x16ff: 0x0682, + // Block 0x5c, offset 0x1700 + 0x1700: 0x12da, 0x1701: 0x12de, 0x1702: 0x0686, 0x1703: 0x12ee, 0x1704: 0x12f2, 0x1705: 0x17f8, + 0x1706: 0x12fe, 0x1707: 0x1302, 0x1708: 0x068a, 0x1709: 0x130e, 0x170a: 0x05be, 0x170b: 0x17fd, + 0x170c: 0x1802, 0x170d: 0x068e, 0x170e: 0x0692, 0x170f: 0x133a, 0x1710: 0x1352, 0x1711: 0x136e, + 0x1712: 0x137e, 0x1713: 0x1807, 0x1714: 0x1392, 0x1715: 0x1396, 0x1716: 0x13ae, 0x1717: 0x13ba, + 0x1718: 0x1811, 0x1719: 0x1663, 0x171a: 0x13c6, 0x171b: 0x13c2, 0x171c: 0x13ce, 0x171d: 0x1668, + 0x171e: 0x13da, 0x171f: 0x13e6, 0x1720: 0x1816, 0x1721: 0x181b, 0x1722: 0x1426, 0x1723: 0x1432, + 0x1724: 0x143a, 0x1725: 0x1820, 0x1726: 0x143e, 0x1727: 0x146a, 0x1728: 0x1476, 0x1729: 0x147a, + 0x172a: 0x1472, 0x172b: 0x1486, 0x172c: 0x148a, 0x172d: 0x1825, 0x172e: 0x1496, 0x172f: 0x0696, + 0x1730: 0x149e, 0x1731: 0x182a, 0x1732: 0x069a, 0x1733: 0x14d6, 0x1734: 0x0ac6, 0x1735: 0x14ee, + 0x1736: 0x182f, 0x1737: 0x1839, 0x1738: 0x069e, 0x1739: 0x06a2, 0x173a: 0x1516, 0x173b: 0x183e, + 0x173c: 0x06a6, 0x173d: 0x1843, 0x173e: 0x152e, 0x173f: 0x152e, + // Block 0x5d, offset 0x1740 + 0x1740: 0x1536, 0x1741: 0x1848, 0x1742: 0x154e, 0x1743: 0x06aa, 0x1744: 0x155e, 0x1745: 0x156a, + 0x1746: 0x1572, 0x1747: 0x157a, 0x1748: 0x06ae, 0x1749: 0x184d, 0x174a: 0x158e, 0x174b: 0x15aa, + 0x174c: 0x15b6, 0x174d: 0x06b2, 0x174e: 0x06b6, 0x174f: 0x15ba, 0x1750: 0x1852, 0x1751: 0x06ba, + 0x1752: 0x1857, 0x1753: 0x185c, 0x1754: 0x1861, 0x1755: 0x15de, 0x1756: 0x06be, 0x1757: 0x15f2, + 0x1758: 0x15fa, 0x1759: 0x15fe, 0x175a: 0x1606, 0x175b: 0x160e, 0x175c: 0x1616, 0x175d: 0x186b, +} + +// nfkcIndex: 22 blocks, 1408 entries, 2816 bytes +// Block 0 is the zero block. +var nfkcIndex = [1408]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09, + 0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62, + 0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, + 0xf0: 0x13, + // Block 0x4, offset 0x100 + 0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d, + 0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74, + 0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a, + 0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82, + // Block 0x5, offset 0x140 + 0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89, + 0x14d: 0x8a, + 0x15c: 0x8b, 0x15f: 0x8c, + 0x162: 0x8d, 0x164: 0x8e, + 0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16b: 0x92, 0x16c: 0x0f, 0x16d: 0x93, 0x16e: 0x94, 0x16f: 0x95, + 0x170: 0x96, 0x173: 0x97, 0x174: 0x98, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12, + 0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a, + // Block 0x6, offset 0x180 + 0x180: 0x99, 0x181: 0x9a, 0x182: 0x9b, 0x183: 0x9c, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9d, 0x187: 0x9e, + 0x188: 0x9f, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0xa0, 0x18c: 0xa1, + 0x191: 0x1f, 0x192: 0x20, 0x193: 0xa2, + 0x1a8: 0xa3, 0x1a9: 0xa4, 0x1ab: 0xa5, + 0x1b1: 0xa6, 0x1b3: 0xa7, 0x1b5: 0xa8, 0x1b7: 0xa9, + 0x1ba: 0xaa, 0x1bb: 0xab, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xac, + // Block 0x7, offset 0x1c0 + 0x1c0: 0xad, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xae, 0x1c5: 0x27, 0x1c6: 0x28, + 0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30, + // Block 0x8, offset 0x200 + 0x219: 0xaf, 0x21a: 0xb0, 0x21b: 0xb1, 0x21d: 0xb2, 0x21f: 0xb3, + 0x220: 0xb4, 0x223: 0xb5, 0x224: 0xb6, 0x225: 0xb7, 0x226: 0xb8, 0x227: 0xb9, + 0x22a: 0xba, 0x22b: 0xbb, 0x22d: 0xbc, 0x22f: 0xbd, + 0x230: 0xbe, 0x231: 0xbf, 0x232: 0xc0, 0x233: 0xc1, 0x234: 0xc2, 0x235: 0xc3, 0x236: 0xc4, 0x237: 0xbe, + 0x238: 0xbf, 0x239: 0xc0, 0x23a: 0xc1, 0x23b: 0xc2, 0x23c: 0xc3, 0x23d: 0xc4, 0x23e: 0xbe, 0x23f: 0xbf, + // Block 0x9, offset 0x240 + 0x240: 0xc0, 0x241: 0xc1, 0x242: 0xc2, 0x243: 0xc3, 0x244: 0xc4, 0x245: 0xbe, 0x246: 0xbf, 0x247: 0xc0, + 0x248: 0xc1, 0x249: 0xc2, 0x24a: 0xc3, 0x24b: 0xc4, 0x24c: 0xbe, 0x24d: 0xbf, 0x24e: 0xc0, 0x24f: 0xc1, + 0x250: 0xc2, 0x251: 0xc3, 0x252: 0xc4, 0x253: 0xbe, 0x254: 0xbf, 0x255: 0xc0, 0x256: 0xc1, 0x257: 0xc2, + 0x258: 0xc3, 0x259: 0xc4, 0x25a: 0xbe, 0x25b: 0xbf, 0x25c: 0xc0, 0x25d: 0xc1, 0x25e: 0xc2, 0x25f: 0xc3, + 0x260: 0xc4, 0x261: 0xbe, 0x262: 0xbf, 0x263: 0xc0, 0x264: 0xc1, 0x265: 0xc2, 0x266: 0xc3, 0x267: 0xc4, + 0x268: 0xbe, 0x269: 0xbf, 0x26a: 0xc0, 0x26b: 0xc1, 0x26c: 0xc2, 0x26d: 0xc3, 0x26e: 0xc4, 0x26f: 0xbe, + 0x270: 0xbf, 0x271: 0xc0, 0x272: 0xc1, 0x273: 0xc2, 0x274: 0xc3, 0x275: 0xc4, 0x276: 0xbe, 0x277: 0xbf, + 0x278: 0xc0, 0x279: 0xc1, 0x27a: 0xc2, 0x27b: 0xc3, 0x27c: 0xc4, 0x27d: 0xbe, 0x27e: 0xbf, 0x27f: 0xc0, + // Block 0xa, offset 0x280 + 0x280: 0xc1, 0x281: 0xc2, 0x282: 0xc3, 0x283: 0xc4, 0x284: 0xbe, 0x285: 0xbf, 0x286: 0xc0, 0x287: 0xc1, + 0x288: 0xc2, 0x289: 0xc3, 0x28a: 0xc4, 0x28b: 0xbe, 0x28c: 0xbf, 0x28d: 0xc0, 0x28e: 0xc1, 0x28f: 0xc2, + 0x290: 0xc3, 0x291: 0xc4, 0x292: 0xbe, 0x293: 0xbf, 0x294: 0xc0, 0x295: 0xc1, 0x296: 0xc2, 0x297: 0xc3, + 0x298: 0xc4, 0x299: 0xbe, 0x29a: 0xbf, 0x29b: 0xc0, 0x29c: 0xc1, 0x29d: 0xc2, 0x29e: 0xc3, 0x29f: 0xc4, + 0x2a0: 0xbe, 0x2a1: 0xbf, 0x2a2: 0xc0, 0x2a3: 0xc1, 0x2a4: 0xc2, 0x2a5: 0xc3, 0x2a6: 0xc4, 0x2a7: 0xbe, + 0x2a8: 0xbf, 0x2a9: 0xc0, 0x2aa: 0xc1, 0x2ab: 0xc2, 0x2ac: 0xc3, 0x2ad: 0xc4, 0x2ae: 0xbe, 0x2af: 0xbf, + 0x2b0: 0xc0, 0x2b1: 0xc1, 0x2b2: 0xc2, 0x2b3: 0xc3, 0x2b4: 0xc4, 0x2b5: 0xbe, 0x2b6: 0xbf, 0x2b7: 0xc0, + 0x2b8: 0xc1, 0x2b9: 0xc2, 0x2ba: 0xc3, 0x2bb: 0xc4, 0x2bc: 0xbe, 0x2bd: 0xbf, 0x2be: 0xc0, 0x2bf: 0xc1, + // Block 0xb, offset 0x2c0 + 0x2c0: 0xc2, 0x2c1: 0xc3, 0x2c2: 0xc4, 0x2c3: 0xbe, 0x2c4: 0xbf, 0x2c5: 0xc0, 0x2c6: 0xc1, 0x2c7: 0xc2, + 0x2c8: 0xc3, 0x2c9: 0xc4, 0x2ca: 0xbe, 0x2cb: 0xbf, 0x2cc: 0xc0, 0x2cd: 0xc1, 0x2ce: 0xc2, 0x2cf: 0xc3, + 0x2d0: 0xc4, 0x2d1: 0xbe, 0x2d2: 0xbf, 0x2d3: 0xc0, 0x2d4: 0xc1, 0x2d5: 0xc2, 0x2d6: 0xc3, 0x2d7: 0xc4, + 0x2d8: 0xbe, 0x2d9: 0xbf, 0x2da: 0xc0, 0x2db: 0xc1, 0x2dc: 0xc2, 0x2dd: 0xc3, 0x2de: 0xc5, + // Block 0xc, offset 0x300 + 0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34, + 0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c, + 0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44, + 0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc6, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b, + // Block 0xd, offset 0x340 + 0x347: 0xc7, + 0x34b: 0xc8, 0x34d: 0xc9, + 0x368: 0xca, 0x36b: 0xcb, + 0x374: 0xcc, + 0x37a: 0xcd, 0x37d: 0xce, + // Block 0xe, offset 0x380 + 0x381: 0xcf, 0x382: 0xd0, 0x384: 0xd1, 0x385: 0xb8, 0x387: 0xd2, + 0x388: 0xd3, 0x38b: 0xd4, 0x38c: 0xd5, 0x38d: 0xd6, + 0x391: 0xd7, 0x392: 0xd8, 0x393: 0xd9, 0x396: 0xda, 0x397: 0xdb, + 0x398: 0xdc, 0x39a: 0xdd, 0x39c: 0xde, + 0x3a0: 0xdf, 0x3a4: 0xe0, 0x3a5: 0xe1, 0x3a7: 0xe2, + 0x3a8: 0xe3, 0x3a9: 0xe4, 0x3aa: 0xe5, + 0x3b0: 0xdc, 0x3b5: 0xe6, 0x3b6: 0xe7, + // Block 0xf, offset 0x3c0 + 0x3eb: 0xe8, 0x3ec: 0xe9, + 0x3ff: 0xea, + // Block 0x10, offset 0x400 + 0x432: 0xeb, + // Block 0x11, offset 0x440 + 0x445: 0xec, 0x446: 0xed, 0x447: 0xee, + 0x449: 0xef, + 0x450: 0xf0, 0x451: 0xf1, 0x452: 0xf2, 0x453: 0xf3, 0x454: 0xf4, 0x455: 0xf5, 0x456: 0xf6, 0x457: 0xf7, + 0x458: 0xf8, 0x459: 0xf9, 0x45a: 0x4c, 0x45b: 0xfa, 0x45c: 0xfb, 0x45d: 0xfc, 0x45e: 0xfd, 0x45f: 0x4d, + // Block 0x12, offset 0x480 + 0x480: 0xfe, 0x484: 0xe9, + 0x48b: 0xff, + 0x4a3: 0x100, 0x4a5: 0x101, + 0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50, + // Block 0x13, offset 0x4c0 + 0x4c4: 0x51, 0x4c5: 0x102, 0x4c6: 0x103, + 0x4c8: 0x52, 0x4c9: 0x104, + 0x4ef: 0x105, + // Block 0x14, offset 0x500 + 0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a, + 0x528: 0x5b, + // Block 0x15, offset 0x540 + 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, + 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, + 0x56f: 0x12, +} + +// nfkcSparseOffset: 170 entries, 340 bytes +var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xdf, 0xe3, 0xe9, 0xfa, 0x106, 0x108, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11f, 0x122, 0x124, 0x127, 0x12a, 0x12e, 0x134, 0x136, 0x13f, 0x141, 0x144, 0x146, 0x151, 0x15c, 0x16a, 0x178, 0x188, 0x196, 0x19d, 0x1a3, 0x1b2, 0x1b6, 0x1b8, 0x1bc, 0x1be, 0x1c1, 0x1c3, 0x1c6, 0x1c8, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1dd, 0x1e7, 0x1f1, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x201, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x212, 0x215, 0x21a, 0x21c, 0x223, 0x229, 0x22f, 0x237, 0x23d, 0x243, 0x249, 0x24d, 0x24f, 0x251, 0x253, 0x255, 0x25b, 0x25e, 0x260, 0x262, 0x268, 0x26b, 0x273, 0x27a, 0x27d, 0x280, 0x282, 0x285, 0x28d, 0x291, 0x298, 0x29b, 0x2a1, 0x2a3, 0x2a5, 0x2a8, 0x2aa, 0x2ad, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2bc, 0x2bf, 0x2c1, 0x2c3, 0x2c5, 0x2c7, 0x2c9, 0x2d6, 0x2e0, 0x2e2, 0x2e4, 0x2e8, 0x2ed, 0x2f9, 0x2fe, 0x307, 0x30d, 0x312, 0x316, 0x31b, 0x31f, 0x32f, 0x33d, 0x34b, 0x359, 0x35f, 0x361, 0x363, 0x366, 0x371, 0x373, 0x37d} + +// nfkcSparseValues: 895 entries, 3580 bytes +var nfkcSparseValues = [895]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0002, lo: 0x0d}, + {value: 0x0001, lo: 0xa0, hi: 0xa0}, + {value: 0x428f, lo: 0xa8, hi: 0xa8}, + {value: 0x0083, lo: 0xaa, hi: 0xaa}, + {value: 0x427b, lo: 0xaf, hi: 0xaf}, + {value: 0x0025, lo: 0xb2, hi: 0xb3}, + {value: 0x4271, lo: 0xb4, hi: 0xb4}, + {value: 0x01df, lo: 0xb5, hi: 0xb5}, + {value: 0x42a8, lo: 0xb8, hi: 0xb8}, + {value: 0x0023, lo: 0xb9, hi: 0xb9}, + {value: 0x009f, lo: 0xba, hi: 0xba}, + {value: 0x2222, lo: 0xbc, hi: 0xbc}, + {value: 0x2216, lo: 0xbd, hi: 0xbd}, + {value: 0x22b8, lo: 0xbe, hi: 0xbe}, + // Block 0x1, offset 0xe + {value: 0x0091, lo: 0x03}, + {value: 0x46f9, lo: 0xa0, hi: 0xa1}, + {value: 0x472b, lo: 0xaf, hi: 0xb0}, + {value: 0xa000, lo: 0xb7, hi: 0xb7}, + // Block 0x2, offset 0x12 + {value: 0x0003, lo: 0x08}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x0091, lo: 0xb0, hi: 0xb0}, + {value: 0x0119, lo: 0xb1, hi: 0xb1}, + {value: 0x0095, lo: 0xb2, hi: 0xb2}, + {value: 0x00a5, lo: 0xb3, hi: 0xb3}, + {value: 0x0143, lo: 0xb4, hi: 0xb6}, + {value: 0x00af, lo: 0xb7, hi: 0xb7}, + {value: 0x00b3, lo: 0xb8, hi: 0xb8}, + // Block 0x3, offset 0x1b + {value: 0x000a, lo: 0x09}, + {value: 0x4285, lo: 0x98, hi: 0x98}, + {value: 0x428a, lo: 0x99, hi: 0x9a}, + {value: 0x42ad, lo: 0x9b, hi: 0x9b}, + {value: 0x4276, lo: 0x9c, hi: 0x9c}, + {value: 0x4299, lo: 0x9d, hi: 0x9d}, + {value: 0x0113, lo: 0xa0, hi: 0xa0}, + {value: 0x0099, lo: 0xa1, hi: 0xa1}, + {value: 0x00a7, lo: 0xa2, hi: 0xa3}, + {value: 0x016a, lo: 0xa4, hi: 0xa4}, + // Block 0x4, offset 0x25 + {value: 0x0000, lo: 0x0f}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0xa000, lo: 0x8d, hi: 0x8d}, + {value: 0x37bc, lo: 0x90, hi: 0x90}, + {value: 0x37c8, lo: 0x91, hi: 0x91}, + {value: 0x37b6, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x96, hi: 0x96}, + {value: 0x382e, lo: 0x97, hi: 0x97}, + {value: 0x37f8, lo: 0x9c, hi: 0x9c}, + {value: 0x37e0, lo: 0x9d, hi: 0x9d}, + {value: 0x380a, lo: 0x9e, hi: 0x9e}, + {value: 0xa000, lo: 0xb4, hi: 0xb5}, + {value: 0x3834, lo: 0xb6, hi: 0xb6}, + {value: 0x383a, lo: 0xb7, hi: 0xb7}, + // Block 0x5, offset 0x35 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x83, hi: 0x87}, + // Block 0x6, offset 0x37 + {value: 0x0001, lo: 0x04}, + {value: 0x8114, lo: 0x81, hi: 0x82}, + {value: 0x8133, lo: 0x84, hi: 0x84}, + {value: 0x812e, lo: 0x85, hi: 0x85}, + {value: 0x810e, lo: 0x87, hi: 0x87}, + // Block 0x7, offset 0x3c + {value: 0x0000, lo: 0x0a}, + {value: 0x8133, lo: 0x90, hi: 0x97}, + {value: 0x811a, lo: 0x98, hi: 0x98}, + {value: 0x811b, lo: 0x99, hi: 0x99}, + {value: 0x811c, lo: 0x9a, hi: 0x9a}, + {value: 0x3858, lo: 0xa2, hi: 0xa2}, + {value: 0x385e, lo: 0xa3, hi: 0xa3}, + {value: 0x386a, lo: 0xa4, hi: 0xa4}, + {value: 0x3864, lo: 0xa5, hi: 0xa5}, + {value: 0x3870, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xa7, hi: 0xa7}, + // Block 0x8, offset 0x47 + {value: 0x0000, lo: 0x0e}, + {value: 0x3882, lo: 0x80, hi: 0x80}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0x3876, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x387c, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x95, hi: 0x95}, + {value: 0x8133, lo: 0x96, hi: 0x9c}, + {value: 0x8133, lo: 0x9f, hi: 0xa2}, + {value: 0x812e, lo: 0xa3, hi: 0xa3}, + {value: 0x8133, lo: 0xa4, hi: 0xa4}, + {value: 0x8133, lo: 0xa7, hi: 0xa8}, + {value: 0x812e, lo: 0xaa, hi: 0xaa}, + {value: 0x8133, lo: 0xab, hi: 0xac}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + // Block 0x9, offset 0x56 + {value: 0x0000, lo: 0x0c}, + {value: 0x8120, lo: 0x91, hi: 0x91}, + {value: 0x8133, lo: 0xb0, hi: 0xb0}, + {value: 0x812e, lo: 0xb1, hi: 0xb1}, + {value: 0x8133, lo: 0xb2, hi: 0xb3}, + {value: 0x812e, lo: 0xb4, hi: 0xb4}, + {value: 0x8133, lo: 0xb5, hi: 0xb6}, + {value: 0x812e, lo: 0xb7, hi: 0xb9}, + {value: 0x8133, lo: 0xba, hi: 0xba}, + {value: 0x812e, lo: 0xbb, hi: 0xbc}, + {value: 0x8133, lo: 0xbd, hi: 0xbd}, + {value: 0x812e, lo: 0xbe, hi: 0xbe}, + {value: 0x8133, lo: 0xbf, hi: 0xbf}, + // Block 0xa, offset 0x63 + {value: 0x0005, lo: 0x07}, + {value: 0x8133, lo: 0x80, hi: 0x80}, + {value: 0x8133, lo: 0x81, hi: 0x81}, + {value: 0x812e, lo: 0x82, hi: 0x83}, + {value: 0x812e, lo: 0x84, hi: 0x85}, + {value: 0x812e, lo: 0x86, hi: 0x87}, + {value: 0x812e, lo: 0x88, hi: 0x89}, + {value: 0x8133, lo: 0x8a, hi: 0x8a}, + // Block 0xb, offset 0x6b + {value: 0x0000, lo: 0x04}, + {value: 0x8133, lo: 0xab, hi: 0xb1}, + {value: 0x812e, lo: 0xb2, hi: 0xb2}, + {value: 0x8133, lo: 0xb3, hi: 0xb3}, + {value: 0x812e, lo: 0xbd, hi: 0xbd}, + // Block 0xc, offset 0x70 + {value: 0x0000, lo: 0x04}, + {value: 0x8133, lo: 0x96, hi: 0x99}, + {value: 0x8133, lo: 0x9b, hi: 0xa3}, + {value: 0x8133, lo: 0xa5, hi: 0xa7}, + {value: 0x8133, lo: 0xa9, hi: 0xad}, + // Block 0xd, offset 0x75 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x99, hi: 0x9b}, + // Block 0xe, offset 0x77 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0xa8, hi: 0xa8}, + {value: 0x3eef, lo: 0xa9, hi: 0xa9}, + {value: 0xa000, lo: 0xb0, hi: 0xb0}, + {value: 0x3ef7, lo: 0xb1, hi: 0xb1}, + {value: 0xa000, lo: 0xb3, hi: 0xb3}, + {value: 0x3eff, lo: 0xb4, hi: 0xb4}, + {value: 0x9903, lo: 0xbc, hi: 0xbc}, + // Block 0xf, offset 0x7f + {value: 0x0008, lo: 0x06}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x8133, lo: 0x91, hi: 0x91}, + {value: 0x812e, lo: 0x92, hi: 0x92}, + {value: 0x8133, lo: 0x93, hi: 0x93}, + {value: 0x8133, lo: 0x94, hi: 0x94}, + {value: 0x4533, lo: 0x98, hi: 0x9f}, + // Block 0x10, offset 0x86 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x11, offset 0x89 + {value: 0x0008, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cab, lo: 0x8b, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x4573, lo: 0x9c, hi: 0x9d}, + {value: 0x4583, lo: 0x9f, hi: 0x9f}, + {value: 0x8133, lo: 0xbe, hi: 0xbe}, + // Block 0x12, offset 0x91 + {value: 0x0000, lo: 0x03}, + {value: 0x45ab, lo: 0xb3, hi: 0xb3}, + {value: 0x45b3, lo: 0xb6, hi: 0xb6}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + // Block 0x13, offset 0x95 + {value: 0x0008, lo: 0x03}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x458b, lo: 0x99, hi: 0x9b}, + {value: 0x45a3, lo: 0x9e, hi: 0x9e}, + // Block 0x14, offset 0x99 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + // Block 0x15, offset 0x9b + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + // Block 0x16, offset 0x9d + {value: 0x0000, lo: 0x08}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cc3, lo: 0x88, hi: 0x88}, + {value: 0x2cbb, lo: 0x8b, hi: 0x8b}, + {value: 0x2ccb, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x96, hi: 0x97}, + {value: 0x45bb, lo: 0x9c, hi: 0x9c}, + {value: 0x45c3, lo: 0x9d, hi: 0x9d}, + // Block 0x17, offset 0xa6 + {value: 0x0000, lo: 0x03}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x2cd3, lo: 0x94, hi: 0x94}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x18, offset 0xaa + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cdb, lo: 0x8a, hi: 0x8a}, + {value: 0x2ceb, lo: 0x8b, hi: 0x8b}, + {value: 0x2ce3, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x19, offset 0xb1 + {value: 0x1801, lo: 0x04}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x3f07, lo: 0x88, hi: 0x88}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x8121, lo: 0x95, hi: 0x96}, + // Block 0x1a, offset 0xb6 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xbc, hi: 0xbc}, + {value: 0xa000, lo: 0xbf, hi: 0xbf}, + // Block 0x1b, offset 0xb9 + {value: 0x0000, lo: 0x09}, + {value: 0x2cf3, lo: 0x80, hi: 0x80}, + {value: 0x9900, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x2cfb, lo: 0x87, hi: 0x87}, + {value: 0x2d03, lo: 0x88, hi: 0x88}, + {value: 0x2f67, lo: 0x8a, hi: 0x8a}, + {value: 0x2def, lo: 0x8b, hi: 0x8b}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x95, hi: 0x96}, + // Block 0x1c, offset 0xc3 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1d, offset 0xc6 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2d0b, lo: 0x8a, hi: 0x8a}, + {value: 0x2d1b, lo: 0x8b, hi: 0x8b}, + {value: 0x2d13, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1e, offset 0xcd + {value: 0x6bdd, lo: 0x07}, + {value: 0x9905, lo: 0x8a, hi: 0x8a}, + {value: 0x9900, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x3f0f, lo: 0x9a, hi: 0x9a}, + {value: 0x2f6f, lo: 0x9c, hi: 0x9c}, + {value: 0x2dfa, lo: 0x9d, hi: 0x9d}, + {value: 0x2d23, lo: 0x9e, hi: 0x9f}, + // Block 0x1f, offset 0xd5 + {value: 0x0000, lo: 0x03}, + {value: 0x2627, lo: 0xb3, hi: 0xb3}, + {value: 0x8123, lo: 0xb8, hi: 0xb9}, + {value: 0x8105, lo: 0xba, hi: 0xba}, + // Block 0x20, offset 0xd9 + {value: 0x0000, lo: 0x01}, + {value: 0x8124, lo: 0x88, hi: 0x8b}, + // Block 0x21, offset 0xdb + {value: 0x0000, lo: 0x03}, + {value: 0x263c, lo: 0xb3, hi: 0xb3}, + {value: 0x8125, lo: 0xb8, hi: 0xb9}, + {value: 0x8105, lo: 0xba, hi: 0xba}, + // Block 0x22, offset 0xdf + {value: 0x0000, lo: 0x03}, + {value: 0x8126, lo: 0x88, hi: 0x8b}, + {value: 0x262e, lo: 0x9c, hi: 0x9c}, + {value: 0x2635, lo: 0x9d, hi: 0x9d}, + // Block 0x23, offset 0xe3 + {value: 0x0000, lo: 0x05}, + {value: 0x030e, lo: 0x8c, hi: 0x8c}, + {value: 0x812e, lo: 0x98, hi: 0x99}, + {value: 0x812e, lo: 0xb5, hi: 0xb5}, + {value: 0x812e, lo: 0xb7, hi: 0xb7}, + {value: 0x812c, lo: 0xb9, hi: 0xb9}, + // Block 0x24, offset 0xe9 + {value: 0x0000, lo: 0x10}, + {value: 0x264a, lo: 0x83, hi: 0x83}, + {value: 0x2651, lo: 0x8d, hi: 0x8d}, + {value: 0x2658, lo: 0x92, hi: 0x92}, + {value: 0x265f, lo: 0x97, hi: 0x97}, + {value: 0x2666, lo: 0x9c, hi: 0x9c}, + {value: 0x2643, lo: 0xa9, hi: 0xa9}, + {value: 0x8127, lo: 0xb1, hi: 0xb1}, + {value: 0x8128, lo: 0xb2, hi: 0xb2}, + {value: 0x4a9b, lo: 0xb3, hi: 0xb3}, + {value: 0x8129, lo: 0xb4, hi: 0xb4}, + {value: 0x4aa4, lo: 0xb5, hi: 0xb5}, + {value: 0x45cb, lo: 0xb6, hi: 0xb6}, + {value: 0x460b, lo: 0xb7, hi: 0xb7}, + {value: 0x45d3, lo: 0xb8, hi: 0xb8}, + {value: 0x4616, lo: 0xb9, hi: 0xb9}, + {value: 0x8128, lo: 0xba, hi: 0xbd}, + // Block 0x25, offset 0xfa + {value: 0x0000, lo: 0x0b}, + {value: 0x8128, lo: 0x80, hi: 0x80}, + {value: 0x4aad, lo: 0x81, hi: 0x81}, + {value: 0x8133, lo: 0x82, hi: 0x83}, + {value: 0x8105, lo: 0x84, hi: 0x84}, + {value: 0x8133, lo: 0x86, hi: 0x87}, + {value: 0x2674, lo: 0x93, hi: 0x93}, + {value: 0x267b, lo: 0x9d, hi: 0x9d}, + {value: 0x2682, lo: 0xa2, hi: 0xa2}, + {value: 0x2689, lo: 0xa7, hi: 0xa7}, + {value: 0x2690, lo: 0xac, hi: 0xac}, + {value: 0x266d, lo: 0xb9, hi: 0xb9}, + // Block 0x26, offset 0x106 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x86, hi: 0x86}, + // Block 0x27, offset 0x108 + {value: 0x0000, lo: 0x05}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x2d2b, lo: 0xa6, hi: 0xa6}, + {value: 0x9900, lo: 0xae, hi: 0xae}, + {value: 0x8103, lo: 0xb7, hi: 0xb7}, + {value: 0x8105, lo: 0xb9, hi: 0xba}, + // Block 0x28, offset 0x10e + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x8d, hi: 0x8d}, + // Block 0x29, offset 0x110 + {value: 0x0000, lo: 0x01}, + {value: 0x0312, lo: 0xbc, hi: 0xbc}, + // Block 0x2a, offset 0x112 + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x80, hi: 0x92}, + // Block 0x2b, offset 0x114 + {value: 0x0000, lo: 0x01}, + {value: 0xb900, lo: 0xa1, hi: 0xb5}, + // Block 0x2c, offset 0x116 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xa8, hi: 0xbf}, + // Block 0x2d, offset 0x118 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0x80, hi: 0x82}, + // Block 0x2e, offset 0x11a + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x9d, hi: 0x9f}, + // Block 0x2f, offset 0x11c + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x94, hi: 0x94}, + {value: 0x8105, lo: 0xb4, hi: 0xb4}, + // Block 0x30, offset 0x11f + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x92, hi: 0x92}, + {value: 0x8133, lo: 0x9d, hi: 0x9d}, + // Block 0x31, offset 0x122 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa9, hi: 0xa9}, + // Block 0x32, offset 0x124 + {value: 0x0004, lo: 0x02}, + {value: 0x812f, lo: 0xb9, hi: 0xba}, + {value: 0x812e, lo: 0xbb, hi: 0xbb}, + // Block 0x33, offset 0x127 + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0x97, hi: 0x97}, + {value: 0x812e, lo: 0x98, hi: 0x98}, + // Block 0x34, offset 0x12a + {value: 0x0000, lo: 0x03}, + {value: 0x8105, lo: 0xa0, hi: 0xa0}, + {value: 0x8133, lo: 0xb5, hi: 0xbc}, + {value: 0x812e, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x12e + {value: 0x0000, lo: 0x05}, + {value: 0x8133, lo: 0xb0, hi: 0xb4}, + {value: 0x812e, lo: 0xb5, hi: 0xba}, + {value: 0x8133, lo: 0xbb, hi: 0xbc}, + {value: 0x812e, lo: 0xbd, hi: 0xbd}, + {value: 0x812e, lo: 0xbf, hi: 0xbf}, + // Block 0x36, offset 0x134 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x80, hi: 0x80}, + // Block 0x37, offset 0x136 + {value: 0x0000, lo: 0x08}, + {value: 0x2d73, lo: 0x80, hi: 0x80}, + {value: 0x2d7b, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x82, hi: 0x82}, + {value: 0x2d83, lo: 0x83, hi: 0x83}, + {value: 0x8105, lo: 0x84, hi: 0x84}, + {value: 0x8133, lo: 0xab, hi: 0xab}, + {value: 0x812e, lo: 0xac, hi: 0xac}, + {value: 0x8133, lo: 0xad, hi: 0xb3}, + // Block 0x38, offset 0x13f + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xaa, hi: 0xab}, + // Block 0x39, offset 0x141 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xa6, hi: 0xa6}, + {value: 0x8105, lo: 0xb2, hi: 0xb3}, + // Block 0x3a, offset 0x144 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0xb7, hi: 0xb7}, + // Block 0x3b, offset 0x146 + {value: 0x0000, lo: 0x0a}, + {value: 0x8133, lo: 0x90, hi: 0x92}, + {value: 0x8101, lo: 0x94, hi: 0x94}, + {value: 0x812e, lo: 0x95, hi: 0x99}, + {value: 0x8133, lo: 0x9a, hi: 0x9b}, + {value: 0x812e, lo: 0x9c, hi: 0x9f}, + {value: 0x8133, lo: 0xa0, hi: 0xa0}, + {value: 0x8101, lo: 0xa2, hi: 0xa8}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + {value: 0x8133, lo: 0xb4, hi: 0xb4}, + {value: 0x8133, lo: 0xb8, hi: 0xb9}, + // Block 0x3c, offset 0x151 + {value: 0x0002, lo: 0x0a}, + {value: 0x0043, lo: 0xac, hi: 0xac}, + {value: 0x00d1, lo: 0xad, hi: 0xad}, + {value: 0x0045, lo: 0xae, hi: 0xae}, + {value: 0x0049, lo: 0xb0, hi: 0xb1}, + {value: 0x00e6, lo: 0xb2, hi: 0xb2}, + {value: 0x004f, lo: 0xb3, hi: 0xba}, + {value: 0x005f, lo: 0xbc, hi: 0xbc}, + {value: 0x00ef, lo: 0xbd, hi: 0xbd}, + {value: 0x0061, lo: 0xbe, hi: 0xbe}, + {value: 0x0065, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x15c + {value: 0x0000, lo: 0x0d}, + {value: 0x0001, lo: 0x80, hi: 0x8a}, + {value: 0x043e, lo: 0x91, hi: 0x91}, + {value: 0x42b2, lo: 0x97, hi: 0x97}, + {value: 0x001d, lo: 0xa4, hi: 0xa4}, + {value: 0x1876, lo: 0xa5, hi: 0xa5}, + {value: 0x1b62, lo: 0xa6, hi: 0xa6}, + {value: 0x0001, lo: 0xaf, hi: 0xaf}, + {value: 0x2697, lo: 0xb3, hi: 0xb3}, + {value: 0x280b, lo: 0xb4, hi: 0xb4}, + {value: 0x269e, lo: 0xb6, hi: 0xb6}, + {value: 0x2815, lo: 0xb7, hi: 0xb7}, + {value: 0x1870, lo: 0xbc, hi: 0xbc}, + {value: 0x4280, lo: 0xbe, hi: 0xbe}, + // Block 0x3e, offset 0x16a + {value: 0x0002, lo: 0x0d}, + {value: 0x1936, lo: 0x87, hi: 0x87}, + {value: 0x1933, lo: 0x88, hi: 0x88}, + {value: 0x1873, lo: 0x89, hi: 0x89}, + {value: 0x299b, lo: 0x97, hi: 0x97}, + {value: 0x0001, lo: 0x9f, hi: 0x9f}, + {value: 0x0021, lo: 0xb0, hi: 0xb0}, + {value: 0x0093, lo: 0xb1, hi: 0xb1}, + {value: 0x0029, lo: 0xb4, hi: 0xb9}, + {value: 0x0017, lo: 0xba, hi: 0xba}, + {value: 0x046a, lo: 0xbb, hi: 0xbb}, + {value: 0x003b, lo: 0xbc, hi: 0xbc}, + {value: 0x0011, lo: 0xbd, hi: 0xbe}, + {value: 0x009d, lo: 0xbf, hi: 0xbf}, + // Block 0x3f, offset 0x178 + {value: 0x0002, lo: 0x0f}, + {value: 0x0021, lo: 0x80, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8a}, + {value: 0x046a, lo: 0x8b, hi: 0x8b}, + {value: 0x003b, lo: 0x8c, hi: 0x8c}, + {value: 0x0011, lo: 0x8d, hi: 0x8e}, + {value: 0x0083, lo: 0x90, hi: 0x90}, + {value: 0x008b, lo: 0x91, hi: 0x91}, + {value: 0x009f, lo: 0x92, hi: 0x92}, + {value: 0x00b1, lo: 0x93, hi: 0x93}, + {value: 0x0104, lo: 0x94, hi: 0x94}, + {value: 0x0091, lo: 0x95, hi: 0x95}, + {value: 0x0097, lo: 0x96, hi: 0x99}, + {value: 0x00a1, lo: 0x9a, hi: 0x9a}, + {value: 0x00a7, lo: 0x9b, hi: 0x9c}, + {value: 0x199f, lo: 0xa8, hi: 0xa8}, + // Block 0x40, offset 0x188 + {value: 0x0000, lo: 0x0d}, + {value: 0x8133, lo: 0x90, hi: 0x91}, + {value: 0x8101, lo: 0x92, hi: 0x93}, + {value: 0x8133, lo: 0x94, hi: 0x97}, + {value: 0x8101, lo: 0x98, hi: 0x9a}, + {value: 0x8133, lo: 0x9b, hi: 0x9c}, + {value: 0x8133, lo: 0xa1, hi: 0xa1}, + {value: 0x8101, lo: 0xa5, hi: 0xa6}, + {value: 0x8133, lo: 0xa7, hi: 0xa7}, + {value: 0x812e, lo: 0xa8, hi: 0xa8}, + {value: 0x8133, lo: 0xa9, hi: 0xa9}, + {value: 0x8101, lo: 0xaa, hi: 0xab}, + {value: 0x812e, lo: 0xac, hi: 0xaf}, + {value: 0x8133, lo: 0xb0, hi: 0xb0}, + // Block 0x41, offset 0x196 + {value: 0x0007, lo: 0x06}, + {value: 0x2186, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + {value: 0x3bd0, lo: 0x9a, hi: 0x9b}, + {value: 0x3bde, lo: 0xae, hi: 0xae}, + // Block 0x42, offset 0x19d + {value: 0x000e, lo: 0x05}, + {value: 0x3be5, lo: 0x8d, hi: 0x8e}, + {value: 0x3bec, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + // Block 0x43, offset 0x1a3 + {value: 0x017a, lo: 0x0e}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0x3bfa, lo: 0x84, hi: 0x84}, + {value: 0xa000, lo: 0x88, hi: 0x88}, + {value: 0x3c01, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0x3c08, lo: 0x8c, hi: 0x8c}, + {value: 0xa000, lo: 0xa3, hi: 0xa3}, + {value: 0x3c0f, lo: 0xa4, hi: 0xa4}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x3c16, lo: 0xa6, hi: 0xa6}, + {value: 0x26a5, lo: 0xac, hi: 0xad}, + {value: 0x26ac, lo: 0xaf, hi: 0xaf}, + {value: 0x2829, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xbc, hi: 0xbc}, + // Block 0x44, offset 0x1b2 + {value: 0x0007, lo: 0x03}, + {value: 0x3c7f, lo: 0xa0, hi: 0xa1}, + {value: 0x3ca9, lo: 0xa2, hi: 0xa3}, + {value: 0x3cd3, lo: 0xaa, hi: 0xad}, + // Block 0x45, offset 0x1b6 + {value: 0x0004, lo: 0x01}, + {value: 0x048e, lo: 0xa9, hi: 0xaa}, + // Block 0x46, offset 0x1b8 + {value: 0x0002, lo: 0x03}, + {value: 0x0057, lo: 0x80, hi: 0x8f}, + {value: 0x0083, lo: 0x90, hi: 0xa9}, + {value: 0x0021, lo: 0xaa, hi: 0xaa}, + // Block 0x47, offset 0x1bc + {value: 0x0000, lo: 0x01}, + {value: 0x29a8, lo: 0x8c, hi: 0x8c}, + // Block 0x48, offset 0x1be + {value: 0x0266, lo: 0x02}, + {value: 0x1b92, lo: 0xb4, hi: 0xb4}, + {value: 0x1930, lo: 0xb5, hi: 0xb6}, + // Block 0x49, offset 0x1c1 + {value: 0x0000, lo: 0x01}, + {value: 0x44f4, lo: 0x9c, hi: 0x9c}, + // Block 0x4a, offset 0x1c3 + {value: 0x0000, lo: 0x02}, + {value: 0x0095, lo: 0xbc, hi: 0xbc}, + {value: 0x006d, lo: 0xbd, hi: 0xbd}, + // Block 0x4b, offset 0x1c6 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xaf, hi: 0xb1}, + // Block 0x4c, offset 0x1c8 + {value: 0x0000, lo: 0x02}, + {value: 0x0482, lo: 0xaf, hi: 0xaf}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x4d, offset 0x1cb + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xa0, hi: 0xbf}, + // Block 0x4e, offset 0x1cd + {value: 0x0000, lo: 0x01}, + {value: 0x0dc6, lo: 0x9f, hi: 0x9f}, + // Block 0x4f, offset 0x1cf + {value: 0x0000, lo: 0x01}, + {value: 0x1632, lo: 0xb3, hi: 0xb3}, + // Block 0x50, offset 0x1d1 + {value: 0x0004, lo: 0x0b}, + {value: 0x159a, lo: 0x80, hi: 0x82}, + {value: 0x15b2, lo: 0x83, hi: 0x83}, + {value: 0x15ca, lo: 0x84, hi: 0x85}, + {value: 0x15da, lo: 0x86, hi: 0x89}, + {value: 0x15ee, lo: 0x8a, hi: 0x8c}, + {value: 0x1602, lo: 0x8d, hi: 0x8d}, + {value: 0x160a, lo: 0x8e, hi: 0x8e}, + {value: 0x1612, lo: 0x8f, hi: 0x90}, + {value: 0x161e, lo: 0x91, hi: 0x93}, + {value: 0x162e, lo: 0x94, hi: 0x94}, + {value: 0x1636, lo: 0x95, hi: 0x95}, + // Block 0x51, offset 0x1dd + {value: 0x0004, lo: 0x09}, + {value: 0x0001, lo: 0x80, hi: 0x80}, + {value: 0x812d, lo: 0xaa, hi: 0xaa}, + {value: 0x8132, lo: 0xab, hi: 0xab}, + {value: 0x8134, lo: 0xac, hi: 0xac}, + {value: 0x812f, lo: 0xad, hi: 0xad}, + {value: 0x8130, lo: 0xae, hi: 0xae}, + {value: 0x8130, lo: 0xaf, hi: 0xaf}, + {value: 0x04b6, lo: 0xb6, hi: 0xb6}, + {value: 0x088a, lo: 0xb8, hi: 0xba}, + // Block 0x52, offset 0x1e7 + {value: 0x0006, lo: 0x09}, + {value: 0x0316, lo: 0xb1, hi: 0xb1}, + {value: 0x031a, lo: 0xb2, hi: 0xb2}, + {value: 0x4a52, lo: 0xb3, hi: 0xb3}, + {value: 0x031e, lo: 0xb4, hi: 0xb4}, + {value: 0x4a58, lo: 0xb5, hi: 0xb6}, + {value: 0x0322, lo: 0xb7, hi: 0xb7}, + {value: 0x0326, lo: 0xb8, hi: 0xb8}, + {value: 0x032a, lo: 0xb9, hi: 0xb9}, + {value: 0x4a64, lo: 0xba, hi: 0xbf}, + // Block 0x53, offset 0x1f1 + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0xaf, hi: 0xaf}, + {value: 0x8133, lo: 0xb4, hi: 0xbd}, + // Block 0x54, offset 0x1f4 + {value: 0x0000, lo: 0x03}, + {value: 0x0212, lo: 0x9c, hi: 0x9c}, + {value: 0x0215, lo: 0x9d, hi: 0x9d}, + {value: 0x8133, lo: 0x9e, hi: 0x9f}, + // Block 0x55, offset 0x1f8 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xb0, hi: 0xb1}, + // Block 0x56, offset 0x1fa + {value: 0x0000, lo: 0x01}, + {value: 0x163e, lo: 0xb0, hi: 0xb0}, + // Block 0x57, offset 0x1fc + {value: 0x000c, lo: 0x01}, + {value: 0x00d7, lo: 0xb8, hi: 0xb9}, + // Block 0x58, offset 0x1fe + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x86, hi: 0x86}, + {value: 0x8105, lo: 0xac, hi: 0xac}, + // Block 0x59, offset 0x201 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x84, hi: 0x84}, + {value: 0x8133, lo: 0xa0, hi: 0xb1}, + // Block 0x5a, offset 0x204 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0xab, hi: 0xad}, + // Block 0x5b, offset 0x206 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x93, hi: 0x93}, + // Block 0x5c, offset 0x208 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0xb3, hi: 0xb3}, + // Block 0x5d, offset 0x20a + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x80, hi: 0x80}, + // Block 0x5e, offset 0x20c + {value: 0x0000, lo: 0x05}, + {value: 0x8133, lo: 0xb0, hi: 0xb0}, + {value: 0x8133, lo: 0xb2, hi: 0xb3}, + {value: 0x812e, lo: 0xb4, hi: 0xb4}, + {value: 0x8133, lo: 0xb7, hi: 0xb8}, + {value: 0x8133, lo: 0xbe, hi: 0xbf}, + // Block 0x5f, offset 0x212 + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0x81, hi: 0x81}, + {value: 0x8105, lo: 0xb6, hi: 0xb6}, + // Block 0x60, offset 0x215 + {value: 0x0008, lo: 0x04}, + {value: 0x163a, lo: 0x9c, hi: 0x9d}, + {value: 0x0125, lo: 0x9e, hi: 0x9e}, + {value: 0x1646, lo: 0x9f, hi: 0x9f}, + {value: 0x015e, lo: 0xa9, hi: 0xa9}, + // Block 0x61, offset 0x21a + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xad, hi: 0xad}, + // Block 0x62, offset 0x21c + {value: 0x0000, lo: 0x06}, + {value: 0xe500, lo: 0x80, hi: 0x80}, + {value: 0xc600, lo: 0x81, hi: 0x9b}, + {value: 0xe500, lo: 0x9c, hi: 0x9c}, + {value: 0xc600, lo: 0x9d, hi: 0xb7}, + {value: 0xe500, lo: 0xb8, hi: 0xb8}, + {value: 0xc600, lo: 0xb9, hi: 0xbf}, + // Block 0x63, offset 0x223 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x93}, + {value: 0xe500, lo: 0x94, hi: 0x94}, + {value: 0xc600, lo: 0x95, hi: 0xaf}, + {value: 0xe500, lo: 0xb0, hi: 0xb0}, + {value: 0xc600, lo: 0xb1, hi: 0xbf}, + // Block 0x64, offset 0x229 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8b}, + {value: 0xe500, lo: 0x8c, hi: 0x8c}, + {value: 0xc600, lo: 0x8d, hi: 0xa7}, + {value: 0xe500, lo: 0xa8, hi: 0xa8}, + {value: 0xc600, lo: 0xa9, hi: 0xbf}, + // Block 0x65, offset 0x22f + {value: 0x0000, lo: 0x07}, + {value: 0xc600, lo: 0x80, hi: 0x83}, + {value: 0xe500, lo: 0x84, hi: 0x84}, + {value: 0xc600, lo: 0x85, hi: 0x9f}, + {value: 0xe500, lo: 0xa0, hi: 0xa0}, + {value: 0xc600, lo: 0xa1, hi: 0xbb}, + {value: 0xe500, lo: 0xbc, hi: 0xbc}, + {value: 0xc600, lo: 0xbd, hi: 0xbf}, + // Block 0x66, offset 0x237 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x97}, + {value: 0xe500, lo: 0x98, hi: 0x98}, + {value: 0xc600, lo: 0x99, hi: 0xb3}, + {value: 0xe500, lo: 0xb4, hi: 0xb4}, + {value: 0xc600, lo: 0xb5, hi: 0xbf}, + // Block 0x67, offset 0x23d + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8f}, + {value: 0xe500, lo: 0x90, hi: 0x90}, + {value: 0xc600, lo: 0x91, hi: 0xab}, + {value: 0xe500, lo: 0xac, hi: 0xac}, + {value: 0xc600, lo: 0xad, hi: 0xbf}, + // Block 0x68, offset 0x243 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + {value: 0xe500, lo: 0xa4, hi: 0xa4}, + {value: 0xc600, lo: 0xa5, hi: 0xbf}, + // Block 0x69, offset 0x249 + {value: 0x0000, lo: 0x03}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + // Block 0x6a, offset 0x24d + {value: 0x0002, lo: 0x01}, + {value: 0x0003, lo: 0x81, hi: 0xbf}, + // Block 0x6b, offset 0x24f + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0xbd, hi: 0xbd}, + // Block 0x6c, offset 0x251 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0xa0, hi: 0xa0}, + // Block 0x6d, offset 0x253 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xb6, hi: 0xba}, + // Block 0x6e, offset 0x255 + {value: 0x002d, lo: 0x05}, + {value: 0x812e, lo: 0x8d, hi: 0x8d}, + {value: 0x8133, lo: 0x8f, hi: 0x8f}, + {value: 0x8133, lo: 0xb8, hi: 0xb8}, + {value: 0x8101, lo: 0xb9, hi: 0xba}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x6f, offset 0x25b + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0xa5, hi: 0xa5}, + {value: 0x812e, lo: 0xa6, hi: 0xa6}, + // Block 0x70, offset 0x25e + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xa4, hi: 0xa7}, + // Block 0x71, offset 0x260 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xab, hi: 0xac}, + // Block 0x72, offset 0x262 + {value: 0x0000, lo: 0x05}, + {value: 0x812e, lo: 0x86, hi: 0x87}, + {value: 0x8133, lo: 0x88, hi: 0x8a}, + {value: 0x812e, lo: 0x8b, hi: 0x8b}, + {value: 0x8133, lo: 0x8c, hi: 0x8c}, + {value: 0x812e, lo: 0x8d, hi: 0x90}, + // Block 0x73, offset 0x268 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x86, hi: 0x86}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x74, offset 0x26b + {value: 0x17fe, lo: 0x07}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x424f, lo: 0x9a, hi: 0x9a}, + {value: 0xa000, lo: 0x9b, hi: 0x9b}, + {value: 0x4259, lo: 0x9c, hi: 0x9c}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x4263, lo: 0xab, hi: 0xab}, + {value: 0x8105, lo: 0xb9, hi: 0xba}, + // Block 0x75, offset 0x273 + {value: 0x0000, lo: 0x06}, + {value: 0x8133, lo: 0x80, hi: 0x82}, + {value: 0x9900, lo: 0xa7, hi: 0xa7}, + {value: 0x2d8b, lo: 0xae, hi: 0xae}, + {value: 0x2d95, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb1, hi: 0xb2}, + {value: 0x8105, lo: 0xb3, hi: 0xb4}, + // Block 0x76, offset 0x27a + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x80, hi: 0x80}, + {value: 0x8103, lo: 0x8a, hi: 0x8a}, + // Block 0x77, offset 0x27d + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xb5, hi: 0xb5}, + {value: 0x8103, lo: 0xb6, hi: 0xb6}, + // Block 0x78, offset 0x280 + {value: 0x0002, lo: 0x01}, + {value: 0x8103, lo: 0xa9, hi: 0xaa}, + // Block 0x79, offset 0x282 + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x7a, offset 0x285 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2d9f, lo: 0x8b, hi: 0x8b}, + {value: 0x2da9, lo: 0x8c, hi: 0x8c}, + {value: 0x8105, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x8133, lo: 0xa6, hi: 0xac}, + {value: 0x8133, lo: 0xb0, hi: 0xb4}, + // Block 0x7b, offset 0x28d + {value: 0x0000, lo: 0x03}, + {value: 0x8105, lo: 0x82, hi: 0x82}, + {value: 0x8103, lo: 0x86, hi: 0x86}, + {value: 0x8133, lo: 0x9e, hi: 0x9e}, + // Block 0x7c, offset 0x291 + {value: 0x6b4d, lo: 0x06}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb9, hi: 0xb9}, + {value: 0x9900, lo: 0xba, hi: 0xba}, + {value: 0x2dbd, lo: 0xbb, hi: 0xbb}, + {value: 0x2db3, lo: 0xbc, hi: 0xbd}, + {value: 0x2dc7, lo: 0xbe, hi: 0xbe}, + // Block 0x7d, offset 0x298 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0x82, hi: 0x82}, + {value: 0x8103, lo: 0x83, hi: 0x83}, + // Block 0x7e, offset 0x29b + {value: 0x0000, lo: 0x05}, + {value: 0x9900, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb8, hi: 0xb9}, + {value: 0x2dd1, lo: 0xba, hi: 0xba}, + {value: 0x2ddb, lo: 0xbb, hi: 0xbb}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x7f, offset 0x2a1 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0x80, hi: 0x80}, + // Block 0x80, offset 0x2a3 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xbf, hi: 0xbf}, + // Block 0x81, offset 0x2a5 + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xb6, hi: 0xb6}, + {value: 0x8103, lo: 0xb7, hi: 0xb7}, + // Block 0x82, offset 0x2a8 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xab, hi: 0xab}, + // Block 0x83, offset 0x2aa + {value: 0x0000, lo: 0x02}, + {value: 0x8105, lo: 0xb9, hi: 0xb9}, + {value: 0x8103, lo: 0xba, hi: 0xba}, + // Block 0x84, offset 0x2ad + {value: 0x0000, lo: 0x04}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb5, hi: 0xb5}, + {value: 0x2de5, lo: 0xb8, hi: 0xb8}, + {value: 0x8105, lo: 0xbd, hi: 0xbe}, + // Block 0x85, offset 0x2b2 + {value: 0x0000, lo: 0x01}, + {value: 0x8103, lo: 0x83, hi: 0x83}, + // Block 0x86, offset 0x2b4 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xa0, hi: 0xa0}, + // Block 0x87, offset 0x2b6 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0xb4, hi: 0xb4}, + // Block 0x88, offset 0x2b8 + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x87, hi: 0x87}, + // Block 0x89, offset 0x2ba + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x99, hi: 0x99}, + // Block 0x8a, offset 0x2bc + {value: 0x0000, lo: 0x02}, + {value: 0x8103, lo: 0x82, hi: 0x82}, + {value: 0x8105, lo: 0x84, hi: 0x85}, + // Block 0x8b, offset 0x2bf + {value: 0x0000, lo: 0x01}, + {value: 0x8105, lo: 0x97, hi: 0x97}, + // Block 0x8c, offset 0x2c1 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0xb0, hi: 0xb4}, + // Block 0x8d, offset 0x2c3 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xb0, hi: 0xb6}, + // Block 0x8e, offset 0x2c5 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb0, hi: 0xb1}, + // Block 0x8f, offset 0x2c7 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0x9e, hi: 0x9e}, + // Block 0x90, offset 0x2c9 + {value: 0x0000, lo: 0x0c}, + {value: 0x45e3, lo: 0x9e, hi: 0x9e}, + {value: 0x45ed, lo: 0x9f, hi: 0x9f}, + {value: 0x4621, lo: 0xa0, hi: 0xa0}, + {value: 0x462f, lo: 0xa1, hi: 0xa1}, + {value: 0x463d, lo: 0xa2, hi: 0xa2}, + {value: 0x464b, lo: 0xa3, hi: 0xa3}, + {value: 0x4659, lo: 0xa4, hi: 0xa4}, + {value: 0x812c, lo: 0xa5, hi: 0xa6}, + {value: 0x8101, lo: 0xa7, hi: 0xa9}, + {value: 0x8131, lo: 0xad, hi: 0xad}, + {value: 0x812c, lo: 0xae, hi: 0xb2}, + {value: 0x812e, lo: 0xbb, hi: 0xbf}, + // Block 0x91, offset 0x2d6 + {value: 0x0000, lo: 0x09}, + {value: 0x812e, lo: 0x80, hi: 0x82}, + {value: 0x8133, lo: 0x85, hi: 0x89}, + {value: 0x812e, lo: 0x8a, hi: 0x8b}, + {value: 0x8133, lo: 0xaa, hi: 0xad}, + {value: 0x45f7, lo: 0xbb, hi: 0xbb}, + {value: 0x4601, lo: 0xbc, hi: 0xbc}, + {value: 0x4667, lo: 0xbd, hi: 0xbd}, + {value: 0x4683, lo: 0xbe, hi: 0xbe}, + {value: 0x4675, lo: 0xbf, hi: 0xbf}, + // Block 0x92, offset 0x2e0 + {value: 0x0000, lo: 0x01}, + {value: 0x4691, lo: 0x80, hi: 0x80}, + // Block 0x93, offset 0x2e2 + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0x82, hi: 0x84}, + // Block 0x94, offset 0x2e4 + {value: 0x0002, lo: 0x03}, + {value: 0x0043, lo: 0x80, hi: 0x99}, + {value: 0x0083, lo: 0x9a, hi: 0xb3}, + {value: 0x0043, lo: 0xb4, hi: 0xbf}, + // Block 0x95, offset 0x2e8 + {value: 0x0002, lo: 0x04}, + {value: 0x005b, lo: 0x80, hi: 0x8d}, + {value: 0x0083, lo: 0x8e, hi: 0x94}, + {value: 0x0093, lo: 0x96, hi: 0xa7}, + {value: 0x0043, lo: 0xa8, hi: 0xbf}, + // Block 0x96, offset 0x2ed + {value: 0x0002, lo: 0x0b}, + {value: 0x0073, lo: 0x80, hi: 0x81}, + {value: 0x0083, lo: 0x82, hi: 0x9b}, + {value: 0x0043, lo: 0x9c, hi: 0x9c}, + {value: 0x0047, lo: 0x9e, hi: 0x9f}, + {value: 0x004f, lo: 0xa2, hi: 0xa2}, + {value: 0x0055, lo: 0xa5, hi: 0xa6}, + {value: 0x005d, lo: 0xa9, hi: 0xac}, + {value: 0x0067, lo: 0xae, hi: 0xb5}, + {value: 0x0083, lo: 0xb6, hi: 0xb9}, + {value: 0x008d, lo: 0xbb, hi: 0xbb}, + {value: 0x0091, lo: 0xbd, hi: 0xbf}, + // Block 0x97, offset 0x2f9 + {value: 0x0002, lo: 0x04}, + {value: 0x0097, lo: 0x80, hi: 0x83}, + {value: 0x00a1, lo: 0x85, hi: 0x8f}, + {value: 0x0043, lo: 0x90, hi: 0xa9}, + {value: 0x0083, lo: 0xaa, hi: 0xbf}, + // Block 0x98, offset 0x2fe + {value: 0x0002, lo: 0x08}, + {value: 0x00af, lo: 0x80, hi: 0x83}, + {value: 0x0043, lo: 0x84, hi: 0x85}, + {value: 0x0049, lo: 0x87, hi: 0x8a}, + {value: 0x0055, lo: 0x8d, hi: 0x94}, + {value: 0x0067, lo: 0x96, hi: 0x9c}, + {value: 0x0083, lo: 0x9e, hi: 0xb7}, + {value: 0x0043, lo: 0xb8, hi: 0xb9}, + {value: 0x0049, lo: 0xbb, hi: 0xbe}, + // Block 0x99, offset 0x307 + {value: 0x0002, lo: 0x05}, + {value: 0x0053, lo: 0x80, hi: 0x84}, + {value: 0x005f, lo: 0x86, hi: 0x86}, + {value: 0x0067, lo: 0x8a, hi: 0x90}, + {value: 0x0083, lo: 0x92, hi: 0xab}, + {value: 0x0043, lo: 0xac, hi: 0xbf}, + // Block 0x9a, offset 0x30d + {value: 0x0002, lo: 0x04}, + {value: 0x006b, lo: 0x80, hi: 0x85}, + {value: 0x0083, lo: 0x86, hi: 0x9f}, + {value: 0x0043, lo: 0xa0, hi: 0xb9}, + {value: 0x0083, lo: 0xba, hi: 0xbf}, + // Block 0x9b, offset 0x312 + {value: 0x0002, lo: 0x03}, + {value: 0x008f, lo: 0x80, hi: 0x93}, + {value: 0x0043, lo: 0x94, hi: 0xad}, + {value: 0x0083, lo: 0xae, hi: 0xbf}, + // Block 0x9c, offset 0x316 + {value: 0x0002, lo: 0x04}, + {value: 0x00a7, lo: 0x80, hi: 0x87}, + {value: 0x0043, lo: 0x88, hi: 0xa1}, + {value: 0x0083, lo: 0xa2, hi: 0xbb}, + {value: 0x0043, lo: 0xbc, hi: 0xbf}, + // Block 0x9d, offset 0x31b + {value: 0x0002, lo: 0x03}, + {value: 0x004b, lo: 0x80, hi: 0x95}, + {value: 0x0083, lo: 0x96, hi: 0xaf}, + {value: 0x0043, lo: 0xb0, hi: 0xbf}, + // Block 0x9e, offset 0x31f + {value: 0x0003, lo: 0x0f}, + {value: 0x01bb, lo: 0x80, hi: 0x80}, + {value: 0x0462, lo: 0x81, hi: 0x81}, + {value: 0x01be, lo: 0x82, hi: 0x9a}, + {value: 0x045e, lo: 0x9b, hi: 0x9b}, + {value: 0x01ca, lo: 0x9c, hi: 0x9c}, + {value: 0x01d3, lo: 0x9d, hi: 0x9d}, + {value: 0x01d9, lo: 0x9e, hi: 0x9e}, + {value: 0x01fd, lo: 0x9f, hi: 0x9f}, + {value: 0x01ee, lo: 0xa0, hi: 0xa0}, + {value: 0x01eb, lo: 0xa1, hi: 0xa1}, + {value: 0x0176, lo: 0xa2, hi: 0xb2}, + {value: 0x018b, lo: 0xb3, hi: 0xb3}, + {value: 0x01a9, lo: 0xb4, hi: 0xba}, + {value: 0x0462, lo: 0xbb, hi: 0xbb}, + {value: 0x01be, lo: 0xbc, hi: 0xbf}, + // Block 0x9f, offset 0x32f + {value: 0x0003, lo: 0x0d}, + {value: 0x01ca, lo: 0x80, hi: 0x94}, + {value: 0x045e, lo: 0x95, hi: 0x95}, + {value: 0x01ca, lo: 0x96, hi: 0x96}, + {value: 0x01d3, lo: 0x97, hi: 0x97}, + {value: 0x01d9, lo: 0x98, hi: 0x98}, + {value: 0x01fd, lo: 0x99, hi: 0x99}, + {value: 0x01ee, lo: 0x9a, hi: 0x9a}, + {value: 0x01eb, lo: 0x9b, hi: 0x9b}, + {value: 0x0176, lo: 0x9c, hi: 0xac}, + {value: 0x018b, lo: 0xad, hi: 0xad}, + {value: 0x01a9, lo: 0xae, hi: 0xb4}, + {value: 0x0462, lo: 0xb5, hi: 0xb5}, + {value: 0x01be, lo: 0xb6, hi: 0xbf}, + // Block 0xa0, offset 0x33d + {value: 0x0003, lo: 0x0d}, + {value: 0x01dc, lo: 0x80, hi: 0x8e}, + {value: 0x045e, lo: 0x8f, hi: 0x8f}, + {value: 0x01ca, lo: 0x90, hi: 0x90}, + {value: 0x01d3, lo: 0x91, hi: 0x91}, + {value: 0x01d9, lo: 0x92, hi: 0x92}, + {value: 0x01fd, lo: 0x93, hi: 0x93}, + {value: 0x01ee, lo: 0x94, hi: 0x94}, + {value: 0x01eb, lo: 0x95, hi: 0x95}, + {value: 0x0176, lo: 0x96, hi: 0xa6}, + {value: 0x018b, lo: 0xa7, hi: 0xa7}, + {value: 0x01a9, lo: 0xa8, hi: 0xae}, + {value: 0x0462, lo: 0xaf, hi: 0xaf}, + {value: 0x01be, lo: 0xb0, hi: 0xbf}, + // Block 0xa1, offset 0x34b + {value: 0x0003, lo: 0x0d}, + {value: 0x01ee, lo: 0x80, hi: 0x88}, + {value: 0x045e, lo: 0x89, hi: 0x89}, + {value: 0x01ca, lo: 0x8a, hi: 0x8a}, + {value: 0x01d3, lo: 0x8b, hi: 0x8b}, + {value: 0x01d9, lo: 0x8c, hi: 0x8c}, + {value: 0x01fd, lo: 0x8d, hi: 0x8d}, + {value: 0x01ee, lo: 0x8e, hi: 0x8e}, + {value: 0x01eb, lo: 0x8f, hi: 0x8f}, + {value: 0x0176, lo: 0x90, hi: 0xa0}, + {value: 0x018b, lo: 0xa1, hi: 0xa1}, + {value: 0x01a9, lo: 0xa2, hi: 0xa8}, + {value: 0x0462, lo: 0xa9, hi: 0xa9}, + {value: 0x01be, lo: 0xaa, hi: 0xbf}, + // Block 0xa2, offset 0x359 + {value: 0x0000, lo: 0x05}, + {value: 0x8133, lo: 0x80, hi: 0x86}, + {value: 0x8133, lo: 0x88, hi: 0x98}, + {value: 0x8133, lo: 0x9b, hi: 0xa1}, + {value: 0x8133, lo: 0xa3, hi: 0xa4}, + {value: 0x8133, lo: 0xa6, hi: 0xaa}, + // Block 0xa3, offset 0x35f + {value: 0x0000, lo: 0x01}, + {value: 0x8133, lo: 0xac, hi: 0xaf}, + // Block 0xa4, offset 0x361 + {value: 0x0000, lo: 0x01}, + {value: 0x812e, lo: 0x90, hi: 0x96}, + // Block 0xa5, offset 0x363 + {value: 0x0000, lo: 0x02}, + {value: 0x8133, lo: 0x84, hi: 0x89}, + {value: 0x8103, lo: 0x8a, hi: 0x8a}, + // Block 0xa6, offset 0x366 + {value: 0x0002, lo: 0x0a}, + {value: 0x0063, lo: 0x80, hi: 0x89}, + {value: 0x1954, lo: 0x8a, hi: 0x8a}, + {value: 0x1987, lo: 0x8b, hi: 0x8b}, + {value: 0x19a2, lo: 0x8c, hi: 0x8c}, + {value: 0x19a8, lo: 0x8d, hi: 0x8d}, + {value: 0x1bc6, lo: 0x8e, hi: 0x8e}, + {value: 0x19b4, lo: 0x8f, hi: 0x8f}, + {value: 0x197e, lo: 0xaa, hi: 0xaa}, + {value: 0x1981, lo: 0xab, hi: 0xab}, + {value: 0x1984, lo: 0xac, hi: 0xac}, + // Block 0xa7, offset 0x371 + {value: 0x0000, lo: 0x01}, + {value: 0x1942, lo: 0x90, hi: 0x90}, + // Block 0xa8, offset 0x373 + {value: 0x0028, lo: 0x09}, + {value: 0x286f, lo: 0x80, hi: 0x80}, + {value: 0x2833, lo: 0x81, hi: 0x81}, + {value: 0x283d, lo: 0x82, hi: 0x82}, + {value: 0x2851, lo: 0x83, hi: 0x84}, + {value: 0x285b, lo: 0x85, hi: 0x86}, + {value: 0x2847, lo: 0x87, hi: 0x87}, + {value: 0x2865, lo: 0x88, hi: 0x88}, + {value: 0x0b72, lo: 0x90, hi: 0x90}, + {value: 0x08ea, lo: 0x91, hi: 0x91}, + // Block 0xa9, offset 0x37d + {value: 0x0002, lo: 0x01}, + {value: 0x0021, lo: 0xb0, hi: 0xb9}, +} + +// recompMap: 7528 bytes (entries only) +var recompMap map[uint32]rune +var recompMapOnce sync.Once + +const recompMapPacked = "" + + "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0 + "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1 + "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2 + "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3 + "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4 + "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5 + "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7 + "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8 + "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9 + "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA + "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB + "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC + "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD + "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE + "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF + "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1 + "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2 + "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3 + "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4 + "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5 + "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6 + "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9 + "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA + "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB + "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC + "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD + "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0 + "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1 + "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2 + "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3 + "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4 + "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5 + "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7 + "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8 + "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9 + "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA + "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB + "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC + "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED + "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE + "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF + "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1 + "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2 + "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3 + "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4 + "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5 + "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6 + "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9 + "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA + "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB + "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC + "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD + "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF + "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100 + "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101 + "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102 + "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103 + "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104 + "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105 + "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106 + "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107 + "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108 + "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109 + "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A + "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B + "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C + "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D + "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E + "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F + "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112 + "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113 + "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114 + "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115 + "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116 + "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117 + "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118 + "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119 + "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A + "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B + "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C + "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D + "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E + "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F + "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120 + "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121 + "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122 + "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123 + "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124 + "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125 + "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128 + "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129 + "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A + "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B + "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C + "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D + "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E + "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F + "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130 + "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134 + "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135 + "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136 + "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137 + "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139 + "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A + "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B + "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C + "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D + "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E + "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143 + "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144 + "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145 + "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146 + "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147 + "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148 + "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C + "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D + "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E + "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F + "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150 + "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151 + "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154 + "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155 + "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156 + "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157 + "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158 + "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159 + "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A + "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B + "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C + "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D + "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E + "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F + "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160 + "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161 + "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162 + "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163 + "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164 + "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165 + "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168 + "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169 + "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A + "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B + "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C + "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D + "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E + "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F + "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170 + "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171 + "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172 + "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173 + "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174 + "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175 + "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176 + "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177 + "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178 + "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179 + "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A + "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B + "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C + "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D + "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E + "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0 + "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1 + "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF + "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0 + "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD + "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE + "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF + "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0 + "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1 + "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2 + "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3 + "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4 + "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5 + "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6 + "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7 + "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8 + "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9 + "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA + "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB + "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC + "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE + "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF + "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0 + "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1 + "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2 + "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3 + "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6 + "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7 + "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8 + "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9 + "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA + "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB + "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC + "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED + "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE + "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF + "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0 + "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4 + "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5 + "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8 + "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9 + "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA + "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB + "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC + "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD + "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE + "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF + "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200 + "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201 + "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202 + "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203 + "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204 + "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205 + "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206 + "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207 + "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208 + "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209 + "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A + "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B + "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C + "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D + "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E + "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F + "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210 + "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211 + "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212 + "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213 + "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214 + "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215 + "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216 + "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217 + "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218 + "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219 + "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A + "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B + "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E + "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F + "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226 + "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227 + "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228 + "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229 + "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A + "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B + "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C + "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D + "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E + "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F + "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230 + "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231 + "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232 + "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233 + "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385 + "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386 + "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388 + "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389 + "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A + "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C + "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E + "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F + "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390 + "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA + "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB + "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC + "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD + "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE + "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF + "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0 + "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA + "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB + "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC + "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD + "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE + "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3 + "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4 + "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400 + "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401 + "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403 + "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407 + "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C + "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D + "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E + "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419 + "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439 + "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450 + "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451 + "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453 + "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457 + "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C + "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D + "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E + "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476 + "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477 + "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1 + "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2 + "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0 + "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1 + "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2 + "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3 + "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6 + "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7 + "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA + "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB + "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC + "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD + "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE + "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF + "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2 + "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3 + "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4 + "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5 + "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6 + "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7 + "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA + "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB + "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC + "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED + "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE + "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF + "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0 + "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1 + "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2 + "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3 + "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4 + "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5 + "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8 + "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9 + "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622 + "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623 + "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624 + "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625 + "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626 + "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0 + "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2 + "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3 + "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929 + "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931 + "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934 + "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB + "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC + "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48 + "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B + "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C + "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94 + "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA + "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB + "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC + "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48 + "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0 + "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7 + "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8 + "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA + "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB + "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A + "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B + "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C + "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA + "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC + "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD + "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE + "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026 + "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06 + "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08 + "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A + "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C + "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E + "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12 + "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B + "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D + "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40 + "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41 + "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43 + "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00 + "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01 + "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02 + "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03 + "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04 + "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05 + "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06 + "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07 + "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08 + "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09 + "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A + "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B + "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C + "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D + "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E + "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F + "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10 + "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11 + "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12 + "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13 + "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14 + "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15 + "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16 + "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17 + "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18 + "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19 + "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A + "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B + "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C + "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D + "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E + "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F + "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20 + "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21 + "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22 + "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23 + "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24 + "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25 + "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26 + "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27 + "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28 + "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29 + "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A + "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B + "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C + "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D + "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E + "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F + "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30 + "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31 + "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32 + "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33 + "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34 + "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35 + "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36 + "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37 + "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38 + "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39 + "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A + "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B + "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C + "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D + "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E + "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F + "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40 + "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41 + "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42 + "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43 + "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44 + "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45 + "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46 + "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47 + "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48 + "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49 + "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A + "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B + "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C + "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D + "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E + "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F + "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50 + "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51 + "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52 + "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53 + "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54 + "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55 + "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56 + "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57 + "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58 + "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59 + "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A + "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B + "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C + "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D + "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E + "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F + "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60 + "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61 + "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62 + "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63 + "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64 + "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65 + "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66 + "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67 + "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68 + "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69 + "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A + "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B + "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C + "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D + "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E + "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F + "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70 + "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71 + "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72 + "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73 + "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74 + "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75 + "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76 + "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77 + "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78 + "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79 + "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A + "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B + "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C + "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D + "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E + "\x00v\x03#\x00\x00\x1e\u007f" + // 0x00760323: 0x00001E7F + "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80 + "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81 + "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82 + "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83 + "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84 + "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85 + "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86 + "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87 + "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88 + "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89 + "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A + "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B + "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C + "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D + "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E + "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F + "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90 + "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91 + "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92 + "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93 + "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94 + "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95 + "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96 + "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97 + "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98 + "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99 + "\x01\u007f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B + "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0 + "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1 + "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2 + "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3 + "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4 + "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5 + "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6 + "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7 + "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8 + "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9 + "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA + "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB + "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC + "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD + "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE + "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF + "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0 + "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1 + "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2 + "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3 + "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4 + "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5 + "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6 + "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7 + "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8 + "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9 + "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA + "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB + "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC + "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD + "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE + "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF + "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0 + "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1 + "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2 + "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3 + "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4 + "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5 + "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6 + "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7 + "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8 + "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9 + "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA + "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB + "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC + "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD + "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE + "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF + "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0 + "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1 + "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2 + "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3 + "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4 + "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5 + "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6 + "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7 + "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8 + "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9 + "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA + "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB + "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC + "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD + "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE + "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF + "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0 + "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1 + "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2 + "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3 + "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4 + "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5 + "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6 + "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7 + "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8 + "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9 + "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA + "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB + "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC + "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED + "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE + "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF + "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0 + "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1 + "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2 + "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3 + "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4 + "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5 + "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6 + "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7 + "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8 + "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9 + "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00 + "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01 + "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02 + "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03 + "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04 + "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05 + "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06 + "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07 + "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08 + "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09 + "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A + "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B + "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C + "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D + "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E + "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F + "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10 + "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11 + "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12 + "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13 + "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14 + "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15 + "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18 + "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19 + "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A + "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B + "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C + "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D + "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20 + "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21 + "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22 + "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23 + "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24 + "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25 + "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26 + "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27 + "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28 + "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29 + "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A + "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B + "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C + "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D + "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E + "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F + "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30 + "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31 + "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32 + "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33 + "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34 + "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35 + "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36 + "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37 + "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38 + "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39 + "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A + "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B + "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C + "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D + "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E + "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F + "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40 + "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41 + "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42 + "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43 + "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44 + "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45 + "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48 + "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49 + "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A + "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B + "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C + "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D + "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50 + "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51 + "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52 + "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53 + "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54 + "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55 + "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56 + "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57 + "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59 + "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B + "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D + "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F + "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60 + "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61 + "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62 + "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63 + "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64 + "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65 + "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66 + "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67 + "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68 + "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69 + "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A + "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B + "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C + "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D + "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E + "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F + "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70 + "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72 + "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74 + "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76 + "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78 + "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A + "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C + "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80 + "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81 + "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82 + "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83 + "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84 + "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85 + "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86 + "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87 + "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88 + "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89 + "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A + "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B + "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C + "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D + "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E + "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F + "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90 + "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91 + "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92 + "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93 + "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94 + "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95 + "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96 + "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97 + "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98 + "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99 + "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A + "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B + "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C + "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D + "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E + "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F + "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0 + "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1 + "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2 + "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3 + "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4 + "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5 + "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6 + "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7 + "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8 + "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9 + "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA + "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB + "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC + "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD + "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE + "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF + "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0 + "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1 + "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2 + "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3 + "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4 + "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6 + "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7 + "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8 + "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9 + "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA + "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC + "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1 + "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2 + "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3 + "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4 + "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6 + "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7 + "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8 + "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA + "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC + "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD + "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE + "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF + "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0 + "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1 + "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2 + "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6 + "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7 + "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8 + "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9 + "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA + "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD + "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE + "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF + "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0 + "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1 + "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2 + "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4 + "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5 + "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6 + "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7 + "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8 + "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9 + "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA + "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC + "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED + "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2 + "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3 + "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4 + "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6 + "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7 + "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8 + "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA + "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC + "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A + "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B + "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE + "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD + "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE + "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF + "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204 + "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209 + "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C + "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224 + "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226 + "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241 + "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244 + "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247 + "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249 + "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260 + "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262 + "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D + "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E + "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F + "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270 + "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271 + "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274 + "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275 + "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278 + "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279 + "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280 + "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281 + "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284 + "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285 + "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288 + "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289 + "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC + "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD + "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE + "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF + "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0 + "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1 + "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2 + "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3 + "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA + "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB + "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC + "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED + "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C + "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E + "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050 + "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052 + "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054 + "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056 + "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058 + "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A + "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C + "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E + "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060 + "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062 + "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065 + "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067 + "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069 + "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070 + "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071 + "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073 + "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074 + "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076 + "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077 + "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079 + "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A + "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C + "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D + "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094 + "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E + "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC + "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE + "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0 + "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2 + "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4 + "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6 + "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8 + "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA + "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC + "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE + "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0 + "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2 + "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5 + "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7 + "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9 + "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0 + "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1 + "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3 + "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4 + "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6 + "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7 + "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9 + "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA + "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC + "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD + "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4 + "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7 + "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8 + "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9 + "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA + "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE + "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A + "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C + "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB + "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E + "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F + "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B + "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C + "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB + "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC + "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE + "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA + "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB + "\x195\x190\x00\x01\x198" + // 0x19351930: 0x00011938 + "" + // Total size of tables: 55KB (56160 bytes) diff --git a/vendor/gopkg.in/yaml.v3/.travis.yml b/vendor/gopkg.in/yaml.v3/.travis.yml deleted file mode 100644 index 04d4dae09..000000000 --- a/vendor/gopkg.in/yaml.v3/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: go - -go: - - "1.4.x" - - "1.5.x" - - "1.6.x" - - "1.7.x" - - "1.8.x" - - "1.9.x" - - "1.10.x" - - "1.11.x" - - "1.12.x" - - "1.13.x" - - "tip" - -go_import_path: gopkg.in/yaml.v3 diff --git a/vendor/gopkg.in/yaml.v3/apic.go b/vendor/gopkg.in/yaml.v3/apic.go index 65846e674..ae7d049f1 100644 --- a/vendor/gopkg.in/yaml.v3/apic.go +++ b/vendor/gopkg.in/yaml.v3/apic.go @@ -108,6 +108,7 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) { raw_buffer: make([]byte, 0, output_raw_buffer_size), states: make([]yaml_emitter_state_t, 0, initial_stack_size), events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, } } diff --git a/vendor/gopkg.in/yaml.v3/decode.go b/vendor/gopkg.in/yaml.v3/decode.go index be63169b7..df36e3a30 100644 --- a/vendor/gopkg.in/yaml.v3/decode.go +++ b/vendor/gopkg.in/yaml.v3/decode.go @@ -35,6 +35,7 @@ type parser struct { doc *Node anchors map[string]*Node doneInit bool + textless bool } func newParser(b []byte) *parser { @@ -108,14 +109,18 @@ func (p *parser) peek() yaml_event_type_t { func (p *parser) fail() { var where string var line int - if p.parser.problem_mark.line != 0 { + if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } else if p.parser.problem_mark.line != 0 { line = p.parser.problem_mark.line // Scanner errors don't iterate line before returning error if p.parser.error == yaml_SCANNER_ERROR { line++ } - } else if p.parser.context_mark.line != 0 { - line = p.parser.context_mark.line } if line != 0 { where = "line " + strconv.Itoa(line) + ": " @@ -169,17 +174,20 @@ func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { } else if kind == ScalarNode { tag, _ = resolve("", value) } - return &Node{ - Kind: kind, - Tag: tag, - Value: value, - Style: style, - Line: p.event.start_mark.line + 1, - Column: p.event.start_mark.column + 1, - HeadComment: string(p.event.head_comment), - LineComment: string(p.event.line_comment), - FootComment: string(p.event.foot_comment), + n := &Node{ + Kind: kind, + Tag: tag, + Value: value, + Style: style, } + if !p.textless { + n.Line = p.event.start_mark.line + 1 + n.Column = p.event.start_mark.column + 1 + n.HeadComment = string(p.event.head_comment) + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + } + return n } func (p *parser) parseChild(parent *Node) *Node { @@ -497,8 +505,13 @@ func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { good = d.mapping(n, out) case SequenceNode: good = d.sequence(n, out) + case 0: + if n.IsZero() { + return d.null(out) + } + fallthrough default: - panic("internal error: unknown node kind: " + strconv.Itoa(int(n.Kind))) + failf("cannot decode node with unknown kind %d", n.Kind) } return good } @@ -533,6 +546,17 @@ func resetMap(out reflect.Value) { } } +func (d *decoder) null(out reflect.Value) bool { + if out.CanAddr() { + switch out.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + out.Set(reflect.Zero(out.Type())) + return true + } + } + return false +} + func (d *decoder) scalar(n *Node, out reflect.Value) bool { var tag string var resolved interface{} @@ -550,14 +574,7 @@ func (d *decoder) scalar(n *Node, out reflect.Value) bool { } } if resolved == nil { - if out.CanAddr() { - switch out.Kind() { - case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: - out.Set(reflect.Zero(out.Type())) - return true - } - } - return false + return d.null(out) } if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { // We've resolved to exactly the type we want, so use that. @@ -791,8 +808,10 @@ func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { } } + mapIsNew := false if out.IsNil() { out.Set(reflect.MakeMap(outt)) + mapIsNew = true } for i := 0; i < l; i += 2 { if isMerge(n.Content[i]) { @@ -809,7 +828,7 @@ func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { failf("invalid map key: %#v", k.Interface()) } e := reflect.New(et).Elem() - if d.unmarshal(n.Content[i+1], e) { + if d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) { out.SetMapIndex(k, e) } } diff --git a/vendor/gopkg.in/yaml.v3/emitterc.go b/vendor/gopkg.in/yaml.v3/emitterc.go index ab2a06619..0f47c9ca8 100644 --- a/vendor/gopkg.in/yaml.v3/emitterc.go +++ b/vendor/gopkg.in/yaml.v3/emitterc.go @@ -235,10 +235,13 @@ func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool emitter.indent = 0 } } else if !indentless { - emitter.indent += emitter.best_indent - // [Go] If inside a block sequence item, discount the space taken by the indicator. - if emitter.best_indent > 2 && emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { - emitter.indent -= 2 + // [Go] This was changed so that indentations are more regular. + if emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { + // The first indent inside a sequence will just skip the "- " indicator. + emitter.indent += 2 + } else { + // Everything else aligns to the chosen indentation. + emitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent) } } return true @@ -725,16 +728,9 @@ func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_e // Expect a block item node. func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { if first { - // [Go] The original logic here would not indent the sequence when inside a mapping. - // In Go we always indent it, but take the sequence indicator out of the indentation. - indentless := emitter.best_indent == 2 && emitter.mapping_context && (emitter.column == 0 || !emitter.indention) - original := emitter.indent - if !yaml_emitter_increase_indent(emitter, false, indentless) { + if !yaml_emitter_increase_indent(emitter, false, false) { return false } - if emitter.indent > original+2 { - emitter.indent -= 2 - } } if event.typ == yaml_SEQUENCE_END_EVENT { emitter.indent = emitter.indents[len(emitter.indents)-1] @@ -785,6 +781,13 @@ func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_ev if !yaml_emitter_write_indent(emitter) { return false } + if len(emitter.line_comment) > 0 { + // [Go] A line comment was provided for the key. That's unusual as the + // scanner associates line comments with the value. Either way, + // save the line comment and render it appropriately later. + emitter.key_line_comment = emitter.line_comment + emitter.line_comment = nil + } if yaml_emitter_check_simple_key(emitter) { emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) return yaml_emitter_emit_node(emitter, event, false, false, true, true) @@ -810,6 +813,27 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_ return false } } + if len(emitter.key_line_comment) > 0 { + // [Go] Line comments are generally associated with the value, but when there's + // no value on the same line as a mapping key they end up attached to the + // key itself. + if event.typ == yaml_SCALAR_EVENT { + if len(emitter.line_comment) == 0 { + // A scalar is coming and it has no line comments by itself yet, + // so just let it handle the line comment as usual. If it has a + // line comment, we can't have both so the one from the key is lost. + emitter.line_comment = emitter.key_line_comment + emitter.key_line_comment = nil + } + } else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) { + // An indented block follows, so write the comment right now. + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + if !yaml_emitter_process_line_comment(emitter) { + return false + } + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + } + } emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { return false @@ -823,6 +847,10 @@ func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_ return true } +func yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + return event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0 +} + // Expect a node. func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, root bool, sequence bool, mapping bool, simple_key bool) bool { @@ -1866,7 +1894,7 @@ func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bo if !yaml_emitter_write_block_scalar_hints(emitter, value) { return false } - if !put_break(emitter) { + if !yaml_emitter_process_line_comment(emitter) { return false } //emitter.indention = true @@ -1903,10 +1931,10 @@ func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) boo if !yaml_emitter_write_block_scalar_hints(emitter, value) { return false } - - if !put_break(emitter) { + if !yaml_emitter_process_line_comment(emitter) { return false } + //emitter.indention = true emitter.whitespace = true diff --git a/vendor/gopkg.in/yaml.v3/encode.go b/vendor/gopkg.in/yaml.v3/encode.go index 1f37271ce..de9e72a3e 100644 --- a/vendor/gopkg.in/yaml.v3/encode.go +++ b/vendor/gopkg.in/yaml.v3/encode.go @@ -119,6 +119,14 @@ func (e *encoder) marshal(tag string, in reflect.Value) { case *Node: e.nodev(in) return + case Node: + if !in.CanAddr() { + var n = reflect.New(in.Type()).Elem() + n.Set(in) + in = n + } + e.nodev(in.Addr()) + return case time.Time: e.timev(tag, in) return @@ -422,18 +430,23 @@ func (e *encoder) nodev(in reflect.Value) { } func (e *encoder) node(node *Node, tail string) { + // Zero nodes behave as nil. + if node.Kind == 0 && node.IsZero() { + e.nilv() + return + } + // If the tag was not explicitly requested, and dropping it won't change the // implicit tag of the value, don't include it in the presentation. var tag = node.Tag var stag = shortTag(tag) - var rtag string var forceQuoting bool if tag != "" && node.Style&TaggedStyle == 0 { if node.Kind == ScalarNode { if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 { tag = "" } else { - rtag, _ = resolve("", node.Value) + rtag, _ := resolve("", node.Value) if rtag == stag { tag = "" } else if stag == strTag { @@ -442,6 +455,7 @@ func (e *encoder) node(node *Node, tail string) { } } } else { + var rtag string switch node.Kind { case MappingNode: rtag = mapTag @@ -471,7 +485,7 @@ func (e *encoder) node(node *Node, tail string) { if node.Style&FlowStyle != 0 { style = yaml_FLOW_SEQUENCE_STYLE } - e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style)) + e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style)) e.event.head_comment = []byte(node.HeadComment) e.emit() for _, node := range node.Content { @@ -487,7 +501,7 @@ func (e *encoder) node(node *Node, tail string) { if node.Style&FlowStyle != 0 { style = yaml_FLOW_MAPPING_STYLE } - yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(tag), tag == "", style) + yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style) e.event.tail_comment = []byte(tail) e.event.head_comment = []byte(node.HeadComment) e.emit() @@ -528,11 +542,11 @@ func (e *encoder) node(node *Node, tail string) { case ScalarNode: value := node.Value if !utf8.ValidString(value) { - if tag == binaryTag { + if stag == binaryTag { failf("explicitly tagged !!binary data must be base64-encoded") } - if tag != "" { - failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + if stag != "" { + failf("cannot marshal invalid UTF-8 data as %s", stag) } // It can't be encoded directly as YAML so use a binary tag // and encode it as base64. @@ -557,5 +571,7 @@ func (e *encoder) node(node *Node, tail string) { } e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail)) + default: + failf("cannot encode node with unknown kind %d", node.Kind) } } diff --git a/vendor/gopkg.in/yaml.v3/parserc.go b/vendor/gopkg.in/yaml.v3/parserc.go index aea9050b8..ac66fccc0 100644 --- a/vendor/gopkg.in/yaml.v3/parserc.go +++ b/vendor/gopkg.in/yaml.v3/parserc.go @@ -648,6 +648,10 @@ func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, i implicit: implicit, style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } return true } if len(anchor) > 0 || len(tag) > 0 { @@ -694,25 +698,13 @@ func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_e if token.typ == yaml_BLOCK_ENTRY_TOKEN { mark := token.end_mark - prior_head := len(parser.head_comment) + prior_head_len := len(parser.head_comment) skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) token = peek_token(parser) if token == nil { return false } - if prior_head > 0 && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { - // [Go] It's a sequence under a sequence entry, so the former head comment - // is for the list itself, not the first list item under it. - parser.stem_comment = parser.head_comment[:prior_head] - if len(parser.head_comment) == prior_head { - parser.head_comment = nil - } else { - // Copy suffix to prevent very strange bugs if someone ever appends - // further bytes to the prefix in the stem_comment slice above. - parser.head_comment = append([]byte(nil), parser.head_comment[prior_head+1:]...) - } - - } if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) return yaml_parser_parse_node(parser, event, true, false) @@ -754,7 +746,9 @@ func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *y if token.typ == yaml_BLOCK_ENTRY_TOKEN { mark := token.end_mark + prior_head_len := len(parser.head_comment) skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) token = peek_token(parser) if token == nil { return false @@ -780,6 +774,32 @@ func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *y return true } +// Split stem comment from head comment. +// +// When a sequence or map is found under a sequence entry, the former head comment +// is assigned to the underlying sequence or map as a whole, not the individual +// sequence or map entry as would be expected otherwise. To handle this case the +// previous head comment is moved aside as the stem comment. +func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { + if stem_len == 0 { + return + } + + token := peek_token(parser) + if token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN { + return + } + + parser.stem_comment = parser.head_comment[:stem_len] + if len(parser.head_comment) == stem_len { + parser.head_comment = nil + } else { + // Copy suffix to prevent very strange bugs if someone ever appends + // further bytes to the prefix in the stem_comment slice above. + parser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...) + } +} + // Parse the productions: // block_mapping ::= BLOCK-MAPPING_START // ******************* diff --git a/vendor/gopkg.in/yaml.v3/scannerc.go b/vendor/gopkg.in/yaml.v3/scannerc.go index 57e954ca5..ca0070108 100644 --- a/vendor/gopkg.in/yaml.v3/scannerc.go +++ b/vendor/gopkg.in/yaml.v3/scannerc.go @@ -749,6 +749,11 @@ func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { if !ok { return } + if len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN { + // Sequence indicators alone have no line comments. It becomes + // a head comment for whatever follows. + return + } if !yaml_parser_scan_line_comment(parser, comment_mark) { ok = false return @@ -2255,10 +2260,9 @@ func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, l } } if parser.buffer[parser.buffer_pos] == '#' { - // TODO Test this and then re-enable it. - //if !yaml_parser_scan_line_comment(parser, start_mark) { - // return false - //} + if !yaml_parser_scan_line_comment(parser, start_mark) { + return false + } for !is_breakz(parser.buffer, parser.buffer_pos) { skip(parser) if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { @@ -2856,13 +2860,12 @@ func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t return false } skip_line(parser) - } else { - if parser.mark.index >= seen { - if len(text) == 0 { - start_mark = parser.mark - } - text = append(text, parser.buffer[parser.buffer_pos]) + } else if parser.mark.index >= seen { + if len(text) == 0 { + start_mark = parser.mark } + text = read(parser, text) + } else { skip(parser) } } @@ -2888,6 +2891,10 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo var token_mark = token.start_mark var start_mark yaml_mark_t + var next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } var recent_empty = false var first_empty = parser.newlines <= 1 @@ -2919,15 +2926,18 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo continue } c := parser.buffer[parser.buffer_pos+peek] - if is_breakz(parser.buffer, parser.buffer_pos+peek) || parser.flow_level > 0 && (c == ']' || c == '}') { + var close_flow = parser.flow_level > 0 && (c == ']' || c == '}') + if close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) { // Got line break or terminator. - if !recent_empty { - if first_empty && (start_mark.line == foot_line || start_mark.column-1 < parser.indent) { + if close_flow || !recent_empty { + if close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) { // This is the first empty line and there were no empty lines before, // so this initial part of the comment is a foot of the prior token // instead of being a head for the following one. Split it up. + // Alternatively, this might also be the last comment inside a flow + // scope, so it must be a footer. if len(text) > 0 { - if start_mark.column-1 < parser.indent { + if start_mark.column-1 < next_indent { // If dedented it's unrelated to the prior token. token_mark = start_mark } @@ -2958,7 +2968,7 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo continue } - if len(text) > 0 && column < parser.indent+1 && column != start_mark.column { + if len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) { // The comment at the different indentation is a foot of the // preceding data rather than a head of the upcoming one. parser.comments = append(parser.comments, yaml_comment_t{ @@ -2999,10 +3009,9 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo return false } skip_line(parser) + } else if parser.mark.index >= seen { + text = read(parser, text) } else { - if parser.mark.index >= seen { - text = append(text, parser.buffer[parser.buffer_pos]) - } skip(parser) } } @@ -3010,6 +3019,10 @@ func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) boo peek = 0 column = 0 line = parser.mark.line + next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } } if len(text) > 0 { diff --git a/vendor/gopkg.in/yaml.v3/yaml.go b/vendor/gopkg.in/yaml.v3/yaml.go index b5d35a50d..8cec6da48 100644 --- a/vendor/gopkg.in/yaml.v3/yaml.go +++ b/vendor/gopkg.in/yaml.v3/yaml.go @@ -89,7 +89,7 @@ func Unmarshal(in []byte, out interface{}) (err error) { return unmarshal(in, out, false) } -// A Decorder reads and decodes YAML values from an input stream. +// A Decoder reads and decodes YAML values from an input stream. type Decoder struct { parser *parser knownFields bool @@ -194,7 +194,7 @@ func unmarshal(in []byte, out interface{}, strict bool) (err error) { // Zero valued structs will be omitted if all their public // fields are zero, unless they implement an IsZero // method (see the IsZeroer interface type), in which -// case the field will be included if that method returns true. +// case the field will be excluded if IsZero returns true. // // flow Marshal using a flow style (useful for structs, // sequences and maps). @@ -252,6 +252,24 @@ func (e *Encoder) Encode(v interface{}) (err error) { return nil } +// Encode encodes value v and stores its representation in n. +// +// See the documentation for Marshal for details about the +// conversion of Go values into YAML. +func (n *Node) Encode(v interface{}) (err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(v)) + e.finish() + p := newParser(e.out) + p.textless = true + defer p.destroy() + doc := p.parse() + *n = *doc.Content[0] + return nil +} + // SetIndent changes the used indentation used when encoding. func (e *Encoder) SetIndent(spaces int) { if spaces < 0 { @@ -328,6 +346,12 @@ const ( // and maps, Node is an intermediate representation that allows detailed // control over the content being decoded or encoded. // +// It's worth noting that although Node offers access into details such as +// line numbers, colums, and comments, the content when re-encoded will not +// have its original textual representation preserved. An effort is made to +// render the data plesantly, and to preserve comments near the data they +// describe, though. +// // Values that make use of the Node type interact with the yaml package in the // same way any other type would do, by encoding and decoding yaml data // directly or indirectly into them. @@ -391,6 +415,13 @@ type Node struct { Column int } +// IsZero returns whether the node has all of its fields unset. +func (n *Node) IsZero() bool { + return n.Kind == 0 && n.Style == 0 && n.Tag == "" && n.Value == "" && n.Anchor == "" && n.Alias == nil && n.Content == nil && + n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0 +} + + // LongTag returns the long form of the tag that indicates the data type for // the node. If the Tag field isn't explicitly defined, one will be computed // based on the node properties. @@ -418,6 +449,11 @@ func (n *Node) ShortTag() string { case ScalarNode: tag, _ := resolve("", n.Value) return tag + case 0: + // Special case to make the zero value convenient. + if n.IsZero() { + return nullTag + } } return "" } diff --git a/vendor/gopkg.in/yaml.v3/yamlh.go b/vendor/gopkg.in/yaml.v3/yamlh.go index 2719cfbb0..7c6d00770 100644 --- a/vendor/gopkg.in/yaml.v3/yamlh.go +++ b/vendor/gopkg.in/yaml.v3/yamlh.go @@ -787,6 +787,8 @@ type yaml_emitter_t struct { foot_comment []byte tail_comment []byte + key_line_comment []byte + // Dumper stuff opened bool // If the stream was already opened? diff --git a/vendor/modules.txt b/vendor/modules.txt index 895ebd3de..f5a55521e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -198,6 +198,9 @@ github.com/cheggaaa/pb github.com/chzyer/readline # github.com/davecgh/go-spew v1.1.1 github.com/davecgh/go-spew/spew +# github.com/deepmap/oapi-codegen v1.5.1 +github.com/deepmap/oapi-codegen/pkg/runtime +github.com/deepmap/oapi-codegen/pkg/types # github.com/dgrijalva/jwt-go v3.2.0+incompatible ## explicit github.com/dgrijalva/jwt-go @@ -216,8 +219,15 @@ github.com/digitalocean/godo github.com/dimchansky/utfbom # github.com/dylanmei/iso8601 v0.1.0 github.com/dylanmei/iso8601 +# github.com/exoscale/egoscale v0.43.1 +github.com/exoscale/egoscale +github.com/exoscale/egoscale/v2 +github.com/exoscale/egoscale/v2/api +github.com/exoscale/egoscale/v2/internal/public-api +# github.com/exoscale/packer-plugin-exoscale v0.1.0 ## explicit - github.com/fatih/camelcase v1.0.0 +github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import +# github.com/fatih/camelcase v1.0.0 ## explicit github.com/fatih/camelcase # github.com/fatih/color v1.9.0 @@ -248,7 +258,7 @@ github.com/gobwas/glob/util/runes github.com/gobwas/glob/util/strings # github.com/gofrs/flock v0.7.3 github.com/gofrs/flock -# github.com/gofrs/uuid v3.2.0+incompatible +# github.com/gofrs/uuid v4.0.0+incompatible github.com/gofrs/uuid # github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 ## explicit @@ -480,6 +490,9 @@ github.com/hetznercloud/hcloud-go/hcloud/schema # github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 ## explicit github.com/hyperonecom/h1-client-go +# github.com/jarcoal/httpmock v1.0.8 +github.com/jarcoal/httpmock +github.com/jarcoal/httpmock/internal # github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961 ## explicit github.com/jdcloud-api/jdcloud-sdk-go/core @@ -532,7 +545,7 @@ github.com/masterzen/simplexml/dom ## explicit github.com/masterzen/winrm github.com/masterzen/winrm/soap -# github.com/mattn/go-colorable v0.1.6 +# github.com/mattn/go-colorable v0.1.8 github.com/mattn/go-colorable # github.com/mattn/go-isatty v0.0.12 github.com/mattn/go-isatty @@ -637,9 +650,12 @@ github.com/shirou/gopsutil/net github.com/shirou/gopsutil/process # github.com/sirupsen/logrus v1.4.2 github.com/sirupsen/logrus -# github.com/stretchr/testify v1.6.1 +# github.com/stretchr/objx v0.3.0 +github.com/stretchr/objx +# github.com/stretchr/testify v1.7.0 ## explicit github.com/stretchr/testify/assert +github.com/stretchr/testify/mock github.com/stretchr/testify/require # github.com/tencentcloud/tencentcloud-sdk-go v3.0.222+incompatible ## explicit @@ -815,7 +831,7 @@ go.opencensus.io/trace go.opencensus.io/trace/internal go.opencensus.io/trace/propagation go.opencensus.io/trace/tracestate -# golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 +# golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad ## explicit golang.org/x/crypto/bcrypt golang.org/x/crypto/blowfish @@ -851,7 +867,7 @@ golang.org/x/mobile/event/key golang.org/x/mod/module golang.org/x/mod/semver golang.org/x/mod/sumdb/dirhash -# golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 +# golang.org/x/net v0.0.0-20210119194325-5f4716e94777 ## explicit golang.org/x/net/context golang.org/x/net/context/ctxhttp @@ -880,7 +896,7 @@ golang.org/x/oauth2/jwt ## explicit golang.org/x/sync/errgroup golang.org/x/sync/semaphore -# golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 +# golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c ## explicit golang.org/x/sys/cpu golang.org/x/sys/internal/unsafeheader @@ -889,7 +905,7 @@ golang.org/x/sys/unix golang.org/x/sys/windows # golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 golang.org/x/term -# golang.org/x/text v0.3.3 +# golang.org/x/text v0.3.5 golang.org/x/text/encoding golang.org/x/text/encoding/charmap golang.org/x/text/encoding/htmlindex @@ -1064,5 +1080,5 @@ gopkg.in/square/go-jose.v2/json gopkg.in/square/go-jose.v2/jwt # gopkg.in/yaml.v2 v2.3.0 gopkg.in/yaml.v2 -# gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c +# gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b gopkg.in/yaml.v3 From beceace7b7f2040e5e11d639d24c8c397ee71c0a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 5 Mar 2021 11:27:30 -0500 Subject: [PATCH 086/212] Move to remote plugin docs for exoscale --- .../docs/post-processors/exoscale-import.mdx | 89 ------------------- .../community_post-processors.mdx | 2 - website/data/docs-nav-data.json | 4 - website/data/docs-remote-plugins.json | 5 ++ 4 files changed, 5 insertions(+), 95 deletions(-) delete mode 100644 website/content/docs/post-processors/exoscale-import.mdx diff --git a/website/content/docs/post-processors/exoscale-import.mdx b/website/content/docs/post-processors/exoscale-import.mdx deleted file mode 100644 index 7a47a6072..000000000 --- a/website/content/docs/post-processors/exoscale-import.mdx +++ /dev/null @@ -1,89 +0,0 @@ ---- -description: | - The Packer Exoscale Import post-processor takes an image artifact - from various builders and imports it to Exoscale. -page_title: Exoscale Import - Post-Processors -sidebar_title: Exoscale Import ---- - -# Exoscale Import Post-Processor - -Type: `exoscale-import` -Artifact BuilderId: `packer.post-processor.exoscale-import` - -The Packer Exoscale Import post-processor takes an image artifact from -the QEMU, Artifice, or File builders and imports it to Exoscale. - -## How Does it Work? - -The import process operates uploading a temporary copy of the image to -Exoscale's [Object Storage](https://www.exoscale.com/object-storage/) (SOS) -and then importing it as a Custom Template via the Exoscale API. The -temporary copy in SOS can be discarded after the import is complete. - -For more information about Exoscale Custom Templates, see the -[documentation](https://community.exoscale.com/documentation/compute/custom-templates/). - -## Configuration - -There are some configuration options available for the post-processor. - -Required: - -- `api_key` (string) - The API key used to communicate with Exoscale - services. This may also be set using the `EXOSCALE_API_KEY` environmental - variable. - -- `api_secret` (string) - The API secret used to communicate with Exoscale - services. This may also be set using the `EXOSCALE_API_SECRET` - environmental variable. - -- `image_bucket` (string) - The name of the bucket in which to upload the - template image to SOS. The bucket must exist when the post-processor is - run. - -- `template_name` (string) - The name to be used for registering the template. - -- `template_description` (string) - The description for the registered template. - -Optional: - -- `api_endpoint` (string) - The API endpoint used to communicate with the - Exoscale API. Defaults to `https://api.exoscale.com/compute`. - -- `sos_endpoint` (string) - The endpoint used to communicate with SOS. - Defaults to `https://sos-ch-gva-2.exo.io`. - -- `template_zone` (string) - The Exoscale [zone](https://www.exoscale.com/datacenters/) - in which to register the template. Defaults to `ch-gva-2`. - -- `template_username` (string) - An optional username to be used to log into - Compute instances using this template. - -- `template_disable_password` (boolean) - Whether the registered template - should disable Compute instance password reset. Defaults to `false`. - -- `template_disable_sshkey` (boolean) - Whether the registered template - should disable SSH key installation during Compute instance creation. - Defaults to `false`. - -- `skip_clean` (boolean) - Whether we should skip removing the image file - uploaded to SOS after the import process has completed. "true" means that - we should leave it in the bucket, "false" means deleting it. - Defaults to `false`. - -## Basic Example - -Here is a basic example: - -```json -{ - "type": "exoscale-import", - "api_key": "{{user `exoscale_api_key`}}", - "api_secret": "{{user `exoscale_api_secret`}}", - "image_bucket": "my-templates", - "template_name": "myapp", - "template_description": "myapp v1.2.3", - "template_username": "admin" -} -``` diff --git a/website/content/partials/post-processors/community_post-processors.mdx b/website/content/partials/post-processors/community_post-processors.mdx index c2a1f99fe..7d82a5512 100644 --- a/website/content/partials/post-processors/community_post-processors.mdx +++ b/website/content/partials/post-processors/community_post-processors.mdx @@ -1,4 +1,2 @@ ### Community Post-Processors -- [Exoscale Import](https://github.com/exoscale/packer-post-processor-exoscale-import) - - Import a builder artifact as a new Exoscale Compute instance template. diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 1f93cc5a8..f4a652250 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -1092,10 +1092,6 @@ "title": "DigitalOcean Import", "path": "post-processors/digitalocean-import" }, - { - "title": "Exoscale Import", - "path": "post-processors/exoscale-import" - }, { "title": "Google Compute Export", "path": "post-processors/googlecompute-export" diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index 8c247cfab..f70ece336 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -3,5 +3,10 @@ "title": "Docker", "path": "docker", "repo": "hashicorp/packer-plugin-docker" + }, + { + "title": "Exoscale", + "path": "exoscale", + "repo": "exoscale/packer-plugin-exoscale" } ] From 3c282de6c318a632a435bd2565e426e193ce3cb5 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 5 Mar 2021 15:27:03 -0500 Subject: [PATCH 087/212] Add maps for statically vendored components This change adds a new set of maps for builders, provisioners, and post-processors that store reference to components that were once part of Packer and are now vendored. This file acts as a single place for defining this vendored components, which are then merged into the main components maps to be used in Packer. Quick test to ensure the exoscale-import post-processor is still loaded ``` // Validate that exoscale-import is in the know post-procoessors list ~> packer.test build docker_centos_shell_provisioner.pkr.hcl Error: Unknown post-processor type "badlynamed-import" on docker_centos_shell_provisioner.pkr.hcl line 18: (source code not available) known post-processors: [ucloud-import digitalocean-import docker-push googlecompute-export manifest vsphere-template docker-tag vsphere checksum docker-import exoscale-import yandex-export compress googlecompute-import yandex-import vagrant-cloud alicloud-import amazon-import artifice shell-local docker-save vagrant] // Validate that exoscale-import get loaded ~> packer.test build docker_centos_shell_provisioner.pkr.hcl Error: Failed preparing post-processor-block "exoscale-import" "" on docker_centos_shell_provisioner.pkr.hcl line 18: (source code not available) 4 error(s) occurred: * api_key must be set * api_secret must be set * image_bucket must be set * template_zone must be set ==> Wait completed after 2 microseconds ==> Builds finished but no artifacts were created. ``` --- command/plugin.go | 4 ++++ command/vendored_plugins.go | 14 ++++++++------ main.go | 1 + 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/command/plugin.go b/command/plugin.go index edfeca617..b5c08b185 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -1,3 +1,7 @@ +// +// This file is automatically generated by scripts/generate-plugins.go -- Do not edit! +// + package command import ( diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 19762365a..4c4d6498a 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -6,6 +6,7 @@ import ( // Previously core-bundled components, split into their own plugins but // still vendored with Packer for now. Importing as library instead of // forcing use of packer init, until packer v1.8.0 + exoscaleimportpostprocessor "github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import" dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" @@ -26,14 +27,15 @@ var VendoredProvisioners = map[string]packersdk.Provisioner{} // VendoredPostProcessors are post-processor components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredPostProcessors = map[string]packersdk.PostProcessor{ - "docker-import": new(dockerimportpostprocessor.PostProcessor), - "docker-push": new(dockerpushpostprocessor.PostProcessor), - "docker-save": new(dockersavepostprocessor.PostProcessor), - "docker-tag": new(dockertagpostprocessor.PostProcessor), + "docker-import": new(dockerimportpostprocessor.PostProcessor), + "docker-push": new(dockerpushpostprocessor.PostProcessor), + "docker-save": new(dockersavepostprocessor.PostProcessor), + "docker-tag": new(dockertagpostprocessor.PostProcessor), + "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), } -// Upon init lets us load up any plugins that were vendored manually into the -// default set of plugins. +// Upon init lets load up any plugins that were vendored manually into the default +// set of plugins. func init() { for k, v := range VendoredBuilders { if _, ok := Builders[k]; ok { diff --git a/main.go b/main.go index f358c2f05..f7806b0bc 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,6 @@ // This is the main package for the `packer` application. +//go:generate go run ./scripts/generate-plugins.go package main import ( From 1e27138857fa34ca2cad1f5c88d6662fe553189a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 9 Mar 2021 13:06:11 -0500 Subject: [PATCH 088/212] plugins: Update Packer plugin documentation with details for remote plugin docs (#10718) * Add instructions for registering remote plugin documentation * Add documentation to plugins page about tiers and namespaces * Update tiers * Update website/content/docs/plugins/creation/index.mdx Co-authored-by: Megan Marsh * Add missing section for single-component install Co-authored-by: Megan Marsh --- .../plugin-tier-label/style.module.css | 9 +- .../content/docs/plugins/creation/index.mdx | 111 +++++++++++++++++- website/content/docs/plugins/index.mdx | 57 ++++++++- 3 files changed, 171 insertions(+), 6 deletions(-) diff --git a/website/components/plugin-tier-label/style.module.css b/website/components/plugin-tier-label/style.module.css index fe4e19381..4ebe4a397 100644 --- a/website/components/plugin-tier-label/style.module.css +++ b/website/components/plugin-tier-label/style.module.css @@ -10,7 +10,7 @@ to match Terraform Registry tier labels. background: var(--background-color); border-radius: 3px; display: inline-flex; - margin: 40px 8px 8px 0; + margin: 0; padding: 1px 8px 2px 8px; vertical-align: baseline; @@ -27,6 +27,12 @@ to match Terraform Registry tier labels. } } +/* add margin-top to separate from the adjacent +search bar present on docs pages */ +:global(.g-search) + .root { + margin-top: 40px; +} + .text { /* composes */ composes: g-type-body-small-strong from global; @@ -46,3 +52,4 @@ to match Terraform Registry tier labels. } } } + diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index ccb23b4c3..4c4e7c3f1 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -64,6 +64,7 @@ download and installation via `packer init`, whereas the single-component plugin is not. + ```go @@ -115,6 +116,7 @@ the following components available: * the `my-bar` provisioner + ```go @@ -217,12 +219,115 @@ for help with this step) - `PASSPHRASE` - The passphrase for your GPG private key. 5. Push a new valid version tag (e.g. `v1.2.3`) to test that the GitHub Actions releaser is working. The tag must be a valid -[Semantic Version](https://semver.org/) preceded with a `v`. Once the tag is -pushed, the github actions you just configured will automatically build release -binaries that Packer can download using `packer init`. For more details on how +[Semantic Version](https://semver.org/) preceded with a `v`. Once the tag is pushed, the github actions you just configured will automatically build release binaries that Packer can download using `packer init`. For more details on how to install a plugin using `packer init`, see the [init docs](/docs/commands/init). +### Registering Plugin Documentation + +~> Note: Registering a remote plugin's plugin documentation requires the use of [Packer's plugin docs configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). + +`packer init` allows users to require and install remote Packer plugins, those not bundled with Packer core, that have been published to GitHub automatically. +To help with the discovery of remote Packer plugins on GitHub, plugins maintainers can choose to register plugin documentation for each component directly on the [Packer Documentation Page](https://packer.io/docs). + +The registration process requires the creation of a `.docs-artifacts` directory and a sidebar navigation file `docs-nav.json` for each of the plugin +components in the remote plugin's repository. A working example can be seen at the [packer-plugin-docker repository](https://github.com/hashicorp/packer-plugin-docker/tree/main/.docs-artifacts). + +Once in place the remote plugin can be added to Packer's website builds by opening a pull-request against [hashicorp/packer](https://github.com/packer), which the needed configuration pulling in the remote documentation. + +Remote plugins will have their components listed under the respected types (i.e builders, provisioners, etc) using the names specified in the remote block configuration, and labeled with their respective [tier and namespace](/docs/plugins#tiers-and-namespaces). + +To register a plugin follow one of the following setups + + + + +Documentation for a plugin is maintained within the `docs` directory and served on GitHub. + +A GitHub workflow has been added to [packer-plugin-scaffolding](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs) that +can be used generate a documentation structure that can be consumed remotely by https://packer.io. See the full workflow at [generated-docs-artifacts.yml](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/.github/workflows/generate-docs-artifacts.yml) + +The GitHub workflow will automatically create the `.docs-artifacts` directory with the generated sidebar navigation file, and open a new pull-request against the default configured branch to be merged by the maintainer. + +By default the workflow is configured to trigger on the creation of tags beginning with `'v*` to ensure that documentation gets updated for each release. Updates to the plugin documentation will get pulled in at the time of the next Packer website deployment. + +After merging the generated files to the default branch for the plugin repository. + +Open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. +This is done by adding the block below for the respective plugin to the file [docs-remote-navigation.js](https://github.com/hashicorp/packer/blob/master/website/data/docs-remote-plugins.json). + +```json +{ + "title": "Docker", + "path": "docker", + "repo": "hashicorp/packer-plugin-docker", + } +``` + +#### Required fields + +`title`: The name of the plugin to be displayed in the sidebar - See [naming conventions](#naming-conventions) + +`path`: The path name for the documentation page, which is usually the lower case version of `title` (e.g https + +`repo`: The full name of the GitHub repository (i.e org/repo-name) + +#### Optional fields + +`branch`: The name of the default branch of the repository. Defaults to main. + +`artifactDir`: The location of the docs artifacts directory in the remote repository. Defaults to `.doc-artifacts`. + + + + + + +The documentation structure needed for registering a plugin's documentation can be generated manually, but it is +encouraged to use the action on release events so that documentation stays up to date. + +If your local development environment has a supported version (v10.0.0+) of [node](https://nodejs.org/en/) and a +supported version (>=5.2.0) [npm](https://www.npmjs.com/) installed, in the plugin root directory, you can run: + + +```shell-session +> npx -p @hashicorp/packer-docs-artifacts generate +``` + +The generated files will be placed under `PLUGIN_ROOT/.doc-artifacts`; this directory contains all the docs +and respective navigation information needed for including the plugin docs under [packer.io/docs/](https://packer.io/docs). + +After merging the generated files to the default branch for the plugin repository. + +Open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. +This is done by adding the block below for the respective plugin to the file [docs-remote-navigation.js](https://github.com/hashicorp/packer/blob/master/website/data/docs-remote-plugins.json). + +```json +{ + "title": "Docker", + "path": "docker", + "repo": "hashicorp/packer-plugin-docker", + } +``` + +#### Required fields + +`title`: The name of the plugin to be displayed in the sidebar - See [naming conventions](#naming-conventions) + +`path`: The path name for the documentation page, which is usually the lower case version of `title` (e.g https + +`repo`: The full name of the GitHub repository (i.e org/repo-name) + +#### Optional fields + +`branch`: The name of the default branch of the repository. Defaults to main. + +`artifactDir`: The location of the docs artifacts directory in the remote repository. Defaults to `.doc-artifacts`. + + + + + ### Plugin Development Tips and FAQs #### Naming Conventions diff --git a/website/content/docs/plugins/index.mdx b/website/content/docs/plugins/index.mdx index eba39a35d..07b10ab56 100644 --- a/website/content/docs/plugins/index.mdx +++ b/website/content/docs/plugins/index.mdx @@ -36,6 +36,16 @@ applications running. One of those applications is the core; the rest are plugins -- one plugin process is launched for each component used in a Packer build. +## Tiers and Namespaces + +Packer plugins are published and maintained by a variety of sources, including HashiCorp, and the Packer community. The Packer website uses tiers and badges to denote the source of a provider. Additionally, namespaces are used to help users identify the organization or publisher responsible for the integration, as shown in the table below. + + +| Tier | Description | Namespace | +| ---------| ------------| ----------| +| |Official plugins are owned and maintained by HashiCorp. | hashicorp | +| | Community providers are published by individual maintainers, groups of maintainers, or other members of the Packer community.| Third-party organization or maintainer's individual account | + ## Installing Plugins Currently, you do not need to install plugins for builder, provisioner, or @@ -203,7 +213,7 @@ will avoid conflicting with other plugins for other tools, like Terraform. The easiest way to manually install a plugin is to name it correctly, then place it in the proper directory. To name a plugin correctly, make sure the binary is named `packer-plugin-NAME`. For example, `packer-plugin-amazon` for a "plugin" -binary named "amazon". This binary will make one or more plugins available to +binary named "amazon". This binary will make one or more components available to use. Valid types for plugins are down this page. Once the plugin is named properly, Packer automatically discovers plugins in @@ -231,7 +241,7 @@ later, it will take precedence over one found earlier. The valid types for plugins are: -- `plugin` - A plugin binary that can contain one or more of each Packer plugin +- `plugin` - A plugin binary that can contain one or more of each Packer component type. - `builder` - Plugins responsible for building images for a specific @@ -246,5 +256,48 @@ The valid types for plugins are: +The easiest way to manually install a plugin is to name it correctly, then place +it in the proper directory. To name a plugin correctly, make sure the binary is +named `packer-COMPONENT-NAME`. For example, `packer-provisioner-comment` for a "plugin" +binary named "comment". This binary will make a single provisioner named `comment` available to +use. Valid types for plugins are down this page. + +Once the plugin is named properly, Packer automatically discovers plugins in +the following directories in the given order. If a conflicting plugin is found +later, it will take precedence over one found earlier. + +1. The directory where `packer` is, or the executable directory. + +2. The `$HOME/.packer.d/plugins` directory, if `$HOME` is defined (unix) + +3. The `%APPDATA%/packer.d/plugins` if `%APPDATA%` is defined (windows) + +4. The `%USERPROFILE%/packer.d/plugins` if `%USERPROFILE%` is defined + (windows) + +5. The current working directory. + +6. The directory defined in the env var `PACKER_PLUGIN_PATH`. There can be more + than one directory defined; for example, `~/custom-dir-1:~/custom-dir-2`. + Separate directories in the PATH string using a colon (`:`) on posix systems and + a semicolon (`;`) on windows systems. The above example path would be able to + find a provisioner named `packer-provisioner-foo` in either + `~/custom-dir-1/packer-provisioner-foo` or + `~/custom-dir-2/packer-provisioner-foo`. + +The valid types for plugins are: + +- `plugin` - A plugin binary that can contain one or more of each Packer component + type. + +- `builder` - Plugins responsible for building images for a specific + platform. + +- `post-processor` - A post-processor responsible for taking an artifact from + a builder and turning it into something else. + +- `provisioner` - A provisioner to install software on images created by a + builder. + From 8bb3df71219deeb93fb69ac48902eaf977aba7e2 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 9 Mar 2021 16:40:49 -0800 Subject: [PATCH 089/212] modify logging to make overrides clearer in face of vagrant always streaming to stdout. Add tests for config override. Make sure that user overrides of ssh_host and ssh_port are respected. --- builder/vagrant/step_ssh_config.go | 20 ++++--- builder/vagrant/step_ssh_config_test.go | 78 +++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 7 deletions(-) diff --git a/builder/vagrant/step_ssh_config.go b/builder/vagrant/step_ssh_config.go index 3d9b9ed94..072ac4717 100644 --- a/builder/vagrant/step_ssh_config.go +++ b/builder/vagrant/step_ssh_config.go @@ -41,17 +41,23 @@ func (s *StepSSHConfig) Run(ctx context.Context, state multistep.StateBag) multi return multistep.ActionHalt } - config.Comm.SSHHost = sshConfig.Hostname - port, err := strconv.Atoi(sshConfig.Port) - if err != nil { - state.Put("error", err) - return multistep.ActionHalt + if config.Comm.SSHHost == "" { + config.Comm.SSHHost = sshConfig.Hostname + } + if config.Comm.SSHPort == 0 { + port, err := strconv.Atoi(sshConfig.Port) + if err != nil { + state.Put("error", err) + return multistep.ActionHalt + } + config.Comm.SSHPort = port } - config.Comm.SSHPort = port if config.Comm.SSHUsername != "" { // If user has set the username within the communicator, use the - // auth provided there. + // username, password, and/or keyfile auth provided there. + log.Printf("Overriding SSH config from Vagrant with the username, " + + "password, and private key information provided to the Packer template.") return multistep.ActionContinue } log.Printf("identity file is %s", sshConfig.IdentityFile) diff --git a/builder/vagrant/step_ssh_config_test.go b/builder/vagrant/step_ssh_config_test.go index 390287a1c..e1b9e7518 100644 --- a/builder/vagrant/step_ssh_config_test.go +++ b/builder/vagrant/step_ssh_config_test.go @@ -4,6 +4,7 @@ import ( "context" "testing" + "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" ) @@ -15,6 +16,83 @@ func TestStepSSHConfig_Impl(t *testing.T) { } } +func TestPrepStepSSHConfig_sshOverrides(t *testing.T) { + type testcase struct { + name string + inputSSHConfig communicator.SSH + expectedSSHConfig communicator.SSH + } + tcs := []testcase{ + { + // defaults to overriding with the ssh config from vagrant\ + name: "default", + inputSSHConfig: communicator.SSH{}, + expectedSSHConfig: communicator.SSH{ + SSHHost: "127.0.0.1", + SSHPort: 2222, + SSHUsername: "vagrant", + SSHPassword: "", + }, + }, + { + // respects SSH host and port overrides independent of credential + // overrides + name: "host_override", + inputSSHConfig: communicator.SSH{ + SSHHost: "123.45.67.8", + SSHPort: 1234, + }, + expectedSSHConfig: communicator.SSH{ + SSHHost: "123.45.67.8", + SSHPort: 1234, + SSHUsername: "vagrant", + SSHPassword: "", + }, + }, + { + // respects credential overrides + name: "credential_override", + inputSSHConfig: communicator.SSH{ + SSHUsername: "megan", + SSHPassword: "SoSecure", + }, + expectedSSHConfig: communicator.SSH{ + SSHHost: "127.0.0.1", + SSHPort: 2222, + SSHUsername: "megan", + SSHPassword: "SoSecure", + }, + }, + } + for _, tc := range tcs { + driver := &MockVagrantDriver{} + config := &Config{ + Comm: communicator.Config{ + SSH: tc.inputSSHConfig, + }, + } + state := new(multistep.BasicStateBag) + state.Put("driver", driver) + state.Put("config", config) + + step := StepSSHConfig{} + _ = step.Run(context.Background(), state) + + if config.Comm.SSHHost != tc.expectedSSHConfig.SSHHost { + t.Fatalf("unexpected sshconfig host: name: %s, recieved %s", tc.name, config.Comm.SSHHost) + } + if config.Comm.SSHPort != tc.expectedSSHConfig.SSHPort { + t.Fatalf("unexpected sshconfig port: name: %s, recieved %d", tc.name, config.Comm.SSHPort) + } + if config.Comm.SSHUsername != tc.expectedSSHConfig.SSHUsername { + t.Fatalf("unexpected sshconfig SSHUsername: name: %s, recieved %s", tc.name, config.Comm.SSHUsername) + } + if config.Comm.SSHPassword != tc.expectedSSHConfig.SSHPassword { + t.Fatalf("unexpected sshconfig SSHUsername: name: %s, recieved %s", tc.name, config.Comm.SSHPassword) + } + } +} + func TestPrepStepSSHConfig_GlobalID(t *testing.T) { driver := &MockVagrantDriver{} config := &Config{} From 35604a98a765746e1a92147cde085382d1975e3f Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 10 Mar 2021 04:24:00 -0800 Subject: [PATCH 090/212] actually use the partials created in code generation inside the digitalocean docs page (#10742) --- .../content/docs/builders/digitalocean.mdx | 80 +++---------------- 1 file changed, 13 insertions(+), 67 deletions(-) diff --git a/website/content/docs/builders/digitalocean.mdx b/website/content/docs/builders/digitalocean.mdx index 148b3e6c6..9369cbf6a 100644 --- a/website/content/docs/builders/digitalocean.mdx +++ b/website/content/docs/builders/digitalocean.mdx @@ -34,78 +34,13 @@ There are many configuration options available for the builder. They are segmented below into two categories: required and optional parameters. Within each category, the available configuration keys are alphabetized. -### Communicator Config - -In addition to the builder options, a -[communicator](/docs/templates/legacy_json_templates/communicator) can be configured for this builder. - -@include 'packer-plugin-sdk/communicator/Config-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' - ### Required: -- `api_token` (string) - The client TOKEN to use to access your account. It - can also be specified via environment variable `DIGITALOCEAN_API_TOKEN`, if - set. - -- `image` (string) - The name (or slug) of the base image to use. This is the - image that will be used to launch a new droplet and provision it. See - [here](https://developers.digitalocean.com/documentation/v2/#list-all-images) - for details on how to get a list of the accepted image names/slugs. - -- `region` (string) - The name (or slug) of the region to launch the droplet - in. Consequently, this is the region where the snapshot will be available. - See [here](https://developers.digitalocean.com/documentation/v2/#list-all-regions) - for the accepted region names/slugs. - -- `size` (string) - The name (or slug) of the droplet size to use. See - [here](https://developers.digitalocean.com/documentation/v2/#list-all-sizes) - for the accepted size names/slugs. +@include 'builder/digitalocean/Config-required.mdx' ### Optional: -- `api_url` (string) - Non standard api endpoint URL. Set this if you are - using a DigitalOcean API compatible service. It can also be specified via - environment variable `DIGITALOCEAN_API_URL`. - -- `droplet_name` (string) - The name assigned to the droplet. DigitalOcean - sets the hostname of the machine to this value. - -- `private_networking` (boolean) - Set to `true` to enable private networking - for the droplet being created. This defaults to `false`, or not enabled. - -- `monitoring` (boolean) - Set to `true` to enable monitoring for the droplet - being created. This defaults to `false`, or not enabled. - -- `ipv6` (boolean) - Set to `true` to enable ipv6 for the droplet being - created. This defaults to `false`, or not enabled. - -- `snapshot_name` (string) - The name of the resulting snapshot that will - appear in your account. Defaults to `packer-{{timestamp}}` (see - [configuration templates](/docs/templates/legacy_json_templates/engine) for more info). - -- `snapshot_regions` (array of strings) - The regions of the resulting - snapshot that will appear in your account. - -- `state_timeout` (string) - The time to wait, as a duration string, for a - droplet to enter a desired state (such as "active") before timing out. The - default state timeout is "6m". - -- `snapshot_timeout` (string) - The time to wait, as a duration string, for a - snapshot action to complete (e.g snapshot creation) before timing out. The - default snapshot timeout is "60m". - -- `user_data` (string) - User data to launch with the Droplet. Packer will - not automatically wait for a user script to finish before shutting down the - instance this must be handled in a provisioner. - -- `user_data_file` (string) - Path to a file that will be used for the user - data when launching the Droplet. - -- `tags` (list) - Tags to apply to the droplet when it is created +@include 'builder/digitalocean/Config-not-required.mdx' ## Basic Example @@ -122,3 +57,14 @@ access tokens: "ssh_username": "root" } ``` + +### Communicator Config + +In addition to the builder options, a +[communicator](/docs/templates/legacy_json_templates/communicator) can be configured for this builder. + +@include 'packer-plugin-sdk/communicator/Config-not-required.mdx' + +@include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' + +@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' \ No newline at end of file From e8b3a0e3bf0b080c1aa5f254a4ca4b6ee75f8e5d Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 10 Mar 2021 15:11:53 -0800 Subject: [PATCH 091/212] make virtualbox, hyperv, openstack, and parallels builders respect winrm_host by correctly passing communicator config Host() func to commhost instead of just SSHHost --- builder/hyperv/iso/builder.go | 2 +- builder/hyperv/vmcx/builder.go | 2 +- builder/openstack/builder.go | 2 +- builder/parallels/iso/builder.go | 2 +- builder/parallels/pvm/builder.go | 2 +- builder/qemu/comm_config.go | 1 + builder/virtualbox/common/comm_config.go | 3 ++- builder/virtualbox/iso/builder.go | 2 +- builder/virtualbox/ovf/builder.go | 2 +- builder/virtualbox/vm/builder.go | 2 +- 10 files changed, 11 insertions(+), 9 deletions(-) diff --git a/builder/hyperv/iso/builder.go b/builder/hyperv/iso/builder.go index dc2615344..d99de8c15 100644 --- a/builder/hyperv/iso/builder.go +++ b/builder/hyperv/iso/builder.go @@ -294,7 +294,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) // configure the communicator ssh, winrm &communicator.StepConnect{ Config: &b.config.SSHConfig.Comm, - Host: hypervcommon.CommHost(b.config.SSHConfig.Comm.SSHHost), + Host: hypervcommon.CommHost(b.config.SSHConfig.Comm.Host()), SSHConfig: b.config.SSHConfig.Comm.SSHConfigFunc(), }, diff --git a/builder/hyperv/vmcx/builder.go b/builder/hyperv/vmcx/builder.go index 48917a251..319bff68b 100644 --- a/builder/hyperv/vmcx/builder.go +++ b/builder/hyperv/vmcx/builder.go @@ -334,7 +334,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) // configure the communicator ssh, winrm &communicator.StepConnect{ Config: &b.config.SSHConfig.Comm, - Host: hypervcommon.CommHost(b.config.SSHConfig.Comm.SSHHost), + Host: hypervcommon.CommHost(b.config.SSHConfig.Comm.Host()), SSHConfig: b.config.SSHConfig.Comm.SSHConfigFunc(), }, diff --git a/builder/openstack/builder.go b/builder/openstack/builder.go index 67fb94829..34ff22b0d 100644 --- a/builder/openstack/builder.go +++ b/builder/openstack/builder.go @@ -151,7 +151,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) &communicator.StepConnect{ Config: &b.config.RunConfig.Comm, Host: CommHost( - b.config.RunConfig.Comm.SSHHost, + b.config.RunConfig.Comm.Host(), computeClient, b.config.SSHInterface, b.config.SSHIPVersion), diff --git a/builder/parallels/iso/builder.go b/builder/parallels/iso/builder.go index 65e12f330..356ccec76 100644 --- a/builder/parallels/iso/builder.go +++ b/builder/parallels/iso/builder.go @@ -238,7 +238,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &communicator.StepConnect{ Config: &b.config.SSHConfig.Comm, - Host: parallelscommon.CommHost(b.config.SSHConfig.Comm.SSHHost), + Host: parallelscommon.CommHost(b.config.SSHConfig.Comm.Host()), SSHConfig: b.config.SSHConfig.Comm.SSHConfigFunc(), }, ¶llelscommon.StepUploadVersion{ diff --git a/builder/parallels/pvm/builder.go b/builder/parallels/pvm/builder.go index 283161201..25c042020 100644 --- a/builder/parallels/pvm/builder.go +++ b/builder/parallels/pvm/builder.go @@ -87,7 +87,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &communicator.StepConnect{ Config: &b.config.SSHConfig.Comm, - Host: parallelscommon.CommHost(b.config.SSHConfig.Comm.SSHHost), + Host: parallelscommon.CommHost(b.config.SSHConfig.Comm.Host()), SSHConfig: b.config.SSHConfig.Comm.SSHConfigFunc(), }, ¶llelscommon.StepUploadVersion{ diff --git a/builder/qemu/comm_config.go b/builder/qemu/comm_config.go index 500bba26f..0e90a0a9a 100644 --- a/builder/qemu/comm_config.go +++ b/builder/qemu/comm_config.go @@ -48,6 +48,7 @@ func (c *CommConfig) Prepare(ctx *interpolate.Context) (warnings []string, errs if c.Comm.SSHHost == "" && c.SkipNatMapping { c.Comm.SSHHost = "127.0.0.1" + c.Comm.WinRMHost = "127.0.0.1" } if c.HostPortMin == 0 { diff --git a/builder/virtualbox/common/comm_config.go b/builder/virtualbox/common/comm_config.go index 44e428bb2..d635b17f2 100644 --- a/builder/virtualbox/common/comm_config.go +++ b/builder/virtualbox/common/comm_config.go @@ -50,8 +50,9 @@ func (c *CommConfig) Prepare(ctx *interpolate.Context) []error { c.SkipNatMapping = c.SSHSkipNatMapping } - if c.Comm.SSHHost == "" { + if c.Comm.Host() == "" { c.Comm.SSHHost = "127.0.0.1" + c.Comm.WinRMHost = "127.0.0.1" } if c.HostPortMin == 0 { diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 0643370de..874033721 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -449,7 +449,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &communicator.StepConnect{ Config: &b.config.CommConfig.Comm, - Host: vboxcommon.CommHost(b.config.CommConfig.Comm.SSHHost), + Host: vboxcommon.CommHost(b.config.CommConfig.Comm.Host()), SSHConfig: b.config.CommConfig.Comm.SSHConfigFunc(), SSHPort: vboxcommon.CommPort, WinRMPort: vboxcommon.CommPort, diff --git a/builder/virtualbox/ovf/builder.go b/builder/virtualbox/ovf/builder.go index b6bffb100..fb0a53965 100644 --- a/builder/virtualbox/ovf/builder.go +++ b/builder/virtualbox/ovf/builder.go @@ -130,7 +130,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &communicator.StepConnect{ Config: &b.config.CommConfig.Comm, - Host: vboxcommon.CommHost(b.config.CommConfig.Comm.SSHHost), + Host: vboxcommon.CommHost(b.config.CommConfig.Comm.Host()), SSHConfig: b.config.CommConfig.Comm.SSHConfigFunc(), SSHPort: vboxcommon.CommPort, WinRMPort: vboxcommon.CommPort, diff --git a/builder/virtualbox/vm/builder.go b/builder/virtualbox/vm/builder.go index cc93ae3ed..b762e65f7 100644 --- a/builder/virtualbox/vm/builder.go +++ b/builder/virtualbox/vm/builder.go @@ -114,7 +114,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &communicator.StepConnect{ Config: &b.config.CommConfig.Comm, - Host: vboxcommon.CommHost(b.config.CommConfig.Comm.SSHHost), + Host: vboxcommon.CommHost(b.config.CommConfig.Comm.Host()), SSHConfig: b.config.CommConfig.Comm.SSHConfigFunc(), SSHPort: vboxcommon.CommPort, WinRMPort: vboxcommon.CommPort, From b2d692c33d216be683518de4711626abacf24516 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Thu, 11 Mar 2021 11:48:23 +0100 Subject: [PATCH 092/212] Give a list of working projects to checkout --- website/content/docs/plugins/creation/index.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 4c4e7c3f1..7fd9fc8b3 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -330,6 +330,16 @@ This is done by adding the block below for the respective plugin to the file [do ### Plugin Development Tips and FAQs +#### Working Examples + +Here's a non exaustive list of Packer plugins that you can checkout: + +* [github.com/hashicorp/packer-plugin-docker](https://github.com/hashicorp/packer-plugin-docker) +* [github.com/exoscale/packer-plugin-exoscale](https://github.com/exoscale/packer-plugin-exoscale) +* [github.com/sylviamoss/packer-plugin-comment](https://github.com/sylviamoss/packer-plugin-comment) + +Looking at their code will give you good examples. + #### Naming Conventions It is standard practice to name the resulting plugin application in the format From 1a5678dd86a4b7e2cdecadcae1d070b5f48c7122 Mon Sep 17 00:00:00 2001 From: Thomas Dreibholz Date: Thu, 11 Mar 2021 16:09:30 +0100 Subject: [PATCH 093/212] Added VirtualBox ISO builder option to create additional disks (#10674) --- builder/virtualbox/common/step_attach_isos.go | 49 ++++++----- builder/virtualbox/iso/builder.go | 6 ++ builder/virtualbox/iso/builder.hcl2spec.go | 2 + builder/virtualbox/iso/step_create_disk.go | 83 ++++++++++++------- .../virtualbox/iso/Config-not-required.mdx | 6 ++ 5 files changed, 92 insertions(+), 54 deletions(-) diff --git a/builder/virtualbox/common/step_attach_isos.go b/builder/virtualbox/common/step_attach_isos.go index 897cdbd06..84241cb7b 100644 --- a/builder/virtualbox/common/step_attach_isos.go +++ b/builder/virtualbox/common/step_attach_isos.go @@ -8,6 +8,8 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + + "strconv" ) // This step attaches the boot ISO, cd_files iso, and guest additions to the @@ -69,49 +71,50 @@ func (s *StepAttachISOs) Run(ctx context.Context, state multistep.StateBag) mult // We have three different potential isos we can attach, so let's // assign each one its own spot so they don't conflict. - var controllerName, device, port string + var controllerName string + var device, port int switch diskCategory { case "boot_iso": // figure out controller path controllerName = "IDE Controller" - port = "0" - device = "1" + port = 0 + device = 1 if s.ISOInterface == "sata" { controllerName = "SATA Controller" - port = "1" - device = "0" + port = 15 + device = 0 } else if s.ISOInterface == "virtio" { controllerName = "VirtIO Controller" - port = "1" - device = "0" + port = 15 + device = 0 } ui.Message("Mounting boot ISO...") case "guest_additions": controllerName = "IDE Controller" - port = "1" - device = "0" + port = 1 + device = 0 if s.GuestAdditionsInterface == "sata" { controllerName = "SATA Controller" - port = "2" - device = "0" + port = 14 + device = 0 } else if s.GuestAdditionsInterface == "virtio" { controllerName = "VirtIO Controller" - port = "2" - device = "0" + port = 14 + device = 0 } ui.Message("Mounting guest additions ISO...") case "cd_files": controllerName = "IDE Controller" - port = "1" - device = "1" + port = 1 + device = 1 if s.ISOInterface == "sata" { controllerName = "SATA Controller" - port = "3" - device = "0" + port = 13 + device = 0 } else if s.ISOInterface == "virtio" { controllerName = "VirtIO Controller" - port = "3" - device = "0" + port = 13 + device = 0 } ui.Message("Mounting cd_files ISO...") } @@ -120,8 +123,8 @@ func (s *StepAttachISOs) Run(ctx context.Context, state multistep.StateBag) mult command := []string{ "storageattach", vmName, "--storagectl", controllerName, - "--port", port, - "--device", device, + "--port", strconv.Itoa(port), + "--device", strconv.Itoa(device), "--type", "dvddrive", "--medium", isoPath, } @@ -137,8 +140,8 @@ func (s *StepAttachISOs) Run(ctx context.Context, state multistep.StateBag) mult unmountCommand := []string{ "storageattach", vmName, "--storagectl", controllerName, - "--port", port, - "--device", device, + "--port", strconv.Itoa(port), + "--device", strconv.Itoa(device), "--type", "dvddrive", "--medium", "none", } diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 0643370de..cb6660cd2 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -149,6 +149,12 @@ type Config struct { // When set to sata, the drive is attached to an AHCI SATA controller. // When set to virtio, the drive is attached to a VirtIO controller. ISOInterface string `mapstructure:"iso_interface" required:"false"` + // Additional disks to create. Uses `vm_name` as the disk name template and + // appends `-#` where `#` is the position in the array. `#` starts at 1 since 0 + // is the default disk. Each value represents the disk image size in MiB. + // Each additional disk uses the same disk parameters as the default disk. + // Unset by default. + AdditionalDiskSize []uint `mapstructure:"disk_additional_size" required:"false"` // Set this to true if you would like to keep the VM registered with // virtualbox. Defaults to false. KeepRegistered bool `mapstructure:"keep_registered" required:"false"` diff --git a/builder/virtualbox/iso/builder.hcl2spec.go b/builder/virtualbox/iso/builder.hcl2spec.go index f453a721d..ca02f022e 100644 --- a/builder/virtualbox/iso/builder.hcl2spec.go +++ b/builder/virtualbox/iso/builder.hcl2spec.go @@ -135,6 +135,7 @@ type FlatConfig struct { NVMePortCount *int `mapstructure:"nvme_port_count" required:"false" cty:"nvme_port_count" hcl:"nvme_port_count"` HardDriveNonrotational *bool `mapstructure:"hard_drive_nonrotational" required:"false" cty:"hard_drive_nonrotational" hcl:"hard_drive_nonrotational"` ISOInterface *string `mapstructure:"iso_interface" required:"false" cty:"iso_interface" hcl:"iso_interface"` + AdditionalDiskSize []uint `mapstructure:"disk_additional_size" required:"false" cty:"disk_additional_size" hcl:"disk_additional_size"` KeepRegistered *bool `mapstructure:"keep_registered" required:"false" cty:"keep_registered" hcl:"keep_registered"` SkipExport *bool `mapstructure:"skip_export" required:"false" cty:"skip_export" hcl:"skip_export"` VMName *string `mapstructure:"vm_name" required:"false" cty:"vm_name" hcl:"vm_name"` @@ -277,6 +278,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "nvme_port_count": &hcldec.AttrSpec{Name: "nvme_port_count", Type: cty.Number, Required: false}, "hard_drive_nonrotational": &hcldec.AttrSpec{Name: "hard_drive_nonrotational", Type: cty.Bool, Required: false}, "iso_interface": &hcldec.AttrSpec{Name: "iso_interface", Type: cty.String, Required: false}, + "disk_additional_size": &hcldec.AttrSpec{Name: "disk_additional_size", Type: cty.List(cty.Number), Required: false}, "keep_registered": &hcldec.AttrSpec{Name: "keep_registered", Type: cty.Bool, Required: false}, "skip_export": &hcldec.AttrSpec{Name: "skip_export", Type: cty.Bool, Required: false}, "vm_name": &hcldec.AttrSpec{Name: "vm_name", Type: cty.String, Required: false}, diff --git a/builder/virtualbox/iso/step_create_disk.go b/builder/virtualbox/iso/step_create_disk.go index b23418d5f..fe2582c65 100644 --- a/builder/virtualbox/iso/step_create_disk.go +++ b/builder/virtualbox/iso/step_create_disk.go @@ -22,31 +22,50 @@ func (s *stepCreateDisk) Run(ctx context.Context, state multistep.StateBag) mult driver := state.Get("driver").(vboxcommon.Driver) ui := state.Get("ui").(packersdk.Ui) vmName := state.Get("vmName").(string) - format := "VDI" - path := filepath.Join(config.OutputDir, fmt.Sprintf("%s.%s", config.VMName, strings.ToLower(format))) - command := []string{ - "createhd", - "--filename", path, - "--size", strconv.FormatUint(uint64(config.DiskSize), 10), - "--format", format, - "--variant", "Standard", + // The main disk and additional disks + diskFullPaths := []string{} + diskSizes := []uint{config.DiskSize} + if len(config.AdditionalDiskSize) == 0 { + // If there are no additional disks, use disk naming as before + diskFullPaths = append(diskFullPaths, filepath.Join(config.OutputDir, fmt.Sprintf("%s.%s", config.VMName, strings.ToLower(format)))) + } else { + // If there are additional disks, use consistent naming with numbers + diskFullPaths = append(diskFullPaths, filepath.Join(config.OutputDir, fmt.Sprintf("%s-0.%s", config.VMName, strings.ToLower(format)))) + + for i, diskSize := range config.AdditionalDiskSize { + path := filepath.Join(config.OutputDir, fmt.Sprintf("%s-%d.%s", config.VMName, i+1, strings.ToLower(format))) + diskFullPaths = append(diskFullPaths, path) + diskSizes = append(diskSizes, diskSize) + } } - ui.Say("Creating hard drive...") - err := driver.VBoxManage(command...) - if err != nil { - err := fmt.Errorf("Error creating hard drive: %s", err) - state.Put("error", err) - ui.Error(err.Error()) - return multistep.ActionHalt + // Create all required disks + for i := range diskFullPaths { + ui.Say(fmt.Sprintf("Creating hard drive %s with size %d MiB...", diskFullPaths[i], diskSizes[i])) + + command := []string{ + "createhd", + "--filename", diskFullPaths[i], + "--size", strconv.FormatUint(uint64(diskSizes[i]), 10), + "--format", format, + "--variant", "Standard", + } + + err := driver.VBoxManage(command...) + if err != nil { + err := fmt.Errorf("Error creating hard drive: %s", err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } } // Add the IDE controller so we can later attach the disk. // When the hard disk controller is not IDE, this device is still used // by VirtualBox to deliver the guest extensions. - err = driver.VBoxManage("storagectl", vmName, "--name", "IDE Controller", "--add", "ide") + err := driver.VBoxManage("storagectl", vmName, "--name", "IDE Controller", "--add", "ide") if err != nil { err := fmt.Errorf("Error creating disk controller: %s", err) state.Put("error", err) @@ -116,21 +135,23 @@ func (s *stepCreateDisk) Run(ctx context.Context, state multistep.StateBag) mult discard = "on" } - command = []string{ - "storageattach", vmName, - "--storagectl", controllerName, - "--port", "0", - "--device", "0", - "--type", "hdd", - "--medium", path, - "--nonrotational", nonrotational, - "--discard", discard, - } - if err := driver.VBoxManage(command...); err != nil { - err := fmt.Errorf("Error attaching hard drive: %s", err) - state.Put("error", err) - ui.Error(err.Error()) - return multistep.ActionHalt + for i := range diskFullPaths { + command := []string{ + "storageattach", vmName, + "--storagectl", controllerName, + "--port", strconv.FormatUint(uint64(i), 10), + "--device", "0", + "--type", "hdd", + "--medium", diskFullPaths[i], + "--nonrotational", nonrotational, + "--discard", discard, + } + if err := driver.VBoxManage(command...); err != nil { + err := fmt.Errorf("Error attaching hard drive: %s", err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } } return multistep.ActionContinue diff --git a/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx b/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx index 95520e65d..e928a4e29 100644 --- a/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx +++ b/website/content/partials/builder/virtualbox/iso/Config-not-required.mdx @@ -103,6 +103,12 @@ When set to sata, the drive is attached to an AHCI SATA controller. When set to virtio, the drive is attached to a VirtIO controller. +- `disk_additional_size` ([]uint) - Additional disks to create. Uses `vm_name` as the disk name template and + appends `-#` where `#` is the position in the array. `#` starts at 1 since 0 + is the default disk. Each value represents the disk image size in MiB. + Each additional disk uses the same disk parameters as the default disk. + Unset by default. + - `keep_registered` (bool) - Set this to true if you would like to keep the VM registered with virtualbox. Defaults to false. From 6c8e997d193efcb369566fcb1f584ac5efdd190b Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 11 Mar 2021 16:42:55 -0800 Subject: [PATCH 094/212] Update website/content/docs/plugins/creation/index.mdx --- website/content/docs/plugins/creation/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 7fd9fc8b3..0ba1e9c2c 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -332,7 +332,7 @@ This is done by adding the block below for the respective plugin to the file [do #### Working Examples -Here's a non exaustive list of Packer plugins that you can checkout: +Here's a non exaustive list of Packer plugins that you can check out: * [github.com/hashicorp/packer-plugin-docker](https://github.com/hashicorp/packer-plugin-docker) * [github.com/exoscale/packer-plugin-exoscale](https://github.com/exoscale/packer-plugin-exoscale) From f1017a19d3014a27e4403611e456b7a625c9684d Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 11 Mar 2021 16:58:02 -0800 Subject: [PATCH 095/212] update changelog --- CHANGELOG.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8261edd60..bddbf4eeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,30 @@ ## 1.7.1 (Upcoming) -### FEATURES ### IMPROVEMENTS +* builder/amazon: allow creation of ebs snapshots wihtout volumes. [GH-9591] +* builder/scaleway: add support for timeout in shutdown step. [GH-10503] +* builder/virtualbox: Add template options for chipset, firmware, nic, graphics + controller, and audio controller. [GH-10671] +* builder/virtualbox: Support for "virtio" storage and ISO drive. [GH-10632] +* builder/vmware: Added "attach_snapshot" parameter to vmware vmx builder. + [GH-10651] * core: Change template parsing error to include warning about file extensions. [GH-10652] +* hcl2_upgrade: hcl2_upgrade command can now upgrade json var-files [GH-10676] ### BUG FIXES +* builder/amazon: Update amazon SDK to fix an SSO login issue. [GH-10668] * builder/azure: Don't overwrite subscription id if unset. [GH-10659] * builder/oracle-oci: Update Oracle Go SDK to fix issue with reading key file. [GH-10560] +* builder/vmware: Added a fallback file check when trying to determine the + network-mapping configuration. [GH-10543] * core/hcl2_upgrade: Make hcl2_upgrade command correctly translate pause_before. [GH-10654] * core: Templates previously could not interpolate the environment variable PACKER_LOG_PATH. [GH-10660] +* provisioner/chef-solo: HCL2 templates can support the json_string option. + [GH-10655] ## 1.7.0 (February 17, 2021) From a115b428ac25b19e022cd701cf9dd73959b98773 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Fri, 12 Mar 2021 11:07:26 +0100 Subject: [PATCH 096/212] simplify fmt test case a little --- command/build_test.go | 24 +++------ command/fmt_test.go | 116 ++++++++++++++++-------------------------- command/utils_test.go | 8 +++ 3 files changed, 59 insertions(+), 89 deletions(-) diff --git a/command/build_test.go b/command/build_test.go index 812b5c4e2..de7988a5c 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -389,7 +389,7 @@ func TestBuild(t *testing.T) { t.Run(tt.name, func(t *testing.T) { defer tt.cleanup(t) run(t, tt.args, tt.expectedCode) - tt.fileCheck.verify(t) + tt.fileCheck.verify(t, "") }) } } @@ -732,7 +732,7 @@ func TestHCL2PostProcessorForceFlag(t *testing.T) { if code := c.Run(args); code != 0 { fatalCommand(t, c.Meta) } - fCheck.verify(t) + fCheck.verify(t, "") // Second build should override previous manifest UUID, _ = uuid.GenerateUUID() @@ -766,7 +766,7 @@ func TestHCL2PostProcessorForceFlag(t *testing.T) { if code := c.Run(args); code != 0 { fatalCommand(t, c.Meta) } - fCheck.verify(t) + fCheck.verify(t, "") } func TestBuildCommand_HCLOnlyExceptOptions(t *testing.T) { @@ -887,19 +887,19 @@ func (fc fileCheck) expectedFiles() []string { return expected } -func (fc fileCheck) verify(t *testing.T) { +func (fc fileCheck) verify(t *testing.T, dir string) { for _, f := range fc.expectedFiles() { - if !fileExists(f) { - t.Errorf("Expected to find %s", f) + if _, err := os.Stat(filepath.Join(dir, f)); err != nil { + t.Errorf("Expected to find %s: %v", f, err) } } for _, f := range fc.notExpected { - if fileExists(f) { + if _, err := os.Stat(filepath.Join(dir, f)); err == nil { t.Errorf("Expected to not find %s", f) } } for file, expectedContent := range fc.expectedContent { - content, err := ioutil.ReadFile(file) + content, err := ioutil.ReadFile(filepath.Join(dir, file)) if err != nil { t.Fatalf("ioutil.ReadFile: %v", err) } @@ -909,14 +909,6 @@ func (fc fileCheck) verify(t *testing.T) { } } -// fileExists returns true if the filename is found -func fileExists(filename string) bool { - if _, err := os.Stat(filename); err == nil { - return true - } - return false -} - // testCoreConfigBuilder creates a packer CoreConfig that has a file builder // available. This allows us to test a builder that writes files to disk. func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig { diff --git a/command/fmt_test.go b/command/fmt_test.go index e190e7a15..9efd4a213 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -8,7 +8,6 @@ import ( "strings" "testing" - "github.com/google/go-cmp/cmp" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/stretchr/testify/assert" ) @@ -56,12 +55,14 @@ func TestFmt_unfomattedTemlateDirectory(t *testing.T) { } func TestFmt_Recursive(t *testing.T) { - unformattedData := `ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" + unformattedData := ` +ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" ami_filter_owners =[ "137112412989" ] ` - formattedData := `ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" + formattedData := ` +ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" ami_filter_owners = ["137112412989"] ` @@ -70,35 +71,41 @@ ami_filter_owners = ["137112412989"] name string formatArgs []string // arguments passed to format alreadyPresentContent map[string]string - expectedContent map[string]string + fileCheck }{ { name: "nested formats recursively", formatArgs: []string{"-recursive=true"}, alreadyPresentContent: map[string]string{ - "foo/bar/baz": unformattedData, - "foo/bar/baz/woo": unformattedData, - "": unformattedData, - }, - expectedContent: map[string]string{ - "foo/bar/baz": formattedData, - "foo/bar/baz/woo": formattedData, - "": formattedData, + "foo/bar/baz.pkr.hcl": unformattedData, + "foo/bar/baz/woo.pkrvars.hcl": unformattedData, + "potato": unformattedData, + "foo/bar/potato": unformattedData, + "bar.pkr.hcl": unformattedData, }, + fileCheck: fileCheck{ + expectedContent: map[string]string{ + "foo/bar/baz.pkr.hcl": formattedData, + "foo/bar/baz/woo.pkrvars.hcl": formattedData, + "potato": unformattedData, + "foo/bar/potato": unformattedData, + "bar.pkr.hcl": formattedData, + }}, }, { name: "nested no recursive format", formatArgs: []string{}, alreadyPresentContent: map[string]string{ - "foo/bar/baz": unformattedData, - "foo/bar/baz/woo": unformattedData, - "": unformattedData, - }, - expectedContent: map[string]string{ - "foo/bar/baz": unformattedData, - "foo/bar/baz/woo": unformattedData, - "": formattedData, + "foo/bar/baz.pkr.hcl": unformattedData, + "foo/bar/baz/woo.pkrvars.hcl": unformattedData, + "bar.pkr.hcl": unformattedData, }, + fileCheck: fileCheck{ + expectedContent: map[string]string{ + "foo/bar/baz.pkr.hcl": unformattedData, + "foo/bar/baz/woo.pkrvars.hcl": unformattedData, + "bar.pkr.hcl": formattedData, + }}, }, } @@ -109,62 +116,25 @@ ami_filter_owners = ["137112412989"] testDir := "test-fixtures/fmt" for _, tt := range tests { - tempFileNames := make(map[string]string) + t.Run(tt.name, func(t *testing.T) { + tempDirectory := mustString(ioutil.TempDir(testDir, "test-dir-*")) + defer os.RemoveAll(tempDirectory) - tempDirectory, err := ioutil.TempDir(testDir, "test-dir-*") - if err != nil { - t.Fatalf("Failed to create temp dir for test case: %s, error: %v", tt.name, err) - } - defer os.RemoveAll(tempDirectory) + createFiles(tempDirectory, tt.alreadyPresentContent) - for subDir, content := range tt.alreadyPresentContent { - dir := filepath.Join(tempDirectory, subDir) - err = os.MkdirAll(dir, 0700) - if err != nil { - t.Fatalf("Failed to create directory for test case: %s, error: %v", tt.name, err) - } - - tempFile, err := ioutil.TempFile(dir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("Failed to create temp file for test case: %s, error: %v", tt.name, err) - } - - _, err = tempFile.Write([]byte(content)) - if err != nil { - t.Fatalf("Failed to write temp file for test case: %s, error: %v", tt.name, err) - } - tempFileNames[subDir] = tempFile.Name() - tempFile.Close() - } - - testArgs := append(tt.formatArgs, tempDirectory) - if code := c.Run(testArgs); code != 0 { - os.RemoveAll(tempDirectory) - ui := c.Meta.Ui.(*packersdk.BasicUi) - out := ui.Writer.(*bytes.Buffer) - err := ui.ErrorWriter.(*bytes.Buffer) - t.Fatalf( - "Bad exit code for test case: %s.\n\nStdout:\n\n%s\n\nStderr:\n\n%s", - tt.name, - out.String(), - err.String()) - } - - for expectedPath, expectedContent := range tt.expectedContent { - b, err := ioutil.ReadFile(tempFileNames[expectedPath]) - if err != nil { - t.Fatalf("ReadFile failed for test case: %s, error : %v", tt.name, err) - } - got := string(b) - if diff := cmp.Diff(got, expectedContent); diff != "" { - t.Errorf( - "format dir, unexpected result for test case: %s, path: %s, Expected: %s, Got: %s", + testArgs := append(tt.formatArgs, tempDirectory) + if code := c.Run(testArgs); code != 0 { + ui := c.Meta.Ui.(*packersdk.BasicUi) + out := ui.Writer.(*bytes.Buffer) + err := ui.ErrorWriter.(*bytes.Buffer) + t.Fatalf( + "Bad exit code for test case: %s.\n\nStdout:\n\n%s\n\nStderr:\n\n%s", tt.name, - expectedPath, - expectedContent, - got) + out.String(), + err.String()) } - } - } + tt.fileCheck.verify(t, tempDirectory) + }) + } } diff --git a/command/utils_test.go b/command/utils_test.go index f381b2e98..dfb0a036b 100644 --- a/command/utils_test.go +++ b/command/utils_test.go @@ -39,3 +39,11 @@ func (c *configDirSingleton) dir(key string) string { c.dirs[key] = mustString(ioutil.TempDir("", "pkr-test-cfg-dir-"+key)) return c.dirs[key] } + +// fileExists returns true if the filename is found +func fileExists(filename string) bool { + if _, err := os.Stat(filename); err == nil { + return true + } + return false +} From 7d30a5d79d88381a49dfc79fdaf0ff7eaed2ebef Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Fri, 12 Mar 2021 11:18:38 +0100 Subject: [PATCH 097/212] remove duplicate tests --- hcl2template/formatter_test.go | 475 --------------------------------- 1 file changed, 475 deletions(-) diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 4fede302e..36067f29e 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -2,14 +2,7 @@ package hcl2template import ( "bytes" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "strings" "testing" - - "github.com/google/go-cmp/cmp" ) func TestHCL2Formatter_Format(t *testing.T) { @@ -38,471 +31,3 @@ func TestHCL2Formatter_Format(t *testing.T) { } } } - -func TestHCL2Formatter_Recursive(t *testing.T) { - unformattedData := ` -// starts resources to provision them. -build { - sources = [ - "source.amazon-ebs.ubuntu-1604", - "source.virtualbox-iso.ubuntu-1204", - ] - - provisioner "shell" { - string = coalesce(null, "", "string") - int = "${41 + 1}" - int64 = "${42 + 1}" - bool = "true" - trilean = true - duration = "${9 + 1}s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - } - - nested_slice { - } - } - - provisioner "file" { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - } - - nested_slice { - } - } - - post-processor "amazon-import" { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a","b"], - ["c","d"] - ] - } - - nested_slice { - } - } -} -` - - formattedData := ` -// starts resources to provision them. -build { - sources = [ - "source.amazon-ebs.ubuntu-1604", - "source.virtualbox-iso.ubuntu-1204", - ] - - provisioner "shell" { - string = coalesce(null, "", "string") - int = "${41 + 1}" - int64 = "${42 + 1}" - bool = "true" - trilean = true - duration = "${9 + 1}s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a", "b"], - ["c", "d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a", "b"], - ["c", "d"] - ] - } - - nested_slice { - } - } - - provisioner "file" { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a", "b"], - ["c", "d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a", "b"], - ["c", "d"] - ] - } - - nested_slice { - } - } - - post-processor "amazon-import" { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a", "b"], - ["c", "d"] - ] - - nested { - string = "string" - int = 42 - int64 = 43 - bool = true - trilean = true - duration = "10s" - map_string_string = { - a = "b" - c = "d" - } - slice_string = [ - "a", - "b", - "c", - ] - slice_slice_string = [ - ["a", "b"], - ["c", "d"] - ] - } - - nested_slice { - } - } -} -` - var buf bytes.Buffer - f := NewHCL2Formatter() - f.Output = &buf - f.Write = true - - tests := []struct { - name string - recursive bool - alreadyPresentContent map[string]string - expectedContent map[string]string - }{ - { - name: "nested formats recursively", - recursive: true, - alreadyPresentContent: map[string]string{ - "foo/bar/baz": unformattedData, - "foo/bar/baz/woo": unformattedData, - "": unformattedData, - }, - expectedContent: map[string]string{ - "foo/bar/baz": formattedData, - "foo/bar/baz/woo": formattedData, - "": formattedData, - }, - }, - { - name: "nested no recursive format", - recursive: false, - alreadyPresentContent: map[string]string{ - "foo/bar/baz": unformattedData, - "foo/bar/baz/woo": unformattedData, - "": unformattedData, - }, - expectedContent: map[string]string{ - "foo/bar/baz": unformattedData, - "foo/bar/baz/woo": unformattedData, - "": formattedData, - }, - }, - } - - testDir := "testdata/format" - - for _, tt := range tests { - tempFileNames := make(map[string]string) - - tempDirectory, err := ioutil.TempDir(testDir, "test-dir-*") - if err != nil { - t.Fatalf("Failed to create temp dir for test case: %s, error: %v", tt.name, err) - } - defer os.RemoveAll(tempDirectory) - - for subDir, content := range tt.alreadyPresentContent { - dir := filepath.Join(tempDirectory, subDir) - err = os.MkdirAll(dir, 0700) - if err != nil { - t.Fatalf("Failed to create directory for test case: %s, error: %v", tt.name, err) - } - - tempFile, err := ioutil.TempFile(dir, "*.pkrvars.hcl") - if err != nil { - t.Fatalf("Failed to create temp file for test case: %s, error: %v", tt.name, err) - } - - _, err = tempFile.Write([]byte(content)) - if err != nil { - t.Fatalf("Failed to write temp file for test case: %s, error: %v", tt.name, err) - } - tempFileNames[subDir] = tempFile.Name() - tempFile.Close() - } - - f.Recursive = tt.recursive - _, diags := f.Format(tempDirectory) - if diags.HasErrors() { - t.Fatalf("Call to Format failed unexpectedly for test case: %s, errors: %s", tt.name, diags.Error()) - } - - for expectedPath, expectedContent := range tt.expectedContent { - b, err := ioutil.ReadFile(tempFileNames[expectedPath]) - if err != nil { - t.Fatalf("ReadFile failed for test case: %s, error : %v", tt.name, err) - } - got := string(b) - if diff := cmp.Diff(got, expectedContent); diff != "" { - t.Errorf( - "format dir, unexpected result for test case: %s, path: %s, Expected: %s, Got: %s", - tt.name, - expectedPath, - expectedContent, - got) - } - } - } -} - -func TestHCL2Formatter_Format_Write(t *testing.T) { - - var buf bytes.Buffer - f := NewHCL2Formatter() - f.Output = &buf - f.Write = true - - unformattedData, err := ioutil.ReadFile("testdata/format/unformatted.pkr.hcl") - if err != nil { - t.Fatalf("failed to open the unformatted fixture %s", err) - } - - tf, err := ioutil.TempFile("", "*.pkr.hcl") - if err != nil { - t.Fatalf("failed to create tempfile for test %s", err) - } - defer os.Remove(tf.Name()) - - _, _ = tf.Write(unformattedData) - tf.Close() - - _, diags := f.Format(tf.Name()) - if diags.HasErrors() { - t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) - } - - //lets re-read the tempfile which should now be formatted - data, err := ioutil.ReadFile(tf.Name()) - if err != nil { - t.Fatalf("failed to open the newly formatted fixture %s", err) - } - - formattedData, err := ioutil.ReadFile("testdata/format/formatted.pkr.hcl") - if err != nil { - t.Fatalf("failed to open the formatted fixture %s", err) - } - - if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { - t.Errorf("Unexpected format output %s", diff) - } -} - -func TestHCL2Formatter_Format_ShowDiff(t *testing.T) { - - if _, err := exec.LookPath("diff"); err != nil { - t.Skip("Skipping test because diff is not in the executable PATH") - } - - var buf bytes.Buffer - f := HCL2Formatter{ - Output: &buf, - ShowDiff: true, - } - - _, diags := f.Format("testdata/format/unformatted.pkr.hcl") - if diags.HasErrors() { - t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) - } - - diffHeader := ` ---- old/testdata/format/unformatted.pkr.hcl -+++ new/testdata/format/unformatted.pkr.hcl -@@ -1,149 +1,149 @@ -` - if !strings.Contains(buf.String(), diffHeader) { - t.Errorf("expected buf to contain a file diff, but instead we got %s", buf.String()) - } - -} From be7d7313c517660fcf58321506b20e30ee6c9ec6 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Fri, 12 Mar 2021 11:25:10 +0100 Subject: [PATCH 098/212] add tests for piping fmt --- command/fmt_test.go | 72 ++++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/command/fmt_test.go b/command/fmt_test.go index 9efd4a213..66eca802d 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -2,12 +2,14 @@ package command import ( "bytes" + "fmt" "io/ioutil" "os" "path/filepath" "strings" "testing" + "github.com/google/go-cmp/cmp" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/stretchr/testify/assert" ) @@ -54,18 +56,20 @@ func TestFmt_unfomattedTemlateDirectory(t *testing.T) { } } -func TestFmt_Recursive(t *testing.T) { - unformattedData := ` +const ( + unformattedHCL = ` ami_filter_name ="amzn2-ami-hvm-*-x86_64-gp2" ami_filter_owners =[ "137112412989" ] ` - - formattedData := ` + formattedHCL = ` ami_filter_name = "amzn2-ami-hvm-*-x86_64-gp2" ami_filter_owners = ["137112412989"] ` +) + +func TestFmt_Recursive(t *testing.T) { tests := []struct { name string @@ -77,34 +81,34 @@ ami_filter_owners = ["137112412989"] name: "nested formats recursively", formatArgs: []string{"-recursive=true"}, alreadyPresentContent: map[string]string{ - "foo/bar/baz.pkr.hcl": unformattedData, - "foo/bar/baz/woo.pkrvars.hcl": unformattedData, - "potato": unformattedData, - "foo/bar/potato": unformattedData, - "bar.pkr.hcl": unformattedData, + "foo/bar/baz.pkr.hcl": unformattedHCL, + "foo/bar/baz/woo.pkrvars.hcl": unformattedHCL, + "potato": unformattedHCL, + "foo/bar/potato": unformattedHCL, + "bar.pkr.hcl": unformattedHCL, }, fileCheck: fileCheck{ expectedContent: map[string]string{ - "foo/bar/baz.pkr.hcl": formattedData, - "foo/bar/baz/woo.pkrvars.hcl": formattedData, - "potato": unformattedData, - "foo/bar/potato": unformattedData, - "bar.pkr.hcl": formattedData, + "foo/bar/baz.pkr.hcl": formattedHCL, + "foo/bar/baz/woo.pkrvars.hcl": formattedHCL, + "potato": unformattedHCL, + "foo/bar/potato": unformattedHCL, + "bar.pkr.hcl": formattedHCL, }}, }, { name: "nested no recursive format", formatArgs: []string{}, alreadyPresentContent: map[string]string{ - "foo/bar/baz.pkr.hcl": unformattedData, - "foo/bar/baz/woo.pkrvars.hcl": unformattedData, - "bar.pkr.hcl": unformattedData, + "foo/bar/baz.pkr.hcl": unformattedHCL, + "foo/bar/baz/woo.pkrvars.hcl": unformattedHCL, + "bar.pkr.hcl": unformattedHCL, }, fileCheck: fileCheck{ expectedContent: map[string]string{ - "foo/bar/baz.pkr.hcl": unformattedData, - "foo/bar/baz/woo.pkrvars.hcl": unformattedData, - "bar.pkr.hcl": formattedData, + "foo/bar/baz.pkr.hcl": unformattedHCL, + "foo/bar/baz/woo.pkrvars.hcl": unformattedHCL, + "bar.pkr.hcl": formattedHCL, }}, }, } @@ -138,3 +142,31 @@ ami_filter_owners = ["137112412989"] }) } } + +func Test_fmt_pipe(t *testing.T) { + + tc := []struct { + piped string + command []string + env []string + expected string + }{ + {unformattedHCL, []string{"fmt", "-"}, nil, formattedHCL + "\n"}, + } + + for _, tc := range tc { + t.Run(fmt.Sprintf("echo %q | packer %s", tc.piped, tc.command), func(t *testing.T) { + p := helperCommand(t, tc.command...) + p.Stdin = strings.NewReader(tc.piped) + p.Env = append(p.Env, tc.env...) + bs, err := p.Output() + if err != nil { + t.Fatalf("%v: %s", err, bs) + } + + if diff := cmp.Diff(tc.expected, string(bs)); diff != "" { + t.Fatalf("%s", diff) + } + }) + } +} From cf65b7b49438904be81a5dc3686eb1341dfc908e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 12 Mar 2021 10:13:52 -0500 Subject: [PATCH 099/212] Remove remote plugin docs for exoscale (#10757) * Remove remote plugin docs for exoscale * Add link to github repo for Exoscale components --- website/content/partials/builders/community_builders.mdx | 2 ++ .../partials/post-processors/community_post-processors.mdx | 2 ++ website/data/docs-remote-plugins.json | 5 ----- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/website/content/partials/builders/community_builders.mdx b/website/content/partials/builders/community_builders.mdx index d8dc7394f..7944bb4f4 100644 --- a/website/content/partials/builders/community_builders.mdx +++ b/website/content/partials/builders/community_builders.mdx @@ -5,6 +5,8 @@ - [packer-builder-arm-image](https://github.com/solo-io/packer-builder-arm-image) - simple builder lets you extend on existing system images. - [packer-builder-arm](https://github.com/mkaczanowski/packer-builder-arm) - flexible builder lets you extend or build images from scratch with variety of options (ie. custom partition table). +- [Exoscale builder](https://github.com/exoscale/packer-plugin-exoscale) - A builder to create Exoscale custom templates based on a Compute instance snapshot. + - [Huawei Cloud ECS builder](https://github.com/huaweicloud/packer-builder-huaweicloud-ecs) - Plugin for creating [Huawei Cloud ECS](https://www.huaweicloud.com/intl/en-us/) images. - [UpCloud builder](https://github.com/UpCloudLtd/packer-plugin-upcloud) - A suite of Packer plugins for provisioning Upcloud servers. diff --git a/website/content/partials/post-processors/community_post-processors.mdx b/website/content/partials/post-processors/community_post-processors.mdx index 7d82a5512..af4e3aefa 100644 --- a/website/content/partials/post-processors/community_post-processors.mdx +++ b/website/content/partials/post-processors/community_post-processors.mdx @@ -1,2 +1,4 @@ ### Community Post-Processors +- [Exoscale Import post-processor](https://github.com/exoscale/packer-plugin-exoscale) - A post-processor to import Exoscale custom templates from disk image files. + diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index f70ece336..8c247cfab 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -3,10 +3,5 @@ "title": "Docker", "path": "docker", "repo": "hashicorp/packer-plugin-docker" - }, - { - "title": "Exoscale", - "path": "exoscale", - "repo": "exoscale/packer-plugin-exoscale" } ] From d1254a5e48a100ae4da6a9ee909ae39fd9a32c64 Mon Sep 17 00:00:00 2001 From: finchr Date: Fri, 12 Mar 2021 07:47:21 -0800 Subject: [PATCH 100/212] Fix for issue #7413 - Allow non-zero exit codes for inspec provisioner (#10723) --- provisioner/inspec/provisioner.go | 38 ++++++++++++++-- provisioner/inspec/provisioner.hcl2spec.go | 2 + provisioner/inspec/provisioner_test.go | 45 +++++++++++++++++-- .../inspec/test-fixtures/inspec_version.sh | 7 +++ .../inspec/test-fixtures/skip_control.rb | 13 ++++++ .../inspec/test-fixtures/valid_exit_codes.sh | 16 +++++++ website/content/docs/provisioners/inspec.mdx | 5 +++ 7 files changed, 118 insertions(+), 8 deletions(-) create mode 100755 provisioner/inspec/test-fixtures/inspec_version.sh create mode 100644 provisioner/inspec/test-fixtures/skip_control.rb create mode 100755 provisioner/inspec/test-fixtures/valid_exit_codes.sh diff --git a/provisioner/inspec/provisioner.go b/provisioner/inspec/provisioner.go index db7164820..c832bb6b4 100644 --- a/provisioner/inspec/provisioner.go +++ b/provisioner/inspec/provisioner.go @@ -23,6 +23,7 @@ import ( "strconv" "strings" "sync" + "syscall" "unicode" "golang.org/x/crypto/ssh" @@ -59,6 +60,7 @@ type Config struct { LocalPort int `mapstructure:"local_port"` SSHHostKeyFile string `mapstructure:"ssh_host_key_file"` SSHAuthorizedKeyFile string `mapstructure:"ssh_authorized_key_file"` + ValidExitCodes []int `mapstructure:"valid_exit_codes"` } type Provisioner struct { @@ -157,6 +159,10 @@ func (p *Provisioner) Prepare(raws ...interface{}) error { errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("user: could not determine current user from environment.")) } + if p.config.ValidExitCodes == nil { + p.config.ValidExitCodes = []int{0, 101} + } + if errs != nil && len(errs.Errors) > 0 { return errs } @@ -170,7 +176,7 @@ func (p *Provisioner) getVersion() error { "Error running \"%s version\": %s", p.config.Command, err.Error()) } - versionRe := regexp.MustCompile(`\w (\d+\.\d+[.\d+]*)`) + versionRe := regexp.MustCompile(`(\d+\.\d+[.\d+]*)`) matches := versionRe.FindStringSubmatch(string(out)) if matches == nil { return fmt.Errorf( @@ -412,9 +418,33 @@ func (p *Provisioner) executeInspec(ui packersdk.Ui, comm packersdk.Communicator return err } wg.Wait() - err = cmd.Wait() - if err != nil { - return fmt.Errorf("Non-zero exit status: %s", err) + + if err := cmd.Wait(); err != nil { + if exiterr, ok := err.(*exec.ExitError); ok { + // The program has exited with an exit code != 0 + + // This works on both Unix and Windows. Although package + // syscall is generally platform dependent, WaitStatus is + // defined for both Unix and Windows and in both cases has + // an ExitStatus() method with the same signature. + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + exitStatus := status.ExitStatus() + // Check exit code against allowed codes (likely just 0) + validExitCode := false + for _, v := range p.config.ValidExitCodes { + if exitStatus == v { + validExitCode = true + } + } + if !validExitCode { + return fmt.Errorf( + "Inspec exited with unexpected exit status: %d. Expected exit codes are: %v", + exitStatus, p.config.ValidExitCodes) + } + } + } else { + return fmt.Errorf("Unable to get exit status: %s", err) + } } return nil diff --git a/provisioner/inspec/provisioner.hcl2spec.go b/provisioner/inspec/provisioner.hcl2spec.go index 9633bc5b8..fda139628 100644 --- a/provisioner/inspec/provisioner.hcl2spec.go +++ b/provisioner/inspec/provisioner.hcl2spec.go @@ -30,6 +30,7 @@ type FlatConfig struct { LocalPort *int `mapstructure:"local_port" cty:"local_port" hcl:"local_port"` SSHHostKeyFile *string `mapstructure:"ssh_host_key_file" cty:"ssh_host_key_file" hcl:"ssh_host_key_file"` SSHAuthorizedKeyFile *string `mapstructure:"ssh_authorized_key_file" cty:"ssh_authorized_key_file" hcl:"ssh_authorized_key_file"` + ValidExitCodes []int `mapstructure:"valid_exit_codes" cty:"valid_exit_codes" hcl:"valid_exit_codes"` } // FlatMapstructure returns a new FlatConfig. @@ -64,6 +65,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "local_port": &hcldec.AttrSpec{Name: "local_port", Type: cty.Number, Required: false}, "ssh_host_key_file": &hcldec.AttrSpec{Name: "ssh_host_key_file", Type: cty.String, Required: false}, "ssh_authorized_key_file": &hcldec.AttrSpec{Name: "ssh_authorized_key_file", Type: cty.String, Required: false}, + "valid_exit_codes": &hcldec.AttrSpec{Name: "valid_exit_codes", Type: cty.List(cty.Number), Required: false}, } return s } diff --git a/provisioner/inspec/provisioner_test.go b/provisioner/inspec/provisioner_test.go index fdf1914e7..67d5002f6 100644 --- a/provisioner/inspec/provisioner_test.go +++ b/provisioner/inspec/provisioner_test.go @@ -1,12 +1,15 @@ package inspec import ( + "bytes" + "context" "crypto/rand" "fmt" "io" "io/ioutil" "os" "path" + "runtime" "strings" "testing" @@ -268,12 +271,17 @@ func TestProvisionerPrepare_LocalPort(t *testing.T) { } func TestInspecGetVersion(t *testing.T) { - if os.Getenv("PACKER_ACC") == "" { - t.Skip("This test is only run with PACKER_ACC=1 and it requires InSpec to be installed") + var p Provisioner + if os.Getenv("PACKER_ACC") == "1" { + p.config.Command = "inspec" + } else { + p.config.Command = "./test-fixtures/inspec_version.sh" + if runtime.GOOS == "windows" { + t.Skip("This test is only run with PACKER_ACC=1 and it requires InSpec to be installed") + } } - var p Provisioner - p.config.Command = "inspec exec" + p.config.Backend = "local" err := p.getVersion() if err != nil { t.Fatalf("err: %s", err) @@ -291,3 +299,32 @@ func TestInspecGetVersionError(t *testing.T) { t.Fatal("Error message should include command name") } } + +func TestInspecValidExitCodes(t *testing.T) { + var p Provisioner + if os.Getenv("PACKER_ACC") == "1" { + p.config.Command = "inspec" + } else { + p.config.Command = "./test-fixtures/valid_exit_codes.sh" + if runtime.GOOS == "windows" { + t.Skip("This test is only run with PACKER_ACC=1 and it requires InSpec to be installed") + } + } + p.config.Backend = "local" + p.config.Profile = "test-fixtures/skip_control.rb" + err := p.Prepare() + if err != nil { + t.Fatalf("err: %s", err) + } + + comm := &packersdk.MockCommunicator{} + ui := &packersdk.BasicUi{ + Reader: new(bytes.Buffer), + Writer: new(bytes.Buffer), + } + + err = p.Provision(context.Background(), ui, comm, make(map[string]interface{})) + if err != nil { + t.Fatalf("err: %s", err) + } +} diff --git a/provisioner/inspec/test-fixtures/inspec_version.sh b/provisioner/inspec/test-fixtures/inspec_version.sh new file mode 100755 index 000000000..2b31da077 --- /dev/null +++ b/provisioner/inspec/test-fixtures/inspec_version.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +cat < Date: Fri, 12 Mar 2021 17:10:11 +0100 Subject: [PATCH 101/212] Update PULL_REQUEST_TEMPLATE.md (#10758) --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 72c5bee09..243d89310 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -10,7 +10,7 @@ Describe the change you are making here! Please include tests. Check out these examples: -- https://github.com/hashicorp/packer/blob/master/builder/virtualbox/common/ssh_config_test.go#L19-L37 +- https://github.com/hashicorp/packer/blob/master/builder/parallels/common/ssh_config_test.go#L34 - https://github.com/hashicorp/packer/blob/master/post-processor/compress/post-processor_test.go#L153-L182 If your PR resolves any open issue(s), please indicate them like this so they will be closed when your PR is merged: From 4bbeec4733a51a0e90c4d42cc45782d4c72ce01b Mon Sep 17 00:00:00 2001 From: Shane Lee Date: Fri, 12 Mar 2021 12:59:34 -0700 Subject: [PATCH 102/212] Update urls for the bootstrap scripts used by salt-masterless provider (#10755) * Fix salt masterless url. Use saltproject.io * Specify Tls12 --- provisioner/salt-masterless/provisioner.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/provisioner/salt-masterless/provisioner.go b/provisioner/salt-masterless/provisioner.go index 73fb3c0d2..5c3d098c7 100644 --- a/provisioner/salt-masterless/provisioner.go +++ b/provisioner/salt-masterless/provisioner.go @@ -101,7 +101,7 @@ var guestOSTypeConfigs = map[string]guestOSTypeConfig{ tempDir: "/tmp/salt", stateRoot: "/srv/salt", pillarRoot: "/srv/pillar", - bootstrapFetchCmd: "curl -L https://bootstrap.saltstack.com -o /tmp/install_salt.sh || wget -O /tmp/install_salt.sh https://bootstrap.saltstack.com", + bootstrapFetchCmd: "curl -L https://bootstrap.saltproject.io -o /tmp/install_salt.sh || wget -O /tmp/install_salt.sh https://bootstrap.saltproject.io", bootstrapRunCmd: "sh /tmp/install_salt.sh", }, guestexec.WindowsOSType: { @@ -109,7 +109,7 @@ var guestOSTypeConfigs = map[string]guestOSTypeConfig{ tempDir: "C:/Windows/Temp/salt/", stateRoot: "C:/salt/state", pillarRoot: "C:/salt/pillar/", - bootstrapFetchCmd: "powershell Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.ps1' -OutFile 'C:/Windows/Temp/bootstrap-salt.ps1'", + bootstrapFetchCmd: "powershell -Command \"[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'; Invoke-WebRequest -Uri 'https://winbootstrap.saltproject.io' -OutFile 'C:/Windows/Temp/bootstrap-salt.ps1'\"", bootstrapRunCmd: "Powershell C:/Windows/Temp/bootstrap-salt.ps1", }, } From 77ce2b39d86794e9245afdc3815905478f1dad1f Mon Sep 17 00:00:00 2001 From: Dom Del Nano Date: Mon, 15 Mar 2021 03:31:21 -0700 Subject: [PATCH 103/212] Fix the version parsing in ChecksumFileEntry.init() so that plugins whose name contain v's can `packer init` (#10760) * fix * test --- packer/plugin-getter/plugins.go | 6 +++--- packer/plugin-getter/plugins_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 9595b67a0..8355afd87 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -305,12 +305,12 @@ func (e ChecksumFileEntry) Arch() string { return e.arch } // func (e *ChecksumFileEntry) init(req *Requirement) (err error) { filename := e.Filename - res := strings.TrimLeft(filename, req.FilenamePrefix()) + res := strings.TrimPrefix(filename, req.FilenamePrefix()) // res now looks like v0.2.12_x5.0_freebsd_amd64.zip e.ext = filepath.Ext(res) - res = strings.TrimRight(res, e.ext) + res = strings.TrimSuffix(res, e.ext) // res now looks like v0.2.12_x5.0_freebsd_amd64 parts := strings.Split(res, "_") @@ -326,7 +326,7 @@ func (e *ChecksumFileEntry) init(req *Requirement) (err error) { func (e *ChecksumFileEntry) validate(expectedVersion string, installOpts BinaryInstallationOptions) error { if e.binVersion != expectedVersion { - return fmt.Errorf("wrong version, expected %s ", expectedVersion) + return fmt.Errorf("wrong version: '%s' does not match expected %s ", e.binVersion, expectedVersion) } if e.os != installOpts.OS || e.arch != installOpts.ARCH { return fmt.Errorf("wrong system, expected %s_%s ", installOpts.OS, installOpts.ARCH) diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index bbf9745d6..fcd0a18d5 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -27,6 +27,32 @@ var ( pluginFolderWrongChecksums = filepath.Join("testdata", "wrong_checksums") ) +func TestChecksumFileEntry_init(t *testing.T) { + expectedVersion := "v0.3.0" + req := &Requirement{ + Identifier: &addrs.Plugin{ + Hostname: "github.com", + Namespace: "ddelnano", + Type: "xenserver", + }, + } + + checkSum := &ChecksumFileEntry{ + Filename: fmt.Sprintf("packer-plugin-xenserver_%s_x5.0_darwin_amd64.zip", expectedVersion), + Checksum: "0f5969b069b9c0a58f2d5786c422341c70dfe17bd68f896fcbd46677e8c913f1", + } + + err := checkSum.init(req) + + if err != nil { + t.Fatalf("ChecksumFileEntry.init failure: %v", err) + } + + if checkSum.binVersion != expectedVersion { + t.Errorf("failed to parse ChecksumFileEntry properly expected version '%s' but found '%s'", expectedVersion, checkSum.binVersion) + } +} + func TestPlugin_ListInstallations(t *testing.T) { type fields struct { From 22d373c2794f491b97b7982a1d1b54c519cab6f3 Mon Sep 17 00:00:00 2001 From: teddylear Date: Sun, 14 Mar 2021 19:42:53 -0400 Subject: [PATCH 104/212] Adding more debug logic --- command/fmt_test.go | 6 +++--- hcl2template/formatter.go | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/command/fmt_test.go b/command/fmt_test.go index 66eca802d..fe539490b 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -159,13 +159,13 @@ func Test_fmt_pipe(t *testing.T) { p := helperCommand(t, tc.command...) p.Stdin = strings.NewReader(tc.piped) p.Env = append(p.Env, tc.env...) + fmt.Println(fmt.Sprintf("Path: %s", p.Path)) bs, err := p.Output() if err != nil { - t.Fatalf("%v: %s", err, bs) + t.Fatalf("Error occurred running command %v: %s", err, bs) } - if diff := cmp.Diff(tc.expected, string(bs)); diff != "" { - t.Fatalf("%s", diff) + t.Fatalf("Error in diff: %s", diff) } }) } diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 42534805d..286d1b1e5 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -69,6 +69,15 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { f.parser = hclparse.NewParser() } + fmt.Println(fmt.Sprintf("Path is %s", path)) + if path == "-" { + fmt.Println("Found right statement!!!!!") + bytesModified, diags = f.formatFile(path, diags, bytesModified) + return bytesModified, diags + } else { + fmt.Println("Did not hit the correct statement") + } + isDir, err := isDir(path) if err != nil { diags = append(diags, &hcl.Diagnostic{ From 33cf6bf45435dcbafcd954a7edc164056eaf989f Mon Sep 17 00:00:00 2001 From: Kyle Date: Mon, 15 Mar 2021 03:37:13 -0700 Subject: [PATCH 105/212] Fix logic for checking for KMS keys (#10754) --- builder/amazon/common/ami_config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/amazon/common/ami_config.go b/builder/amazon/common/ami_config.go index 36b9ab571..ffad5df26 100644 --- a/builder/amazon/common/ami_config.go +++ b/builder/amazon/common/ami_config.go @@ -172,7 +172,7 @@ func (c *AMIConfig) Prepare(accessConfig *AccessConfig, ctx *interpolate.Context // Prevent sharing of default KMS key encrypted volumes with other aws users if len(c.AMIUsers) > 0 { - if len(c.AMIKmsKeyId) == 0 && c.AMIEncryptBootVolume.True() { + if len(c.AMIKmsKeyId) == 0 && len(c.AMIRegionKMSKeyIDs) == 0 && c.AMIEncryptBootVolume.True() { errs = append(errs, fmt.Errorf("Cannot share AMI encrypted with default KMS key")) } if len(c.AMIRegionKMSKeyIDs) > 0 { From 832c0f2b2a36da65d837f66e752c9534a12c971e Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 11:41:14 +0100 Subject: [PATCH 106/212] actually run fmt tests and then remove debug statements --- command/exec_test.go | 2 ++ command/fmt_test.go | 2 +- hcl2template/formatter.go | 2 -- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/command/exec_test.go b/command/exec_test.go index fdad36c26..4986a4bf3 100644 --- a/command/exec_test.go +++ b/command/exec_test.go @@ -87,6 +87,8 @@ func TestHelperProcess(*testing.T) { switch cmd { case "console": os.Exit((&ConsoleCommand{Meta: commandMeta()}).Run(args)) + case "fmt": + os.Exit((&FormatCommand{Meta: commandMeta()}).Run(args)) case "inspect": os.Exit((&InspectCommand{Meta: commandMeta()}).Run(args)) case "build": diff --git a/command/fmt_test.go b/command/fmt_test.go index fe539490b..e7011dba9 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -151,7 +151,7 @@ func Test_fmt_pipe(t *testing.T) { env []string expected string }{ - {unformattedHCL, []string{"fmt", "-"}, nil, formattedHCL + "\n"}, + {unformattedHCL, []string{"fmt", "-"}, nil, formattedHCL}, } for _, tc := range tc { diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 286d1b1e5..7f0f65a98 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -69,9 +69,7 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { f.parser = hclparse.NewParser() } - fmt.Println(fmt.Sprintf("Path is %s", path)) if path == "-" { - fmt.Println("Found right statement!!!!!") bytesModified, diags = f.formatFile(path, diags, bytesModified) return bytesModified, diags } else { From a6321ac1372e7ab5056f428ae5804176d283b176 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 11:46:07 +0100 Subject: [PATCH 107/212] remove debug line --- hcl2template/formatter.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 7f0f65a98..3ea5f1505 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -72,8 +72,6 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { if path == "-" { bytesModified, diags = f.formatFile(path, diags, bytesModified) return bytesModified, diags - } else { - fmt.Println("Did not hit the correct statement") } isDir, err := isDir(path) From 25ee6a19a63afabc1b1bee0b77dc79a80173c0bf Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 11:48:13 +0100 Subject: [PATCH 108/212] flatten if a little --- hcl2template/formatter.go | 52 +++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 3ea5f1505..059f91d28 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -85,34 +85,34 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { } if !isDir { - bytesModified, diags = f.formatFile(path, diags, bytesModified) - } else { - fileInfos, err := ioutil.ReadDir(path) - if err != nil { - diag := &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Cannot read hcl directory", - Detail: err.Error(), - } - diags = append(diags, diag) - return bytesModified, diags - } + return f.formatFile(path, diags, bytesModified) + } - for _, fileInfo := range fileInfos { - filename := filepath.Join(path, fileInfo.Name()) - if fileInfo.IsDir() { - if f.Recursive { - var tempDiags hcl.Diagnostics - var tempBytesModified int - tempBytesModified, tempDiags = f.Format(filename) - bytesModified += tempBytesModified - diags = diags.Extend(tempDiags) - } - continue - } - if isHcl2FileOrVarFile(filename) { - bytesModified, diags = f.formatFile(filename, diags, bytesModified) + fileInfos, err := ioutil.ReadDir(path) + if err != nil { + diag := &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Cannot read hcl directory", + Detail: err.Error(), + } + diags = append(diags, diag) + return bytesModified, diags + } + + for _, fileInfo := range fileInfos { + filename := filepath.Join(path, fileInfo.Name()) + if fileInfo.IsDir() { + if f.Recursive { + var tempDiags hcl.Diagnostics + var tempBytesModified int + tempBytesModified, tempDiags = f.Format(filename) + bytesModified += tempBytesModified + diags = diags.Extend(tempDiags) } + continue + } + if isHcl2FileOrVarFile(filename) { + bytesModified, diags = f.formatFile(filename, diags, bytesModified) } } From 8ee8420408e4fc0f52ae34503bd9bd99d95d6bfe Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 11:49:03 +0100 Subject: [PATCH 109/212] simplify return --- hcl2template/formatter.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 059f91d28..d59a9eb8f 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -70,8 +70,7 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { } if path == "-" { - bytesModified, diags = f.formatFile(path, diags, bytesModified) - return bytesModified, diags + return f.formatFile(path, diags, bytesModified) } isDir, err := isDir(path) From fe21ff905d12a1a915f5c467ef7100e0cd8b5e14 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 11:50:43 +0100 Subject: [PATCH 110/212] test that folders containing a - file won't hang forever --- command/fmt_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/command/fmt_test.go b/command/fmt_test.go index e7011dba9..b63ca5fb9 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -86,6 +86,7 @@ func TestFmt_Recursive(t *testing.T) { "potato": unformattedHCL, "foo/bar/potato": unformattedHCL, "bar.pkr.hcl": unformattedHCL, + "-": unformattedHCL, }, fileCheck: fileCheck{ expectedContent: map[string]string{ @@ -94,6 +95,7 @@ func TestFmt_Recursive(t *testing.T) { "potato": unformattedHCL, "foo/bar/potato": unformattedHCL, "bar.pkr.hcl": formattedHCL, + "-": unformattedHCL, }}, }, { @@ -103,12 +105,14 @@ func TestFmt_Recursive(t *testing.T) { "foo/bar/baz.pkr.hcl": unformattedHCL, "foo/bar/baz/woo.pkrvars.hcl": unformattedHCL, "bar.pkr.hcl": unformattedHCL, + "-": unformattedHCL, }, fileCheck: fileCheck{ expectedContent: map[string]string{ "foo/bar/baz.pkr.hcl": unformattedHCL, "foo/bar/baz/woo.pkrvars.hcl": unformattedHCL, "bar.pkr.hcl": formattedHCL, + "-": unformattedHCL, }}, }, } From e0fe579837e86fefb2943708cda93f2e92753ca1 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 12:00:19 +0100 Subject: [PATCH 111/212] un-remove tests --- hcl2template/formatter_test.go | 76 ++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 36067f29e..139308882 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -2,7 +2,13 @@ package hcl2template import ( "bytes" + "io/ioutil" + "os" + "os/exec" + "strings" "testing" + + "github.com/google/go-cmp/cmp" ) func TestHCL2Formatter_Format(t *testing.T) { @@ -31,3 +37,73 @@ func TestHCL2Formatter_Format(t *testing.T) { } } } + +func TestHCL2Formatter_Format_Write(t *testing.T) { + + var buf bytes.Buffer + f := NewHCL2Formatter() + f.Output = &buf + f.Write = true + + unformattedData, err := ioutil.ReadFile("testdata/format/unformatted.pkr.hcl") + if err != nil { + t.Fatalf("failed to open the unformatted fixture %s", err) + } + + tf, err := ioutil.TempFile("", "*.pkr.hcl") + if err != nil { + t.Fatalf("failed to create tempfile for test %s", err) + } + defer os.Remove(tf.Name()) + + _, _ = tf.Write(unformattedData) + tf.Close() + + _, diags := f.Format(tf.Name()) + if diags.HasErrors() { + t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) + } + + //lets re-read the tempfile which should now be formatted + data, err := ioutil.ReadFile(tf.Name()) + if err != nil { + t.Fatalf("failed to open the newly formatted fixture %s", err) + } + + formattedData, err := ioutil.ReadFile("testdata/format/formatted.pkr.hcl") + if err != nil { + t.Fatalf("failed to open the formatted fixture %s", err) + } + + if diff := cmp.Diff(string(data), string(formattedData)); diff != "" { + t.Errorf("Unexpected format output %s", diff) + } +} + +func TestHCL2Formatter_Format_ShowDiff(t *testing.T) { + + if _, err := exec.LookPath("diff"); err != nil { + t.Skip("Skipping test because diff is not in the executable PATH") + } + + var buf bytes.Buffer + f := HCL2Formatter{ + Output: &buf, + ShowDiff: true, + } + + _, diags := f.Format("testdata/format/unformatted.pkr.hcl") + if diags.HasErrors() { + t.Fatalf("the call to Format failed unexpectedly %s", diags.Error()) + } + + diffHeader := ` +--- old/testdata/format/unformatted.pkr.hcl ++++ new/testdata/format/unformatted.pkr.hcl +@@ -1,149 +1,149 @@ +` + if !strings.Contains(buf.String(), diffHeader) { + t.Errorf("expected buf to contain a file diff, but instead we got %s", buf.String()) + } + +} From 160d932ccef5aafd74cc25d342a941f8c1ff8178 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 12:04:16 +0100 Subject: [PATCH 112/212] remove weir "Cannot tell wether " + path + " is a directory" error --- hcl2template/formatter.go | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index d59a9eb8f..34d63e8de 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -69,21 +69,7 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { f.parser = hclparse.NewParser() } - if path == "-" { - return f.formatFile(path, diags, bytesModified) - } - - isDir, err := isDir(path) - if err != nil { - diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Cannot tell wether " + path + " is a directory", - Detail: err.Error(), - }) - return bytesModified, diags - } - - if !isDir { + if s, err := os.Stat(path); err != nil || !s.IsDir() { return f.formatFile(path, diags, bytesModified) } From f32b67c3bbe0e4a40b20e8da5f09cb674a7da119 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 15 Mar 2021 14:07:07 +0100 Subject: [PATCH 113/212] Simplify error message when config file can't be "stat'd" (#10763) * remove confusing message when a stat error happens while trying to list HCL2 files * leave early if our first GetHCL2Files has errors --- hcl2template/parser.go | 5 +++++ hcl2template/utils.go | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hcl2template/parser.go b/hcl2template/parser.go index 6a14fba13..19e8de0ad 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -90,6 +90,11 @@ func (p *Parser) Parse(filename string, varFiles []string, argVars map[string]st if filename != "" { hclFiles, jsonFiles, moreDiags := GetHCL2Files(filename, hcl2FileExt, hcl2JsonFileExt) diags = append(diags, moreDiags...) + if moreDiags.HasErrors() { + // here this probably means that the file was not found, let's + // simply leave early. + return nil, diags + } if len(hclFiles)+len(jsonFiles) == 0 { diags = append(diags, &hcl.Diagnostic{ Severity: hcl.DiagError, diff --git a/hcl2template/utils.go b/hcl2template/utils.go index 488a5e32a..a8bfffbb8 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -57,7 +57,6 @@ func GetHCL2Files(filename, hclSuffix, jsonSuffix string) (hclFiles, jsonFiles [ if err != nil { diags = append(diags, &hcl.Diagnostic{ Severity: hcl.DiagError, - Summary: "Cannot tell wether " + filename + " is a directory", Detail: err.Error(), }) return nil, nil, diags From 64a3219f695689f39508097f260c3457ba3f9808 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 16 Mar 2021 03:21:00 -0700 Subject: [PATCH 114/212] fix error messaging in wrappedmain. Stderr gets eaten by panicwrap, so we need to write to stdout, which then gets unpacked into error and output messages using the ErrorPrefix and OutputPrefix (#10766) --- main.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index f7806b0bc..12ad1aca5 100644 --- a/main.go +++ b/main.go @@ -152,7 +152,7 @@ func wrappedMain() int { // passed into commands like `packer build` config, err := loadConfig() if err != nil { - fmt.Fprintf(os.Stderr, "Error loading configuration: \n\n%s\n", err) + fmt.Fprintf(os.Stdout, "%s Error loading configuration: \n\n%s\n", ErrorPrefix, err) return 1 } @@ -166,7 +166,7 @@ func wrappedMain() int { cacheDir, err := packersdk.CachePath() if err != nil { - fmt.Fprintf(os.Stderr, "Error preparing cache directory: \n\n%s\n", err) + fmt.Fprintf(os.Stdout, "%s Error preparing cache directory: \n\n%s\n", ErrorPrefix, err) return 1 } log.Printf("[INFO] Setting cache directory: %s", cacheDir) @@ -187,7 +187,7 @@ func wrappedMain() int { // Set this so that we don't get colored output in our machine- // readable UI. if err := os.Setenv("PACKER_NO_COLOR", "1"); err != nil { - fmt.Fprintf(os.Stderr, "Packer failed to initialize UI: %s\n", err) + fmt.Fprintf(os.Stdout, "%s Packer failed to initialize UI: %s\n", ErrorPrefix, err) return 1 } } else { @@ -202,13 +202,13 @@ func wrappedMain() int { currentPID := os.Getpid() backgrounded, err := checkProcess(currentPID) if err != nil { - fmt.Fprintf(os.Stderr, "cannot determine if process is in "+ - "background: %s\n", err) + fmt.Fprintf(os.Stdout, "%s cannot determine if process is in "+ + "background: %s\n", ErrorPrefix, err) } if backgrounded { - fmt.Fprint(os.Stderr, "Running in background, not using a TTY\n") + fmt.Fprintf(os.Stdout, "%s Running in background, not using a TTY\n", ErrorPrefix) } else if TTY, err := openTTY(); err != nil { - fmt.Fprintf(os.Stderr, "No tty available: %s\n", err) + fmt.Fprintf(os.Stdout, "%s No tty available: %s\n", ErrorPrefix, err) } else { basicUi.TTY = TTY basicUi.PB = &packer.UiProgressBar{} @@ -246,7 +246,7 @@ func wrappedMain() int { } if err != nil { - fmt.Fprintf(os.Stderr, "Error executing CLI: %s\n", err) + fmt.Fprintf(os.Stdout, "%s Error executing CLI: %s\n", ErrorPrefix, err) return 1 } From 0b5f8901cc26ee623f9373b1ed37787421141911 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 16 Mar 2021 09:59:44 -0700 Subject: [PATCH 115/212] changelog --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bddbf4eeb..35779ae05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,18 @@ ### IMPROVEMENTS * builder/amazon: allow creation of ebs snapshots wihtout volumes. [GH-9591] +* builder/azure: Add client_cert_token_timeout option. [GH-10528] +* builder/google: Make Windows password timeout configurable. [GH-10727] +* builder/google: Update public GCP image project as gce-uefi-images are + deprecated. [GH-10724] +* builder/qemu: Added firmware option. [GH-10683] * builder/scaleway: add support for timeout in shutdown step. [GH-10503] +* builder/vagrant: Fix logging to be clearer when Vagrant builder overrides + values retrieved from vagrant's ssh_config call. [GH-10743] +* builder/virtualbox: Added ISO builder option to create additional disks. + [GH-10674] +* builder/virtualbox: Add options for nested virtualisation and RTC time base. + [GH-10736] * builder/virtualbox: Add template options for chipset, firmware, nic, graphics controller, and audio controller. [GH-10671] * builder/virtualbox: Support for "virtio" storage and ISO drive. [GH-10632] @@ -10,17 +21,34 @@ [GH-10651] * core: Change template parsing error to include warning about file extensions. [GH-10652] +* core: Update to gopsutil v3.21.1 to allow builds to work for darwin arm64. + [GH-10697] * hcl2_upgrade: hcl2_upgrade command can now upgrade json var-files [GH-10676] ### BUG FIXES * builder/amazon: Update amazon SDK to fix an SSO login issue. [GH-10668] * builder/azure: Don't overwrite subscription id if unset. [GH-10659] +* builder/hyperv: Make Packer respect winrm_host flag in winrm connect func. + [GH-10748] +* builder/openstack: Make Packer respect winrm_host flag in winrm connect func. + [GH-10748] * builder/oracle-oci: Update Oracle Go SDK to fix issue with reading key file. [GH-10560] +* builder/parallels: Make Packer respect winrm_host flag in winrm connect func. + [GH-10748] +* builder/qemu: Make Packer respect winrm_host flag in winrm connect func. + [GH-10748] +* builder/virtualbox: Make Packer respect winrm_host flag in winrm connect + func. [GH-10748] * builder/vmware: Added a fallback file check when trying to determine the network-mapping configuration. [GH-10543] +* core/hcl2_upgrade: Check for nil config map when provisioner/post-processor + doesn't have config. [GH-10730] * core/hcl2_upgrade: Make hcl2_upgrade command correctly translate pause_before. [GH-10654] +* core/hcl2_upgrade: Make json variables using template engines get stored as + locals so they can be properly interpolated. [GH-10685] +* core: Pin Packer to Golang 1.16 to fix code generation issues. [GH-10702] * core: Templates previously could not interpolate the environment variable PACKER_LOG_PATH. [GH-10660] * provisioner/chef-solo: HCL2 templates can support the json_string option. From f12c89bd8450fc455762266a6606a427b840d40f Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Tue, 16 Mar 2021 13:33:43 -0700 Subject: [PATCH 116/212] add legacy_isotime function to hcl funcs --- hcl2template/function/datetime.go | 51 +++++++++++++++++++++++++++++++ hcl2template/functions.go | 1 + 2 files changed, 52 insertions(+) diff --git a/hcl2template/function/datetime.go b/hcl2template/function/datetime.go index c3b9acc2d..e53454f98 100644 --- a/hcl2template/function/datetime.go +++ b/hcl2template/function/datetime.go @@ -1,12 +1,22 @@ package function import ( + "fmt" "time" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/function" ) +// InitTime is the UTC time when this package was initialized. It is +// used as the timestamp for all configuration templates so that they +// match for a single build. +var InitTime time.Time + +func init() { + InitTime = time.Now().UTC() +} + // TimestampFunc constructs a function that returns a string representation of the current date and time. var TimestampFunc = function.New(&function.Spec{ Params: []function.Parameter{}, @@ -24,3 +34,44 @@ var TimestampFunc = function.New(&function.Spec{ func Timestamp() (cty.Value, error) { return TimestampFunc.Call([]cty.Value{}) } + +// LegacyIsotimeFunc constructs a function that returns a string representation +// of the current date and time using golang's datetime formatting. +var LegacyIsotimeFunc = function.New(&function.Spec{ + Params: []function.Parameter{}, + VarParam: &function.Parameter{ + Name: "format", + Type: cty.String, + }, + Type: function.StaticReturnType(cty.String), + Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { + if len(args) > 1 { + return cty.StringVal(""), fmt.Errorf("too many values, 1 needed: %v", args) + } else if len(args) == 0 { + return cty.StringVal(InitTime.Format(time.RFC3339)), nil + } + format := args[0].AsString() + return cty.StringVal(InitTime.Format(format)), nil + }, +}) + +// LegacyIsotimeFunc returns a string representation of the current date and +// time using the given format string. The format string follows golang's +// datetime formatting. See +// https://www.packer.io/docs/templates/legacy_json_templates/engine#isotime-function-format-reference +// for more details. +// +// This function has been provided to create backwards compatability with +// Packer's legacy JSON templates. However, we recommend that you upgrade your +// HCL Packer template to use Timestamp and FormatDate together as soon as is +// convenient. +// +// Please note that if you are using a large number of builders, provisioners +// or post-processors, the isotime may be slightly different for each one +// because it is from when the plugin is launched not the initial Packer +// process. In order to avoid this and make the timestamp consistent across all +// plugins, set it as a user variable and then access the user variable within +// your plugins. +func LegacyIsotime(format cty.Value) (cty.Value, error) { + return LegacyIsotimeFunc.Call([]cty.Value{format}) +} diff --git a/hcl2template/functions.go b/hcl2template/functions.go index 2e103b95a..fdd900ee4 100644 --- a/hcl2template/functions.go +++ b/hcl2template/functions.go @@ -68,6 +68,7 @@ func Functions(basedir string) map[string]function.Function { "jsondecode": stdlib.JSONDecodeFunc, "jsonencode": stdlib.JSONEncodeFunc, "keys": stdlib.KeysFunc, + "legacy_isotime": pkrfunction.LegacyIsotimeFunc, "length": pkrfunction.LengthFunc, "log": stdlib.LogFunc, "lookup": stdlib.LookupFunc, From d0737dcd17f23ebc535eb2e82ab700b8be15e393 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Wed, 17 Mar 2021 14:26:38 +0100 Subject: [PATCH 117/212] skip DownloadPathKey and ShouldUploadISO on mapstructure-to-hcl2 (#10772) --- builder/proxmox/common/config.go | 4 ++-- builder/proxmox/common/config.hcl2spec.go | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/builder/proxmox/common/config.go b/builder/proxmox/common/config.go index 417f120b0..33810c57d 100644 --- a/builder/proxmox/common/config.go +++ b/builder/proxmox/common/config.go @@ -73,8 +73,8 @@ type additionalISOsConfig struct { ISOFile string `mapstructure:"iso_file"` ISOStoragePool string `mapstructure:"iso_storage_pool"` Unmount bool `mapstructure:"unmount"` - ShouldUploadISO bool - DownloadPathKey string + ShouldUploadISO bool `mapstructure-to-hcl2:",skip"` + DownloadPathKey string `mapstructure-to-hcl2:",skip"` } type nicConfig struct { diff --git a/builder/proxmox/common/config.hcl2spec.go b/builder/proxmox/common/config.hcl2spec.go index ad5aa1b6a..96a5e09e8 100644 --- a/builder/proxmox/common/config.hcl2spec.go +++ b/builder/proxmox/common/config.hcl2spec.go @@ -226,8 +226,6 @@ type FlatadditionalISOsConfig struct { ISOFile *string `mapstructure:"iso_file" cty:"iso_file" hcl:"iso_file"` ISOStoragePool *string `mapstructure:"iso_storage_pool" cty:"iso_storage_pool" hcl:"iso_storage_pool"` Unmount *bool `mapstructure:"unmount" cty:"unmount" hcl:"unmount"` - ShouldUploadISO *bool `cty:"should_upload_iso" hcl:"should_upload_iso"` - DownloadPathKey *string `cty:"download_path_key" hcl:"download_path_key"` } // FlatMapstructure returns a new FlatadditionalISOsConfig. @@ -251,8 +249,6 @@ func (*FlatadditionalISOsConfig) HCL2Spec() map[string]hcldec.Spec { "iso_file": &hcldec.AttrSpec{Name: "iso_file", Type: cty.String, Required: false}, "iso_storage_pool": &hcldec.AttrSpec{Name: "iso_storage_pool", Type: cty.String, Required: false}, "unmount": &hcldec.AttrSpec{Name: "unmount", Type: cty.Bool, Required: false}, - "should_upload_iso": &hcldec.AttrSpec{Name: "should_upload_iso", Type: cty.Bool, Required: false}, - "download_path_key": &hcldec.AttrSpec{Name: "download_path_key", Type: cty.String, Required: false}, } return s } From 3e8641e30e50b294c2e3cffc0a0ff70b5a9c46d6 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Wed, 17 Mar 2021 14:41:46 +0100 Subject: [PATCH 118/212] Delete formatted.pkr.hcl (#10775) --- formatted.pkr.hcl | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 formatted.pkr.hcl diff --git a/formatted.pkr.hcl b/formatted.pkr.hcl deleted file mode 100644 index 88fdacc74..000000000 --- a/formatted.pkr.hcl +++ /dev/null @@ -1,39 +0,0 @@ -source "amazon-ebs" "example" { - communicator = "none" - source_ami = "potato" - ami_name = "potato" - instance_type = "potato" -} - -build { - name = "my-provisioners-are-cooler" - sources = ["source.amazon-ebs.example"] - - provisioner "comment-that-works" { - - } -} - -packer { - required_plugins { - comment = { - source = "sylviamoss/comment" - version = "v0.2.15" - } - comment-that-works = { - source = "sylviamoss/comment" - version = "v0.2.19" - } - } -} - -build { - sources = ["source.amazon-ebs.example"] - - provisioner "comment-my-provisioner" { - - } - provisioner "shell-local" { - inline = ["yo"] - } -} From a6f907c688a5b2b41450ea57d449538f8b8da8b9 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 17 Mar 2021 10:48:55 -0700 Subject: [PATCH 119/212] tests --- hcl2template/function/datetime_test.go | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 hcl2template/function/datetime_test.go diff --git a/hcl2template/function/datetime_test.go b/hcl2template/function/datetime_test.go new file mode 100644 index 000000000..1d90ce53e --- /dev/null +++ b/hcl2template/function/datetime_test.go @@ -0,0 +1,64 @@ +package function + +import ( + "fmt" + "regexp" + "testing" + "time" + + "github.com/zclconf/go-cty/cty" +) + +// HCL template usage example: +// +// locals { +// emptyformat = legacy_isotime() +// golangformat = legacy_isotime("01-02-2006") +// } + +func TestLegacyIsotime_empty(t *testing.T) { + got, err := LegacyIsotimeFunc.Call([]cty.Value{}) + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + + _, err = time.Parse(time.RFC3339, got.AsString()) + if err != nil { + t.Fatalf("Didn't get an RFC3339 string from empty case: %s", err) + } + +} + +func TestLegacyIsotime_inputs(t *testing.T) { + tests := []struct { + Value cty.Value + Want string + }{ + { + cty.StringVal("01-02-2006"), + `^\d{2}-\d{2}-\d{4}$`, + }, + { + cty.StringVal("Mon Jan 02, 2006"), + `^(Mon|Tues|Wed|Thu|Fri|Sat|Sun){1} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec){1} \d{2}, \d{4}$`, + }, + } + + for _, test := range tests { + t.Run(fmt.Sprintf("legacy_isotime(%#v)", test.Value), func(t *testing.T) { + got, err := LegacyIsotime(test.Value) + + if err != nil { + t.Fatalf("unexpected error: %s", err) + } + re, err := regexp.Compile(test.Want) + if err != nil { + t.Fatalf("Bad regular expression test string: %#v", err) + } + + if !re.MatchString(got.AsString()) { + t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, test.Want) + } + }) + } +} From 6986fb0e81c55abcc73c3a1fe36d2a03df98f232 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 17 Mar 2021 14:35:30 -0700 Subject: [PATCH 120/212] make upgrade set isotime func properly --- command/hcl2_upgrade.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index bcc90a6cd..ab6f4ca8d 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -336,8 +336,12 @@ func transposeTemplatingCalls(s []byte) []byte { return "${local.timestamp}" }, "isotime": func(a ...string) string { - timestamp = true - return "${local.timestamp}" + if len(a) == 0 { + return "${legacy_isotime()}" + } + // otherwise a valid isotime func has one input. + return fmt.Sprintf("${legacy_isotime(\"%s\")}", a[0]) + }, "user": func(in string) string { if _, ok := localsVariableMap[in]; ok { From 0ecc4b5e52bfa93504695971cf29d4b4b7203499 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 17 Mar 2021 16:06:19 -0700 Subject: [PATCH 121/212] add annotation warning to isotime func usage --- command/hcl2_upgrade.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index ab6f4ca8d..8f6af2046 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -120,6 +120,7 @@ var ( amazonSecretsManagerMap = map[string]map[string]interface{}{} localsVariableMap = map[string]string{} timestamp = false + isotime = false ) type BlockParser interface { @@ -337,9 +338,11 @@ func transposeTemplatingCalls(s []byte) []byte { }, "isotime": func(a ...string) string { if len(a) == 0 { - return "${legacy_isotime()}" + // returns rfc3339 formatted string. + return "${timestamp()}" } // otherwise a valid isotime func has one input. + isotime = true return fmt.Sprintf("${legacy_isotime(\"%s\")}", a[0]) }, @@ -775,6 +778,9 @@ func (p *LocalsParser) Write(out *bytes.Buffer) { } fmt.Fprintln(out, `locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") }`) } + if isotime { + fmt.Fprintln(out, `# The "legacy_isotime" function has been provided for backwards compatability, but we recommend switching to the timestamp and formatdate functions.`) + } if len(p.LocalsOut) > 0 { if p.WithAnnotations { out.Write([]byte(localsVarHeader)) From 0f541aaf5e2c835ce808485de906f2378023cb3a Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Thu, 18 Mar 2021 16:24:34 +0100 Subject: [PATCH 122/212] Update CONTRIBUTING.md (#10782) --- .github/CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8e39ab76d..91e52b3ac 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,6 +11,12 @@ contribute to the project, read on. This document will cover what we're looking for. By addressing all the points we're looking for, it raises the chances we can quickly merge or address your contributions. +When contributing in any way to the Packer project (new issue, PR, etc), please +be aware that our team identifies with many gender pronouns. Please remember to +use nonbinary pronouns (they/them) and gender neutral language ("Hello folks") +when addressing our team. For more reading on our code of conduct, please see the +[HashiCorp community guidelines](https://www.hashicorp.com/community-guidelines). + ## Issues ### Reporting an Issue From 3227d3da434fc5749cef761638a067fd915c3848 Mon Sep 17 00:00:00 2001 From: Ace Eldeib Date: Thu, 18 Mar 2021 09:09:57 -0700 Subject: [PATCH 123/212] clean up azure temporary managed os disk (#10713) * clean up temporary managed os disk * improve message for skipping disk deletion Co-authored-by: Wilken Rivera * re-arrange osdisk/additional disk cleanup Co-authored-by: Wilken Rivera * remove additional disk cleanup * add some validation on scenarios * alway clean up resources inside template cleanup * tidy to master * clarify naming and comments Co-authored-by: Wilken Rivera * test: add acceptance testing for azure cleanup * revert template changes * fix err check * delete resources in parallel with retry to avoid serial deletion * nit: improve log message for transient deletion errors * fix: typo * remove unused func to make lint happy Co-authored-by: Wilken Rivera --- builder/azure/arm/builder_acc_test.go | 122 +++++++++++++++++- builder/azure/arm/step_deploy_template.go | 121 +++++++++++------ .../azure/arm/step_deploy_template_test.go | 87 +++++++++++++ 3 files changed, 280 insertions(+), 50 deletions(-) diff --git a/builder/azure/arm/builder_acc_test.go b/builder/azure/arm/builder_acc_test.go index ddd98af57..046dcb356 100644 --- a/builder/azure/arm/builder_acc_test.go +++ b/builder/azure/arm/builder_acc_test.go @@ -20,12 +20,18 @@ package arm // go test -v -timeout 90m -run TestBuilderAcc_.* import ( - "testing" - + "bytes" + "context" + "errors" "fmt" "os" + "strings" + "testing" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure/auth" builderT "github.com/hashicorp/packer-plugin-sdk/acctest" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" ) const DeviceLoginAcceptanceTest = "DEVICELOGIN_TEST" @@ -96,10 +102,15 @@ func TestBuilderAcc_ManagedDisk_Linux_AzureCLI(t *testing.T) { return } + var b Builder builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, + PreCheck: func() { testAuthPreCheck(t) }, + Builder: &b, Template: testBuilderAccManagedDiskLinuxAzureCLI, + Check: func([]packersdk.Artifact) error { + checkTemporaryGroupDeleted(t, &b) + return nil + }, }) } @@ -112,15 +123,108 @@ func TestBuilderAcc_Blob_Windows(t *testing.T) { } func TestBuilderAcc_Blob_Linux(t *testing.T) { + var b Builder builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, + PreCheck: func() { testAuthPreCheck(t) }, + Builder: &b, Template: testBuilderAccBlobLinux, + Check: func([]packersdk.Artifact) error { + checkUnmanagedVHDDeleted(t, &b) + return nil + }, }) } func testAccPreCheck(*testing.T) {} +func testAuthPreCheck(t *testing.T) { + _, err := auth.NewAuthorizerFromEnvironment() + if err != nil { + t.Fatalf("failed to auth to azure: %s", err) + } +} + +func checkTemporaryGroupDeleted(t *testing.T, b *Builder) { + ui := testUi() + + spnCloud, spnKeyVault, err := b.getServicePrincipalTokens(ui.Say) + if err != nil { + t.Fatalf("failed getting azure tokens: %s", err) + } + + ui.Message("Creating test Azure Resource Manager (ARM) client ...") + azureClient, err := NewAzureClient( + b.config.ClientConfig.SubscriptionID, + b.config.SharedGalleryDestination.SigDestinationSubscription, + b.config.ResourceGroupName, + b.config.StorageAccount, + b.config.ClientConfig.CloudEnvironment(), + b.config.SharedGalleryTimeout, + b.config.PollingDurationTimeout, + spnCloud, + spnKeyVault) + + if err != nil { + t.Fatalf("failed to create azure client: %s", err) + } + + // Validate resource group has been deleted + _, err = azureClient.GroupsClient.Get(context.Background(), b.config.tmpResourceGroupName) + if err == nil || !resourceNotFound(err) { + t.Fatalf("failed validating resource group deletion: %s", err) + } +} + +func checkUnmanagedVHDDeleted(t *testing.T, b *Builder) { + ui := testUi() + + spnCloud, spnKeyVault, err := b.getServicePrincipalTokens(ui.Say) + if err != nil { + t.Fatalf("failed getting azure tokens: %s", err) + } + + azureClient, err := NewAzureClient( + b.config.ClientConfig.SubscriptionID, + b.config.SharedGalleryDestination.SigDestinationSubscription, + b.config.ResourceGroupName, + b.config.StorageAccount, + b.config.ClientConfig.CloudEnvironment(), + b.config.SharedGalleryTimeout, + b.config.PollingDurationTimeout, + spnCloud, + spnKeyVault) + + if err != nil { + t.Fatalf("failed to create azure client: %s", err) + } + + // validate temporary os blob was deleted + blob := azureClient.BlobStorageClient.GetContainerReference("images").GetBlobReference(b.config.tmpOSDiskName) + _, err = blob.BreakLease(nil) + if err != nil && !strings.Contains(err.Error(), "BlobNotFound") { + t.Fatalf("failed validating deletion of unmanaged vhd: %s", err) + } + + // Validate resource group has been deleted + _, err = azureClient.GroupsClient.Get(context.Background(), b.config.tmpResourceGroupName) + if err == nil || !resourceNotFound(err) { + t.Fatalf("failed validating resource group deletion: %s", err) + } +} + +func resourceNotFound(err error) bool { + derr := autorest.DetailedError{} + return errors.As(err, &derr) && derr.StatusCode == 404 +} + +func testUi() *packersdk.BasicUi { + return &packersdk.BasicUi{ + Reader: new(bytes.Buffer), + Writer: new(bytes.Buffer), + ErrorWriter: new(bytes.Buffer), + } +} + const testBuilderAccManagedDiskWindows = ` { "variables": { @@ -155,6 +259,7 @@ const testBuilderAccManagedDiskWindows = ` }] } ` + const testBuilderAccManagedDiskWindowsBuildResourceGroup = ` { "variables": { @@ -287,6 +392,7 @@ const testBuilderAccManagedDiskLinux = ` }] } ` + const testBuilderAccManagedDiskLinuxDeviceLogin = ` { "variables": { @@ -379,6 +485,7 @@ const testBuilderAccBlobLinux = ` }] } ` + const testBuilderAccManagedDiskLinuxAzureCLI = ` { "builders": [{ @@ -388,7 +495,8 @@ const testBuilderAccManagedDiskLinuxAzureCLI = ` "managed_image_resource_group_name": "packer-acceptance-test", "managed_image_name": "testBuilderAccManagedDiskLinuxAzureCLI-{{timestamp}}", - + "temp_resource_group_name": "packer-acceptance-test-managed-cli", + "os_type": "Linux", "image_publisher": "Canonical", "image_offer": "UbuntuServer", diff --git a/builder/azure/arm/step_deploy_template.go b/builder/azure/arm/step_deploy_template.go index 0ac029f60..0390ff985 100644 --- a/builder/azure/arm/step_deploy_template.go +++ b/builder/azure/arm/step_deploy_template.go @@ -6,6 +6,7 @@ import ( "fmt" "net/url" "strings" + "sync" "time" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -15,16 +16,17 @@ import ( ) type StepDeployTemplate struct { - client *AzureClient - deploy func(ctx context.Context, resourceGroupName string, deploymentName string) error - delete func(ctx context.Context, deploymentName, resourceGroupName string) error - disk func(ctx context.Context, resourceGroupName string, computeName string) (string, string, error) - deleteDisk func(ctx context.Context, imageType string, imageName string, resourceGroupName string) error - say func(message string) - error func(e error) - config *Config - factory templateFactoryFunc - name string + client *AzureClient + deploy func(ctx context.Context, resourceGroupName string, deploymentName string) error + delete func(ctx context.Context, deploymentName, resourceGroupName string) error + disk func(ctx context.Context, resourceGroupName string, computeName string) (string, string, error) + deleteDisk func(ctx context.Context, imageType string, imageName string, resourceGroupName string) error + deleteDeployment func(ctx context.Context, state multistep.StateBag) error + say func(message string) + error func(e error) + config *Config + factory templateFactoryFunc + name string } func NewStepDeployTemplate(client *AzureClient, ui packersdk.Ui, config *Config, deploymentName string, factory templateFactoryFunc) *StepDeployTemplate { @@ -41,6 +43,7 @@ func NewStepDeployTemplate(client *AzureClient, ui packersdk.Ui, config *Config, step.delete = step.deleteDeploymentResources step.disk = step.getImageDetails step.deleteDisk = step.deleteImage + step.deleteDeployment = step.deleteDeploymentObject return step } @@ -58,32 +61,45 @@ func (s *StepDeployTemplate) Run(ctx context.Context, state multistep.StateBag) func (s *StepDeployTemplate) Cleanup(state multistep.StateBag) { defer func() { - err := s.deleteTemplate(context.Background(), state) + err := s.deleteDeployment(context.Background(), state) if err != nil { - s.say(s.client.LastError.Error()) + s.say(err.Error()) } }() - // Only clean up if this is an existing resource group that has been verified to exist. - // ArmIsResourceGroupCreated is set in step_create_resource_group to true, when Packer has verified that the resource group exists. - // ArmIsExistingResourceGroup is set to true when build_resource_group is set in the Packer configuration. - existingResourceGroup := state.Get(constants.ArmIsExistingResourceGroup).(bool) - resourceGroupCreated := state.Get(constants.ArmIsResourceGroupCreated).(bool) - if !existingResourceGroup || !resourceGroupCreated { - return - } - ui := state.Get("ui").(packersdk.Ui) - ui.Say("\nThe resource group was not created by Packer, deleting individual resources ...") + ui.Say("\nDeleting individual resources ...") deploymentName := s.name resourceGroupName := state.Get(constants.ArmResourceGroupName).(string) - err := s.deleteDeploymentResources(context.TODO(), deploymentName, resourceGroupName) + // Get image disk details before deleting the image; otherwise we won't be able to + // delete the disk as the image request will return a 404 + computeName := state.Get(constants.ArmComputeName).(string) + imageType, imageName, err := s.disk(context.TODO(), resourceGroupName, computeName) + + if err != nil && !strings.Contains(err.Error(), "ResourceNotFound") { + ui.Error(fmt.Sprintf("Could not retrieve OS Image details: %s", err)) + } + err = s.delete(context.TODO(), deploymentName, resourceGroupName) if err != nil { s.reportIfError(err, resourceGroupName) } - NewStepDeleteAdditionalDisks(s.client, ui).Run(context.TODO(), state) + // The disk was not found on the VM, this is an error. + if imageType == "" && imageName == "" { + ui.Error(fmt.Sprintf("Failed to find temporary OS disk on VM. Please delete manually.\n\n"+ + "VM Name: %s\n"+ + "Error: %s", computeName, err)) + return + } + + ui.Say(fmt.Sprintf(" Deleting -> %s : '%s'", imageType, imageName)) + err = s.deleteDisk(context.TODO(), imageType, imageName, resourceGroupName) + if err != nil { + ui.Error(fmt.Sprintf("Error deleting resource. Please delete manually.\n\n"+ + "Name: %s\n"+ + "Error: %s", imageName, err)) + } } func (s *StepDeployTemplate) deployTemplate(ctx context.Context, resourceGroupName string, deploymentName string) error { @@ -106,7 +122,7 @@ func (s *StepDeployTemplate) deployTemplate(ctx context.Context, resourceGroupNa return err } -func (s *StepDeployTemplate) deleteTemplate(ctx context.Context, state multistep.StateBag) error { +func (s *StepDeployTemplate) deleteDeploymentObject(ctx context.Context, state multistep.StateBag) error { deploymentName := s.name resourceGroupName := state.Get(constants.ArmResourceGroupName).(string) ui := state.Get("ui").(packersdk.Ui) @@ -222,6 +238,8 @@ func (s *StepDeployTemplate) deleteDeploymentResources(ctx context.Context, depl return err } + resources := map[string]string{} + for deploymentOperations.NotDone() { deploymentOperation := deploymentOperations.Value() // Sometimes an empty operation is added to the list by Azure @@ -233,30 +251,47 @@ func (s *StepDeployTemplate) deleteDeploymentResources(ctx context.Context, depl resourceName := *deploymentOperation.Properties.TargetResource.ResourceName resourceType := *deploymentOperation.Properties.TargetResource.ResourceType - s.say(fmt.Sprintf(" -> %s : '%s'", resourceType, resourceName)) - - err = retry.Config{ - Tries: 10, - RetryDelay: (&retry.Backoff{InitialBackoff: 10 * time.Second, MaxBackoff: 600 * time.Second, Multiplier: 2}).Linear, - }.Run(ctx, func(ctx context.Context) error { - err := deleteResource(ctx, s.client, - resourceType, - resourceName, - resourceGroupName) - if err != nil { - s.reportIfError(err, resourceName) - } - return nil - }) - if err != nil { - s.reportIfError(err, resourceName) - } + s.say(fmt.Sprintf("Adding to deletion queue -> %s : '%s'", resourceType, resourceName)) + resources[resourceType] = resourceName if err = deploymentOperations.Next(); err != nil { return err } } + var wg sync.WaitGroup + wg.Add(len(resources)) + + for resourceType, resourceName := range resources { + go func(resourceType, resourceName string) { + defer wg.Done() + retryConfig := retry.Config{ + Tries: 10, + RetryDelay: (&retry.Backoff{InitialBackoff: 10 * time.Second, MaxBackoff: 600 * time.Second, Multiplier: 2}).Linear, + } + + err = retryConfig.Run(ctx, func(ctx context.Context) error { + s.say(fmt.Sprintf("Attempting deletion -> %s : '%s'", resourceType, resourceName)) + err := deleteResource(ctx, s.client, + resourceType, + resourceName, + resourceGroupName) + if err != nil { + s.say(fmt.Sprintf("Error deleting resource. Will retry.\n"+ + "Name: %s\n"+ + "Error: %s\n", resourceName, err.Error())) + } + return err + }) + if err != nil { + s.reportIfError(err, resourceName) + } + }(resourceType, resourceName) + } + + s.say("Waiting for deletion of all resources...") + wg.Wait() + return nil } diff --git a/builder/azure/arm/step_deploy_template_test.go b/builder/azure/arm/step_deploy_template_test.go index e24daf0d1..a29ef2a0c 100644 --- a/builder/azure/arm/step_deploy_template_test.go +++ b/builder/azure/arm/step_deploy_template_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/hashicorp/packer-plugin-sdk/multistep" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer/builder/azure/common/constants" ) @@ -108,11 +109,97 @@ func TestStepDeployTemplateDeleteImageShouldFailWithInvalidImage(t *testing.T) { } } +func TestStepDeployTemplateCleanupShouldDeleteManagedOSImageInExistingResourceGroup(t *testing.T) { + var deleteDiskCounter = 0 + var testSubject = createTestStepDeployTemplateDeleteOSImage(&deleteDiskCounter) + + stateBag := createTestStateBagStepDeployTemplate() + stateBag.Put(constants.ArmIsManagedImage, true) + stateBag.Put(constants.ArmIsExistingResourceGroup, true) + stateBag.Put(constants.ArmIsResourceGroupCreated, true) + stateBag.Put("ui", packersdk.TestUi(t)) + + testSubject.Cleanup(stateBag) + if deleteDiskCounter != 1 { + t.Fatalf("Expected DeployTemplate Cleanup to invoke deleteDisk 1 time, but invoked %d times", deleteDiskCounter) + } +} + +func TestStepDeployTemplateCleanupShouldDeleteManagedOSImageInTemporaryResourceGroup(t *testing.T) { + var deleteDiskCounter = 0 + var testSubject = createTestStepDeployTemplateDeleteOSImage(&deleteDiskCounter) + + stateBag := createTestStateBagStepDeployTemplate() + stateBag.Put(constants.ArmIsManagedImage, true) + stateBag.Put(constants.ArmIsExistingResourceGroup, false) + stateBag.Put(constants.ArmIsResourceGroupCreated, true) + stateBag.Put("ui", packersdk.TestUi(t)) + + testSubject.Cleanup(stateBag) + if deleteDiskCounter != 1 { + t.Fatalf("Expected DeployTemplate Cleanup to invoke deleteDisk 1 times, but invoked %d times", deleteDiskCounter) + } +} + +func TestStepDeployTemplateCleanupShouldDeleteVHDOSImageInExistingResourceGroup(t *testing.T) { + var deleteDiskCounter = 0 + var testSubject = createTestStepDeployTemplateDeleteOSImage(&deleteDiskCounter) + + stateBag := createTestStateBagStepDeployTemplate() + stateBag.Put(constants.ArmIsManagedImage, false) + stateBag.Put(constants.ArmIsExistingResourceGroup, true) + stateBag.Put(constants.ArmIsResourceGroupCreated, true) + stateBag.Put("ui", packersdk.TestUi(t)) + + testSubject.Cleanup(stateBag) + if deleteDiskCounter != 1 { + t.Fatalf("Expected DeployTemplate Cleanup to invoke deleteDisk 1 time, but invoked %d times", deleteDiskCounter) + } +} + +func TestStepDeployTemplateCleanupShouldVHDOSImageInTemporaryResourceGroup(t *testing.T) { + var deleteDiskCounter = 0 + var testSubject = createTestStepDeployTemplateDeleteOSImage(&deleteDiskCounter) + + stateBag := createTestStateBagStepDeployTemplate() + stateBag.Put(constants.ArmIsManagedImage, false) + stateBag.Put(constants.ArmIsExistingResourceGroup, false) + stateBag.Put(constants.ArmIsResourceGroupCreated, true) + stateBag.Put("ui", packersdk.TestUi(t)) + + testSubject.Cleanup(stateBag) + if deleteDiskCounter != 1 { + t.Fatalf("Expected DeployTemplate Cleanup to invoke deleteDisk 1 times, but invoked %d times", deleteDiskCounter) + } +} + func createTestStateBagStepDeployTemplate() multistep.StateBag { stateBag := new(multistep.BasicStateBag) stateBag.Put(constants.ArmDeploymentName, "Unit Test: DeploymentName") stateBag.Put(constants.ArmResourceGroupName, "Unit Test: ResourceGroupName") + stateBag.Put(constants.ArmComputeName, "Unit Test: ComputeName") return stateBag } + +func createTestStepDeployTemplateDeleteOSImage(deleteDiskCounter *int) *StepDeployTemplate { + return &StepDeployTemplate{ + deploy: func(context.Context, string, string) error { return nil }, + say: func(message string) {}, + error: func(e error) {}, + deleteDisk: func(ctx context.Context, imageType string, imageName string, resourceGroupName string) error { + *deleteDiskCounter++ + return nil + }, + disk: func(ctx context.Context, resourceGroupName, computeName string) (string, string, error) { + return "Microsoft.Compute/disks", "", nil + }, + delete: func(ctx context.Context, deploymentName, resourceGroupName string) error { + return nil + }, + deleteDeployment: func(ctx context.Context, state multistep.StateBag) error { + return nil + }, + } +} From 341308c58247ff932eb12333cdab4649b7162073 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:21:53 -0400 Subject: [PATCH 124/212] website: add refactored remote-plugin-docs utilities --- .../utils/fetch-plugin-docs.js | 61 +++++ .../utils/parse-docs-zip.js | 44 ++++ .../utils/parse-source-zip.js | 49 ++++ .../utils/resolve-nav-data.js | 218 ++++++++++++++++++ .../utils/validate-plugin-docs-files.js | 46 ++++ 5 files changed, 418 insertions(+) create mode 100644 website/components/remote-plugin-docs/utils/fetch-plugin-docs.js create mode 100644 website/components/remote-plugin-docs/utils/parse-docs-zip.js create mode 100644 website/components/remote-plugin-docs/utils/parse-source-zip.js create mode 100644 website/components/remote-plugin-docs/utils/resolve-nav-data.js create mode 100644 website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js diff --git a/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js b/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js new file mode 100644 index 000000000..d02930ca2 --- /dev/null +++ b/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js @@ -0,0 +1,61 @@ +const fetch = require('isomorphic-unfetch') +const parseSourceZip = require('./parse-source-zip') +const parseDocsZip = require('./parse-docs-zip') + +// Given a repo and tag, +// +// return [null, docsMdxFiles] if docs files +// are successfully fetched and valid, +// where docsMdxFiles is an array of { filePath, fileString } items. +// +// otherwise, return [err, null] +// where err is an error message describing whether the +// docs files were missing or invalid, with a path to resolution +async function fetchDocsFiles({ repo, tag }) { + // If there's a docs.zip asset, we'll prefer that + const docsZipUrl = `https://github.com/${repo}/releases/download/${tag}/docs.zip` + const docsZipResponse = await fetch(docsZipUrl, { method: 'GET' }) + const hasDocsZip = docsZipResponse.status === 200 + // Note: early return! + if (hasDocsZip) return await parseDocsZip(docsZipResponse) + // Else if docs.zip is not present, and we only have the "latest" tag, + // then throw an error - we can't resolve the fallback source ZIP + // unless we resort to calling the GitHub API, which we do not want to do + if (tag === 'latest') { + const err = `Failed to fetch. Could not find "docs.zip" at ${docsZipUrl}. To fall back to parsing docs from "source", please provide a specific tag instead of "${tag}".` + return [err, null] + } + // Else if docs.zip is not present, and we have a specific tag, then + // fall back to parsing docs files from the source zip + const sourceZipUrl = `https://github.com/${repo}/archive/${tag}.zip` + const sourceZipResponse = await fetch(sourceZipUrl, { method: 'GET' }) + const missingSourceZip = sourceZipResponse.status !== 200 + if (missingSourceZip) { + const err = `Failed to fetch. Could not find "docs.zip" at ${docsZipUrl}, and could not find fallback source ZIP at ${sourceZipUrl}. Please ensure one of these assets is available.` + return [err, null] + } + // Handle parsing from plugin source zip + return await parseSourceZip(sourceZipResponse) +} + +async function fetchPluginDocs({ repo, tag }) { + const [err, docsMdxFiles] = await fetchDocsFiles({ repo, tag }) + if (err) { + const errMsg = `Invalid plugin docs ${repo}, on release ${tag}. ${err}` + throw new Error(errMsg) + } + return docsMdxFiles +} + +function memoize(method) { + let cache = {} + return async function () { + let args = JSON.stringify(arguments) + if (!cache[args]) { + cache[args] = method.apply(this, arguments) + } + return cache[args] + } +} + +module.exports = memoize(fetchPluginDocs) diff --git a/website/components/remote-plugin-docs/utils/parse-docs-zip.js b/website/components/remote-plugin-docs/utils/parse-docs-zip.js new file mode 100644 index 000000000..69563877e --- /dev/null +++ b/website/components/remote-plugin-docs/utils/parse-docs-zip.js @@ -0,0 +1,44 @@ +const path = require('path') +const AdmZip = require('adm-zip') +const validatePluginDocsFiles = require('./validate-plugin-docs-files') + +// Given a response from fetching a docs.zip file, +// which is a compressed "docs" folder, +// +// return [null, docsMdxFiles] if docs files +// are successfully fetched and valid, +// where docsMdxFiles is an array of { filePath, fileString } items. +// +// otherwise, return [err, null] +// where err is an error message describing whether the +// docs files were missing or invalid, with a path to resolution +async function parseDocsZip(response) { + // the file path from the repo root is the same as the zip entryName, + // which includes the docs directory as the first part of the path + const responseBuffer = Buffer.from(await response.arrayBuffer()) + const responseZip = new AdmZip(responseBuffer) + const docsEntries = responseZip.getEntries() + // Validate the file paths within the "docs" folder + const docsFilePaths = docsEntries.map((e) => e.entryName) + const validationError = validatePluginDocsFiles(docsFilePaths) + if (validationError) return [validationError, null] + // If valid, filter for MDX files only, and return + // a { filePath, fileString } object for each mdx file + const docsMdxFiles = docsEntries + .filter((e) => { + return path.extname(e.entryName) === '.mdx' + }) + .map((e) => { + const filePath = e.entryName + const fileString = e.getData().toString() + return { filePath, fileString } + }) + return [null, docsMdxFiles] +} + +/* + const dirs = path.dirname(e.entryName).split('/') + const pathFromDocsDir = dirs.slice(1).join('/') + */ + +module.exports = parseDocsZip diff --git a/website/components/remote-plugin-docs/utils/parse-source-zip.js b/website/components/remote-plugin-docs/utils/parse-source-zip.js new file mode 100644 index 000000000..07a26ad6a --- /dev/null +++ b/website/components/remote-plugin-docs/utils/parse-source-zip.js @@ -0,0 +1,49 @@ +const path = require('path') +const AdmZip = require('adm-zip') +const validatePluginDocsFiles = require('./validate-plugin-docs-files') + +// Given a response from fetching a source .zip file, +// which contains a "docs" folder, +// +// return [null, docsMdxFiles] if docs files +// are successfully fetched and valid, +// where docsMdxFiles is an array of { filePath, fileString } items. +// +// otherwise, return [err, null] +// where err is an error message describing whether the +// docs files were missing or invalid, with a path to resolution +async function parseSourceZip(response) { + const responseBuffer = Buffer.from(await response.arrayBuffer()) + const responseZip = new AdmZip(responseBuffer) + const sourceEntries = responseZip.getEntries() + const docsEntries = sourceEntries.filter((entry) => { + // filter for zip entries in the docs subfolder only + const dirs = path.dirname(entry.entryName).split('/') + return dirs.length > 1 && dirs[1] === 'docs' + }) + // Validate the file paths within the "docs" folder + const docsFilePaths = docsEntries.map((e) => { + // We need to remove the leading directory, + // which will be something like packer-plugin-docs-0.0.5 + const filePath = e.entryName.split('/').slice(1).join('/') + return filePath + }) + const validationError = validatePluginDocsFiles(docsFilePaths) + if (validationError) return [validationError, null] + // If valid, filter for MDX files only, and return + // a { filePath, fileString } object for each mdx file + const docsMdxFiles = docsEntries + .filter((e) => { + return path.extname(e.entryName) === '.mdx' + }) + .map((e) => { + // We need to remove the leading directory, + // which will be something like packer-plugin-docs-0.0.5 + const filePath = e.entryName.split('/').slice(1).join('/') + const fileString = e.getData().toString() + return { filePath, fileString } + }) + return [null, docsMdxFiles] +} + +module.exports = parseSourceZip diff --git a/website/components/remote-plugin-docs/utils/resolve-nav-data.js b/website/components/remote-plugin-docs/utils/resolve-nav-data.js new file mode 100644 index 000000000..837feb6b4 --- /dev/null +++ b/website/components/remote-plugin-docs/utils/resolve-nav-data.js @@ -0,0 +1,218 @@ +const fs = require('fs') +const path = require('path') +const grayMatter = require('gray-matter') +const fetchPluginDocs = require('./fetch-plugin-docs') +const validateFilePaths = require('@hashicorp/react-docs-sidenav/utils/validate-file-paths') +const validateRouteStructure = require('@hashicorp/react-docs-sidenav/utils/validate-route-structure') + +/** + * Resolves nav-data from file, including optional + * resolution of remote plugin docs entries + * + * @param {string} navDataFile path to the nav-data.json file, relative to the cwd. Example: "data/docs-nav-data.json". + * @param {string} localContentDir path to the content root, relative to the cwd. Example: "content/docs". + * @param {object} options optional configuration object + * @param {string} options.remotePluginsFile path to a remote-plugins.json file, relative to the cwd. Example: "data/docs-remote-plugins.json". + * @returns {array} the resolved navData. This includes NavBranch nodes pulled from remote plugin repositories, as well as filePath properties on all local NavLeaf nodes, and remoteFile properties on all NavLeafRemote nodes. + */ +async function resolveNavData(navDataFile, localContentDir, options = {}) { + const { remotePluginsFile } = options + // Read in files + const navDataPath = path.join(process.cwd(), navDataFile) + const navData = JSON.parse(fs.readFileSync(navDataPath, 'utf8')) + // Fetch remote plugin docs, if applicable + let withPlugins = navData + if (remotePluginsFile) { + // Resolve plugins, this yields branches with NavLeafRemote nodes + withPlugins = await mergeRemotePlugins(remotePluginsFile, navData) + } + // Resolve local filePaths for NavLeaf nodes + const withFilePaths = await validateFilePaths(withPlugins, localContentDir) + validateRouteStructure(withFilePaths) + // Return the nav data with: + // 1. Plugins merged, transformed into navData structures with NavLeafRemote nodes + // 2. filePaths added to all local NavLeaf nodes + return withFilePaths +} + +// Given a remote plugins config file, and the full tree of docs navData which +// contains top-level branch routes that match plugin component types, +// fetch and parse all remote plugin docs, merge them into the +// broader tree of docs navData, and return the docs navData +// with the merged plugin docs +async function mergeRemotePlugins(remotePluginsFile, navData) { + // Read in and parse the plugin configuration JSON + const remotePluginsPath = path.join(process.cwd(), remotePluginsFile) + const pluginEntries = JSON.parse(fs.readFileSync(remotePluginsPath, 'utf-8')) + // Add navData for each plugin's component. + // Note that leaf nodes include a remoteFile property object with the full MDX fileString + const pluginEntriesWithDocs = await Promise.all( + pluginEntries.map(resolvePluginEntryDocs) + ) + // group navData by component type, to prepare to merge plugin docs + // into the broader tree of navData. + const pluginDocsByComponent = pluginEntriesWithDocs.reduce( + (acc, pluginEntry) => { + const { components } = pluginEntry + Object.keys(components).forEach((type) => { + const navData = components[type] + if (!navData) return + if (!acc[type]) acc[type] = [] + acc[type].push(navData[0]) + }) + return acc + }, + {} + ) + // merge plugin docs, by plugin component type, + // into the corresponding top-level component NavBranch + const navDataWithPlugins = navData.slice().map((n) => { + // we only care about top-level NavBranch nodes + if (!n.routes) return n + // for each component type, check if this NavBranch + // is the parent route for that type + const componentTypes = Object.keys(pluginDocsByComponent) + let typeMatch = false + for (var i = 0; i < componentTypes.length; i++) { + const componentType = componentTypes[i] + const routeMatches = n.routes.filter((r) => r.path === componentType) + if (routeMatches.length > 0) { + typeMatch = componentType + break + } + } + // if this NavBranch does not match a component type slug, + // then return it unmodified + if (!typeMatch) return n + // if there are no matching remote plugin components, + // then return the navBranch unmodified + const pluginsOfType = pluginDocsByComponent[typeMatch] + if (!pluginsOfType || pluginsOfType.length == 0) return n + // if this NavBranch is the parent route for the type, + // then append all remote plugins of this type to the + // NavBranch's child routes + const routesWithPlugins = n.routes.slice().concat(pluginsOfType) + // console.log(JSON.stringify(routesWithPlugins, null, 2)) + // Also, sort the child routes so the order is alphabetical + routesWithPlugins.sort((a, b) => { + // (exception: "Overview" comes first) + if (a.title == 'Overview') return -1 + if (b.title === 'Overview') return 1 + // (exception: "Community-Supported" comes last) + if (a.title == 'Community-Supported') return 1 + if (b.title === 'Community-Supported') return -1 + // (exception: "Custom" comes second-last) + if (a.title == 'Custom') return 1 + if (b.title === 'Custom') return -1 + return a.title < b.title ? -1 : a.title > b.title ? 1 : 0 + }) + // return n + return { ...n, routes: routesWithPlugins } + }) + // return the merged navData, which now includes special NavLeaf nodes + // for plugin docs with { filePath, fileString } remoteFile properties + return navDataWithPlugins +} + +// Fetch remote plugin docs .mdx files, and +// transform each plugin's array of .mdx files into navData. +// Organize this navData by component, add it to the plugin config entry, +// and return the modified entry. +// +// Note that navData leaf nodes have a special remoteFile property, +// which contains { filePath, fileString } data for the remote +// plugin doc .mdx file +async function resolvePluginEntryDocs(pluginConfigEntry) { + const { title, path: slug, repo, version } = pluginConfigEntry + const docsMdxFiles = await fetchPluginDocs({ repo, tag: version }) + // We construct a special kind of "NavLeaf" node, with a remoteFile property, + // consisting of a { filePath, fileString, sourceUrl }, where: + // - filePath is the path to the source file in the source repo + // - fileString is a string representing the file source + // - sourceUrl is a link to the original file in the source repo + // We also add a pluginTier attribute + const navNodes = docsMdxFiles.map((mdxFile) => { + const { filePath, fileString } = mdxFile + // Process into a NavLeaf, with a remoteFile attribute + const dirs = path.dirname(filePath).split('/') + const dirUrl = dirs.slice(2).join('/') + const basename = path.basename(filePath) + // build urlPath + // note that this will be prefixed to get to our final path + const isIndexFile = basename === 'index' + const urlPath = isIndexFile ? dirUrl : path.join(dirUrl, basename) + // parse title, either from frontmatter or file name + const { data: frontmatter } = grayMatter(fileString) + const { nav_title, sidebar_title } = frontmatter + const title = nav_title || sidebar_title || basename + // construct sourceUrl + const sourceUrl = `https://github.com/${repo}/blob/${version}/${filePath}` + // determine pluginTier + const pluginOwner = repo.split('/')[0] + const pluginTier = pluginOwner === 'hashicorp' ? 'official' : 'community' + // Construct and return a NavLeafRemote node + return { + title, + path: urlPath, + remoteFile: { filePath, fileString, sourceUrl }, + pluginTier, + } + }) + // + const navNodesByComponent = navNodes.reduce((acc, navLeaf) => { + const componentType = navLeaf.remoteFile.filePath.split('/')[1] + if (!acc[componentType]) acc[componentType] = [] + acc[componentType].push(navLeaf) + return acc + }, {}) + // + const components = Object.keys(navNodesByComponent).map((type) => { + // Plugins many not contain every component type, + // we return null if this is the case + const rawNavNodes = navNodesByComponent[type] + if (!rawNavNodes) return null + // Avoid unnecessary nesting if there's only a single doc file + const navData = normalizeNavNodes(title, rawNavNodes) + // Prefix paths to fit into broader docs nav-data + const pathPrefix = path.join(type, slug) + const withPrefixedPaths = visitNavLeaves(navData, (n) => { + const prefixedPath = path.join(pathPrefix, n.path) + return { ...n, path: prefixedPath } + }) + // + return { type, navData: withPrefixedPaths } + }) + const componentsObj = components.reduce((acc, component) => { + if (!component) return acc + acc[component.type] = component.navData + return acc + }, {}) + return { ...pluginConfigEntry, components: componentsObj } +} + +// For components with a single doc file, transform so that +// a single leaf node renders, rather than a nav branch +function normalizeNavNodes(pluginName, routes) { + const isSingleLeaf = + routes.length === 1 && typeof routes[0].path !== 'undefined' + const navData = isSingleLeaf + ? [{ ...routes[0], path: '' }] + : [{ title: pluginName, routes }] + return navData +} + +// Traverse a clone of the given navData, +// modifying any NavLeaf nodes with the provided visitFn +function visitNavLeaves(navData, visitFn) { + return navData.slice().map((navNode) => { + if (typeof navNode.path !== 'undefined') { + return visitFn(navNode) + } + if (navNode.routes) { + return { ...navNode, routes: visitNavLeaves(navNode.routes, visitFn) } + } + return navNode + }) +} + +module.exports = resolveNavData diff --git a/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js b/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js new file mode 100644 index 000000000..e846092a9 --- /dev/null +++ b/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js @@ -0,0 +1,46 @@ +const path = require('path') + +const COMPONENT_TYPES = [ + 'builders', + 'datasources', + 'post-processors', + 'provisioners', +] + +// Given an array of file paths within the "docs" folder, +// validate that no unexpected files are being included, +// and that there is at least one component subfolder +// with at least one .mdx file within it. +function validatePluginDocsFiles(filePaths) { + function isValidPath(filePath) { + const isDocsRoot = filePath === 'docs/' + const isComponentRoot = COMPONENT_TYPES.reduce((acc, type) => { + return acc || filePath === `docs/${type}/` + }, false) + const isComponentMdx = COMPONENT_TYPES.reduce((acc, type) => { + const mdxPathRegex = new RegExp(`^docs/${type}/(.*).mdx$`) + return acc || mdxPathRegex.test(filePath) + }, false) + const isValidPath = isDocsRoot || isComponentRoot || isComponentMdx + return isValidPath + } + const invalidPaths = filePaths.filter((f) => !isValidPath(f)) + if (invalidPaths.length > 0) { + return `Found invalid files or folders in the docs directory: ${JSON.stringify( + invalidPaths + )}. Please ensure the docs folder contains only component subfolders and .mdx files within those subfolders. Valid component types are: ${JSON.stringify( + COMPONENT_TYPES + )}.` + } + const validPaths = filePaths.filter(isValidPath) + const mdxFiles = validPaths.filter((fp) => path.extname(fp) === '.mdx') + const isMissingDocs = mdxFiles.length == 0 + if (isMissingDocs) { + return `Could not find valid .mdx files. Please ensure there is at least one component subfolder in the docs directory, which contains at least one .mdx file. Valid component types are: ${JSON.stringify( + COMPONENT_TYPES + )}.` + } + return null +} + +module.exports = validatePluginDocsFiles From 8b3e7e6f2ff0b94c2d58f86cbbaafd19ad6043db Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:24:36 -0400 Subject: [PATCH 125/212] website: use revised remote-plugin-docs server implementation - also bumps to stable docs-page, and makes related api changes for intro and guides routes --- .../components/remote-plugin-docs/server.js | 49 +-- website/data/docs-remote-plugins.json | 3 +- website/package-lock.json | 402 ++++++------------ website/package.json | 6 +- website/pages/docs/[[...page]].jsx | 8 +- website/pages/guides/[[...page]].jsx | 17 +- website/pages/intro/[[...page]].jsx | 17 +- 7 files changed, 166 insertions(+), 336 deletions(-) diff --git a/website/components/remote-plugin-docs/server.js b/website/components/remote-plugin-docs/server.js index a7d699e57..9b00b6f92 100644 --- a/website/components/remote-plugin-docs/server.js +++ b/website/components/remote-plugin-docs/server.js @@ -3,13 +3,9 @@ import path from 'path' import { getNodeFromPath, getPathsFromNavData, - validateNavData, } from '@hashicorp/react-docs-page/server' import renderPageMdx from '@hashicorp/react-docs-page/render-page-mdx' -import fetchGithubFile from './utils/fetch-github-file' -import mergeRemotePlugins from './utils/merge-remote-plugins' - -const IS_DEV = process.env.VERCEL_ENV !== 'production' +import resolveNavData from './utils/resolve-nav-data' async function generateStaticPaths(navDataFile, contentDir, options = {}) { const navData = await resolveNavData(navDataFile, contentDir, options) @@ -21,7 +17,8 @@ async function generateStaticProps( navDataFile, localContentDir, params, - { productName, remotePluginsFile, additionalComponents } = {} + product, + { remotePluginsFile, additionalComponents, mainBranch = 'main' } = {} ) { const navData = await resolveNavData(navDataFile, localContentDir, { remotePluginsFile, @@ -30,12 +27,15 @@ async function generateStaticProps( const navNode = getNodeFromPath(pathToMatch, navData, localContentDir) const { filePath, remoteFile, pluginTier } = navNode // Fetch the MDX file content - const [err, mdxString] = filePath - ? // Read local content from the filesystem - [null, fs.readFileSync(path.join(process.cwd(), filePath), 'utf8')] - : // Fetch remote content using GitHub's API - await fetchGithubFile(remoteFile) - if (err) throw new Error(err) + const mdxString = remoteFile + ? remoteFile.fileString + : fs.readFileSync(path.join(process.cwd(), filePath), 'utf8') + // Construct the githubFileUrl, used for "Edit this page" link + // Note: for custom ".docs-artifacts" directories, the "Edit this page" + // link will lead to the artifact file rather than the "docs" source file + const githubFileUrl = remoteFile + ? remoteFile.sourceUrl + : `https://github.com/hashicorp/${product.slug}/blob/${mainBranch}/website/${filePath}` // For plugin pages, prefix the MDX content with a // label that reflects the plugin tier // (current options are "Official" or "Community") @@ -48,41 +48,22 @@ async function generateStaticProps( } const { mdxSource, frontMatter } = await renderPageMdx(mdxString, { additionalComponents, - productName, + productName: product.name, mdxContentHook, }) // Build the currentPath from page parameters const currentPath = !params.page ? '' : params.page.join('/') - // In development, set a flag if there is no GITHUB_API_TOKEN, - // as this means dev is seeing only local content, and we want to flag that - const isDevMissingRemotePlugins = IS_DEV && !process.env.GITHUB_API_TOKEN + return { currentPath, frontMatter, - isDevMissingRemotePlugins, mdxSource, mdxString, + githubFileUrl, navData, navNode, } } -async function resolveNavData(navDataFile, localContentDir, options = {}) { - const { remotePluginsFile } = options - // Read in files - const navDataPath = path.join(process.cwd(), navDataFile) - const navData = JSON.parse(fs.readFileSync(navDataPath, 'utf8')) - const remotePluginsPath = path.join(process.cwd(), remotePluginsFile) - const remotePlugins = JSON.parse(fs.readFileSync(remotePluginsPath, 'utf-8')) - // Resolve plugins, this yields branches with NavLeafRemote nodes - const withPlugins = await mergeRemotePlugins(remotePlugins, navData, IS_DEV) - // Resolve local filePaths for NavLeaf nodes - const withFilePaths = await validateNavData(withPlugins, localContentDir) - // Return the nav data with: - // 1. Plugins merged, transformed into navData structures with NavLeafRemote nodes - // 2. filePaths added to all local NavLeaf nodes - return withFilePaths -} - export default { generateStaticPaths, generateStaticProps } export { generateStaticPaths, generateStaticProps } diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index 8c247cfab..ab7aecb94 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -2,6 +2,7 @@ { "title": "Docker", "path": "docker", - "repo": "hashicorp/packer-plugin-docker" + "repo": "hashicorp/packer-plugin-docker", + "version": "v0.0.4" } ] diff --git a/website/package-lock.json b/website/package-lock.json index 1a542e882..e2585dfd9 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -5,118 +5,118 @@ "requires": true, "dependencies": { "@algolia/cache-browser-local-storage": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.8.3.tgz", - "integrity": "sha512-Cwc03hikHSUI+xvgUdN+H+f6jFyoDsC9fegzXzJ2nPn1YSN9EXzDMBnbrgl0sbl9iLGXe0EIGMYqR2giCv1wMQ==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.8.6.tgz", + "integrity": "sha512-Bam7otzjIEgrRXWmk0Amm1+B3ROI5dQnUfJEBjIy0YPM0kMahEoJXCw6160tGKxJLl1g6icoC953nGshQKO7cA==", "requires": { - "@algolia/cache-common": "4.8.3" + "@algolia/cache-common": "4.8.6" } }, "@algolia/cache-common": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.8.3.tgz", - "integrity": "sha512-Cf7zZ2i6H+tLSBTkFePHhYvlgc9fnMPKsF9qTmiU38kFIGORy/TN2Fx5n1GBuRLIzaSXvcf+oHv1HvU0u1gE1g==" + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.8.6.tgz", + "integrity": "sha512-eGQlsXU5G7n4RvV/K6qe6lRAeL6EKAYPT3yZDBjCW4pAh7JWta+77a7BwUQkTqXN1MEQWZXjex3E4z/vFpzNrg==" }, "@algolia/cache-in-memory": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.8.3.tgz", - "integrity": "sha512-+N7tkvmijXiDy2E7u1mM73AGEgGPWFmEmPeJS96oT46I98KXAwVPNYbcAqBE79YlixdXpkYJk41cFcORzNh+Iw==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.8.6.tgz", + "integrity": "sha512-kbJrvCFANxL/l5Pq1NFyHLRphKDwmqcD/OJga0IbNKEulRGDPkt1+pC7/q8d2ikP12adBjLLg2CVias9RJpIaw==", "requires": { - "@algolia/cache-common": "4.8.3" + "@algolia/cache-common": "4.8.6" } }, "@algolia/client-account": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.8.3.tgz", - "integrity": "sha512-Uku8LqnXBwfDCtsTCDYTUOz2/2oqcAQCKgaO0uGdIR8DTQENBXFQvzziambHdn9KuFuY+6Et9k1+cjpTPBDTBg==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.8.6.tgz", + "integrity": "sha512-FQVJE/BgCb78jtG7V0r30sMl9P5JKsrsOacGtGF2YebqI0YF25y8Z1nO39lbdjahxUS3QkDw2d0P2EVMj65g2Q==", "requires": { - "@algolia/client-common": "4.8.3", - "@algolia/client-search": "4.8.3", - "@algolia/transporter": "4.8.3" + "@algolia/client-common": "4.8.6", + "@algolia/client-search": "4.8.6", + "@algolia/transporter": "4.8.6" } }, "@algolia/client-analytics": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.8.3.tgz", - "integrity": "sha512-9ensIWmjYJprZ+YjAVSZdWUG05xEnbytENXp508X59tf34IMIX8BR2xl0RjAQODtxBdAteGxuKt5THX6U9tQLA==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.8.6.tgz", + "integrity": "sha512-ZBYFUlzNaWDFtt0rYHI7xbfVX0lPWU9lcEEXI/BlnkRgEkm247H503tNatPQFA1YGkob52EU18sV1eJ+OFRBLA==", "requires": { - "@algolia/client-common": "4.8.3", - "@algolia/client-search": "4.8.3", - "@algolia/requester-common": "4.8.3", - "@algolia/transporter": "4.8.3" + "@algolia/client-common": "4.8.6", + "@algolia/client-search": "4.8.6", + "@algolia/requester-common": "4.8.6", + "@algolia/transporter": "4.8.6" } }, "@algolia/client-common": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.8.3.tgz", - "integrity": "sha512-TU3623AEFAWUQlDTznkgAMSYo8lfS9pNs5QYDQzkvzWdqK0GBDWthwdRfo9iIsfxiR9qdCMHqwEu+AlZMVhNSA==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.8.6.tgz", + "integrity": "sha512-8dI+K3Nvbes2YRZm2LY7bdCUD05e60BhacrMLxFuKxnBGuNehME1wbxq/QxcG1iNFJlxLIze5TxIcNN3+pn76g==", "requires": { - "@algolia/requester-common": "4.8.3", - "@algolia/transporter": "4.8.3" + "@algolia/requester-common": "4.8.6", + "@algolia/transporter": "4.8.6" } }, "@algolia/client-recommendation": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.8.3.tgz", - "integrity": "sha512-qysGbmkcc6Agt29E38KWJq9JuxjGsyEYoKuX9K+P5HyQh08yR/BlRYrA8mB7vT/OIUHRGFToGO6Vq/rcg0NIOQ==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.8.6.tgz", + "integrity": "sha512-Kg8DpjwvaWWujNx6sAUrSL+NTHxFe/UNaliCcSKaMhd3+FiPXN+CrSkO0KWR7I+oK2qGBTG/2Y0BhFOJ5/B/RA==", "requires": { - "@algolia/client-common": "4.8.3", - "@algolia/requester-common": "4.8.3", - "@algolia/transporter": "4.8.3" + "@algolia/client-common": "4.8.6", + "@algolia/requester-common": "4.8.6", + "@algolia/transporter": "4.8.6" } }, "@algolia/client-search": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.8.3.tgz", - "integrity": "sha512-rAnvoy3GAhbzOQVniFcKVn1eM2NX77LearzYNCbtFrFYavG+hJI187bNVmajToiuGZ10FfJvK99X2OB1AzzezQ==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.8.6.tgz", + "integrity": "sha512-vXLS6umL/9G3bwqc6pkrS9K5/s8coq55mpfRARL+bs0NsToOf77WSTdwzlxv/KdbVF7dHjXgUpBvJ6RyR4ZdAw==", "requires": { - "@algolia/client-common": "4.8.3", - "@algolia/requester-common": "4.8.3", - "@algolia/transporter": "4.8.3" + "@algolia/client-common": "4.8.6", + "@algolia/requester-common": "4.8.6", + "@algolia/transporter": "4.8.6" } }, "@algolia/logger-common": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.8.3.tgz", - "integrity": "sha512-03wksHRbhl2DouEKnqWuUb64s1lV6kDAAabMCQ2Du1fb8X/WhDmxHC4UXMzypeOGlH5BZBsgVwSB7vsZLP3MZg==" + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.8.6.tgz", + "integrity": "sha512-FMRxZGdDxSzd0/Mv0R1021FvUt0CcbsQLYeyckvSWX8w+Uk4o0lcV6UtZdERVR5XZsGOqoXLMIYDbR2vkbGbVw==" }, "@algolia/logger-console": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.8.3.tgz", - "integrity": "sha512-Npt+hI4UF8t3TLMluL5utr9Gc11BjL5kDnGZOhDOAz5jYiSO2nrHMFmnpLT4Cy/u7a5t7EB5dlypuC4/AGStkA==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.8.6.tgz", + "integrity": "sha512-TYw9lwUCjvApC6Z0zn36T6gkCl7hbfJmnU+Z/D8pFJ3Yp7lz06S3oWGjbdrULrYP1w1VOhjd0X7/yGNsMhzutQ==", "requires": { - "@algolia/logger-common": "4.8.3" + "@algolia/logger-common": "4.8.6" } }, "@algolia/requester-browser-xhr": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.8.3.tgz", - "integrity": "sha512-/LTTIpgEmEwkyhn8yXxDdBWqXqzlgw5w2PtTpIwkSlP2/jDwdR/9w1TkFzhNbJ81ki6LAEQM5mSwoTTnbIIecg==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.8.6.tgz", + "integrity": "sha512-omh6uJ3CJXOmcrU9M3/KfGg8XkUuGJGIMkqEbkFvIebpBJxfs6TVs0ziNeMFAcAfhi8/CGgpLbDSgJtWdGQa6w==", "requires": { - "@algolia/requester-common": "4.8.3" + "@algolia/requester-common": "4.8.6" } }, "@algolia/requester-common": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.8.3.tgz", - "integrity": "sha512-+Yo9vBkofoKR1SCqqtMnmnfq9yt/BiaDewY/6bYSMNxSYCnu2Fw1JKSIaf/4zos09PMSsxGpLohZwGas3+0GDQ==" + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.8.6.tgz", + "integrity": "sha512-r5xJqq/D9KACkI5DgRbrysVL5DUUagikpciH0k0zjBbm+cXiYfpmdflo/h6JnY6kmvWgjr/4DoeTjKYb/0deAQ==" }, "@algolia/requester-node-http": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.8.3.tgz", - "integrity": "sha512-k2fiKIeMIFqgC01FnzII6kqC2GQBAfbNaUX4k7QCPa6P8t4sp2xE6fImOUiztLnnL3C9X9ZX6Fw3L+cudi7jvQ==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.8.6.tgz", + "integrity": "sha512-TB36OqTVOKyHCOtdxhn/IJyI/NXi/BWy8IEbsiWwwZWlL79NWHbetj49jXWFolEYEuu8PgDjjZGpRhypSuO9XQ==", "requires": { - "@algolia/requester-common": "4.8.3" + "@algolia/requester-common": "4.8.6" } }, "@algolia/transporter": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.8.3.tgz", - "integrity": "sha512-nU7fy2iU8snxATlsks0MjMyv97QJWQmOVwTjDc+KZ4+nue8CLcgm4LA4dsTBqvxeCQIoEtt3n72GwXcaqiJSjQ==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.8.6.tgz", + "integrity": "sha512-NRb31J0TP7EPoVMpXZ4yAtr61d26R8KGaf6qdULknvq5sOVHuuH4PwmF08386ERfIsgnM/OBhl+uzwACdCIjSg==", "requires": { - "@algolia/cache-common": "4.8.3", - "@algolia/logger-common": "4.8.3", - "@algolia/requester-common": "4.8.3" + "@algolia/cache-common": "4.8.6", + "@algolia/logger-common": "4.8.6", + "@algolia/requester-common": "4.8.6" } }, "@ampproject/toolbox-core": { @@ -2854,12 +2854,12 @@ "integrity": "sha512-AYIe6tcOxlKPe5Sq89o/Vk0rGE6Z1dCzf+N3ynECTh5L2A1zusf9xeM659QEh/edE/Ll9EBBLmq49sQXLNDxTw==" }, "@hashicorp/react-docs-page": { - "version": "10.9.4-alpha.18", - "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-10.9.4-alpha.18.tgz", - "integrity": "sha512-+eRKJ2PX9s4Is0ZT2O8ZBcBWuDt7OGxwBrqKF1ulo/DcZunj7pODCQQulb+jAtQyq7YzikWdFmQ/pcvwaVHK6Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-11.0.1.tgz", + "integrity": "sha512-BZ746Qm97OQTyMPI7calYDb+LAQQZGTn/vZ8FaMXbVCF+X9Bvs1xYyWRDV6gV0mtgmlkCwYqIrmqneOZdd6PcA==", "requires": { "@hashicorp/react-content": "^6.3.0", - "@hashicorp/react-docs-sidenav": "6.1.1-alpha.16", + "@hashicorp/react-docs-sidenav": "^7.0.0", "@hashicorp/react-head": "^1.2.0", "@hashicorp/react-search": "^4.1.0", "fs-exists-sync": "0.1.0", @@ -2870,121 +2870,6 @@ "readdirp": "3.5.0" }, "dependencies": { - "@algolia/cache-browser-local-storage": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.8.5.tgz", - "integrity": "sha512-9rs/Yi82ilgifweJamOy4DlJ4xPGsCN/zg+RKy4vjytNhOrkEHLRQC8vPZ3OhD8KVlw9lRQIZTlgjgFl8iMeeA==", - "requires": { - "@algolia/cache-common": "4.8.5" - } - }, - "@algolia/cache-common": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.8.5.tgz", - "integrity": "sha512-4SvRWnagKtwBFAy8Rsfmv0/Uk53fZL+6dy2idwdx6SjMGKSs0y1Qv+thb4h/k/H5MONisAoT9C2rgZ/mqwh5yw==" - }, - "@algolia/cache-in-memory": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.8.5.tgz", - "integrity": "sha512-XBBfqs28FbjwLboY3sxvuzBgYsuXdFsj2mUvkgxfb0GVEzwW4I0NM7KzSPwT+iht55WS1PgIOnynjmhPsrubCw==", - "requires": { - "@algolia/cache-common": "4.8.5" - } - }, - "@algolia/client-account": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.8.5.tgz", - "integrity": "sha512-DjXMpeCdY4J4IDBfowiG6Xl9ec/FhG1NpPQM0Uv4xXsc/TeeZ1JgbgNDhWe9jW0jBEALy+a/RmPrZ0vsxcadsg==", - "requires": { - "@algolia/client-common": "4.8.5", - "@algolia/client-search": "4.8.5", - "@algolia/transporter": "4.8.5" - } - }, - "@algolia/client-analytics": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.8.5.tgz", - "integrity": "sha512-PQEY+chbHmZnRJdaWsvUYzDpEPr60az0EPUexdouvXGZId15/SnDaXjnf89F7tYmCzkHdUtG4bSvPzAupQ4AFA==", - "requires": { - "@algolia/client-common": "4.8.5", - "@algolia/client-search": "4.8.5", - "@algolia/requester-common": "4.8.5", - "@algolia/transporter": "4.8.5" - } - }, - "@algolia/client-common": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.8.5.tgz", - "integrity": "sha512-Dn8vog2VrGsJeOcBMcSAEIjBtPyogzUBGlh1DtVd0m8GN6q+cImCESl6DY846M2PTYWsLBKBksq37eUfSe9FxQ==", - "requires": { - "@algolia/requester-common": "4.8.5", - "@algolia/transporter": "4.8.5" - } - }, - "@algolia/client-recommendation": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.8.5.tgz", - "integrity": "sha512-ffawCC1C25rCa8/JU2niRZgwr8aV9b2qsLVMo73GXFzi2lceXPAe9K68mt/BGHU+w7PFUwVHsV2VmB+G/HQRVw==", - "requires": { - "@algolia/client-common": "4.8.5", - "@algolia/requester-common": "4.8.5", - "@algolia/transporter": "4.8.5" - } - }, - "@algolia/client-search": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.8.5.tgz", - "integrity": "sha512-Ru2MljGZWrSQ0CVsDla11oGEPL/RinmVkLJfBtQ+/pk1868VfpAQFGKtOS/b8/xLrMA0Vm4EfC3Mgclk/p3KJA==", - "requires": { - "@algolia/client-common": "4.8.5", - "@algolia/requester-common": "4.8.5", - "@algolia/transporter": "4.8.5" - } - }, - "@algolia/logger-common": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.8.5.tgz", - "integrity": "sha512-PS6NS6bpED0rAxgCPGhjZJg9why0PnoVEE7ZoCbPq6lsAOc6FPlQLri4OiLyU7wx8RWDoVtOadyzulqAAsfPSQ==" - }, - "@algolia/logger-console": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.8.5.tgz", - "integrity": "sha512-3+4gLSbwzuGmrb5go3IZNcFIYVMSbB4c8UMtWEJ/gDBtgGZIvT6f/KlvVSOHIhthSxaM3Y13V6Qile/SpGqc6A==", - "requires": { - "@algolia/logger-common": "4.8.5" - } - }, - "@algolia/requester-browser-xhr": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.8.5.tgz", - "integrity": "sha512-M/Gf2vv/fU4+CqDW+wok7HPpEcLym3NtDzU9zaPzGYI/9X7o36581oyfnzt2pNfsXSQVj5a2pZVUWC3Z4SO27w==", - "requires": { - "@algolia/requester-common": "4.8.5" - } - }, - "@algolia/requester-common": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.8.5.tgz", - "integrity": "sha512-OIhsdwIrJVAlVlP7cwlt+RoR5AmxAoTGrFokOY9imVmgqXUUljdKO/DjhRL8vwYGFEidZ9efIjAIQ2B3XOhT9A==" - }, - "@algolia/requester-node-http": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.8.5.tgz", - "integrity": "sha512-viHAjfo53A3VSE7Bb/nzgpSMZ3prPp2qti7Wg8w7qxhntppKp3Fln6t4Vp+BoPOqruLsj139xXhheAKeRcYa0w==", - "requires": { - "@algolia/requester-common": "4.8.5" - } - }, - "@algolia/transporter": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.8.5.tgz", - "integrity": "sha512-Rb3cMlh/GoJK0+g+49GNA3IvR/EXsDEBwpyM+FOotSwxgiGt1wGBHM0K2v0GHwIEcuww02pl6KMDVlilA+qh0g==", - "requires": { - "@algolia/cache-common": "4.8.5", - "@algolia/logger-common": "4.8.5", - "@algolia/requester-common": "4.8.5" - } - }, "@hashicorp/react-content": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/@hashicorp/react-content/-/react-content-6.3.0.tgz", @@ -3016,73 +2901,23 @@ "search-insights": "^1.6.0", "unist-util-visit": "^2.0.3" } - }, - "algoliasearch": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.8.5.tgz", - "integrity": "sha512-GjKjpeevpePEJYinGokASNtIkl1t5EseNMlqDNAc+sXE8+iyyeqTyiJsN7bwlRG2BIremuslE/NlwdEfUuBLJw==", - "requires": { - "@algolia/cache-browser-local-storage": "4.8.5", - "@algolia/cache-common": "4.8.5", - "@algolia/cache-in-memory": "4.8.5", - "@algolia/client-account": "4.8.5", - "@algolia/client-analytics": "4.8.5", - "@algolia/client-common": "4.8.5", - "@algolia/client-recommendation": "4.8.5", - "@algolia/client-search": "4.8.5", - "@algolia/logger-common": "4.8.5", - "@algolia/logger-console": "4.8.5", - "@algolia/requester-browser-xhr": "4.8.5", - "@algolia/requester-common": "4.8.5", - "@algolia/requester-node-http": "4.8.5", - "@algolia/transporter": "4.8.5" - } - }, - "algoliasearch-helper": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.4.4.tgz", - "integrity": "sha512-OjyVLjykaYKCMxxRMZNiwLp8CS310E0qAeIY2NaublcmLAh8/SL19+zYHp7XCLtMem2ZXwl3ywMiA32O9jszuw==", - "requires": { - "events": "^1.1.1" - } - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "react-instantsearch-core": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.10.0.tgz", - "integrity": "sha512-bn8rh/od4nw43caOiAsArA2Pw/JXX/7jL+nYe0n/Se66P7VR7UIA1i1ycthOrJzXCn9iNVFJFNMfyAN0HYVaWg==", - "requires": { - "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.4.3", - "prop-types": "^15.6.2", - "react-fast-compare": "^3.0.0" - } - }, - "react-instantsearch-dom": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.10.0.tgz", - "integrity": "sha512-t1IGn1i4btp9a8wNNV/OCYwfJwCx5CuCP6WNwBxYY1QeL27RKGaWPxvz6FjfRFCfrOvD2556STyvVriyGhDoeg==", - "requires": { - "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.4.3", - "classnames": "^2.2.5", - "prop-types": "^15.6.2", - "react-fast-compare": "^3.0.0", - "react-instantsearch-core": "^6.10.0" - } } } }, "@hashicorp/react-docs-sidenav": { - "version": "6.1.1-alpha.16", - "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-sidenav/-/react-docs-sidenav-6.1.1-alpha.16.tgz", - "integrity": "sha512-RpPjNwMNe5L2LA1vvgp496CauVJ8wLnKge1lPBZKL5931jR1SFEMwuWLB8R6Pe2HmkIC55nPB/c43GrmPN4FFw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-sidenav/-/react-docs-sidenav-7.0.0.tgz", + "integrity": "sha512-gzOEG4fwfdfdHvxMuRC73bZUIpUzSPrG826NIM4N0lqUPzsAkDsfEl2+Vg1ZVfgzy2+41E+lIpHW4ZmWc5OZ7A==", "requires": { + "@hashicorp/react-link-wrap": "^2.0.2", "fuzzysearch": "1.0.3" + }, + "dependencies": { + "@hashicorp/react-link-wrap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@hashicorp/react-link-wrap/-/react-link-wrap-2.0.2.tgz", + "integrity": "sha512-q8s2TTd9Uy3BSYyUe2TTr2Kbc0ViRc7XQga2fZI0bzlFqBTiMXtf6gh2cg3QvimHY42y4YtaO5C109V9ahMUpQ==" + } } }, "@hashicorp/react-enterprise-alert": { @@ -3183,17 +3018,17 @@ } }, "@hashicorp/react-search": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@hashicorp/react-search/-/react-search-3.0.0.tgz", - "integrity": "sha512-62ttyCxjVFSHz1aNbdjeOcqCezpk3dLhMWTXeQb9Zsi0JYaJdBzK1M9khW1bfozTzjTXXGd/B79orlHMj/Zo9A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-search/-/react-search-4.2.0.tgz", + "integrity": "sha512-ITj3UC06w+bZKrHv77kYdtWlEH9gbtk+pAzZ5ZRxt2GMnw8qMzWnXZKVf1yHvyKAKkHkGXA5s+uFElxRJj3AVQ==", "requires": { "@hashicorp/react-inline-svg": "^1.0.2", "@hashicorp/remark-plugins": "^3.0.0", - "algoliasearch": "^4.4.0", + "algoliasearch": "^4.8.4", "dotenv": "^8.2.0", "glob": "^7.1.6", "gray-matter": "^4.0.2", - "react-instantsearch-dom": "^6.7.0", + "react-instantsearch-dom": "^6.9.0", "remark": "^12.0.1", "search-insights": "^1.6.0", "unist-util-visit": "^2.0.3" @@ -3927,6 +3762,11 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, + "adm-zip": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.4.tgz", + "integrity": "sha512-GMQg1a1cAegh+/EgWbz+XHZrwB467iB/IgtToldvxs7Xa5Br8mPmvCeRfY/Un2fLzrlIPt6Yu7Cej+8Ut9TGPg==" + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -3973,30 +3813,30 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, "algoliasearch": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.8.3.tgz", - "integrity": "sha512-pljX9jEE2TQ3i1JayhG8afNdE8UuJg3O9c7unW6QO67yRWCKr6b0t5aKC3hSVtjt7pA2TQXLKoAISb4SHx9ozQ==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.8.6.tgz", + "integrity": "sha512-G8IA3lcgaQB4r9HuQ4G+uSFjjz0Wv2OgEPiQ8emA+G2UUlroOfMl064j1bq/G+QTW0LmTQp9JwrFDRWxFM9J7w==", "requires": { - "@algolia/cache-browser-local-storage": "4.8.3", - "@algolia/cache-common": "4.8.3", - "@algolia/cache-in-memory": "4.8.3", - "@algolia/client-account": "4.8.3", - "@algolia/client-analytics": "4.8.3", - "@algolia/client-common": "4.8.3", - "@algolia/client-recommendation": "4.8.3", - "@algolia/client-search": "4.8.3", - "@algolia/logger-common": "4.8.3", - "@algolia/logger-console": "4.8.3", - "@algolia/requester-browser-xhr": "4.8.3", - "@algolia/requester-common": "4.8.3", - "@algolia/requester-node-http": "4.8.3", - "@algolia/transporter": "4.8.3" + "@algolia/cache-browser-local-storage": "4.8.6", + "@algolia/cache-common": "4.8.6", + "@algolia/cache-in-memory": "4.8.6", + "@algolia/client-account": "4.8.6", + "@algolia/client-analytics": "4.8.6", + "@algolia/client-common": "4.8.6", + "@algolia/client-recommendation": "4.8.6", + "@algolia/client-search": "4.8.6", + "@algolia/logger-common": "4.8.6", + "@algolia/logger-console": "4.8.6", + "@algolia/requester-browser-xhr": "4.8.6", + "@algolia/requester-common": "4.8.6", + "@algolia/requester-node-http": "4.8.6", + "@algolia/transporter": "4.8.6" } }, "algoliasearch-helper": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.3.4.tgz", - "integrity": "sha512-1Ts2XcgGdjGlDrp3v6zbY8VW+X9+jJ5rBmtPBmXOQLd4b5t/LpJlaBdxoAnlMfVFjywP7KSAdmyFUNNYVHDyRQ==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.4.4.tgz", + "integrity": "sha512-OjyVLjykaYKCMxxRMZNiwLp8CS310E0qAeIY2NaublcmLAh8/SL19+zYHp7XCLtMem2ZXwl3ywMiA32O9jszuw==", "requires": { "events": "^1.1.1" }, @@ -11653,27 +11493,27 @@ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, "react-instantsearch-core": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.8.2.tgz", - "integrity": "sha512-UdAjcNIXb2mSECEDS/2XuB4W6rcbnph1NjJBUpY5TLLzSCdKXNTzS2PxF5hkdeuY0L/m/hvDQX6YqxV28PqKLA==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.10.3.tgz", + "integrity": "sha512-7twp3OJrPGTFpyXwjJNeOTbQw7RTv+0cUyKkXR9njEyLdXKcPWfpeBirXfdQHjYIHEY2b0V2Vom1B9IHSDSUtQ==", "requires": { "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.1.0", - "prop-types": "^15.5.10", + "algoliasearch-helper": "^3.4.3", + "prop-types": "^15.6.2", "react-fast-compare": "^3.0.0" } }, "react-instantsearch-dom": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.8.2.tgz", - "integrity": "sha512-d6YBsjW/aF3qzul7qqUV/KuzEFPVxlAZm3QhREPqMvOyrPTnG5itZZBLe7sFm9OKJ/8shR4TyNp3hb94as7COg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.10.3.tgz", + "integrity": "sha512-kxc6IEruxJrc7O9lsLV5o4YK/RkGt3l7D1Y51JfmYkgeLuQHApwgcy/TAIoSN7wfR/1DONFbX8Y5VhU9Wqh87Q==", "requires": { "@babel/runtime": "^7.1.2", - "algoliasearch-helper": "^3.1.0", + "algoliasearch-helper": "^3.4.3", "classnames": "^2.2.5", - "prop-types": "^15.5.10", + "prop-types": "^15.6.2", "react-fast-compare": "^3.0.0", - "react-instantsearch-core": "^6.8.2" + "react-instantsearch-core": "^6.10.3" } }, "react-is": { diff --git a/website/package.json b/website/package.json index 572621182..e1e2bd44d 100644 --- a/website/package.json +++ b/website/package.json @@ -7,16 +7,18 @@ "@hashicorp/mktg-global-styles": "2.1.0", "@hashicorp/nextjs-scripts": "16.2.0", "@hashicorp/react-button": "4.0.0", - "@hashicorp/react-docs-page": "10.9.4-alpha.18", + "@hashicorp/react-docs-page": "11.0.1", "@hashicorp/react-hashi-stack-menu": "^1.1.0", "@hashicorp/react-head": "1.1.6", "@hashicorp/react-inline-svg": "5.0.0", "@hashicorp/react-markdown-page": "^0.1.0", "@hashicorp/react-product-downloader": "4.0.2", - "@hashicorp/react-search": "^3.0.0", + "@hashicorp/react-search": "^4.2.0", "@hashicorp/react-section-header": "4.0.0", "@hashicorp/react-subnav": "7.1.0", "@hashicorp/react-vertical-text-block-list": "4.0.1", + "adm-zip": "^0.5.4", + "gray-matter": "^4.0.2", "next": "10.0.6", "next-mdx-remote": "1.0.1", "next-remote-watch": "0.3.0", diff --git a/website/pages/docs/[[...page]].jsx b/website/pages/docs/[[...page]].jsx index fe7d637f4..940086f9f 100644 --- a/website/pages/docs/[[...page]].jsx +++ b/website/pages/docs/[[...page]].jsx @@ -12,12 +12,12 @@ import { const BASE_ROUTE = 'docs' const NAV_DATA = 'data/docs-nav-data.json' const CONTENT_DIR = 'content/docs' -// override default "main" value for branch for "edit on this page" -const MAIN_BRANCH = 'master' +const PRODUCT = { name: productName, slug: productSlug } // add remote plugin docs loading const OPTIONS = { remotePluginsFile: 'data/docs-remote-plugins.json', additionalComponents: { PluginTierLabel }, + mainBranch: 'master', } function DocsLayout({ isDevMissingRemotePlugins, ...props }) { @@ -49,8 +49,7 @@ function DocsLayout({ isDevMissingRemotePlugins, ...props }) { @@ -67,6 +66,7 @@ export async function getStaticProps({ params }) { NAV_DATA, CONTENT_DIR, params, + PRODUCT, OPTIONS ) return { props } diff --git a/website/pages/guides/[[...page]].jsx b/website/pages/guides/[[...page]].jsx index 3eef1397e..3c90c1d45 100644 --- a/website/pages/guides/[[...page]].jsx +++ b/website/pages/guides/[[...page]].jsx @@ -10,15 +10,12 @@ import { const BASE_ROUTE = 'guides' const NAV_DATA = 'data/guides-nav-data.json' const CONTENT_DIR = 'content/guides' +const MAIN_BRANCH = 'master' +const PRODUCT = { name: productName, slug: productSlug } export default function GuidesLayout(props) { return ( - + ) } @@ -28,6 +25,12 @@ export async function getStaticPaths() { } export async function getStaticProps({ params }) { - const props = await generateStaticProps(NAV_DATA, CONTENT_DIR, params) + const props = await generateStaticProps( + NAV_DATA, + CONTENT_DIR, + params, + PRODUCT, + { mainBranch: MAIN_BRANCH } + ) return { props } } diff --git a/website/pages/intro/[[...page]].jsx b/website/pages/intro/[[...page]].jsx index 7d45b949a..7a3a65c33 100644 --- a/website/pages/intro/[[...page]].jsx +++ b/website/pages/intro/[[...page]].jsx @@ -10,15 +10,12 @@ import { const BASE_ROUTE = 'intro' const NAV_DATA = 'data/intro-nav-data.json' const CONTENT_DIR = 'content/intro' +const MAIN_BRANCH = 'master' +const PRODUCT = { name: productName, slug: productSlug } export default function IntroLayout(props) { return ( - + ) } @@ -28,6 +25,12 @@ export async function getStaticPaths() { } export async function getStaticProps({ params }) { - const props = await generateStaticProps(NAV_DATA, CONTENT_DIR, params) + const props = await generateStaticProps( + NAV_DATA, + CONTENT_DIR, + params, + PRODUCT, + { mainBranch: MAIN_BRANCH } + ) return { props } } From 26a572270d1bf36355b690f81121584cb56c6fd4 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:25:36 -0400 Subject: [PATCH 126/212] website: add github action to flag plugin-docs issues --- .github/workflows/check-plugin-docs.js | 63 +++++++++++++++++++++++++ .github/workflows/check-plugin-docs.yml | 27 +++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .github/workflows/check-plugin-docs.js create mode 100644 .github/workflows/check-plugin-docs.yml diff --git a/.github/workflows/check-plugin-docs.js b/.github/workflows/check-plugin-docs.js new file mode 100644 index 000000000..ef4150fec --- /dev/null +++ b/.github/workflows/check-plugin-docs.js @@ -0,0 +1,63 @@ +const fs = require("fs"); +const path = require("path"); +const fetchPluginDocs = require("../../website/components/remote-plugin-docs/utils/fetch-plugin-docs"); + +const COLOR_RESET = "\x1b[0m"; +const COLOR_GREEN = "\x1b[32m"; +const COLOR_BLUE = "\x1b[34m"; +const COLOR_RED = "\x1b[31m"; + +async function checkPluginDocs() { + const failureMessages = []; + const pluginsPath = "website/data/docs-remote-plugins.json"; + const pluginsFile = fs.readFileSync(path.join(process.cwd(), pluginsPath)); + const pluginEntries = JSON.parse(pluginsFile); + const entriesCount = pluginEntries.length; + console.log(`\nResolving plugin docs from ${entriesCount} repositories …`); + for (var i = 0; i < entriesCount; i++) { + const pluginEntry = pluginEntries[i]; + const { title, repo, version } = pluginEntry; + console.log(`\n${COLOR_BLUE}${repo}${COLOR_RESET} | ${title}`); + console.log(`Fetching docs from release "${version}" …`); + try { + const docsMdxFiles = await fetchPluginDocs({ repo, tag: version }); + const mdxFilesByComponent = docsMdxFiles.reduce((acc, mdxFile) => { + const componentType = mdxFile.filePath.split("/")[1]; + if (!acc[componentType]) acc[componentType] = []; + acc[componentType].push(mdxFile); + return acc; + }, {}); + console.log(`${COLOR_GREEN}Found valid docs:${COLOR_RESET}`); + Object.keys(mdxFilesByComponent).forEach((component) => { + const componentFiles = mdxFilesByComponent[component]; + console.log(` ${component}`); + componentFiles.forEach(({ filePath }) => { + const pathFromComponent = filePath.split("/").slice(2).join("/"); + console.log(` ├── ${pathFromComponent}`); + }); + }); + } catch (err) { + console.log(`${COLOR_RED}${err}${COLOR_RESET}`); + failureMessages.push(`\n${COLOR_RED}× ${repo}: ${COLOR_RESET}${err}`); + } + } + + if (failureMessages.length === 0) { + console.log( + `\n---\n\n${COLOR_GREEN}Summary: Successfully resolved all plugin docs.` + ); + pluginEntries.forEach((e) => + console.log(`${COLOR_GREEN}✓ ${e.repo}${COLOR_RESET}`) + ); + console.log(""); + } else { + console.log( + `\n---\n\n${COLOR_RED}Summary: Failed to fetch docs for ${failureMessages.length} plugin(s):` + ); + failureMessages.forEach((err) => console.log(err)); + console.log(""); + process.exit(1); + } +} + +checkPluginDocs(); diff --git a/.github/workflows/check-plugin-docs.yml b/.github/workflows/check-plugin-docs.yml new file mode 100644 index 000000000..7b3303c9a --- /dev/null +++ b/.github/workflows/check-plugin-docs.yml @@ -0,0 +1,27 @@ +# +# This GitHub action checks plugin repositories for valid docs. +# +# This provides a quick assessment on PRs of whether +# there might be issues with docs in plugin repositories. +# +# This is intended to help debug Vercel build issues, which +# may or may not be related to docs in plugin repositories. + +name: "website: Check plugin docs" +on: + pull_request: + paths: + - "website/**" + +jobs: + check-plugin-docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node + uses: actions/setup-node@v1 + - name: Install Dependencies + run: npm i isomorphic-unfetch adm-zip gray-matter + - name: Fetch and validate plugin docs + run: node .github/workflows/check-plugin-docs.js From e68e736b6ccf6e730eb637f65ae747c58372e37e Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:25:49 -0400 Subject: [PATCH 127/212] website: add indexing for plugin docs content --- website/scripts/index_search_content.js | 96 ++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 2 deletions(-) diff --git a/website/scripts/index_search_content.js b/website/scripts/index_search_content.js index f853b4ddf..b3f2f7cab 100644 --- a/website/scripts/index_search_content.js +++ b/website/scripts/index_search_content.js @@ -1,3 +1,95 @@ -const { indexDocsContent } = require('@hashicorp/react-search/tools') +require('dotenv').config() +const fs = require('fs') +const path = require('path') +const { + indexContent, + getDocsSearchObject, +} = require('@hashicorp/react-search/tools') +const resolveNavData = require('../components/remote-plugin-docs/utils/resolve-nav-data') -indexDocsContent() +// Run indexing +indexContent({ getSearchObjects }) + +async function getSearchObjects() { + // Resolve /docs, /guides, and /intro nav data, which + // corresponds to all the content we will actually render + // This avoids indexing non-rendered content, and partials. + // Fetch objects for `docs` content + async function fetchDocsObjects() { + const navFile = 'data/docs-nav-data.json' + const contentDir = 'content/docs' + const opts = { remotePluginsFile: 'data/docs-remote-plugins.json' } + const navData = await resolveNavData(navFile, contentDir, opts) + return await searchObjectsFromNavData(navData, 'docs') + } + // Fetch objects for `guides` content + async function fetchGuidesObjects() { + const navFile = 'data/guides-nav-data.json' + const contentDir = 'content/guides' + const navData = await resolveNavData(navFile, contentDir) + return await searchObjectsFromNavData(navData, 'guides') + } + // Fetch objects for `intro` content + async function fetchIntroObjects() { + const navFile = 'data/intro-nav-data.json' + const contentDir = 'content/intro' + const navData = await resolveNavData(navFile, contentDir) + return await searchObjectsFromNavData(navData, 'intro') + } + // Collect, flatten and return the collected search objects + const searchObjects = ( + await Promise.all([ + fetchDocsObjects(), + fetchGuidesObjects(), + fetchIntroObjects(), + ]) + ).reduce((acc, array) => acc.concat(array), []) + return searchObjects +} + +/** + * Given navData, return a flat array of search objects + * for each content file referenced in the navData nodes + * @param {Object[]} navData - an array of nav-data nodes, as detailed in [mktg-032](https://docs.google.com/document/d/1kYvbyd6njHFSscoE1dtDNHQ3U8IzaMdcjOS0jg87rHg) + * @param {string} baseRoute - the base route where the navData will be rendered. For example, "docs". + * @returns {Object[]} - an array of searchObjects to pass to Algolia. Must include an objectID property. See https://www.algolia.com/doc/api-reference/api-methods/add-objects/?client=javascript#examples. + */ +async function searchObjectsFromNavData(navData, baseRoute = '') { + const searchObjectsFromNodes = await Promise.all( + navData.map((n) => searchObjectsFromNavNode(n, baseRoute)) + ) + const flattenedSearchObjects = searchObjectsFromNodes.reduce( + (acc, searchObjects) => acc.concat(searchObjects), + [] + ) + return flattenedSearchObjects +} + +/** + * Given a single navData node, return a flat array of search objects. + * For "leaf" nodes, this will yield an array with a single object. + * For "branch" nodes, this may yield an array with zero or more search objects. + * For all other nodes, this will yield an empty array. + * @param {object} node - a nav-data nodes, as detailed in [mktg-032](https://docs.google.com/document/d/1kYvbyd6njHFSscoE1dtDNHQ3U8IzaMdcjOS0jg87rHg) + * @param {string} baseRoute - the base route where the navData will be rendered. For example, "docs". + * @returns {Object[]} - an array of searchObjects to pass to Algolia. Must include an objectID property. See https://www.algolia.com/doc/api-reference/api-methods/add-objects/?client=javascript#examples. + */ +async function searchObjectsFromNavNode(node, baseRoute) { + // If this is a node, build a search object + if (node.path) { + // Fetch the MDX file content + const fileString = node.filePath + ? fs.readFileSync(path.join(process.cwd(), node.filePath), 'utf8') + : node.remoteFile.fileString + const searchObject = await getDocsSearchObject( + path.join(baseRoute, node.path), + fileString + ) + return searchObject + } + // If this is a branch, recurse + if (node.routes) return await searchObjectsFromNavData(node.routes, baseRoute) + // Otherwise, return an empty array + // (for direct link nodes, divider nodes) + return [] +} From 9e03647ad78a2210b3baa510819c882e4c9ffa17 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:26:03 -0400 Subject: [PATCH 128/212] website: update readme to reflect revised nav-data and plugin docs --- website/README.md | 232 +++++++++++++++++++++++++++++++++------------- 1 file changed, 169 insertions(+), 63 deletions(-) diff --git a/website/README.md b/website/README.md index 8117006c4..429e06819 100644 --- a/website/README.md +++ b/website/README.md @@ -238,14 +238,22 @@ $ terraform apply - - + ## Editing Navigation Sidebars -The structure of the sidebars are controlled by files in the [`/data` directory](data). For example, [this file](data/docs-navigation.js) controls the **docs** sidebar. Within the `data` folder, any file with `-navigation` after it controls the navigation for the given section. +The structure of the sidebars are controlled by files in the [`/data` directory](data). For example, [data/docs-nav-data.json](data/docs-nav-data.json) controls the **docs** sidebar. Within the `data` folder, any file with `-nav-data` after it controls the navigation for the given section. -The sidebar uses a simple recursive data structure to represent _files_ and _directories_. A file is represented by a string, and a directory is represented by an object. The sidebar is meant to reflect the structure of the docs within the filesystem while also allowing custom ordering. Let's look at an example. First, here's our example folder structure: +The sidebar uses a simple recursive data structure to represent _files_ and _directories_. The sidebar is meant to reflect the structure of the docs within the filesystem while also allowing custom ordering. Let's look at an example. First, here's our example folder structure: ```text . @@ -259,36 +267,55 @@ The sidebar uses a simple recursive data structure to represent _files_ and _dir │   └── nested-file.mdx ``` -Here's how this folder structure could be represented as a sidebar navigation, in this example it would be the file `website/data/docs-navigation.js`: +Here's how this folder structure could be represented as a sidebar navigation, in this example it would be the file `website/data/docs-nav-data.json`: -```js -export default { - category: 'directory', - content: [ - 'file', - 'another-file', - { - category: 'nested-directory', - content: ['nested-file'], - }, - ], -} +```json +[ + { + "title": "Directory", + "routes": [ + { + "title": "Overview", + "path": "directory" + }, + { + "title": "File", + "path": "directory/file" + }, + { + "title": "Another File", + "path": "directory/another-file" + }, + { + "title": "Nested Directory", + "routes": [ + { + "title": "Overview", + "path": "directory/nested-directory" + }, + { + "title": "Nested File", + "path": "directory/nested-directory/nested-file" + } + ] + } + ] + } +] ``` -- `category` values will be **directory names** within the `pages/
` directory -- `content` values will be **file names** within their appropriately nested directory - A couple more important notes: -- Within this data structure, ordering does not matter, but hierarchy does. So while you could put `file` and `another-file` in any order, or even leave one or both of them out, you could not decide to un-nest the `nested-directory` object without also un-nesting it in the filesystem. -- The `sidebar_title` frontmatter property on each `mdx` page is responsible for displaying the human-readable page name in the navigation. -- _By default_, every directory/category must have an `index.mdx` file. This file will be automatically added to the navigation as "Overview", and its `sidebar_title` property will set the human-readable name of the entire category. +- Within this data structure, ordering is flexible, but hierarchy is not. The structure of the sidebar must correspond to the structure of the content directory. So while you could put `file` and `another-file` in any order in the sidebar, or even leave one or both of them out, you could not decide to un-nest the `nested-directory` object without also un-nesting it in the filesystem. +- The `title` property on each node in the `nav-data` tree is the human-readable name in the navigation. +- The `path` property on each leaf node in the `nav-data` tree is the URL path where the `.mdx` document will be rendered, and the +- Note that "index" files must be explicitly added. These will be automatically resolved, so the `path` value should be, as above, `directory` rather than `directory/index`. A common convention is to set the `title` of an "index" node to be `"Overview"`. Below we will discuss a couple of more unusual but still helpful patterns. ### Index-less Categories -Sometimes you may want to include a category but not have a need for an index page for the category. This can be accomplished, but a human-readable category name needs to be set manually, since the category name is normally pulled from the `sidebar_title` property of the index page. Here's an example of how an index-less category might look: +Sometimes you may want to include a category but not have a need for an index page for the category. This can be accomplished, but as with other branch and leaf nodes, a human-readable `title` needs to be set manually. Here's an example of how an index-less category might look: ```text . @@ -297,36 +324,95 @@ Sometimes you may want to include a category but not have a need for an index pa │   └── file.mdx ``` -```js -// website/data/docs-navigation.js -export default { - category: 'indexless-category', - name: 'Indexless Category', - content: ['file'], -} +```json +// website/data/docs-nav-data.json +[ + { + "title": "Indexless Category", + "routes": [ + { + "title": "File", + "path": "indexless-category/file" + } + ] + } +] ``` -The addition of the `name` property to a category object is all it takes to be able to skip the index file. - ### Custom or External Links Sometimes you may have a need to include a link that is not directly to a file within the docs hierarchy. This can also be supported using a different pattern. For example: -```js -export default { - category: 'directory', - content: [ - 'file', - 'another-file', - { title: 'Tao of HashiCorp', href: 'https://www.hashicorp.com/tao-of-hashicorp' } - } - ] -} +```json +[ + { + "name": "Directory", + "routes": [ + { + "title": "File", + "path": "directory/file" + }, + { + "title": "Another File", + "path": "directory/another-file" + }, + { + "title": "Tao of HashiCorp", + "href": "https://www.hashicorp.com/tao-of-hashicorp" + } + ] + } +] ``` If the link provided in the `href` property is external, it will display a small icon indicating this. If it's internal, it will appear the same way as any other direct file link. - +### Plugin Docs + +Plugin documentation may be located within the `packer` repository, or split out into separate `packer-plugin-` repositories. For plugin docs within the `packer` repository, the process for authoring files and managing sidebar data is identical to the process for other documentation. + +For plugins in separate repositories, additional configuration is required. + +#### Setting up remote plugin docs + +Some setup is required to include docs from remote plugin repositories on the [packer.io/docs](https://www.packer.io/docs) site. + +1. The plugin repository needs to include a `docs.zip` asset in its release +2. The `packer` repository must have a corresponding entry in `website/data/docs-remote-plugins.json` which points to the plugin repository. + +The `docs.zip` release asset is expected to be generated as part of the standard release process for `packer-plugin-*` repositories. Additional details on this process can be found in [the `packer-plugin-scaffolding` `README`](https://github.com/hashicorp/packer-plugin-scaffolding#registering-documentation-on-packerio). + +The `docs-remote-plugins.json` file contains an array of entries. Each entry points to a plugin repository. The `{ title, path, repo, tag }` properties are required for each entry, all other properties are optional. + +```json5 +[ + { + // ALL FIELDS ARE REQUIRED. + // "title" sets the human-readable title shown in navigation + title: 'Scaffolding', + // "path" sets the URL subpath under the component URL (eg `docs/builders`) + path: 'scaffolding', + // "repo" points to the plugin repo, in the format "organization/repo-name" + // if the organization == hashicorp, the plugin docs will be labelled "official". + // for all other organizations or users, plugin docs will be labelled "community". + repo: 'hashicorp/packer-plugin-scaffolding', + // "version" is used to fetch "docs.zip" from the matching tagged release. + // version: "latest" is permitted, but please be aware that it + // may fetch incompatible or unintended versions of plugin docs. + // if version is NOT "latest", and if "docs.zip" is unavailable, then + // we fall back to fetching docs from the source "{version}.zip" + version: 'v0.0.5', + }, +] +``` + +#### Updating remote plugin docs + +Documentation from plugin repositories is fetched and rendered every time the Packer website builds. So, to update plugin documentation on the live site: + +1. In the plugin repository, publish a new release that includes a `docs.zip` release asset +2. In the `packer` repository, update `website/data/docs-remote-plugins.json` to ensure the corresponding entry points to the correct release `version` (which should correspond to the release's tag name). This may not be necessary if the `version` is set to `"latest"`. +3. Rebuild the website. This will happen automatically on commits to `stable-website`. In exceptional cases, the site can also be [manually re-deployed through Vercel](https://vercel.com/hashicorp/packer). @@ -374,8 +460,18 @@ You may customize the parameters in any way you'd like. To remove a prerelease f - - + ## Link Validation @@ -406,7 +502,7 @@ There are a couple important caveats with redirects. First, redirects are applie Second, redirects do not apply to client-side navigation. By default, all links in the navigation and docs sidebar will navigate purely on the client side, which makes navigation through the docs significantly faster, especially for those with low-end devices and/or weak internet connections. In the future, we plan to convert all internal links within docs pages to behave this way as well. This means that if there is a link on this website to a given piece of content that has changed locations in some way, we need to also _directly change existing links to the content_. This way, if a user clicks a link that navigates on the client side, or if they hit the url directly and the page renders from the server side, either one will work perfectly. -Let's look at an example. Say you have a page called `/docs/foo` which needs to be moved to `/docs/nested/foo`. Additionally, this is a page that has been around for a while and we know there are links into `/docs/foo.html` left over from our previous website structure. First, we move the page, then adjust the docs sidenav, in `data/docs-navigation.js`. Find the category the page is in, and move it into the appropriate subcategory. Next, we add to `_redirects` as such: +Let's look at an example. Say you have a page called `/docs/foo` which needs to be moved to `/docs/nested/foo`. Additionally, this is a page that has been around for a while and we know there are links into `/docs/foo.html` left over from our previous website structure. First, we move the page, then adjust the docs sidenav, in `data/docs-nav-data.json`. Find the category the page is in, and move it into the appropriate subcategory. Next, we add to `_redirects` as such: ``` /foo /nested/foo 301! @@ -415,26 +511,36 @@ Let's look at an example. Say you have a page called `/docs/foo` which needs to Finally, we run a global search for internal links to `/foo`, and make sure to adjust them to be `/nested/foo` - this is to ensure that client-side navigation still works correctly. _Adding a redirect alone is not enough_. -One more example - let's say that content is being moved to an external website. A common example is guides moving to `learn.hashicorp.com`. In this case, we take all the same steps, except that we need to make a different type of change to the `docs-navigation` file. If previously the structure looked like: +One more example - let's say that content is being moved to an external website. A common example is guides moving to `learn.hashicorp.com`. In this case, we take all the same steps, except that we need to make a different type of change to the `docs-nav-data` file. If previously the structure looked like: -```js -{ - category: 'docs', - content: [ - 'foo' - ] -} +```json +[ + { + "name": "Docs", + "routes": [ + { + "title": "Foo", + "path": "docs/foo" + } + ] + } +] ``` -If we no longer want the link to be in the side nav, we can simply remove it. If we do still want the link in the side nav, but pointing to an external destnation, we need to slightly change the structure as such: +If we no longer want the link to be in the side nav, we can simply remove it. If we do still want the link in the side nav, but pointing to an external destination, we need to slightly change the structure as such: -```js -{ - category: 'docs', - content: [ - { title: 'Foo Title', href: 'https://learn.hashicorp.com//foo' } - ] -} +```json +[ + { + "name": "Docs", + "routes": [ + { + "title": "Foo", + "href": "https://learn.hashicorp.com//foo" + } + ] + } +] ``` As the majority of items in the side nav are internal links, the structure makes it as easy as possible to represent these links. This alternate syntax is the most concise manner than an external link can be represented. External links can be used anywhere within the docs sidenav. From bece5c3c696607648333eee20db011a7ad13b854 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:26:16 -0400 Subject: [PATCH 129/212] website: fix minor style issue in PluginTier component --- website/components/plugin-tier-label/style.module.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/website/components/plugin-tier-label/style.module.css b/website/components/plugin-tier-label/style.module.css index 4ebe4a397..d28e0f6c1 100644 --- a/website/components/plugin-tier-label/style.module.css +++ b/website/components/plugin-tier-label/style.module.css @@ -12,7 +12,9 @@ to match Terraform Registry tier labels. display: inline-flex; margin: 0; padding: 1px 8px 2px 8px; - vertical-align: baseline; + position: relative; + top: -1px; + vertical-align: bottom; /* variations */ &[data-tier='official'] { @@ -52,4 +54,3 @@ search bar present on docs pages */ } } } - From 203900e403ab99e65516d9680bb2342e299ccbe4 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:26:27 -0400 Subject: [PATCH 130/212] website: delete unused plugin-docs utilities --- .../utils/fetch-github-file.js | 71 -------- .../utils/merge-remote-plugins.js | 166 ------------------ 2 files changed, 237 deletions(-) delete mode 100644 website/components/remote-plugin-docs/utils/fetch-github-file.js delete mode 100644 website/components/remote-plugin-docs/utils/merge-remote-plugins.js diff --git a/website/components/remote-plugin-docs/utils/fetch-github-file.js b/website/components/remote-plugin-docs/utils/fetch-github-file.js deleted file mode 100644 index e12a2738d..000000000 --- a/website/components/remote-plugin-docs/utils/fetch-github-file.js +++ /dev/null @@ -1,71 +0,0 @@ -const fetch = require('isomorphic-unfetch') - -const GITHUB_API_TOKEN = process.env.GITHUB_API_TOKEN - -async function githubQuery(body, token) { - const result = await fetch('https://api.github.com/graphql', { - method: 'POST', - headers: { - Authorization: `bearer ${token}`, - ContentType: 'application/json', - }, - body: JSON.stringify(body), - }) - return await result.json() -} - -// Fetch a file from GitHub using the GraphQL API -async function getGithubFile({ repo, branch, filePath }) { - const [repo_owner, repo_name] = repo.split('/') - // Set up the GraphQL query - // (usually we can keep this in a separate file, and rely on a - // plaintext loader we've set up in our NextJS config, but we need - // to fetch remote content when indexing it, which happens outside - // NextJS, so unfortunately it seems this has to be inlined) - const query = ` -query($repo_name: String!, $repo_owner: String!, $object_expression: String!) { - repository(name: $repo_name, owner: $repo_owner) { - object(expression: $object_expression) { - ... on Blob { - text - } - } - } -} -` - // Set variables - const variables = { - repo_name, - repo_owner, - object_expression: `${branch}:${filePath}`, - } - // Query the GitHub API, and parse the navigation data - const result = await githubQuery({ query, variables }, GITHUB_API_TOKEN) - try { - const fileText = result.data.repository.object.text - return [null, fileText] - } catch (e) { - const errorMsg = `Could not fetch remote file text from "${ - variables.object_expression - }" in "${repo_owner}/${repo_name}". Received instead:\n\n${JSON.stringify( - result, - null, - 2 - )}` - return [errorMsg, null] - } -} - -function memoize(method) { - let cache = {} - - return async function () { - let args = JSON.stringify(arguments[0]) - if (!cache[args]) { - cache[args] = method.apply(this, arguments) - } - return cache[args] - } -} - -module.exports = memoize(getGithubFile) diff --git a/website/components/remote-plugin-docs/utils/merge-remote-plugins.js b/website/components/remote-plugin-docs/utils/merge-remote-plugins.js deleted file mode 100644 index 41d0d7139..000000000 --- a/website/components/remote-plugin-docs/utils/merge-remote-plugins.js +++ /dev/null @@ -1,166 +0,0 @@ -const path = require('path') -const fetchGithubFile = require('./fetch-github-file') - -const COMPONENT_TYPES = [ - 'builders', - 'datasources', - 'post-processors', - 'provisioners', -] - -async function gatherRemotePlugins(pluginsData, navData, isDev = true) { - const allPluginData = await Promise.all( - pluginsData.map(async (pluginEntry) => { - const componentEntries = await Promise.all( - COMPONENT_TYPES.map(async (type) => { - const routes = await gatherPluginBranch(pluginEntry, type) - if (!routes) return false - const isSingleLeaf = - routes.length === 1 && typeof routes[0].path !== 'undefined' - const navData = isSingleLeaf - ? { ...routes[0], path: path.join(type, pluginEntry.path) } - : { title: pluginEntry.title, routes } - return { type, navData } - }) - ) - const validComponents = componentEntries.filter(Boolean) - if (validComponents.length === 0) { - const errMsg = `Could not fetch any component documentation for remote plugin from ${pluginEntry.repo}. This may be a GitHub credential issue at build time, or it may be an issue with missing docs in the source repository. Please ensure you have a valid GITHUB_API_TOKEN set in .env.local at the root of the project.` - if (isDev) { - console.warn(errMsg) - } else { - throw new Error(errMsg) - } - } - return validComponents - }) - ) - - const allPluginsByType = allPluginData.reduce((acc, pluginData) => { - pluginData.forEach((p) => { - const { type, navData } = p - if (!acc[type]) acc[type] = [] - acc[type].push(navData) - }) - return acc - }, {}) - - const navDataWithPlugins = navData.slice().map((n) => { - // we only care about top-level NavBranch nodes - if (!n.routes) return n - // for each component type, check if this NavBranch - // is the parent route for that type - for (var i = 0; i < COMPONENT_TYPES.length; i++) { - const type = COMPONENT_TYPES[i] - const isTypeRoute = n.routes.filter((nn) => nn.path === type).length > 0 - if (isTypeRoute) { - const pluginsOfType = allPluginsByType[type] - if (!pluginsOfType || pluginsOfType.length == 0) return n - // if this NavBranch is the parent route for the type, - // then append all remote plugins of this type to the - // NavBranch's child routes - const routesWithPlugins = n.routes.slice().concat(pluginsOfType) - // console.log(JSON.stringify(routesWithPlugins, null, 2)) - // Also, sort the child routes so the order is alphabetical - routesWithPlugins.sort((a, b) => { - // (exception: "Overview" comes first) - if (a.title == 'Overview') return -1 - if (b.title === 'Overview') return 1 - // (exception: "Community-Supported" comes last) - if (a.title == 'Community-Supported') return 1 - if (b.title === 'Community-Supported') return -1 - // (exception: "Custom" comes second-last) - if (a.title == 'Custom') return 1 - if (b.title === 'Custom') return -1 - return a.title < b.title ? -1 : a.title > b.title ? 1 : 0 - }) - // return n - return { ...n, routes: routesWithPlugins } - } - } - return n - }) - - return navDataWithPlugins -} - -async function gatherPluginBranch(pluginEntry, component) { - const artifactDir = pluginEntry.artifactDir || '.docs-artifacts' - const branch = pluginEntry.branch || 'main' - const navDataFilePath = `${artifactDir}/${component}/nav-data.json` - const [err, fileResult] = await fetchGithubFile({ - repo: pluginEntry.repo, - branch, - filePath: navDataFilePath, - }) - // If one component errors, that's expected - we try all components. - // We'll check one level up to see if ALL components fail. - if (err) return false - const navData = JSON.parse(fileResult) - const withPrefixedPath = await prefixNavDataPath( - navData, - { - repo: pluginEntry.repo, - branch, - componentArtifactsDir: path.join('.docs-artifacts', component), - }, - path.join(component, pluginEntry.path) - ) - // Add plugin tier - // Parse the plugin tier - const pluginOwner = pluginEntry.repo.split('/')[0] - const pluginTier = pluginOwner === 'hashicorp' ? 'official' : 'community' - const withPluginTier = addPluginTier(withPrefixedPath, pluginTier) - // Return the augmented navData - return withPluginTier -} - -function addPluginTier(navData, pluginTier) { - return navData.slice().map((navNode) => { - if (typeof navNode.path !== 'undefined') { - return { ...navNode, pluginTier } - } - if (navNode.routes) { - return { ...navNode, routes: addPluginTier(navNode.routes, pluginTier) } - } - return navNode - }) -} - -async function prefixNavDataPath( - navData, - { repo, branch, componentArtifactsDir }, - parentPath -) { - return await Promise.all( - navData.slice().map(async (navNode) => { - if (typeof navNode.path !== 'undefined') { - const prefixedPath = path.join(parentPath, navNode.path) - const remoteFile = { - repo, - branch, - filePath: path.join(componentArtifactsDir, navNode.filePath), - } - const withPrefixedRoute = { - ...navNode, - path: prefixedPath, - remoteFile: remoteFile, - } - delete withPrefixedRoute.filePath - return withPrefixedRoute - } - if (navNode.routes) { - const prefixedRoutes = await prefixNavDataPath( - navNode.routes, - { repo, branch, componentArtifactsDir }, - parentPath - ) - const withPrefixedRoutes = { ...navNode, routes: prefixedRoutes } - return withPrefixedRoutes - } - return navNode - }) - ) -} - -module.exports = gatherRemotePlugins From 618a3d42c63f78300fd8cb2e4a201d1d13a59398 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 12:31:24 -0400 Subject: [PATCH 131/212] website: clarify purpose of sourceUrl --- website/components/remote-plugin-docs/utils/resolve-nav-data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/components/remote-plugin-docs/utils/resolve-nav-data.js b/website/components/remote-plugin-docs/utils/resolve-nav-data.js index 837feb6b4..d5d21b7e3 100644 --- a/website/components/remote-plugin-docs/utils/resolve-nav-data.js +++ b/website/components/remote-plugin-docs/utils/resolve-nav-data.js @@ -145,7 +145,7 @@ async function resolvePluginEntryDocs(pluginConfigEntry) { const { data: frontmatter } = grayMatter(fileString) const { nav_title, sidebar_title } = frontmatter const title = nav_title || sidebar_title || basename - // construct sourceUrl + // construct sourceUrl (used for "Edit this page" link) const sourceUrl = `https://github.com/${repo}/blob/${version}/${filePath}` // determine pluginTier const pluginOwner = repo.split('/')[0] From 4242cf315166ef364fbde18cdbd33e8c7edc49ff Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Thu, 18 Mar 2021 10:02:27 -0700 Subject: [PATCH 132/212] fix tests --- .../complete-variables-with-template-engine/expected.pkr.hcl | 3 ++- command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl | 2 +- .../hcl2_upgrade/without-annotations/expected.pkr.hcl | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl index 1116310d6..1bf776b6f 100644 --- a/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete-variables-with-template-engine/expected.pkr.hcl @@ -5,6 +5,7 @@ variable "env_test" { } locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } +# The "legacy_isotime" function has been provided for backwards compatability, but we recommend switching to the timestamp and formatdate functions. # 5 errors occurred upgrading the following block: # unhandled "lower" call: @@ -33,7 +34,7 @@ locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } # Visit https://www.packer.io/docs/templates/hcl_templates/functions/string/upper for more infos. locals { build_timestamp = "${local.timestamp}" - iso_datetime = "${local.timestamp}" + iso_datetime = "${legacy_isotime("2006-01-02T15:04:05Z07:00")}" lower = "{{ lower `HELLO` }}" pwd = "${path.cwd}" replace = "{{ replace `b` `c` `ababa` 2 }}" diff --git a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl index 67e127138..3f1a46150 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl @@ -198,7 +198,7 @@ build { # Please manually upgrade to use custom validation rules, `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://packer.io/docs/templates/hcl_templates/variables#custom-validation-rules , https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. provisioner "shell" { - inline = ["echo mybuild-{{ clean_resource_name `${local.timestamp}` }}"] + inline = ["echo mybuild-{{ clean_resource_name `${timestamp()}` }}"] } diff --git a/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl index 93c51bdc4..e332c21e0 100644 --- a/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl @@ -151,7 +151,7 @@ build { # Please manually upgrade to use custom validation rules, `replace(string, substring, replacement)` or `regex_replace(string, substring, replacement)` # Visit https://packer.io/docs/templates/hcl_templates/variables#custom-validation-rules , https://www.packer.io/docs/templates/hcl_templates/functions/string/replace or https://www.packer.io/docs/templates/hcl_templates/functions/string/regex_replace for more infos. provisioner "shell" { - inline = ["echo mybuild-{{ clean_resource_name `${local.timestamp}` }}"] + inline = ["echo mybuild-{{ clean_resource_name `${timestamp()}` }}"] } From 0f8a658a237d69b688167261f9b06d2231daf9e5 Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 15:05:52 -0400 Subject: [PATCH 133/212] website: clarify tag vs version in error msg Co-authored-by: Wilken Rivera --- .../components/remote-plugin-docs/utils/fetch-plugin-docs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js b/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js index d02930ca2..ee4238b3a 100644 --- a/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js +++ b/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js @@ -22,7 +22,7 @@ async function fetchDocsFiles({ repo, tag }) { // then throw an error - we can't resolve the fallback source ZIP // unless we resort to calling the GitHub API, which we do not want to do if (tag === 'latest') { - const err = `Failed to fetch. Could not find "docs.zip" at ${docsZipUrl}. To fall back to parsing docs from "source", please provide a specific tag instead of "${tag}".` + const err = `Failed to fetch. Could not find "docs.zip" at ${docsZipUrl}. To fall back to parsing docs from "source", please provide a specific version tag instead of "${tag}".` return [err, null] } // Else if docs.zip is not present, and we have a specific tag, then From 597dcce2abc5698e5e3b0c87f7d3e0d2bfbd762f Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 15:06:42 -0400 Subject: [PATCH 134/212] website: fix tag vs version reference in README Co-authored-by: Wilken Rivera --- website/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/README.md b/website/README.md index 429e06819..795f67e64 100644 --- a/website/README.md +++ b/website/README.md @@ -382,7 +382,7 @@ Some setup is required to include docs from remote plugin repositories on the [p The `docs.zip` release asset is expected to be generated as part of the standard release process for `packer-plugin-*` repositories. Additional details on this process can be found in [the `packer-plugin-scaffolding` `README`](https://github.com/hashicorp/packer-plugin-scaffolding#registering-documentation-on-packerio). -The `docs-remote-plugins.json` file contains an array of entries. Each entry points to a plugin repository. The `{ title, path, repo, tag }` properties are required for each entry, all other properties are optional. +The `docs-remote-plugins.json` file contains an array of entries. Each entry points to a plugin repository. The `{ title, path, repo, version }` properties are required for each entry, all other properties are optional. ```json5 [ From de12cd318da480a58c609b70d51bb799b6e36aed Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 15:10:02 -0400 Subject: [PATCH 135/212] website: remove outdated comment on plugin config entries --- website/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/README.md b/website/README.md index 795f67e64..3901d3487 100644 --- a/website/README.md +++ b/website/README.md @@ -382,7 +382,7 @@ Some setup is required to include docs from remote plugin repositories on the [p The `docs.zip` release asset is expected to be generated as part of the standard release process for `packer-plugin-*` repositories. Additional details on this process can be found in [the `packer-plugin-scaffolding` `README`](https://github.com/hashicorp/packer-plugin-scaffolding#registering-documentation-on-packerio). -The `docs-remote-plugins.json` file contains an array of entries. Each entry points to a plugin repository. The `{ title, path, repo, version }` properties are required for each entry, all other properties are optional. +The `docs-remote-plugins.json` file contains an array of entries. Each entry points to a plugin repository. The `{ title, path, repo, version }` properties are required for each entry. ```json5 [ From 1d485988ea3ccb13101d930202e2d54a61733d0a Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Thu, 18 Mar 2021 15:31:04 -0400 Subject: [PATCH 136/212] website: bump timeout for vercel build polling --- .github/workflows/linkchecker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linkchecker.yml b/.github/workflows/linkchecker.yml index 0eaa2d774..5314f7325 100644 --- a/.github/workflows/linkchecker.yml +++ b/.github/workflows/linkchecker.yml @@ -7,7 +7,7 @@ name: Check markdown links on modified website files jobs: vercel-deployment-poll: runs-on: ubuntu-latest - timeout-minutes: 3 #cancel job if no deployment is found within x minutes + timeout-minutes: 5 #cancel job if no deployment is found within x minutes outputs: url: ${{ steps.waitForVercelPreviewDeployment.outputs.url }} steps: From 9b641c9bfd96180e58c30d5c5a22f10d51baf11d Mon Sep 17 00:00:00 2001 From: sophia Date: Thu, 18 Mar 2021 17:22:27 -0500 Subject: [PATCH 137/212] Force NoDirectUpload for vagrantcloud if asset size > 5 GB --- .../vagrant-cloud/step_prepare_upload.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/post-processor/vagrant-cloud/step_prepare_upload.go b/post-processor/vagrant-cloud/step_prepare_upload.go index 4f5efcb5a..b68c8bbe0 100644 --- a/post-processor/vagrant-cloud/step_prepare_upload.go +++ b/post-processor/vagrant-cloud/step_prepare_upload.go @@ -3,11 +3,14 @@ package vagrantcloud import ( "context" "fmt" + "os" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" ) +const VAGRANT_CLOUD_DIRECT_UPLOAD_LIMIT = 5000000000 // Upload limit is 5GB + type Upload struct { UploadPath string `json:"upload_path"` CallbackPath string `json:"callback"` @@ -25,6 +28,18 @@ func (s *stepPrepareUpload) Run(ctx context.Context, state multistep.StateBag) m provider := state.Get("provider").(*Provider) artifactFilePath := state.Get("artifactFilePath").(string) + // If direct upload is enabled, the asset size must be <= 5 GB + if config.NoDirectUpload == false { + f, err := os.Stat(artifactFilePath) + if err != nil { + ui.Error(fmt.Sprintf("error determining size of upload artifact: %s", artifactFilePath)) + } + if f.Size() > VAGRANT_CLOUD_DIRECT_UPLOAD_LIMIT { + ui.Say(fmt.Sprintf("Asset %s is larger than the direct upload limit. Setting `NoDirectUpload` to true", artifactFilePath)) + config.NoDirectUpload = true + } + } + path := fmt.Sprintf("box/%s/version/%v/provider/%s/upload", box.Tag, version.Version, provider.Name) if !config.NoDirectUpload { path = path + "/direct" From 502708b86ae27f37ebcf6ba0269ff430f15e5035 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Fri, 19 Mar 2021 02:24:49 -0700 Subject: [PATCH 138/212] Refactor hcl2_upgrade (#10787) --- command/hcl2_upgrade.go | 110 +++++++++++++++++++++++----------------- 1 file changed, 63 insertions(+), 47 deletions(-) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 8f6af2046..7192c193b 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -270,18 +270,18 @@ func (uc UnhandleableArgumentError) Error() string { # Visit %s for more infos.`, uc.Call, uc.Correspondance, uc.Docs) } +func fallbackReturn(err error, s []byte) []byte { + if strings.Contains(err.Error(), "unhandled") { + return append([]byte(fmt.Sprintf("\n# %s\n", err)), s...) + } + + return append([]byte(fmt.Sprintf("\n# could not parse template for following block: %q\n", err)), s...) +} + // transposeTemplatingCalls executes parts of blocks as go template files and replaces // their result with their hcl2 variant. If something goes wrong the template // containing the go template string is returned. func transposeTemplatingCalls(s []byte) []byte { - fallbackReturn := func(err error) []byte { - if strings.Contains(err.Error(), "unhandled") { - return append([]byte(fmt.Sprintf("\n# %s\n", err)), s...) - } - - return append([]byte(fmt.Sprintf("\n# could not parse template for following block: %q\n", err)), s...) - } - funcErrors := &multierror.Error{ ErrorFormat: func(es []error) string { if len(es) == 1 { @@ -437,14 +437,14 @@ func transposeTemplatingCalls(s []byte) []byte { Parse(string(s)) if err != nil { - return fallbackReturn(err) + return fallbackReturn(err, s) } str := &bytes.Buffer{} // PASSTHROUGHS is a map of variable-specific golang text template fields // that should remain in the text template format. if err := tpl.Execute(str, PASSTHROUGHS); err != nil { - return fallbackReturn(err) + return fallbackReturn(err, s) } out := str.Bytes() @@ -461,14 +461,6 @@ func transposeTemplatingCalls(s []byte) []byte { // In variableTransposeTemplatingCalls the definition of aws_secretsmanager function will create a data source // with the same name as the variable. func variableTransposeTemplatingCalls(s []byte) (isLocal bool, body []byte) { - fallbackReturn := func(err error) []byte { - if strings.Contains(err.Error(), "unhandled") { - return append([]byte(fmt.Sprintf("\n# %s\n", err)), s...) - } - - return append([]byte(fmt.Sprintf("\n# could not parse template for following block: %q\n", err)), s...) - } - setIsLocal := func(a ...string) string { isLocal = true return "" @@ -510,14 +502,14 @@ func variableTransposeTemplatingCalls(s []byte) (isLocal bool, body []byte) { Parse(string(s)) if err != nil { - return isLocal, fallbackReturn(err) + return isLocal, fallbackReturn(err, s) } str := &bytes.Buffer{} // PASSTHROUGHS is a map of variable-specific golang text template fields // that should remain in the text template format. if err := tpl.Execute(str, PASSTHROUGHS); err != nil { - return isLocal, fallbackReturn(err) + return isLocal, fallbackReturn(err, s) } return isLocal, str.Bytes() @@ -682,12 +674,49 @@ type VariableParser struct { localsOut []byte } +func makeLocal(variable *template.Variable, sensitive bool, localBody *hclwrite.Body, localsContent *hclwrite.File, hasLocals *bool) []byte { + if sensitive { + // Create Local block because this is sensitive + sensitiveLocalContent := hclwrite.NewEmptyFile() + body := sensitiveLocalContent.Body() + body.AppendNewline() + sensitiveLocalBody := body.AppendNewBlock("local", []string{variable.Key}).Body() + sensitiveLocalBody.SetAttributeValue("sensitive", cty.BoolVal(true)) + sensitiveLocalBody.SetAttributeValue("expression", hcl2shim.HCL2ValueFromConfigValue(variable.Default)) + localsVariableMap[variable.Key] = "local" + return sensitiveLocalContent.Bytes() + } + localBody.SetAttributeValue(variable.Key, hcl2shim.HCL2ValueFromConfigValue(variable.Default)) + localsVariableMap[variable.Key] = "locals" + *hasLocals = true + return []byte{} +} + +func makeVariable(variable *template.Variable, sensitive bool) []byte { + variablesContent := hclwrite.NewEmptyFile() + variablesBody := variablesContent.Body() + variablesBody.AppendNewline() + variableBody := variablesBody.AppendNewBlock("variable", []string{variable.Key}).Body() + variableBody.SetAttributeRaw("type", hclwrite.Tokens{&hclwrite.Token{Bytes: []byte("string")}}) + + if variable.Default != "" || !variable.Required { + shimmed := hcl2shim.HCL2ValueFromConfigValue(variable.Default) + variableBody.SetAttributeValue("default", shimmed) + } + if sensitive { + variableBody.SetAttributeValue("sensitive", cty.BoolVal(true)) + } + + return variablesContent.Bytes() +} + func (p *VariableParser) Parse(tpl *template.Template) error { - // OutPut Locals and Local blocks + // Output Locals and Local blocks localsContent := hclwrite.NewEmptyFile() localsBody := localsContent.Body() localsBody.AppendNewline() localBody := localsBody.AppendNewBlock("locals", nil).Body() + hasLocals := false if len(p.variablesOut) == 0 { p.variablesOut = []byte{} @@ -707,47 +736,34 @@ func (p *VariableParser) Parse(tpl *template.Template) error { }) } - hasLocals := false for _, variable := range variables { - variablesContent := hclwrite.NewEmptyFile() - variablesBody := variablesContent.Body() - variablesBody.AppendNewline() - variableBody := variablesBody.AppendNewBlock("variable", []string{variable.Key}).Body() - variableBody.SetAttributeRaw("type", hclwrite.Tokens{&hclwrite.Token{Bytes: []byte("string")}}) + // Create new HCL2 "variables" block, and populate the "value" + // field with the "Default" value from the JSON variable. - if variable.Default != "" || !variable.Required { - variableBody.SetAttributeValue("default", hcl2shim.HCL2ValueFromConfigValue(variable.Default)) - } + // Interpolate Jsonval first as an hcl variable to determine if it is + // a local. + isLocal, _ := variableTransposeTemplatingCalls([]byte(variable.Default)) sensitive := false if isSensitiveVariable(variable.Key, tpl.SensitiveVariables) { sensitive = true - variableBody.SetAttributeValue("sensitive", cty.BoolVal(true)) } - isLocal, out := variableTransposeTemplatingCalls(variablesContent.Bytes()) + // Create final HCL block and append. if isLocal { - if sensitive { - // Create Local block because this is sensitive - localContent := hclwrite.NewEmptyFile() - body := localContent.Body() - body.AppendNewline() - localBody := body.AppendNewBlock("local", []string{variable.Key}).Body() - localBody.SetAttributeValue("sensitive", cty.BoolVal(true)) - localBody.SetAttributeValue("expression", hcl2shim.HCL2ValueFromConfigValue(variable.Default)) - p.localsOut = append(p.localsOut, transposeTemplatingCalls(localContent.Bytes())...) - localsVariableMap[variable.Key] = "local" - continue + sensitiveBlocks := makeLocal(variable, sensitive, localBody, localsContent, &hasLocals) + if len(sensitiveBlocks) > 0 { + p.localsOut = append(p.localsOut, transposeTemplatingCalls(sensitiveBlocks)...) } - localBody.SetAttributeValue(variable.Key, hcl2shim.HCL2ValueFromConfigValue(variable.Default)) - localsVariableMap[variable.Key] = "locals" - hasLocals = true continue } + varbytes := makeVariable(variable, sensitive) + _, out := variableTransposeTemplatingCalls(varbytes) p.variablesOut = append(p.variablesOut, out...) } - if hasLocals { + if hasLocals == true { p.localsOut = append(p.localsOut, transposeTemplatingCalls(localsContent.Bytes())...) } + return nil } From d5ccf73e91a444d868a243e86bce52dfee9b4a43 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Fri, 19 Mar 2021 11:59:10 +0100 Subject: [PATCH 139/212] oci builder: Show key_file errors (#10774) --- builder/oracle/oci/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/oracle/oci/config.go b/builder/oracle/oci/config.go index a1a4c980f..11cb1f69f 100644 --- a/builder/oracle/oci/config.go +++ b/builder/oracle/oci/config.go @@ -253,7 +253,7 @@ func (c *Config) Prepare(raws ...interface{}) error { if _, err := configProvider.PrivateRSAKey(); err != nil { errs = packersdk.MultiErrorAppend( - errs, errors.New("'key_file' must be specified")) + errs, fmt.Errorf("'key_file' must be correctly specified. %w", err)) } c.configProvider = configProvider From 7c6c399a386ae77b8362e5e0a1b5d65251004430 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 19 Mar 2021 07:47:32 -0400 Subject: [PATCH 140/212] Add hashibot configuration for transferring issues (#10785) The added configuration will allow us to transfer open remote-plugin/* issues from hashicorp/packer to their new respective repos. HashiBot issue transfer only works with orgs it has write access to. Which is similar to how GitHub's issue transfer feature works. --- .hashibot.hcl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.hashibot.hcl b/.hashibot.hcl index 6432f6ad5..33985658e 100644 --- a/.hashibot.hcl +++ b/.hashibot.hcl @@ -22,3 +22,21 @@ poll "closed_issue_locker" "locker" { If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further. EOF } + +poll "label_issue_migrater" "remote_plugin_migrater" { + schedule = "0 20 * * * *" + new_owner = "hashicorp" + repo_prefix = "packer-plugin-" + label_prefix = "remote-plugin/" + excluded_label_prefixes = ["communicator/"] + excluded_labels = ["build", "core", "new-plugin-contribution", "website"] + + issue_header = <<-EOF + _This issue was originally opened by @${var.user} as ${var.repository}#${var.issue_number}. It was migrated here as a result of the [Packer plugin split](###blog-post-url###). The original body of the issue is below._ + +
+ + EOF + migrated_comment = "This issue has been automatically migrated to ${var.repository}#${var.issue_number} because it looks like an issue with that plugin. If you believe this is _not_ an issue with the plugin, please reply to ${var.repository}#${var.issue_number}." +} + From 9f647ba2bb01dd5b824fbac4b5e84b9d312de9b8 Mon Sep 17 00:00:00 2001 From: jhawk28 Date: Fri, 19 Mar 2021 08:27:05 -0400 Subject: [PATCH 141/212] try to retype key if an error is received (#10541) --- builder/vsphere/common/step_boot_command.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/builder/vsphere/common/step_boot_command.go b/builder/vsphere/common/step_boot_command.go index 7a56f9e06..5847d1f08 100644 --- a/builder/vsphere/common/step_boot_command.go +++ b/builder/vsphere/common/step_boot_command.go @@ -99,7 +99,19 @@ func (s *StepBootCommand) Run(ctx context.Context, state multistep.StateBag) mul Shift: shift, }) if err != nil { - return fmt.Errorf("error typing a boot command (code, down) `%d, %t`: %w", code, down, err) + // retry once if error + ui.Error(fmt.Errorf("error typing a boot command (code, down) `%d, %t`: %w", code, down, err).Error()) + ui.Say("trying key input again") + time.Sleep(s.Config.BootGroupInterval) + _, err = vm.TypeOnKeyboard(driver.KeyInput{ + Scancode: code, + Ctrl: keyCtrl, + Alt: keyAlt, + Shift: shift, + }) + if err != nil { + return fmt.Errorf("error typing a boot command (code, down) `%d, %t`: %w", code, down, err) + } } return nil } From e2e6bce4c4c6bed6656d820727cb8ad548c03cfb Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Fri, 19 Mar 2021 13:56:41 +0100 Subject: [PATCH 142/212] Update hcl2_upgrade_test.go show diffs with strings --- command/hcl2_upgrade_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index 1e3ce491f..17c99a166 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -29,6 +29,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "variables-only", flags: []string{}}, {folder: "variables-with-variables", flags: []string{}}, {folder: "complete-variables-with-template-engine", flags: []string{}}, + {folder: "escaped", flags: []string{}}, } for _, tc := range tc { @@ -46,8 +47,8 @@ func Test_hcl2_upgrade(t *testing.T) { if err != nil { t.Fatalf("%v %s", err, bs) } - expected := mustBytes(ioutil.ReadFile(expectedPath)) - actual := mustBytes(ioutil.ReadFile(outputPath)) + expected := string(mustBytes(ioutil.ReadFile(expectedPath))) + actual := string(mustBytes(ioutil.ReadFile(outputPath))) if diff := cmp.Diff(expected, actual); diff != "" { t.Fatalf("unexpected output: %s", diff) From ac7c0f2f043d7184210888adac53e2173dfba663 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 19 Mar 2021 09:48:58 -0400 Subject: [PATCH 143/212] Update link in issue migrator config (#10791) --- .hashibot.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.hashibot.hcl b/.hashibot.hcl index 33985658e..7857c0981 100644 --- a/.hashibot.hcl +++ b/.hashibot.hcl @@ -32,7 +32,7 @@ poll "label_issue_migrater" "remote_plugin_migrater" { excluded_labels = ["build", "core", "new-plugin-contribution", "website"] issue_header = <<-EOF - _This issue was originally opened by @${var.user} as ${var.repository}#${var.issue_number}. It was migrated here as a result of the [Packer plugin split](###blog-post-url###). The original body of the issue is below._ + _This issue was originally opened by @${var.user} as ${var.repository}#${var.issue_number}. It was migrated here as a result of the [Packer plugin split](https://github.com/hashicorp/packer/issues/8610#issuecomment-770034737). The original body of the issue is below._
From 80f807de4d1972713f1cd55afc5407a5798e1de5 Mon Sep 17 00:00:00 2001 From: Brian Farrell Date: Fri, 19 Mar 2021 09:17:41 -0500 Subject: [PATCH 144/212] Fix issue with test breaking default value when client_cert_token_timeout is missing (#10783) --- builder/azure/common/client/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/azure/common/client/config.go b/builder/azure/common/client/config.go index 041197222..70bed0abd 100644 --- a/builder/azure/common/client/config.go +++ b/builder/azure/common/client/config.go @@ -165,7 +165,7 @@ func (c Config) Validate(errs *packersdk.MultiError) { if _, err := os.Stat(c.ClientCertPath); err != nil { errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("client_cert_path is not an accessible file: %v", err)) } - if c.ClientCertExpireTimeout < 5*time.Minute { + if c.ClientCertExpireTimeout != 0 && c.ClientCertExpireTimeout < 5*time.Minute { errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("client_cert_token_timeout will expire within 5 minutes, please set a value greater than 5 minutes")) } return From a40a78240808483e55d382f78c96b0f30ce4afd0 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Fri, 19 Mar 2021 09:28:30 -0700 Subject: [PATCH 145/212] remove escaped dir --- command/hcl2_upgrade_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index 17c99a166..fea33f365 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -29,7 +29,6 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "variables-only", flags: []string{}}, {folder: "variables-with-variables", flags: []string{}}, {folder: "complete-variables-with-template-engine", flags: []string{}}, - {folder: "escaped", flags: []string{}}, } for _, tc := range tc { From f2f65607eb083271cc9432740980c0de4da8d776 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 19 Mar 2021 14:32:05 -0400 Subject: [PATCH 146/212] update CHANGELOG --- CHANGELOG.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35779ae05..e3ada5059 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,33 @@ ## 1.7.1 (Upcoming) +### NOTES: + +* builder/docker: Has been vendored in this release and will no longer be + updated with Packer core. In Packer v1.8.0 the plugin will be removed + entirely. The `docker` builder will continue to work as expected until + then, but for the latest offerings of the Docker plugin, users are + encourage to use the `packer init` command to install the latest release + version. For more details see [Installing Packer + Plugins](https://www.packer.io/docs/plugins#installing- plugins) +* post-processor/docker-\*: Have been vendored in this release and will no + longer be updated with Packer core. In Packer v1.8.0 the plugin will be + removed entirely. The `docker` builder will continue to work as expected + until then, but for the latest offerings of the Docker plugin, users are + encourage to use the `packer init` command to install the latest release + version. For more details see [Installing Packer + Plugins](https://www.packer.io/docs/plugins#installing- plugins) +* post-processor/exoscale-import: Has been vendored in this release and will no + longer be updated with Packer core. In Packer v1.8.0 the plugin will be + removed entirely. The `exoscale-import` post-processor will continue to + work as expected until then, but for the latest offerings of the Exoscale + plugin, users are encourage to use the `packer init` command to install the + latest release version. For more details see [Exoscale Plugin + Repostiroy](https://github.com/exoscale/packer-plugin-exoscale). [GH-10709] + ### IMPROVEMENTS * builder/amazon: allow creation of ebs snapshots wihtout volumes. [GH-9591] +* builder/amazon: Fix issue for multi-region AMI build that fail when + encrypting with KMS and sharing across accounts. [GH-10754] * builder/azure: Add client_cert_token_timeout option. [GH-10528] * builder/google: Make Windows password timeout configurable. [GH-10727] * builder/google: Update public GCP image project as gce-uefi-images are @@ -19,6 +45,8 @@ * builder/virtualbox: Support for "virtio" storage and ISO drive. [GH-10632] * builder/vmware: Added "attach_snapshot" parameter to vmware vmx builder. [GH-10651] +* command/fmt: Adding recursive flag to formatter to format subdirectories. + [GH-10457] * core: Change template parsing error to include warning about file extensions. [GH-10652] * core: Update to gopsutil v3.21.1 to allow builds to work for darwin arm64. @@ -26,33 +54,52 @@ * hcl2_upgrade: hcl2_upgrade command can now upgrade json var-files [GH-10676] ### BUG FIXES +* buider/azure: Update builder to ensure a proper clean up Azure temporary + managed Os disks. [GH-10713] * builder/amazon: Update amazon SDK to fix an SSO login issue. [GH-10668] * builder/azure: Don't overwrite subscription id if unset. [GH-10659] +* builder/azure: Set default for the parameter client_cert_token_timeout + [GH-10783] +* builder/google: Add new configuration field `windows_password_timeout` to + allow user to set configurable timeouts. [GH-10727] * builder/hyperv: Make Packer respect winrm_host flag in winrm connect func. [GH-10748] * builder/openstack: Make Packer respect winrm_host flag in winrm connect func. [GH-10748] * builder/oracle-oci: Update Oracle Go SDK to fix issue with reading key file. - [GH-10560] + [GH-10560] [GH-10774] * builder/parallels: Make Packer respect winrm_host flag in winrm connect func. [GH-10748] +* builder/proxmox: Fixes issue when using `additional_iso_files` in HCL enabled + templates. [GH-10772] * builder/qemu: Make Packer respect winrm_host flag in winrm connect func. [GH-10748] * builder/virtualbox: Make Packer respect winrm_host flag in winrm connect func. [GH-10748] * builder/vmware: Added a fallback file check when trying to determine the network-mapping configuration. [GH-10543] +* builder/vsphere: Fix issue where boot command would fail the build do to a + key typing error. This change will now retry to type the key on error + before giving up. [GH-10541] * core/hcl2_upgrade: Check for nil config map when provisioner/post-processor doesn't have config. [GH-10730] * core/hcl2_upgrade: Make hcl2_upgrade command correctly translate pause_before. [GH-10654] * core/hcl2_upgrade: Make json variables using template engines get stored as locals so they can be properly interpolated. [GH-10685] +* core/init: Fixes issue where `packer init` was failing to install valid + plugins containing a 'v' within its name. [GH-10760] +* core: Packer will now show a proper error message when failing to load the + contents of PACKER_CONFIG. [GH-10766] * core: Pin Packer to Golang 1.16 to fix code generation issues. [GH-10702] * core: Templates previously could not interpolate the environment variable PACKER_LOG_PATH. [GH-10660] * provisioner/chef-solo: HCL2 templates can support the json_string option. [GH-10655] +* provisioner/inspec: Add new configuration field `valid_exit_codes` to allow + for non-zero exit codes. [GH-10723] +* provisioner/salt-masterless: Update urls for the bootstrap scripts used by + salt-masterless provide. [GH-10755] ## 1.7.0 (February 17, 2021) From a915ec8e0562b00c18556a4e49ac4107d1fd1e2a Mon Sep 17 00:00:00 2001 From: Andrew Pryde Date: Fri, 19 Mar 2021 13:30:43 +0000 Subject: [PATCH 147/212] Upgrade oci-go-sdk to latest --- builder/oracle/oci/artifact.go | 2 +- builder/oracle/oci/builder.go | 2 +- builder/oracle/oci/config.go | 6 +- builder/oracle/oci/config_provider.go | 76 - builder/oracle/oci/config_test.go | 6 +- builder/oracle/oci/driver.go | 2 +- builder/oracle/oci/driver_mock.go | 2 +- builder/oracle/oci/driver_oci.go | 4 +- ...e_principal_configuration_provider_mock.go | 9 + go.mod | 4 +- go.sum | 4 + ...on_launch_instance_agent_config_details.go | 34 - .../oracle/oci-go-sdk/{ => v36}/LICENSE.txt | 0 .../oracle/oci-go-sdk/{ => v36}/NOTICE.txt | 0 .../common/auth/certificate_retriever.go | 4 +- .../{ => v36}/common/auth/configuration.go | 8 +- .../common/auth/dispatcher_modifier.go | 4 +- .../common/auth/federation_client.go | 22 +- ...nce_principal_delegation_token_provider.go | 67 + .../auth/instance_principal_key_provider.go | 4 +- .../oci-go-sdk/{ => v36}/common/auth/jwt.go | 4 +- .../auth/resouce_principal_key_provider.go | 51 +- .../resource_principal_token_path_provider.go | 138 + .../v36/common/auth/resource_principals_v1.go | 373 +++ .../oci-go-sdk/{ => v36}/common/auth/utils.go | 28 +- .../oci-go-sdk/{ => v36}/common/client.go | 161 +- .../oci-go-sdk/{ => v36}/common/common.go | 51 +- .../{ => v36}/common/configuration.go | 101 +- .../oci-go-sdk/{ => v36}/common/errors.go | 2 +- .../oci-go-sdk/{ => v36}/common/helpers.go | 13 +- .../oci-go-sdk/{ => v36}/common/http.go | 82 +- .../{ => v36}/common/http_signer.go | 2 +- .../oracle/oci-go-sdk/{ => v36}/common/log.go | 13 +- .../oci-go-sdk/{ => v36}/common/retry.go | 2 +- .../oci-go-sdk/{ => v36}/common/version.go | 4 +- ...image_shape_compatibility_entry_details.go | 6 +- ...pe_compatibility_entry_request_response.go | 8 +- ...k_security_group_security_rules_details.go | 4 +- ...y_group_security_rules_request_response.go | 10 +- .../add_public_ip_pool_capacity_details.go} | 21 +- ...ublic_ip_pool_capacity_request_response.go | 79 + .../core/add_security_rule_details.go | 24 +- .../v36/core/add_vcn_cidr_details.go | 29 + .../v36/core/add_vcn_cidr_request_response.go | 82 + ...d_network_security_group_security_rules.go | 4 +- .../advertise_byoip_range_request_response.go | 63 + ...ilan_bm_launch_instance_platform_config.go | 71 + .../v36/core/amd_milan_bm_platform_config.go | 71 + .../{ => v36}/core/app_catalog_listing.go | 4 +- .../app_catalog_listing_resource_version.go | 4 +- ...log_listing_resource_version_agreements.go | 4 +- ...atalog_listing_resource_version_summary.go | 4 +- .../core/app_catalog_listing_summary.go | 4 +- .../core/app_catalog_subscription.go | 4 +- .../core/app_catalog_subscription_summary.go | 4 +- .../core/attach_boot_volume_details.go | 4 +- .../attach_boot_volume_request_response.go | 8 +- .../core/attach_emulated_volume_details.go | 4 +- .../core/attach_i_scsi_volume_details.go | 4 +- .../attach_instance_pool_instance_details.go | 29 + ...instance_pool_instance_request_response.go | 86 + .../core/attach_load_balancer_details.go | 8 +- .../attach_load_balancer_request_response.go | 10 +- .../attach_paravirtualized_volume_details.go | 4 +- ...ttach_service_determined_volume_details.go | 4 +- .../attach_service_id_request_response.go | 12 +- .../{ => v36}/core/attach_vnic_details.go | 6 +- .../core/attach_vnic_request_response.go | 8 +- .../{ => v36}/core/attach_volume_details.go | 4 +- .../core/attach_volume_request_response.go | 8 +- .../{ => v36}/core/bgp_session_info.go | 4 +- ...lean_image_capability_schema_descriptor.go | 4 +- .../oci-go-sdk/{ => v36}/core/boot_volume.go | 9 +- .../{ => v36}/core/boot_volume_attachment.go | 4 +- .../{ => v36}/core/boot_volume_backup.go | 4 +- .../{ => v36}/core/boot_volume_kms_key.go | 4 +- .../core/boot_volume_source_details.go | 4 +- ..._source_from_boot_volume_backup_details.go | 4 +- ..._volume_source_from_boot_volume_details.go | 4 +- ...virtual_circuit_public_prefixes_details.go | 4 +- ...ircuit_public_prefixes_request_response.go | 8 +- ...virtual_circuit_public_prefixes_details.go | 4 +- ...ircuit_public_prefixes_request_response.go | 8 +- .../core/byoip_allocated_range_collection.go | 29 + .../v36/core/byoip_allocated_range_summary.go | 32 + .../oracle/oci-go-sdk/v36/core/byoip_range.go | 141 + .../v36/core/byoip_range_collection.go | 29 + .../v36/core/byoip_range_summary.go | 59 + .../core/capture_console_history_details.go | 4 +- ...apture_console_history_request_response.go | 8 +- ..._boot_volume_backup_compartment_details.go | 4 +- ...ume_backup_compartment_request_response.go | 8 +- .../change_boot_volume_compartment_details.go | 4 +- ...oot_volume_compartment_request_response.go | 8 +- .../change_byoip_range_compartment_details.go | 29 + ...yoip_range_compartment_request_response.go | 73 + ...nge_cluster_network_compartment_details.go | 4 +- ...er_network_compartment_request_response.go | 10 +- ...e_capability_schema_compartment_details.go | 4 +- ...ity_schema_compartment_request_response.go | 10 +- .../core/change_cpe_compartment_details.go | 6 +- ...change_cpe_compartment_request_response.go | 8 +- ...hange_cross_connect_compartment_details.go | 6 +- ...ss_connect_compartment_request_response.go | 8 +- ...cross_connect_group_compartment_details.go | 6 +- ...nect_group_compartment_request_response.go | 8 +- ...e_dedicated_vm_host_compartment_details.go | 4 +- ...ed_vm_host_compartment_request_response.go | 10 +- ...change_dhcp_options_compartment_details.go | 6 +- ...cp_options_compartment_request_response.go | 8 +- .../core/change_drg_compartment_details.go | 6 +- ...change_drg_compartment_request_response.go | 8 +- ...connection_compartment_request_response.go | 8 +- .../core/change_image_compartment_details.go | 4 +- ...ange_image_compartment_request_response.go | 10 +- .../change_instance_compartment_details.go | 4 +- ...e_instance_compartment_request_response.go | 10 +- ...tance_configuration_compartment_details.go | 4 +- ...figuration_compartment_request_response.go | 10 +- ...hange_instance_pool_compartment_details.go | 4 +- ...tance_pool_compartment_request_response.go | 10 +- ...ge_internet_gateway_compartment_details.go | 6 +- ...et_gateway_compartment_request_response.go | 8 +- ...e_ip_sec_connection_compartment_details.go | 6 +- ...cal_peering_gateway_compartment_details.go | 6 +- ...ng_gateway_compartment_request_response.go | 8 +- .../change_nat_gateway_compartment_details.go | 6 +- ...at_gateway_compartment_request_response.go | 10 +- ...work_security_group_compartment_details.go | 6 +- ...rity_group_compartment_request_response.go | 10 +- .../change_public_ip_compartment_details.go | 6 +- ..._public_ip_compartment_request_response.go | 8 +- ...ange_public_ip_pool_compartment_details.go | 29 + ...ic_ip_pool_compartment_request_response.go | 73 + ..._peering_connection_compartment_details.go | 6 +- ...connection_compartment_request_response.go | 8 +- .../change_route_table_compartment_details.go | 6 +- ...oute_table_compartment_request_response.go | 8 +- ...hange_security_list_compartment_details.go | 6 +- ...urity_list_compartment_request_response.go | 8 +- ...nge_service_gateway_compartment_details.go | 6 +- ...ce_gateway_compartment_request_response.go | 10 +- .../core/change_subnet_compartment_details.go | 6 +- ...nge_subnet_compartment_request_response.go | 8 +- .../core/change_vcn_compartment_details.go | 6 +- ...change_vcn_compartment_request_response.go | 10 +- ...nge_virtual_circuit_compartment_details.go | 6 +- ...al_circuit_compartment_request_response.go | 8 +- .../core/change_vlan_compartment_details.go | 6 +- ...hange_vlan_compartment_request_response.go | 12 +- ...hange_volume_backup_compartment_details.go | 4 +- ...ume_backup_compartment_request_response.go | 8 +- .../core/change_volume_compartment_details.go | 4 +- ...nge_volume_compartment_request_response.go | 8 +- ...volume_group_backup_compartment_details.go | 4 +- ...oup_backup_compartment_request_response.go | 8 +- ...change_volume_group_compartment_details.go | 4 +- ...lume_group_compartment_request_response.go | 8 +- .../{ => v36}/core/cluster_network.go | 5 +- ...network_placement_configuration_details.go | 4 +- .../{ => v36}/core/cluster_network_summary.go | 4 +- .../compute_global_image_capability_schema.go | 4 +- ..._global_image_capability_schema_summary.go | 4 +- ..._global_image_capability_schema_version.go | 4 +- ...image_capability_schema_version_summary.go | 4 +- .../core/compute_image_capability_schema.go | 4 +- ...compute_image_capability_schema_summary.go | 4 +- .../core/compute_instance_details.go | 4 +- .../connect_local_peering_gateways_details.go | 4 +- ...local_peering_gateways_request_response.go | 8 +- ...nect_remote_peering_connections_details.go | 4 +- ...te_peering_connections_request_response.go | 8 +- .../{ => v36}/core/console_history.go | 4 +- .../core/copy_boot_volume_backup_details.go | 4 +- ...opy_boot_volume_backup_request_response.go | 8 +- .../core/copy_volume_backup_details.go | 4 +- .../copy_volume_backup_request_response.go | 8 +- .../core/core_blockstorage_client.go | 392 ++- .../{ => v36}/core/core_compute_client.go | 586 +++- .../core/core_computemanagement_client.go | 392 ++- .../core/core_virtualnetwork_client.go | 2625 ++++++++++++++++- .../oracle/oci-go-sdk/{ => v36}/core/cpe.go | 12 +- .../core/cpe_device_config_answer.go | 4 +- .../core/cpe_device_config_question.go | 5 +- .../{ => v36}/core/cpe_device_info.go | 4 +- .../{ => v36}/core/cpe_device_shape_detail.go | 7 +- .../core/cpe_device_shape_summary.go | 7 +- ...create_app_catalog_subscription_details.go | 4 +- ...p_catalog_subscription_request_response.go | 8 +- .../core/create_boot_volume_backup_details.go | 4 +- ...ate_boot_volume_backup_request_response.go | 8 +- .../core/create_boot_volume_details.go | 6 +- .../create_boot_volume_request_response.go | 8 +- .../v36/core/create_byoip_range_details.go | 47 + .../create_byoip_range_request_response.go | 76 + .../core/create_cluster_network_details.go | 5 +- ...e_cluster_network_instance_pool_details.go | 6 +- ...create_cluster_network_request_response.go | 8 +- ...compute_image_capability_schema_details.go | 4 +- ...mage_capability_schema_request_response.go | 8 +- .../{ => v36}/core/create_cpe_details.go | 9 +- .../core/create_cpe_request_response.go | 8 +- .../core/create_cross_connect_details.go | 4 +- .../create_cross_connect_group_details.go | 4 +- ...te_cross_connect_group_request_response.go | 8 +- .../create_cross_connect_request_response.go | 8 +- .../core/create_dedicated_vm_host_details.go | 4 +- ...eate_dedicated_vm_host_request_response.go | 8 +- .../{ => v36}/core/create_dhcp_details.go | 7 +- .../create_dhcp_options_request_response.go | 8 +- .../core/create_drg_attachment_details.go | 11 +- .../create_drg_attachment_request_response.go | 8 +- .../{ => v36}/core/create_drg_details.go | 7 +- .../core/create_drg_request_response.go | 8 +- ...ate_i_p_sec_connection_request_response.go | 8 +- .../{ => v36}/core/create_image_details.go | 5 +- .../core/create_image_request_response.go | 8 +- .../create_instance_configuration_base.go | 6 +- .../create_instance_configuration_details.go | 6 +- ...nce_configuration_from_instance_details.go | 6 +- ...instance_configuration_request_response.go | 8 +- ...ate_instance_console_connection_details.go | 4 +- ...nce_console_connection_request_response.go | 8 +- .../core/create_instance_pool_details.go | 4 +- ...ce_pool_placement_configuration_details.go | 4 +- .../create_instance_pool_request_response.go | 8 +- .../core/create_internet_gateway_details.go | 7 +- ...reate_internet_gateway_request_response.go | 8 +- .../core/create_ip_sec_connection_details.go | 11 +- ...create_ip_sec_connection_tunnel_details.go | 13 +- ...reate_ip_sec_tunnel_bgp_session_details.go | 4 +- ...ip_sec_tunnel_encryption_domain_details.go | 33 + .../{ => v36}/core/create_ipv6_details.go | 12 +- .../core/create_ipv6_request_response.go | 8 +- .../create_local_peering_gateway_details.go | 6 +- ..._local_peering_gateway_request_response.go | 8 +- .../core/create_nat_gateway_details.go | 11 +- .../create_nat_gateway_request_response.go | 8 +- .../create_network_security_group_details.go | 8 +- ...network_security_group_request_response.go | 8 +- .../core/create_private_ip_details.go | 6 +- .../create_private_ip_request_response.go | 8 +- .../core/create_public_ip_details.go | 9 +- .../v36/core/create_public_ip_pool_details.go | 43 + .../create_public_ip_pool_request_response.go | 76 + .../core/create_public_ip_request_response.go | 8 +- ...reate_remote_peering_connection_details.go | 4 +- ...ote_peering_connection_request_response.go | 8 +- .../core/create_route_table_details.go | 7 +- .../create_route_table_request_response.go | 8 +- .../core/create_security_list_details.go | 7 +- .../create_security_list_request_response.go | 8 +- .../core/create_service_gateway_details.go | 8 +- ...create_service_gateway_request_response.go | 8 +- .../{ => v36}/core/create_subnet_details.go | 11 +- .../core/create_subnet_request_response.go | 8 +- .../{ => v36}/core/create_vcn_details.go | 30 +- .../core/create_vcn_request_response.go | 8 +- .../core/create_virtual_circuit_details.go | 6 +- ...e_virtual_circuit_public_prefix_details.go | 4 +- ...create_virtual_circuit_request_response.go | 8 +- .../{ => v36}/core/create_vlan_details.go | 8 +- .../core/create_vlan_request_response.go | 8 +- .../{ => v36}/core/create_vnic_details.go | 14 +- .../core/create_volume_backup_details.go | 4 +- ...volume_backup_policy_assignment_details.go | 4 +- ...ckup_policy_assignment_request_response.go | 8 +- .../create_volume_backup_policy_details.go | 4 +- ...e_volume_backup_policy_request_response.go | 8 +- .../create_volume_backup_request_response.go | 8 +- .../{ => v36}/core/create_volume_details.go | 7 +- .../create_volume_group_backup_details.go | 8 +- ...te_volume_group_backup_request_response.go | 8 +- .../core/create_volume_group_details.go | 16 +- .../create_volume_group_request_response.go | 8 +- .../core/create_volume_request_response.go | 8 +- .../{ => v36}/core/cross_connect.go | 10 +- .../{ => v36}/core/cross_connect_group.go | 10 +- .../{ => v36}/core/cross_connect_location.go | 4 +- .../{ => v36}/core/cross_connect_mapping.go | 10 +- .../core/cross_connect_port_speed_shape.go | 4 +- .../{ => v36}/core/cross_connect_status.go | 4 +- .../{ => v36}/core/dedicated_vm_host.go | 4 +- ...edicated_vm_host_instance_shape_summary.go | 4 +- .../dedicated_vm_host_instance_summary.go | 4 +- .../core/dedicated_vm_host_shape_summary.go | 4 +- .../core/dedicated_vm_host_summary.go | 4 +- ...p_catalog_subscription_request_response.go | 8 +- ...ete_boot_volume_backup_request_response.go | 10 +- ...te_boot_volume_kms_key_request_response.go | 10 +- .../delete_boot_volume_request_response.go | 10 +- .../delete_byoip_range_request_response.go | 72 + ...mage_capability_schema_request_response.go | 10 +- ...delete_console_history_request_response.go | 10 +- .../core/delete_cpe_request_response.go | 10 +- ...te_cross_connect_group_request_response.go | 10 +- .../delete_cross_connect_request_response.go | 10 +- ...lete_dedicated_vm_host_request_response.go | 8 +- .../delete_dhcp_options_request_response.go | 10 +- .../delete_drg_attachment_request_response.go | 10 +- .../core/delete_drg_request_response.go | 10 +- ...ete_i_p_sec_connection_request_response.go | 10 +- .../core/delete_image_request_response.go | 10 +- ...instance_configuration_request_response.go | 10 +- ...nce_console_connection_request_response.go | 10 +- ...elete_internet_gateway_request_response.go | 10 +- .../core/delete_ipv6_request_response.go | 12 +- ..._local_peering_gateway_request_response.go | 10 +- .../delete_nat_gateway_request_response.go | 12 +- ...network_security_group_request_response.go | 12 +- .../delete_private_ip_request_response.go | 10 +- .../delete_public_ip_pool_request_response.go | 68 + .../core/delete_public_ip_request_response.go | 10 +- ...ote_peering_connection_request_response.go | 10 +- .../delete_route_table_request_response.go | 10 +- .../delete_security_list_request_response.go | 10 +- ...delete_service_gateway_request_response.go | 12 +- .../core/delete_subnet_request_response.go | 10 +- .../core/delete_vcn_request_response.go | 12 +- ...e_virtual_circuit_public_prefix_details.go | 4 +- ...delete_virtual_circuit_request_response.go | 10 +- .../core/delete_vlan_request_response.go | 12 +- ...ckup_policy_assignment_request_response.go | 10 +- ...e_volume_backup_policy_request_response.go | 10 +- .../delete_volume_backup_request_response.go | 10 +- ...te_volume_group_backup_request_response.go | 10 +- .../delete_volume_group_request_response.go | 10 +- .../delete_volume_kms_key_request_response.go | 10 +- .../core/delete_volume_request_response.go | 10 +- .../detach_boot_volume_request_response.go | 10 +- .../detach_instance_pool_instance_details.go} | 21 +- ...instance_pool_instance_request_response.go | 77 + .../core/detach_load_balancer_details.go | 4 +- .../detach_load_balancer_request_response.go | 10 +- .../detach_service_id_request_response.go | 12 +- .../core/detach_vnic_request_response.go | 10 +- .../core/detach_volume_request_response.go | 10 +- .../oci-go-sdk/{ => v36}/core/device.go | 4 +- .../{ => v36}/core/dhcp_dns_option.go | 8 +- .../oci-go-sdk/{ => v36}/core/dhcp_option.go | 8 +- .../oci-go-sdk/{ => v36}/core/dhcp_options.go | 12 +- .../core/dhcp_search_domain_option.go | 6 +- .../oracle/oci-go-sdk/{ => v36}/core/drg.go | 10 +- .../{ => v36}/core/drg_attachment.go | 20 +- .../{ => v36}/core/drg_redundancy_status.go | 6 +- .../{ => v36}/core/egress_security_rule.go | 19 +- .../core/emulated_volume_attachment.go | 9 +- .../core/encryption_domain_config.go} | 18 +- ...num_integer_image_capability_descriptor.go | 4 +- ...ring_image_capability_schema_descriptor.go | 4 +- .../{ => v36}/core/export_image_details.go | 45 +- .../core/export_image_request_response.go | 10 +- ..._image_via_object_storage_tuple_details.go | 12 +- ...rt_image_via_object_storage_uri_details.go | 18 +- .../core/fast_connect_provider_service.go | 6 +- .../core/fast_connect_provider_service_key.go | 6 +- ...log_listing_agreements_request_response.go | 8 +- ...et_app_catalog_listing_request_response.go | 8 +- ...sting_resource_version_request_response.go | 8 +- ...boot_volume_attachment_request_response.go | 8 +- ...get_boot_volume_backup_request_response.go | 8 +- ...et_boot_volume_kms_key_request_response.go | 10 +- .../core/get_boot_volume_request_response.go | 8 +- .../core/get_byoip_range_request_response.go | 69 + .../get_cluster_network_request_response.go | 8 +- ...mage_capability_schema_request_response.go | 8 +- ...ability_schema_version_request_response.go | 8 +- ...mage_capability_schema_request_response.go | 8 +- ...onsole_history_content_request_response.go | 8 +- .../get_console_history_request_response.go | 8 +- ..._device_config_content_request_response.go | 8 +- .../get_cpe_device_shape_request_response.go | 10 +- .../core/get_cpe_request_response.go | 8 +- ...et_cross_connect_group_request_response.go | 8 +- ...ct_letter_of_authority_request_response.go | 8 +- .../get_cross_connect_request_response.go | 8 +- ...t_cross_connect_status_request_response.go | 8 +- .../get_dedicated_vm_host_request_response.go | 8 +- .../core/get_dhcp_options_request_response.go | 8 +- .../get_drg_attachment_request_response.go | 8 +- ..._drg_redundancy_status_request_response.go | 8 +- .../core/get_drg_request_response.go | 8 +- ...t_provider_service_key_request_response.go | 8 +- ...nnect_provider_service_request_response.go | 8 +- ...nnection_device_config_request_response.go | 8 +- ...nnection_device_status_request_response.go | 8 +- ...get_i_p_sec_connection_request_response.go | 8 +- ..._sec_connection_tunnel_request_response.go | 10 +- ...n_tunnel_shared_secret_request_response.go | 10 +- .../core/get_image_request_response.go | 8 +- ...pe_compatibility_entry_request_response.go | 8 +- ...instance_configuration_request_response.go | 8 +- ...nce_console_connection_request_response.go | 8 +- ...instance_pool_instance_request_response.go | 72 + ...ad_balancer_attachment_request_response.go | 8 +- .../get_instance_pool_request_response.go | 8 +- .../core/get_instance_request_response.go | 8 +- .../get_internet_gateway_request_response.go | 8 +- ..._device_config_content_request_response.go | 8 +- .../core/get_ipv6_request_response.go | 10 +- ..._local_peering_gateway_request_response.go | 8 +- .../core/get_nat_gateway_request_response.go | 10 +- ...network_security_group_request_response.go | 10 +- .../core/get_private_ip_request_response.go | 8 +- .../get_public_ip_by_ip_address_details.go | 4 +- ...ublic_ip_by_ip_address_request_response.go | 8 +- .../get_public_ip_by_private_ip_id_details.go | 4 +- ...ic_ip_by_private_ip_id_request_response.go | 8 +- .../get_public_ip_pool_request_response.go | 69 + .../core/get_public_ip_request_response.go | 8 +- ...ote_peering_connection_request_response.go | 8 +- .../core/get_route_table_request_response.go | 8 +- .../get_security_list_request_response.go | 8 +- .../get_service_gateway_request_response.go | 10 +- .../core/get_service_request_response.go | 10 +- .../core/get_subnet_request_response.go | 8 +- ..._device_config_content_request_response.go | 10 +- ...nnel_cpe_device_config_request_response.go | 10 +- ...s_resolver_association_request_response.go | 69 + .../core/get_vcn_request_response.go | 10 +- .../get_virtual_circuit_request_response.go | 8 +- .../core/get_vlan_request_response.go | 10 +- .../get_vnic_attachment_request_response.go | 8 +- .../core/get_vnic_request_response.go | 8 +- .../get_volume_attachment_request_response.go | 8 +- ...olicy_asset_assignment_request_response.go | 8 +- ...ckup_policy_assignment_request_response.go | 8 +- ...t_volume_backup_policy_request_response.go | 8 +- .../get_volume_backup_request_response.go | 8 +- ...et_volume_group_backup_request_response.go | 8 +- .../core/get_volume_group_request_response.go | 8 +- .../get_volume_kms_key_request_response.go | 10 +- .../core/get_volume_request_response.go | 8 +- ...ce_initial_credentials_request_response.go | 8 +- .../core/i_scsi_volume_attachment.go | 18 +- .../oci-go-sdk/{ => v36}/core/icmp_options.go | 20 +- .../oracle/oci-go-sdk/{ => v36}/core/image.go | 4 +- .../image_capability_schema_descriptor.go | 4 +- .../v36/core/image_memory_constraints.go | 32 + .../{ => v36}/core/image_ocpu_constraints.go | 4 +- .../core/image_shape_compatibility_entry.go | 6 +- .../core/image_shape_compatibility_summary.go | 6 +- .../{ => v36}/core/image_source_details.go | 6 +- ...source_via_object_storage_tuple_details.go | 6 +- ...e_source_via_object_storage_uri_details.go | 6 +- .../{ => v36}/core/ingress_security_rule.go | 19 +- .../oci-go-sdk/{ => v36}/core/instance.go | 24 +- .../core/instance_action_request_response.go | 10 +- .../v36/core/instance_agent_config.go | 60 + .../{ => v36}/core/instance_agent_features.go | 10 +- .../instance_agent_plugin_config_details.go | 60 + .../core/instance_availability_config.go | 14 +- .../{ => v36}/core/instance_configuration.go | 4 +- ...ilan_bm_launch_instance_platform_config.go | 71 + ...tance_configuration_attach_vnic_details.go | 6 +- ...nce_configuration_attach_volume_details.go | 4 +- ...tance_configuration_availability_config.go | 14 +- ...ance_configuration_block_volume_details.go | 4 +- ...tance_configuration_create_vnic_details.go | 4 +- ...nce_configuration_create_volume_details.go | 7 +- ...instance_configuration_instance_details.go | 4 +- ...instance_configuration_instance_options.go | 31 + ...e_configuration_instance_source_details.go | 4 +- ...instance_source_via_boot_volume_details.go | 4 +- ...ation_instance_source_via_image_details.go | 7 +- ...nfiguration_iscsi_attach_volume_details.go | 4 +- ...on_launch_instance_agent_config_details.go | 63 + ...e_configuration_launch_instance_details.go | 27 +- ...uration_launch_instance_platform_config.go | 92 + ...on_launch_instance_shape_config_details.go | 7 +- .../instance_configuration_launch_options.go | 16 +- ...n_paravirtualized_attach_volume_details.go | 4 +- .../core/instance_configuration_summary.go | 4 +- ...nce_configuration_volume_source_details.go | 4 +- ...olume_source_from_volume_backup_details.go | 4 +- ...ation_volume_source_from_volume_details.go | 4 +- .../core/instance_console_connection.go | 7 +- .../{ => v36}/core/instance_credentials.go | 4 +- .../oci-go-sdk/v36/core/instance_options.go | 31 + .../{ => v36}/core/instance_pool.go | 4 +- .../v36/core/instance_pool_instance.go | 93 + ...nce_pool_instance_load_balancer_backend.go | 4 +- .../instance_pool_load_balancer_attachment.go | 8 +- .../instance_pool_placement_configuration.go | 4 +- ...ce_pool_placement_secondary_vnic_subnet.go | 4 +- .../{ => v36}/core/instance_pool_summary.go | 6 +- .../{ => v36}/core/instance_shape_config.go | 4 +- .../{ => v36}/core/instance_source_details.go | 4 +- ...instance_source_via_boot_volume_details.go | 4 +- .../core/instance_source_via_image_details.go | 4 +- .../{ => v36}/core/instance_summary.go | 6 +- .../{ => v36}/core/internet_gateway.go | 10 +- .../{ => v36}/core/ip_sec_connection.go | 14 +- .../core/ip_sec_connection_device_config.go | 4 +- .../core/ip_sec_connection_device_status.go | 4 +- .../core/ip_sec_connection_tunnel.go | 15 +- .../ip_sec_connection_tunnel_shared_secret.go | 4 +- .../oracle/oci-go-sdk/{ => v36}/core/ipv6.go | 22 +- .../launch_instance_agent_config_details.go | 63 + ...ch_instance_availability_config_details.go | 14 +- ...instance_configuration_request_response.go | 8 +- .../{ => v36}/core/launch_instance_details.go | 30 +- .../core/launch_instance_platform_config.go | 92 + .../core/launch_instance_request_response.go | 8 +- .../launch_instance_shape_config_details.go | 7 +- .../{ => v36}/core/launch_options.go | 16 +- .../{ => v36}/core/letter_of_authority.go | 4 +- ...ons_for_remote_peering_request_response.go | 8 +- ...ting_resource_versions_request_response.go | 11 +- ...t_app_catalog_listings_request_response.go | 8 +- ..._catalog_subscriptions_request_response.go | 8 +- ...oot_volume_attachments_request_response.go | 8 +- ...st_boot_volume_backups_request_response.go | 11 +- .../list_boot_volumes_request_response.go | 8 +- ...byoip_allocated_ranges_request_response.go | 82 + .../list_byoip_ranges_request_response.go | 147 + ...ster_network_instances_request_response.go | 8 +- .../list_cluster_networks_request_response.go | 8 +- ...bility_schema_versions_request_response.go | 8 +- ...age_capability_schemas_request_response.go | 8 +- ...age_capability_schemas_request_response.go | 8 +- ...list_console_histories_request_response.go | 11 +- ...list_cpe_device_shapes_request_response.go | 8 +- .../core/list_cpes_request_response.go | 8 +- ...t_cross_connect_groups_request_response.go | 11 +- ...ross_connect_locations_request_response.go | 8 +- .../list_cross_connects_request_response.go | 11 +- ...nect_port_speed_shapes_request_response.go | 8 +- ...m_host_instance_shapes_request_response.go | 8 +- ...ated_vm_host_instances_request_response.go | 8 +- ...dicated_vm_host_shapes_request_response.go | 8 +- ...ist_dedicated_vm_hosts_request_response.go | 8 +- .../list_dhcp_options_request_response.go | 13 +- .../list_drg_attachments_request_response.go | 10 +- .../core/list_drgs_request_response.go | 8 +- ...nect_provider_services_request_response.go | 8 +- ...rcuit_bandwidth_shapes_request_response.go | 8 +- ...sec_connection_tunnels_request_response.go | 8 +- ...st_i_p_sec_connections_request_response.go | 8 +- ..._compatibility_entries_request_response.go | 8 +- .../core/list_images_request_response.go | 11 +- ...nstance_configurations_request_response.go | 8 +- ...ce_console_connections_request_response.go | 8 +- .../list_instance_devices_request_response.go | 8 +- ...nstance_pool_instances_request_response.go | 8 +- .../list_instance_pools_request_response.go | 11 +- .../core/list_instances_request_response.go | 11 +- ...list_internet_gateways_request_response.go | 13 +- .../core/list_ipv6s_request_response.go | 8 +- ...local_peering_gateways_request_response.go | 10 +- .../list_nat_gateways_request_response.go | 13 +- ...y_group_security_rules_request_response.go | 10 +- ...k_security_group_vnics_request_response.go | 10 +- ...etwork_security_groups_request_response.go | 13 +- .../core/list_private_ips_request_response.go | 10 +- .../list_public_ip_pools_request_response.go | 147 + .../core/list_public_ips_request_response.go | 11 +- ...te_peering_connections_request_response.go | 8 +- .../list_route_tables_request_response.go | 13 +- .../list_security_lists_request_response.go | 13 +- .../list_service_gateways_request_response.go | 13 +- .../core/list_services_request_response.go | 8 +- .../core/list_shapes_request_response.go | 8 +- .../core/list_subnets_request_response.go | 13 +- .../core/list_vcns_request_response.go | 11 +- ...rcuit_bandwidth_shapes_request_response.go | 8 +- ...ircuit_public_prefixes_request_response.go | 11 +- .../list_virtual_circuits_request_response.go | 11 +- .../core/list_vlans_request_response.go | 13 +- .../list_vnic_attachments_request_response.go | 8 +- ...ist_volume_attachments_request_response.go | 8 +- ...volume_backup_policies_request_response.go | 8 +- .../list_volume_backups_request_response.go | 11 +- ...t_volume_group_backups_request_response.go | 8 +- .../list_volume_groups_request_response.go | 11 +- .../core/list_volumes_request_response.go | 11 +- .../{ => v36}/core/local_peering_gateway.go | 14 +- .../v36/core/modify_vcn_cidr_details.go | 32 + .../core/modify_vcn_cidr_request_response.go | 82 + .../oci-go-sdk/{ => v36}/core/nat_gateway.go | 20 +- .../{ => v36}/core/network_security_group.go | 14 +- .../core/network_security_group_vnic.go | 8 +- .../core/paravirtualized_volume_attachment.go | 9 +- .../core/peer_region_for_remote_peering.go | 7 +- .../oci-go-sdk/v36/core/platform_config.go | 88 + .../oci-go-sdk/{ => v36}/core/port_range.go | 4 +- .../oci-go-sdk/{ => v36}/core/private_ip.go | 12 +- .../oci-go-sdk/{ => v36}/core/public_ip.go | 13 +- .../oci-go-sdk/v36/core/public_ip_pool.go | 85 + .../v36/core/public_ip_pool_collection.go | 29 + .../v36/core/public_ip_pool_summary.go | 53 + .../core/remote_peering_connection.go | 10 +- ...pe_compatibility_entry_request_response.go | 8 +- ...k_security_group_security_rules_details.go | 4 +- ...y_group_security_rules_request_response.go | 10 +- .../remove_public_ip_pool_capacity_details.go | 30 + ...ublic_ip_pool_capacity_request_response.go | 79 + .../v36/core/remove_vcn_cidr_details.go | 29 + .../core/remove_vcn_cidr_request_response.go | 82 + .../reset_instance_pool_request_response.go | 10 +- .../oci-go-sdk/{ => v36}/core/route_rule.go | 8 +- .../oci-go-sdk/{ => v36}/core/route_table.go | 10 +- .../{ => v36}/core/security_list.go | 10 +- .../{ => v36}/core/security_rule.go | 24 +- .../oci-go-sdk/{ => v36}/core/service.go | 8 +- .../{ => v36}/core/service_gateway.go | 18 +- .../core/service_id_request_details.go | 6 +- .../core/service_id_response_details.go | 6 +- .../oracle/oci-go-sdk/{ => v36}/core/shape.go | 4 +- .../core/shape_max_vnic_attachment_options.go | 4 +- .../{ => v36}/core/shape_memory_options.go | 10 +- .../shape_networking_bandwidth_options.go | 4 +- .../{ => v36}/core/shape_ocpu_options.go | 4 +- ...oftreset_instance_pool_request_response.go | 10 +- .../start_instance_pool_request_response.go | 10 +- .../stop_instance_pool_request_response.go | 10 +- .../oci-go-sdk/{ => v36}/core/subnet.go | 20 +- .../oci-go-sdk/{ => v36}/core/tcp_options.go | 13 +- ...minate_cluster_network_request_response.go | 10 +- ...erminate_instance_pool_request_response.go | 10 +- .../terminate_instance_request_response.go | 10 +- .../{ => v36}/core/tunnel_config.go | 4 +- .../core/tunnel_cpe_device_config.go | 4 +- .../{ => v36}/core/tunnel_status.go | 6 +- .../oci-go-sdk/{ => v36}/core/udp_options.go | 13 +- .../core/update_boot_volume_backup_details.go | 4 +- ...ate_boot_volume_backup_request_response.go | 10 +- .../core/update_boot_volume_details.go | 4 +- .../update_boot_volume_kms_key_details.go | 4 +- ...te_boot_volume_kms_key_request_response.go | 10 +- .../update_boot_volume_request_response.go | 10 +- .../v36/core/update_byoip_range_details.go | 40 + .../update_byoip_range_request_response.go | 77 + .../core/update_cluster_network_details.go | 4 +- ...update_cluster_network_request_response.go | 10 +- ...compute_image_capability_schema_details.go | 4 +- ...mage_capability_schema_request_response.go | 10 +- .../core/update_console_history_details.go | 4 +- ...update_console_history_request_response.go | 10 +- .../{ => v36}/core/update_cpe_details.go | 6 +- .../core/update_cpe_request_response.go | 10 +- .../core/update_cross_connect_details.go | 4 +- .../update_cross_connect_group_details.go | 4 +- ...te_cross_connect_group_request_response.go | 10 +- .../update_cross_connect_request_response.go | 10 +- .../core/update_dedicated_vm_host_details.go | 4 +- ...date_dedicated_vm_host_request_response.go | 10 +- .../{ => v36}/core/update_dhcp_details.go | 4 +- .../update_dhcp_options_request_response.go | 10 +- .../core/update_drg_attachment_details.go | 8 +- .../update_drg_attachment_request_response.go | 10 +- .../{ => v36}/core/update_drg_details.go | 4 +- .../core/update_drg_request_response.go | 10 +- ...ate_i_p_sec_connection_request_response.go | 10 +- ..._sec_connection_tunnel_request_response.go | 12 +- ...n_tunnel_shared_secret_request_response.go | 12 +- .../{ => v36}/core/update_image_details.go | 4 +- .../core/update_image_request_response.go | 10 +- .../update_instance_agent_config_details.go | 62 + ...te_instance_availability_config_details.go | 14 +- .../update_instance_configuration_details.go | 4 +- ...instance_configuration_request_response.go | 10 +- ...ate_instance_console_connection_details.go | 36 + ...nce_console_connection_request_response.go | 77 + .../{ => v36}/core/update_instance_details.go | 8 +- .../core/update_instance_pool_details.go | 4 +- ...ce_pool_placement_configuration_details.go | 4 +- .../update_instance_pool_request_response.go | 10 +- .../core/update_instance_request_response.go | 10 +- .../update_instance_shape_config_details.go | 7 +- .../core/update_internet_gateway_details.go | 4 +- ...pdate_internet_gateway_request_response.go | 10 +- .../core/update_ip_sec_connection_details.go | 8 +- ...update_ip_sec_connection_tunnel_details.go | 9 +- ...connection_tunnel_shared_secret_details.go | 4 +- ...pdate_ip_sec_tunnel_bgp_session_details.go | 4 +- ...ip_sec_tunnel_encryption_domain_details.go | 33 + .../{ => v36}/core/update_ipv6_details.go | 6 +- .../core/update_ipv6_request_response.go | 12 +- .../{ => v36}/core/update_launch_options.go | 13 +- .../update_local_peering_gateway_details.go | 6 +- ..._local_peering_gateway_request_response.go | 10 +- .../core/update_nat_gateway_details.go | 4 +- .../update_nat_gateway_request_response.go | 12 +- .../update_network_security_group_details.go | 4 +- ...network_security_group_request_response.go | 12 +- ...k_security_group_security_rules_details.go | 4 +- ...y_group_security_rules_request_response.go | 10 +- .../core/update_private_ip_details.go | 6 +- .../update_private_ip_request_response.go | 10 +- .../core/update_public_ip_details.go | 4 +- .../v36/core/update_public_ip_pool_details.go | 40 + .../update_public_ip_pool_request_response.go | 77 + .../core/update_public_ip_request_response.go | 10 +- ...pdate_remote_peering_connection_details.go | 4 +- ...ote_peering_connection_request_response.go | 10 +- .../core/update_route_table_details.go | 4 +- .../update_route_table_request_response.go | 10 +- .../core/update_security_list_details.go | 4 +- .../update_security_list_request_response.go | 10 +- .../core/update_security_rule_details.go | 21 +- .../core/update_service_gateway_details.go | 6 +- ...update_service_gateway_request_response.go | 12 +- .../{ => v36}/core/update_subnet_details.go | 14 +- .../core/update_subnet_request_response.go | 10 +- ...update_tunnel_cpe_device_config_details.go | 4 +- ...nnel_cpe_device_config_request_response.go | 12 +- .../{ => v36}/core/update_vcn_details.go | 4 +- .../core/update_vcn_request_response.go | 12 +- .../core/update_virtual_circuit_details.go | 6 +- ...update_virtual_circuit_request_response.go | 10 +- .../{ => v36}/core/update_vlan_details.go | 13 +- .../core/update_vlan_request_response.go | 12 +- .../{ => v36}/core/update_vnic_details.go | 8 +- .../core/update_vnic_request_response.go | 10 +- .../core/update_volume_backup_details.go | 4 +- .../update_volume_backup_policy_details.go | 6 +- ...e_volume_backup_policy_request_response.go | 10 +- .../update_volume_backup_request_response.go | 10 +- .../{ => v36}/core/update_volume_details.go | 4 +- .../update_volume_group_backup_details.go | 4 +- ...te_volume_group_backup_request_response.go | 10 +- .../core/update_volume_group_details.go | 4 +- .../update_volume_group_request_response.go | 10 +- .../core/update_volume_kms_key_details.go | 4 +- .../update_volume_kms_key_request_response.go | 10 +- .../core/update_volume_request_response.go | 10 +- ...d_network_security_group_security_rules.go | 4 +- .../validate_byoip_range_request_response.go | 67 + .../oracle/oci-go-sdk/{ => v36}/core/vcn.go | 23 +- .../v36/core/vcn_dns_resolver_association.go | 62 + .../{ => v36}/core/virtual_circuit.go | 16 +- .../core/virtual_circuit_bandwidth_shape.go | 4 +- .../core/virtual_circuit_public_prefix.go | 6 +- .../oracle/oci-go-sdk/{ => v36}/core/vlan.go | 4 +- .../oracle/oci-go-sdk/{ => v36}/core/vnic.go | 16 +- .../{ => v36}/core/vnic_attachment.go | 4 +- .../oci-go-sdk/{ => v36}/core/volume.go | 9 +- .../{ => v36}/core/volume_attachment.go | 9 +- .../{ => v36}/core/volume_backup.go | 4 +- .../{ => v36}/core/volume_backup_policy.go | 4 +- .../core/volume_backup_policy_assignment.go | 7 +- .../{ => v36}/core/volume_backup_schedule.go | 28 +- .../oci-go-sdk/{ => v36}/core/volume_group.go | 12 +- .../{ => v36}/core/volume_group_backup.go | 52 +- .../core/volume_group_source_details.go | 4 +- ...source_from_volume_group_backup_details.go | 4 +- ..._group_source_from_volume_group_details.go | 4 +- ...olume_group_source_from_volumes_details.go | 4 +- .../{ => v36}/core/volume_kms_key.go | 4 +- .../{ => v36}/core/volume_source_details.go | 4 +- ...olume_source_from_volume_backup_details.go | 4 +- .../core/volume_source_from_volume_details.go | 4 +- .../withdraw_byoip_range_request_response.go | 63 + vendor/modules.txt | 12 +- 755 files changed, 12424 insertions(+), 2305 deletions(-) delete mode 100644 builder/oracle/oci/config_provider.go delete mode 100644 vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_agent_config_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/LICENSE.txt (100%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/NOTICE.txt (100%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/certificate_retriever.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/configuration.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/dispatcher_modifier.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/federation_client.go (96%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_delegation_token_provider.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/instance_principal_key_provider.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/jwt.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/resouce_principal_key_provider.go (73%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principal_token_path_provider.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principals_v1.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/auth/utils.go (60%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/client.go (75%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/common.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/configuration.go (81%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/errors.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/helpers.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/http.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/http_signer.go (99%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/log.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/retry.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/common/version.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/add_image_shape_compatibility_entry_details.go (84%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/add_image_shape_compatibility_entry_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/add_network_security_group_security_rules_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/add_network_security_group_security_rules_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{core/launch_instance_agent_config_details.go => v36/core/add_public_ip_pool_capacity_details.go} (53%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/add_security_rule_details.go (84%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/added_network_security_group_security_rules.go (91%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/advertise_byoip_range_request_response.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_launch_instance_platform_config.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_platform_config.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_listing.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_listing_resource_version.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_listing_resource_version_agreements.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_listing_resource_version_summary.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_listing_summary.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_subscription.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/app_catalog_subscription_summary.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_boot_volume_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_boot_volume_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_emulated_volume_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_i_scsi_volume_details.go (96%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_load_balancer_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_load_balancer_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_paravirtualized_volume_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_service_determined_volume_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_service_id_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_vnic_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_vnic_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_volume_details.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/attach_volume_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/bgp_session_info.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boolean_image_capability_schema_descriptor.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume_attachment.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume_backup.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume_kms_key.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume_source_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume_source_from_boot_volume_backup_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/boot_volume_source_from_boot_volume_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/bulk_add_virtual_circuit_public_prefixes_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/bulk_add_virtual_circuit_public_prefixes_request_response.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/bulk_delete_virtual_circuit_public_prefixes_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go (87%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_collection.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_summary.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_collection.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_summary.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/capture_console_history_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/capture_console_history_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_boot_volume_backup_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_boot_volume_backup_compartment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_boot_volume_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_boot_volume_compartment_request_response.go (89%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cluster_network_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cluster_network_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_compute_image_capability_schema_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_compute_image_capability_schema_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cpe_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cpe_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cross_connect_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cross_connect_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cross_connect_group_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_cross_connect_group_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_dedicated_vm_host_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_dedicated_vm_host_compartment_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_dhcp_options_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_dhcp_options_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_drg_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_drg_compartment_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_i_p_sec_connection_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_image_compartment_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_image_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_instance_compartment_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_instance_compartment_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_instance_configuration_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_instance_configuration_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_instance_pool_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_instance_pool_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_internet_gateway_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_internet_gateway_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_ip_sec_connection_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_local_peering_gateway_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_local_peering_gateway_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_nat_gateway_compartment_details.go (81%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_nat_gateway_compartment_request_response.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_network_security_group_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_network_security_group_compartment_request_response.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_public_ip_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_public_ip_compartment_request_response.go (90%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_remote_peering_connection_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_remote_peering_connection_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_route_table_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_route_table_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_security_list_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_security_list_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_service_gateway_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_service_gateway_compartment_request_response.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_subnet_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_subnet_compartment_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_vcn_compartment_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_vcn_compartment_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_virtual_circuit_compartment_details.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_virtual_circuit_compartment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_vlan_compartment_details.go (81%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_vlan_compartment_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_backup_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_backup_compartment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_compartment_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_compartment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_group_backup_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_group_backup_compartment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_group_compartment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/change_volume_group_compartment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cluster_network.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cluster_network_placement_configuration_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cluster_network_summary.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_global_image_capability_schema.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_global_image_capability_schema_summary.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_global_image_capability_schema_version.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_global_image_capability_schema_version_summary.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_image_capability_schema.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_image_capability_schema_summary.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/compute_instance_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/connect_local_peering_gateways_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/connect_local_peering_gateways_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/connect_remote_peering_connections_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/connect_remote_peering_connections_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/console_history.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/copy_boot_volume_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/copy_boot_volume_backup_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/copy_volume_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/copy_volume_backup_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/core_blockstorage_client.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/core_compute_client.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/core_computemanagement_client.go (79%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/core_virtualnetwork_client.go (77%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cpe.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cpe_device_config_answer.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cpe_device_config_question.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cpe_device_info.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cpe_device_shape_detail.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cpe_device_shape_summary.go (81%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_app_catalog_subscription_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_app_catalog_subscription_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_boot_volume_backup_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_boot_volume_backup_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_boot_volume_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_boot_volume_request_response.go (90%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cluster_network_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cluster_network_instance_pool_details.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cluster_network_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_compute_image_capability_schema_details.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_compute_image_capability_schema_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cpe_details.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cpe_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cross_connect_details.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cross_connect_group_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cross_connect_group_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_cross_connect_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_dedicated_vm_host_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_dedicated_vm_host_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_dhcp_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_dhcp_options_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_drg_attachment_details.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_drg_attachment_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_drg_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_drg_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_i_p_sec_connection_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_image_details.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_image_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_configuration_base.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_configuration_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_configuration_from_instance_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_configuration_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_console_connection_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_console_connection_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_pool_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_pool_placement_configuration_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_instance_pool_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_internet_gateway_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_internet_gateway_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_ip_sec_connection_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_ip_sec_connection_tunnel_details.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_ip_sec_tunnel_bgp_session_details.go (95%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_encryption_domain_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_ipv6_details.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_ipv6_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_local_peering_gateway_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_local_peering_gateway_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_nat_gateway_details.go (79%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_nat_gateway_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_network_security_group_details.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_network_security_group_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_private_ip_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_private_ip_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_public_ip_details.go (90%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_public_ip_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_remote_peering_connection_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_remote_peering_connection_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_route_table_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_route_table_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_security_list_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_security_list_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_service_gateway_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_service_gateway_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_subnet_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_subnet_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_vcn_details.go (80%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_vcn_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_virtual_circuit_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_virtual_circuit_public_prefix_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_virtual_circuit_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_vlan_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_vlan_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_vnic_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_backup_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_backup_policy_assignment_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_backup_policy_assignment_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_backup_policy_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_backup_policy_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_backup_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_group_backup_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_group_backup_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_group_details.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_group_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/create_volume_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cross_connect.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cross_connect_group.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cross_connect_location.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cross_connect_mapping.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cross_connect_port_speed_shape.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/cross_connect_status.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dedicated_vm_host.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dedicated_vm_host_instance_shape_summary.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dedicated_vm_host_instance_summary.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dedicated_vm_host_shape_summary.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dedicated_vm_host_summary.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_app_catalog_subscription_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_boot_volume_backup_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_boot_volume_kms_key_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_boot_volume_request_response.go (88%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/delete_byoip_range_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_compute_image_capability_schema_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_console_history_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_cpe_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_cross_connect_group_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_cross_connect_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_dedicated_vm_host_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_dhcp_options_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_drg_attachment_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_drg_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_i_p_sec_connection_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_image_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_instance_configuration_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_instance_console_connection_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_internet_gateway_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_ipv6_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_local_peering_gateway_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_nat_gateway_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_network_security_group_request_response.go (84%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_private_ip_request_response.go (88%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_pool_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_public_ip_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_remote_peering_connection_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_route_table_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_security_list_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_service_gateway_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_subnet_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_vcn_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_virtual_circuit_public_prefix_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_virtual_circuit_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_vlan_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_backup_policy_assignment_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_backup_policy_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_backup_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_group_backup_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_group_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_kms_key_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/delete_volume_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/detach_boot_volume_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{core/update_instance_agent_config_details.go => v36/core/detach_instance_pool_instance_details.go} (55%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/detach_load_balancer_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/detach_load_balancer_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/detach_service_id_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/detach_vnic_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/detach_volume_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/device.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dhcp_dns_option.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dhcp_option.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dhcp_options.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/dhcp_search_domain_option.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/drg.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/drg_attachment.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/drg_redundancy_status.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/egress_security_rule.go (75%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/emulated_volume_attachment.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{core/instance_agent_config.go => v36/core/encryption_domain_config.go} (57%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/enum_integer_image_capability_descriptor.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/enum_string_image_capability_schema_descriptor.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/export_image_details.go (54%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/export_image_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/export_image_via_object_storage_tuple_details.go (80%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/export_image_via_object_storage_uri_details.go (69%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/fast_connect_provider_service.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/fast_connect_provider_service_key.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_app_catalog_listing_agreements_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_app_catalog_listing_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_app_catalog_listing_resource_version_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_boot_volume_attachment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_boot_volume_backup_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_boot_volume_kms_key_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_boot_volume_request_response.go (89%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/get_byoip_range_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cluster_network_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_compute_global_image_capability_schema_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_compute_global_image_capability_schema_version_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_compute_image_capability_schema_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_console_history_content_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_console_history_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cpe_device_config_content_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cpe_device_shape_request_response.go (84%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cpe_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cross_connect_group_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cross_connect_letter_of_authority_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cross_connect_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_cross_connect_status_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_dedicated_vm_host_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_dhcp_options_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_drg_attachment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_drg_redundancy_status_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_drg_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_fast_connect_provider_service_key_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_fast_connect_provider_service_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_i_p_sec_connection_device_config_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_i_p_sec_connection_device_status_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_i_p_sec_connection_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_i_p_sec_connection_tunnel_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_image_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_image_shape_compatibility_entry_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_instance_configuration_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_instance_console_connection_request_response.go (88%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_instance_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_instance_pool_load_balancer_attachment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_instance_pool_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_instance_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_internet_gateway_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_ipsec_cpe_device_config_content_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_ipv6_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_local_peering_gateway_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_nat_gateway_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_network_security_group_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_private_ip_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_public_ip_by_ip_address_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_public_ip_by_ip_address_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_public_ip_by_private_ip_id_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_public_ip_by_private_ip_id_request_response.go (88%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_pool_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_public_ip_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_remote_peering_connection_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_route_table_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_security_list_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_service_gateway_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_service_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_subnet_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_tunnel_cpe_device_config_content_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_tunnel_cpe_device_config_request_response.go (86%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_dns_resolver_association_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_vcn_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_virtual_circuit_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_vlan_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_vnic_attachment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_vnic_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_attachment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_backup_policy_asset_assignment_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_backup_policy_assignment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_backup_policy_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_backup_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_group_backup_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_group_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_kms_key_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_volume_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/get_windows_instance_initial_credentials_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/i_scsi_volume_attachment.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/icmp_options.go (52%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_capability_schema_descriptor.go (97%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/image_memory_constraints.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_ocpu_constraints.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_shape_compatibility_entry.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_shape_compatibility_summary.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_source_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_source_via_object_storage_tuple_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/image_source_via_object_storage_uri_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ingress_security_rule.go (74%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_action_request_response.go (93%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_config.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_agent_features.go (74%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_plugin_config_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_availability_config.go (77%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration.go (97%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_amd_milan_bm_launch_instance_platform_config.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_attach_vnic_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_attach_volume_details.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_availability_config.go (78%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_block_volume_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_create_vnic_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_create_volume_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_instance_details.go (94%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_options.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_instance_source_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_instance_source_via_boot_volume_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_instance_source_via_image_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_iscsi_attach_volume_details.go (96%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_agent_config_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_launch_instance_details.go (95%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_platform_config.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_launch_instance_shape_config_details.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_launch_options.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_paravirtualized_attach_volume_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_summary.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_volume_source_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_volume_source_from_volume_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_configuration_volume_source_from_volume_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_console_connection.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_credentials.go (91%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_options.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_pool.go (97%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_pool_instance_load_balancer_backend.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_pool_load_balancer_attachment.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_pool_placement_configuration.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_pool_placement_secondary_vnic_subnet.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_pool_summary.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_shape_config.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_source_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_source_via_boot_volume_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_source_via_image_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/instance_summary.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/internet_gateway.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ip_sec_connection.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ip_sec_connection_device_config.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ip_sec_connection_device_status.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ip_sec_connection_tunnel.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ip_sec_connection_tunnel_shared_secret.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/ipv6.go (88%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_agent_config_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/launch_instance_availability_config_details.go (78%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/launch_instance_configuration_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/launch_instance_details.go (93%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_platform_config.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/launch_instance_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/launch_instance_shape_config_details.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/launch_options.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/letter_of_authority.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_allowed_peer_regions_for_remote_peering_request_response.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_app_catalog_listing_resource_versions_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_app_catalog_listings_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_app_catalog_subscriptions_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_boot_volume_attachments_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_boot_volume_backups_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_boot_volumes_request_response.go (92%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_allocated_ranges_request_response.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_ranges_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cluster_network_instances_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cluster_networks_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_compute_global_image_capability_schema_versions_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_compute_global_image_capability_schemas_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_compute_image_capability_schemas_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_console_histories_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cpe_device_shapes_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cpes_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cross_connect_groups_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cross_connect_locations_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_cross_connects_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_crossconnect_port_speed_shapes_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_dedicated_vm_host_instance_shapes_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_dedicated_vm_host_instances_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_dedicated_vm_host_shapes_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_dedicated_vm_hosts_request_response.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_dhcp_options_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_drg_attachments_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_drgs_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_fast_connect_provider_services_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_i_p_sec_connection_tunnels_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_i_p_sec_connections_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_image_shape_compatibility_entries_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_images_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_instance_configurations_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_instance_console_connections_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_instance_devices_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_instance_pool_instances_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_instance_pools_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_instances_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_internet_gateways_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_ipv6s_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_local_peering_gateways_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_nat_gateways_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_network_security_group_security_rules_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_network_security_group_vnics_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_network_security_groups_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_private_ips_request_response.go (90%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ip_pools_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_public_ips_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_remote_peering_connections_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_route_tables_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_security_lists_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_service_gateways_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_services_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_shapes_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_subnets_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_vcns_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_virtual_circuit_bandwidth_shapes_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_virtual_circuit_public_prefixes_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_virtual_circuits_request_response.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_vlans_request_response.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_vnic_attachments_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_volume_attachments_request_response.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_volume_backup_policies_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_volume_backups_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_volume_group_backups_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_volume_groups_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/list_volumes_request_response.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/local_peering_gateway.go (93%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/nat_gateway.go (83%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/network_security_group.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/network_security_group_vnic.go (80%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/paravirtualized_volume_attachment.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/peer_region_for_remote_peering.go (81%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/platform_config.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/port_range.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/private_ip.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/public_ip.go (94%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_collection.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_summary.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/remote_peering_connection.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/remove_image_shape_compatibility_entry_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/remove_network_security_group_security_rules_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/remove_network_security_group_security_rules_request_response.go (85%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_request_response.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/reset_instance_pool_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/route_rule.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/route_table.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/security_list.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/security_rule.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/service.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/service_gateway.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/service_id_request_details.go (82%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/service_id_response_details.go (84%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/shape.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/shape_max_vnic_attachment_options.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/shape_memory_options.go (78%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/shape_networking_bandwidth_options.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/shape_ocpu_options.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/softreset_instance_pool_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/start_instance_pool_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/stop_instance_pool_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/subnet.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/tcp_options.go (64%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/terminate_cluster_network_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/terminate_instance_pool_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/terminate_instance_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/tunnel_config.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/tunnel_cpe_device_config.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/tunnel_status.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/udp_options.go (64%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_boot_volume_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_boot_volume_backup_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_boot_volume_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_boot_volume_kms_key_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_boot_volume_kms_key_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_boot_volume_request_response.go (89%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cluster_network_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cluster_network_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_compute_image_capability_schema_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_compute_image_capability_schema_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_console_history_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_console_history_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cpe_details.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cpe_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cross_connect_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cross_connect_group_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cross_connect_group_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_cross_connect_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_dedicated_vm_host_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_dedicated_vm_host_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_dhcp_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_dhcp_options_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_drg_attachment_details.go (84%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_drg_attachment_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_drg_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_drg_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_i_p_sec_connection_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_i_p_sec_connection_tunnel_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_image_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_image_request_response.go (91%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_agent_config_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_availability_config_details.go (78%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_configuration_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_configuration_request_response.go (90%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_pool_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_pool_placement_configuration_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_pool_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_request_response.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_instance_shape_config_details.go (87%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_internet_gateway_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_internet_gateway_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_ip_sec_connection_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_ip_sec_connection_tunnel_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_ip_sec_connection_tunnel_shared_secret_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_ip_sec_tunnel_bgp_session_details.go (96%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_encryption_domain_details.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_ipv6_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_ipv6_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_launch_options.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_local_peering_gateway_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_local_peering_gateway_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_nat_gateway_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_nat_gateway_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_network_security_group_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_network_security_group_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_network_security_group_security_rules_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_network_security_group_security_rules_request_response.go (85%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_private_ip_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_private_ip_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_public_ip_details.go (95%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_details.go create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_public_ip_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_remote_peering_connection_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_remote_peering_connection_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_route_table_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_route_table_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_security_list_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_security_list_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_security_rule_details.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_service_gateway_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_service_gateway_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_subnet_details.go (73%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_subnet_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_tunnel_cpe_device_config_details.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_tunnel_cpe_device_config_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_vcn_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_vcn_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_virtual_circuit_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_virtual_circuit_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_vlan_details.go (72%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_vlan_request_response.go (86%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_vnic_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_vnic_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_backup_policy_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_backup_policy_request_response.go (90%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_backup_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_details.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_group_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_group_backup_request_response.go (88%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_group_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_group_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_kms_key_details.go (92%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_kms_key_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/update_volume_request_response.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/updated_network_security_group_security_rules.go (91%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/validate_byoip_range_request_response.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/vcn.go (90%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/vcn_dns_resolver_association.go rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/virtual_circuit.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/virtual_circuit_bandwidth_shape.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/virtual_circuit_public_prefix.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/vlan.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/vnic.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/vnic_attachment.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume.go (97%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_attachment.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_backup.go (98%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_backup_policy.go (96%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_backup_policy_assignment.go (89%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_backup_schedule.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_group.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_group_backup.go (76%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_group_source_details.go (95%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_group_source_from_volume_group_backup_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_group_source_from_volume_group_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_group_source_from_volumes_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_kms_key.go (91%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_source_details.go (94%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_source_from_volume_backup_details.go (93%) rename vendor/github.com/oracle/oci-go-sdk/{ => v36}/core/volume_source_from_volume_details.go (93%) create mode 100644 vendor/github.com/oracle/oci-go-sdk/v36/core/withdraw_byoip_range_request_response.go diff --git a/builder/oracle/oci/artifact.go b/builder/oracle/oci/artifact.go index cfe37c571..b5784d9a6 100644 --- a/builder/oracle/oci/artifact.go +++ b/builder/oracle/oci/artifact.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/oracle/oci-go-sdk/core" + "github.com/oracle/oci-go-sdk/v36/core" ) // Artifact is an artifact implementation that contains a built Custom Image. diff --git a/builder/oracle/oci/builder.go b/builder/oracle/oci/builder.go index 55247ee8c..7ed18c761 100644 --- a/builder/oracle/oci/builder.go +++ b/builder/oracle/oci/builder.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" ocommon "github.com/hashicorp/packer/builder/oracle/common" - "github.com/oracle/oci-go-sdk/core" + "github.com/oracle/oci-go-sdk/v36/core" ) // BuilderId uniquely identifies the builder diff --git a/builder/oracle/oci/config.go b/builder/oracle/oci/config.go index 11cb1f69f..7391e7693 100644 --- a/builder/oracle/oci/config.go +++ b/builder/oracle/oci/config.go @@ -19,8 +19,8 @@ import ( "github.com/hashicorp/packer-plugin-sdk/pathing" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - ocicommon "github.com/oracle/oci-go-sdk/common" - ociauth "github.com/oracle/oci-go-sdk/common/auth" + ocicommon "github.com/oracle/oci-go-sdk/v36/common" + ociauth "github.com/oracle/oci-go-sdk/v36/common/auth" ) type CreateVNICDetails struct { @@ -222,7 +222,7 @@ func (c *Config) Prepare(raws ...interface{}) error { } providers := []ocicommon.ConfigurationProvider{ - NewRawConfigurationProvider(c.TenancyID, c.UserID, c.Region, c.Fingerprint, string(keyContent), &c.PassPhrase), + ocicommon.NewRawConfigurationProvider(c.TenancyID, c.UserID, c.Region, c.Fingerprint, string(keyContent), &c.PassPhrase), } if fileProvider != nil { diff --git a/builder/oracle/oci/config_provider.go b/builder/oracle/oci/config_provider.go deleted file mode 100644 index 25d467a4c..000000000 --- a/builder/oracle/oci/config_provider.go +++ /dev/null @@ -1,76 +0,0 @@ -package oci - -import ( - "crypto/rsa" - "errors" - "fmt" - - "github.com/oracle/oci-go-sdk/common" -) - -// rawConfigurationProvider allows a user to simply construct a configuration -// provider from raw values. It errors on access when those values are empty. -type rawConfigurationProvider struct { - tenancy string - user string - region string - fingerprint string - privateKey string - privateKeyPassphrase *string -} - -// NewRawConfigurationProvider will create a rawConfigurationProvider. -func NewRawConfigurationProvider(tenancy, user, region, fingerprint, privateKey string, privateKeyPassphrase *string) common.ConfigurationProvider { - return rawConfigurationProvider{tenancy, user, region, fingerprint, privateKey, privateKeyPassphrase} -} - -func (p rawConfigurationProvider) PrivateRSAKey() (key *rsa.PrivateKey, err error) { - return common.PrivateKeyFromBytes([]byte(p.privateKey), p.privateKeyPassphrase) -} - -func (p rawConfigurationProvider) KeyID() (keyID string, err error) { - tenancy, err := p.TenancyOCID() - if err != nil { - return - } - - user, err := p.UserOCID() - if err != nil { - return - } - - fingerprint, err := p.KeyFingerprint() - if err != nil { - return - } - - return fmt.Sprintf("%s/%s/%s", tenancy, user, fingerprint), nil -} - -func (p rawConfigurationProvider) TenancyOCID() (string, error) { - if p.tenancy == "" { - return "", errors.New("no tenancy provided") - } - return p.tenancy, nil -} - -func (p rawConfigurationProvider) UserOCID() (string, error) { - if p.user == "" { - return "", errors.New("no user provided") - } - return p.user, nil -} - -func (p rawConfigurationProvider) KeyFingerprint() (string, error) { - if p.fingerprint == "" { - return "", errors.New("no fingerprint provided") - } - return p.fingerprint, nil -} - -func (p rawConfigurationProvider) Region() (string, error) { - if p.region == "" { - return "", errors.New("no region provided") - } - return p.region, nil -} diff --git a/builder/oracle/oci/config_test.go b/builder/oracle/oci/config_test.go index 7ab3203cb..631acef5d 100644 --- a/builder/oracle/oci/config_test.go +++ b/builder/oracle/oci/config_test.go @@ -131,7 +131,7 @@ func TestConfig(t *testing.T) { t.Run("NoAccessConfig", func(t *testing.T) { raw := testConfig(cfgFile) - delete(raw, "access_cfg_file") + raw["access_cfg_file"] = "/tmp/random/access/config/file/should/not/exist" var c Config errs := c.Prepare(raw) @@ -140,6 +140,10 @@ func TestConfig(t *testing.T) { "'user_ocid'", "'tenancy_ocid'", "'fingerprint'", "'key_file'", } + if errs == nil { + t.Fatalf("Expected errors %q but got none", expectedErrors) + } + s := errs.Error() for _, expected := range expectedErrors { if !strings.Contains(s, expected) { diff --git a/builder/oracle/oci/driver.go b/builder/oracle/oci/driver.go index 4e6013bbd..cdad1c4e6 100644 --- a/builder/oracle/oci/driver.go +++ b/builder/oracle/oci/driver.go @@ -3,7 +3,7 @@ package oci import ( "context" - "github.com/oracle/oci-go-sdk/core" + "github.com/oracle/oci-go-sdk/v36/core" ) // Driver interfaces between the builder steps and the OCI SDK. diff --git a/builder/oracle/oci/driver_mock.go b/builder/oracle/oci/driver_mock.go index df478998c..708067193 100644 --- a/builder/oracle/oci/driver_mock.go +++ b/builder/oracle/oci/driver_mock.go @@ -3,7 +3,7 @@ package oci import ( "context" - "github.com/oracle/oci-go-sdk/core" + "github.com/oracle/oci-go-sdk/v36/core" ) // driverMock implements the Driver interface and communicates with Oracle diff --git a/builder/oracle/oci/driver_oci.go b/builder/oracle/oci/driver_oci.go index c29828a6f..94cfcc0c6 100644 --- a/builder/oracle/oci/driver_oci.go +++ b/builder/oracle/oci/driver_oci.go @@ -11,8 +11,8 @@ import ( "sync/atomic" "time" - "github.com/oracle/oci-go-sdk/common" - core "github.com/oracle/oci-go-sdk/core" + "github.com/oracle/oci-go-sdk/v36/common" + core "github.com/oracle/oci-go-sdk/v36/core" ) // driverOCI implements the Driver interface and communicates with Oracle diff --git a/builder/oracle/oci/instance_principal_configuration_provider_mock.go b/builder/oracle/oci/instance_principal_configuration_provider_mock.go index 27969d1aa..f4eb5db99 100644 --- a/builder/oracle/oci/instance_principal_configuration_provider_mock.go +++ b/builder/oracle/oci/instance_principal_configuration_provider_mock.go @@ -3,6 +3,8 @@ package oci import ( "crypto/rand" "crypto/rsa" + + "github.com/oracle/oci-go-sdk/v36/common" ) // Mock struct to be used during testing to obtain Instance Principals. @@ -32,3 +34,10 @@ func (p instancePrincipalConfigurationProviderMock) KeyFingerprint() (string, er func (p instancePrincipalConfigurationProviderMock) Region() (string, error) { return "some_random_region", nil } + +func (p instancePrincipalConfigurationProviderMock) AuthType() (common.AuthConfig, error) { + return common.AuthConfig{ + AuthType: common.InstancePrincipal, + IsFromConfigFile: false, + OboToken: nil}, nil +} diff --git a/go.mod b/go.mod index 4cb549450..14a69dd54 100644 --- a/go.mod +++ b/go.mod @@ -64,12 +64,14 @@ require ( github.com/mitchellh/cli v1.1.0 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed + github.com/mitchellh/gox v1.0.1 // indirect github.com/mitchellh/mapstructure v1.4.0 github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 github.com/mitchellh/reflectwalk v1.0.0 github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b - github.com/oracle/oci-go-sdk v24.3.0+incompatible + github.com/oracle/oci-go-sdk v18.0.0+incompatible // indirect + github.com/oracle/oci-go-sdk/v36 v36.2.0 github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 github.com/pierrec/lz4 v2.0.5+incompatible github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 807fb3dc9..08c00a0d6 100644 --- a/go.sum +++ b/go.sum @@ -526,6 +526,7 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI= github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= @@ -552,9 +553,12 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b h1:LGItPaClbzopugAomw5VFKnG3h1dUr9QW5KOU+m8gu0= github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/oracle/oci-go-sdk v18.0.0+incompatible h1:FLV4KixsVfF3rwyVTMI6Ryp/Q+OSb9sR5TawbfjFLN4= github.com/oracle/oci-go-sdk v18.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/oracle/oci-go-sdk v24.3.0+incompatible h1:x4mcfb4agelf1O4/1/auGlZ1lr97jXRSSN5MxTgG/zU= github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/oracle/oci-go-sdk/v36 v36.2.0 h1:oBaN/FnBDy3ohMyVZ/rKfekYxnyksG2KK0YAhT5HSnk= +github.com/oracle/oci-go-sdk/v36 v36.2.0/go.mod h1:t8Y/M3Lh8X4BOJhtThJKe1skRTg7qom7oWyHiNjo4RM= github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 h1:SHe9i7h5cHe+cB77fQ6lsEgIwKg3ckNU90P03CjGMnI= github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699/go.mod h1:5AqqNH1X8zCHescKVlpSHRzrat1KCKDXqZoQPe8fY3A= github.com/packer-community/winrmcp v0.0.0-20180921204643-0fd363d6159a h1:A3QMuteviunoaY/8ex+RKFqwhcZJ/Cf3fCW3IwL2wx4= diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_agent_config_details.go b/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_agent_config_details.go deleted file mode 100644 index 54337343c..000000000 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_agent_config_details.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. -// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -// Code generated. DO NOT EDIT. - -// Core Services API -// -// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), -// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and -// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API -// to manage resources such as virtual cloud networks (VCNs), compute instances, and -// block storage volumes. -// - -package core - -import ( - "github.com/oracle/oci-go-sdk/common" -) - -// InstanceConfigurationLaunchInstanceAgentConfigDetails Instance agent configuration options to choose for launching the instance -type InstanceConfigurationLaunchInstanceAgentConfigDetails struct { - - // Whether the agent running on the instance can gather performance metrics and monitor the instance. - // Default value is false. - IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` - - // Whether the agent running on the instance can run all the available management plugins. - // Default value is false. - IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` -} - -func (m InstanceConfigurationLaunchInstanceAgentConfigDetails) String() string { - return common.PointerString(m) -} diff --git a/vendor/github.com/oracle/oci-go-sdk/LICENSE.txt b/vendor/github.com/oracle/oci-go-sdk/v36/LICENSE.txt similarity index 100% rename from vendor/github.com/oracle/oci-go-sdk/LICENSE.txt rename to vendor/github.com/oracle/oci-go-sdk/v36/LICENSE.txt diff --git a/vendor/github.com/oracle/oci-go-sdk/NOTICE.txt b/vendor/github.com/oracle/oci-go-sdk/v36/NOTICE.txt similarity index 100% rename from vendor/github.com/oracle/oci-go-sdk/NOTICE.txt rename to vendor/github.com/oracle/oci-go-sdk/v36/NOTICE.txt diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/certificate_retriever.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/certificate_retriever.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/certificate_retriever.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/certificate_retriever.go index cde1ad689..de8522e32 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/certificate_retriever.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/certificate_retriever.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth @@ -9,7 +9,7 @@ import ( "crypto/x509" "encoding/pem" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "sync" ) diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/configuration.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/configuration.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/configuration.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/configuration.go index c7cd9702a..ef79428a9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/configuration.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/configuration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth @@ -6,7 +6,7 @@ package auth import ( "crypto/rsa" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) type instancePrincipalConfigurationProvider struct { @@ -104,3 +104,7 @@ func (p instancePrincipalConfigurationProvider) Region() (string, error) { } return string(*p.region), nil } + +func (p instancePrincipalConfigurationProvider) AuthType() (common.AuthConfig, error) { + return common.AuthConfig{common.InstancePrincipal, false, nil}, fmt.Errorf("unsupported, keep the interface") +} diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/dispatcher_modifier.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/dispatcher_modifier.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/dispatcher_modifier.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/dispatcher_modifier.go index 48c3b9612..5fe752287 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/dispatcher_modifier.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/dispatcher_modifier.go @@ -1,9 +1,9 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth -import "github.com/oracle/oci-go-sdk/common" +import "github.com/oracle/oci-go-sdk/v36/common" //dispatcherModifier gives ability to modify a HTTPRequestDispatcher before use. type dispatcherModifier struct { diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/federation_client.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/federation_client.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/federation_client.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/federation_client.go index b381a20ef..2e7f0cea4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/federation_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/federation_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Package auth provides supporting functions and structs for authentication @@ -12,7 +12,7 @@ import ( "encoding/pem" "errors" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "io/ioutil" "net/http" "os" @@ -107,7 +107,7 @@ func newFileBasedFederationClient(securityTokenPath string, supplier sessionKeyS } var newToken securityToken - if newToken, err = newInstancePrincipalToken(string(content)); err != nil { + if newToken, err = newPrincipalToken(string(content)); err != nil { return nil, fmt.Errorf("failed to read security token from :%s. Due to: %s", securityTokenPath, err.Error()) } @@ -119,7 +119,7 @@ func newFileBasedFederationClient(securityTokenPath string, supplier sessionKeyS func newStaticFederationClient(sessionToken string, supplier sessionKeySupplier) (*genericFederationClient, error) { var newToken securityToken var err error - if newToken, err = newInstancePrincipalToken(string(sessionToken)); err != nil { + if newToken, err = newPrincipalToken(string(sessionToken)); err != nil { return nil, fmt.Errorf("failed to read security token. Due to: %s", err.Error()) } @@ -307,7 +307,7 @@ func (c *x509FederationClient) getSecurityToken() (securityToken, error) { return nil, fmt.Errorf("failed to unmarshal the response: %s", err.Error()) } - return newInstancePrincipalToken(response.Token.Token) + return newPrincipalToken(response.Token.Token) } func (c *x509FederationClient) GetClaim(key string) (interface{}, error) { @@ -535,24 +535,24 @@ type securityToken interface { ClaimHolder } -type instancePrincipalToken struct { +type principalToken struct { tokenString string jwtToken *jwtToken } -func newInstancePrincipalToken(tokenString string) (newToken securityToken, err error) { +func newPrincipalToken(tokenString string) (newToken securityToken, err error) { var jwtToken *jwtToken if jwtToken, err = parseJwt(tokenString); err != nil { return nil, fmt.Errorf("failed to parse the token string \"%s\": %s", tokenString, err.Error()) } - return &instancePrincipalToken{tokenString, jwtToken}, nil + return &principalToken{tokenString, jwtToken}, nil } -func (t *instancePrincipalToken) String() string { +func (t *principalToken) String() string { return t.tokenString } -func (t *instancePrincipalToken) Valid() bool { +func (t *principalToken) Valid() bool { return !t.jwtToken.expired() } @@ -561,7 +561,7 @@ var ( ErrNoSuchClaim = errors.New("no such claim") ) -func (t *instancePrincipalToken) GetClaim(key string) (interface{}, error) { +func (t *principalToken) GetClaim(key string) (interface{}, error) { if value, ok := t.jwtToken.payload[key]; ok { return value, nil } diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_delegation_token_provider.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_delegation_token_provider.go new file mode 100644 index 000000000..063e1658f --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_delegation_token_provider.go @@ -0,0 +1,67 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. + +package auth + +import ( + "crypto/rsa" + "fmt" + "github.com/oracle/oci-go-sdk/v36/common" +) + +type instancePrincipalDelegationTokenConfigurationProvider struct { + instancePrincipalKeyProvider instancePrincipalKeyProvider + delegationToken string +} + +//InstancePrincipalDelegationTokenConfigurationProvider returns a configuration for obo token instance principals +func InstancePrincipalDelegationTokenConfigurationProvider(delegationToken *string) (common.ConfigurationProvider, error) { + if delegationToken == nil || len(*delegationToken) == 0 { + return nil, fmt.Errorf("failed to create a delagationTokenConfigurationProvider: token is a mondatory input paras") + } + return newInstancePrincipalDelegationTokenConfigurationProvider(delegationToken, nil) +} + +func newInstancePrincipalDelegationTokenConfigurationProvider(delegationToken *string, modifier func(common.HTTPRequestDispatcher) (common.HTTPRequestDispatcher, + error)) (common.ConfigurationProvider, error) { + + keyProvider, err := newInstancePrincipalKeyProvider(modifier) + if err != nil { + return nil, fmt.Errorf("failed to create a new key provider for instance principal: %s", err.Error()) + } + return instancePrincipalDelegationTokenConfigurationProvider{*keyProvider, *delegationToken}, err +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) getInstancePrincipalDelegationTokenConfigurationProvider() (instancePrincipalDelegationTokenConfigurationProvider, error) { + return p, nil +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) PrivateRSAKey() (*rsa.PrivateKey, error) { + return p.instancePrincipalKeyProvider.PrivateRSAKey() +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) KeyID() (string, error) { + return p.instancePrincipalKeyProvider.KeyID() +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) TenancyOCID() (string, error) { + return p.instancePrincipalKeyProvider.TenancyOCID() +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) UserOCID() (string, error) { + return "", nil +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) KeyFingerprint() (string, error) { + return "", nil +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) Region() (string, error) { + region := p.instancePrincipalKeyProvider.RegionForFederationClient() + return string(region), nil +} + +func (p instancePrincipalDelegationTokenConfigurationProvider) AuthType() (common.AuthConfig, error) { + token := p.delegationToken + return common.AuthConfig{common.InstancePrincipalDelegationToken, false, &token}, nil +} diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/instance_principal_key_provider.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_key_provider.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/instance_principal_key_provider.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_key_provider.go index 1a18b6a19..619cbb231 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/instance_principal_key_provider.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/instance_principal_key_provider.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth @@ -7,7 +7,7 @@ import ( "bytes" "crypto/rsa" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" "strings" ) diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/jwt.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/jwt.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/jwt.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/jwt.go index f47253cfc..17dfb7d1e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/jwt.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/jwt.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth @@ -8,7 +8,7 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "strings" "time" ) diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/resouce_principal_key_provider.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resouce_principal_key_provider.go similarity index 73% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/resouce_principal_key_provider.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resouce_principal_key_provider.go index 256a8f673..4926c2fb7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/resouce_principal_key_provider.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resouce_principal_key_provider.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth @@ -7,13 +7,13 @@ import ( "crypto/rsa" "errors" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "os" "path" ) const ( - //ResourcePrincipalVersion2_2 supported version for resource principals + //ResourcePrincipalVersion2_2 is a supported version for resource principals ResourcePrincipalVersion2_2 = "2.2" //ResourcePrincipalVersionEnvVar environment var name for version ResourcePrincipalVersionEnvVar = "OCI_RESOURCE_PRINCIPAL_VERSION" @@ -26,6 +26,13 @@ const ( //ResourcePrincipalRegionEnvVar environment variable holding a region ResourcePrincipalRegionEnvVar = "OCI_RESOURCE_PRINCIPAL_REGION" + //ResourcePrincipalVersion1_1 is a supported version for resource principals + ResourcePrincipalVersion1_1 = "1.1" + //ResourcePrincipalSessionTokenEndpoint endpoint for retrieving the Resource Principal Session Token + ResourcePrincipalSessionTokenEndpoint = "OCI_RESOURCE_PRINCIPAL_RPST_ENDPOINT" + //ResourcePrincipalTokenEndpoint endpoint for retrieving the Resource Principal Token + ResourcePrincipalTokenEndpoint = "OCI_RESOURCE_PRINCIPAL_RPT_ENDPOINT" + // TenancyOCIDClaimKey is the key used to look up the resource tenancy in an RPST TenancyOCIDClaimKey = "res_tenant" // CompartmentOCIDClaimKey is the key used to look up the resource compartment in an RPST @@ -65,11 +72,45 @@ func ResourcePrincipalConfigurationProvider() (ConfigurationProviderWithClaimAcc } return newResourcePrincipalKeyProvider22( *rpst, *private, passphrase, *region) + case ResourcePrincipalVersion1_1: + return newResourcePrincipalKeyProvider11(DefaultRptPathProvider{}) default: return nil, fmt.Errorf("can not create resource principal, environment variable: %s, must be valid", ResourcePrincipalVersionEnvVar) } } +// ResourcePrincipalConfigurationProviderWithPathProvider returns a resource principal configuration provider using path provider. +func ResourcePrincipalConfigurationProviderWithPathProvider(pathProvider PathProvider) (ConfigurationProviderWithClaimAccess, error) { + var version string + var ok bool + if version, ok = os.LookupEnv(ResourcePrincipalVersionEnvVar); !ok { + return nil, fmt.Errorf("can not create resource principal, environment variable: %s, not present", ResourcePrincipalVersionEnvVar) + } else if version != ResourcePrincipalVersion1_1 { + return nil, fmt.Errorf("can not create resource principal, environment variable: %s, must be %s", ResourcePrincipalVersionEnvVar, ResourcePrincipalVersion1_1) + } + return newResourcePrincipalKeyProvider11(pathProvider) +} + +func newResourcePrincipalKeyProvider11(pathProvider PathProvider) (ConfigurationProviderWithClaimAccess, error) { + rptEndpoint := requireEnv(ResourcePrincipalTokenEndpoint) + if rptEndpoint == nil { + return nil, fmt.Errorf("can not create resource principal, environment variable: %s, not present", ResourcePrincipalTokenEndpoint) + } + rptPath, err := pathProvider.Path() + if err != nil { + return nil, fmt.Errorf("can not create resource principal, due to: %s ", err.Error()) + } + resourceID, err := pathProvider.ResourceID() + if err != nil { + return nil, fmt.Errorf("can not create resource principal, due to: %s ", err.Error()) + } + rp, err := resourcePrincipalConfigurationProviderV1(*rptEndpoint+*rptPath, *resourceID) + if err != nil { + return nil, fmt.Errorf("can not create resource principal, due to: %s ", err.Error()) + } + return rp, nil +} + func requireEnv(key string) *string { if val, ok := os.LookupEnv(key); ok { return &val @@ -179,6 +220,10 @@ func (p *resourcePrincipalKeyProvider) UserOCID() (string, error) { return "", nil } +func (p *resourcePrincipalKeyProvider) AuthType() (common.AuthConfig, error) { + return common.AuthConfig{common.UnknownAuthenticationType, false, nil}, fmt.Errorf("unsupported, keep the interface") +} + // By contract for the the content of a resource principal to be considered path, it needs to be // an absolute path. func isPath(str string) bool { diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principal_token_path_provider.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principal_token_path_provider.go new file mode 100644 index 000000000..5bc58ccce --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principal_token_path_provider.go @@ -0,0 +1,138 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. + +package auth + +import ( + "fmt" + "io/ioutil" + "net/http" +) + +const ( + imdsPathTemplate = "/20180711/resourcePrincipalToken/{id}" + instanceIDURL = `http://169.254.169.254/opc/v2/instance/id` + + //ResourcePrincipalTokenPath path for retrieving the Resource Principal Token + ResourcePrincipalTokenPath = "OCI_RESOURCE_PRINCIPAL_RPT_PATH" + //ResourceID OCID for the resource for Resource Principal + ResourceID = "OCI_RESOURCE_PRINCIPAL_RPT_ID" +) + +// PathProvider is an interface that returns path and resource ID +type PathProvider interface { + Path() (*string, error) + ResourceID() (*string, error) +} + +// StringRptPathProvider is a simple path provider that takes a string and returns it +type StringRptPathProvider struct { + path string + resourceID string +} + +// Path returns the resource principal token path +func (pp StringRptPathProvider) Path() (*string, error) { + return &pp.path, nil +} + +// ResourceID returns the resource associated with the resource principal +func (pp StringRptPathProvider) ResourceID() (*string, error) { + return &pp.resourceID, nil +} + +// ImdsRptPathProvider sets the path from a default value and the resource ID from instance metadata +type ImdsRptPathProvider struct{} + +// Path returns the resource principal token path +func (pp ImdsRptPathProvider) Path() (*string, error) { + path := imdsPathTemplate + return &path, nil +} + +// ResourceID returns the resource associated with the resource principal +func (pp ImdsRptPathProvider) ResourceID() (*string, error) { + instanceID, err := getInstanceIDFromMetadata() + return &instanceID, err +} + +// EnvRptPathProvider sets the path and resource ID from environment variables +type EnvRptPathProvider struct{} + +// Path returns the resource principal token path +func (pp EnvRptPathProvider) Path() (*string, error) { + path := requireEnv(ResourcePrincipalTokenPath) + if path == nil { + return nil, fmt.Errorf("missing %s env var", ResourcePrincipalTokenPath) + } + return path, nil +} + +// ResourceID returns the resource associated with the resource principal +func (pp EnvRptPathProvider) ResourceID() (*string, error) { + rpID := requireEnv(ResourceID) + if rpID == nil { + return nil, fmt.Errorf("missing %s env var", ResourceID) + } + return rpID, nil +} + +//DefaultRptPathProvider path provider makes sure the behavior happens with the correct fallback. +// +//For the path, +//Use the contents of the OCI_RESOURCE_PRINCIPAL_RPT_PATH environment variable, if set. +//Otherwise, use the current path: "/20180711/resourcePrincipalToken/{id}" +// +//For the resource id, +//Use the contents of the OCI_RESOURCE_PRINCIPAL_RPT_ID environment variable, if set. +//Otherwise, use IMDS to get the instance id +// +//This path provider is used when the caller doesn't provide a specific path provider to the resource principals signer +type DefaultRptPathProvider struct { + path string + resourceID string +} + +// Path returns the resource principal token path +func (pp DefaultRptPathProvider) Path() (*string, error) { + path := requireEnv(ResourcePrincipalTokenPath) + if path == nil { + rpPath := imdsPathTemplate + return &rpPath, nil + } + return path, nil +} + +// ResourceID returns the resource associated with the resource principal +func (pp DefaultRptPathProvider) ResourceID() (*string, error) { + rpID := requireEnv(ResourceID) + if rpID == nil { + instanceID, err := getInstanceIDFromMetadata() + if err != nil { + return nil, err + } + return &instanceID, nil + } + return rpID, nil +} + +func getInstanceIDFromMetadata() (instanceID string, err error) { + client := &http.Client{} + req, err := http.NewRequest("GET", instanceIDURL, nil) + if err != nil { + return "", err + } + req.Header.Set("Authorization", "Bearer Oracle") + resp, err := client.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + + bodyBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + bodyString := string(bodyBytes) + return bodyString, nil +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principals_v1.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principals_v1.go new file mode 100644 index 000000000..69c5d2de5 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/resource_principals_v1.go @@ -0,0 +1,373 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. + +package auth + +import ( + "context" + "crypto/rsa" + "fmt" + "github.com/oracle/oci-go-sdk/v36/common" + + "net/http" + "net/url" + "sync" + "time" +) + +// resourcePrincipalFederationClient is the client used to to talk acquire resource principals +// No auth client, leaf or intermediate retrievers. We use certificates retrieved by instance principals to sign the operations of +// resource principals +type resourcePrincipalFederationClient struct { + tenancyID string + instanceID string + sessionKeySupplier sessionKeySupplier + mux sync.Mutex + securityToken securityToken + path string + + //instancePrincipalKeyProvider the instance Principal Key container + instancePrincipalKeyProvider instancePrincipalKeyProvider + + //ResourcePrincipalTargetServiceClient client that calls the target service to acquire a resource principal token + ResourcePrincipalTargetServiceClient common.BaseClient + + //ResourcePrincipalSessionTokenClient. The client used to communicate with identity to exchange a resource principal for + // resource principal session token + ResourcePrincipalSessionTokenClient common.BaseClient +} + +type resourcePrincipalTokenRequest struct { + InstanceID string `contributesTo:"path" name:"id"` +} + +type resourcePrincipalTokenResponse struct { + Body struct { + ResourcePrincipalToken string `json:"resourcePrincipalToken"` + ServicePrincipalSessionToken string `json:"servicePrincipalSessionToken"` + } `presentIn:"body"` +} + +type resourcePrincipalSessionTokenRequestBody struct { + ResourcePrincipalToken string `json:"resourcePrincipalToken,omitempty"` + ServicePrincipalSessionToken string `json:"servicePrincipalSessionToken,omitempty"` + SessionPublicKey string `json:"sessionPublicKey,omitempty"` +} +type resourcePrincipalSessionTokenRequest struct { + Body resourcePrincipalSessionTokenRequestBody `contributesTo:"body"` +} + +//acquireResourcePrincipalToken acquires the resource principal from the target service +func (c *resourcePrincipalFederationClient) acquireResourcePrincipalToken() (tokenResponse resourcePrincipalTokenResponse, err error) { + rpServiceClient := c.ResourcePrincipalTargetServiceClient + + //Set the signer of this client to be the instance principal provider + rpServiceClient.Signer = common.DefaultRequestSigner(&c.instancePrincipalKeyProvider) + + //Create a request with the instanceId + request, err := common.MakeDefaultHTTPRequestWithTaggedStruct(http.MethodGet, c.path, resourcePrincipalTokenRequest{InstanceID: c.instanceID}) + if err != nil { + return + } + + //Call the target service + response, err := rpServiceClient.Call(context.Background(), &request) + if err != nil { + return + } + + defer common.CloseBodyIfValid(response) + + tokenResponse = resourcePrincipalTokenResponse{} + err = common.UnmarshalResponse(response, &tokenResponse) + return +} + +//exchangeToken exchanges a resource principal token from the target service with a session token from identity +func (c *resourcePrincipalFederationClient) exchangeToken(publicKeyBase64 string, tokenResponse resourcePrincipalTokenResponse) (sessionToken string, err error) { + rpServiceClient := c.ResourcePrincipalSessionTokenClient + + //Set the signer of this client to be the instance principal provider + rpServiceClient.Signer = common.DefaultRequestSigner(&c.instancePrincipalKeyProvider) + + // Call identity service to get resource principal session token + sessionTokenReq := resourcePrincipalSessionTokenRequest{ + resourcePrincipalSessionTokenRequestBody{ + ServicePrincipalSessionToken: tokenResponse.Body.ServicePrincipalSessionToken, + ResourcePrincipalToken: tokenResponse.Body.ResourcePrincipalToken, + SessionPublicKey: publicKeyBase64, + }, + } + + sessionTokenHTTPReq, err := common.MakeDefaultHTTPRequestWithTaggedStruct(http.MethodPost, + "", sessionTokenReq) + if err != nil { + return + } + + sessionTokenHTTPRes, err := rpServiceClient.Call(context.Background(), &sessionTokenHTTPReq) + if err != nil { + return + } + defer common.CloseBodyIfValid(sessionTokenHTTPRes) + + sessionTokenRes := x509FederationResponse{} + err = common.UnmarshalResponse(sessionTokenHTTPRes, &sessionTokenRes) + if err != nil { + return + } + + sessionToken = sessionTokenRes.Token.Token + return +} + +//getSecurityToken makes the appropiate calls to acquire a resource principal security token +func (c *resourcePrincipalFederationClient) getSecurityToken() (securityToken, error) { + var err error + ipFederationClient := c.instancePrincipalKeyProvider.FederationClient + + common.Debugf("Refreshing instance principal token") + //Refresh instance principal token + if refreshable, ok := ipFederationClient.(*x509FederationClient); ok { + err = refreshable.renewSecurityTokenIfNotValid() + if err != nil { + return nil, err + } + } + + //Acquire resource principal token from target service + common.Debugf("Acquiring resource principal token from target service") + tokenResponse, err := c.acquireResourcePrincipalToken() + if err != nil { + return nil, err + } + + //Read the public key from the session supplier. + pem := c.sessionKeySupplier.PublicKeyPemRaw() + pemSanitized := sanitizeCertificateString(string(pem)) + + //Exchange resource principal token for session token from identity + common.Debugf("Exchanging resource principal token for resource principal session token") + sessionToken, err := c.exchangeToken(pemSanitized, tokenResponse) + if err != nil { + return nil, err + } + + return newPrincipalToken(sessionToken) // should be a resource principal token +} + +func (c *resourcePrincipalFederationClient) renewSecurityToken() (err error) { + if err = c.sessionKeySupplier.Refresh(); err != nil { + return fmt.Errorf("failed to refresh session key: %s", err.Error()) + } + common.Logf("Renewing resource principal security token at: %v\n", time.Now().Format("15:04:05.000")) + if c.securityToken, err = c.getSecurityToken(); err != nil { + return fmt.Errorf("failed to get security token: %s", err.Error()) + } + common.Logf("Resource principal security token renewed at: %v\n", time.Now().Format("15:04:05.000")) + + return nil +} + +//ResourcePrincipal Key provider in charge of resource principal acquiring tokens +type resourcePrincipalKeyProviderV1 struct { + ResourcePrincipalClient resourcePrincipalFederationClient +} + +func (c *resourcePrincipalFederationClient) renewSecurityTokenIfNotValid() (err error) { + if c.securityToken == nil || !c.securityToken.Valid() { + if err = c.renewSecurityToken(); err != nil { + return fmt.Errorf("failed to renew resource prinicipal security token: %s", err.Error()) + } + } + return nil +} + +func (c *resourcePrincipalFederationClient) PrivateKey() (*rsa.PrivateKey, error) { + c.mux.Lock() + defer c.mux.Unlock() + + if err := c.renewSecurityTokenIfNotValid(); err != nil { + return nil, err + } + return c.sessionKeySupplier.PrivateKey(), nil +} + +func (c *resourcePrincipalFederationClient) SecurityToken() (token string, err error) { + c.mux.Lock() + defer c.mux.Unlock() + + if err = c.renewSecurityTokenIfNotValid(); err != nil { + return "", err + } + return c.securityToken.String(), nil +} + +func (p *resourcePrincipalConfigurationProvider) PrivateRSAKey() (privateKey *rsa.PrivateKey, err error) { + if privateKey, err = p.keyProvider.ResourcePrincipalClient.PrivateKey(); err != nil { + err = fmt.Errorf("failed to get resource principal private key: %s", err.Error()) + return nil, err + } + return privateKey, nil +} + +func (p *resourcePrincipalConfigurationProvider) KeyID() (string, error) { + var securityToken string + var err error + if securityToken, err = p.keyProvider.ResourcePrincipalClient.SecurityToken(); err != nil { + return "", fmt.Errorf("failed to get resource principal security token: %s", err.Error()) + } + return fmt.Sprintf("ST$%s", securityToken), nil +} + +func (p *resourcePrincipalConfigurationProvider) TenancyOCID() (string, error) { + return p.keyProvider.ResourcePrincipalClient.instancePrincipalKeyProvider.TenancyOCID() +} + +// todo what is this +func (p *resourcePrincipalConfigurationProvider) GetClaim(key string) (interface{}, error) { + return nil, nil +} + +//Resource Principals +type resourcePrincipalConfigurationProvider struct { + keyProvider resourcePrincipalKeyProviderV1 + region *common.Region +} + +func newResourcePrincipalKeyProvider(ipKeyProvider instancePrincipalKeyProvider, rpTokenTargetServiceClient, rpSessionTokenClient common.BaseClient, instanceID, path string) (keyProvider resourcePrincipalKeyProviderV1, err error) { + rpFedClient := resourcePrincipalFederationClient{} + rpFedClient.tenancyID = ipKeyProvider.TenancyID + rpFedClient.instanceID = instanceID + rpFedClient.sessionKeySupplier = newSessionKeySupplier() + rpFedClient.ResourcePrincipalTargetServiceClient = rpTokenTargetServiceClient + rpFedClient.ResourcePrincipalSessionTokenClient = rpSessionTokenClient + rpFedClient.instancePrincipalKeyProvider = ipKeyProvider + rpFedClient.path = path + keyProvider = resourcePrincipalKeyProviderV1{ResourcePrincipalClient: rpFedClient} + return +} + +func (p *resourcePrincipalConfigurationProvider) AuthType() (common.AuthConfig, error) { + return common.AuthConfig{common.UnknownAuthenticationType, false, nil}, + fmt.Errorf("unsupported, keep the interface") +} + +func (p resourcePrincipalConfigurationProvider) UserOCID() (string, error) { + return "", nil +} + +func (p resourcePrincipalConfigurationProvider) KeyFingerprint() (string, error) { + return "", nil +} + +func (p resourcePrincipalConfigurationProvider) Region() (string, error) { + if p.region == nil { + region := p.keyProvider.ResourcePrincipalClient.instancePrincipalKeyProvider.RegionForFederationClient() + common.Debugf("Region in resource principal configuration provider is nil. Returning instance principal federation clients region: %s", region) + return string(region), nil + } + return string(*p.region), nil +} + +// resourcePrincipalConfigurationProviderForInstanceWithClients returns a configuration for instance principals +// resourcePrincipalTargetServiceTokenClient and resourcePrincipalSessionTokenClient are clients that at last need to have +// their base path and host properly set for their respective services. Additionally the clients can be further customized +// to provide mocking or any other customization for the requests/responses +func resourcePrincipalConfigurationProviderForInstanceWithClients(instancePrincipalProvider common.ConfigurationProvider, + resourcePrincipalTargetServiceTokenClient, resourcePrincipalSessionTokenClient common.BaseClient, instanceID, path string) (*resourcePrincipalConfigurationProvider, error) { + var ok bool + var ip instancePrincipalConfigurationProvider + if ip, ok = instancePrincipalProvider.(instancePrincipalConfigurationProvider); !ok { + return nil, fmt.Errorf("instancePrincipalConfigurationProvider needs to be of type vald Instance Principal Configuration Provider") + } + + keyProvider, err := newResourcePrincipalKeyProvider(ip.keyProvider, resourcePrincipalTargetServiceTokenClient, resourcePrincipalSessionTokenClient, instanceID, path) + if err != nil { + return nil, err + } + + provider := &resourcePrincipalConfigurationProvider{ + region: nil, + keyProvider: keyProvider, + } + return provider, nil +} + +const identityResourcePrincipalSessionTokenPath = "/v1/resourcePrincipalSessionToken" + +// resourcePrincipalConfigurationProviderForInstanceWithInterceptor creates a resource principal configuration provider with +// a interceptor used to customize the call going to the resource principal token request to the target service +// for a given instance ID +func resourcePrincipalConfigurationProviderForInstanceWithInterceptor(instancePrincipalProvider common.ConfigurationProvider, resourcePrincipalTokenEndpoint, instanceID string, interceptor common.RequestInterceptor) (provider *resourcePrincipalConfigurationProvider, err error) { + + //Build the target service client + rpTargetServiceClient, err := common.NewClientWithConfig(instancePrincipalProvider) + if err != nil { + return + } + + rpTokenURL, err := url.Parse(resourcePrincipalTokenEndpoint) + if err != nil { + return + } + + rpTargetServiceClient.Host = rpTokenURL.Scheme + "://" + rpTokenURL.Host + rpTargetServiceClient.Interceptor = interceptor + + var path string + if rpTokenURL.Path != "" { + path = rpTokenURL.Path + } else { + path = identityResourcePrincipalSessionTokenPath + } + + //Build the identity client for token service + rpTokenSessionClient, err := common.NewClientWithConfig(instancePrincipalProvider) + if err != nil { + return + } + + // Set RPST endpoint if passed in from env var, otherwise create it from region + resourcePrincipalSessionTokenEndpoint := requireEnv(ResourcePrincipalSessionTokenEndpoint) + if resourcePrincipalSessionTokenEndpoint != nil { + rpSessionTokenURL, err := url.Parse(*resourcePrincipalSessionTokenEndpoint) + if err != nil { + return nil, err + } + + rpTokenSessionClient.Host = rpSessionTokenURL.Scheme + "://" + rpSessionTokenURL.Host + } else { + regionStr, err := instancePrincipalProvider.Region() + if err != nil { + return nil, fmt.Errorf("missing RPST env var and cannot determine region: %v", err) + } + region := common.StringToRegion(regionStr) + rpTokenSessionClient.Host = fmt.Sprintf("https://%s", region.Endpoint("auth")) + } + + rpTokenSessionClient.BasePath = identityResourcePrincipalSessionTokenPath + + return resourcePrincipalConfigurationProviderForInstanceWithClients(instancePrincipalProvider, rpTargetServiceClient, rpTokenSessionClient, instanceID, path) +} + +// ResourcePrincipalConfigurationProviderWithInterceptor creates a resource principal configuration provider with endpoints +// a interceptor used to customize the call going to the resource principal token request to the target service +// see https://godoc.org/github.com/oracle/oci-go-sdk/common#RequestInterceptor +func ResourcePrincipalConfigurationProviderWithInterceptor(instancePrincipalProvider common.ConfigurationProvider, + resourcePrincipalTokenEndpoint, resourcePrincipalSessionTokenEndpoint string, + interceptor common.RequestInterceptor) (common.ConfigurationProvider, error) { + + return resourcePrincipalConfigurationProviderForInstanceWithInterceptor(instancePrincipalProvider, resourcePrincipalTokenEndpoint, "", interceptor) +} + +// resourcePrincipalConfigurationProviderV1 creates a resource principal configuration provider with +// endpoints for both resource principal token and resource principal token session +func resourcePrincipalConfigurationProviderV1(resourcePrincipalTokenEndpoint, resourceID string) (*resourcePrincipalConfigurationProvider, error) { + + instancePrincipalProvider, err := InstancePrincipalConfigurationProvider() + if err != nil { + return nil, err + } + return resourcePrincipalConfigurationProviderForInstanceWithInterceptor(instancePrincipalProvider, resourcePrincipalTokenEndpoint, resourceID, nil) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/common/auth/utils.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/utils.go similarity index 60% rename from vendor/github.com/oracle/oci-go-sdk/common/auth/utils.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/auth/utils.go index 17a42a819..509f27b93 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/auth/utils.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/auth/utils.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package auth @@ -8,7 +8,7 @@ import ( "crypto/sha1" "crypto/x509" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" "net/http/httputil" "strings" @@ -68,3 +68,27 @@ func colonSeparatedString(fingerprint [sha1.Size]byte) string { spaceSeparated := fmt.Sprintf("% x", fingerprint) return strings.Replace(spaceSeparated, " ", ":", -1) } + +func sanitizeCertificateString(certString string) string { + certString = strings.Replace(certString, "-----BEGIN CERTIFICATE-----", "", -1) + certString = strings.Replace(certString, "-----END CERTIFICATE-----", "", -1) + certString = strings.Replace(certString, "-----BEGIN PUBLIC KEY-----", "", -1) + certString = strings.Replace(certString, "-----END PUBLIC KEY-----", "", -1) + certString = strings.Replace(certString, "\n", "", -1) + return certString +} + +// GetGenericConfigurationProvider checks auth config paras in config file and return the final configuration provider +func GetGenericConfigurationProvider(configProvider common.ConfigurationProvider) (common.ConfigurationProvider, error) { + if authConfig, err := configProvider.AuthType(); err == nil && authConfig.IsFromConfigFile { + switch authConfig.AuthType { + case common.InstancePrincipalDelegationToken: + return InstancePrincipalDelegationTokenConfigurationProvider(authConfig.OboToken) + case common.InstancePrincipal: + return InstancePrincipalConfigurationProvider() + case common.UserPrincipal: + return configProvider, nil + } + } + return configProvider, nil +} diff --git a/vendor/github.com/oracle/oci-go-sdk/common/client.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/client.go similarity index 75% rename from vendor/github.com/oracle/oci-go-sdk/common/client.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/client.go index 85c78da2b..08c20d62f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/client.go @@ -1,12 +1,15 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Package common provides supporting functions and structs used by service packages package common import ( + "bytes" "context" "fmt" + "io" + "io/ioutil" "math/rand" "net/http" "net/http/httputil" @@ -71,8 +74,9 @@ const ( defaultConfigFileName = "config" defaultConfigDirName = ".oci" configFilePathEnvVarName = "OCI_CONFIG_FILE" - secondaryConfigDirName = ".oraclebmc" - maxBodyLenForDebug = 1024 * 1000 + + secondaryConfigDirName = ".oraclebmc" + maxBodyLenForDebug = 1024 * 1000 ) // RequestInterceptor function used to customize the request before calling the underlying service @@ -84,6 +88,11 @@ type HTTPRequestDispatcher interface { Do(req *http.Request) (*http.Response, error) } +// CustomClientConfiguration contains configurations set at client level, currently it only includes RetryPolicy +type CustomClientConfiguration struct { + RetryPolicy *RetryPolicy +} + // BaseClient struct implements all basic operations to call oci web services. type BaseClient struct { //HTTPClient performs the http network operations @@ -103,10 +112,36 @@ type BaseClient struct { //Base path for all operations of this client BasePath string + + Configuration CustomClientConfiguration +} + +// SetCustomClientConfiguration sets client with retry and other custom configurations +func (client *BaseClient) SetCustomClientConfiguration(config CustomClientConfiguration) { + client.Configuration = config +} + +// RetryPolicy returns the retryPolicy configured for client +func (client *BaseClient) RetryPolicy() *RetryPolicy { + return client.Configuration.RetryPolicy +} + +// Endpoint returns the enpoint configured for client +func (client *BaseClient) Endpoint() string { + host := client.Host + if !strings.Contains(host, "http") && + !strings.Contains(host, "https") { + host = fmt.Sprintf("%s://%s", defaultScheme, host) + } + return host } func defaultUserAgent() string { userAgent := fmt.Sprintf(defaultUserAgentTemplate, defaultSDKMarker, Version(), runtime.GOOS, runtime.GOARCH, runtime.Version()) + appendUA := os.Getenv("OCI_SDK_APPEND_USER_AGENT") + if appendUA != "" { + userAgent = fmt.Sprintf("%s %s", userAgent, appendUA) + } return userAgent } @@ -158,6 +193,11 @@ func NewClientWithConfig(configProvider ConfigurationProvider) (client BaseClien client = defaultBaseClient(configProvider) + if authConfig, e := configProvider.AuthType(); e == nil && authConfig.OboToken != nil { + Debugf("authConfig's authType is %s, and token content is %s", authConfig.AuthType, *authConfig.OboToken) + signOboToken(&client, *authConfig.OboToken, configProvider) + } + return } @@ -168,6 +208,13 @@ func NewClientWithOboToken(configProvider ConfigurationProvider, oboToken string return } + signOboToken(&client, oboToken, configProvider) + + return +} + +// Add obo token header to Interceptor and sign to client +func signOboToken(client *BaseClient, oboToken string, configProvider ConfigurationProvider) { // Interceptor to add obo token header client.Interceptor = func(request *http.Request) error { request.Header.Add(requestHeaderOpcOboToken, oboToken) @@ -176,8 +223,6 @@ func NewClientWithOboToken(configProvider ConfigurationProvider, oboToken string // Obo token will also be signed defaultHeaders := append(DefaultGenericHeaders(), requestHeaderOpcOboToken) client.Signer = RequestSigner(configProvider, defaultHeaders, DefaultBodyHeaders()) - - return } func getHomeFolder() string { @@ -285,14 +330,72 @@ func (client BaseClient) intercept(request *http.Request) (err error) { return } -func checkForSuccessfulResponse(res *http.Response) error { +// checkForSuccessfulResponse checks if the response is successful +// If Error Code is 4XX/5XX and debug level is set to info, will log the request and response +func checkForSuccessfulResponse(res *http.Response, requestBody *io.ReadCloser) error { familyStatusCode := res.StatusCode / 100 if familyStatusCode == 4 || familyStatusCode == 5 { + IfInfo(func() { + // If debug level is set to verbose, the request and request body will be dumped and logged under debug level, this is to avoid duplicate logging + if defaultLogger.LogLevel() < verboseLogging { + logRequest(res.Request, Logf, noLogging) + if requestBody != nil && *requestBody != http.NoBody { + bodyContent, _ := ioutil.ReadAll(*requestBody) + Logf("Dump Request Body: \n%s", string(bodyContent)) + } + } + logResponse(res, Logf, infoLogging) + }) return newServiceFailureFromResponse(res) } + IfDebug(func() { + logResponse(res, Debugf, verboseLogging) + }) return nil } +func logRequest(request *http.Request, fn func(format string, v ...interface{}), bodyLoggingLevel int) { + if request == nil { + return + } + dumpBody := true + if checkBodyLengthExceedLimit(request.ContentLength) { + fn("not dumping body too big\n") + dumpBody = false + } + + dumpBody = dumpBody && defaultLogger.LogLevel() >= bodyLoggingLevel && bodyLoggingLevel != noLogging + if dump, e := httputil.DumpRequestOut(request, dumpBody); e == nil { + fn("Dump Request %s", string(dump)) + } else { + fn("%v\n", e) + } +} + +func logResponse(response *http.Response, fn func(format string, v ...interface{}), bodyLoggingLevel int) { + if response == nil { + return + } + dumpBody := true + if checkBodyLengthExceedLimit(response.ContentLength) { + fn("not dumping body too big\n") + dumpBody = false + } + dumpBody = dumpBody && defaultLogger.LogLevel() >= bodyLoggingLevel && bodyLoggingLevel != noLogging + if dump, e := httputil.DumpResponse(response, dumpBody); e == nil { + fn("Dump Response %s", string(dump)) + } else { + fn("%v\n", e) + } +} + +func checkBodyLengthExceedLimit(contentLength int64) bool { + if contentLength > maxBodyLenForDebug { + return true + } + return false +} + // OCIRequest is any request made to an OCI service. type OCIRequest interface { // HTTPRequest assembles an HTTP request. @@ -329,7 +432,7 @@ func (client BaseClient) Call(ctx context.Context, request *http.Request) (respo // CallWithDetails executes the http request, the given context using details specified in the paremeters, this function // provides a way to override some settings present in the client func (client BaseClient) CallWithDetails(ctx context.Context, request *http.Request, details ClientCallDetails) (response *http.Response, err error) { - Debugln("Atempting to call downstream service") + Debugln("Attempting to call downstream service") request = request.WithContext(ctx) err = client.prepareRequest(request) @@ -349,48 +452,28 @@ func (client BaseClient) CallWithDetails(ctx context.Context, request *http.Requ return } + //Copy request body and save for logging + dumpRequestBody := ioutil.NopCloser(bytes.NewBuffer(nil)) + if request.Body != nil && !checkBodyLengthExceedLimit(request.ContentLength) { + if dumpRequestBody, request.Body, err = drainBody(request.Body); err != nil { + dumpRequestBody = ioutil.NopCloser(bytes.NewBuffer(nil)) + } + } IfDebug(func() { - dumpBody := true - if request.ContentLength > maxBodyLenForDebug { - Debugf("not dumping body too big\n") - dumpBody = false - } - dumpBody = dumpBody && defaultLogger.LogLevel() == verboseLogging - if dump, e := httputil.DumpRequestOut(request, dumpBody); e == nil { - Debugf("Dump Request %s", string(dump)) - } else { - Debugf("%v\n", e) - } + logRequest(request, Debugf, verboseLogging) }) //Execute the http request response, err = client.HTTPClient.Do(request) - IfDebug(func() { - if err != nil { - Debugf("%v\n", err) - return - } - - dumpBody := true - if response.ContentLength > maxBodyLenForDebug { - Debugf("not dumping body too big\n") - dumpBody = false - } - - dumpBody = dumpBody && defaultLogger.LogLevel() == verboseLogging - if dump, e := httputil.DumpResponse(response, dumpBody); e == nil { - Debugf("Dump Response %s", string(dump)) - } else { - Debugf("%v\n", e) - } - }) - if err != nil { + IfInfo(func() { + Logf("%v\n", err) + }) return } - err = checkForSuccessfulResponse(response) + err = checkForSuccessfulResponse(response, &dumpRequestBody) return } diff --git a/vendor/github.com/oracle/oci-go-sdk/common/common.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/common.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/common/common.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/common.go index ab89c4e6f..9f3d6a8fd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/common.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/common.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common @@ -33,10 +33,15 @@ const ( RegionIAD Region = "us-ashburn-1" //RegionSJC1 region SJC RegionSJC1 Region = "us-sanjose-1" + //RegionFRA region FRA RegionFRA Region = "eu-frankfurt-1" + + //RegionUKCardiff1 region for Cardiff + RegionUKCardiff1 Region = "uk-cardiff-1" //RegionLHR region LHR RegionLHR Region = "uk-london-1" + //RegionAPTokyo1 region for Tokyo RegionAPTokyo1 Region = "ap-tokyo-1" //RegionAPOsaka1 region for Osaka @@ -55,14 +60,21 @@ const ( RegionAPMelbourne1 Region = "ap-melbourne-1" //RegionAPSydney1 region for Sydney RegionAPSydney1 Region = "ap-sydney-1" + //RegionMEJeddah1 region for Jeddah RegionMEJeddah1 Region = "me-jeddah-1" + //RegionMEDubai1 region for Dubai + RegionMEDubai1 Region = "me-dubai-1" + //RegionEUZurich1 region for Zurich RegionEUZurich1 Region = "eu-zurich-1" //RegionEUAmsterdam1 region for Amsterdam RegionEUAmsterdam1 Region = "eu-amsterdam-1" + //RegionSASaopaulo1 region for Sao Paulo RegionSASaopaulo1 Region = "sa-saopaulo-1" + //RegionSASantiago1 region for santiago + RegionSASantiago1 Region = "sa-santiago-1" //RegionUSLangley1 region for Langley RegionUSLangley1 Region = "us-langley-1" @@ -100,6 +112,7 @@ var shortNameRegion = map[string]Region{ "iad": RegionIAD, "fra": RegionFRA, "lhr": RegionLHR, + "cwl": RegionUKCardiff1, "ams": RegionEUAmsterdam1, "zrh": RegionEUZurich1, "mel": RegionAPMelbourne1, @@ -110,12 +123,14 @@ var shortNameRegion = map[string]Region{ "nrt": RegionAPTokyo1, "kix": RegionAPOsaka1, "nja": RegionAPChiyoda1, + "jed": RegionMEJeddah1, + "dxb": RegionMEDubai1, "syd": RegionAPSydney1, "yul": RegionCAMontreal1, "yyz": RegionCAToronto1, "sjc": RegionSJC1, "gru": RegionSASaopaulo1, - "jed": RegionMEJeddah1, + "scl": RegionSASantiago1, "ltn": RegionUKGovLondon1, "brs": RegionUKGovCardiff1, } @@ -129,13 +144,17 @@ var realm = map[string]string{ } var regionRealm = map[Region]string{ - RegionPHX: "oc1", - RegionIAD: "oc1", - RegionFRA: "oc1", - RegionLHR: "oc1", - RegionCAToronto1: "oc1", - RegionCAMontreal1: "oc1", - RegionSJC1: "oc1", + RegionPHX: "oc1", + RegionIAD: "oc1", + RegionFRA: "oc1", + RegionLHR: "oc1", + RegionSJC1: "oc1", + + RegionUKCardiff1: "oc1", + + RegionCAToronto1: "oc1", + RegionCAMontreal1: "oc1", + RegionAPTokyo1: "oc1", RegionAPOsaka1: "oc1", RegionAPSeoul1: "oc1", @@ -144,13 +163,19 @@ var regionRealm = map[Region]string{ RegionAPMumbai1: "oc1", RegionAPHyderabad1: "oc1", RegionAPMelbourne1: "oc1", - RegionMEJeddah1: "oc1", + + RegionMEJeddah1: "oc1", + RegionMEDubai1: "oc1", + RegionEUZurich1: "oc1", RegionEUAmsterdam1: "oc1", - RegionSASaopaulo1: "oc1", - RegionUSLangley1: "oc2", - RegionUSLuke1: "oc2", + RegionSASaopaulo1: "oc1", + RegionSASantiago1: "oc1", + + RegionUSLangley1: "oc2", + RegionUSLuke1: "oc2", + RegionUSGovAshburn1: "oc3", RegionUSGovChicago1: "oc3", RegionUSGovPhoenix1: "oc3", diff --git a/vendor/github.com/oracle/oci-go-sdk/common/configuration.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/configuration.go similarity index 81% rename from vendor/github.com/oracle/oci-go-sdk/common/configuration.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/configuration.go index 42ae2275e..90019f70f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/configuration.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/configuration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common @@ -14,6 +14,28 @@ import ( "strings" ) +// AuthenticationType for auth +type AuthenticationType string + +const ( + // UserPrincipal is default auth type + UserPrincipal AuthenticationType = "user_principal" + // InstancePrincipal is used for instance principle auth type + InstancePrincipal AuthenticationType = "instance_principal" + // InstancePrincipalDelegationToken is used for instance principle delegation token auth type + InstancePrincipalDelegationToken AuthenticationType = "instance_principle_delegation_token" + // UnknownAuthenticationType is used for none meaningful auth type + UnknownAuthenticationType AuthenticationType = "unknown_auth_type" +) + +// AuthConfig is used for getting auth related paras in config file +type AuthConfig struct { + AuthType AuthenticationType + // IsFromConfigFile is used to point out if the authConfig is from configuration file + IsFromConfigFile bool + OboToken *string +} + // ConfigurationProvider wraps information about the account owner type ConfigurationProvider interface { KeyProvider @@ -21,9 +43,12 @@ type ConfigurationProvider interface { UserOCID() (string, error) KeyFingerprint() (string, error) Region() (string, error) + // AuthType() is used for specify the needed auth type, like UserPrincipal, InstancePrincipal, etc. + AuthType() (AuthConfig, error) } -// IsConfigurationProviderValid Tests all parts of the configuration provider do not return an error +// IsConfigurationProviderValid Tests all parts of the configuration provider do not return an error, this method will +// not check AuthType(), since authType() is not required to be there. func IsConfigurationProviderValid(conf ConfigurationProvider) (ok bool, err error) { baseFn := []func() (string, error){conf.TenancyOCID, conf.UserOCID, conf.KeyFingerprint, conf.Region, conf.KeyID} for _, fn := range baseFn { @@ -105,6 +130,10 @@ func (p rawConfigurationProvider) Region() (string, error) { return canStringBeRegion(p.region) } +func (p rawConfigurationProvider) AuthType() (AuthConfig, error) { + return AuthConfig{UnknownAuthenticationType, false, nil}, nil +} + // environmentConfigurationProvider reads configuration from environment variables type environmentConfigurationProvider struct { PrivateKeyPassword string @@ -199,6 +228,11 @@ func (p environmentConfigurationProvider) Region() (value string, err error) { return canStringBeRegion(value) } +func (p environmentConfigurationProvider) AuthType() (AuthConfig, error) { + return AuthConfig{UnknownAuthenticationType, false, nil}, + fmt.Errorf("unsupported, keep the interface") +} + // fileConfigurationProvider. reads configuration information from a file type fileConfigurationProvider struct { //The path to the configuration file @@ -241,8 +275,9 @@ func ConfigurationProviderFromFileWithProfile(configFilePath, profile, privateKe } type configFileInfo struct { - UserOcid, Fingerprint, KeyFilePath, TenancyOcid, Region, Passphrase, SecurityTokenFilePath string - PresentConfiguration byte + UserOcid, Fingerprint, KeyFilePath, TenancyOcid, Region, Passphrase, SecurityTokenFilePath, DelegationTokenFilePath, + AuthenticationType string + PresentConfiguration rune } const ( @@ -253,6 +288,8 @@ const ( hasKeyFile hasPassphrase hasSecurityTokenFile + hasDelegationTokenFile + hasAuthenticationType none ) @@ -279,7 +316,7 @@ func parseConfigFile(data []byte, profile string) (info *configFileInfo, err err } func parseConfigAtLine(start int, content []string) (info *configFileInfo, err error) { - var configurationPresent byte + var configurationPresent rune info = &configFileInfo{} for i := start; i < len(content); i++ { line := content[i] @@ -314,6 +351,12 @@ func parseConfigAtLine(start int, content []string) (info *configFileInfo, err e case "security_token_file": configurationPresent = configurationPresent | hasSecurityTokenFile info.SecurityTokenFilePath = value + case "delegation_token_file": + configurationPresent = configurationPresent | hasDelegationTokenFile + info.DelegationTokenFilePath = value + case "authentication_type": + configurationPresent = configurationPresent | hasAuthenticationType + info.AuthenticationType = value } } info.PresentConfiguration = configurationPresent @@ -366,7 +409,7 @@ func (p fileConfigurationProvider) readAndParseConfigFile() (info *configFileInf return p.FileInfo, err } -func presentOrError(value string, expectedConf, presentConf byte, confMissing string) (string, error) { +func presentOrError(value string, expectedConf, presentConf rune, confMissing string) (string, error) { if presentConf&expectedConf == expectedConf { return value, nil } @@ -421,7 +464,11 @@ func (p fileConfigurationProvider) KeyID() (keyID string, err error) { return fmt.Sprintf("%s/%s/%s", info.TenancyOcid, info.UserOcid, info.Fingerprint), nil } if filePath, err := presentOrError(info.SecurityTokenFilePath, hasSecurityTokenFile, info.PresentConfiguration, "securityTokenFilePath"); err == nil { - return getSecurityToken(filePath) + rawString, err := getTokenContent(filePath) + if err != nil { + return "", err + } + return "ST$" + rawString, nil } err = fmt.Errorf("can not read SecurityTokenFilePath from configuration file due to: %s", err.Error()) return @@ -476,14 +523,39 @@ func (p fileConfigurationProvider) Region() (value string, err error) { return canStringBeRegion(value) } -func getSecurityToken(filePath string) (string, error) { +func (p fileConfigurationProvider) AuthType() (AuthConfig, error) { + info, err := p.readAndParseConfigFile() + if err != nil { + err = fmt.Errorf("can not read tenancy configuration due to: %s", err.Error()) + return AuthConfig{UnknownAuthenticationType, true, nil}, err + } + val, err := presentOrError(info.AuthenticationType, hasAuthenticationType, info.PresentConfiguration, "authentication_type") + + if val == "instance_principal" { + if filePath, err := presentOrError(info.DelegationTokenFilePath, hasDelegationTokenFile, info.PresentConfiguration, "delegationTokenFilePath"); err == nil { + if delegationToken, err := getTokenContent(filePath); err == nil && delegationToken != "" { + Debugf("delegation token content is %s, and error is %s ", delegationToken, err) + return AuthConfig{InstancePrincipalDelegationToken, true, &delegationToken}, nil + } + return AuthConfig{UnknownAuthenticationType, true, nil}, err + + } + // normal instance principle + return AuthConfig{InstancePrincipal, true, nil}, nil + } + + // by default, if no "authentication_type" is provided, just treated as user principle type, and will not return error + return AuthConfig{UserPrincipal, true, nil}, nil +} + +func getTokenContent(filePath string) (string, error) { expandedPath := expandPath(filePath) tokenFileContent, err := ioutil.ReadFile(expandedPath) if err != nil { - err = fmt.Errorf("can not read PrivateKey from configuration file due to: %s", err.Error()) + err = fmt.Errorf("can not read token content from configuration file due to: %s", err.Error()) return "", err } - return fmt.Sprintf("ST$%s", tokenFileContent), nil + return fmt.Sprintf("%s", tokenFileContent), nil } // A configuration provider that look for information in multiple configuration providers @@ -569,6 +641,15 @@ func (c composingConfigurationProvider) PrivateRSAKey() (*rsa.PrivateKey, error) return nil, fmt.Errorf("did not find a proper configuration for private key") } +func (c composingConfigurationProvider) AuthType() (AuthConfig, error) { + // only check the first default fileConfigProvider + authConfig, err := c.Providers[0].AuthType() + if err == nil && authConfig.AuthType != UnknownAuthenticationType { + return authConfig, nil + } + return AuthConfig{UnknownAuthenticationType, false, nil}, fmt.Errorf("did not find a proper configuration for auth type") +} + func getRegionFromEnvVar() (string, error) { regionEnvVar := "OCI_REGION" if region, existed := os.LookupEnv(regionEnvVar); existed { diff --git a/vendor/github.com/oracle/oci-go-sdk/common/errors.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/errors.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/common/errors.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/errors.go index 46f27c9f2..8601395e0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/errors.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/errors.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common diff --git a/vendor/github.com/oracle/oci-go-sdk/common/helpers.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/helpers.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/common/helpers.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/helpers.go index 9a564d068..8671777fd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/helpers.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/helpers.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common @@ -9,6 +9,7 @@ import ( "crypto/x509" "encoding/pem" "fmt" + "net/textproto" "reflect" "strconv" "strings" @@ -255,6 +256,16 @@ func parsePKCSPrivateKey(decryptedKey []byte) (*rsa.PrivateKey, error) { return nil, fmt.Errorf("failed to parse private key") } +// parseContentLength trims whitespace from cl and returns -1 if can't purse uint, or the value if it's no less than 0 +func parseContentLength(cl string) int64 { + cl = textproto.TrimString(cl) + n, err := strconv.ParseUint(cl, 10, 63) + if err != nil { + return -1 + } + return int64(n) +} + func generateRandUUID() (string, error) { b := make([]byte, 16) _, err := rand.Read(b) diff --git a/vendor/github.com/oracle/oci-go-sdk/common/http.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/http.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/common/http.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/http.go index 498749ee6..92859c6ac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/http.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/http.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common @@ -11,6 +11,7 @@ import ( "io/ioutil" "net/http" "net/url" + "os" "reflect" "regexp" "strconv" @@ -249,7 +250,7 @@ func removeNilFieldsInJSONWithTaggedStruct(rawJSON []byte, value reflect.Value) return json.Marshal(fixedMap) } -func addToBody(request *http.Request, value reflect.Value, field reflect.StructField) (e error) { +func addToBody(request *http.Request, value reflect.Value, field reflect.StructField, binaryBodySpecified *bool) (e error) { Debugln("Marshaling to body from field:", field.Name) if request.Body != nil { Logf("The body of the request is already set. Structure: %s will overwrite it\n", field.Name) @@ -258,6 +259,7 @@ func addToBody(request *http.Request, value reflect.Value, field reflect.StructF encoding := tag.Get("encoding") if encoding == "binary" { + *binaryBodySpecified = true return addBinaryBody(request, value, field) } @@ -279,12 +281,52 @@ func addToBody(request *http.Request, value reflect.Value, field reflect.StructF request.Header.Set(requestHeaderContentLength, strconv.FormatInt(request.ContentLength, 10)) request.Header.Set(requestHeaderContentType, "application/json") request.Body = ioutil.NopCloser(bodyBytes) + snapshot := *bodyBytes request.GetBody = func() (io.ReadCloser, error) { - return ioutil.NopCloser(bodyBytes), nil + r := snapshot + return ioutil.NopCloser(&r), nil } + return } +func checkBinaryBodyLength(request *http.Request) (contentLen int64, err error) { + if reflect.TypeOf(request.Body) == reflect.TypeOf(ioutil.NopCloser(nil)) { + ioReader := reflect.ValueOf(request.Body).Field(0).Interface().(io.Reader) + switch t := ioReader.(type) { + case *bytes.Reader: + return int64(t.Len()), nil + case *bytes.Buffer: + return int64(t.Len()), nil + case *strings.Reader: + return int64(t.Len()), nil + default: + return getNormalBinaryBodyLength(request) + } + } + if reflect.TypeOf(request.Body) == reflect.TypeOf((*os.File)(nil)) { + fi, err := (request.Body.(*os.File)).Stat() + if err != nil { + return contentLen, err + } + return fi.Size(), nil + } + return getNormalBinaryBodyLength(request) +} + +func getNormalBinaryBodyLength(request *http.Request) (contentLen int64, err error) { + dumpRequestBody := ioutil.NopCloser(bytes.NewBuffer(nil)) + if dumpRequestBody, request.Body, err = drainBody(request.Body); err != nil { + dumpRequestBody = ioutil.NopCloser(bytes.NewBuffer(nil)) + return contentLen, err + } + contentBody, err := ioutil.ReadAll(dumpRequestBody) + if err != nil { + return contentLen, err + } + return int64(len(contentBody)), nil +} + func addToQuery(request *http.Request, value reflect.Value, field reflect.StructField) (e error) { Debugln("Marshaling to query from field: ", field.Name) if request.URL == nil { @@ -401,7 +443,7 @@ func addToPath(request *http.Request, value reflect.Value, field reflect.StructF return } -func setWellKnownHeaders(request *http.Request, headerName, headerValue string) (e error) { +func setWellKnownHeaders(request *http.Request, headerName, headerValue string, contentLenSpecified *bool) (e error) { switch strings.ToLower(headerName) { case "content-length": var len int @@ -410,11 +452,12 @@ func setWellKnownHeaders(request *http.Request, headerName, headerValue string) return } request.ContentLength = int64(len) + *contentLenSpecified = true } return nil } -func addToHeader(request *http.Request, value reflect.Value, field reflect.StructField) (e error) { +func addToHeader(request *http.Request, value reflect.Value, field reflect.StructField, contentLenSpecified *bool) (e error) { Debugln("Marshaling to header from field: ", field.Name) if request.Header == nil { request.Header = http.Header{} @@ -445,7 +488,7 @@ func addToHeader(request *http.Request, value reflect.Value, field reflect.Struc return } - if e = setWellKnownHeaders(request, headerName, headerValue); e != nil { + if e = setWellKnownHeaders(request, headerName, headerValue, contentLenSpecified); e != nil { return } @@ -459,7 +502,7 @@ func addToHeader(request *http.Request, value reflect.Value, field reflect.Struc // Check if the header is required to be unique func isUniqueHeaderRequired(headerName string) bool { - return strings.EqualFold(headerName, requestHeaderContentType) + return strings.EqualFold(headerName, requestHeaderContentType) || strings.EqualFold(headerName, requestHeaderContentLength) } // Header collection is a map of string to string that gets rendered as individual headers with a given prefix @@ -526,6 +569,8 @@ func checkForValidRequestStruct(s interface{}) (*reflect.Value, error) { // nested structs are followed recursively depth-first. func structToRequestPart(request *http.Request, val reflect.Value) (err error) { typ := val.Type() + contentLenSpecified := false + binaryBodySpecified := false for i := 0; i < typ.NumField(); i++ { if err != nil { return @@ -541,7 +586,7 @@ func structToRequestPart(request *http.Request, val reflect.Value) (err error) { tag := sf.Tag.Get("contributesTo") switch tag { case "header": - err = addToHeader(request, sv, sf) + err = addToHeader(request, sv, sf, &contentLenSpecified) case "header-collection": err = addToHeaderCollection(request, sv, sf) case "path": @@ -549,7 +594,7 @@ func structToRequestPart(request *http.Request, val reflect.Value) (err error) { case "query": err = addToQuery(request, sv, sf) case "body": - err = addToBody(request, sv, sf) + err = addToBody(request, sv, sf, &binaryBodySpecified) case "": Debugln(sf.Name, " does not contain contributes tag. Skipping.") default: @@ -557,6 +602,20 @@ func structToRequestPart(request *http.Request, val reflect.Value) (err error) { } } + // if content-length is not specified but with binary body, calculate the content length according to request body + if !contentLenSpecified && binaryBodySpecified && request.Body != nil && request.Body != http.NoBody { + contentLen, err := checkBinaryBodyLength(request) + if err == nil { + request.Header.Set(requestHeaderContentLength, strconv.FormatInt(contentLen, 10)) + request.ContentLength = contentLen + } + } + + //If content length is zero, to avoid sending transfer-coding: chunked header, need to explicitly set the body to nil/Nobody. + if request.Header != nil && request.Body != nil && request.Body != http.NoBody && + parseContentLength(request.Header.Get(requestHeaderContentLength)) == 0 { + request.Body = http.NoBody + } //If headers are and the content type was not set, we default to application/json if request.Header != nil && request.Header.Get(requestHeaderContentType) == "" { request.Header.Set(requestHeaderContentType, "application/json") @@ -750,7 +809,7 @@ func analyzeValue(stringValue string, kind reflect.Kind, field reflect.StructFie return } -// Sets the field of a struct, with the appropiate value of the string +// Sets the field of a struct, with the appropriate value of the string // Only sets basic types func fromStringValue(newValue string, val *reflect.Value, field reflect.StructField) (err error) { @@ -767,11 +826,12 @@ func fromStringValue(newValue string, val *reflect.Value, field reflect.StructFi } value, valPtr, err := analyzeValue(newValue, kind, field) + valueType := val.Type() if err != nil { return } if !isPointer { - val.Set(value) + val.Set(value.Convert(valueType)) } else { val.Set(valPtr) } diff --git a/vendor/github.com/oracle/oci-go-sdk/common/http_signer.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/http_signer.go similarity index 99% rename from vendor/github.com/oracle/oci-go-sdk/common/http_signer.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/http_signer.go index 573bdff43..f678e17bb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/http_signer.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/http_signer.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common diff --git a/vendor/github.com/oracle/oci-go-sdk/common/log.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/log.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/common/log.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/log.go index 2cfc773c6..b9578fa35 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/log.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/log.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common @@ -80,7 +80,7 @@ func newSDKLogger() (defaultSDKLogger, error) { configured, isLogEnabled := os.LookupEnv("OCI_GO_SDK_DEBUG") - // If env variable not present turn logging of + // If env variable not present turn logging off if !isLogEnabled { logger.currentLoggingLevel = noLogging } else { @@ -132,7 +132,7 @@ func (l defaultSDKLogger) getLoggerForLevel(logLevel int) *log.Logger { // Output mode is switched based on environment variable "OCI_GO_SDK_LOG_OUPUT_MODE" // "file" outputs log to a specific file // "combine" outputs log to both stderr and specific file -// other unsupported value ouputs log to stderr +// other unsupported value outputs log to stderr // output file can be set via environment variable "OCI_GO_SDK_LOG_FILE" // if this environment variable is not set, a default log file will be created under project root path func logOutputModeConfig(logger defaultSDKLogger) { @@ -221,3 +221,10 @@ func IfDebug(fn func()) { fn() } } + +// IfInfo executes closure if info is enabled +func IfInfo(fn func()) { + if defaultLogger.LogLevel() >= infoLogging { + fn() + } +} diff --git a/vendor/github.com/oracle/oci-go-sdk/common/retry.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/retry.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/common/retry.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/retry.go index e5fd47dc5..6c62c2f4c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/retry.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/retry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. package common diff --git a/vendor/github.com/oracle/oci-go-sdk/common/version.go b/vendor/github.com/oracle/oci-go-sdk/v36/common/version.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/common/version.go rename to vendor/github.com/oracle/oci-go-sdk/v36/common/version.go index 29bb6987b..acb4d8d7a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/common/version.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/common/version.go @@ -11,8 +11,8 @@ import ( ) const ( - major = "24" - minor = "3" + major = "36" + minor = "2" patch = "0" tag = "" ) diff --git a/vendor/github.com/oracle/oci-go-sdk/core/add_image_shape_compatibility_entry_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_image_shape_compatibility_entry_details.go similarity index 84% rename from vendor/github.com/oracle/oci-go-sdk/core/add_image_shape_compatibility_entry_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/add_image_shape_compatibility_entry_details.go index ec07a1ab9..2039c92f7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/add_image_shape_compatibility_entry_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_image_shape_compatibility_entry_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,11 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AddImageShapeCompatibilityEntryDetails Image shape compatibility details. type AddImageShapeCompatibilityEntryDetails struct { + MemoryConstraints *ImageMemoryConstraints `mandatory:"false" json:"memoryConstraints"` + OcpuConstraints *ImageOcpuConstraints `mandatory:"false" json:"ocpuConstraints"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/add_image_shape_compatibility_entry_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_image_shape_compatibility_entry_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/add_image_shape_compatibility_entry_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/add_image_shape_compatibility_entry_request_response.go index ed7b65bb2..a03a90a32 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/add_image_shape_compatibility_entry_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_image_shape_compatibility_entry_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AddImageShapeCompatibilityEntryRequest wrapper for the AddImageShapeCompatibilityEntry operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddImageShapeCompatibilityEntry.go.html to see an example of how to use AddImageShapeCompatibilityEntryRequest. type AddImageShapeCompatibilityEntryRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/add_network_security_group_security_rules_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_network_security_group_security_rules_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/add_network_security_group_security_rules_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/add_network_security_group_security_rules_details.go index b313513dd..9ea4c73da 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/add_network_security_group_security_rules_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_network_security_group_security_rules_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AddNetworkSecurityGroupSecurityRulesDetails The representation of AddNetworkSecurityGroupSecurityRulesDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/add_network_security_group_security_rules_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_network_security_group_security_rules_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/add_network_security_group_security_rules_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/add_network_security_group_security_rules_request_response.go index 85d2ce505..69cb7a580 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/add_network_security_group_security_rules_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_network_security_group_security_rules_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AddNetworkSecurityGroupSecurityRulesRequest wrapper for the AddNetworkSecurityGroupSecurityRules operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddNetworkSecurityGroupSecurityRules.go.html to see an example of how to use AddNetworkSecurityGroupSecurityRulesRequest. type AddNetworkSecurityGroupSecurityRulesRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Request with one or more security rules to be associated with the network security group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_agent_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_details.go similarity index 53% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_instance_agent_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_details.go index 1cdf3f22d..e17ae05b0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_agent_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,21 +14,20 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// LaunchInstanceAgentConfigDetails Instance agent configuration options to choose for launching the instance -type LaunchInstanceAgentConfigDetails struct { +// AddPublicIpPoolCapacityDetails The information used to add capacity to an IP pool. +type AddPublicIpPoolCapacityDetails struct { - // Whether the agent running on the instance can gather performance metrics and monitor the instance. - // Default value is false. - IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource to which the CIDR block belongs. + ByoipRangeId *string `mandatory:"true" json:"byoipRangeId"` - // Whether the agent running on the instance can run all the available management plugins. - // Default value is false. - IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + // The CIDR block to add to the public IP pool. It could be all of the CIDR block identified in `byoipRangeId`, or a subrange. + // Example: `10.0.1.0/24` + CidrBlock *string `mandatory:"true" json:"cidrBlock"` } -func (m LaunchInstanceAgentConfigDetails) String() string { +func (m AddPublicIpPoolCapacityDetails) String() string { return common.PointerString(m) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_request_response.go new file mode 100644 index 000000000..a006e43c4 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_public_ip_pool_capacity_request_response.go @@ -0,0 +1,79 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// AddPublicIpPoolCapacityRequest wrapper for the AddPublicIpPoolCapacity operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddPublicIpPoolCapacity.go.html to see an example of how to use AddPublicIpPoolCapacityRequest. +type AddPublicIpPoolCapacityRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"true" contributesTo:"path" name:"publicIpPoolId"` + + // Byoip Range prefix and a cidr from it + AddPublicIpPoolCapacityDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request AddPublicIpPoolCapacityRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request AddPublicIpPoolCapacityRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request AddPublicIpPoolCapacityRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// AddPublicIpPoolCapacityResponse wrapper for the AddPublicIpPoolCapacity operation +type AddPublicIpPoolCapacityResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The PublicIpPool instance + PublicIpPool `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response AddPublicIpPoolCapacityResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response AddPublicIpPoolCapacityResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/add_security_rule_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_security_rule_details.go similarity index 84% rename from vendor/github.com/oracle/oci-go-sdk/core/add_security_rule_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/add_security_rule_details.go index 80fa9d30a..4baa6ddac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/add_security_rule_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_security_rule_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,14 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AddSecurityRuleDetails A rule for allowing inbound (INGRESS) or outbound (EGRESS) IP packets. type AddSecurityRuleDetails struct { - // Direction of the security rule. Set to `EGRESS` for rules to allow outbound IP packets, or `INGRESS` for rules to allow inbound IP packets. + // Direction of the security rule. Set to `EGRESS` for rules to allow outbound IP packets, + // or `INGRESS` for rules to allow inbound IP packets. Direction AddSecurityRuleDetailsDirectionEnum `mandatory:"true" json:"direction"` // The transport protocol. Specify either `all` or an IPv4 protocol number as @@ -37,7 +38,7 @@ type AddSecurityRuleDetails struct { // Allowed values: // * An IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security rule for traffic destined for a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -56,15 +57,6 @@ type AddSecurityRuleDetails struct { // NetworkSecurityGroup. DestinationType AddSecurityRuleDetailsDestinationTypeEnum `mandatory:"false" json:"destinationType,omitempty"` - // Optional and valid only for ICMP and ICMPv6. Use to specify a particular ICMP type and code - // as defined in: - // - ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) - // - ICMPv6 Parameters (https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml) - // If you specify ICMP or ICMPv6 as the protocol but omit this object, then all ICMP types and - // codes are allowed. If you do provide this object, the type is required and the code is optional. - // To enable MTU negotiation for ingress internet traffic via IPv4, make sure to allow type 3 ("Destination - // Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). If you need to specify - // multiple codes for a single type, create a separate security list rule for each. IcmpOptions *IcmpOptions `mandatory:"false" json:"icmpOptions"` // A stateless rule allows traffic in one direction. Remember to add a corresponding @@ -79,7 +71,7 @@ type AddSecurityRuleDetails struct { // Allowed values: // * An IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security rule for traffic coming from a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -97,12 +89,8 @@ type AddSecurityRuleDetails struct { // NetworkSecurityGroup. SourceType AddSecurityRuleDetailsSourceTypeEnum `mandatory:"false" json:"sourceType,omitempty"` - // Optional and valid only for TCP. Use to specify particular destination ports for TCP rules. - // If you specify TCP as the protocol but omit this object, then all destination ports are allowed. TcpOptions *TcpOptions `mandatory:"false" json:"tcpOptions"` - // Optional and valid only for UDP. Use to specify particular destination ports for UDP rules. - // If you specify UDP as the protocol but omit this object, then all destination ports are allowed. UdpOptions *UdpOptions `mandatory:"false" json:"udpOptions"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_details.go new file mode 100644 index 000000000..47e6aa0fc --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_details.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// AddVcnCidrDetails Details for adding a CIDR block to a VCN. +type AddVcnCidrDetails struct { + + // The CIDR block to add. + CidrBlock *string `mandatory:"true" json:"cidrBlock"` +} + +func (m AddVcnCidrDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_request_response.go new file mode 100644 index 000000000..a26798519 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/add_vcn_cidr_request_response.go @@ -0,0 +1,82 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// AddVcnCidrRequest wrapper for the AddVcnCidr operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddVcnCidr.go.html to see an example of how to use AddVcnCidrRequest. +type AddVcnCidrRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. + VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` + + // Details object for deleting a VCN CIDR. + AddVcnCidrDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request AddVcnCidrRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request AddVcnCidrRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request AddVcnCidrRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// AddVcnCidrResponse wrapper for the AddVcnCidr operation +type AddVcnCidrResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` +} + +func (response AddVcnCidrResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response AddVcnCidrResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/added_network_security_group_security_rules.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/added_network_security_group_security_rules.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/added_network_security_group_security_rules.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/added_network_security_group_security_rules.go index 241ffad4d..8a3c380b8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/added_network_security_group_security_rules.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/added_network_security_group_security_rules.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AddedNetworkSecurityGroupSecurityRules The representation of AddedNetworkSecurityGroupSecurityRules diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/advertise_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/advertise_byoip_range_request_response.go new file mode 100644 index 000000000..b5d264f21 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/advertise_byoip_range_request_response.go @@ -0,0 +1,63 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// AdvertiseByoipRangeRequest wrapper for the AdvertiseByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AdvertiseByoipRange.go.html to see an example of how to use AdvertiseByoipRangeRequest. +type AdvertiseByoipRangeRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request AdvertiseByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request AdvertiseByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request AdvertiseByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// AdvertiseByoipRangeResponse wrapper for the AdvertiseByoipRange operation +type AdvertiseByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response AdvertiseByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response AdvertiseByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_launch_instance_platform_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_launch_instance_platform_config.go new file mode 100644 index 000000000..dc60063b6 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_launch_instance_platform_config.go @@ -0,0 +1,71 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "encoding/json" + "github.com/oracle/oci-go-sdk/v36/common" +) + +// AmdMilanBmLaunchInstancePlatformConfig The platform configuration used when launching a bare metal instance specific to the AMD Milan platform. +type AmdMilanBmLaunchInstancePlatformConfig struct { + + // The number of NUMA nodes per socket. + NumaNodesPerSocket AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum `mandatory:"false" json:"numaNodesPerSocket,omitempty"` +} + +func (m AmdMilanBmLaunchInstancePlatformConfig) String() string { + return common.PointerString(m) +} + +// MarshalJSON marshals to json representation +func (m AmdMilanBmLaunchInstancePlatformConfig) MarshalJSON() (buff []byte, e error) { + type MarshalTypeAmdMilanBmLaunchInstancePlatformConfig AmdMilanBmLaunchInstancePlatformConfig + s := struct { + DiscriminatorParam string `json:"type"` + MarshalTypeAmdMilanBmLaunchInstancePlatformConfig + }{ + "AMD_MILAN_BM", + (MarshalTypeAmdMilanBmLaunchInstancePlatformConfig)(m), + } + + return json.Marshal(&s) +} + +// AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum Enum with underlying type: string +type AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum string + +// Set of constants representing the allowable values for AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum +const ( + AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps0 AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS0" + AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps1 AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS1" + AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps2 AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS2" + AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps4 AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS4" +) + +var mappingAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocket = map[string]AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum{ + "NPS0": AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps0, + "NPS1": AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps1, + "NPS2": AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps2, + "NPS4": AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps4, +} + +// GetAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnumValues Enumerates the set of values for AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum +func GetAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnumValues() []AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum { + values := make([]AmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum, 0) + for _, v := range mappingAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocket { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_platform_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_platform_config.go new file mode 100644 index 000000000..cb3681846 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/amd_milan_bm_platform_config.go @@ -0,0 +1,71 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "encoding/json" + "github.com/oracle/oci-go-sdk/v36/common" +) + +// AmdMilanBmPlatformConfig The platform configuration of a bare metal instance specific to the AMD Milan platform. +type AmdMilanBmPlatformConfig struct { + + // The number of NUMA nodes per socket. + NumaNodesPerSocket AmdMilanBmPlatformConfigNumaNodesPerSocketEnum `mandatory:"false" json:"numaNodesPerSocket,omitempty"` +} + +func (m AmdMilanBmPlatformConfig) String() string { + return common.PointerString(m) +} + +// MarshalJSON marshals to json representation +func (m AmdMilanBmPlatformConfig) MarshalJSON() (buff []byte, e error) { + type MarshalTypeAmdMilanBmPlatformConfig AmdMilanBmPlatformConfig + s := struct { + DiscriminatorParam string `json:"type"` + MarshalTypeAmdMilanBmPlatformConfig + }{ + "AMD_MILAN_BM", + (MarshalTypeAmdMilanBmPlatformConfig)(m), + } + + return json.Marshal(&s) +} + +// AmdMilanBmPlatformConfigNumaNodesPerSocketEnum Enum with underlying type: string +type AmdMilanBmPlatformConfigNumaNodesPerSocketEnum string + +// Set of constants representing the allowable values for AmdMilanBmPlatformConfigNumaNodesPerSocketEnum +const ( + AmdMilanBmPlatformConfigNumaNodesPerSocketNps0 AmdMilanBmPlatformConfigNumaNodesPerSocketEnum = "NPS0" + AmdMilanBmPlatformConfigNumaNodesPerSocketNps1 AmdMilanBmPlatformConfigNumaNodesPerSocketEnum = "NPS1" + AmdMilanBmPlatformConfigNumaNodesPerSocketNps2 AmdMilanBmPlatformConfigNumaNodesPerSocketEnum = "NPS2" + AmdMilanBmPlatformConfigNumaNodesPerSocketNps4 AmdMilanBmPlatformConfigNumaNodesPerSocketEnum = "NPS4" +) + +var mappingAmdMilanBmPlatformConfigNumaNodesPerSocket = map[string]AmdMilanBmPlatformConfigNumaNodesPerSocketEnum{ + "NPS0": AmdMilanBmPlatformConfigNumaNodesPerSocketNps0, + "NPS1": AmdMilanBmPlatformConfigNumaNodesPerSocketNps1, + "NPS2": AmdMilanBmPlatformConfigNumaNodesPerSocketNps2, + "NPS4": AmdMilanBmPlatformConfigNumaNodesPerSocketNps4, +} + +// GetAmdMilanBmPlatformConfigNumaNodesPerSocketEnumValues Enumerates the set of values for AmdMilanBmPlatformConfigNumaNodesPerSocketEnum +func GetAmdMilanBmPlatformConfigNumaNodesPerSocketEnumValues() []AmdMilanBmPlatformConfigNumaNodesPerSocketEnum { + values := make([]AmdMilanBmPlatformConfigNumaNodesPerSocketEnum, 0) + for _, v := range mappingAmdMilanBmPlatformConfigNumaNodesPerSocket { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing.go index 1bc03f8bb..f261736eb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogListing Listing details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version.go index 5c284799a..07de8a901 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogListingResourceVersion Listing Resource Version diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version_agreements.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version_agreements.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version_agreements.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version_agreements.go index 84f5681d8..3ec156cfb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version_agreements.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version_agreements.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogListingResourceVersionAgreements Agreements for a listing resource version. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version_summary.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version_summary.go index 4aaff3089..86b5932ff 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_resource_version_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_resource_version_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogListingResourceVersionSummary Listing Resource Version summary diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_summary.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_summary.go index be4c7bc47..6002eed8b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_listing_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_listing_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogListingSummary A summary of a listing. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_subscription.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_subscription.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_subscription.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_subscription.go index f01e12149..85d35f668 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_subscription.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_subscription.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogSubscription a subscription for a listing resource version. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_subscription_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_subscription_summary.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/app_catalog_subscription_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_subscription_summary.go index c7d5b3bd7..3370c7551 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/app_catalog_subscription_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/app_catalog_subscription_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AppCatalogSubscriptionSummary a subscription summary for a listing resource version. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_boot_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_boot_volume_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_boot_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_boot_volume_details.go index 02b6786c9..9f893643e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_boot_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_boot_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachBootVolumeDetails The representation of AttachBootVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_boot_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_boot_volume_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_boot_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_boot_volume_request_response.go index 1975b6e13..edf56d61d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_boot_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_boot_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AttachBootVolumeRequest wrapper for the AttachBootVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachBootVolume.go.html to see an example of how to use AttachBootVolumeRequest. type AttachBootVolumeRequest struct { // Attach boot volume request diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_emulated_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_emulated_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_emulated_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_emulated_volume_details.go index 3c1d2f497..cd987462e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_emulated_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_emulated_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachEmulatedVolumeDetails The representation of AttachEmulatedVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_i_scsi_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_i_scsi_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_i_scsi_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_i_scsi_volume_details.go index 9240ff35f..bee354d7f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_i_scsi_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_i_scsi_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachIScsiVolumeDetails The representation of AttachIScsiVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_details.go new file mode 100644 index 000000000..32a91bee9 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_details.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// AttachInstancePoolInstanceDetails Contains an instance and availability domain information for attaching an instance to the pool. +type AttachInstancePoolInstanceDetails struct { + + // the instance ocid to attach. + InstanceId *string `mandatory:"true" json:"instanceId"` +} + +func (m AttachInstancePoolInstanceDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_request_response.go new file mode 100644 index 000000000..c9905bba3 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_instance_pool_instance_request_response.go @@ -0,0 +1,86 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// AttachInstancePoolInstanceRequest wrapper for the AttachInstancePoolInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachInstancePoolInstance.go.html to see an example of how to use AttachInstancePoolInstanceRequest. +type AttachInstancePoolInstanceRequest struct { + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. + InstancePoolId *string `mandatory:"true" contributesTo:"path" name:"instancePoolId"` + + // Attach an instance to a pool + AttachInstancePoolInstanceDetails `contributesTo:"body"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Unique Oracle-assigned identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request AttachInstancePoolInstanceRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request AttachInstancePoolInstanceRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request AttachInstancePoolInstanceRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// AttachInstancePoolInstanceResponse wrapper for the AttachInstancePoolInstance operation +type AttachInstancePoolInstanceResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The InstancePoolInstance instance + InstancePoolInstance `presentIn:"body"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` + + // Location of the resource. + Location *string `presentIn:"header" name:"location"` +} + +func (response AttachInstancePoolInstanceResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response AttachInstancePoolInstanceResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_load_balancer_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_load_balancer_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_load_balancer_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_load_balancer_details.go index 1498e162f..25ecba384 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_load_balancer_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_load_balancer_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachLoadBalancerDetails Represents a load balancer that is to be attached to an instance pool. @@ -29,7 +29,9 @@ type AttachLoadBalancerDetails struct { // The port value to use when creating the backend set. Port *int `mandatory:"true" json:"port"` - // Indicates which VNIC on each instance in the pool should be used to associate with the load balancer. Possible values are "PrimaryVnic" or the displayName of one of the secondary VNICs on the instance configuration that is associated with the instance pool. + // Indicates which VNIC on each instance in the pool should be used to associate with the load balancer. + // Possible values are "PrimaryVnic" or the displayName of one of the secondary VNICs on the instance configuration + // that is associated with the instance pool. VnicSelection *string `mandatory:"true" json:"vnicSelection"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_load_balancer_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_load_balancer_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_load_balancer_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_load_balancer_request_response.go index 11cafe103..8f5211505 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_load_balancer_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_load_balancer_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AttachLoadBalancerRequest wrapper for the AttachLoadBalancer operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachLoadBalancer.go.html to see an example of how to use AttachLoadBalancerRequest. type AttachLoadBalancerRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -26,7 +30,7 @@ type AttachLoadBalancerRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_paravirtualized_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_paravirtualized_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_paravirtualized_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_paravirtualized_volume_details.go index 6eb64095e..47587e833 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_paravirtualized_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_paravirtualized_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachParavirtualizedVolumeDetails The representation of AttachParavirtualizedVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_service_determined_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_service_determined_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_service_determined_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_service_determined_volume_details.go index 71d9c8589..4f6f504b3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_service_determined_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_service_determined_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachServiceDeterminedVolumeDetails The representation of AttachServiceDeterminedVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_service_id_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_service_id_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_service_id_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_service_id_request_response.go index 67a968700..f6dd2724f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_service_id_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_service_id_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AttachServiceIdRequest wrapper for the AttachServiceId operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachServiceId.go.html to see an example of how to use AttachServiceIdRequest. type AttachServiceIdRequest struct { - // The service gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceGatewayId *string `mandatory:"true" contributesTo:"path" name:"serviceGatewayId"` // ServiceId of Service to be attached to a service gateway. AttachServiceDetails ServiceIdRequestDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_vnic_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_vnic_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_vnic_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_vnic_details.go index 60e3cc721..fa74147c5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_vnic_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_vnic_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,11 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachVnicDetails The representation of AttachVnicDetails type AttachVnicDetails struct { - - // Details for creating a new VNIC. CreateVnicDetails *CreateVnicDetails `mandatory:"true" json:"createVnicDetails"` // The OCID of the instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_vnic_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_vnic_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_vnic_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_vnic_request_response.go index 5d0e2fcb9..caac4da81 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_vnic_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_vnic_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AttachVnicRequest wrapper for the AttachVnic operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachVnic.go.html to see an example of how to use AttachVnicRequest. type AttachVnicRequest struct { // Attach VNIC details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_volume_details.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_volume_details.go index 430ff442d..0e83e55e9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // AttachVolumeDetails The representation of AttachVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/attach_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_volume_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/attach_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/attach_volume_request_response.go index 2a86ae3e5..1f8eb5461 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/attach_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/attach_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // AttachVolumeRequest wrapper for the AttachVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachVolume.go.html to see an example of how to use AttachVolumeRequest. type AttachVolumeRequest struct { // Attach volume request diff --git a/vendor/github.com/oracle/oci-go-sdk/core/bgp_session_info.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/bgp_session_info.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/bgp_session_info.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/bgp_session_info.go index ca5bc055c..699163cf2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/bgp_session_info.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/bgp_session_info.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BgpSessionInfo Information for establishing a BGP session for the IPSec tunnel. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boolean_image_capability_schema_descriptor.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boolean_image_capability_schema_descriptor.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/boolean_image_capability_schema_descriptor.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boolean_image_capability_schema_descriptor.go index 99d7475c4..f2ea9577f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boolean_image_capability_schema_descriptor.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boolean_image_capability_schema_descriptor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BooleanImageCapabilitySchemaDescriptor Boolean type ImageCapabilitySchemaDescriptor diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume.go index 1b0f20835..5ff508f3a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolume A detachable boot volume device that contains the image used to boot a Compute instance. For more information, see @@ -69,7 +69,8 @@ type BootVolume struct { // The image OCID used to create the boot volume. ImageId *string `mandatory:"false" json:"imageId"` - // Specifies whether the boot volume's data has finished copying from the source boot volume or boot volume backup. + // Specifies whether the boot volume's data has finished copying + // from the source boot volume or boot volume backup. IsHydrated *bool `mandatory:"false" json:"isHydrated"` // The number of volume performance units (VPUs) that will be applied to this boot volume per GB, @@ -83,8 +84,6 @@ type BootVolume struct { // The size of the boot volume in GBs. SizeInGBs *int64 `mandatory:"false" json:"sizeInGBs"` - // The boot volume source, either an existing boot volume in the same availability domain or a boot volume backup. - // If null, this means that the boot volume was created from an image. SourceDetails BootVolumeSourceDetails `mandatory:"false" json:"sourceDetails"` // The OCID of the source volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_attachment.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_attachment.go index 865ab6155..7613f04c8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolumeAttachment Represents an attachment between a boot volume and an instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_backup.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_backup.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume_backup.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_backup.go index 0297e6171..01ff8612d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_backup.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_backup.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolumeBackup A point-in-time copy of a boot volume that can then be used to create diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_kms_key.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_kms_key.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume_kms_key.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_kms_key.go index af7755b6b..a3a815bc1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_kms_key.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_kms_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolumeKmsKey The Key Management master encryption key associated with this volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_details.go index a7fcb2967..40767bd95 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolumeSourceDetails The representation of BootVolumeSourceDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_from_boot_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_from_boot_volume_backup_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_from_boot_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_from_boot_volume_backup_details.go index eeeb88490..2de07377e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_from_boot_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_from_boot_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolumeSourceFromBootVolumeBackupDetails Specifies the boot volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_from_boot_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_from_boot_volume_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_from_boot_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_from_boot_volume_details.go index 13229cf48..3167c8b2e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/boot_volume_source_from_boot_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/boot_volume_source_from_boot_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BootVolumeSourceFromBootVolumeDetails Specifies the source boot volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/bulk_add_virtual_circuit_public_prefixes_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_add_virtual_circuit_public_prefixes_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/bulk_add_virtual_circuit_public_prefixes_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_add_virtual_circuit_public_prefixes_details.go index 4645307cb..d223b2cfb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/bulk_add_virtual_circuit_public_prefixes_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_add_virtual_circuit_public_prefixes_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BulkAddVirtualCircuitPublicPrefixesDetails The representation of BulkAddVirtualCircuitPublicPrefixesDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/bulk_add_virtual_circuit_public_prefixes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_add_virtual_circuit_public_prefixes_request_response.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/bulk_add_virtual_circuit_public_prefixes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_add_virtual_circuit_public_prefixes_request_response.go index e06005e0b..2f18c5865 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/bulk_add_virtual_circuit_public_prefixes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_add_virtual_circuit_public_prefixes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // BulkAddVirtualCircuitPublicPrefixesRequest wrapper for the BulkAddVirtualCircuitPublicPrefixes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/BulkAddVirtualCircuitPublicPrefixes.go.html to see an example of how to use BulkAddVirtualCircuitPublicPrefixesRequest. type BulkAddVirtualCircuitPublicPrefixesRequest struct { // The OCID of the virtual circuit. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/bulk_delete_virtual_circuit_public_prefixes_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_delete_virtual_circuit_public_prefixes_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/bulk_delete_virtual_circuit_public_prefixes_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_delete_virtual_circuit_public_prefixes_details.go index 91798694a..a0c11d13d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/bulk_delete_virtual_circuit_public_prefixes_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_delete_virtual_circuit_public_prefixes_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // BulkDeleteVirtualCircuitPublicPrefixesDetails The representation of BulkDeleteVirtualCircuitPublicPrefixesDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go index c8746a48f..a993ab8f6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/bulk_delete_virtual_circuit_public_prefixes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // BulkDeleteVirtualCircuitPublicPrefixesRequest wrapper for the BulkDeleteVirtualCircuitPublicPrefixes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/BulkDeleteVirtualCircuitPublicPrefixes.go.html to see an example of how to use BulkDeleteVirtualCircuitPublicPrefixesRequest. type BulkDeleteVirtualCircuitPublicPrefixesRequest struct { // The OCID of the virtual circuit. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_collection.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_collection.go new file mode 100644 index 000000000..81b5463b2 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_collection.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ByoipAllocatedRangeCollection Results of a `ListByoipAllocatedRanges` operation. +type ByoipAllocatedRangeCollection struct { + + // A list of subranges of a BYOIP CIDR block allocated to an IP pool. + Items []ByoipAllocatedRangeSummary `mandatory:"true" json:"items"` +} + +func (m ByoipAllocatedRangeCollection) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_summary.go new file mode 100644 index 000000000..f3d0576db --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_allocated_range_summary.go @@ -0,0 +1,32 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ByoipAllocatedRangeSummary A summary of CIDR block subranges that are currently allocated to an IP pool. +type ByoipAllocatedRangeSummary struct { + + // The BYOIP CIDR block range or subrange allocated to an IP pool. This could be all or part of a BYOIP CIDR block. + CidrBlock *string `mandatory:"false" json:"cidrBlock"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the IP pool containing the CIDR block. + PublicIpPoolId *string `mandatory:"false" json:"publicIpPoolId"` +} + +func (m ByoipAllocatedRangeSummary) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range.go new file mode 100644 index 000000000..7edfe0cd2 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range.go @@ -0,0 +1,141 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ByoipRange Oracle offers the ability to Bring Your Own IP (BYOIP), importing public IP addresses that you currently own to Oracle Cloud Infrastructure. A `ByoipRange` resource is a record of the imported address block (a BYOIP CIDR block) and also some associated metadata. +// The process used to Bring Your Own IP (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/BYOIP.htm) is explained in the documentation. +type ByoipRange struct { + + // The public IPv4 CIDR block being imported from on-premises to the Oracle cloud. + CidrBlock *string `mandatory:"true" json:"cidrBlock"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the BYOIP CIDR block. + CompartmentId *string `mandatory:"true" json:"compartmentId"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource. + Id *string `mandatory:"true" json:"id"` + + // The `ByoipRange` resource's current state. + LifecycleState ByoipRangeLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` + + // The date and time the `ByoipRange` resource was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` + + // The validation token is an internally-generated ASCII string used in the validation process. See Importing a CIDR block (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/BYOIP.htm#import_cidr) for details. + ValidationToken *string `mandatory:"true" json:"validationToken"` + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. Avoid + // entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` + + // The `ByoipRange` resource's current status. + LifecycleDetails ByoipRangeLifecycleDetailsEnum `mandatory:"false" json:"lifecycleDetails,omitempty"` + + // The date and time the `ByoipRange` resource was validated, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeValidated *common.SDKTime `mandatory:"false" json:"timeValidated"` + + // The date and time the `ByoipRange` resource was advertised to the internet by BGP, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeAdvertised *common.SDKTime `mandatory:"false" json:"timeAdvertised"` + + // The date and time the `ByoipRange` resource was withdrawn from advertisement by BGP to the internet, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeWithdrawn *common.SDKTime `mandatory:"false" json:"timeWithdrawn"` +} + +func (m ByoipRange) String() string { + return common.PointerString(m) +} + +// ByoipRangeLifecycleDetailsEnum Enum with underlying type: string +type ByoipRangeLifecycleDetailsEnum string + +// Set of constants representing the allowable values for ByoipRangeLifecycleDetailsEnum +const ( + ByoipRangeLifecycleDetailsCreating ByoipRangeLifecycleDetailsEnum = "CREATING" + ByoipRangeLifecycleDetailsValidating ByoipRangeLifecycleDetailsEnum = "VALIDATING" + ByoipRangeLifecycleDetailsProvisioned ByoipRangeLifecycleDetailsEnum = "PROVISIONED" + ByoipRangeLifecycleDetailsActive ByoipRangeLifecycleDetailsEnum = "ACTIVE" + ByoipRangeLifecycleDetailsFailed ByoipRangeLifecycleDetailsEnum = "FAILED" + ByoipRangeLifecycleDetailsDeleting ByoipRangeLifecycleDetailsEnum = "DELETING" + ByoipRangeLifecycleDetailsDeleted ByoipRangeLifecycleDetailsEnum = "DELETED" + ByoipRangeLifecycleDetailsAdvertising ByoipRangeLifecycleDetailsEnum = "ADVERTISING" + ByoipRangeLifecycleDetailsWithdrawing ByoipRangeLifecycleDetailsEnum = "WITHDRAWING" +) + +var mappingByoipRangeLifecycleDetails = map[string]ByoipRangeLifecycleDetailsEnum{ + "CREATING": ByoipRangeLifecycleDetailsCreating, + "VALIDATING": ByoipRangeLifecycleDetailsValidating, + "PROVISIONED": ByoipRangeLifecycleDetailsProvisioned, + "ACTIVE": ByoipRangeLifecycleDetailsActive, + "FAILED": ByoipRangeLifecycleDetailsFailed, + "DELETING": ByoipRangeLifecycleDetailsDeleting, + "DELETED": ByoipRangeLifecycleDetailsDeleted, + "ADVERTISING": ByoipRangeLifecycleDetailsAdvertising, + "WITHDRAWING": ByoipRangeLifecycleDetailsWithdrawing, +} + +// GetByoipRangeLifecycleDetailsEnumValues Enumerates the set of values for ByoipRangeLifecycleDetailsEnum +func GetByoipRangeLifecycleDetailsEnumValues() []ByoipRangeLifecycleDetailsEnum { + values := make([]ByoipRangeLifecycleDetailsEnum, 0) + for _, v := range mappingByoipRangeLifecycleDetails { + values = append(values, v) + } + return values +} + +// ByoipRangeLifecycleStateEnum Enum with underlying type: string +type ByoipRangeLifecycleStateEnum string + +// Set of constants representing the allowable values for ByoipRangeLifecycleStateEnum +const ( + ByoipRangeLifecycleStateInactive ByoipRangeLifecycleStateEnum = "INACTIVE" + ByoipRangeLifecycleStateUpdating ByoipRangeLifecycleStateEnum = "UPDATING" + ByoipRangeLifecycleStateActive ByoipRangeLifecycleStateEnum = "ACTIVE" + ByoipRangeLifecycleStateDeleting ByoipRangeLifecycleStateEnum = "DELETING" + ByoipRangeLifecycleStateDeleted ByoipRangeLifecycleStateEnum = "DELETED" +) + +var mappingByoipRangeLifecycleState = map[string]ByoipRangeLifecycleStateEnum{ + "INACTIVE": ByoipRangeLifecycleStateInactive, + "UPDATING": ByoipRangeLifecycleStateUpdating, + "ACTIVE": ByoipRangeLifecycleStateActive, + "DELETING": ByoipRangeLifecycleStateDeleting, + "DELETED": ByoipRangeLifecycleStateDeleted, +} + +// GetByoipRangeLifecycleStateEnumValues Enumerates the set of values for ByoipRangeLifecycleStateEnum +func GetByoipRangeLifecycleStateEnumValues() []ByoipRangeLifecycleStateEnum { + values := make([]ByoipRangeLifecycleStateEnum, 0) + for _, v := range mappingByoipRangeLifecycleState { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_collection.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_collection.go new file mode 100644 index 000000000..4b939d7e3 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_collection.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ByoipRangeCollection The results returned by a `ListByoipRange` operation. +type ByoipRangeCollection struct { + + // A list of `ByoipRange` resource summaries. + Items []ByoipRangeSummary `mandatory:"true" json:"items"` +} + +func (m ByoipRangeCollection) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_summary.go new file mode 100644 index 000000000..2253180a7 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/byoip_range_summary.go @@ -0,0 +1,59 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ByoipRangeSummary Information about a `ByoipRange` resource. +type ByoipRangeSummary struct { + + // The public IPv4 address range you are importing to the Oracle cloud. + CidrBlock *string `mandatory:"false" json:"cidrBlock"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the `ByoipRange` resource. + CompartmentId *string `mandatory:"false" json:"compartmentId"` + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. Avoid + // entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource. + Id *string `mandatory:"false" json:"id"` + + // The `ByoipRange` resource's current state. + LifecycleState ByoipRangeLifecycleStateEnum `mandatory:"false" json:"lifecycleState,omitempty"` + + // The Byoip Range's current lifeCycle substate. + LifecycleDetails ByoipRangeLifecycleDetailsEnum `mandatory:"false" json:"lifecycleDetails,omitempty"` + + // The date and time the `ByoipRange` resource was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` +} + +func (m ByoipRangeSummary) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/capture_console_history_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/capture_console_history_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/capture_console_history_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/capture_console_history_details.go index 6254476f7..eaee26821 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/capture_console_history_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/capture_console_history_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CaptureConsoleHistoryDetails The representation of CaptureConsoleHistoryDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/capture_console_history_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/capture_console_history_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/capture_console_history_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/capture_console_history_request_response.go index a09bc6a8b..181fbc7e8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/capture_console_history_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/capture_console_history_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CaptureConsoleHistoryRequest wrapper for the CaptureConsoleHistory operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CaptureConsoleHistory.go.html to see an example of how to use CaptureConsoleHistoryRequest. type CaptureConsoleHistoryRequest struct { // Console history details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_backup_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_backup_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_backup_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_backup_compartment_details.go index 3186b0cf2..384a732f2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_backup_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_backup_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeBootVolumeBackupCompartmentDetails Contains the details for the compartment to move the boot volume backup to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_backup_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_backup_compartment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_backup_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_backup_compartment_request_response.go index 2abdaf045..80d5b9ade 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_backup_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_backup_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeBootVolumeBackupCompartmentRequest wrapper for the ChangeBootVolumeBackupCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeBootVolumeBackupCompartment.go.html to see an example of how to use ChangeBootVolumeBackupCompartmentRequest. type ChangeBootVolumeBackupCompartmentRequest struct { // The OCID of the boot volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_compartment_details.go index bf905c72f..1e87de3e4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeBootVolumeCompartmentDetails Contains the details for the compartment to move the boot volume to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_compartment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_compartment_request_response.go index 2b93a899d..ea3e577c8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_boot_volume_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_boot_volume_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeBootVolumeCompartmentRequest wrapper for the ChangeBootVolumeCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeBootVolumeCompartment.go.html to see an example of how to use ChangeBootVolumeCompartmentRequest. type ChangeBootVolumeCompartmentRequest struct { // The OCID of the boot volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_details.go new file mode 100644 index 000000000..e519ce06b --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_details.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ChangeByoipRangeCompartmentDetails The configuration details for the move operation. +type ChangeByoipRangeCompartmentDetails struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the destination compartment for the BYOIP CIDR block move. + CompartmentId *string `mandatory:"true" json:"compartmentId"` +} + +func (m ChangeByoipRangeCompartmentDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_request_response.go new file mode 100644 index 000000000..94e83b892 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_byoip_range_compartment_request_response.go @@ -0,0 +1,73 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ChangeByoipRangeCompartmentRequest wrapper for the ChangeByoipRangeCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeByoipRangeCompartment.go.html to see an example of how to use ChangeByoipRangeCompartmentRequest. +type ChangeByoipRangeCompartmentRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Request to change the compartment of a BYOIP CIDR block. + ChangeByoipRangeCompartmentDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ChangeByoipRangeCompartmentRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ChangeByoipRangeCompartmentRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ChangeByoipRangeCompartmentRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ChangeByoipRangeCompartmentResponse wrapper for the ChangeByoipRangeCompartment operation +type ChangeByoipRangeCompartmentResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response ChangeByoipRangeCompartmentResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ChangeByoipRangeCompartmentResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cluster_network_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cluster_network_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cluster_network_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cluster_network_compartment_details.go index 0e8f181ac..88a6d69b5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cluster_network_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cluster_network_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeClusterNetworkCompartmentDetails The configuration details for the move operation. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cluster_network_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cluster_network_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cluster_network_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cluster_network_compartment_request_response.go index 12e5a2a44..e16e704b6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cluster_network_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cluster_network_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeClusterNetworkCompartmentRequest wrapper for the ChangeClusterNetworkCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeClusterNetworkCompartment.go.html to see an example of how to use ChangeClusterNetworkCompartmentRequest. type ChangeClusterNetworkCompartmentRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster network. @@ -19,7 +23,7 @@ type ChangeClusterNetworkCompartmentRequest struct { ChangeClusterNetworkCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_compute_image_capability_schema_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_compute_image_capability_schema_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_compute_image_capability_schema_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_compute_image_capability_schema_compartment_details.go index cd5aa44fd..d3085a822 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_compute_image_capability_schema_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_compute_image_capability_schema_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeComputeImageCapabilitySchemaCompartmentDetails The configuration details for the move operation. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_compute_image_capability_schema_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_compute_image_capability_schema_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_compute_image_capability_schema_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_compute_image_capability_schema_compartment_request_response.go index 7c5b317c1..543b6ab33 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_compute_image_capability_schema_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_compute_image_capability_schema_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeComputeImageCapabilitySchemaCompartmentRequest wrapper for the ChangeComputeImageCapabilitySchemaCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeComputeImageCapabilitySchemaCompartment.go.html to see an example of how to use ChangeComputeImageCapabilitySchemaCompartmentRequest. type ChangeComputeImageCapabilitySchemaCompartmentRequest struct { // The id of the compute image capability schema or the image ocid @@ -19,7 +23,7 @@ type ChangeComputeImageCapabilitySchemaCompartmentRequest struct { ChangeComputeImageCapabilitySchemaCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cpe_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cpe_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cpe_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cpe_compartment_details.go index 1cf2bfed8..0fe2a63b1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cpe_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cpe_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeCpeCompartmentDetails The configuration details for the move operation. type ChangeCpeCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // CPE object to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cpe_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cpe_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cpe_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cpe_compartment_request_response.go index 5ec17cb67..f2f831c20 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cpe_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cpe_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeCpeCompartmentRequest wrapper for the ChangeCpeCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeCpeCompartment.go.html to see an example of how to use ChangeCpeCompartmentRequest. type ChangeCpeCompartmentRequest struct { // The OCID of the CPE. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_compartment_details.go index 6a1998fd5..fe3bb9767 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeCrossConnectCompartmentDetails The configuration details for the move operation. type ChangeCrossConnectCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // cross-connect to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_compartment_request_response.go index de34e90f9..1fad39df2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeCrossConnectCompartmentRequest wrapper for the ChangeCrossConnectCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeCrossConnectCompartment.go.html to see an example of how to use ChangeCrossConnectCompartmentRequest. type ChangeCrossConnectCompartmentRequest struct { // The OCID of the cross-connect. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_group_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_group_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_group_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_group_compartment_details.go index 89745740d..d53191893 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_group_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_group_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeCrossConnectGroupCompartmentDetails The configuration details for the move operation. type ChangeCrossConnectGroupCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // cross-connect group to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_group_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_group_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_group_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_group_compartment_request_response.go index fe46b997f..553319485 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_cross_connect_group_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_cross_connect_group_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeCrossConnectGroupCompartmentRequest wrapper for the ChangeCrossConnectGroupCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeCrossConnectGroupCompartment.go.html to see an example of how to use ChangeCrossConnectGroupCompartmentRequest. type ChangeCrossConnectGroupCompartmentRequest struct { // The OCID of the cross-connect group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_dedicated_vm_host_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dedicated_vm_host_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_dedicated_vm_host_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_dedicated_vm_host_compartment_details.go index 654a29af9..371c4d41e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_dedicated_vm_host_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dedicated_vm_host_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeDedicatedVmHostCompartmentDetails Specifies the compartment to move the dedicated virtual machine host to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_dedicated_vm_host_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dedicated_vm_host_compartment_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_dedicated_vm_host_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_dedicated_vm_host_compartment_request_response.go index f320bd9b4..5f13d9aea 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_dedicated_vm_host_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dedicated_vm_host_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeDedicatedVmHostCompartmentRequest wrapper for the ChangeDedicatedVmHostCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeDedicatedVmHostCompartment.go.html to see an example of how to use ChangeDedicatedVmHostCompartmentRequest. type ChangeDedicatedVmHostCompartmentRequest struct { // The OCID of the dedicated VM host. @@ -19,7 +23,7 @@ type ChangeDedicatedVmHostCompartmentRequest struct { ChangeDedicatedVmHostCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_dhcp_options_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dhcp_options_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_dhcp_options_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_dhcp_options_compartment_details.go index 7306d7ed0..c9c0ff363 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_dhcp_options_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dhcp_options_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeDhcpOptionsCompartmentDetails The configuration details for the move operation. type ChangeDhcpOptionsCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // set of DHCP options to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_dhcp_options_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dhcp_options_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_dhcp_options_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_dhcp_options_compartment_request_response.go index bd523502a..351dd1e0b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_dhcp_options_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_dhcp_options_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeDhcpOptionsCompartmentRequest wrapper for the ChangeDhcpOptionsCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeDhcpOptionsCompartment.go.html to see an example of how to use ChangeDhcpOptionsCompartmentRequest. type ChangeDhcpOptionsCompartmentRequest struct { // The OCID for the set of DHCP options. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_drg_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_drg_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_drg_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_drg_compartment_details.go index 58043980e..d564f0f91 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_drg_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_drg_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeDrgCompartmentDetails The configuration details for the move operation. type ChangeDrgCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // DRG to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_drg_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_drg_compartment_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_drg_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_drg_compartment_request_response.go index a648d307e..fb4c8ee5e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_drg_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_drg_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeDrgCompartmentRequest wrapper for the ChangeDrgCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeDrgCompartment.go.html to see an example of how to use ChangeDrgCompartmentRequest. type ChangeDrgCompartmentRequest struct { // The OCID of the DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_i_p_sec_connection_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_i_p_sec_connection_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_i_p_sec_connection_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_i_p_sec_connection_compartment_request_response.go index 1d5dca260..260ffa91e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_i_p_sec_connection_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_i_p_sec_connection_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeIPSecConnectionCompartmentRequest wrapper for the ChangeIPSecConnectionCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeIPSecConnectionCompartment.go.html to see an example of how to use ChangeIPSecConnectionCompartmentRequest. type ChangeIPSecConnectionCompartmentRequest struct { // The OCID of the IPSec connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_image_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_image_compartment_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_image_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_image_compartment_details.go index f1ad0914d..023097c3c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_image_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_image_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeImageCompartmentDetails The configuration details for the move operation. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_image_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_image_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_image_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_image_compartment_request_response.go index f63e8ae2c..7677b60ae 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_image_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_image_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeImageCompartmentRequest wrapper for the ChangeImageCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeImageCompartment.go.html to see an example of how to use ChangeImageCompartmentRequest. type ChangeImageCompartmentRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. @@ -19,7 +23,7 @@ type ChangeImageCompartmentRequest struct { ChangeImageCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_compartment_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_instance_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_compartment_details.go index 53cbd6aad..40c3db9e8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeInstanceCompartmentDetails The configuration details for the move operation. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_compartment_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_instance_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_compartment_request_response.go index d79bb0f0e..ca5659d0a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeInstanceCompartmentRequest wrapper for the ChangeInstanceCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInstanceCompartment.go.html to see an example of how to use ChangeInstanceCompartmentRequest. type ChangeInstanceCompartmentRequest struct { // The OCID of the instance. @@ -19,7 +23,7 @@ type ChangeInstanceCompartmentRequest struct { ChangeInstanceCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_configuration_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_configuration_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_instance_configuration_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_configuration_compartment_details.go index cf8c12f8d..39c4030f6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_configuration_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_configuration_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeInstanceConfigurationCompartmentDetails The configuration details for the move operation. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_configuration_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_configuration_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_instance_configuration_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_configuration_compartment_request_response.go index b3d3e44f1..c85232ead 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_configuration_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_configuration_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeInstanceConfigurationCompartmentRequest wrapper for the ChangeInstanceConfigurationCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInstanceConfigurationCompartment.go.html to see an example of how to use ChangeInstanceConfigurationCompartmentRequest. type ChangeInstanceConfigurationCompartmentRequest struct { // The OCID of the instance configuration. @@ -19,7 +23,7 @@ type ChangeInstanceConfigurationCompartmentRequest struct { ChangeInstanceConfigurationCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_pool_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_pool_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_instance_pool_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_pool_compartment_details.go index 51f8fa366..88f1ce05f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_pool_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_pool_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeInstancePoolCompartmentDetails The configuration details for the move operation. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_pool_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_pool_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_instance_pool_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_pool_compartment_request_response.go index 16e6fa315..dd9206bf1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_instance_pool_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_instance_pool_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeInstancePoolCompartmentRequest wrapper for the ChangeInstancePoolCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInstancePoolCompartment.go.html to see an example of how to use ChangeInstancePoolCompartmentRequest. type ChangeInstancePoolCompartmentRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -19,7 +23,7 @@ type ChangeInstancePoolCompartmentRequest struct { ChangeInstancePoolCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_internet_gateway_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_internet_gateway_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_internet_gateway_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_internet_gateway_compartment_details.go index 12644588b..dd4f12c49 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_internet_gateway_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_internet_gateway_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeInternetGatewayCompartmentDetails The configuration details for the move operation. type ChangeInternetGatewayCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // internet gateway to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_internet_gateway_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_internet_gateway_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_internet_gateway_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_internet_gateway_compartment_request_response.go index 974e8dd83..dc670db06 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_internet_gateway_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_internet_gateway_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeInternetGatewayCompartmentRequest wrapper for the ChangeInternetGatewayCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInternetGatewayCompartment.go.html to see an example of how to use ChangeInternetGatewayCompartmentRequest. type ChangeInternetGatewayCompartmentRequest struct { // The OCID of the internet gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_ip_sec_connection_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_ip_sec_connection_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_ip_sec_connection_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_ip_sec_connection_compartment_details.go index 33df3543c..cb169e509 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_ip_sec_connection_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_ip_sec_connection_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeIpSecConnectionCompartmentDetails The configuration details for the move operation. type ChangeIpSecConnectionCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // IPSec connection to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_local_peering_gateway_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_local_peering_gateway_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_local_peering_gateway_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_local_peering_gateway_compartment_details.go index 1a9fadd8d..078439d94 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_local_peering_gateway_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_local_peering_gateway_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeLocalPeeringGatewayCompartmentDetails The configuration details for the move operation. type ChangeLocalPeeringGatewayCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // local peering gateway to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_local_peering_gateway_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_local_peering_gateway_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_local_peering_gateway_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_local_peering_gateway_compartment_request_response.go index 3ec32b72c..18a74dfd3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_local_peering_gateway_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_local_peering_gateway_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeLocalPeeringGatewayCompartmentRequest wrapper for the ChangeLocalPeeringGatewayCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeLocalPeeringGatewayCompartment.go.html to see an example of how to use ChangeLocalPeeringGatewayCompartmentRequest. type ChangeLocalPeeringGatewayCompartmentRequest struct { // The OCID of the local peering gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_nat_gateway_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_nat_gateway_compartment_details.go similarity index 81% rename from vendor/github.com/oracle/oci-go-sdk/core/change_nat_gateway_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_nat_gateway_compartment_details.go index 8e32f40b9..89ac7f630 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_nat_gateway_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_nat_gateway_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeNatGatewayCompartmentDetails The configuration details for the move operation. type ChangeNatGatewayCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the NAT gateway to. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the NAT gateway to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_nat_gateway_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_nat_gateway_compartment_request_response.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/change_nat_gateway_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_nat_gateway_compartment_request_response.go index 80b46e11b..5e95b4346 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_nat_gateway_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_nat_gateway_compartment_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeNatGatewayCompartmentRequest wrapper for the ChangeNatGatewayCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeNatGatewayCompartment.go.html to see an example of how to use ChangeNatGatewayCompartmentRequest. type ChangeNatGatewayCompartmentRequest struct { - // The NAT gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The NAT gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). NatGatewayId *string `mandatory:"true" contributesTo:"path" name:"natGatewayId"` // Request to change the compartment of a given NAT Gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_network_security_group_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_network_security_group_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_network_security_group_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_network_security_group_compartment_details.go index bfdec8859..f74ac4f4d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_network_security_group_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_network_security_group_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeNetworkSecurityGroupCompartmentDetails The representation of ChangeNetworkSecurityGroupCompartmentDetails type ChangeNetworkSecurityGroupCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the network + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the network // security group to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_network_security_group_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_network_security_group_compartment_request_response.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/change_network_security_group_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_network_security_group_compartment_request_response.go index f6361864e..c3572ec9c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_network_security_group_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_network_security_group_compartment_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeNetworkSecurityGroupCompartmentRequest wrapper for the ChangeNetworkSecurityGroupCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeNetworkSecurityGroupCompartment.go.html to see an example of how to use ChangeNetworkSecurityGroupCompartmentRequest. type ChangeNetworkSecurityGroupCompartmentRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Request to change the compartment of a network security group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_public_ip_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_public_ip_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_compartment_details.go index 2f0d93491..d8aa52038 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_public_ip_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangePublicIpCompartmentDetails The configuration details for the move operation. type ChangePublicIpCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // public IP to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_public_ip_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_public_ip_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_compartment_request_response.go index 4127cb3d0..df8a75d05 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_public_ip_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangePublicIpCompartmentRequest wrapper for the ChangePublicIpCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangePublicIpCompartment.go.html to see an example of how to use ChangePublicIpCompartmentRequest. type ChangePublicIpCompartmentRequest struct { // The OCID of the public IP. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_details.go new file mode 100644 index 000000000..5b93b79f9 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_details.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ChangePublicIpPoolCompartmentDetails The configuration details for the move operation. +type ChangePublicIpPoolCompartmentDetails struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the destination compartment for the public IP pool move. + CompartmentId *string `mandatory:"true" json:"compartmentId"` +} + +func (m ChangePublicIpPoolCompartmentDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_request_response.go new file mode 100644 index 000000000..144f467e6 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_public_ip_pool_compartment_request_response.go @@ -0,0 +1,73 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ChangePublicIpPoolCompartmentRequest wrapper for the ChangePublicIpPoolCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangePublicIpPoolCompartment.go.html to see an example of how to use ChangePublicIpPoolCompartmentRequest. +type ChangePublicIpPoolCompartmentRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"true" contributesTo:"path" name:"publicIpPoolId"` + + // Request to change the compartment of a public IP pool. + ChangePublicIpPoolCompartmentDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ChangePublicIpPoolCompartmentRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ChangePublicIpPoolCompartmentRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ChangePublicIpPoolCompartmentRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ChangePublicIpPoolCompartmentResponse wrapper for the ChangePublicIpPoolCompartment operation +type ChangePublicIpPoolCompartmentResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response ChangePublicIpPoolCompartmentResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ChangePublicIpPoolCompartmentResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_remote_peering_connection_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_remote_peering_connection_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_remote_peering_connection_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_remote_peering_connection_compartment_details.go index b1348d6bd..7d1386e29 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_remote_peering_connection_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_remote_peering_connection_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeRemotePeeringConnectionCompartmentDetails The configuration details for the move operation. type ChangeRemotePeeringConnectionCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // remote peering connection to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_remote_peering_connection_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_remote_peering_connection_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_remote_peering_connection_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_remote_peering_connection_compartment_request_response.go index fc967dc2c..fca8d44d1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_remote_peering_connection_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_remote_peering_connection_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeRemotePeeringConnectionCompartmentRequest wrapper for the ChangeRemotePeeringConnectionCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeRemotePeeringConnectionCompartment.go.html to see an example of how to use ChangeRemotePeeringConnectionCompartmentRequest. type ChangeRemotePeeringConnectionCompartmentRequest struct { // The OCID of the remote peering connection (RPC). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_route_table_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_route_table_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_route_table_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_route_table_compartment_details.go index 4ddec366a..92fd67f47 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_route_table_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_route_table_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeRouteTableCompartmentDetails The configuration details for the move operation. type ChangeRouteTableCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // route table to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_route_table_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_route_table_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_route_table_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_route_table_compartment_request_response.go index c715078fc..53d17ff0f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_route_table_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_route_table_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeRouteTableCompartmentRequest wrapper for the ChangeRouteTableCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeRouteTableCompartment.go.html to see an example of how to use ChangeRouteTableCompartmentRequest. type ChangeRouteTableCompartmentRequest struct { // The OCID of the route table. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_security_list_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_security_list_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_security_list_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_security_list_compartment_details.go index 1c2cd63c2..4142bad68 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_security_list_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_security_list_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeSecurityListCompartmentDetails The configuration details for the move operation. type ChangeSecurityListCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // security list to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_security_list_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_security_list_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_security_list_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_security_list_compartment_request_response.go index ab0a62036..25b7e8a48 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_security_list_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_security_list_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeSecurityListCompartmentRequest wrapper for the ChangeSecurityListCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeSecurityListCompartment.go.html to see an example of how to use ChangeSecurityListCompartmentRequest. type ChangeSecurityListCompartmentRequest struct { // The OCID of the security list. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_service_gateway_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_service_gateway_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_service_gateway_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_service_gateway_compartment_details.go index 06f8aeba8..f8beb59b4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_service_gateway_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_service_gateway_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeServiceGatewayCompartmentDetails The configuration details for the move operation. type ChangeServiceGatewayCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // service gateway to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_service_gateway_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_service_gateway_compartment_request_response.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/change_service_gateway_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_service_gateway_compartment_request_response.go index 0f97a2e15..6d33e3554 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_service_gateway_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_service_gateway_compartment_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeServiceGatewayCompartmentRequest wrapper for the ChangeServiceGatewayCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeServiceGatewayCompartment.go.html to see an example of how to use ChangeServiceGatewayCompartmentRequest. type ChangeServiceGatewayCompartmentRequest struct { - // The service gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceGatewayId *string `mandatory:"true" contributesTo:"path" name:"serviceGatewayId"` // Request to change the compartment of a given Service Gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_subnet_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_subnet_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_subnet_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_subnet_compartment_details.go index e91d2b718..97c990dac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_subnet_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_subnet_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeSubnetCompartmentDetails The configuration details for the move operation. type ChangeSubnetCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // subnet to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_subnet_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_subnet_compartment_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_subnet_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_subnet_compartment_request_response.go index 87b3b0514..b22da57da 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_subnet_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_subnet_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeSubnetCompartmentRequest wrapper for the ChangeSubnetCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeSubnetCompartment.go.html to see an example of how to use ChangeSubnetCompartmentRequest. type ChangeSubnetCompartmentRequest struct { // The OCID of the subnet. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_vcn_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vcn_compartment_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/change_vcn_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_vcn_compartment_details.go index a48b1af6c..6c8294e32 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_vcn_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vcn_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVcnCompartmentDetails The configuration details for the move operation. type ChangeVcnCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // VCN to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_vcn_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vcn_compartment_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/change_vcn_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_vcn_compartment_request_response.go index 3a0e00294..40a877cd4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_vcn_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vcn_compartment_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVcnCompartmentRequest wrapper for the ChangeVcnCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVcnCompartment.go.html to see an example of how to use ChangeVcnCompartmentRequest. type ChangeVcnCompartmentRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` // Request to change the compartment of a given VCN. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_virtual_circuit_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_virtual_circuit_compartment_details.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/change_virtual_circuit_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_virtual_circuit_compartment_details.go index 031832066..5a718b09f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_virtual_circuit_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_virtual_circuit_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVirtualCircuitCompartmentDetails The configuration details for the move operation. type ChangeVirtualCircuitCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the // virtual circuit to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_virtual_circuit_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_virtual_circuit_compartment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/change_virtual_circuit_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_virtual_circuit_compartment_request_response.go index 99333324d..d378ed127 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_virtual_circuit_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_virtual_circuit_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVirtualCircuitCompartmentRequest wrapper for the ChangeVirtualCircuitCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVirtualCircuitCompartment.go.html to see an example of how to use ChangeVirtualCircuitCompartmentRequest. type ChangeVirtualCircuitCompartmentRequest struct { // The OCID of the virtual circuit. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_vlan_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vlan_compartment_details.go similarity index 81% rename from vendor/github.com/oracle/oci-go-sdk/core/change_vlan_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_vlan_compartment_details.go index e26ecdc78..ff6c7cda1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_vlan_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vlan_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVlanCompartmentDetails The configuration details for the move operation. type ChangeVlanCompartmentDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to move the VLAN to. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to move the VLAN to. CompartmentId *string `mandatory:"true" json:"compartmentId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_vlan_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vlan_compartment_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/change_vlan_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_vlan_compartment_request_response.go index d7b414b85..4d17d5201 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_vlan_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_vlan_compartment_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVlanCompartmentRequest wrapper for the ChangeVlanCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVlanCompartment.go.html to see an example of how to use ChangeVlanCompartmentRequest. type ChangeVlanCompartmentRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VLAN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VLAN. VlanId *string `mandatory:"true" contributesTo:"path" name:"vlanId"` // Request to change the compartment of a given VLAN. ChangeVlanCompartmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_backup_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_backup_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_backup_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_backup_compartment_details.go index 2e00262c2..4e8631b31 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_backup_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_backup_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVolumeBackupCompartmentDetails Contains the details for the compartment to move the volume backup to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_backup_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_backup_compartment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_backup_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_backup_compartment_request_response.go index afae2970f..d6f04fd04 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_backup_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_backup_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVolumeBackupCompartmentRequest wrapper for the ChangeVolumeBackupCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeBackupCompartment.go.html to see an example of how to use ChangeVolumeBackupCompartmentRequest. type ChangeVolumeBackupCompartmentRequest struct { // The OCID of the volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_compartment_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_compartment_details.go index 6018bf90f..49014cdbf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVolumeCompartmentDetails Contains the details for the compartment to move the volume to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_compartment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_compartment_request_response.go index d87b18d6a..578595e6a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVolumeCompartmentRequest wrapper for the ChangeVolumeCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeCompartment.go.html to see an example of how to use ChangeVolumeCompartmentRequest. type ChangeVolumeCompartmentRequest struct { // The OCID of the volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_backup_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_backup_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_backup_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_backup_compartment_details.go index 297e6a097..de125ca67 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_backup_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_backup_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVolumeGroupBackupCompartmentDetails Contains the details for the compartment to move the volume group backup to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_backup_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_backup_compartment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_backup_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_backup_compartment_request_response.go index 5598cdb5d..fe2115130 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_backup_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_backup_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVolumeGroupBackupCompartmentRequest wrapper for the ChangeVolumeGroupBackupCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeGroupBackupCompartment.go.html to see an example of how to use ChangeVolumeGroupBackupCompartmentRequest. type ChangeVolumeGroupBackupCompartmentRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_compartment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_compartment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_compartment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_compartment_details.go index 00466fc31..83a8c20d7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_compartment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_compartment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ChangeVolumeGroupCompartmentDetails Contains the details for the compartment to move the volume group to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_compartment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_compartment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_compartment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_compartment_request_response.go index 4799cb21d..90dd55d17 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/change_volume_group_compartment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/change_volume_group_compartment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ChangeVolumeGroupCompartmentRequest wrapper for the ChangeVolumeGroupCompartment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeGroupCompartment.go.html to see an example of how to use ChangeVolumeGroupCompartmentRequest. type ChangeVolumeGroupCompartmentRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cluster_network.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/cluster_network.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network.go index 8ffe8bd13..65b5139be 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cluster_network.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ClusterNetwork A cluster network is a group of high performance computing (HPC) bare metal instances that are connected @@ -56,7 +56,6 @@ type ClusterNetwork struct { // Each cluster network can have one instance pool. InstancePools []InstancePool `mandatory:"false" json:"instancePools"` - // The placement configuration for the instance pools in the cluster network. PlacementConfiguration *ClusterNetworkPlacementConfigurationDetails `mandatory:"false" json:"placementConfiguration"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cluster_network_placement_configuration_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network_placement_configuration_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/cluster_network_placement_configuration_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network_placement_configuration_details.go index bdef2bdf0..5b47e60ad 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cluster_network_placement_configuration_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network_placement_configuration_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ClusterNetworkPlacementConfigurationDetails The location for where the instance pools in a cluster network will place instances. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cluster_network_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network_summary.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/cluster_network_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network_summary.go index 8c626fced..537ac03fb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cluster_network_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cluster_network_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ClusterNetworkSummary Summary information for a cluster network. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema.go index fb0ac8480..7c16c9e9f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeGlobalImageCapabilitySchema Compute Global Image Capability Schema is a container for a set of compute global image capability schema versions diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_summary.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_summary.go index 1b06f3a72..5cd354d01 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeGlobalImageCapabilitySchemaSummary Summary information for a compute global image capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_version.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_version.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_version.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_version.go index c6ec75bc7..3d89d4d48 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_version.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_version.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeGlobalImageCapabilitySchemaVersion Compute Global Image Capability Schema Version is a set of all possible capabilities for a collection of images. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_version_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_version_summary.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_version_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_version_summary.go index 18a44056e..5bd2e33d0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_global_image_capability_schema_version_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_global_image_capability_schema_version_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeGlobalImageCapabilitySchemaVersionSummary Summary information for a compute global image capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_image_capability_schema.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_image_capability_schema.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_image_capability_schema.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_image_capability_schema.go index 1413d4d88..0cc5f5d21 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_image_capability_schema.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_image_capability_schema.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeImageCapabilitySchema Compute Image Capability Schema is a set of capabilities that filter the compute global capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_image_capability_schema_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_image_capability_schema_summary.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_image_capability_schema_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_image_capability_schema_summary.go index d71d5d773..e79095cbc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_image_capability_schema_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_image_capability_schema_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeImageCapabilitySchemaSummary Summary information for a compute image capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/compute_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_instance_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/compute_instance_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/compute_instance_details.go index f0f1631c6..07c554bbd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/compute_instance_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/compute_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ComputeInstanceDetails Compute Instance Configuration instance details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/connect_local_peering_gateways_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_local_peering_gateways_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/connect_local_peering_gateways_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/connect_local_peering_gateways_details.go index 488e126a4..d4b8af427 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/connect_local_peering_gateways_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_local_peering_gateways_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ConnectLocalPeeringGatewaysDetails Information about the other local peering gateway (LPG). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/connect_local_peering_gateways_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_local_peering_gateways_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/connect_local_peering_gateways_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/connect_local_peering_gateways_request_response.go index b49f784f9..be16b51c6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/connect_local_peering_gateways_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_local_peering_gateways_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ConnectLocalPeeringGatewaysRequest wrapper for the ConnectLocalPeeringGateways operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ConnectLocalPeeringGateways.go.html to see an example of how to use ConnectLocalPeeringGatewaysRequest. type ConnectLocalPeeringGatewaysRequest struct { // The OCID of the local peering gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/connect_remote_peering_connections_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_remote_peering_connections_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/connect_remote_peering_connections_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/connect_remote_peering_connections_details.go index da13205a9..b7ccc3a7a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/connect_remote_peering_connections_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_remote_peering_connections_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ConnectRemotePeeringConnectionsDetails Information about the other remote peering connection (RPC). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/connect_remote_peering_connections_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_remote_peering_connections_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/connect_remote_peering_connections_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/connect_remote_peering_connections_request_response.go index 9be5f748f..abe49f585 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/connect_remote_peering_connections_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/connect_remote_peering_connections_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ConnectRemotePeeringConnectionsRequest wrapper for the ConnectRemotePeeringConnections operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ConnectRemotePeeringConnections.go.html to see an example of how to use ConnectRemotePeeringConnectionsRequest. type ConnectRemotePeeringConnectionsRequest struct { // The OCID of the remote peering connection (RPC). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/console_history.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/console_history.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/console_history.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/console_history.go index f8b164a0b..aacad48c3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/console_history.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/console_history.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ConsoleHistory An instance's serial console data. It includes configuration messages that occur when the diff --git a/vendor/github.com/oracle/oci-go-sdk/core/copy_boot_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_boot_volume_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/copy_boot_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/copy_boot_volume_backup_details.go index 71bb6f00c..15b1a94a8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/copy_boot_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_boot_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CopyBootVolumeBackupDetails The representation of CopyBootVolumeBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/copy_boot_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_boot_volume_backup_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/copy_boot_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/copy_boot_volume_backup_request_response.go index c1963ad89..8962d6088 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/copy_boot_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_boot_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CopyBootVolumeBackupRequest wrapper for the CopyBootVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CopyBootVolumeBackup.go.html to see an example of how to use CopyBootVolumeBackupRequest. type CopyBootVolumeBackupRequest struct { // The OCID of the boot volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/copy_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_volume_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/copy_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/copy_volume_backup_details.go index 0552567d6..d469f9101 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/copy_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CopyVolumeBackupDetails The representation of CopyVolumeBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/copy_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_volume_backup_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/copy_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/copy_volume_backup_request_response.go index 2a3f5cee8..ed270ba07 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/copy_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/copy_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CopyVolumeBackupRequest wrapper for the CopyVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CopyVolumeBackup.go.html to see an example of how to use CopyVolumeBackupRequest. type CopyVolumeBackupRequest struct { // The OCID of the volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/core_blockstorage_client.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_blockstorage_client.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/core_blockstorage_client.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/core_blockstorage_client.go index 12539dddc..5d6328d1c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/core_blockstorage_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_blockstorage_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -16,7 +16,8 @@ package core import ( "context" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" + "github.com/oracle/oci-go-sdk/v36/common/auth" "net/http" ) @@ -29,12 +30,15 @@ type BlockstorageClient struct { // NewBlockstorageClientWithConfigurationProvider Creates a new default Blockstorage client with the given configuration provider. // the configuration provider will be used for the default signer as well as reading the region func NewBlockstorageClientWithConfigurationProvider(configProvider common.ConfigurationProvider) (client BlockstorageClient, err error) { - baseClient, err := common.NewClientWithConfig(configProvider) + provider, err := auth.GetGenericConfigurationProvider(configProvider) if err != nil { - return + return client, err } - - return newBlockstorageClientFromBaseClient(baseClient, configProvider) + baseClient, e := common.NewClientWithConfig(provider) + if e != nil { + return client, e + } + return newBlockstorageClientFromBaseClient(baseClient, provider) } // NewBlockstorageClientWithOboToken Creates a new default Blockstorage client with the given configuration provider. @@ -43,7 +47,7 @@ func NewBlockstorageClientWithConfigurationProvider(configProvider common.Config func NewBlockstorageClientWithOboToken(configProvider common.ConfigurationProvider, oboToken string) (client BlockstorageClient, err error) { baseClient, err := common.NewClientWithOboToken(configProvider, oboToken) if err != nil { - return + return client, err } return newBlockstorageClientFromBaseClient(baseClient, configProvider) @@ -82,9 +86,16 @@ func (client *BlockstorageClient) ConfigurationProvider() *common.ConfigurationP // ChangeBootVolumeBackupCompartment Moves a boot volume backup into a different compartment within the same tenancy. // For information about moving resources between compartments, // see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeBootVolumeBackupCompartment.go.html to see an example of how to use ChangeBootVolumeBackupCompartment API. func (client BlockstorageClient) ChangeBootVolumeBackupCompartment(ctx context.Context, request ChangeBootVolumeBackupCompartmentRequest) (response ChangeBootVolumeBackupCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -131,9 +142,16 @@ func (client BlockstorageClient) changeBootVolumeBackupCompartment(ctx context.C // ChangeBootVolumeCompartment Moves a boot volume into a different compartment within the same tenancy. // For information about moving resources between compartments, // see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeBootVolumeCompartment.go.html to see an example of how to use ChangeBootVolumeCompartment API. func (client BlockstorageClient) ChangeBootVolumeCompartment(ctx context.Context, request ChangeBootVolumeCompartmentRequest) (response ChangeBootVolumeCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -180,9 +198,16 @@ func (client BlockstorageClient) changeBootVolumeCompartment(ctx context.Context // ChangeVolumeBackupCompartment Moves a volume backup into a different compartment within the same tenancy. // For information about moving resources between compartments, // see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeBackupCompartment.go.html to see an example of how to use ChangeVolumeBackupCompartment API. func (client BlockstorageClient) ChangeVolumeBackupCompartment(ctx context.Context, request ChangeVolumeBackupCompartmentRequest) (response ChangeVolumeBackupCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -229,9 +254,16 @@ func (client BlockstorageClient) changeVolumeBackupCompartment(ctx context.Conte // ChangeVolumeCompartment Moves a volume into a different compartment within the same tenancy. // For information about moving resources between compartments, // see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeCompartment.go.html to see an example of how to use ChangeVolumeCompartment API. func (client BlockstorageClient) ChangeVolumeCompartment(ctx context.Context, request ChangeVolumeCompartmentRequest) (response ChangeVolumeCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -278,9 +310,16 @@ func (client BlockstorageClient) changeVolumeCompartment(ctx context.Context, re // ChangeVolumeGroupBackupCompartment Moves a volume group backup into a different compartment within the same tenancy. // For information about moving resources between compartments, // see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeGroupBackupCompartment.go.html to see an example of how to use ChangeVolumeGroupBackupCompartment API. func (client BlockstorageClient) ChangeVolumeGroupBackupCompartment(ctx context.Context, request ChangeVolumeGroupBackupCompartmentRequest) (response ChangeVolumeGroupBackupCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -327,9 +366,16 @@ func (client BlockstorageClient) changeVolumeGroupBackupCompartment(ctx context. // ChangeVolumeGroupCompartment Moves a volume group into a different compartment within the same tenancy. // For information about moving resources between compartments, // see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVolumeGroupCompartment.go.html to see an example of how to use ChangeVolumeGroupCompartment API. func (client BlockstorageClient) ChangeVolumeGroupCompartment(ctx context.Context, request ChangeVolumeGroupCompartmentRequest) (response ChangeVolumeGroupCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -375,9 +421,16 @@ func (client BlockstorageClient) changeVolumeGroupCompartment(ctx context.Contex // CopyBootVolumeBackup Creates a boot volume backup copy in specified region. For general information about volume backups, // see Overview of Boot Volume Backups (https://docs.cloud.oracle.com/Content/Block/Concepts/bootvolumebackups.htm) +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CopyBootVolumeBackup.go.html to see an example of how to use CopyBootVolumeBackup API. func (client BlockstorageClient) CopyBootVolumeBackup(ctx context.Context, request CopyBootVolumeBackupRequest) (response CopyBootVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -428,9 +481,16 @@ func (client BlockstorageClient) copyBootVolumeBackup(ctx context.Context, reque // CopyVolumeBackup Creates a volume backup copy in specified region. For general information about volume backups, // see Overview of Block Volume Service Backups (https://docs.cloud.oracle.com/Content/Block/Concepts/blockvolumebackups.htm) +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CopyVolumeBackup.go.html to see an example of how to use CopyVolumeBackup API. func (client BlockstorageClient) CopyVolumeBackup(ctx context.Context, request CopyVolumeBackupRequest) (response CopyVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -483,9 +543,16 @@ func (client BlockstorageClient) copyVolumeBackup(ctx context.Context, request c // For general information about boot volumes, see Boot Volumes (https://docs.cloud.oracle.com/Content/Block/Concepts/bootvolumes.htm). // You may optionally specify a *display name* for the volume, which is simply a friendly name or // description. It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateBootVolume.go.html to see an example of how to use CreateBootVolume API. func (client BlockstorageClient) CreateBootVolume(ctx context.Context, request CreateBootVolumeRequest) (response CreateBootVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -539,9 +606,16 @@ func (client BlockstorageClient) createBootVolume(ctx context.Context, request c // When the request is received, the backup object is in a REQUEST_RECEIVED state. // When the data is imaged, it goes into a CREATING state. // After the backup is fully uploaded to the cloud, it goes into an AVAILABLE state. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateBootVolumeBackup.go.html to see an example of how to use CreateBootVolumeBackup API. func (client BlockstorageClient) CreateBootVolumeBackup(ctx context.Context, request CreateBootVolumeBackupRequest) (response CreateBootVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -602,9 +676,16 @@ func (client BlockstorageClient) createBootVolumeBackup(ctx context.Context, req // in the Identity and Access Management Service API. // You may optionally specify a *display name* for the volume, which is simply a friendly name or // description. It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolume.go.html to see an example of how to use CreateVolume API. func (client BlockstorageClient) CreateVolume(ctx context.Context, request CreateVolumeRequest) (response CreateVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -658,9 +739,16 @@ func (client BlockstorageClient) createVolume(ctx context.Context, request commo // When the request is received, the backup object is in a REQUEST_RECEIVED state. // When the data is imaged, it goes into a CREATING state. // After the backup is fully uploaded to the cloud, it goes into an AVAILABLE state. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeBackup.go.html to see an example of how to use CreateVolumeBackup API. func (client BlockstorageClient) CreateVolumeBackup(ctx context.Context, request CreateVolumeBackupRequest) (response CreateVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -712,9 +800,16 @@ func (client BlockstorageClient) createVolumeBackup(ctx context.Context, request // CreateVolumeBackupPolicy Creates a new user defined backup policy. // For more information about Oracle defined backup policies and user defined backup policies, // see Policy-Based Backups (https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/schedulingvolumebackups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeBackupPolicy.go.html to see an example of how to use CreateVolumeBackupPolicy API. func (client BlockstorageClient) CreateVolumeBackupPolicy(ctx context.Context, request CreateVolumeBackupPolicyRequest) (response CreateVolumeBackupPolicyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -766,9 +861,16 @@ func (client BlockstorageClient) createVolumeBackupPolicy(ctx context.Context, r // CreateVolumeBackupPolicyAssignment Assigns a volume backup policy to the specified volume. Note that a given volume can // only have one backup policy assigned to it. If this operation is used for a volume that already // has a different backup policy assigned, the prior backup policy will be silently unassigned. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeBackupPolicyAssignment.go.html to see an example of how to use CreateVolumeBackupPolicyAssignment API. func (client BlockstorageClient) CreateVolumeBackupPolicyAssignment(ctx context.Context, request CreateVolumeBackupPolicyAssignmentRequest) (response CreateVolumeBackupPolicyAssignmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -818,9 +920,16 @@ func (client BlockstorageClient) createVolumeBackupPolicyAssignment(ctx context. // You may optionally specify a *display name* for the volume group, which is simply a friendly name or // description. It does not have to be unique, and you can change it. Avoid entering confidential information. // For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeGroup.go.html to see an example of how to use CreateVolumeGroup API. func (client BlockstorageClient) CreateVolumeGroup(ctx context.Context, request CreateVolumeGroupRequest) (response CreateVolumeGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -871,9 +980,16 @@ func (client BlockstorageClient) createVolumeGroup(ctx context.Context, request // CreateVolumeGroupBackup Creates a new backup volume group of the specified volume group. // For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeGroupBackup.go.html to see an example of how to use CreateVolumeGroupBackup API. func (client BlockstorageClient) CreateVolumeGroupBackup(ctx context.Context, request CreateVolumeGroupBackupRequest) (response CreateVolumeGroupBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -926,9 +1042,16 @@ func (client BlockstorageClient) createVolumeGroupBackup(ctx context.Context, re // To disconnect the boot volume from a connected instance, see // Disconnecting From a Boot Volume (https://docs.cloud.oracle.com/Content/Block/Tasks/deletingbootvolume.htm). // **Warning:** All data on the boot volume will be permanently lost when the boot volume is deleted. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteBootVolume.go.html to see an example of how to use DeleteBootVolume API. func (client BlockstorageClient) DeleteBootVolume(ctx context.Context, request DeleteBootVolumeRequest) (response DeleteBootVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -973,9 +1096,16 @@ func (client BlockstorageClient) deleteBootVolume(ctx context.Context, request c } // DeleteBootVolumeBackup Deletes a boot volume backup. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteBootVolumeBackup.go.html to see an example of how to use DeleteBootVolumeBackup API. func (client BlockstorageClient) DeleteBootVolumeBackup(ctx context.Context, request DeleteBootVolumeBackupRequest) (response DeleteBootVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1020,9 +1150,16 @@ func (client BlockstorageClient) deleteBootVolumeBackup(ctx context.Context, req } // DeleteBootVolumeKmsKey Removes the specified boot volume's assigned Key Management encryption key. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteBootVolumeKmsKey.go.html to see an example of how to use DeleteBootVolumeKmsKey API. func (client BlockstorageClient) DeleteBootVolumeKmsKey(ctx context.Context, request DeleteBootVolumeKmsKeyRequest) (response DeleteBootVolumeKmsKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1070,9 +1207,16 @@ func (client BlockstorageClient) deleteBootVolumeKmsKey(ctx context.Context, req // To disconnect the volume from a connected instance, see // Disconnecting From a Volume (https://docs.cloud.oracle.com/Content/Block/Tasks/disconnectingfromavolume.htm). // **Warning:** All data on the volume will be permanently lost when the volume is deleted. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolume.go.html to see an example of how to use DeleteVolume API. func (client BlockstorageClient) DeleteVolume(ctx context.Context, request DeleteVolumeRequest) (response DeleteVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1117,9 +1261,16 @@ func (client BlockstorageClient) deleteVolume(ctx context.Context, request commo } // DeleteVolumeBackup Deletes a volume backup. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeBackup.go.html to see an example of how to use DeleteVolumeBackup API. func (client BlockstorageClient) DeleteVolumeBackup(ctx context.Context, request DeleteVolumeBackupRequest) (response DeleteVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1167,9 +1318,16 @@ func (client BlockstorageClient) deleteVolumeBackup(ctx context.Context, request // For more information about user defined backup policies, // see Policy-Based Backups (https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/schedulingvolumebackups.htm#UserDefinedBackupPolicies). // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeBackupPolicy.go.html to see an example of how to use DeleteVolumeBackupPolicy API. func (client BlockstorageClient) DeleteVolumeBackupPolicy(ctx context.Context, request DeleteVolumeBackupPolicyRequest) (response DeleteVolumeBackupPolicyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1214,9 +1372,16 @@ func (client BlockstorageClient) deleteVolumeBackupPolicy(ctx context.Context, r } // DeleteVolumeBackupPolicyAssignment Deletes a volume backup policy assignment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeBackupPolicyAssignment.go.html to see an example of how to use DeleteVolumeBackupPolicyAssignment API. func (client BlockstorageClient) DeleteVolumeBackupPolicyAssignment(ctx context.Context, request DeleteVolumeBackupPolicyAssignmentRequest) (response DeleteVolumeBackupPolicyAssignmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1262,9 +1427,16 @@ func (client BlockstorageClient) deleteVolumeBackupPolicyAssignment(ctx context. // DeleteVolumeGroup Deletes the specified volume group. Individual volumes are not deleted, only the volume group is deleted. // For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeGroup.go.html to see an example of how to use DeleteVolumeGroup API. func (client BlockstorageClient) DeleteVolumeGroup(ctx context.Context, request DeleteVolumeGroupRequest) (response DeleteVolumeGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1308,10 +1480,18 @@ func (client BlockstorageClient) deleteVolumeGroup(ctx context.Context, request return response, err } -// DeleteVolumeGroupBackup Deletes a volume group backup. This operation deletes all the backups in the volume group. For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// DeleteVolumeGroupBackup Deletes a volume group backup. This operation deletes all the backups in +// the volume group. For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeGroupBackup.go.html to see an example of how to use DeleteVolumeGroupBackup API. func (client BlockstorageClient) DeleteVolumeGroupBackup(ctx context.Context, request DeleteVolumeGroupBackupRequest) (response DeleteVolumeGroupBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1356,9 +1536,16 @@ func (client BlockstorageClient) deleteVolumeGroupBackup(ctx context.Context, re } // DeleteVolumeKmsKey Removes the specified volume's assigned Key Management encryption key. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeKmsKey.go.html to see an example of how to use DeleteVolumeKmsKey API. func (client BlockstorageClient) DeleteVolumeKmsKey(ctx context.Context, request DeleteVolumeKmsKeyRequest) (response DeleteVolumeKmsKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1403,9 +1590,16 @@ func (client BlockstorageClient) deleteVolumeKmsKey(ctx context.Context, request } // GetBootVolume Gets information for the specified boot volume. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolume.go.html to see an example of how to use GetBootVolume API. func (client BlockstorageClient) GetBootVolume(ctx context.Context, request GetBootVolumeRequest) (response GetBootVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1450,9 +1644,16 @@ func (client BlockstorageClient) getBootVolume(ctx context.Context, request comm } // GetBootVolumeBackup Gets information for the specified boot volume backup. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolumeBackup.go.html to see an example of how to use GetBootVolumeBackup API. func (client BlockstorageClient) GetBootVolumeBackup(ctx context.Context, request GetBootVolumeBackupRequest) (response GetBootVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1497,9 +1698,16 @@ func (client BlockstorageClient) getBootVolumeBackup(ctx context.Context, reques } // GetBootVolumeKmsKey Gets the Key Management encryption key assigned to the specified boot volume. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolumeKmsKey.go.html to see an example of how to use GetBootVolumeKmsKey API. func (client BlockstorageClient) GetBootVolumeKmsKey(ctx context.Context, request GetBootVolumeKmsKeyRequest) (response GetBootVolumeKmsKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1544,9 +1752,16 @@ func (client BlockstorageClient) getBootVolumeKmsKey(ctx context.Context, reques } // GetVolume Gets information for the specified volume. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolume.go.html to see an example of how to use GetVolume API. func (client BlockstorageClient) GetVolume(ctx context.Context, request GetVolumeRequest) (response GetVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1591,9 +1806,16 @@ func (client BlockstorageClient) getVolume(ctx context.Context, request common.O } // GetVolumeBackup Gets information for the specified volume backup. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackup.go.html to see an example of how to use GetVolumeBackup API. func (client BlockstorageClient) GetVolumeBackup(ctx context.Context, request GetVolumeBackupRequest) (response GetVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1638,9 +1860,16 @@ func (client BlockstorageClient) getVolumeBackup(ctx context.Context, request co } // GetVolumeBackupPolicy Gets information for the specified volume backup policy. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackupPolicy.go.html to see an example of how to use GetVolumeBackupPolicy API. func (client BlockstorageClient) GetVolumeBackupPolicy(ctx context.Context, request GetVolumeBackupPolicyRequest) (response GetVolumeBackupPolicyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1687,9 +1916,16 @@ func (client BlockstorageClient) getVolumeBackupPolicy(ctx context.Context, requ // GetVolumeBackupPolicyAssetAssignment Gets the volume backup policy assignment for the specified volume. The // `assetId` query parameter is required, and the returned list will contain at most // one item, since volume can only have one volume backup policy assigned at a time. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackupPolicyAssetAssignment.go.html to see an example of how to use GetVolumeBackupPolicyAssetAssignment API. func (client BlockstorageClient) GetVolumeBackupPolicyAssetAssignment(ctx context.Context, request GetVolumeBackupPolicyAssetAssignmentRequest) (response GetVolumeBackupPolicyAssetAssignmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1734,9 +1970,16 @@ func (client BlockstorageClient) getVolumeBackupPolicyAssetAssignment(ctx contex } // GetVolumeBackupPolicyAssignment Gets information for the specified volume backup policy assignment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackupPolicyAssignment.go.html to see an example of how to use GetVolumeBackupPolicyAssignment API. func (client BlockstorageClient) GetVolumeBackupPolicyAssignment(ctx context.Context, request GetVolumeBackupPolicyAssignmentRequest) (response GetVolumeBackupPolicyAssignmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1781,9 +2024,16 @@ func (client BlockstorageClient) getVolumeBackupPolicyAssignment(ctx context.Con } // GetVolumeGroup Gets information for the specified volume group. For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeGroup.go.html to see an example of how to use GetVolumeGroup API. func (client BlockstorageClient) GetVolumeGroup(ctx context.Context, request GetVolumeGroupRequest) (response GetVolumeGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1828,9 +2078,16 @@ func (client BlockstorageClient) getVolumeGroup(ctx context.Context, request com } // GetVolumeGroupBackup Gets information for the specified volume group backup. For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeGroupBackup.go.html to see an example of how to use GetVolumeGroupBackup API. func (client BlockstorageClient) GetVolumeGroupBackup(ctx context.Context, request GetVolumeGroupBackupRequest) (response GetVolumeGroupBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1875,9 +2132,16 @@ func (client BlockstorageClient) getVolumeGroupBackup(ctx context.Context, reque } // GetVolumeKmsKey Gets the Key Management encryption key assigned to the specified volume. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeKmsKey.go.html to see an example of how to use GetVolumeKmsKey API. func (client BlockstorageClient) GetVolumeKmsKey(ctx context.Context, request GetVolumeKmsKeyRequest) (response GetVolumeKmsKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1922,9 +2186,16 @@ func (client BlockstorageClient) getVolumeKmsKey(ctx context.Context, request co } // ListBootVolumeBackups Lists the boot volume backups in the specified compartment. You can filter the results by boot volume. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListBootVolumeBackups.go.html to see an example of how to use ListBootVolumeBackups API. func (client BlockstorageClient) ListBootVolumeBackups(ctx context.Context, request ListBootVolumeBackupsRequest) (response ListBootVolumeBackupsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1969,9 +2240,16 @@ func (client BlockstorageClient) listBootVolumeBackups(ctx context.Context, requ } // ListBootVolumes Lists the boot volumes in the specified compartment and availability domain. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListBootVolumes.go.html to see an example of how to use ListBootVolumes API. func (client BlockstorageClient) ListBootVolumes(ctx context.Context, request ListBootVolumesRequest) (response ListBootVolumesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2018,9 +2296,16 @@ func (client BlockstorageClient) listBootVolumes(ctx context.Context, request co // ListVolumeBackupPolicies Lists all the volume backup policies available in the specified compartment. // For more information about Oracle defined backup policies and user defined backup policies, // see Policy-Based Backups (https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/schedulingvolumebackups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeBackupPolicies.go.html to see an example of how to use ListVolumeBackupPolicies API. func (client BlockstorageClient) ListVolumeBackupPolicies(ctx context.Context, request ListVolumeBackupPoliciesRequest) (response ListVolumeBackupPoliciesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2065,9 +2350,16 @@ func (client BlockstorageClient) listVolumeBackupPolicies(ctx context.Context, r } // ListVolumeBackups Lists the volume backups in the specified compartment. You can filter the results by volume. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeBackups.go.html to see an example of how to use ListVolumeBackups API. func (client BlockstorageClient) ListVolumeBackups(ctx context.Context, request ListVolumeBackupsRequest) (response ListVolumeBackupsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2113,9 +2405,16 @@ func (client BlockstorageClient) listVolumeBackups(ctx context.Context, request // ListVolumeGroupBackups Lists the volume group backups in the specified compartment. You can filter the results by volume group. // For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeGroupBackups.go.html to see an example of how to use ListVolumeGroupBackups API. func (client BlockstorageClient) ListVolumeGroupBackups(ctx context.Context, request ListVolumeGroupBackupsRequest) (response ListVolumeGroupBackupsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2161,9 +2460,16 @@ func (client BlockstorageClient) listVolumeGroupBackups(ctx context.Context, req // ListVolumeGroups Lists the volume groups in the specified compartment and availability domain. // For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeGroups.go.html to see an example of how to use ListVolumeGroups API. func (client BlockstorageClient) ListVolumeGroups(ctx context.Context, request ListVolumeGroupsRequest) (response ListVolumeGroupsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2208,9 +2514,16 @@ func (client BlockstorageClient) listVolumeGroups(ctx context.Context, request c } // ListVolumes Lists the volumes in the specified compartment and availability domain. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumes.go.html to see an example of how to use ListVolumes API. func (client BlockstorageClient) ListVolumes(ctx context.Context, request ListVolumesRequest) (response ListVolumesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2255,9 +2568,16 @@ func (client BlockstorageClient) listVolumes(ctx context.Context, request common } // UpdateBootVolume Updates the specified boot volume's display name, defined tags, and free-form tags. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateBootVolume.go.html to see an example of how to use UpdateBootVolume API. func (client BlockstorageClient) UpdateBootVolume(ctx context.Context, request UpdateBootVolumeRequest) (response UpdateBootVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2303,9 +2623,16 @@ func (client BlockstorageClient) updateBootVolume(ctx context.Context, request c // UpdateBootVolumeBackup Updates the display name for the specified boot volume backup. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateBootVolumeBackup.go.html to see an example of how to use UpdateBootVolumeBackup API. func (client BlockstorageClient) UpdateBootVolumeBackup(ctx context.Context, request UpdateBootVolumeBackupRequest) (response UpdateBootVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2345,9 +2672,16 @@ func (client BlockstorageClient) updateBootVolumeBackup(ctx context.Context, req } // UpdateBootVolumeKmsKey Updates the specified volume with a new Key Management master encryption key. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateBootVolumeKmsKey.go.html to see an example of how to use UpdateBootVolumeKmsKey API. func (client BlockstorageClient) UpdateBootVolumeKmsKey(ctx context.Context, request UpdateBootVolumeKmsKeyRequest) (response UpdateBootVolumeKmsKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2393,9 +2727,16 @@ func (client BlockstorageClient) updateBootVolumeKmsKey(ctx context.Context, req // UpdateVolume Updates the specified volume's display name. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolume.go.html to see an example of how to use UpdateVolume API. func (client BlockstorageClient) UpdateVolume(ctx context.Context, request UpdateVolumeRequest) (response UpdateVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2441,9 +2782,16 @@ func (client BlockstorageClient) updateVolume(ctx context.Context, request commo // UpdateVolumeBackup Updates the display name for the specified volume backup. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeBackup.go.html to see an example of how to use UpdateVolumeBackup API. func (client BlockstorageClient) UpdateVolumeBackup(ctx context.Context, request UpdateVolumeBackupRequest) (response UpdateVolumeBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2486,9 +2834,16 @@ func (client BlockstorageClient) updateVolumeBackup(ctx context.Context, request // For more information about user defined backup policies, // see Policy-Based Backups (https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/schedulingvolumebackups.htm#UserDefinedBackupPolicies). // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeBackupPolicy.go.html to see an example of how to use UpdateVolumeBackupPolicy API. func (client BlockstorageClient) UpdateVolumeBackupPolicy(ctx context.Context, request UpdateVolumeBackupPolicyRequest) (response UpdateVolumeBackupPolicyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2542,9 +2897,16 @@ func (client BlockstorageClient) updateVolumeBackupPolicy(ctx context.Context, r // volume group. If the volume ID is not specified in the call, it will be removed from the volume group. // Avoid entering confidential information. // For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeGroup.go.html to see an example of how to use UpdateVolumeGroup API. func (client BlockstorageClient) UpdateVolumeGroup(ctx context.Context, request UpdateVolumeGroupRequest) (response UpdateVolumeGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2589,9 +2951,16 @@ func (client BlockstorageClient) updateVolumeGroup(ctx context.Context, request } // UpdateVolumeGroupBackup Updates the display name for the specified volume group backup. For more information, see Volume Groups (https://docs.cloud.oracle.com/Content/Block/Concepts/volumegroups.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeGroupBackup.go.html to see an example of how to use UpdateVolumeGroupBackup API. func (client BlockstorageClient) UpdateVolumeGroupBackup(ctx context.Context, request UpdateVolumeGroupBackupRequest) (response UpdateVolumeGroupBackupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2631,9 +3000,16 @@ func (client BlockstorageClient) updateVolumeGroupBackup(ctx context.Context, re } // UpdateVolumeKmsKey Updates the specified volume with a new Key Management master encryption key. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeKmsKey.go.html to see an example of how to use UpdateVolumeKmsKey API. func (client BlockstorageClient) UpdateVolumeKmsKey(ctx context.Context, request UpdateVolumeKmsKeyRequest) (response UpdateVolumeKmsKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/core_compute_client.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_compute_client.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/core_compute_client.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/core_compute_client.go index ba01e639e..bd29bcbdb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/core_compute_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_compute_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -16,7 +16,8 @@ package core import ( "context" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" + "github.com/oracle/oci-go-sdk/v36/common/auth" "net/http" ) @@ -29,12 +30,15 @@ type ComputeClient struct { // NewComputeClientWithConfigurationProvider Creates a new default Compute client with the given configuration provider. // the configuration provider will be used for the default signer as well as reading the region func NewComputeClientWithConfigurationProvider(configProvider common.ConfigurationProvider) (client ComputeClient, err error) { - baseClient, err := common.NewClientWithConfig(configProvider) + provider, err := auth.GetGenericConfigurationProvider(configProvider) if err != nil { - return + return client, err } - - return newComputeClientFromBaseClient(baseClient, configProvider) + baseClient, e := common.NewClientWithConfig(provider) + if e != nil { + return client, e + } + return newComputeClientFromBaseClient(baseClient, provider) } // NewComputeClientWithOboToken Creates a new default Compute client with the given configuration provider. @@ -43,7 +47,7 @@ func NewComputeClientWithConfigurationProvider(configProvider common.Configurati func NewComputeClientWithOboToken(configProvider common.ConfigurationProvider, oboToken string) (client ComputeClient, err error) { baseClient, err := common.NewClientWithOboToken(configProvider, oboToken) if err != nil { - return + return client, err } return newComputeClientFromBaseClient(baseClient, configProvider) @@ -80,9 +84,16 @@ func (client *ComputeClient) ConfigurationProvider() *common.ConfigurationProvid } // AddImageShapeCompatibilityEntry Adds a shape to the compatible shapes list for the image. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddImageShapeCompatibilityEntry.go.html to see an example of how to use AddImageShapeCompatibilityEntry API. func (client ComputeClient) AddImageShapeCompatibilityEntry(ctx context.Context, request AddImageShapeCompatibilityEntryRequest) (response AddImageShapeCompatibilityEntryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -127,9 +138,16 @@ func (client ComputeClient) addImageShapeCompatibilityEntry(ctx context.Context, } // AttachBootVolume Attaches the specified boot volume to the specified instance. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachBootVolume.go.html to see an example of how to use AttachBootVolume API. func (client ComputeClient) AttachBootVolume(ctx context.Context, request AttachBootVolumeRequest) (response AttachBootVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -181,9 +199,16 @@ func (client ComputeClient) attachBootVolume(ctx context.Context, request common // AttachVnic Creates a secondary VNIC and attaches it to the specified instance. // For more information about secondary VNICs, see // Virtual Network Interface Cards (VNICs) (https://docs.cloud.oracle.com/Content/Network/Tasks/managingVNICs.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachVnic.go.html to see an example of how to use AttachVnic API. func (client ComputeClient) AttachVnic(ctx context.Context, request AttachVnicRequest) (response AttachVnicResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -233,9 +258,16 @@ func (client ComputeClient) attachVnic(ctx context.Context, request common.OCIRe } // AttachVolume Attaches the specified storage volume to the specified instance. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachVolume.go.html to see an example of how to use AttachVolume API. func (client ComputeClient) AttachVolume(ctx context.Context, request AttachVolumeRequest) (response AttachVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -299,9 +331,16 @@ func (client ComputeClient) attachVolume(ctx context.Context, request common.OCI // metadata). // 4. Optionally, use `DeleteConsoleHistory` to delete the console history metadata // and the console history data. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CaptureConsoleHistory.go.html to see an example of how to use CaptureConsoleHistory API. func (client ComputeClient) CaptureConsoleHistory(ctx context.Context, request CaptureConsoleHistoryRequest) (response CaptureConsoleHistoryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -353,9 +392,16 @@ func (client ComputeClient) captureConsoleHistory(ctx context.Context, request c // ChangeComputeImageCapabilitySchemaCompartment Moves a compute image capability schema into a different compartment within the same tenancy. // For information about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeComputeImageCapabilitySchemaCompartment.go.html to see an example of how to use ChangeComputeImageCapabilitySchemaCompartment API. func (client ComputeClient) ChangeComputeImageCapabilitySchemaCompartment(ctx context.Context, request ChangeComputeImageCapabilitySchemaCompartmentRequest) (response ChangeComputeImageCapabilitySchemaCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -405,9 +451,16 @@ func (client ComputeClient) changeComputeImageCapabilitySchemaCompartment(ctx co } // ChangeDedicatedVmHostCompartment Moves a dedicated virtual machine host from one compartment to another. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeDedicatedVmHostCompartment.go.html to see an example of how to use ChangeDedicatedVmHostCompartment API. func (client ComputeClient) ChangeDedicatedVmHostCompartment(ctx context.Context, request ChangeDedicatedVmHostCompartmentRequest) (response ChangeDedicatedVmHostCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -459,9 +512,16 @@ func (client ComputeClient) changeDedicatedVmHostCompartment(ctx context.Context // ChangeImageCompartment Moves an image into a different compartment within the same tenancy. For information about moving // resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeImageCompartment.go.html to see an example of how to use ChangeImageCompartment API. func (client ComputeClient) ChangeImageCompartment(ctx context.Context, request ChangeImageCompartmentRequest) (response ChangeImageCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -515,9 +575,16 @@ func (client ComputeClient) changeImageCompartment(ctx context.Context, request // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). // When you move an instance to a different compartment, associated resources such as boot volumes and VNICs // are not moved. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInstanceCompartment.go.html to see an example of how to use ChangeInstanceCompartment API. func (client ComputeClient) ChangeInstanceCompartment(ctx context.Context, request ChangeInstanceCompartmentRequest) (response ChangeInstanceCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -567,9 +634,16 @@ func (client ComputeClient) changeInstanceCompartment(ctx context.Context, reque } // CreateAppCatalogSubscription Create a subscription for listing resource version for a compartment. It will take some time to propagate to all regions. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateAppCatalogSubscription.go.html to see an example of how to use CreateAppCatalogSubscription API. func (client ComputeClient) CreateAppCatalogSubscription(ctx context.Context, request CreateAppCatalogSubscriptionRequest) (response CreateAppCatalogSubscriptionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -619,9 +693,16 @@ func (client ComputeClient) createAppCatalogSubscription(ctx context.Context, re } // CreateComputeImageCapabilitySchema Creates compute image capability schema. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateComputeImageCapabilitySchema.go.html to see an example of how to use CreateComputeImageCapabilitySchema API. func (client ComputeClient) CreateComputeImageCapabilitySchema(ctx context.Context, request CreateComputeImageCapabilitySchemaRequest) (response CreateComputeImageCapabilitySchemaResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -674,9 +755,16 @@ func (client ComputeClient) createComputeImageCapabilitySchema(ctx context.Conte // Dedicated virtual machine hosts enable you to run your Compute virtual machine (VM) instances on dedicated servers // that are a single tenant and not shared with other customers. // For more information, see Dedicated Virtual Machine Hosts (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/dedicatedvmhosts.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDedicatedVmHost.go.html to see an example of how to use CreateDedicatedVmHost API. func (client ComputeClient) CreateDedicatedVmHost(ctx context.Context, request CreateDedicatedVmHostRequest) (response CreateDedicatedVmHostResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -742,9 +830,16 @@ func (client ComputeClient) createDedicatedVmHost(ctx context.Context, request c // You may optionally specify a *display name* for the image, which is simply a friendly name or description. // It does not have to be unique, and you can change it. See UpdateImage. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateImage.go.html to see an example of how to use CreateImage API. func (client ComputeClient) CreateImage(ctx context.Context, request CreateImageRequest) (response CreateImageResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -796,10 +891,17 @@ func (client ComputeClient) createImage(ctx context.Context, request common.OCIR // CreateInstanceConsoleConnection Creates a new console connection to the specified instance. // After the console connection has been created and is available, // you connect to the console using SSH. -// For more information about console access, see Accessing the Console (https://docs.cloud.oracle.com/Content/Compute/References/serialconsole.htm). +// For more information about instance console connections, see Troubleshooting Instances Using Instance Console Connections (https://docs.cloud.oracle.com/Content/Compute/References/serialconsole.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInstanceConsoleConnection.go.html to see an example of how to use CreateInstanceConsoleConnection API. func (client ComputeClient) CreateInstanceConsoleConnection(ctx context.Context, request CreateInstanceConsoleConnectionRequest) (response CreateInstanceConsoleConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -849,9 +951,16 @@ func (client ComputeClient) createInstanceConsoleConnection(ctx context.Context, } // DeleteAppCatalogSubscription Delete a subscription for a listing resource version for a compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteAppCatalogSubscription.go.html to see an example of how to use DeleteAppCatalogSubscription API. func (client ComputeClient) DeleteAppCatalogSubscription(ctx context.Context, request DeleteAppCatalogSubscriptionRequest) (response DeleteAppCatalogSubscriptionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -896,9 +1005,16 @@ func (client ComputeClient) deleteAppCatalogSubscription(ctx context.Context, re } // DeleteComputeImageCapabilitySchema Deletes the specified Compute Image Capability Schema +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteComputeImageCapabilitySchema.go.html to see an example of how to use DeleteComputeImageCapabilitySchema API. func (client ComputeClient) DeleteComputeImageCapabilitySchema(ctx context.Context, request DeleteComputeImageCapabilitySchemaRequest) (response DeleteComputeImageCapabilitySchemaResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -943,9 +1059,16 @@ func (client ComputeClient) deleteComputeImageCapabilitySchema(ctx context.Conte } // DeleteConsoleHistory Deletes the specified console history metadata and the console history data. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteConsoleHistory.go.html to see an example of how to use DeleteConsoleHistory API. func (client ComputeClient) DeleteConsoleHistory(ctx context.Context, request DeleteConsoleHistoryRequest) (response DeleteConsoleHistoryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -992,9 +1115,16 @@ func (client ComputeClient) deleteConsoleHistory(ctx context.Context, request co // DeleteDedicatedVmHost Deletes the specified dedicated virtual machine host. // If any VM instances are assigned to the dedicated virtual machine host, // the delete operation will fail and the service will return a 409 response code. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDedicatedVmHost.go.html to see an example of how to use DeleteDedicatedVmHost API. func (client ComputeClient) DeleteDedicatedVmHost(ctx context.Context, request DeleteDedicatedVmHostRequest) (response DeleteDedicatedVmHostResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1039,9 +1169,16 @@ func (client ComputeClient) deleteDedicatedVmHost(ctx context.Context, request c } // DeleteImage Deletes an image. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteImage.go.html to see an example of how to use DeleteImage API. func (client ComputeClient) DeleteImage(ctx context.Context, request DeleteImageRequest) (response DeleteImageResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1086,9 +1223,16 @@ func (client ComputeClient) deleteImage(ctx context.Context, request common.OCIR } // DeleteInstanceConsoleConnection Deletes the specified instance console connection. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteInstanceConsoleConnection.go.html to see an example of how to use DeleteInstanceConsoleConnection API. func (client ComputeClient) DeleteInstanceConsoleConnection(ctx context.Context, request DeleteInstanceConsoleConnectionRequest) (response DeleteInstanceConsoleConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1135,9 +1279,16 @@ func (client ComputeClient) deleteInstanceConsoleConnection(ctx context.Context, // DetachBootVolume Detaches a boot volume from an instance. You must specify the OCID of the boot volume attachment. // This is an asynchronous operation. The attachment's `lifecycleState` will change to DETACHING temporarily // until the attachment is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachBootVolume.go.html to see an example of how to use DetachBootVolume API. func (client ComputeClient) DetachBootVolume(ctx context.Context, request DetachBootVolumeRequest) (response DetachBootVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1190,9 +1341,16 @@ func (client ComputeClient) detachBootVolume(ctx context.Context, request common // target of a route rule (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm#privateip), // deleting the VNIC causes that route rule to blackhole and the traffic // will be dropped. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachVnic.go.html to see an example of how to use DetachVnic API. func (client ComputeClient) DetachVnic(ctx context.Context, request DetachVnicRequest) (response DetachVnicResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1239,9 +1397,16 @@ func (client ComputeClient) detachVnic(ctx context.Context, request common.OCIRe // DetachVolume Detaches a storage volume from an instance. You must specify the OCID of the volume attachment. // This is an asynchronous operation. The attachment's `lifecycleState` will change to DETACHING temporarily // until the attachment is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachVolume.go.html to see an example of how to use DetachVolume API. func (client ComputeClient) DetachVolume(ctx context.Context, request DetachVolumeRequest) (response DetachVolumeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1292,9 +1457,16 @@ func (client ComputeClient) detachVolume(ctx context.Context, request common.OCI // see Let Users Write Objects to Object Storage Buckets (https://docs.cloud.oracle.com/Content/Identity/Concepts/commonpolicies.htm#Let4). // See Object Storage URLs (https://docs.cloud.oracle.com/Content/Compute/Tasks/imageimportexport.htm#URLs) and Using Pre-Authenticated Requests (https://docs.cloud.oracle.com/Content/Object/Tasks/usingpreauthenticatedrequests.htm) // for constructing URLs for image import/export. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ExportImage.go.html to see an example of how to use ExportImage API. func (client ComputeClient) ExportImage(ctx context.Context, request ExportImageRequest) (response ExportImageResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1344,9 +1516,16 @@ func (client ComputeClient) exportImage(ctx context.Context, request common.OCIR } // GetAppCatalogListing Gets the specified listing. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetAppCatalogListing.go.html to see an example of how to use GetAppCatalogListing API. func (client ComputeClient) GetAppCatalogListing(ctx context.Context, request GetAppCatalogListingRequest) (response GetAppCatalogListingResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1391,9 +1570,16 @@ func (client ComputeClient) getAppCatalogListing(ctx context.Context, request co } // GetAppCatalogListingAgreements Retrieves the agreements for a particular resource version of a listing. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetAppCatalogListingAgreements.go.html to see an example of how to use GetAppCatalogListingAgreements API. func (client ComputeClient) GetAppCatalogListingAgreements(ctx context.Context, request GetAppCatalogListingAgreementsRequest) (response GetAppCatalogListingAgreementsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1438,9 +1624,16 @@ func (client ComputeClient) getAppCatalogListingAgreements(ctx context.Context, } // GetAppCatalogListingResourceVersion Gets the specified listing resource version. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetAppCatalogListingResourceVersion.go.html to see an example of how to use GetAppCatalogListingResourceVersion API. func (client ComputeClient) GetAppCatalogListingResourceVersion(ctx context.Context, request GetAppCatalogListingResourceVersionRequest) (response GetAppCatalogListingResourceVersionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1485,9 +1678,16 @@ func (client ComputeClient) getAppCatalogListingResourceVersion(ctx context.Cont } // GetBootVolumeAttachment Gets information about the specified boot volume attachment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolumeAttachment.go.html to see an example of how to use GetBootVolumeAttachment API. func (client ComputeClient) GetBootVolumeAttachment(ctx context.Context, request GetBootVolumeAttachmentRequest) (response GetBootVolumeAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1532,9 +1732,16 @@ func (client ComputeClient) getBootVolumeAttachment(ctx context.Context, request } // GetComputeGlobalImageCapabilitySchema Gets the specified Compute Global Image Capability Schema +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetComputeGlobalImageCapabilitySchema.go.html to see an example of how to use GetComputeGlobalImageCapabilitySchema API. func (client ComputeClient) GetComputeGlobalImageCapabilitySchema(ctx context.Context, request GetComputeGlobalImageCapabilitySchemaRequest) (response GetComputeGlobalImageCapabilitySchemaResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1579,9 +1786,16 @@ func (client ComputeClient) getComputeGlobalImageCapabilitySchema(ctx context.Co } // GetComputeGlobalImageCapabilitySchemaVersion Gets the specified Compute Global Image Capability Schema Version +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetComputeGlobalImageCapabilitySchemaVersion.go.html to see an example of how to use GetComputeGlobalImageCapabilitySchemaVersion API. func (client ComputeClient) GetComputeGlobalImageCapabilitySchemaVersion(ctx context.Context, request GetComputeGlobalImageCapabilitySchemaVersionRequest) (response GetComputeGlobalImageCapabilitySchemaVersionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1626,9 +1840,16 @@ func (client ComputeClient) getComputeGlobalImageCapabilitySchemaVersion(ctx con } // GetComputeImageCapabilitySchema Gets the specified Compute Image Capability Schema +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetComputeImageCapabilitySchema.go.html to see an example of how to use GetComputeImageCapabilitySchema API. func (client ComputeClient) GetComputeImageCapabilitySchema(ctx context.Context, request GetComputeImageCapabilitySchemaRequest) (response GetComputeImageCapabilitySchemaResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1675,9 +1896,16 @@ func (client ComputeClient) getComputeImageCapabilitySchema(ctx context.Context, // GetConsoleHistory Shows the metadata for the specified console history. // See CaptureConsoleHistory // for details about using the console history operations. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetConsoleHistory.go.html to see an example of how to use GetConsoleHistory API. func (client ComputeClient) GetConsoleHistory(ctx context.Context, request GetConsoleHistoryRequest) (response GetConsoleHistoryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1724,9 +1952,16 @@ func (client ComputeClient) getConsoleHistory(ctx context.Context, request commo // GetConsoleHistoryContent Gets the actual console history data (not the metadata). // See CaptureConsoleHistory // for details about using the console history operations. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetConsoleHistoryContent.go.html to see an example of how to use GetConsoleHistoryContent API. func (client ComputeClient) GetConsoleHistoryContent(ctx context.Context, request GetConsoleHistoryContentRequest) (response GetConsoleHistoryContentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1771,9 +2006,16 @@ func (client ComputeClient) getConsoleHistoryContent(ctx context.Context, reques } // GetDedicatedVmHost Gets information about the specified dedicated virtual machine host. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDedicatedVmHost.go.html to see an example of how to use GetDedicatedVmHost API. func (client ComputeClient) GetDedicatedVmHost(ctx context.Context, request GetDedicatedVmHostRequest) (response GetDedicatedVmHostResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1818,9 +2060,16 @@ func (client ComputeClient) getDedicatedVmHost(ctx context.Context, request comm } // GetImage Gets the specified image. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetImage.go.html to see an example of how to use GetImage API. func (client ComputeClient) GetImage(ctx context.Context, request GetImageRequest) (response GetImageResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1865,9 +2114,16 @@ func (client ComputeClient) getImage(ctx context.Context, request common.OCIRequ } // GetImageShapeCompatibilityEntry Retrieves an image shape compatibility entry. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetImageShapeCompatibilityEntry.go.html to see an example of how to use GetImageShapeCompatibilityEntry API. func (client ComputeClient) GetImageShapeCompatibilityEntry(ctx context.Context, request GetImageShapeCompatibilityEntryRequest) (response GetImageShapeCompatibilityEntryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1912,9 +2168,16 @@ func (client ComputeClient) getImageShapeCompatibilityEntry(ctx context.Context, } // GetInstance Gets information about the specified instance. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstance.go.html to see an example of how to use GetInstance API. func (client ComputeClient) GetInstance(ctx context.Context, request GetInstanceRequest) (response GetInstanceResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1959,9 +2222,16 @@ func (client ComputeClient) getInstance(ctx context.Context, request common.OCIR } // GetInstanceConsoleConnection Gets the specified instance console connection's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstanceConsoleConnection.go.html to see an example of how to use GetInstanceConsoleConnection API. func (client ComputeClient) GetInstanceConsoleConnection(ctx context.Context, request GetInstanceConsoleConnectionRequest) (response GetInstanceConsoleConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2006,9 +2276,16 @@ func (client ComputeClient) getInstanceConsoleConnection(ctx context.Context, re } // GetVnicAttachment Gets the information for the specified VNIC attachment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVnicAttachment.go.html to see an example of how to use GetVnicAttachment API. func (client ComputeClient) GetVnicAttachment(ctx context.Context, request GetVnicAttachmentRequest) (response GetVnicAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2053,9 +2330,16 @@ func (client ComputeClient) getVnicAttachment(ctx context.Context, request commo } // GetVolumeAttachment Gets information about the specified volume attachment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeAttachment.go.html to see an example of how to use GetVolumeAttachment API. func (client ComputeClient) GetVolumeAttachment(ctx context.Context, request GetVolumeAttachmentRequest) (response GetVolumeAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2101,9 +2385,16 @@ func (client ComputeClient) getVolumeAttachment(ctx context.Context, request com // GetWindowsInstanceInitialCredentials Gets the generated credentials for the instance. Only works for instances that require a password to log in, such as Windows. // For certain operating systems, users will be forced to change the initial credentials. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetWindowsInstanceInitialCredentials.go.html to see an example of how to use GetWindowsInstanceInitialCredentials API. func (client ComputeClient) GetWindowsInstanceInitialCredentials(ctx context.Context, request GetWindowsInstanceInitialCredentialsRequest) (response GetWindowsInstanceInitialCredentialsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2152,15 +2443,32 @@ func (client ComputeClient) getWindowsInstanceInitialCredentials(ctx context.Con // - **STOP** - Powers off the instance. // - **RESET** - Powers off the instance and then powers it back on. // - **SOFTSTOP** - Gracefully shuts down the instance by sending a shutdown command to the operating system. -// If the applications that run on the instance take a long time to shut down, they could be improperly stopped, resulting -// in data corruption. To avoid this, shut down the instance using the commands available in the OS before you softstop the +// After waiting 15 minutes for the OS to shut down, the instance is powered off. +// If the applications that run on the instance take more than 15 minutes to shut down, they could be improperly stopped, resulting +// in data corruption. To avoid this, manually shut down the instance using the commands available in the OS before you softstop the // instance. -// - **SOFTRESET** - Gracefully reboots the instance by sending a shutdown command to the operating system, and -// then powers the instance back on. -// For more information, see Stopping and Starting an Instance (https://docs.cloud.oracle.com/Content/Compute/Tasks/restartinginstance.htm). +// - **SOFTRESET** - Gracefully reboots the instance by sending a shutdown command to the operating system. +// After waiting 15 minutes for the OS to shut down, the instance is powered off and +// then powered back on. +// - **SENDDIAGNOSTICINTERRUPT** - For advanced users. **Warning: Sending a diagnostic interrupt to a live system can +// cause data corruption or system failure.** Sends a diagnostic interrupt that causes the instance's +// OS to crash and then reboot. Before you send a diagnostic interrupt, you must configure the instance to generate a +// crash dump file when it crashes. The crash dump captures information about the state of the OS at the time of +// the crash. After the OS restarts, you can analyze the crash dump to diagnose the issue. For more information, see +// Sending a Diagnostic Interrupt (https://docs.cloud.oracle.com/Content/Compute/Tasks/sendingdiagnosticinterrupt.htm). +// +// For more information about managing instance lifecycle states, see +// Stopping and Starting an Instance (https://docs.cloud.oracle.com/Content/Compute/Tasks/restartinginstance.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/InstanceAction.go.html to see an example of how to use InstanceAction API. func (client ComputeClient) InstanceAction(ctx context.Context, request InstanceActionRequest) (response InstanceActionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2241,9 +2549,16 @@ func (client ComputeClient) instanceAction(ctx context.Context, request common.O // Then, call CreateAppCatalogSubscription // with the signature. To get the image ID for the LaunchInstance operation, call // GetAppCatalogListingResourceVersion. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/LaunchInstance.go.html to see an example of how to use LaunchInstance API. func (client ComputeClient) LaunchInstance(ctx context.Context, request LaunchInstanceRequest) (response LaunchInstanceResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2293,9 +2608,16 @@ func (client ComputeClient) launchInstance(ctx context.Context, request common.O } // ListAppCatalogListingResourceVersions Gets all resource versions for a particular listing. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAppCatalogListingResourceVersions.go.html to see an example of how to use ListAppCatalogListingResourceVersions API. func (client ComputeClient) ListAppCatalogListingResourceVersions(ctx context.Context, request ListAppCatalogListingResourceVersionsRequest) (response ListAppCatalogListingResourceVersionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2340,9 +2662,16 @@ func (client ComputeClient) listAppCatalogListingResourceVersions(ctx context.Co } // ListAppCatalogListings Lists the published listings. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAppCatalogListings.go.html to see an example of how to use ListAppCatalogListings API. func (client ComputeClient) ListAppCatalogListings(ctx context.Context, request ListAppCatalogListingsRequest) (response ListAppCatalogListingsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2387,9 +2716,16 @@ func (client ComputeClient) listAppCatalogListings(ctx context.Context, request } // ListAppCatalogSubscriptions Lists subscriptions for a compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAppCatalogSubscriptions.go.html to see an example of how to use ListAppCatalogSubscriptions API. func (client ComputeClient) ListAppCatalogSubscriptions(ctx context.Context, request ListAppCatalogSubscriptionsRequest) (response ListAppCatalogSubscriptionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2435,9 +2771,16 @@ func (client ComputeClient) listAppCatalogSubscriptions(ctx context.Context, req // ListBootVolumeAttachments Lists the boot volume attachments in the specified compartment. You can filter the // list by specifying an instance OCID, boot volume OCID, or both. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListBootVolumeAttachments.go.html to see an example of how to use ListBootVolumeAttachments API. func (client ComputeClient) ListBootVolumeAttachments(ctx context.Context, request ListBootVolumeAttachmentsRequest) (response ListBootVolumeAttachmentsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2482,9 +2825,16 @@ func (client ComputeClient) listBootVolumeAttachments(ctx context.Context, reque } // ListComputeGlobalImageCapabilitySchemaVersions Lists Compute Global Image Capability Schema versions in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListComputeGlobalImageCapabilitySchemaVersions.go.html to see an example of how to use ListComputeGlobalImageCapabilitySchemaVersions API. func (client ComputeClient) ListComputeGlobalImageCapabilitySchemaVersions(ctx context.Context, request ListComputeGlobalImageCapabilitySchemaVersionsRequest) (response ListComputeGlobalImageCapabilitySchemaVersionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2529,9 +2879,16 @@ func (client ComputeClient) listComputeGlobalImageCapabilitySchemaVersions(ctx c } // ListComputeGlobalImageCapabilitySchemas Lists Compute Global Image Capability Schema in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListComputeGlobalImageCapabilitySchemas.go.html to see an example of how to use ListComputeGlobalImageCapabilitySchemas API. func (client ComputeClient) ListComputeGlobalImageCapabilitySchemas(ctx context.Context, request ListComputeGlobalImageCapabilitySchemasRequest) (response ListComputeGlobalImageCapabilitySchemasResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2576,9 +2933,16 @@ func (client ComputeClient) listComputeGlobalImageCapabilitySchemas(ctx context. } // ListComputeImageCapabilitySchemas Lists Compute Image Capability Schema in the specified compartment. You can also query by a specific imageId. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListComputeImageCapabilitySchemas.go.html to see an example of how to use ListComputeImageCapabilitySchemas API. func (client ComputeClient) ListComputeImageCapabilitySchemas(ctx context.Context, request ListComputeImageCapabilitySchemasRequest) (response ListComputeImageCapabilitySchemasResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2623,9 +2987,16 @@ func (client ComputeClient) listComputeImageCapabilitySchemas(ctx context.Contex } // ListConsoleHistories Lists the console history metadata for the specified compartment or instance. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListConsoleHistories.go.html to see an example of how to use ListConsoleHistories API. func (client ComputeClient) ListConsoleHistories(ctx context.Context, request ListConsoleHistoriesRequest) (response ListConsoleHistoriesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2671,9 +3042,16 @@ func (client ComputeClient) listConsoleHistories(ctx context.Context, request co // ListDedicatedVmHostInstanceShapes Lists the shapes that can be used to launch a virtual machine instance on a dedicated virtual machine host within the specified compartment. // You can filter the list by compatibility with a specific dedicated virtual machine host shape. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHostInstanceShapes.go.html to see an example of how to use ListDedicatedVmHostInstanceShapes API. func (client ComputeClient) ListDedicatedVmHostInstanceShapes(ctx context.Context, request ListDedicatedVmHostInstanceShapesRequest) (response ListDedicatedVmHostInstanceShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2718,9 +3096,16 @@ func (client ComputeClient) listDedicatedVmHostInstanceShapes(ctx context.Contex } // ListDedicatedVmHostInstances Returns the list of instances on the dedicated virtual machine hosts that match the specified criteria. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHostInstances.go.html to see an example of how to use ListDedicatedVmHostInstances API. func (client ComputeClient) ListDedicatedVmHostInstances(ctx context.Context, request ListDedicatedVmHostInstancesRequest) (response ListDedicatedVmHostInstancesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2765,9 +3150,16 @@ func (client ComputeClient) listDedicatedVmHostInstances(ctx context.Context, re } // ListDedicatedVmHostShapes Lists the shapes that can be used to launch a dedicated virtual machine host within the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHostShapes.go.html to see an example of how to use ListDedicatedVmHostShapes API. func (client ComputeClient) ListDedicatedVmHostShapes(ctx context.Context, request ListDedicatedVmHostShapesRequest) (response ListDedicatedVmHostShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2814,9 +3206,16 @@ func (client ComputeClient) listDedicatedVmHostShapes(ctx context.Context, reque // ListDedicatedVmHosts Returns the list of dedicated virtual machine hosts that match the specified criteria in the specified compartment. // You can limit the list by specifying a dedicated virtual machine host display name. The list will include all the identically-named // dedicated virtual machine hosts in the compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHosts.go.html to see an example of how to use ListDedicatedVmHosts API. func (client ComputeClient) ListDedicatedVmHosts(ctx context.Context, request ListDedicatedVmHostsRequest) (response ListDedicatedVmHostsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2861,9 +3260,16 @@ func (client ComputeClient) listDedicatedVmHosts(ctx context.Context, request co } // ListImageShapeCompatibilityEntries Lists the compatible shapes for the specified image. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListImageShapeCompatibilityEntries.go.html to see an example of how to use ListImageShapeCompatibilityEntries API. func (client ComputeClient) ListImageShapeCompatibilityEntries(ctx context.Context, request ListImageShapeCompatibilityEntriesRequest) (response ListImageShapeCompatibilityEntriesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2913,9 +3319,16 @@ func (client ComputeClient) listImageShapeCompatibilityEntries(ctx context.Conte // been created. The list of images returned is ordered to first show all // Oracle-provided images, then all custom images. // The order of images returned may change when new images are released. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListImages.go.html to see an example of how to use ListImages API. func (client ComputeClient) ListImages(ctx context.Context, request ListImagesRequest) (response ListImagesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2960,10 +3373,17 @@ func (client ComputeClient) listImages(ctx context.Context, request common.OCIRe } // ListInstanceConsoleConnections Lists the console connections for the specified compartment or instance. -// For more information about console access, see Accessing the Console (https://docs.cloud.oracle.com/Content/Compute/References/serialconsole.htm). +// For more information about instance console connections, see Troubleshooting Instances Using Instance Console Connections (https://docs.cloud.oracle.com/Content/Compute/References/serialconsole.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstanceConsoleConnections.go.html to see an example of how to use ListInstanceConsoleConnections API. func (client ComputeClient) ListInstanceConsoleConnections(ctx context.Context, request ListInstanceConsoleConnectionsRequest) (response ListInstanceConsoleConnectionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3008,9 +3428,16 @@ func (client ComputeClient) listInstanceConsoleConnections(ctx context.Context, } // ListInstanceDevices Gets a list of all the devices for given instance. You can optionally filter results by device availability. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstanceDevices.go.html to see an example of how to use ListInstanceDevices API. func (client ComputeClient) ListInstanceDevices(ctx context.Context, request ListInstanceDevicesRequest) (response ListInstanceDevicesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3057,9 +3484,16 @@ func (client ComputeClient) listInstanceDevices(ctx context.Context, request com // ListInstances Lists the instances in the specified compartment and the specified availability domain. // You can filter the results by specifying an instance name (the list will include all the identically-named // instances in the compartment). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstances.go.html to see an example of how to use ListInstances API. func (client ComputeClient) ListInstances(ctx context.Context, request ListInstancesRequest) (response ListInstancesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3105,9 +3539,16 @@ func (client ComputeClient) listInstances(ctx context.Context, request common.OC // ListShapes Lists the shapes that can be used to launch an instance within the specified compartment. You can // filter the list by compatibility with a specific image. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListShapes.go.html to see an example of how to use ListShapes API. func (client ComputeClient) ListShapes(ctx context.Context, request ListShapesRequest) (response ListShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3154,9 +3595,16 @@ func (client ComputeClient) listShapes(ctx context.Context, request common.OCIRe // ListVnicAttachments Lists the VNIC attachments in the specified compartment. A VNIC attachment // resides in the same compartment as the attached instance. The list can be // filtered by instance, VNIC, or availability domain. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVnicAttachments.go.html to see an example of how to use ListVnicAttachments API. func (client ComputeClient) ListVnicAttachments(ctx context.Context, request ListVnicAttachmentsRequest) (response ListVnicAttachmentsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3220,9 +3668,16 @@ func (m *listvolumeattachment) UnmarshalPolymorphicJSON(data []byte) (interface{ // list by specifying an instance OCID, volume OCID, or both. // Currently, the only supported volume attachment type are IScsiVolumeAttachment and // ParavirtualizedVolumeAttachment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeAttachments.go.html to see an example of how to use ListVolumeAttachments API. func (client ComputeClient) ListVolumeAttachments(ctx context.Context, request ListVolumeAttachmentsRequest) (response ListVolumeAttachmentsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3267,9 +3722,16 @@ func (client ComputeClient) listVolumeAttachments(ctx context.Context, request c } // RemoveImageShapeCompatibilityEntry Removes a shape from the compatible shapes list for the image. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemoveImageShapeCompatibilityEntry.go.html to see an example of how to use RemoveImageShapeCompatibilityEntry API. func (client ComputeClient) RemoveImageShapeCompatibilityEntry(ctx context.Context, request RemoveImageShapeCompatibilityEntryRequest) (response RemoveImageShapeCompatibilityEntryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3319,9 +3781,16 @@ func (client ComputeClient) removeImageShapeCompatibilityEntry(ctx context.Conte // To delete the boot volume when the instance is deleted, specify `false` or do not specify a value for `PreserveBootVolumeQueryParam`. // This is an asynchronous operation. The instance's `lifecycleState` will change to TERMINATING temporarily // until the instance is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/TerminateInstance.go.html to see an example of how to use TerminateInstance API. func (client ComputeClient) TerminateInstance(ctx context.Context, request TerminateInstanceRequest) (response TerminateInstanceResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3366,9 +3835,16 @@ func (client ComputeClient) terminateInstance(ctx context.Context, request commo } // UpdateComputeImageCapabilitySchema Updates the specified Compute Image Capability Schema +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateComputeImageCapabilitySchema.go.html to see an example of how to use UpdateComputeImageCapabilitySchema API. func (client ComputeClient) UpdateComputeImageCapabilitySchema(ctx context.Context, request UpdateComputeImageCapabilitySchemaRequest) (response UpdateComputeImageCapabilitySchemaResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3413,9 +3889,16 @@ func (client ComputeClient) updateComputeImageCapabilitySchema(ctx context.Conte } // UpdateConsoleHistory Updates the specified console history metadata. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateConsoleHistory.go.html to see an example of how to use UpdateConsoleHistory API. func (client ComputeClient) UpdateConsoleHistory(ctx context.Context, request UpdateConsoleHistoryRequest) (response UpdateConsoleHistoryResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3461,9 +3944,16 @@ func (client ComputeClient) updateConsoleHistory(ctx context.Context, request co // UpdateDedicatedVmHost Updates the displayName, freeformTags, and definedTags attributes for the specified dedicated virtual machine host. // If an attribute value is not included, it will not be updated. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDedicatedVmHost.go.html to see an example of how to use UpdateDedicatedVmHost API. func (client ComputeClient) UpdateDedicatedVmHost(ctx context.Context, request UpdateDedicatedVmHostRequest) (response UpdateDedicatedVmHostResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3513,9 +4003,16 @@ func (client ComputeClient) updateDedicatedVmHost(ctx context.Context, request c } // UpdateImage Updates the display name of the image. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateImage.go.html to see an example of how to use UpdateImage API. func (client ComputeClient) UpdateImage(ctx context.Context, request UpdateImageRequest) (response UpdateImageResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3569,9 +4066,16 @@ func (client ComputeClient) updateImage(ctx context.Context, request common.OCIR // Changes to metadata fields will be reflected in the instance metadata service (this may take // up to a minute). // The OCID of the instance remains the same. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstance.go.html to see an example of how to use UpdateInstance API. func (client ComputeClient) UpdateInstance(ctx context.Context, request UpdateInstanceRequest) (response UpdateInstanceResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3619,3 +4123,57 @@ func (client ComputeClient) updateInstance(ctx context.Context, request common.O err = common.UnmarshalResponse(httpResponse, &response) return response, err } + +// UpdateInstanceConsoleConnection Updates the defined tags and free-form tags for the specified instance console connection. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstanceConsoleConnection.go.html to see an example of how to use UpdateInstanceConsoleConnection API. +func (client ComputeClient) UpdateInstanceConsoleConnection(ctx context.Context, request UpdateInstanceConsoleConnectionRequest) (response UpdateInstanceConsoleConnectionResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.updateInstanceConsoleConnection, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = UpdateInstanceConsoleConnectionResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = UpdateInstanceConsoleConnectionResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(UpdateInstanceConsoleConnectionResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into UpdateInstanceConsoleConnectionResponse") + } + return +} + +// updateInstanceConsoleConnection implements the OCIOperation interface (enables retrying operations) +func (client ComputeClient) updateInstanceConsoleConnection(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPut, "/instanceConsoleConnections/{instanceConsoleConnectionId}") + if err != nil { + return nil, err + } + + var response UpdateInstanceConsoleConnectionResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/core_computemanagement_client.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_computemanagement_client.go similarity index 79% rename from vendor/github.com/oracle/oci-go-sdk/core/core_computemanagement_client.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/core_computemanagement_client.go index da99d6c6c..d2034505e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/core_computemanagement_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_computemanagement_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -16,7 +16,8 @@ package core import ( "context" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" + "github.com/oracle/oci-go-sdk/v36/common/auth" "net/http" ) @@ -29,12 +30,15 @@ type ComputeManagementClient struct { // NewComputeManagementClientWithConfigurationProvider Creates a new default ComputeManagement client with the given configuration provider. // the configuration provider will be used for the default signer as well as reading the region func NewComputeManagementClientWithConfigurationProvider(configProvider common.ConfigurationProvider) (client ComputeManagementClient, err error) { - baseClient, err := common.NewClientWithConfig(configProvider) + provider, err := auth.GetGenericConfigurationProvider(configProvider) if err != nil { - return + return client, err } - - return newComputeManagementClientFromBaseClient(baseClient, configProvider) + baseClient, e := common.NewClientWithConfig(provider) + if e != nil { + return client, e + } + return newComputeManagementClientFromBaseClient(baseClient, provider) } // NewComputeManagementClientWithOboToken Creates a new default ComputeManagement client with the given configuration provider. @@ -43,7 +47,7 @@ func NewComputeManagementClientWithConfigurationProvider(configProvider common.C func NewComputeManagementClientWithOboToken(configProvider common.ConfigurationProvider, oboToken string) (client ComputeManagementClient, err error) { baseClient, err := common.NewClientWithOboToken(configProvider, oboToken) if err != nil { - return + return client, err } return newComputeManagementClientFromBaseClient(baseClient, configProvider) @@ -79,10 +83,76 @@ func (client *ComputeManagementClient) ConfigurationProvider() *common.Configura return client.config } +// AttachInstancePoolInstance Attach an instance to the instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachInstancePoolInstance.go.html to see an example of how to use AttachInstancePoolInstance API. +func (client ComputeManagementClient) AttachInstancePoolInstance(ctx context.Context, request AttachInstancePoolInstanceRequest) (response AttachInstancePoolInstanceResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.attachInstancePoolInstance, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = AttachInstancePoolInstanceResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = AttachInstancePoolInstanceResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(AttachInstancePoolInstanceResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into AttachInstancePoolInstanceResponse") + } + return +} + +// attachInstancePoolInstance implements the OCIOperation interface (enables retrying operations) +func (client ComputeManagementClient) attachInstancePoolInstance(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/instancePools/{instancePoolId}/instances") + if err != nil { + return nil, err + } + + var response AttachInstancePoolInstanceResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // AttachLoadBalancer Attach a load balancer to the instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachLoadBalancer.go.html to see an example of how to use AttachLoadBalancer API. func (client ComputeManagementClient) AttachLoadBalancer(ctx context.Context, request AttachLoadBalancerRequest) (response AttachLoadBalancerResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -136,9 +206,16 @@ func (client ComputeManagementClient) attachLoadBalancer(ctx context.Context, re // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). // When you move a cluster network to a different compartment, associated resources such as the instances // in the cluster network, boot volumes, and VNICs are not moved. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeClusterNetworkCompartment.go.html to see an example of how to use ChangeClusterNetworkCompartment API. func (client ComputeManagementClient) ChangeClusterNetworkCompartment(ctx context.Context, request ChangeClusterNetworkCompartmentRequest) (response ChangeClusterNetworkCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -198,9 +275,16 @@ func (client ComputeManagementClient) changeClusterNetworkCompartment(ctx contex // in the new compartment. If you want to update an instance configuration to point to a different compartment, // you should instead create a new instance configuration in the target compartment using // CreateInstanceConfiguration (https://docs.cloud.oracle.com/iaas/api/#/en/iaas/20160918/InstanceConfiguration/CreateInstanceConfiguration). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInstanceConfigurationCompartment.go.html to see an example of how to use ChangeInstanceConfigurationCompartment API. func (client ComputeManagementClient) ChangeInstanceConfigurationCompartment(ctx context.Context, request ChangeInstanceConfigurationCompartmentRequest) (response ChangeInstanceConfigurationCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -254,9 +338,16 @@ func (client ComputeManagementClient) changeInstanceConfigurationCompartment(ctx // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). // When you move an instance pool to a different compartment, associated resources such as the instances in // the pool, boot volumes, VNICs, and autoscaling configurations are not moved. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInstancePoolCompartment.go.html to see an example of how to use ChangeInstancePoolCompartment API. func (client ComputeManagementClient) ChangeInstancePoolCompartment(ctx context.Context, request ChangeInstancePoolCompartmentRequest) (response ChangeInstancePoolCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -307,9 +398,16 @@ func (client ComputeManagementClient) changeInstancePoolCompartment(ctx context. // CreateClusterNetwork Creates a cluster network. For more information about cluster networks, see // Managing Cluster Networks (https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/managingclusternetworks.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateClusterNetwork.go.html to see an example of how to use CreateClusterNetwork API. func (client ComputeManagementClient) CreateClusterNetwork(ctx context.Context, request CreateClusterNetworkRequest) (response CreateClusterNetworkResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -360,9 +458,16 @@ func (client ComputeManagementClient) createClusterNetwork(ctx context.Context, // CreateInstanceConfiguration Creates an instance configuration. An instance configuration is a template that defines the // settings to use when creating Compute instances. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInstanceConfiguration.go.html to see an example of how to use CreateInstanceConfiguration API. func (client ComputeManagementClient) CreateInstanceConfiguration(ctx context.Context, request CreateInstanceConfigurationRequest) (response CreateInstanceConfigurationResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -412,9 +517,16 @@ func (client ComputeManagementClient) createInstanceConfiguration(ctx context.Co } // CreateInstancePool Create an instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInstancePool.go.html to see an example of how to use CreateInstancePool API. func (client ComputeManagementClient) CreateInstancePool(ctx context.Context, request CreateInstancePoolRequest) (response CreateInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -464,9 +576,16 @@ func (client ComputeManagementClient) createInstancePool(ctx context.Context, re } // DeleteInstanceConfiguration Deletes an instance configuration. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteInstanceConfiguration.go.html to see an example of how to use DeleteInstanceConfiguration API. func (client ComputeManagementClient) DeleteInstanceConfiguration(ctx context.Context, request DeleteInstanceConfigurationRequest) (response DeleteInstanceConfigurationResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -510,10 +629,76 @@ func (client ComputeManagementClient) deleteInstanceConfiguration(ctx context.Co return response, err } +// DetachInstancePoolInstance Detach instance from the instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachInstancePoolInstance.go.html to see an example of how to use DetachInstancePoolInstance API. +func (client ComputeManagementClient) DetachInstancePoolInstance(ctx context.Context, request DetachInstancePoolInstanceRequest) (response DetachInstancePoolInstanceResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.detachInstancePoolInstance, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = DetachInstancePoolInstanceResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = DetachInstancePoolInstanceResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(DetachInstancePoolInstanceResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into DetachInstancePoolInstanceResponse") + } + return +} + +// detachInstancePoolInstance implements the OCIOperation interface (enables retrying operations) +func (client ComputeManagementClient) detachInstancePoolInstance(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/instancePools/{instancePoolId}/actions/detachInstance") + if err != nil { + return nil, err + } + + var response DetachInstancePoolInstanceResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // DetachLoadBalancer Detach a load balancer from the instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachLoadBalancer.go.html to see an example of how to use DetachLoadBalancer API. func (client ComputeManagementClient) DetachLoadBalancer(ctx context.Context, request DetachLoadBalancerRequest) (response DetachLoadBalancerResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -563,9 +748,16 @@ func (client ComputeManagementClient) detachLoadBalancer(ctx context.Context, re } // GetClusterNetwork Gets information about the specified cluster network. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetClusterNetwork.go.html to see an example of how to use GetClusterNetwork API. func (client ComputeManagementClient) GetClusterNetwork(ctx context.Context, request GetClusterNetworkRequest) (response GetClusterNetworkResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -610,9 +802,16 @@ func (client ComputeManagementClient) getClusterNetwork(ctx context.Context, req } // GetInstanceConfiguration Gets the specified instance configuration +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstanceConfiguration.go.html to see an example of how to use GetInstanceConfiguration API. func (client ComputeManagementClient) GetInstanceConfiguration(ctx context.Context, request GetInstanceConfigurationRequest) (response GetInstanceConfigurationResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -657,9 +856,16 @@ func (client ComputeManagementClient) getInstanceConfiguration(ctx context.Conte } // GetInstancePool Gets the specified instance pool +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstancePool.go.html to see an example of how to use GetInstancePool API. func (client ComputeManagementClient) GetInstancePool(ctx context.Context, request GetInstancePoolRequest) (response GetInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -703,10 +909,71 @@ func (client ComputeManagementClient) getInstancePool(ctx context.Context, reque return response, err } +// GetInstancePoolInstance Gets the instance pool instance +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstancePoolInstance.go.html to see an example of how to use GetInstancePoolInstance API. +func (client ComputeManagementClient) GetInstancePoolInstance(ctx context.Context, request GetInstancePoolInstanceRequest) (response GetInstancePoolInstanceResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.getInstancePoolInstance, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = GetInstancePoolInstanceResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = GetInstancePoolInstanceResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(GetInstancePoolInstanceResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into GetInstancePoolInstanceResponse") + } + return +} + +// getInstancePoolInstance implements the OCIOperation interface (enables retrying operations) +func (client ComputeManagementClient) getInstancePoolInstance(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/instancePools/{instancePoolId}/instances/{instanceId}") + if err != nil { + return nil, err + } + + var response GetInstancePoolInstanceResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // GetInstancePoolLoadBalancerAttachment Gets information about a load balancer that is attached to the specified instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstancePoolLoadBalancerAttachment.go.html to see an example of how to use GetInstancePoolLoadBalancerAttachment API. func (client ComputeManagementClient) GetInstancePoolLoadBalancerAttachment(ctx context.Context, request GetInstancePoolLoadBalancerAttachmentRequest) (response GetInstancePoolLoadBalancerAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -756,9 +1023,16 @@ func (client ComputeManagementClient) getInstancePoolLoadBalancerAttachment(ctx // provide these parameters when you launch an instance from the instance configuration. // For more information, see the InstanceConfiguration // resource. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/LaunchInstanceConfiguration.go.html to see an example of how to use LaunchInstanceConfiguration API. func (client ComputeManagementClient) LaunchInstanceConfiguration(ctx context.Context, request LaunchInstanceConfigurationRequest) (response LaunchInstanceConfigurationResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -808,9 +1082,16 @@ func (client ComputeManagementClient) launchInstanceConfiguration(ctx context.Co } // ListClusterNetworkInstances Lists the instances in the specified cluster network. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListClusterNetworkInstances.go.html to see an example of how to use ListClusterNetworkInstances API. func (client ComputeManagementClient) ListClusterNetworkInstances(ctx context.Context, request ListClusterNetworkInstancesRequest) (response ListClusterNetworkInstancesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -855,9 +1136,16 @@ func (client ComputeManagementClient) listClusterNetworkInstances(ctx context.Co } // ListClusterNetworks Lists the cluster networks in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListClusterNetworks.go.html to see an example of how to use ListClusterNetworks API. func (client ComputeManagementClient) ListClusterNetworks(ctx context.Context, request ListClusterNetworksRequest) (response ListClusterNetworksResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -902,9 +1190,16 @@ func (client ComputeManagementClient) listClusterNetworks(ctx context.Context, r } // ListInstanceConfigurations Lists the instance configurations in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstanceConfigurations.go.html to see an example of how to use ListInstanceConfigurations API. func (client ComputeManagementClient) ListInstanceConfigurations(ctx context.Context, request ListInstanceConfigurationsRequest) (response ListInstanceConfigurationsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -949,9 +1244,16 @@ func (client ComputeManagementClient) listInstanceConfigurations(ctx context.Con } // ListInstancePoolInstances List the instances in the specified instance pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstancePoolInstances.go.html to see an example of how to use ListInstancePoolInstances API. func (client ComputeManagementClient) ListInstancePoolInstances(ctx context.Context, request ListInstancePoolInstancesRequest) (response ListInstancePoolInstancesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -996,9 +1298,16 @@ func (client ComputeManagementClient) listInstancePoolInstances(ctx context.Cont } // ListInstancePools Lists the instance pools in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstancePools.go.html to see an example of how to use ListInstancePools API. func (client ComputeManagementClient) ListInstancePools(ctx context.Context, request ListInstancePoolsRequest) (response ListInstancePoolsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1042,11 +1351,18 @@ func (client ComputeManagementClient) listInstancePools(ctx context.Context, req return response, err } -// ResetInstancePool Performs the reset (power off and power on) action on the specified instance pool, +// ResetInstancePool Performs the reset (immediate power off and power on) action on the specified instance pool, // which performs the action on all the instances in the pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ResetInstancePool.go.html to see an example of how to use ResetInstancePool API. func (client ComputeManagementClient) ResetInstancePool(ctx context.Context, request ResetInstancePoolRequest) (response ResetInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1097,9 +1413,18 @@ func (client ComputeManagementClient) resetInstancePool(ctx context.Context, req // SoftresetInstancePool Performs the softreset (ACPI shutdown and power on) action on the specified instance pool, // which performs the action on all the instances in the pool. +// Softreset gracefully reboots the instances by sending a shutdown command to the operating systems. +// After waiting 15 minutes for the OS to shut down, the instances are powered off and then powered back on. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/SoftresetInstancePool.go.html to see an example of how to use SoftresetInstancePool API. func (client ComputeManagementClient) SoftresetInstancePool(ctx context.Context, request SoftresetInstancePoolRequest) (response SoftresetInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1150,9 +1475,16 @@ func (client ComputeManagementClient) softresetInstancePool(ctx context.Context, // StartInstancePool Performs the start (power on) action on the specified instance pool, // which performs the action on all the instances in the pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/StartInstancePool.go.html to see an example of how to use StartInstancePool API. func (client ComputeManagementClient) StartInstancePool(ctx context.Context, request StartInstancePoolRequest) (response StartInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1201,11 +1533,18 @@ func (client ComputeManagementClient) startInstancePool(ctx context.Context, req return response, err } -// StopInstancePool Performs the stop (power off) action on the specified instance pool, +// StopInstancePool Performs the stop (immediate power off) action on the specified instance pool, // which performs the action on all the instances in the pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/StopInstancePool.go.html to see an example of how to use StopInstancePool API. func (client ComputeManagementClient) StopInstancePool(ctx context.Context, request StopInstancePoolRequest) (response StopInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1257,9 +1596,16 @@ func (client ComputeManagementClient) stopInstancePool(ctx context.Context, requ // TerminateClusterNetwork Terminates the specified cluster network. // When you delete a cluster network, all of its resources are permanently deleted, // including associated instances and instance pools. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/TerminateClusterNetwork.go.html to see an example of how to use TerminateClusterNetwork API. func (client ComputeManagementClient) TerminateClusterNetwork(ctx context.Context, request TerminateClusterNetworkRequest) (response TerminateClusterNetworkResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1309,9 +1655,16 @@ func (client ComputeManagementClient) terminateClusterNetwork(ctx context.Contex // If an autoscaling configuration applies to the instance pool, the autoscaling configuration will be deleted // asynchronously after the pool is deleted. You can also manually delete the autoscaling configuration using // the `DeleteAutoScalingConfiguration` operation in the Autoscaling API. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/TerminateInstancePool.go.html to see an example of how to use TerminateInstancePool API. func (client ComputeManagementClient) TerminateInstancePool(ctx context.Context, request TerminateInstancePoolRequest) (response TerminateInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1356,9 +1709,16 @@ func (client ComputeManagementClient) terminateInstancePool(ctx context.Context, } // UpdateClusterNetwork Updates the specified cluster network. The OCID of the cluster network remains the same. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateClusterNetwork.go.html to see an example of how to use UpdateClusterNetwork API. func (client ComputeManagementClient) UpdateClusterNetwork(ctx context.Context, request UpdateClusterNetworkRequest) (response UpdateClusterNetworkResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1408,9 +1768,16 @@ func (client ComputeManagementClient) updateClusterNetwork(ctx context.Context, } // UpdateInstanceConfiguration Updates the free-form tags, defined tags, and display name of an instance configuration. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstanceConfiguration.go.html to see an example of how to use UpdateInstanceConfiguration API. func (client ComputeManagementClient) UpdateInstanceConfiguration(ctx context.Context, request UpdateInstanceConfigurationRequest) (response UpdateInstanceConfigurationResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1461,9 +1828,16 @@ func (client ComputeManagementClient) updateInstanceConfiguration(ctx context.Co // UpdateInstancePool Update the specified instance pool. // The OCID of the instance pool remains the same. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstancePool.go.html to see an example of how to use UpdateInstancePool API. func (client ComputeManagementClient) UpdateInstancePool(ctx context.Context, request UpdateInstancePoolRequest) (response UpdateInstancePoolResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/core_virtualnetwork_client.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_virtualnetwork_client.go similarity index 77% rename from vendor/github.com/oracle/oci-go-sdk/core/core_virtualnetwork_client.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/core_virtualnetwork_client.go index f7def4d5f..e142fd366 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/core_virtualnetwork_client.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/core_virtualnetwork_client.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -16,7 +16,8 @@ package core import ( "context" "fmt" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" + "github.com/oracle/oci-go-sdk/v36/common/auth" "net/http" ) @@ -29,12 +30,15 @@ type VirtualNetworkClient struct { // NewVirtualNetworkClientWithConfigurationProvider Creates a new default VirtualNetwork client with the given configuration provider. // the configuration provider will be used for the default signer as well as reading the region func NewVirtualNetworkClientWithConfigurationProvider(configProvider common.ConfigurationProvider) (client VirtualNetworkClient, err error) { - baseClient, err := common.NewClientWithConfig(configProvider) + provider, err := auth.GetGenericConfigurationProvider(configProvider) if err != nil { - return + return client, err } - - return newVirtualNetworkClientFromBaseClient(baseClient, configProvider) + baseClient, e := common.NewClientWithConfig(provider) + if e != nil { + return client, e + } + return newVirtualNetworkClientFromBaseClient(baseClient, provider) } // NewVirtualNetworkClientWithOboToken Creates a new default VirtualNetwork client with the given configuration provider. @@ -43,7 +47,7 @@ func NewVirtualNetworkClientWithConfigurationProvider(configProvider common.Conf func NewVirtualNetworkClientWithOboToken(configProvider common.ConfigurationProvider, oboToken string) (client VirtualNetworkClient, err error) { baseClient, err := common.NewClientWithOboToken(configProvider, oboToken) if err != nil { - return + return client, err } return newVirtualNetworkClientFromBaseClient(baseClient, configProvider) @@ -80,9 +84,16 @@ func (client *VirtualNetworkClient) ConfigurationProvider() *common.Configuratio } // AddNetworkSecurityGroupSecurityRules Adds one or more security rules to the specified network security group. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddNetworkSecurityGroupSecurityRules.go.html to see an example of how to use AddNetworkSecurityGroupSecurityRules API. func (client VirtualNetworkClient) AddNetworkSecurityGroupSecurityRules(ctx context.Context, request AddNetworkSecurityGroupSecurityRulesRequest) (response AddNetworkSecurityGroupSecurityRulesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -126,6 +137,184 @@ func (client VirtualNetworkClient) addNetworkSecurityGroupSecurityRules(ctx cont return response, err } +// AddPublicIpPoolCapacity Adds some or all of a CIDR block to a public IP pool. +// The CIDR block (or subrange) must not overlap with any other CIDR block already added to this or any other public IP pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddPublicIpPoolCapacity.go.html to see an example of how to use AddPublicIpPoolCapacity API. +func (client VirtualNetworkClient) AddPublicIpPoolCapacity(ctx context.Context, request AddPublicIpPoolCapacityRequest) (response AddPublicIpPoolCapacityResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.addPublicIpPoolCapacity, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = AddPublicIpPoolCapacityResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = AddPublicIpPoolCapacityResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(AddPublicIpPoolCapacityResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into AddPublicIpPoolCapacityResponse") + } + return +} + +// addPublicIpPoolCapacity implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) addPublicIpPoolCapacity(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/publicIpPools/{publicIpPoolId}/actions/addCapacity") + if err != nil { + return nil, err + } + + var response AddPublicIpPoolCapacityResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + +// AddVcnCidr Adds a CIDR block to a VCN. The CIDR block you add: +// - Must be valid. +// - Must not overlap with another CIDR block in the VCN, a CIDR block of a peered VCN, or the on-premises network CIDR block. +// - Must not exceed the limit of CIDR blocks allowed per VCN. +// **Note:** Adding a CIDR block places your VCN in an updating state until the changes are complete. You cannot create or update the VCN's subnets, VLANs, LPGs, or route tables during this operation. The time to completion can take a few minutes. You can use the `GetWorkRequest` operation to check the status of the update. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AddVcnCidr.go.html to see an example of how to use AddVcnCidr API. +func (client VirtualNetworkClient) AddVcnCidr(ctx context.Context, request AddVcnCidrRequest) (response AddVcnCidrResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.addVcnCidr, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = AddVcnCidrResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = AddVcnCidrResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(AddVcnCidrResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into AddVcnCidrResponse") + } + return +} + +// addVcnCidr implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) addVcnCidr(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/vcns/{vcnId}/actions/addCidr") + if err != nil { + return nil, err + } + + var response AddVcnCidrResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + +// AdvertiseByoipRange Begins BGP route advertisements for the BYOIP CIDR block you imported to the Oracle Cloud. +// The `ByoipRange` resource must be in the PROVISIONED state before the BYOIP CIDR block routes can be advertised with BGP. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AdvertiseByoipRange.go.html to see an example of how to use AdvertiseByoipRange API. +func (client VirtualNetworkClient) AdvertiseByoipRange(ctx context.Context, request AdvertiseByoipRangeRequest) (response AdvertiseByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.advertiseByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = AdvertiseByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = AdvertiseByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(AdvertiseByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into AdvertiseByoipRangeResponse") + } + return +} + +// advertiseByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) advertiseByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/byoipRanges/{byoipRangeId}/actions/advertise") + if err != nil { + return nil, err + } + + var response AdvertiseByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // AttachServiceId Adds the specified Service to the list of enabled // `Service` objects for the specified gateway. You must also set up a route rule with the // `cidrBlock` of the `Service` as the rule's destination and the service gateway as the rule's @@ -135,9 +324,16 @@ func (client VirtualNetworkClient) addNetworkSecurityGroupSecurityRules(ctx cont // UpdateServiceGateway, which replaces // the entire existing list of enabled `Service` objects with the list that you provide in the // `Update` call. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/AttachServiceId.go.html to see an example of how to use AttachServiceId API. func (client VirtualNetworkClient) AttachServiceId(ctx context.Context, request AttachServiceIdRequest) (response AttachServiceIdResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -185,9 +381,16 @@ func (client VirtualNetworkClient) attachServiceId(ctx context.Context, request // Use this operation (and not UpdateVirtualCircuit) // to add prefixes to the virtual circuit. Oracle must verify the customer's ownership // of each prefix before traffic for that prefix will flow across the virtual circuit. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/BulkAddVirtualCircuitPublicPrefixes.go.html to see an example of how to use BulkAddVirtualCircuitPublicPrefixes API. func (client VirtualNetworkClient) BulkAddVirtualCircuitPublicPrefixes(ctx context.Context, request BulkAddVirtualCircuitPublicPrefixesRequest) (response BulkAddVirtualCircuitPublicPrefixesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -230,9 +433,16 @@ func (client VirtualNetworkClient) bulkAddVirtualCircuitPublicPrefixes(ctx conte // Use this operation (and not UpdateVirtualCircuit) // to remove prefixes from the virtual circuit. When the virtual circuit's state switches // back to PROVISIONED, Oracle stops advertising the specified prefixes across the connection. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/BulkDeleteVirtualCircuitPublicPrefixes.go.html to see an example of how to use BulkDeleteVirtualCircuitPublicPrefixes API. func (client VirtualNetworkClient) BulkDeleteVirtualCircuitPublicPrefixes(ctx context.Context, request BulkDeleteVirtualCircuitPublicPrefixesRequest) (response BulkDeleteVirtualCircuitPublicPrefixesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -271,12 +481,80 @@ func (client VirtualNetworkClient) bulkDeleteVirtualCircuitPublicPrefixes(ctx co return response, err } +// ChangeByoipRangeCompartment Moves a BYOIP CIDR block to a different compartment. For information +// about moving resources between compartments, see +// Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeByoipRangeCompartment.go.html to see an example of how to use ChangeByoipRangeCompartment API. +func (client VirtualNetworkClient) ChangeByoipRangeCompartment(ctx context.Context, request ChangeByoipRangeCompartmentRequest) (response ChangeByoipRangeCompartmentResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.changeByoipRangeCompartment, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ChangeByoipRangeCompartmentResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ChangeByoipRangeCompartmentResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ChangeByoipRangeCompartmentResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ChangeByoipRangeCompartmentResponse") + } + return +} + +// changeByoipRangeCompartment implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) changeByoipRangeCompartment(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/byoipRanges/{byoipRangeId}/actions/changeCompartment") + if err != nil { + return nil, err + } + + var response ChangeByoipRangeCompartmentResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // ChangeCpeCompartment Moves a CPE object into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeCpeCompartment.go.html to see an example of how to use ChangeCpeCompartment API. func (client VirtualNetworkClient) ChangeCpeCompartment(ctx context.Context, request ChangeCpeCompartmentRequest) (response ChangeCpeCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -328,9 +606,16 @@ func (client VirtualNetworkClient) changeCpeCompartment(ctx context.Context, req // ChangeCrossConnectCompartment Moves a cross-connect into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeCrossConnectCompartment.go.html to see an example of how to use ChangeCrossConnectCompartment API. func (client VirtualNetworkClient) ChangeCrossConnectCompartment(ctx context.Context, request ChangeCrossConnectCompartmentRequest) (response ChangeCrossConnectCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -382,9 +667,16 @@ func (client VirtualNetworkClient) changeCrossConnectCompartment(ctx context.Con // ChangeCrossConnectGroupCompartment Moves a cross-connect group into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeCrossConnectGroupCompartment.go.html to see an example of how to use ChangeCrossConnectGroupCompartment API. func (client VirtualNetworkClient) ChangeCrossConnectGroupCompartment(ctx context.Context, request ChangeCrossConnectGroupCompartmentRequest) (response ChangeCrossConnectGroupCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -436,9 +728,16 @@ func (client VirtualNetworkClient) changeCrossConnectGroupCompartment(ctx contex // ChangeDhcpOptionsCompartment Moves a set of DHCP options into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeDhcpOptionsCompartment.go.html to see an example of how to use ChangeDhcpOptionsCompartment API. func (client VirtualNetworkClient) ChangeDhcpOptionsCompartment(ctx context.Context, request ChangeDhcpOptionsCompartmentRequest) (response ChangeDhcpOptionsCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -490,9 +789,16 @@ func (client VirtualNetworkClient) changeDhcpOptionsCompartment(ctx context.Cont // ChangeDrgCompartment Moves a DRG into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeDrgCompartment.go.html to see an example of how to use ChangeDrgCompartment API. func (client VirtualNetworkClient) ChangeDrgCompartment(ctx context.Context, request ChangeDrgCompartmentRequest) (response ChangeDrgCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -544,9 +850,16 @@ func (client VirtualNetworkClient) changeDrgCompartment(ctx context.Context, req // ChangeIPSecConnectionCompartment Moves an IPSec connection into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeIPSecConnectionCompartment.go.html to see an example of how to use ChangeIPSecConnectionCompartment API. func (client VirtualNetworkClient) ChangeIPSecConnectionCompartment(ctx context.Context, request ChangeIPSecConnectionCompartmentRequest) (response ChangeIPSecConnectionCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -598,9 +911,16 @@ func (client VirtualNetworkClient) changeIPSecConnectionCompartment(ctx context. // ChangeInternetGatewayCompartment Moves an internet gateway into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeInternetGatewayCompartment.go.html to see an example of how to use ChangeInternetGatewayCompartment API. func (client VirtualNetworkClient) ChangeInternetGatewayCompartment(ctx context.Context, request ChangeInternetGatewayCompartmentRequest) (response ChangeInternetGatewayCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -652,9 +972,16 @@ func (client VirtualNetworkClient) changeInternetGatewayCompartment(ctx context. // ChangeLocalPeeringGatewayCompartment Moves a local peering gateway into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeLocalPeeringGatewayCompartment.go.html to see an example of how to use ChangeLocalPeeringGatewayCompartment API. func (client VirtualNetworkClient) ChangeLocalPeeringGatewayCompartment(ctx context.Context, request ChangeLocalPeeringGatewayCompartmentRequest) (response ChangeLocalPeeringGatewayCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -706,9 +1033,16 @@ func (client VirtualNetworkClient) changeLocalPeeringGatewayCompartment(ctx cont // ChangeNatGatewayCompartment Moves a NAT gateway into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeNatGatewayCompartment.go.html to see an example of how to use ChangeNatGatewayCompartment API. func (client VirtualNetworkClient) ChangeNatGatewayCompartment(ctx context.Context, request ChangeNatGatewayCompartmentRequest) (response ChangeNatGatewayCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -759,9 +1093,16 @@ func (client VirtualNetworkClient) changeNatGatewayCompartment(ctx context.Conte // ChangeNetworkSecurityGroupCompartment Moves a network security group into a different compartment within the same tenancy. For // information about moving resources between compartments, see Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeNetworkSecurityGroupCompartment.go.html to see an example of how to use ChangeNetworkSecurityGroupCompartment API. func (client VirtualNetworkClient) ChangeNetworkSecurityGroupCompartment(ctx context.Context, request ChangeNetworkSecurityGroupCompartmentRequest) (response ChangeNetworkSecurityGroupCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -815,9 +1156,16 @@ func (client VirtualNetworkClient) changeNetworkSecurityGroupCompartment(ctx con // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). // This operation applies only to reserved public IPs. Ephemeral public IPs always belong to the // same compartment as their VNIC and move accordingly. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangePublicIpCompartment.go.html to see an example of how to use ChangePublicIpCompartment API. func (client VirtualNetworkClient) ChangePublicIpCompartment(ctx context.Context, request ChangePublicIpCompartmentRequest) (response ChangePublicIpCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -866,12 +1214,80 @@ func (client VirtualNetworkClient) changePublicIpCompartment(ctx context.Context return response, err } +// ChangePublicIpPoolCompartment Moves a public IP pool to a different compartment. For information +// about moving resources between compartments, see +// Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangePublicIpPoolCompartment.go.html to see an example of how to use ChangePublicIpPoolCompartment API. +func (client VirtualNetworkClient) ChangePublicIpPoolCompartment(ctx context.Context, request ChangePublicIpPoolCompartmentRequest) (response ChangePublicIpPoolCompartmentResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.changePublicIpPoolCompartment, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ChangePublicIpPoolCompartmentResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ChangePublicIpPoolCompartmentResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ChangePublicIpPoolCompartmentResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ChangePublicIpPoolCompartmentResponse") + } + return +} + +// changePublicIpPoolCompartment implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) changePublicIpPoolCompartment(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/publicIpPools/{publicIpPoolId}/actions/changeCompartment") + if err != nil { + return nil, err + } + + var response ChangePublicIpPoolCompartmentResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // ChangeRemotePeeringConnectionCompartment Moves a remote peering connection (RPC) into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeRemotePeeringConnectionCompartment.go.html to see an example of how to use ChangeRemotePeeringConnectionCompartment API. func (client VirtualNetworkClient) ChangeRemotePeeringConnectionCompartment(ctx context.Context, request ChangeRemotePeeringConnectionCompartmentRequest) (response ChangeRemotePeeringConnectionCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -923,9 +1339,16 @@ func (client VirtualNetworkClient) changeRemotePeeringConnectionCompartment(ctx // ChangeRouteTableCompartment Moves a route table into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeRouteTableCompartment.go.html to see an example of how to use ChangeRouteTableCompartment API. func (client VirtualNetworkClient) ChangeRouteTableCompartment(ctx context.Context, request ChangeRouteTableCompartmentRequest) (response ChangeRouteTableCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -977,9 +1400,16 @@ func (client VirtualNetworkClient) changeRouteTableCompartment(ctx context.Conte // ChangeSecurityListCompartment Moves a security list into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeSecurityListCompartment.go.html to see an example of how to use ChangeSecurityListCompartment API. func (client VirtualNetworkClient) ChangeSecurityListCompartment(ctx context.Context, request ChangeSecurityListCompartmentRequest) (response ChangeSecurityListCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1031,9 +1461,16 @@ func (client VirtualNetworkClient) changeSecurityListCompartment(ctx context.Con // ChangeServiceGatewayCompartment Moves a service gateway into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeServiceGatewayCompartment.go.html to see an example of how to use ChangeServiceGatewayCompartment API. func (client VirtualNetworkClient) ChangeServiceGatewayCompartment(ctx context.Context, request ChangeServiceGatewayCompartmentRequest) (response ChangeServiceGatewayCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1085,9 +1522,16 @@ func (client VirtualNetworkClient) changeServiceGatewayCompartment(ctx context.C // ChangeSubnetCompartment Moves a subnet into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeSubnetCompartment.go.html to see an example of how to use ChangeSubnetCompartment API. func (client VirtualNetworkClient) ChangeSubnetCompartment(ctx context.Context, request ChangeSubnetCompartmentRequest) (response ChangeSubnetCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1139,9 +1583,16 @@ func (client VirtualNetworkClient) changeSubnetCompartment(ctx context.Context, // ChangeVcnCompartment Moves a VCN into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVcnCompartment.go.html to see an example of how to use ChangeVcnCompartment API. func (client VirtualNetworkClient) ChangeVcnCompartment(ctx context.Context, request ChangeVcnCompartmentRequest) (response ChangeVcnCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1193,9 +1644,16 @@ func (client VirtualNetworkClient) changeVcnCompartment(ctx context.Context, req // ChangeVirtualCircuitCompartment Moves a virtual circuit into a different compartment within the same tenancy. For information // about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVirtualCircuitCompartment.go.html to see an example of how to use ChangeVirtualCircuitCompartment API. func (client VirtualNetworkClient) ChangeVirtualCircuitCompartment(ctx context.Context, request ChangeVirtualCircuitCompartmentRequest) (response ChangeVirtualCircuitCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1247,9 +1705,16 @@ func (client VirtualNetworkClient) changeVirtualCircuitCompartment(ctx context.C // ChangeVlanCompartment Moves a VLAN into a different compartment within the same tenancy. // For information about moving resources between compartments, see // Moving Resources to a Different Compartment (https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ChangeVlanCompartment.go.html to see an example of how to use ChangeVlanCompartment API. func (client VirtualNetworkClient) ChangeVlanCompartment(ctx context.Context, request ChangeVlanCompartmentRequest) (response ChangeVlanCompartmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1304,10 +1769,17 @@ func (client VirtualNetworkClient) changeVlanCompartment(ctx context.Context, re // an Identity and Access Management (IAM) policy that gives the requestor permission // to connect to LPGs in the acceptor's compartment. Without that permission, this // operation will fail. For more information, see -// VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). +// VCN Peering (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/VCNpeering.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ConnectLocalPeeringGateways.go.html to see an example of how to use ConnectLocalPeeringGateways API. func (client VirtualNetworkClient) ConnectLocalPeeringGateways(ctx context.Context, request ConnectLocalPeeringGatewaysRequest) (response ConnectLocalPeeringGatewaysResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1357,10 +1829,17 @@ func (client VirtualNetworkClient) connectLocalPeeringGateways(ctx context.Conte // an Identity and Access Management (IAM) policy that gives the requestor permission // to connect to RPCs in the acceptor's compartment. Without that permission, this // operation will fail. For more information, see -// VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). +// VCN Peering (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/VCNpeering.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ConnectRemotePeeringConnections.go.html to see an example of how to use ConnectRemotePeeringConnections API. func (client VirtualNetworkClient) ConnectRemotePeeringConnections(ctx context.Context, request ConnectRemotePeeringConnectionsRequest) (response ConnectRemotePeeringConnectionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1404,21 +1883,87 @@ func (client VirtualNetworkClient) connectRemotePeeringConnections(ctx context.C return response, err } +// CreateByoipRange Creates a subrange of the BYOIP CIDR block. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateByoipRange.go.html to see an example of how to use CreateByoipRange API. +func (client VirtualNetworkClient) CreateByoipRange(ctx context.Context, request CreateByoipRangeRequest) (response CreateByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.createByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = CreateByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = CreateByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(CreateByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into CreateByoipRangeResponse") + } + return +} + +// createByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) createByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/byoipRanges") + if err != nil { + return nil, err + } + + var response CreateByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // CreateCpe Creates a new virtual customer-premises equipment (CPE) object in the specified compartment. For -// more information, see IPSec VPNs (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPsec.htm). +// more information, see IPSec VPNs (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPsec.htm). // For the purposes of access control, you must provide the OCID of the compartment where you want // the CPE to reside. Notice that the CPE doesn't have to be in the same compartment as the IPSec // connection or other Networking Service components. If you're not sure which compartment to // use, put the CPE in the same compartment as the DRG. For more information about -// compartments and access control, see Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). -// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// compartments and access control, see Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). +// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You must provide the public IP address of your on-premises router. See -// Configuring Your On-Premises Router for an IPSec VPN (https://docs.cloud.oracle.com/Content/Network/Tasks/configuringCPE.htm). +// Configuring Your On-Premises Router for an IPSec VPN (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/configuringCPE.htm). // You may optionally specify a *display name* for the CPE, otherwise a default is provided. It does not have to // be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateCpe.go.html to see an example of how to use CreateCpe API. func (client VirtualNetworkClient) CreateCpe(ctx context.Context, request CreateCpeRequest) (response CreateCpeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1472,20 +2017,27 @@ func (client VirtualNetworkClient) createCpe(ctx context.Context, request common // with the connection. // After creating the `CrossConnect` object, you need to go the FastConnect location // and request to have the physical cable installed. For more information, see -// FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // For the purposes of access control, you must provide the OCID of the // compartment where you want the cross-connect to reside. If you're // not sure which compartment to use, put the cross-connect in the // same compartment with your VCN. For more information about // compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). // For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the cross-connect. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateCrossConnect.go.html to see an example of how to use CreateCrossConnect API. func (client VirtualNetworkClient) CreateCrossConnect(ctx context.Context, request CreateCrossConnectRequest) (response CreateCrossConnectResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1536,20 +2088,27 @@ func (client VirtualNetworkClient) createCrossConnect(ctx context.Context, reque // CreateCrossConnectGroup Creates a new cross-connect group to use with Oracle Cloud Infrastructure // FastConnect. For more information, see -// FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // For the purposes of access control, you must provide the OCID of the // compartment where you want the cross-connect group to reside. If you're // not sure which compartment to use, put the cross-connect group in the // same compartment with your VCN. For more information about // compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). // For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the cross-connect group. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateCrossConnectGroup.go.html to see an example of how to use CreateCrossConnectGroup API. func (client VirtualNetworkClient) CreateCrossConnectGroup(ctx context.Context, request CreateCrossConnectGroupRequest) (response CreateCrossConnectGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1604,13 +2163,20 @@ func (client VirtualNetworkClient) createCrossConnectGroup(ctx context.Context, // DHCP options to reside. Notice that the set of options doesn't have to be in the same compartment as the VCN, // subnets, or other Networking Service components. If you're not sure which compartment to use, put the set // of DHCP options in the same compartment as the VCN. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about OCIDs, see +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the set of DHCP options, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDhcpOptions.go.html to see an example of how to use CreateDhcpOptions API. func (client VirtualNetworkClient) CreateDhcpOptions(ctx context.Context, request CreateDhcpOptionsRequest) (response CreateDhcpOptionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1660,18 +2226,25 @@ func (client VirtualNetworkClient) createDhcpOptions(ctx context.Context, reques } // CreateDrg Creates a new dynamic routing gateway (DRG) in the specified compartment. For more information, -// see Dynamic Routing Gateways (DRGs) (https://docs.cloud.oracle.com/Content/Network/Tasks/managingDRGs.htm). +// see Dynamic Routing Gateways (DRGs) (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingDRGs.htm). // For the purposes of access control, you must provide the OCID of the compartment where you want // the DRG to reside. Notice that the DRG doesn't have to be in the same compartment as the VCN, // the DRG attachment, or other Networking Service components. If you're not sure which compartment // to use, put the DRG in the same compartment as the VCN. For more information about compartments -// and access control, see Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). -// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// and access control, see Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). +// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the DRG, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDrg.go.html to see an example of how to use CreateDrg API. func (client VirtualNetworkClient) CreateDrg(ctx context.Context, request CreateDrgRequest) (response CreateDrgResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1723,15 +2296,22 @@ func (client VirtualNetworkClient) createDrg(ctx context.Context, request common // CreateDrgAttachment Attaches the specified DRG to the specified VCN. A VCN can be attached to only one DRG at a time, // and vice versa. The response includes a `DrgAttachment` object with its own OCID. For more // information about DRGs, see -// Dynamic Routing Gateways (DRGs) (https://docs.cloud.oracle.com/Content/Network/Tasks/managingDRGs.htm). +// Dynamic Routing Gateways (DRGs) (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingDRGs.htm). // You may optionally specify a *display name* for the attachment, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. // For the purposes of access control, the DRG attachment is automatically placed into the same compartment // as the VCN. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDrgAttachment.go.html to see an example of how to use CreateDrgAttachment API. func (client VirtualNetworkClient) CreateDrgAttachment(ctx context.Context, request CreateDrgAttachmentRequest) (response CreateDrgAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1781,7 +2361,7 @@ func (client VirtualNetworkClient) createDrgAttachment(ctx context.Context, requ } // CreateIPSecConnection Creates a new IPSec connection between the specified DRG and CPE. For more information, see -// IPSec VPNs (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPsec.htm). +// IPSec VPNs (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPsec.htm). // If you configure at least one tunnel to use static routing, then in the request you must provide // at least one valid static route (you're allowed a maximum of 10). For example: 10.0.0.0/16. // If you configure both tunnels to use BGP dynamic routing, you can provide an empty list for @@ -1792,8 +2372,8 @@ func (client VirtualNetworkClient) createDrgAttachment(ctx context.Context, requ // as the DRG, CPE, or other Networking Service components. If you're not sure which compartment to // use, put the IPSec connection in the same compartment as the DRG. For more information about // compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). -// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). +// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the IPSec connection, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. // After creating the IPSec connection, you need to configure your on-premises router @@ -1802,10 +2382,17 @@ func (client VirtualNetworkClient) createDrgAttachment(ctx context.Context, requ // * IPSecConnectionTunnelSharedSecret // For each tunnel, you need the IP address of Oracle's VPN headend and the shared secret // (that is, the pre-shared key). For more information, see -// Configuring Your On-Premises Router for an IPSec VPN (https://docs.cloud.oracle.com/Content/Network/Tasks/configuringCPE.htm). +// Configuring Your On-Premises Router for an IPSec VPN (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/configuringCPE.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateIPSecConnection.go.html to see an example of how to use CreateIPSecConnection API. func (client VirtualNetworkClient) CreateIPSecConnection(ctx context.Context, request CreateIPSecConnectionRequest) (response CreateIPSecConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1855,13 +2442,13 @@ func (client VirtualNetworkClient) createIPSecConnection(ctx context.Context, re } // CreateInternetGateway Creates a new internet gateway for the specified VCN. For more information, see -// Access to the Internet (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIGs.htm). +// Access to the Internet (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIGs.htm). // For the purposes of access control, you must provide the OCID of the compartment where you want the Internet // Gateway to reside. Notice that the internet gateway doesn't have to be in the same compartment as the VCN or // other Networking Service components. If you're not sure which compartment to use, put the Internet // Gateway in the same compartment with the VCN. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about OCIDs, see +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the internet gateway, otherwise a default is provided. It // does not have to be unique, and you can change it. Avoid entering confidential information. // For traffic to flow between a subnet and an internet gateway, you must create a route rule accordingly in @@ -1871,9 +2458,16 @@ func (client VirtualNetworkClient) createIPSecConnection(ctx context.Context, re // traffic will flow to/from the internet even if there's a route rule that enables that traffic. You can later // use UpdateInternetGateway to easily disable/enable // the gateway without changing the route rule. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInternetGateway.go.html to see an example of how to use CreateInternetGateway API. func (client VirtualNetworkClient) CreateInternetGateway(ctx context.Context, request CreateInternetGatewayRequest) (response CreateInternetGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1923,9 +2517,16 @@ func (client VirtualNetworkClient) createInternetGateway(ctx context.Context, re } // CreateIpv6 Creates an IPv6 for the specified VNIC. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateIpv6.go.html to see an example of how to use CreateIpv6 API. func (client VirtualNetworkClient) CreateIpv6(ctx context.Context, request CreateIpv6Request) (response CreateIpv6Response, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -1975,9 +2576,16 @@ func (client VirtualNetworkClient) createIpv6(ctx context.Context, request commo } // CreateLocalPeeringGateway Creates a new local peering gateway (LPG) for the specified VCN. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateLocalPeeringGateway.go.html to see an example of how to use CreateLocalPeeringGateway API. func (client VirtualNetworkClient) CreateLocalPeeringGateway(ctx context.Context, request CreateLocalPeeringGatewayRequest) (response CreateLocalPeeringGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2028,9 +2636,16 @@ func (client VirtualNetworkClient) createLocalPeeringGateway(ctx context.Context // CreateNatGateway Creates a new NAT gateway for the specified VCN. You must also set up a route rule with the // NAT gateway as the rule's target. See RouteTable. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateNatGateway.go.html to see an example of how to use CreateNatGateway API. func (client VirtualNetworkClient) CreateNatGateway(ctx context.Context, request CreateNatGatewayRequest) (response CreateNatGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2080,9 +2695,16 @@ func (client VirtualNetworkClient) createNatGateway(ctx context.Context, request } // CreateNetworkSecurityGroup Creates a new network security group for the specified VCN. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateNetworkSecurityGroup.go.html to see an example of how to use CreateNetworkSecurityGroup API. func (client VirtualNetworkClient) CreateNetworkSecurityGroup(ctx context.Context, request CreateNetworkSecurityGroupRequest) (response CreateNetworkSecurityGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2133,10 +2755,17 @@ func (client VirtualNetworkClient) createNetworkSecurityGroup(ctx context.Contex // CreatePrivateIp Creates a secondary private IP for the specified VNIC. // For more information about secondary private IPs, see -// IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPaddresses.htm). +// IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPaddresses.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreatePrivateIp.go.html to see an example of how to use CreatePrivateIp API. func (client VirtualNetworkClient) CreatePrivateIp(ctx context.Context, request CreatePrivateIpRequest) (response CreatePrivateIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2187,7 +2816,7 @@ func (client VirtualNetworkClient) createPrivateIp(ctx context.Context, request // CreatePublicIp Creates a public IP. Use the `lifetime` property to specify whether it's an ephemeral or // reserved public IP. For information about limits on how many you can create, see -// Public IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingpublicIPs.htm). +// Public IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingpublicIPs.htm). // * **For an ephemeral public IP assigned to a private IP:** You must also specify a `privateIpId` // with the OCID of the primary private IP you want to assign the public IP to. The public IP is // created in the same availability domain as the private IP. An ephemeral public IP must always be @@ -2202,9 +2831,16 @@ func (client VirtualNetworkClient) createPrivateIp(ctx context.Context, request // Also, for reserved public IPs, the optional assignment part of this operation is // asynchronous. Poll the public IP's `lifecycleState` to determine if the assignment // succeeded. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreatePublicIp.go.html to see an example of how to use CreatePublicIp API. func (client VirtualNetworkClient) CreatePublicIp(ctx context.Context, request CreatePublicIpRequest) (response CreatePublicIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2253,10 +2889,76 @@ func (client VirtualNetworkClient) createPublicIp(ctx context.Context, request c return response, err } +// CreatePublicIpPool Creates a public IP pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreatePublicIpPool.go.html to see an example of how to use CreatePublicIpPool API. +func (client VirtualNetworkClient) CreatePublicIpPool(ctx context.Context, request CreatePublicIpPoolRequest) (response CreatePublicIpPoolResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.createPublicIpPool, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = CreatePublicIpPoolResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = CreatePublicIpPoolResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(CreatePublicIpPoolResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into CreatePublicIpPoolResponse") + } + return +} + +// createPublicIpPool implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) createPublicIpPool(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/publicIpPools") + if err != nil { + return nil, err + } + + var response CreatePublicIpPoolResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // CreateRemotePeeringConnection Creates a new remote peering connection (RPC) for the specified DRG. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateRemotePeeringConnection.go.html to see an example of how to use CreateRemotePeeringConnection API. func (client VirtualNetworkClient) CreateRemotePeeringConnection(ctx context.Context, request CreateRemotePeeringConnectionRequest) (response CreateRemotePeeringConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2307,20 +3009,27 @@ func (client VirtualNetworkClient) createRemotePeeringConnection(ctx context.Con // CreateRouteTable Creates a new route table for the specified VCN. In the request you must also include at least one route // rule for the new route table. For information on the number of rules you can have in a route table, see -// Service Limits (https://docs.cloud.oracle.com/Content/General/Concepts/servicelimits.htm). For general information about route +// Service Limits (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/servicelimits.htm). For general information about route // tables in your VCN and the types of targets you can use in route rules, -// see Route Tables (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm). +// see Route Tables (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm). // For the purposes of access control, you must provide the OCID of the compartment where you want the route // table to reside. Notice that the route table doesn't have to be in the same compartment as the VCN, subnets, // or other Networking Service components. If you're not sure which compartment to use, put the route // table in the same compartment as the VCN. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about OCIDs, see +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the route table, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateRouteTable.go.html to see an example of how to use CreateRouteTable API. func (client VirtualNetworkClient) CreateRouteTable(ctx context.Context, request CreateRouteTableRequest) (response CreateRouteTableResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2370,20 +3079,27 @@ func (client VirtualNetworkClient) createRouteTable(ctx context.Context, request } // CreateSecurityList Creates a new security list for the specified VCN. For more information -// about security lists, see Security Lists (https://docs.cloud.oracle.com/Content/Network/Concepts/securitylists.htm). +// about security lists, see Security Lists (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securitylists.htm). // For information on the number of rules you can have in a security list, see -// Service Limits (https://docs.cloud.oracle.com/Content/General/Concepts/servicelimits.htm). +// Service Limits (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/servicelimits.htm). // For the purposes of access control, you must provide the OCID of the compartment where you want the security // list to reside. Notice that the security list doesn't have to be in the same compartment as the VCN, subnets, // or other Networking Service components. If you're not sure which compartment to use, put the security // list in the same compartment as the VCN. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about OCIDs, see +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the security list, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateSecurityList.go.html to see an example of how to use CreateSecurityList API. func (client VirtualNetworkClient) CreateSecurityList(ctx context.Context, request CreateSecurityListRequest) (response CreateSecurityListResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2435,13 +3151,20 @@ func (client VirtualNetworkClient) createSecurityList(ctx context.Context, reque // CreateServiceGateway Creates a new service gateway in the specified compartment. // For the purposes of access control, you must provide the OCID of the compartment where you want // the service gateway to reside. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). -// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). +// For information about OCIDs, see Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the service gateway, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateServiceGateway.go.html to see an example of how to use CreateServiceGateway API. func (client VirtualNetworkClient) CreateServiceGateway(ctx context.Context, request CreateServiceGatewayRequest) (response CreateServiceGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2492,32 +3215,39 @@ func (client VirtualNetworkClient) createServiceGateway(ctx context.Context, req // CreateSubnet Creates a new subnet in the specified VCN. You can't change the size of the subnet after creation, // so it's important to think about the size of subnets you need before creating them. -// For more information, see VCNs and Subnets (https://docs.cloud.oracle.com/Content/Network/Tasks/managingVCNs.htm). +// For more information, see VCNs and Subnets (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingVCNs.htm). // For information on the number of subnets you can have in a VCN, see -// Service Limits (https://docs.cloud.oracle.com/Content/General/Concepts/servicelimits.htm). +// Service Limits (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/servicelimits.htm). // For the purposes of access control, you must provide the OCID of the compartment where you want the subnet // to reside. Notice that the subnet doesn't have to be in the same compartment as the VCN, route tables, or // other Networking Service components. If you're not sure which compartment to use, put the subnet in // the same compartment as the VCN. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). For information about OCIDs, -// see Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about OCIDs, +// see Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally associate a route table with the subnet. If you don't, the subnet will use the // VCN's default route table. For more information about route tables, see -// Route Tables (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm). +// Route Tables (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm). // You may optionally associate a security list with the subnet. If you don't, the subnet will use the // VCN's default security list. For more information about security lists, see -// Security Lists (https://docs.cloud.oracle.com/Content/Network/Concepts/securitylists.htm). +// Security Lists (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securitylists.htm). // You may optionally associate a set of DHCP options with the subnet. If you don't, the subnet will use the // VCN's default set. For more information about DHCP options, see -// DHCP Options (https://docs.cloud.oracle.com/Content/Network/Tasks/managingDHCP.htm). +// DHCP Options (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingDHCP.htm). // You may optionally specify a *display name* for the subnet, otherwise a default is provided. // It does not have to be unique, and you can change it. Avoid entering confidential information. // You can also add a DNS label for the subnet, which is required if you want the Internet and // VCN Resolver to resolve hostnames for instances in the subnet. For more information, see -// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). +// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateSubnet.go.html to see an example of how to use CreateSubnet API. func (client VirtualNetworkClient) CreateSubnet(ctx context.Context, request CreateSubnetRequest) (response CreateSubnetResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2567,31 +3297,40 @@ func (client VirtualNetworkClient) createSubnet(ctx context.Context, request com } // CreateVcn Creates a new virtual cloud network (VCN). For more information, see -// VCNs and Subnets (https://docs.cloud.oracle.com/Content/Network/Tasks/managingVCNs.htm). -// For the VCN you must specify a single, contiguous IPv4 CIDR block. Oracle recommends using one of the -// private IP address ranges specified in RFC 1918 (https://tools.ietf.org/html/rfc1918) (10.0.0.0/8, -// 172.16/12, and 192.168/16). Example: 172.16.0.0/16. The CIDR block can range from /16 to /30, and it -// must not overlap with your on-premises network. You can't change the size of the VCN after creation. +// VCNs and Subnets (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingVCNs.htm). +// For the VCN, you specify a list of one or more IPv4 CIDR blocks that meet the following criteria: +// - The CIDR blocks must be valid. +// - They must not overlap with each other or with the on-premises network CIDR block. +// - The number of CIDR blocks does not exceed the limit of CIDR blocks allowed per VCN. +// For a CIDR block, Oracle recommends that you use one of the private IP address ranges specified in RFC 1918 (https://tools.ietf.org/html/rfc1918) (10.0.0.0/8, 172.16/12, and 192.168/16). Example: +// 172.16.0.0/16. The CIDR blocks can range from /16 to /30. // For the purposes of access control, you must provide the OCID of the compartment where you want the VCN to // reside. Consult an Oracle Cloud Infrastructure administrator in your organization if you're not sure which // compartment to use. Notice that the VCN doesn't have to be in the same compartment as the subnets or other // Networking Service components. For more information about compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about OCIDs, see +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the VCN, otherwise a default is provided. It does not have to // be unique, and you can change it. Avoid entering confidential information. // You can also add a DNS label for the VCN, which is required if you want the instances to use the // Interent and VCN Resolver option for DNS in the VCN. For more information, see -// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). +// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // The VCN automatically comes with a default route table, default security list, and default set of DHCP options. // The OCID for each is returned in the response. You can't delete these default objects, but you can change their // contents (that is, change the route rules, security list rules, and so on). // The VCN and subnets you create are not accessible until you attach an internet gateway or set up an IPSec VPN // or FastConnect. For more information, see -// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm). +// Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVcn.go.html to see an example of how to use CreateVcn API. func (client VirtualNetworkClient) CreateVcn(ctx context.Context, request CreateVcnRequest) (response CreateVcnResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2642,25 +3381,32 @@ func (client VirtualNetworkClient) createVcn(ctx context.Context, request common // CreateVirtualCircuit Creates a new virtual circuit to use with Oracle Cloud // Infrastructure FastConnect. For more information, see -// FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // For the purposes of access control, you must provide the OCID of the // compartment where you want the virtual circuit to reside. If you're // not sure which compartment to use, put the virtual circuit in the // same compartment with the DRG it's using. For more information about // compartments and access control, see -// Overview of the IAM Service (https://docs.cloud.oracle.com/Content/Identity/Concepts/overview.htm). +// Overview of the IAM Service (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). // For information about OCIDs, see -// Resource Identifiers (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). +// Resource Identifiers (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). // You may optionally specify a *display name* for the virtual circuit. // It does not have to be unique, and you can change it. Avoid entering confidential information. // **Important:** When creating a virtual circuit, you specify a DRG for // the traffic to flow through. Make sure you attach the DRG to your // VCN and confirm the VCN's routing sends traffic to the DRG. Otherwise // traffic will not flow. For more information, see -// Route Tables (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm). +// Route Tables (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVirtualCircuit.go.html to see an example of how to use CreateVirtualCircuit API. func (client VirtualNetworkClient) CreateVirtualCircuit(ctx context.Context, request CreateVirtualCircuitRequest) (response CreateVirtualCircuitResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2710,9 +3456,16 @@ func (client VirtualNetworkClient) createVirtualCircuit(ctx context.Context, req } // CreateVlan Creates a VLAN in the specified VCN and the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVlan.go.html to see an example of how to use CreateVlan API. func (client VirtualNetworkClient) CreateVlan(ctx context.Context, request CreateVlanRequest) (response CreateVlanResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2761,12 +3514,77 @@ func (client VirtualNetworkClient) createVlan(ctx context.Context, request commo return response, err } +// DeleteByoipRange Deletes the specified `ByoipRange` resource. +// The resource must be in one of the following states: CREATING, PROVISIONED, ACTIVE, or FAILED. +// It must not have any subranges currently allocated to a PublicIpPool object or the deletion will fail. +// You must specify the OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). +// If the `ByoipRange` resource is currently in the PROVISIONED or ACTIVE state, it will be de-provisioned and then deleted. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteByoipRange.go.html to see an example of how to use DeleteByoipRange API. +func (client VirtualNetworkClient) DeleteByoipRange(ctx context.Context, request DeleteByoipRangeRequest) (response DeleteByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.deleteByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = DeleteByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = DeleteByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(DeleteByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into DeleteByoipRangeResponse") + } + return +} + +// deleteByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) deleteByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodDelete, "/byoipRanges/{byoipRangeId}") + if err != nil { + return nil, err + } + + var response DeleteByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // DeleteCpe Deletes the specified CPE object. The CPE must not be connected to a DRG. This is an asynchronous // operation. The CPE's `lifecycleState` will change to TERMINATING temporarily until the CPE is completely // removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteCpe.go.html to see an example of how to use DeleteCpe API. func (client VirtualNetworkClient) DeleteCpe(ctx context.Context, request DeleteCpeRequest) (response DeleteCpeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2812,9 +3630,16 @@ func (client VirtualNetworkClient) deleteCpe(ctx context.Context, request common // DeleteCrossConnect Deletes the specified cross-connect. It must not be mapped to a // VirtualCircuit. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteCrossConnect.go.html to see an example of how to use DeleteCrossConnect API. func (client VirtualNetworkClient) DeleteCrossConnect(ctx context.Context, request DeleteCrossConnectRequest) (response DeleteCrossConnectResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2861,9 +3686,16 @@ func (client VirtualNetworkClient) deleteCrossConnect(ctx context.Context, reque // DeleteCrossConnectGroup Deletes the specified cross-connect group. It must not contain any // cross-connects, and it cannot be mapped to a // VirtualCircuit. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteCrossConnectGroup.go.html to see an example of how to use DeleteCrossConnectGroup API. func (client VirtualNetworkClient) DeleteCrossConnectGroup(ctx context.Context, request DeleteCrossConnectGroupRequest) (response DeleteCrossConnectGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2911,9 +3743,16 @@ func (client VirtualNetworkClient) deleteCrossConnectGroup(ctx context.Context, // VCN's default set of DHCP options. // This is an asynchronous operation. The state of the set of options will switch to TERMINATING temporarily // until the set is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDhcpOptions.go.html to see an example of how to use DeleteDhcpOptions API. func (client VirtualNetworkClient) DeleteDhcpOptions(ctx context.Context, request DeleteDhcpOptionsRequest) (response DeleteDhcpOptionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -2961,9 +3800,16 @@ func (client VirtualNetworkClient) deleteDhcpOptions(ctx context.Context, reques // network. Also, there must not be a route table that lists the DRG as a target. This is an asynchronous // operation. The DRG's `lifecycleState` will change to TERMINATING temporarily until the DRG is completely // removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDrg.go.html to see an example of how to use DeleteDrg API. func (client VirtualNetworkClient) DeleteDrg(ctx context.Context, request DeleteDrgRequest) (response DeleteDrgResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3010,9 +3856,16 @@ func (client VirtualNetworkClient) deleteDrg(ctx context.Context, request common // DeleteDrgAttachment Detaches a DRG from a VCN by deleting the corresponding `DrgAttachment`. This is an asynchronous // operation. The attachment's `lifecycleState` will change to DETACHING temporarily until the attachment // is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDrgAttachment.go.html to see an example of how to use DeleteDrgAttachment API. func (client VirtualNetworkClient) DeleteDrgAttachment(ctx context.Context, request DeleteDrgAttachmentRequest) (response DeleteDrgAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3063,9 +3916,16 @@ func (client VirtualNetworkClient) deleteDrgAttachment(ctx context.Context, requ // CreateIPSecConnection. // This is an asynchronous operation. The connection's `lifecycleState` will change to TERMINATING temporarily // until the connection is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteIPSecConnection.go.html to see an example of how to use DeleteIPSecConnection API. func (client VirtualNetworkClient) DeleteIPSecConnection(ctx context.Context, request DeleteIPSecConnectionRequest) (response DeleteIPSecConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3113,9 +3973,16 @@ func (client VirtualNetworkClient) deleteIPSecConnection(ctx context.Context, re // there must not be a route table that lists it as a target. // This is an asynchronous operation. The gateway's `lifecycleState` will change to TERMINATING temporarily // until the gateway is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteInternetGateway.go.html to see an example of how to use DeleteInternetGateway API. func (client VirtualNetworkClient) DeleteInternetGateway(ctx context.Context, request DeleteInternetGatewayRequest) (response DeleteInternetGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3161,9 +4028,16 @@ func (client VirtualNetworkClient) deleteInternetGateway(ctx context.Context, re // DeleteIpv6 Unassigns and deletes the specified IPv6. You must specify the object's OCID. // The IPv6 address is returned to the subnet's pool of available addresses. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteIpv6.go.html to see an example of how to use DeleteIpv6 API. func (client VirtualNetworkClient) DeleteIpv6(ctx context.Context, request DeleteIpv6Request) (response DeleteIpv6Response, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3210,9 +4084,16 @@ func (client VirtualNetworkClient) deleteIpv6(ctx context.Context, request commo // DeleteLocalPeeringGateway Deletes the specified local peering gateway (LPG). // This is an asynchronous operation; the local peering gateway's `lifecycleState` changes to TERMINATING temporarily // until the local peering gateway is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteLocalPeeringGateway.go.html to see an example of how to use DeleteLocalPeeringGateway API. func (client VirtualNetworkClient) DeleteLocalPeeringGateway(ctx context.Context, request DeleteLocalPeeringGatewayRequest) (response DeleteLocalPeeringGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3260,9 +4141,16 @@ func (client VirtualNetworkClient) deleteLocalPeeringGateway(ctx context.Context // must not be a route rule that lists the NAT gateway as a target. // This is an asynchronous operation. The NAT gateway's `lifecycleState` will change to // TERMINATING temporarily until the NAT gateway is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteNatGateway.go.html to see an example of how to use DeleteNatGateway API. func (client VirtualNetworkClient) DeleteNatGateway(ctx context.Context, request DeleteNatGatewayRequest) (response DeleteNatGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3312,9 +4200,16 @@ func (client VirtualNetworkClient) deleteNatGateway(ctx context.Context, request // Each returned NetworkSecurityGroupVnic object // contains both the OCID of the VNIC and the OCID of the VNIC's parent resource (for example, // the Compute instance that the VNIC is attached to). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteNetworkSecurityGroup.go.html to see an example of how to use DeleteNetworkSecurityGroup API. func (client VirtualNetworkClient) DeleteNetworkSecurityGroup(ctx context.Context, request DeleteNetworkSecurityGroupRequest) (response DeleteNetworkSecurityGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3364,12 +4259,19 @@ func (client VirtualNetworkClient) deleteNetworkSecurityGroup(ctx context.Contex // This operation cannot be used with primary private IPs, which are // automatically unassigned and deleted when the VNIC is terminated. // **Important:** If a secondary private IP is the -// target of a route rule (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm#privateip), +// target of a route rule (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm#privateip), // unassigning it from the VNIC causes that route rule to blackhole and the traffic // will be dropped. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeletePrivateIp.go.html to see an example of how to use DeletePrivateIp API. func (client VirtualNetworkClient) DeletePrivateIp(ctx context.Context, request DeletePrivateIpRequest) (response DeletePrivateIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3425,9 +4327,16 @@ func (client VirtualNetworkClient) deletePrivateIp(ctx context.Context, request // If you want to simply unassign a reserved public IP and return it to your pool // of reserved public IPs, instead use // UpdatePublicIp. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeletePublicIp.go.html to see an example of how to use DeletePublicIp API. func (client VirtualNetworkClient) DeletePublicIp(ctx context.Context, request DeletePublicIpRequest) (response DeletePublicIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3471,12 +4380,75 @@ func (client VirtualNetworkClient) deletePublicIp(ctx context.Context, request c return response, err } +// DeletePublicIpPool Deletes the specified public IP pool. +// To delete a public IP pool it must not have any active IP address allocations. +// You must specify the object's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) when deleting an IP pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeletePublicIpPool.go.html to see an example of how to use DeletePublicIpPool API. +func (client VirtualNetworkClient) DeletePublicIpPool(ctx context.Context, request DeletePublicIpPoolRequest) (response DeletePublicIpPoolResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.deletePublicIpPool, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = DeletePublicIpPoolResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = DeletePublicIpPoolResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(DeletePublicIpPoolResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into DeletePublicIpPoolResponse") + } + return +} + +// deletePublicIpPool implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) deletePublicIpPool(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodDelete, "/publicIpPools/{publicIpPoolId}") + if err != nil { + return nil, err + } + + var response DeletePublicIpPoolResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // DeleteRemotePeeringConnection Deletes the remote peering connection (RPC). // This is an asynchronous operation; the RPC's `lifecycleState` changes to TERMINATING temporarily // until the RPC is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteRemotePeeringConnection.go.html to see an example of how to use DeleteRemotePeeringConnection API. func (client VirtualNetworkClient) DeleteRemotePeeringConnection(ctx context.Context, request DeleteRemotePeeringConnectionRequest) (response DeleteRemotePeeringConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3524,9 +4496,16 @@ func (client VirtualNetworkClient) deleteRemotePeeringConnection(ctx context.Con // VCN's default route table. // This is an asynchronous operation. The route table's `lifecycleState` will change to TERMINATING temporarily // until the route table is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteRouteTable.go.html to see an example of how to use DeleteRouteTable API. func (client VirtualNetworkClient) DeleteRouteTable(ctx context.Context, request DeleteRouteTableRequest) (response DeleteRouteTableResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3574,9 +4553,16 @@ func (client VirtualNetworkClient) deleteRouteTable(ctx context.Context, request // a VCN's default security list. // This is an asynchronous operation. The security list's `lifecycleState` will change to TERMINATING temporarily // until the security list is completely removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteSecurityList.go.html to see an example of how to use DeleteSecurityList API. func (client VirtualNetworkClient) DeleteSecurityList(ctx context.Context, request DeleteSecurityListRequest) (response DeleteSecurityListResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3622,9 +4608,16 @@ func (client VirtualNetworkClient) deleteSecurityList(ctx context.Context, reque // DeleteServiceGateway Deletes the specified service gateway. There must not be a route table that lists the service // gateway as a target. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteServiceGateway.go.html to see an example of how to use DeleteServiceGateway API. func (client VirtualNetworkClient) DeleteServiceGateway(ctx context.Context, request DeleteServiceGatewayRequest) (response DeleteServiceGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3671,9 +4664,16 @@ func (client VirtualNetworkClient) deleteServiceGateway(ctx context.Context, req // DeleteSubnet Deletes the specified subnet, but only if there are no instances in the subnet. This is an asynchronous // operation. The subnet's `lifecycleState` will change to TERMINATING temporarily. If there are any // instances in the subnet, the state will instead change back to AVAILABLE. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteSubnet.go.html to see an example of how to use DeleteSubnet API. func (client VirtualNetworkClient) DeleteSubnet(ctx context.Context, request DeleteSubnetRequest) (response DeleteSubnetResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3720,9 +4720,16 @@ func (client VirtualNetworkClient) deleteSubnet(ctx context.Context, request com // DeleteVcn Deletes the specified VCN. The VCN must be empty and have no attached gateways. This is an asynchronous // operation. The VCN's `lifecycleState` will change to TERMINATING temporarily until the VCN is completely // removed. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVcn.go.html to see an example of how to use DeleteVcn API. func (client VirtualNetworkClient) DeleteVcn(ctx context.Context, request DeleteVcnRequest) (response DeleteVcnResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3770,9 +4777,16 @@ func (client VirtualNetworkClient) deleteVcn(ctx context.Context, request common // **Important:** If you're using FastConnect via a provider, // make sure to also terminate the connection with // the provider, or else the provider may continue to bill you. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVirtualCircuit.go.html to see an example of how to use DeleteVirtualCircuit API. func (client VirtualNetworkClient) DeleteVirtualCircuit(ctx context.Context, request DeleteVirtualCircuitRequest) (response DeleteVirtualCircuitResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3817,9 +4831,16 @@ func (client VirtualNetworkClient) deleteVirtualCircuit(ctx context.Context, req } // DeleteVlan Deletes the specified VLAN, but only if there are no VNICs in the VLAN. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVlan.go.html to see an example of how to use DeleteVlan API. func (client VirtualNetworkClient) DeleteVlan(ctx context.Context, request DeleteVlanRequest) (response DeleteVlanResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3874,9 +4895,16 @@ func (client VirtualNetworkClient) deleteVlan(ctx context.Context, request commo // the entire existing list of enabled `Service` objects with the list that you provide in the // `Update` call. `UpdateServiceGateway` also lets you block all traffic through the service // gateway without having to remove each of the individual `Service` objects. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachServiceId.go.html to see an example of how to use DetachServiceId API. func (client VirtualNetworkClient) DetachServiceId(ctx context.Context, request DetachServiceIdRequest) (response DetachServiceIdResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3920,10 +4948,71 @@ func (client VirtualNetworkClient) detachServiceId(ctx context.Context, request return response, err } +// GetByoipRange Gets the `ByoipRange` resource. You must specify the OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetByoipRange.go.html to see an example of how to use GetByoipRange API. +func (client VirtualNetworkClient) GetByoipRange(ctx context.Context, request GetByoipRangeRequest) (response GetByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.getByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = GetByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = GetByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(GetByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into GetByoipRangeResponse") + } + return +} + +// getByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) getByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/byoipRanges/{byoipRangeId}") + if err != nil { + return nil, err + } + + var response GetByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // GetCpe Gets the specified CPE's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCpe.go.html to see an example of how to use GetCpe API. func (client VirtualNetworkClient) GetCpe(ctx context.Context, request GetCpeRequest) (response GetCpeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -3982,9 +5071,16 @@ func (client VirtualNetworkClient) getCpe(ctx context.Context, request common.OC // returns CPE configuration content for all tunnels in a single IPSec connection. // * GetTunnelCpeDeviceConfigContent // returns CPE configuration content for a specific tunnel within an IPSec connection. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCpeDeviceConfigContent.go.html to see an example of how to use GetCpeDeviceConfigContent API. func (client VirtualNetworkClient) GetCpeDeviceConfigContent(ctx context.Context, request GetCpeDeviceConfigContentRequest) (response GetCpeDeviceConfigContentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4035,9 +5131,16 @@ func (client VirtualNetworkClient) getCpeDeviceConfigContent(ctx context.Context // * GetCpeDeviceConfigContent // * GetIpsecCpeDeviceConfigContent // * GetTunnelCpeDeviceConfigContent +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCpeDeviceShape.go.html to see an example of how to use GetCpeDeviceShape API. func (client VirtualNetworkClient) GetCpeDeviceShape(ctx context.Context, request GetCpeDeviceShapeRequest) (response GetCpeDeviceShapeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4082,9 +5185,16 @@ func (client VirtualNetworkClient) getCpeDeviceShape(ctx context.Context, reques } // GetCrossConnect Gets the specified cross-connect's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnect.go.html to see an example of how to use GetCrossConnect API. func (client VirtualNetworkClient) GetCrossConnect(ctx context.Context, request GetCrossConnectRequest) (response GetCrossConnectResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4129,9 +5239,16 @@ func (client VirtualNetworkClient) getCrossConnect(ctx context.Context, request } // GetCrossConnectGroup Gets the specified cross-connect group's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnectGroup.go.html to see an example of how to use GetCrossConnectGroup API. func (client VirtualNetworkClient) GetCrossConnectGroup(ctx context.Context, request GetCrossConnectGroupRequest) (response GetCrossConnectGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4176,9 +5293,16 @@ func (client VirtualNetworkClient) getCrossConnectGroup(ctx context.Context, req } // GetCrossConnectLetterOfAuthority Gets the Letter of Authority for the specified cross-connect. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnectLetterOfAuthority.go.html to see an example of how to use GetCrossConnectLetterOfAuthority API. func (client VirtualNetworkClient) GetCrossConnectLetterOfAuthority(ctx context.Context, request GetCrossConnectLetterOfAuthorityRequest) (response GetCrossConnectLetterOfAuthorityResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4223,9 +5347,16 @@ func (client VirtualNetworkClient) getCrossConnectLetterOfAuthority(ctx context. } // GetCrossConnectStatus Gets the status of the specified cross-connect. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnectStatus.go.html to see an example of how to use GetCrossConnectStatus API. func (client VirtualNetworkClient) GetCrossConnectStatus(ctx context.Context, request GetCrossConnectStatusRequest) (response GetCrossConnectStatusResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4270,9 +5401,16 @@ func (client VirtualNetworkClient) getCrossConnectStatus(ctx context.Context, re } // GetDhcpOptions Gets the specified set of DHCP options. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDhcpOptions.go.html to see an example of how to use GetDhcpOptions API. func (client VirtualNetworkClient) GetDhcpOptions(ctx context.Context, request GetDhcpOptionsRequest) (response GetDhcpOptionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4317,9 +5455,16 @@ func (client VirtualNetworkClient) getDhcpOptions(ctx context.Context, request c } // GetDrg Gets the specified DRG's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDrg.go.html to see an example of how to use GetDrg API. func (client VirtualNetworkClient) GetDrg(ctx context.Context, request GetDrgRequest) (response GetDrgResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4364,9 +5509,16 @@ func (client VirtualNetworkClient) getDrg(ctx context.Context, request common.OC } // GetDrgAttachment Gets the information for the specified `DrgAttachment`. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDrgAttachment.go.html to see an example of how to use GetDrgAttachment API. func (client VirtualNetworkClient) GetDrgAttachment(ctx context.Context, request GetDrgAttachmentRequest) (response GetDrgAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4411,10 +5563,17 @@ func (client VirtualNetworkClient) getDrgAttachment(ctx context.Context, request } // GetDrgRedundancyStatus Gets the redundancy status for the specified DRG. For more information, see -// Redundancy Remedies (https://docs.cloud.oracle.com/Content/Network/Troubleshoot/drgredundancy.htm). +// Redundancy Remedies (https://docs.cloud.oracle.com/iaas/Content/Network/Troubleshoot/drgredundancy.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDrgRedundancyStatus.go.html to see an example of how to use GetDrgRedundancyStatus API. func (client VirtualNetworkClient) GetDrgRedundancyStatus(ctx context.Context, request GetDrgRedundancyStatusRequest) (response GetDrgRedundancyStatusResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4459,10 +5618,17 @@ func (client VirtualNetworkClient) getDrgRedundancyStatus(ctx context.Context, r } // GetFastConnectProviderService Gets the specified provider service. -// For more information, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// For more information, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetFastConnectProviderService.go.html to see an example of how to use GetFastConnectProviderService API. func (client VirtualNetworkClient) GetFastConnectProviderService(ctx context.Context, request GetFastConnectProviderServiceRequest) (response GetFastConnectProviderServiceResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4508,9 +5674,16 @@ func (client VirtualNetworkClient) getFastConnectProviderService(ctx context.Con // GetFastConnectProviderServiceKey Gets the specified provider service key's information. Use this operation to validate a // provider service key. An invalid key returns a 404 error. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetFastConnectProviderServiceKey.go.html to see an example of how to use GetFastConnectProviderServiceKey API. func (client VirtualNetworkClient) GetFastConnectProviderServiceKey(ctx context.Context, request GetFastConnectProviderServiceKeyRequest) (response GetFastConnectProviderServiceKeyResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4557,9 +5730,16 @@ func (client VirtualNetworkClient) getFastConnectProviderServiceKey(ctx context. // GetIPSecConnection Gets the specified IPSec connection's basic information, including the static routes for the // on-premises router. If you want the status of the connection (whether it's up or down), use // GetIPSecConnectionTunnel. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnection.go.html to see an example of how to use GetIPSecConnection API. func (client VirtualNetworkClient) GetIPSecConnection(ctx context.Context, request GetIPSecConnectionRequest) (response GetIPSecConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4606,9 +5786,16 @@ func (client VirtualNetworkClient) getIPSecConnection(ctx context.Context, reque // GetIPSecConnectionDeviceConfig Deprecated. To get tunnel information, instead use: // * GetIPSecConnectionTunnel // * GetIPSecConnectionTunnelSharedSecret +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionDeviceConfig.go.html to see an example of how to use GetIPSecConnectionDeviceConfig API. func (client VirtualNetworkClient) GetIPSecConnectionDeviceConfig(ctx context.Context, request GetIPSecConnectionDeviceConfigRequest) (response GetIPSecConnectionDeviceConfigResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4654,9 +5841,16 @@ func (client VirtualNetworkClient) getIPSecConnectionDeviceConfig(ctx context.Co // GetIPSecConnectionDeviceStatus Deprecated. To get the tunnel status, instead use // GetIPSecConnectionTunnel. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionDeviceStatus.go.html to see an example of how to use GetIPSecConnectionDeviceStatus API. func (client VirtualNetworkClient) GetIPSecConnectionDeviceStatus(ctx context.Context, request GetIPSecConnectionDeviceStatusRequest) (response GetIPSecConnectionDeviceStatusResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4703,9 +5897,16 @@ func (client VirtualNetworkClient) getIPSecConnectionDeviceStatus(ctx context.Co // GetIPSecConnectionTunnel Gets the specified tunnel's information. The resulting object does not include the tunnel's // shared secret (pre-shared key). To retrieve that, use // GetIPSecConnectionTunnelSharedSecret. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionTunnel.go.html to see an example of how to use GetIPSecConnectionTunnel API. func (client VirtualNetworkClient) GetIPSecConnectionTunnel(ctx context.Context, request GetIPSecConnectionTunnelRequest) (response GetIPSecConnectionTunnelResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4751,9 +5952,16 @@ func (client VirtualNetworkClient) getIPSecConnectionTunnel(ctx context.Context, // GetIPSecConnectionTunnelSharedSecret Gets the specified tunnel's shared secret (pre-shared key). To get other information // about the tunnel, use GetIPSecConnectionTunnel. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionTunnelSharedSecret.go.html to see an example of how to use GetIPSecConnectionTunnelSharedSecret API. func (client VirtualNetworkClient) GetIPSecConnectionTunnelSharedSecret(ctx context.Context, request GetIPSecConnectionTunnelSharedSecretRequest) (response GetIPSecConnectionTunnelSharedSecretResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4798,9 +6006,16 @@ func (client VirtualNetworkClient) getIPSecConnectionTunnelSharedSecret(ctx cont } // GetInternetGateway Gets the specified internet gateway's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInternetGateway.go.html to see an example of how to use GetInternetGateway API. func (client VirtualNetworkClient) GetInternetGateway(ctx context.Context, request GetInternetGatewayRequest) (response GetInternetGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4860,9 +6075,16 @@ func (client VirtualNetworkClient) getInternetGateway(ctx context.Context, reque // returns CPE configuration content for a specific tunnel within an IPSec connection. // * GetCpeDeviceConfigContent // returns CPE configuration content for *all* IPSec connections that use a specific CPE. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIpsecCpeDeviceConfigContent.go.html to see an example of how to use GetIpsecCpeDeviceConfigContent API. func (client VirtualNetworkClient) GetIpsecCpeDeviceConfigContent(ctx context.Context, request GetIpsecCpeDeviceConfigContentRequest) (response GetIpsecCpeDeviceConfigContentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4909,9 +6131,16 @@ func (client VirtualNetworkClient) getIpsecCpeDeviceConfigContent(ctx context.Co // Alternatively, you can get the object by using // ListIpv6s // with the IPv6 address (for example, 2001:0db8:0123:1111:98fe:dcba:9876:4321) and subnet OCID. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIpv6.go.html to see an example of how to use GetIpv6 API. func (client VirtualNetworkClient) GetIpv6(ctx context.Context, request GetIpv6Request) (response GetIpv6Response, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -4956,9 +6185,16 @@ func (client VirtualNetworkClient) getIpv6(ctx context.Context, request common.O } // GetLocalPeeringGateway Gets the specified local peering gateway's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetLocalPeeringGateway.go.html to see an example of how to use GetLocalPeeringGateway API. func (client VirtualNetworkClient) GetLocalPeeringGateway(ctx context.Context, request GetLocalPeeringGatewayRequest) (response GetLocalPeeringGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5003,9 +6239,16 @@ func (client VirtualNetworkClient) getLocalPeeringGateway(ctx context.Context, r } // GetNatGateway Gets the specified NAT gateway's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetNatGateway.go.html to see an example of how to use GetNatGateway API. func (client VirtualNetworkClient) GetNatGateway(ctx context.Context, request GetNatGatewayRequest) (response GetNatGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5054,9 +6297,16 @@ func (client VirtualNetworkClient) getNatGateway(ctx context.Context, request co // ListNetworkSecurityGroupVnics. // To list the security rules in an NSG, see // ListNetworkSecurityGroupSecurityRules. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetNetworkSecurityGroup.go.html to see an example of how to use GetNetworkSecurityGroup API. func (client VirtualNetworkClient) GetNetworkSecurityGroup(ctx context.Context, request GetNetworkSecurityGroupRequest) (response GetNetworkSecurityGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5104,9 +6354,16 @@ func (client VirtualNetworkClient) getNetworkSecurityGroup(ctx context.Context, // Alternatively, you can get the object by using // ListPrivateIps // with the private IP address (for example, 10.0.3.3) and subnet OCID. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPrivateIp.go.html to see an example of how to use GetPrivateIp API. func (client VirtualNetworkClient) GetPrivateIp(ctx context.Context, request GetPrivateIpRequest) (response GetPrivateIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5158,9 +6415,16 @@ func (client VirtualNetworkClient) getPrivateIp(ctx context.Context, request com // **Note:** If you're fetching a reserved public IP that is in the process of being // moved to a different private IP, the service returns the public IP object with // `lifecycleState` = ASSIGNING and `assignedEntityId` = OCID of the target private IP. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIp.go.html to see an example of how to use GetPublicIp API. func (client VirtualNetworkClient) GetPublicIp(ctx context.Context, request GetPublicIpRequest) (response GetPublicIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5208,9 +6472,16 @@ func (client VirtualNetworkClient) getPublicIp(ctx context.Context, request comm // **Note:** If you're fetching a reserved public IP that is in the process of being // moved to a different private IP, the service returns the public IP object with // `lifecycleState` = ASSIGNING and `assignedEntityId` = OCID of the target private IP. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIpByIpAddress.go.html to see an example of how to use GetPublicIpByIpAddress API. func (client VirtualNetworkClient) GetPublicIpByIpAddress(ctx context.Context, request GetPublicIpByIpAddressRequest) (response GetPublicIpByIpAddressResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5264,9 +6535,16 @@ func (client VirtualNetworkClient) getPublicIpByIpAddress(ctx context.Context, r // GetPublicIpByIpAddress, the // service returns the public IP object with `lifecycleState` = ASSIGNING and // `assignedEntityId` = OCID of the target private IP. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIpByPrivateIpId.go.html to see an example of how to use GetPublicIpByPrivateIpId API. func (client VirtualNetworkClient) GetPublicIpByPrivateIpId(ctx context.Context, request GetPublicIpByPrivateIpIdRequest) (response GetPublicIpByPrivateIpIdResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5310,10 +6588,71 @@ func (client VirtualNetworkClient) getPublicIpByPrivateIpId(ctx context.Context, return response, err } +// GetPublicIpPool Gets the specified `PublicIpPool` object. You must specify the object's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIpPool.go.html to see an example of how to use GetPublicIpPool API. +func (client VirtualNetworkClient) GetPublicIpPool(ctx context.Context, request GetPublicIpPoolRequest) (response GetPublicIpPoolResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.getPublicIpPool, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = GetPublicIpPoolResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = GetPublicIpPoolResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(GetPublicIpPoolResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into GetPublicIpPoolResponse") + } + return +} + +// getPublicIpPool implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) getPublicIpPool(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/publicIpPools/{publicIpPoolId}") + if err != nil { + return nil, err + } + + var response GetPublicIpPoolResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // GetRemotePeeringConnection Get the specified remote peering connection's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetRemotePeeringConnection.go.html to see an example of how to use GetRemotePeeringConnection API. func (client VirtualNetworkClient) GetRemotePeeringConnection(ctx context.Context, request GetRemotePeeringConnectionRequest) (response GetRemotePeeringConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5358,9 +6697,16 @@ func (client VirtualNetworkClient) getRemotePeeringConnection(ctx context.Contex } // GetRouteTable Gets the specified route table's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetRouteTable.go.html to see an example of how to use GetRouteTable API. func (client VirtualNetworkClient) GetRouteTable(ctx context.Context, request GetRouteTableRequest) (response GetRouteTableResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5405,9 +6751,16 @@ func (client VirtualNetworkClient) getRouteTable(ctx context.Context, request co } // GetSecurityList Gets the specified security list's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetSecurityList.go.html to see an example of how to use GetSecurityList API. func (client VirtualNetworkClient) GetSecurityList(ctx context.Context, request GetSecurityListRequest) (response GetSecurityListResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5452,9 +6805,16 @@ func (client VirtualNetworkClient) getSecurityList(ctx context.Context, request } // GetService Gets the specified Service object. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetService.go.html to see an example of how to use GetService API. func (client VirtualNetworkClient) GetService(ctx context.Context, request GetServiceRequest) (response GetServiceResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5499,9 +6859,16 @@ func (client VirtualNetworkClient) getService(ctx context.Context, request commo } // GetServiceGateway Gets the specified service gateway's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetServiceGateway.go.html to see an example of how to use GetServiceGateway API. func (client VirtualNetworkClient) GetServiceGateway(ctx context.Context, request GetServiceGatewayRequest) (response GetServiceGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5546,9 +6913,16 @@ func (client VirtualNetworkClient) getServiceGateway(ctx context.Context, reques } // GetSubnet Gets the specified subnet's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetSubnet.go.html to see an example of how to use GetSubnet API. func (client VirtualNetworkClient) GetSubnet(ctx context.Context, request GetSubnetRequest) (response GetSubnetResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5597,9 +6971,16 @@ func (client VirtualNetworkClient) getSubnet(ctx context.Context, request common // To get the full set of content for the tunnel (any answers merged with the template of other // information specific to the CPE device type), use // GetTunnelCpeDeviceConfigContent. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetTunnelCpeDeviceConfig.go.html to see an example of how to use GetTunnelCpeDeviceConfig API. func (client VirtualNetworkClient) GetTunnelCpeDeviceConfig(ctx context.Context, request GetTunnelCpeDeviceConfigRequest) (response GetTunnelCpeDeviceConfigResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5658,9 +7039,16 @@ func (client VirtualNetworkClient) getTunnelCpeDeviceConfig(ctx context.Context, // returns CPE configuration content for all tunnels in a single IPSec connection. // * GetCpeDeviceConfigContent // returns CPE configuration content for *all* IPSec connections that use a specific CPE. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetTunnelCpeDeviceConfigContent.go.html to see an example of how to use GetTunnelCpeDeviceConfigContent API. func (client VirtualNetworkClient) GetTunnelCpeDeviceConfigContent(ctx context.Context, request GetTunnelCpeDeviceConfigContentRequest) (response GetTunnelCpeDeviceConfigContentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5704,9 +7092,16 @@ func (client VirtualNetworkClient) getTunnelCpeDeviceConfigContent(ctx context.C } // GetVcn Gets the specified VCN's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVcn.go.html to see an example of how to use GetVcn API. func (client VirtualNetworkClient) GetVcn(ctx context.Context, request GetVcnRequest) (response GetVcnResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5750,10 +7145,71 @@ func (client VirtualNetworkClient) getVcn(ctx context.Context, request common.OC return response, err } +// GetVcnDnsResolverAssociation Get the associated DNS resolver information with a vcn +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVcnDnsResolverAssociation.go.html to see an example of how to use GetVcnDnsResolverAssociation API. +func (client VirtualNetworkClient) GetVcnDnsResolverAssociation(ctx context.Context, request GetVcnDnsResolverAssociationRequest) (response GetVcnDnsResolverAssociationResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.getVcnDnsResolverAssociation, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = GetVcnDnsResolverAssociationResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = GetVcnDnsResolverAssociationResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(GetVcnDnsResolverAssociationResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into GetVcnDnsResolverAssociationResponse") + } + return +} + +// getVcnDnsResolverAssociation implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) getVcnDnsResolverAssociation(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/vcns/{vcnId}/dnsResolverAssociation") + if err != nil { + return nil, err + } + + var response GetVcnDnsResolverAssociationResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // GetVirtualCircuit Gets the specified virtual circuit's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVirtualCircuit.go.html to see an example of how to use GetVirtualCircuit API. func (client VirtualNetworkClient) GetVirtualCircuit(ctx context.Context, request GetVirtualCircuitRequest) (response GetVirtualCircuitResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5798,9 +7254,16 @@ func (client VirtualNetworkClient) getVirtualCircuit(ctx context.Context, reques } // GetVlan Gets the specified VLAN's information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVlan.go.html to see an example of how to use GetVlan API. func (client VirtualNetworkClient) GetVlan(ctx context.Context, request GetVlanRequest) (response GetVlanResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5848,9 +7311,16 @@ func (client VirtualNetworkClient) getVlan(ctx context.Context, request common.O // You can get the VNIC OCID from the // ListVnicAttachments // operation. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVnic.go.html to see an example of how to use GetVnic API. func (client VirtualNetworkClient) GetVnic(ctx context.Context, request GetVnicRequest) (response GetVnicResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5895,10 +7365,17 @@ func (client VirtualNetworkClient) getVnic(ctx context.Context, request common.O } // ListAllowedPeerRegionsForRemotePeering Lists the regions that support remote VCN peering (which is peering across regions). -// For more information, see VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). +// For more information, see VCN Peering (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/VCNpeering.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAllowedPeerRegionsForRemotePeering.go.html to see an example of how to use ListAllowedPeerRegionsForRemotePeering API. func (client VirtualNetworkClient) ListAllowedPeerRegionsForRemotePeering(ctx context.Context, request ListAllowedPeerRegionsForRemotePeeringRequest) (response ListAllowedPeerRegionsForRemotePeeringResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5942,6 +7419,116 @@ func (client VirtualNetworkClient) listAllowedPeerRegionsForRemotePeering(ctx co return response, err } +// ListByoipAllocatedRanges Lists the subranges of a BYOIP CIDR block currently allocated to an IP pool. +// Each `ByoipAllocatedRange` object also lists the IP pool where it is allocated. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListByoipAllocatedRanges.go.html to see an example of how to use ListByoipAllocatedRanges API. +func (client VirtualNetworkClient) ListByoipAllocatedRanges(ctx context.Context, request ListByoipAllocatedRangesRequest) (response ListByoipAllocatedRangesResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.listByoipAllocatedRanges, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ListByoipAllocatedRangesResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ListByoipAllocatedRangesResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ListByoipAllocatedRangesResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ListByoipAllocatedRangesResponse") + } + return +} + +// listByoipAllocatedRanges implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) listByoipAllocatedRanges(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/byoipRanges/{byoipRangeId}/byoipAllocatedRanges") + if err != nil { + return nil, err + } + + var response ListByoipAllocatedRangesResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + +// ListByoipRanges Lists the `ByoipRange` resources in the specified compartment. +// You can filter the list using query parameters. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListByoipRanges.go.html to see an example of how to use ListByoipRanges API. +func (client VirtualNetworkClient) ListByoipRanges(ctx context.Context, request ListByoipRangesRequest) (response ListByoipRangesResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.listByoipRanges, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ListByoipRangesResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ListByoipRangesResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ListByoipRangesResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ListByoipRangesResponse") + } + return +} + +// listByoipRanges implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) listByoipRanges(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/byoipRanges") + if err != nil { + return nil, err + } + + var response ListByoipRangesResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // ListCpeDeviceShapes Lists the CPE device types that the Networking service provides CPE configuration // content for (example: Cisco ASA). The content helps a network engineer configure // the actual CPE device represented by a Cpe object. @@ -5952,9 +7539,16 @@ func (client VirtualNetworkClient) listAllowedPeerRegionsForRemotePeering(ctx co // * GetCpeDeviceConfigContent // * GetIpsecCpeDeviceConfigContent // * GetTunnelCpeDeviceConfigContent +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCpeDeviceShapes.go.html to see an example of how to use ListCpeDeviceShapes API. func (client VirtualNetworkClient) ListCpeDeviceShapes(ctx context.Context, request ListCpeDeviceShapesRequest) (response ListCpeDeviceShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -5999,9 +7593,16 @@ func (client VirtualNetworkClient) listCpeDeviceShapes(ctx context.Context, requ } // ListCpes Lists the customer-premises equipment objects (CPEs) in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCpes.go.html to see an example of how to use ListCpes API. func (client VirtualNetworkClient) ListCpes(ctx context.Context, request ListCpesRequest) (response ListCpesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6046,9 +7647,16 @@ func (client VirtualNetworkClient) listCpes(ctx context.Context, request common. } // ListCrossConnectGroups Lists the cross-connect groups in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossConnectGroups.go.html to see an example of how to use ListCrossConnectGroups API. func (client VirtualNetworkClient) ListCrossConnectGroups(ctx context.Context, request ListCrossConnectGroupsRequest) (response ListCrossConnectGroupsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6094,9 +7702,16 @@ func (client VirtualNetworkClient) listCrossConnectGroups(ctx context.Context, r // ListCrossConnectLocations Lists the available FastConnect locations for cross-connect installation. You need // this information so you can specify your desired location when you create a cross-connect. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossConnectLocations.go.html to see an example of how to use ListCrossConnectLocations API. func (client VirtualNetworkClient) ListCrossConnectLocations(ctx context.Context, request ListCrossConnectLocationsRequest) (response ListCrossConnectLocationsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6142,9 +7757,16 @@ func (client VirtualNetworkClient) listCrossConnectLocations(ctx context.Context // ListCrossConnects Lists the cross-connects in the specified compartment. You can filter the list // by specifying the OCID of a cross-connect group. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossConnects.go.html to see an example of how to use ListCrossConnects API. func (client VirtualNetworkClient) ListCrossConnects(ctx context.Context, request ListCrossConnectsRequest) (response ListCrossConnectsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6191,9 +7813,16 @@ func (client VirtualNetworkClient) listCrossConnects(ctx context.Context, reques // ListCrossconnectPortSpeedShapes Lists the available port speeds for cross-connects. You need this information // so you can specify your desired port speed (that is, shape) when you create a // cross-connect. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossconnectPortSpeedShapes.go.html to see an example of how to use ListCrossconnectPortSpeedShapes API. func (client VirtualNetworkClient) ListCrossconnectPortSpeedShapes(ctx context.Context, request ListCrossconnectPortSpeedShapesRequest) (response ListCrossconnectPortSpeedShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6241,9 +7870,16 @@ func (client VirtualNetworkClient) listCrossconnectPortSpeedShapes(ctx context.C // If the VCN ID is not provided, then the list includes the sets of DHCP options from all VCNs in the specified compartment. // The response includes the default set of options that automatically comes with each VCN, // plus any other sets you've created. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDhcpOptions.go.html to see an example of how to use ListDhcpOptions API. func (client VirtualNetworkClient) ListDhcpOptions(ctx context.Context, request ListDhcpOptionsRequest) (response ListDhcpOptionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6289,9 +7925,16 @@ func (client VirtualNetworkClient) listDhcpOptions(ctx context.Context, request // ListDrgAttachments Lists the `DrgAttachment` objects for the specified compartment. You can filter the // results by VCN or DRG. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDrgAttachments.go.html to see an example of how to use ListDrgAttachments API. func (client VirtualNetworkClient) ListDrgAttachments(ctx context.Context, request ListDrgAttachmentsRequest) (response ListDrgAttachmentsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6336,9 +7979,16 @@ func (client VirtualNetworkClient) listDrgAttachments(ctx context.Context, reque } // ListDrgs Lists the DRGs in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDrgs.go.html to see an example of how to use ListDrgs API. func (client VirtualNetworkClient) ListDrgs(ctx context.Context, request ListDrgsRequest) (response ListDrgsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6386,10 +8036,17 @@ func (client VirtualNetworkClient) listDrgs(ctx context.Context, request common. // information so you can specify your desired provider and service // offering when you create a virtual circuit. // For the compartment ID, provide the OCID of your tenancy (the root compartment). -// For more information, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// For more information, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListFastConnectProviderServices.go.html to see an example of how to use ListFastConnectProviderServices API. func (client VirtualNetworkClient) ListFastConnectProviderServices(ctx context.Context, request ListFastConnectProviderServicesRequest) (response ListFastConnectProviderServicesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6435,10 +8092,17 @@ func (client VirtualNetworkClient) listFastConnectProviderServices(ctx context.C // ListFastConnectProviderVirtualCircuitBandwidthShapes Gets the list of available virtual circuit bandwidth levels for a provider. // You need this information so you can specify your desired bandwidth level (shape) when you create a virtual circuit. -// For more information about virtual circuits, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// For more information about virtual circuits, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListFastConnectProviderVirtualCircuitBandwidthShapes.go.html to see an example of how to use ListFastConnectProviderVirtualCircuitBandwidthShapes API. func (client VirtualNetworkClient) ListFastConnectProviderVirtualCircuitBandwidthShapes(ctx context.Context, request ListFastConnectProviderVirtualCircuitBandwidthShapesRequest) (response ListFastConnectProviderVirtualCircuitBandwidthShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6483,9 +8147,16 @@ func (client VirtualNetworkClient) listFastConnectProviderVirtualCircuitBandwidt } // ListIPSecConnectionTunnels Lists the tunnel information for the specified IPSec connection. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListIPSecConnectionTunnels.go.html to see an example of how to use ListIPSecConnectionTunnels API. func (client VirtualNetworkClient) ListIPSecConnectionTunnels(ctx context.Context, request ListIPSecConnectionTunnelsRequest) (response ListIPSecConnectionTunnelsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6531,9 +8202,16 @@ func (client VirtualNetworkClient) listIPSecConnectionTunnels(ctx context.Contex // ListIPSecConnections Lists the IPSec connections for the specified compartment. You can filter the // results by DRG or CPE. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListIPSecConnections.go.html to see an example of how to use ListIPSecConnections API. func (client VirtualNetworkClient) ListIPSecConnections(ctx context.Context, request ListIPSecConnectionsRequest) (response ListIPSecConnectionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6579,9 +8257,16 @@ func (client VirtualNetworkClient) listIPSecConnections(ctx context.Context, req // ListInternetGateways Lists the internet gateways in the specified VCN and the specified compartment. // If the VCN ID is not provided, then the list includes the internet gateways from all VCNs in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInternetGateways.go.html to see an example of how to use ListInternetGateways API. func (client VirtualNetworkClient) ListInternetGateways(ctx context.Context, request ListInternetGatewaysRequest) (response ListInternetGatewaysResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6632,9 +8317,16 @@ func (client VirtualNetworkClient) listInternetGateways(ctx context.Context, req // * Both IPv6 address and subnet OCID: This lets you get an `Ipv6` object based on its private // IPv6 address (for example, 2001:0db8:0123:1111:abcd:ef01:2345:6789) and not its OCID. For comparison, // GetIpv6 requires the OCID. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListIpv6s.go.html to see an example of how to use ListIpv6s API. func (client VirtualNetworkClient) ListIpv6s(ctx context.Context, request ListIpv6sRequest) (response ListIpv6sResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6680,9 +8372,16 @@ func (client VirtualNetworkClient) listIpv6s(ctx context.Context, request common // ListLocalPeeringGateways Lists the local peering gateways (LPGs) for the specified VCN and specified compartment. // If the VCN ID is not provided, then the list includes the LPGs from all VCNs in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListLocalPeeringGateways.go.html to see an example of how to use ListLocalPeeringGateways API. func (client VirtualNetworkClient) ListLocalPeeringGateways(ctx context.Context, request ListLocalPeeringGatewaysRequest) (response ListLocalPeeringGatewaysResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6728,9 +8427,16 @@ func (client VirtualNetworkClient) listLocalPeeringGateways(ctx context.Context, // ListNatGateways Lists the NAT gateways in the specified compartment. You may optionally specify a VCN OCID // to filter the results by VCN. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNatGateways.go.html to see an example of how to use ListNatGateways API. func (client VirtualNetworkClient) ListNatGateways(ctx context.Context, request ListNatGatewaysRequest) (response ListNatGatewaysResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6775,9 +8481,16 @@ func (client VirtualNetworkClient) listNatGateways(ctx context.Context, request } // ListNetworkSecurityGroupSecurityRules Lists the security rules in the specified network security group. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNetworkSecurityGroupSecurityRules.go.html to see an example of how to use ListNetworkSecurityGroupSecurityRules API. func (client VirtualNetworkClient) ListNetworkSecurityGroupSecurityRules(ctx context.Context, request ListNetworkSecurityGroupSecurityRulesRequest) (response ListNetworkSecurityGroupSecurityRulesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6822,9 +8535,16 @@ func (client VirtualNetworkClient) listNetworkSecurityGroupSecurityRules(ctx con } // ListNetworkSecurityGroupVnics Lists the VNICs in the specified network security group. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNetworkSecurityGroupVnics.go.html to see an example of how to use ListNetworkSecurityGroupVnics API. func (client VirtualNetworkClient) ListNetworkSecurityGroupVnics(ctx context.Context, request ListNetworkSecurityGroupVnicsRequest) (response ListNetworkSecurityGroupVnicsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6869,9 +8589,16 @@ func (client VirtualNetworkClient) listNetworkSecurityGroupVnics(ctx context.Con } // ListNetworkSecurityGroups Lists the network security groups in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNetworkSecurityGroups.go.html to see an example of how to use ListNetworkSecurityGroups API. func (client VirtualNetworkClient) ListNetworkSecurityGroups(ctx context.Context, request ListNetworkSecurityGroupsRequest) (response ListNetworkSecurityGroupsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6928,9 +8655,16 @@ func (client VirtualNetworkClient) listNetworkSecurityGroups(ctx context.Context // or VNIC, the response includes both primary and secondary private IPs. // If you are an Oracle Cloud VMware Solution customer and have VLANs // in your VCN, you can filter the list by VLAN OCID. See Vlan. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListPrivateIps.go.html to see an example of how to use ListPrivateIps API. func (client VirtualNetworkClient) ListPrivateIps(ctx context.Context, request ListPrivateIpsRequest) (response ListPrivateIpsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -6974,6 +8708,61 @@ func (client VirtualNetworkClient) listPrivateIps(ctx context.Context, request c return response, err } +// ListPublicIpPools Lists the public IP pools in the specified compartment. +// You can filter the list using query parameters. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListPublicIpPools.go.html to see an example of how to use ListPublicIpPools API. +func (client VirtualNetworkClient) ListPublicIpPools(ctx context.Context, request ListPublicIpPoolsRequest) (response ListPublicIpPoolsResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.listPublicIpPools, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ListPublicIpPoolsResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ListPublicIpPoolsResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ListPublicIpPoolsResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ListPublicIpPoolsResponse") + } + return +} + +// listPublicIpPools implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) listPublicIpPools(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodGet, "/publicIpPools") + if err != nil { + return nil, err + } + + var response ListPublicIpPoolsResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // ListPublicIps Lists the PublicIp objects // in the specified compartment. You can filter the list by using query parameters. // To list your reserved public IPs: @@ -6990,9 +8779,16 @@ func (client VirtualNetworkClient) listPrivateIps(ctx context.Context, request c // * Set `lifetime` = `EPHEMERAL` // **Note:** An ephemeral public IP assigned to a private IP // is always in the same availability domain and compartment as the private IP. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListPublicIps.go.html to see an example of how to use ListPublicIps API. func (client VirtualNetworkClient) ListPublicIps(ctx context.Context, request ListPublicIpsRequest) (response ListPublicIpsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7038,9 +8834,16 @@ func (client VirtualNetworkClient) listPublicIps(ctx context.Context, request co // ListRemotePeeringConnections Lists the remote peering connections (RPCs) for the specified DRG and compartment // (the RPC's compartment). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListRemotePeeringConnections.go.html to see an example of how to use ListRemotePeeringConnections API. func (client VirtualNetworkClient) ListRemotePeeringConnections(ctx context.Context, request ListRemotePeeringConnectionsRequest) (response ListRemotePeeringConnectionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7088,9 +8891,16 @@ func (client VirtualNetworkClient) listRemotePeeringConnections(ctx context.Cont // If the VCN ID is not provided, then the list includes the route tables from all VCNs in the specified compartment. // The response includes the default route table that automatically comes with // each VCN in the specified compartment, plus any route tables you've created. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListRouteTables.go.html to see an example of how to use ListRouteTables API. func (client VirtualNetworkClient) ListRouteTables(ctx context.Context, request ListRouteTablesRequest) (response ListRouteTablesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7136,9 +8946,16 @@ func (client VirtualNetworkClient) listRouteTables(ctx context.Context, request // ListSecurityLists Lists the security lists in the specified VCN and compartment. // If the VCN ID is not provided, then the list includes the security lists from all VCNs in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListSecurityLists.go.html to see an example of how to use ListSecurityLists API. func (client VirtualNetworkClient) ListSecurityLists(ctx context.Context, request ListSecurityListsRequest) (response ListSecurityListsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7184,9 +9001,16 @@ func (client VirtualNetworkClient) listSecurityLists(ctx context.Context, reques // ListServiceGateways Lists the service gateways in the specified compartment. You may optionally specify a VCN OCID // to filter the results by VCN. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListServiceGateways.go.html to see an example of how to use ListServiceGateways API. func (client VirtualNetworkClient) ListServiceGateways(ctx context.Context, request ListServiceGatewaysRequest) (response ListServiceGatewaysResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7232,9 +9056,16 @@ func (client VirtualNetworkClient) listServiceGateways(ctx context.Context, requ // ListServices Lists the available Service objects that you can enable for a // service gateway in this region. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListServices.go.html to see an example of how to use ListServices API. func (client VirtualNetworkClient) ListServices(ctx context.Context, request ListServicesRequest) (response ListServicesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7280,9 +9111,16 @@ func (client VirtualNetworkClient) listServices(ctx context.Context, request com // ListSubnets Lists the subnets in the specified VCN and the specified compartment. // If the VCN ID is not provided, then the list includes the subnets from all VCNs in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListSubnets.go.html to see an example of how to use ListSubnets API. func (client VirtualNetworkClient) ListSubnets(ctx context.Context, request ListSubnetsRequest) (response ListSubnetsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7327,9 +9165,16 @@ func (client VirtualNetworkClient) listSubnets(ctx context.Context, request comm } // ListVcns Lists the virtual cloud networks (VCNs) in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVcns.go.html to see an example of how to use ListVcns API. func (client VirtualNetworkClient) ListVcns(ctx context.Context, request ListVcnsRequest) (response ListVcnsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7374,9 +9219,16 @@ func (client VirtualNetworkClient) listVcns(ctx context.Context, request common. } // ListVirtualCircuitBandwidthShapes The deprecated operation lists available bandwidth levels for virtual circuits. For the compartment ID, provide the OCID of your tenancy (the root compartment). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVirtualCircuitBandwidthShapes.go.html to see an example of how to use ListVirtualCircuitBandwidthShapes API. func (client VirtualNetworkClient) ListVirtualCircuitBandwidthShapes(ctx context.Context, request ListVirtualCircuitBandwidthShapesRequest) (response ListVirtualCircuitBandwidthShapesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7422,9 +9274,16 @@ func (client VirtualNetworkClient) listVirtualCircuitBandwidthShapes(ctx context // ListVirtualCircuitPublicPrefixes Lists the public IP prefixes and their details for the specified // public virtual circuit. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVirtualCircuitPublicPrefixes.go.html to see an example of how to use ListVirtualCircuitPublicPrefixes API. func (client VirtualNetworkClient) ListVirtualCircuitPublicPrefixes(ctx context.Context, request ListVirtualCircuitPublicPrefixesRequest) (response ListVirtualCircuitPublicPrefixesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7469,9 +9328,16 @@ func (client VirtualNetworkClient) listVirtualCircuitPublicPrefixes(ctx context. } // ListVirtualCircuits Lists the virtual circuits in the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVirtualCircuits.go.html to see an example of how to use ListVirtualCircuits API. func (client VirtualNetworkClient) ListVirtualCircuits(ctx context.Context, request ListVirtualCircuitsRequest) (response ListVirtualCircuitsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7516,9 +9382,16 @@ func (client VirtualNetworkClient) listVirtualCircuits(ctx context.Context, requ } // ListVlans Lists the VLANs in the specified VCN and the specified compartment. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVlans.go.html to see an example of how to use ListVlans API. func (client VirtualNetworkClient) ListVlans(ctx context.Context, request ListVlansRequest) (response ListVlansResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7562,10 +9435,82 @@ func (client VirtualNetworkClient) listVlans(ctx context.Context, request common return response, err } +// ModifyVcnCidr Updates the specified CIDR block of a VCN. The new CIDR IP range must meet the following criteria: +// - Must be valid. +// - Must not overlap with another CIDR block in the VCN, a CIDR block of a peered VCN, or the on-premises network CIDR block. +// - Must not exceed the limit of CIDR blocks allowed per VCN. +// - Must include IP addresses from the original CIDR block that are used in the VCN's existing route rules. +// - No IP address in an existing subnet should be outside of the new CIDR block range. +// **Note:** Modifying a CIDR block places your VCN in an updating state until the changes are complete. You cannot create or update the VCN's subnets, VLANs, LPGs, or route tables during this operation. The time to completion can vary depending on the size of your network. Updating a small network could take about a minute, and updating a large network could take up to an hour. You can use the `GetWorkRequest` operation to check the status of the update. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ModifyVcnCidr.go.html to see an example of how to use ModifyVcnCidr API. +func (client VirtualNetworkClient) ModifyVcnCidr(ctx context.Context, request ModifyVcnCidrRequest) (response ModifyVcnCidrResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.modifyVcnCidr, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ModifyVcnCidrResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ModifyVcnCidrResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ModifyVcnCidrResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ModifyVcnCidrResponse") + } + return +} + +// modifyVcnCidr implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) modifyVcnCidr(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/vcns/{vcnId}/actions/modifyCidr") + if err != nil { + return nil, err + } + + var response ModifyVcnCidrResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // RemoveNetworkSecurityGroupSecurityRules Removes one or more security rules from the specified network security group. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemoveNetworkSecurityGroupSecurityRules.go.html to see an example of how to use RemoveNetworkSecurityGroupSecurityRules API. func (client VirtualNetworkClient) RemoveNetworkSecurityGroupSecurityRules(ctx context.Context, request RemoveNetworkSecurityGroupSecurityRulesRequest) (response RemoveNetworkSecurityGroupSecurityRulesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7609,11 +9554,193 @@ func (client VirtualNetworkClient) removeNetworkSecurityGroupSecurityRules(ctx c return response, err } +// RemovePublicIpPoolCapacity Removes a CIDR block from the referenced public IP pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemovePublicIpPoolCapacity.go.html to see an example of how to use RemovePublicIpPoolCapacity API. +func (client VirtualNetworkClient) RemovePublicIpPoolCapacity(ctx context.Context, request RemovePublicIpPoolCapacityRequest) (response RemovePublicIpPoolCapacityResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.removePublicIpPoolCapacity, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = RemovePublicIpPoolCapacityResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = RemovePublicIpPoolCapacityResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(RemovePublicIpPoolCapacityResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into RemovePublicIpPoolCapacityResponse") + } + return +} + +// removePublicIpPoolCapacity implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) removePublicIpPoolCapacity(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/publicIpPools/{publicIpPoolId}/actions/removeCapacity") + if err != nil { + return nil, err + } + + var response RemovePublicIpPoolCapacityResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + +// RemoveVcnCidr Removes a specified CIDR block from a VCN. +// **Notes:** +// - You cannot remove a CIDR block if an IP address in its range is in use. +// - Removing a CIDR block places your VCN in an updating state until the changes are complete. You cannot create or update the VCN's subnets, VLANs, LPGs, or route tables during this operation. The time to completion can take a few minutes. You can use the `GetWorkRequest` operation to check the status of the update. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemoveVcnCidr.go.html to see an example of how to use RemoveVcnCidr API. +func (client VirtualNetworkClient) RemoveVcnCidr(ctx context.Context, request RemoveVcnCidrRequest) (response RemoveVcnCidrResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + + if !(request.OpcRetryToken != nil && *request.OpcRetryToken != "") { + request.OpcRetryToken = common.String(common.RetryToken()) + } + + ociResponse, err = common.Retry(ctx, request, client.removeVcnCidr, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = RemoveVcnCidrResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = RemoveVcnCidrResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(RemoveVcnCidrResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into RemoveVcnCidrResponse") + } + return +} + +// removeVcnCidr implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) removeVcnCidr(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/vcns/{vcnId}/actions/removeCidr") + if err != nil { + return nil, err + } + + var response RemoveVcnCidrResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + +// UpdateByoipRange Updates the tags or display name associated to the specified BYOIP CIDR block. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateByoipRange.go.html to see an example of how to use UpdateByoipRange API. +func (client VirtualNetworkClient) UpdateByoipRange(ctx context.Context, request UpdateByoipRangeRequest) (response UpdateByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.updateByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = UpdateByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = UpdateByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(UpdateByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into UpdateByoipRangeResponse") + } + return +} + +// updateByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) updateByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPut, "/byoipRanges/{byoipRangeId}") + if err != nil { + return nil, err + } + + var response UpdateByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // UpdateCpe Updates the specified CPE's display name or tags. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateCpe.go.html to see an example of how to use UpdateCpe API. func (client VirtualNetworkClient) UpdateCpe(ctx context.Context, request UpdateCpeRequest) (response UpdateCpeResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7658,9 +9785,16 @@ func (client VirtualNetworkClient) updateCpe(ctx context.Context, request common } // UpdateCrossConnect Updates the specified cross-connect. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateCrossConnect.go.html to see an example of how to use UpdateCrossConnect API. func (client VirtualNetworkClient) UpdateCrossConnect(ctx context.Context, request UpdateCrossConnectRequest) (response UpdateCrossConnectResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7706,9 +9840,16 @@ func (client VirtualNetworkClient) updateCrossConnect(ctx context.Context, reque // UpdateCrossConnectGroup Updates the specified cross-connect group's display name. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateCrossConnectGroup.go.html to see an example of how to use UpdateCrossConnectGroup API. func (client VirtualNetworkClient) UpdateCrossConnectGroup(ctx context.Context, request UpdateCrossConnectGroupRequest) (response UpdateCrossConnectGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7755,9 +9896,16 @@ func (client VirtualNetworkClient) updateCrossConnectGroup(ctx context.Context, // UpdateDhcpOptions Updates the specified set of DHCP options. You can update the display name or the options // themselves. Avoid entering confidential information. // Note that the `options` object you provide replaces the entire existing set of options. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDhcpOptions.go.html to see an example of how to use UpdateDhcpOptions API. func (client VirtualNetworkClient) UpdateDhcpOptions(ctx context.Context, request UpdateDhcpOptionsRequest) (response UpdateDhcpOptionsResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7802,9 +9950,16 @@ func (client VirtualNetworkClient) updateDhcpOptions(ctx context.Context, reques } // UpdateDrg Updates the specified DRG's display name or tags. Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDrg.go.html to see an example of how to use UpdateDrg API. func (client VirtualNetworkClient) UpdateDrg(ctx context.Context, request UpdateDrgRequest) (response UpdateDrgResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7850,9 +10005,16 @@ func (client VirtualNetworkClient) updateDrg(ctx context.Context, request common // UpdateDrgAttachment Updates the display name for the specified `DrgAttachment`. // Avoid entering confidential information. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDrgAttachment.go.html to see an example of how to use UpdateDrgAttachment API. func (client VirtualNetworkClient) UpdateDrgAttachment(ctx context.Context, request UpdateDrgAttachmentRequest) (response UpdateDrgAttachmentResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7899,9 +10061,16 @@ func (client VirtualNetworkClient) updateDrgAttachment(ctx context.Context, requ // UpdateIPSecConnection Updates the specified IPSec connection. // To update an individual IPSec tunnel's attributes, use // UpdateIPSecConnectionTunnel. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIPSecConnection.go.html to see an example of how to use UpdateIPSecConnection API. func (client VirtualNetworkClient) UpdateIPSecConnection(ctx context.Context, request UpdateIPSecConnectionRequest) (response UpdateIPSecConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -7954,9 +10123,16 @@ func (client VirtualNetworkClient) updateIPSecConnection(ctx context.Context, re // * If you want to switch the tunnel's `routing` from `BGP` to `STATIC`, make sure the // IPSecConnection already has at least one valid CIDR // static route. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIPSecConnectionTunnel.go.html to see an example of how to use UpdateIPSecConnectionTunnel API. func (client VirtualNetworkClient) UpdateIPSecConnectionTunnel(ctx context.Context, request UpdateIPSecConnectionTunnelRequest) (response UpdateIPSecConnectionTunnelResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8002,9 +10178,16 @@ func (client VirtualNetworkClient) updateIPSecConnectionTunnel(ctx context.Conte // UpdateIPSecConnectionTunnelSharedSecret Updates the shared secret (pre-shared key) for the specified tunnel. // **Important:** If you change the shared secret, the tunnel will go down while it's reprovisioned. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIPSecConnectionTunnelSharedSecret.go.html to see an example of how to use UpdateIPSecConnectionTunnelSharedSecret API. func (client VirtualNetworkClient) UpdateIPSecConnectionTunnelSharedSecret(ctx context.Context, request UpdateIPSecConnectionTunnelSharedSecretRequest) (response UpdateIPSecConnectionTunnelSharedSecretResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8052,9 +10235,16 @@ func (client VirtualNetworkClient) updateIPSecConnectionTunnelSharedSecret(ctx c // or tags. Avoid entering confidential information. // If the gateway is disabled, that means no traffic will flow to/from the internet even if there's // a route rule that enables that traffic. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInternetGateway.go.html to see an example of how to use UpdateInternetGateway API. func (client VirtualNetworkClient) UpdateInternetGateway(ctx context.Context, request UpdateInternetGatewayRequest) (response UpdateInternetGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8104,9 +10294,16 @@ func (client VirtualNetworkClient) updateInternetGateway(ctx context.Context, re // * Enable/disable internet access for an IPv6. // * Change the display name for an IPv6. // * Update resource tags for an IPv6. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIpv6.go.html to see an example of how to use UpdateIpv6 API. func (client VirtualNetworkClient) UpdateIpv6(ctx context.Context, request UpdateIpv6Request) (response UpdateIpv6Response, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8151,9 +10348,16 @@ func (client VirtualNetworkClient) updateIpv6(ctx context.Context, request commo } // UpdateLocalPeeringGateway Updates the specified local peering gateway (LPG). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateLocalPeeringGateway.go.html to see an example of how to use UpdateLocalPeeringGateway API. func (client VirtualNetworkClient) UpdateLocalPeeringGateway(ctx context.Context, request UpdateLocalPeeringGatewayRequest) (response UpdateLocalPeeringGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8198,9 +10402,16 @@ func (client VirtualNetworkClient) updateLocalPeeringGateway(ctx context.Context } // UpdateNatGateway Updates the specified NAT gateway. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateNatGateway.go.html to see an example of how to use UpdateNatGateway API. func (client VirtualNetworkClient) UpdateNatGateway(ctx context.Context, request UpdateNatGatewayRequest) (response UpdateNatGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8255,9 +10466,16 @@ func (client VirtualNetworkClient) updateNatGateway(ctx context.Context, request // RemoveNetworkSecurityGroupSecurityRules. // To edit the contents of existing security rules in the group, use // UpdateNetworkSecurityGroupSecurityRules. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateNetworkSecurityGroup.go.html to see an example of how to use UpdateNetworkSecurityGroup API. func (client VirtualNetworkClient) UpdateNetworkSecurityGroup(ctx context.Context, request UpdateNetworkSecurityGroupRequest) (response UpdateNetworkSecurityGroupResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8302,9 +10520,16 @@ func (client VirtualNetworkClient) updateNetworkSecurityGroup(ctx context.Contex } // UpdateNetworkSecurityGroupSecurityRules Updates one or more security rules in the specified network security group. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateNetworkSecurityGroupSecurityRules.go.html to see an example of how to use UpdateNetworkSecurityGroupSecurityRules API. func (client VirtualNetworkClient) UpdateNetworkSecurityGroupSecurityRules(ctx context.Context, request UpdateNetworkSecurityGroupSecurityRulesRequest) (response UpdateNetworkSecurityGroupSecurityRulesResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8356,9 +10581,16 @@ func (client VirtualNetworkClient) updateNetworkSecurityGroupSecurityRules(ctx c // This operation cannot be used with primary private IPs. // To update the hostname for the primary IP on a VNIC, use // UpdateVnic. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdatePrivateIp.go.html to see an example of how to use UpdatePrivateIp API. func (client VirtualNetworkClient) UpdatePrivateIp(ctx context.Context, request UpdatePrivateIpRequest) (response UpdatePrivateIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8433,10 +10665,17 @@ func (client VirtualNetworkClient) updatePrivateIp(ctx context.Context, request // a VNIC or instance can have. If you try to move a reserved public IP // to a VNIC or instance that has already reached its public IP limit, an error is // returned. For information about the public IP limits, see -// Public IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingpublicIPs.htm). +// Public IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingpublicIPs.htm). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdatePublicIp.go.html to see an example of how to use UpdatePublicIp API. func (client VirtualNetworkClient) UpdatePublicIp(ctx context.Context, request UpdatePublicIpRequest) (response UpdatePublicIpResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8480,10 +10719,71 @@ func (client VirtualNetworkClient) updatePublicIp(ctx context.Context, request c return response, err } +// UpdatePublicIpPool Updates the specified public IP pool. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdatePublicIpPool.go.html to see an example of how to use UpdatePublicIpPool API. +func (client VirtualNetworkClient) UpdatePublicIpPool(ctx context.Context, request UpdatePublicIpPoolRequest) (response UpdatePublicIpPoolResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.updatePublicIpPool, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = UpdatePublicIpPoolResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = UpdatePublicIpPoolResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(UpdatePublicIpPoolResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into UpdatePublicIpPoolResponse") + } + return +} + +// updatePublicIpPool implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) updatePublicIpPool(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPut, "/publicIpPools/{publicIpPoolId}") + if err != nil { + return nil, err + } + + var response UpdatePublicIpPoolResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + // UpdateRemotePeeringConnection Updates the specified remote peering connection (RPC). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateRemotePeeringConnection.go.html to see an example of how to use UpdateRemotePeeringConnection API. func (client VirtualNetworkClient) UpdateRemotePeeringConnection(ctx context.Context, request UpdateRemotePeeringConnectionRequest) (response UpdateRemotePeeringConnectionResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8530,9 +10830,16 @@ func (client VirtualNetworkClient) updateRemotePeeringConnection(ctx context.Con // UpdateRouteTable Updates the specified route table's display name or route rules. // Avoid entering confidential information. // Note that the `routeRules` object you provide replaces the entire existing set of rules. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateRouteTable.go.html to see an example of how to use UpdateRouteTable API. func (client VirtualNetworkClient) UpdateRouteTable(ctx context.Context, request UpdateRouteTableRequest) (response UpdateRouteTableResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8580,9 +10887,16 @@ func (client VirtualNetworkClient) updateRouteTable(ctx context.Context, request // Avoid entering confidential information. // Note that the `egressSecurityRules` or `ingressSecurityRules` objects you provide replace the entire // existing objects. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateSecurityList.go.html to see an example of how to use UpdateSecurityList API. func (client VirtualNetworkClient) UpdateSecurityList(ctx context.Context, request UpdateSecurityListRequest) (response UpdateSecurityListResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8628,9 +10942,16 @@ func (client VirtualNetworkClient) updateSecurityList(ctx context.Context, reque // UpdateServiceGateway Updates the specified service gateway. The information you provide overwrites the existing // attributes of the gateway. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateServiceGateway.go.html to see an example of how to use UpdateServiceGateway API. func (client VirtualNetworkClient) UpdateServiceGateway(ctx context.Context, request UpdateServiceGatewayRequest) (response UpdateServiceGatewayResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8675,9 +10996,16 @@ func (client VirtualNetworkClient) updateServiceGateway(ctx context.Context, req } // UpdateSubnet Updates the specified subnet. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateSubnet.go.html to see an example of how to use UpdateSubnet API. func (client VirtualNetworkClient) UpdateSubnet(ctx context.Context, request UpdateSubnetRequest) (response UpdateSubnetResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8724,9 +11052,16 @@ func (client VirtualNetworkClient) updateSubnet(ctx context.Context, request com // UpdateTunnelCpeDeviceConfig Creates or updates the set of CPE configuration answers for the specified tunnel. // The answers correlate to the questions that are specific to the CPE device type (see the // `parameters` attribute of CpeDeviceShapeDetail). +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateTunnelCpeDeviceConfig.go.html to see an example of how to use UpdateTunnelCpeDeviceConfig API. func (client VirtualNetworkClient) UpdateTunnelCpeDeviceConfig(ctx context.Context, request UpdateTunnelCpeDeviceConfigRequest) (response UpdateTunnelCpeDeviceConfigResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8776,9 +11111,16 @@ func (client VirtualNetworkClient) updateTunnelCpeDeviceConfig(ctx context.Conte } // UpdateVcn Updates the specified VCN. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVcn.go.html to see an example of how to use UpdateVcn API. func (client VirtualNetworkClient) UpdateVcn(ctx context.Context, request UpdateVcnRequest) (response UpdateVcnResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8836,7 +11178,7 @@ func (client VirtualNetworkClient) updateVcn(ctx context.Context, request common // its state will return to PROVISIONED. Make sure you confirm that // the associated BGP session is back up. For more information // about the various states and how to test connectivity, see -// FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // To change the list of public IP prefixes for a public virtual circuit, // use BulkAddVirtualCircuitPublicPrefixes // and @@ -8844,9 +11186,16 @@ func (client VirtualNetworkClient) updateVcn(ctx context.Context, request common // Updating the list of prefixes does NOT cause the BGP session to go down. However, // Oracle must verify the customer's ownership of each added prefix before // traffic for that prefix will flow across the virtual circuit. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVirtualCircuit.go.html to see an example of how to use UpdateVirtualCircuit API. func (client VirtualNetworkClient) UpdateVirtualCircuit(ctx context.Context, request UpdateVirtualCircuitRequest) (response UpdateVirtualCircuitResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8890,12 +11239,18 @@ func (client VirtualNetworkClient) updateVirtualCircuit(ctx context.Context, req return response, err } -// UpdateVlan Updates the specified VLAN. This could result in changes to all -// the VNICs in the VLAN, which can take time. During that transition -// period, the VLAN will be in the UPDATING state. +// UpdateVlan Updates the specified VLAN. Note that this operation might require changes to all +// the VNICs in the VLAN, which can take a while. The VLAN will be in the UPDATING state until the changes are complete. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVlan.go.html to see an example of how to use UpdateVlan API. func (client VirtualNetworkClient) UpdateVlan(ctx context.Context, request UpdateVlanRequest) (response UpdateVlanResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8940,9 +11295,16 @@ func (client VirtualNetworkClient) updateVlan(ctx context.Context, request commo } // UpdateVnic Updates the specified VNIC. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVnic.go.html to see an example of how to use UpdateVnic API. func (client VirtualNetworkClient) UpdateVnic(ctx context.Context, request UpdateVnicRequest) (response UpdateVnicResponse, err error) { var ociResponse common.OCIResponse policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } if request.RetryPolicy() != nil { policy = *request.RetryPolicy() } @@ -8985,3 +11347,112 @@ func (client VirtualNetworkClient) updateVnic(ctx context.Context, request commo err = common.UnmarshalResponse(httpResponse, &response) return response, err } + +// ValidateByoipRange Submits the BYOIP CIDR block you are importing for validation. Do not submit to Oracle for validation if you have not already +// modified the information for the BYOIP CIDR block with your Regional Internet Registry. See To import a CIDR block (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/BYOIP.htm#import_cidr) for details. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ValidateByoipRange.go.html to see an example of how to use ValidateByoipRange API. +func (client VirtualNetworkClient) ValidateByoipRange(ctx context.Context, request ValidateByoipRangeRequest) (response ValidateByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.validateByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = ValidateByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = ValidateByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(ValidateByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into ValidateByoipRangeResponse") + } + return +} + +// validateByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) validateByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/byoipRanges/{byoipRangeId}/actions/validate") + if err != nil { + return nil, err + } + + var response ValidateByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} + +// WithdrawByoipRange Withdraws BGP route advertisement for the BYOIP CIDR block. +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/WithdrawByoipRange.go.html to see an example of how to use WithdrawByoipRange API. +func (client VirtualNetworkClient) WithdrawByoipRange(ctx context.Context, request WithdrawByoipRangeRequest) (response WithdrawByoipRangeResponse, err error) { + var ociResponse common.OCIResponse + policy := common.NoRetryPolicy() + if client.RetryPolicy() != nil { + policy = *client.RetryPolicy() + } + if request.RetryPolicy() != nil { + policy = *request.RetryPolicy() + } + ociResponse, err = common.Retry(ctx, request, client.withdrawByoipRange, policy) + if err != nil { + if ociResponse != nil { + if httpResponse := ociResponse.HTTPResponse(); httpResponse != nil { + opcRequestId := httpResponse.Header.Get("opc-request-id") + response = WithdrawByoipRangeResponse{RawResponse: httpResponse, OpcRequestId: &opcRequestId} + } else { + response = WithdrawByoipRangeResponse{} + } + } + return + } + if convertedResponse, ok := ociResponse.(WithdrawByoipRangeResponse); ok { + response = convertedResponse + } else { + err = fmt.Errorf("failed to convert OCIResponse into WithdrawByoipRangeResponse") + } + return +} + +// withdrawByoipRange implements the OCIOperation interface (enables retrying operations) +func (client VirtualNetworkClient) withdrawByoipRange(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { + httpRequest, err := request.HTTPRequest(http.MethodPost, "/byoipRanges/{byoipRangeId}/actions/withdraw") + if err != nil { + return nil, err + } + + var response WithdrawByoipRangeResponse + var httpResponse *http.Response + httpResponse, err = client.Call(ctx, &httpRequest) + defer common.CloseBodyIfValid(httpResponse) + response.RawResponse = httpResponse + if err != nil { + return response, err + } + + err = common.UnmarshalResponse(httpResponse, &response) + return response, err +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cpe.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/cpe.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cpe.go index 5e7187141..c49eadb74 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cpe.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Cpe An object you create when setting up an IPSec VPN between your on-premises network // and VCN. The `Cpe` is a virtual representation of your customer-premises equipment, // which is the actual router on-premises at your site at your end of the IPSec VPN connection. // For more information, -// see Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm). +// see Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type Cpe struct { // The OCID of the compartment containing the CPE. @@ -52,7 +50,7 @@ type Cpe struct { // Example: `{"Department": "Finance"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the CPE's device type. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the CPE's device type. // The Networking service maintains a general list of CPE device types (for example, // Cisco ASA). For each type, Oracle provides CPE configuration content that can help // a network engineer configure the CPE. The OCID uniquely identifies the type of diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_config_answer.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_config_answer.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/cpe_device_config_answer.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_config_answer.go index 02a684d70..c56e1a7e9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_config_answer.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_config_answer.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CpeDeviceConfigAnswer An individual answer to a CPE device question. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_config_question.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_config_question.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/cpe_device_config_question.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_config_question.go index 680bc429e..7fae74efe 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_config_question.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_config_question.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CpeDeviceConfigQuestion An individual question that the customer can answer about the CPE device. @@ -26,6 +26,7 @@ type CpeDeviceConfigQuestion struct { Key *string `mandatory:"false" json:"key"` // A descriptive label for the question (for example, to display in a form in a graphical interface). + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // A description or explanation of the question, to help the customer answer accurately. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_info.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_info.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/cpe_device_info.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_info.go index b17027b90..5150c1d67 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_info.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_info.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CpeDeviceInfo Basic information about a particular CPE device type. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_shape_detail.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_shape_detail.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/cpe_device_shape_detail.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_shape_detail.go index 63ec42c1c..4e39f93a3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_shape_detail.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_shape_detail.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,18 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CpeDeviceShapeDetail The detailed information about a particular CPE device type. Compare with // CpeDeviceShapeSummary. type CpeDeviceShapeDetail struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the CPE device shape. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the CPE device shape. // This value uniquely identifies the type of CPE device. CpeDeviceShapeId *string `mandatory:"false" json:"cpeDeviceShapeId"` - // Basic information about this particular CPE device type. CpeDeviceInfo *CpeDeviceInfo `mandatory:"false" json:"cpeDeviceInfo"` // For certain CPE devices types, the customer can provide answers to diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_shape_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_shape_summary.go similarity index 81% rename from vendor/github.com/oracle/oci-go-sdk/core/cpe_device_shape_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_shape_summary.go index 5ccf492fb..c886744ba 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cpe_device_shape_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cpe_device_shape_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,18 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CpeDeviceShapeSummary A summary of information about a particular CPE device type. Compare with // CpeDeviceShapeDetail. type CpeDeviceShapeSummary struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the CPE device shape. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the CPE device shape. // This value uniquely identifies the type of CPE device. Id *string `mandatory:"false" json:"id"` - // Basic information about this particular CPE device type. CpeDeviceInfo *CpeDeviceInfo `mandatory:"false" json:"cpeDeviceInfo"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_app_catalog_subscription_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_app_catalog_subscription_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/create_app_catalog_subscription_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_app_catalog_subscription_details.go index dbfb8ebff..3b66c5f57 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_app_catalog_subscription_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_app_catalog_subscription_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateAppCatalogSubscriptionDetails details for creating a subscription for a listing resource version. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_app_catalog_subscription_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_app_catalog_subscription_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_app_catalog_subscription_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_app_catalog_subscription_request_response.go index 144496e40..fce8caaf8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_app_catalog_subscription_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_app_catalog_subscription_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateAppCatalogSubscriptionRequest wrapper for the CreateAppCatalogSubscription operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateAppCatalogSubscription.go.html to see an example of how to use CreateAppCatalogSubscriptionRequest. type CreateAppCatalogSubscriptionRequest struct { // Request for the creation of a subscription for listing resource version for a compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_backup_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_backup_details.go index 8bd84082f..a9271daf8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateBootVolumeBackupDetails The representation of CreateBootVolumeBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_backup_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_backup_request_response.go index 8f78f4e7d..dc4eca90b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateBootVolumeBackupRequest wrapper for the CreateBootVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateBootVolumeBackup.go.html to see an example of how to use CreateBootVolumeBackupRequest. type CreateBootVolumeBackupRequest struct { // Request to create a new backup of given boot volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_details.go index ef456224d..76219878a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateBootVolumeDetails The representation of CreateBootVolumeDetails @@ -28,8 +28,6 @@ type CreateBootVolumeDetails struct { // The OCID of the compartment that contains the boot volume. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // Specifies the boot volume source details for a new boot volume. The volume source is either another boot volume in the same availability domain or a boot volume backup. - // This is a mandatory field for a boot volume. SourceDetails BootVolumeSourceDetails `mandatory:"true" json:"sourceDetails"` // If provided, specifies the ID of the boot volume backup policy to assign to the newly diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_request_response.go index a9b5c53a0..5477be2dd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_boot_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_boot_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateBootVolumeRequest wrapper for the CreateBootVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateBootVolume.go.html to see an example of how to use CreateBootVolumeRequest. type CreateBootVolumeRequest struct { // Request to create a new boot volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_details.go new file mode 100644 index 000000000..3d5cd5126 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_details.go @@ -0,0 +1,47 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// CreateByoipRangeDetails The information used to create a `ByoipRange` resource. +type CreateByoipRangeDetails struct { + + // The BYOIP CIDR block. You can assign some or all of it to a public IP pool after it is validated. + // Example: `10.0.1.0/24` + CidrBlock *string `mandatory:"true" json:"cidrBlock"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the BYOIP CIDR block. + CompartmentId *string `mandatory:"true" json:"compartmentId"` + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` +} + +func (m CreateByoipRangeDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_request_response.go new file mode 100644 index 000000000..ef38a8c0c --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_byoip_range_request_response.go @@ -0,0 +1,76 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// CreateByoipRangeRequest wrapper for the CreateByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateByoipRange.go.html to see an example of how to use CreateByoipRangeRequest. +type CreateByoipRangeRequest struct { + + // Details needed to create a BYOIP CIDR block subrange. + CreateByoipRangeDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request CreateByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request CreateByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request CreateByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// CreateByoipRangeResponse wrapper for the CreateByoipRange operation +type CreateByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The ByoipRange instance + ByoipRange `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response CreateByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response CreateByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_details.go index fcec8e6be..8c461786b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateClusterNetworkDetails The data to create a cluster network. @@ -28,7 +28,6 @@ type CreateClusterNetworkDetails struct { // Each cluster network can have one instance pool. InstancePools []CreateClusterNetworkInstancePoolDetails `mandatory:"true" json:"instancePools"` - // The placement configuration for the instance pools in the cluster network. PlacementConfiguration *ClusterNetworkPlacementConfigurationDetails `mandatory:"true" json:"placementConfiguration"` // Defined tags for this resource. Each key is predefined and scoped to a diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_instance_pool_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_instance_pool_details.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_instance_pool_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_instance_pool_details.go index fcf5d25aa..6de058296 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_instance_pool_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_instance_pool_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateClusterNetworkInstancePoolDetails The data to create an instance pool in a cluster network. @@ -25,8 +25,6 @@ type CreateClusterNetworkInstancePoolDetails struct { InstanceConfigurationId *string `mandatory:"true" json:"instanceConfigurationId"` // The number of instances that should be in the instance pool. - // If the required number of instances is not available or if some instances fail to launch, - // the cluster network is not created. Size *int `mandatory:"true" json:"size"` // Defined tags for this resource. Each key is predefined and scoped to a diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_request_response.go index 4d6b71388..6cf032064 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cluster_network_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cluster_network_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateClusterNetworkRequest wrapper for the CreateClusterNetwork operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateClusterNetwork.go.html to see an example of how to use CreateClusterNetworkRequest. type CreateClusterNetworkRequest struct { // Cluster network creation details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_compute_image_capability_schema_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_compute_image_capability_schema_details.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/create_compute_image_capability_schema_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_compute_image_capability_schema_details.go index 908a96bd3..506c89c6e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_compute_image_capability_schema_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_compute_image_capability_schema_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateComputeImageCapabilitySchemaDetails Create Image Capability Schema for an image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_compute_image_capability_schema_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_compute_image_capability_schema_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_compute_image_capability_schema_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_compute_image_capability_schema_request_response.go index 9f7b78ddf..19254e25c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_compute_image_capability_schema_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_compute_image_capability_schema_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateComputeImageCapabilitySchemaRequest wrapper for the CreateComputeImageCapabilitySchema operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateComputeImageCapabilitySchema.go.html to see an example of how to use CreateComputeImageCapabilitySchemaRequest. type CreateComputeImageCapabilitySchemaRequest struct { // Compute Image Capability Schema creation details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cpe_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cpe_details.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cpe_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cpe_details.go index bf78be121..af6b20370 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cpe_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cpe_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateCpeDetails The representation of CreateCpeDetails @@ -32,7 +32,8 @@ type CreateCpeDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no @@ -40,7 +41,7 @@ type CreateCpeDetails struct { // Example: `{"Department": "Finance"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the CPE device type. You can provide + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the CPE device type. You can provide // a value if you want to later generate CPE device configuration content for IPSec connections // that use this CPE. You can also call UpdateCpe later to // provide a value. For a list of possible values, see diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cpe_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cpe_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cpe_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cpe_request_response.go index 7a3bdca95..e24f29e34 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cpe_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cpe_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateCpeRequest wrapper for the CreateCpe operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateCpe.go.html to see an example of how to use CreateCpeRequest. type CreateCpeRequest struct { // Details for creating a CPE. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_details.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_details.go index 4a0bfdbbb..64ee350bf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateCrossConnectDetails The representation of CreateCrossConnectDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_group_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_group_details.go index b91ef2133..ef9297095 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateCrossConnectGroupDetails The representation of CreateCrossConnectGroupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_group_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_group_request_response.go index 6d4c56263..b2e939c1b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateCrossConnectGroupRequest wrapper for the CreateCrossConnectGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateCrossConnectGroup.go.html to see an example of how to use CreateCrossConnectGroupRequest. type CreateCrossConnectGroupRequest struct { // Details to create a CrossConnectGroup diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_request_response.go index 448b23285..fdcef82c1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_cross_connect_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_cross_connect_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateCrossConnectRequest wrapper for the CreateCrossConnect operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateCrossConnect.go.html to see an example of how to use CreateCrossConnectRequest. type CreateCrossConnectRequest struct { // Details to create a CrossConnect diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_dedicated_vm_host_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dedicated_vm_host_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_dedicated_vm_host_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_dedicated_vm_host_details.go index 45e54a195..3c5594e27 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_dedicated_vm_host_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dedicated_vm_host_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateDedicatedVmHostDetails The details for creating a new dedicated virtual machine host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_dedicated_vm_host_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dedicated_vm_host_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/create_dedicated_vm_host_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_dedicated_vm_host_request_response.go index feadf3cf1..f7ad2ad4d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_dedicated_vm_host_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dedicated_vm_host_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateDedicatedVmHostRequest wrapper for the CreateDedicatedVmHost operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDedicatedVmHost.go.html to see an example of how to use CreateDedicatedVmHostRequest. type CreateDedicatedVmHostRequest struct { // The details for creating a new dedicated virtual machine host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_dhcp_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dhcp_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_dhcp_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_dhcp_details.go index ff672ddcd..282245226 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_dhcp_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dhcp_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateDhcpDetails The representation of CreateDhcpDetails @@ -35,7 +35,8 @@ type CreateDhcpDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_dhcp_options_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dhcp_options_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_dhcp_options_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_dhcp_options_request_response.go index 4526f0a13..2c59c2582 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_dhcp_options_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_dhcp_options_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateDhcpOptionsRequest wrapper for the CreateDhcpOptions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDhcpOptions.go.html to see an example of how to use CreateDhcpOptionsRequest. type CreateDhcpOptionsRequest struct { // Request object for creating a new set of DHCP options. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_attachment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_attachment_details.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/create_drg_attachment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_attachment_details.go index e7ef53d86..b17ead58d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_attachment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_attachment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateDrgAttachmentDetails The representation of CreateDrgAttachmentDetails @@ -26,7 +26,8 @@ type CreateDrgAttachmentDetails struct { // The OCID of the VCN. VcnId *string `mandatory:"true" json:"vcnId"` - // A user-friendly name. Does not have to be unique. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique. Avoid entering + // confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // The OCID of the route table the DRG attachment will use. @@ -34,8 +35,8 @@ type CreateDrgAttachmentDetails struct { // table. The Networking service does NOT automatically associate the attached VCN's default route table // with the DRG attachment. // For information about why you would associate a route table with a DRG attachment, see: - // * Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/Content/Network/Tasks/transitrouting.htm) - // * Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/Content/Network/Tasks/transitroutingoracleservices.htm) + // * Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitrouting.htm) + // * Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm) RouteTableId *string `mandatory:"false" json:"routeTableId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_attachment_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_drg_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_attachment_request_response.go index 337615e94..30f74585a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateDrgAttachmentRequest wrapper for the CreateDrgAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDrgAttachment.go.html to see an example of how to use CreateDrgAttachmentRequest. type CreateDrgAttachmentRequest struct { // Details for creating a `DrgAttachment`. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/create_drg_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_details.go index 954e7fa73..f46183722 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateDrgDetails The representation of CreateDrgDetails @@ -28,7 +28,8 @@ type CreateDrgDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_drg_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_request_response.go index 27aa8d414..025bb12b8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_drg_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_drg_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateDrgRequest wrapper for the CreateDrg operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateDrg.go.html to see an example of how to use CreateDrgRequest. type CreateDrgRequest struct { // Details for creating a DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_i_p_sec_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_i_p_sec_connection_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_i_p_sec_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_i_p_sec_connection_request_response.go index 8f67cfc1f..c93df2f2b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_i_p_sec_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_i_p_sec_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateIPSecConnectionRequest wrapper for the CreateIPSecConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateIPSecConnection.go.html to see an example of how to use CreateIPSecConnectionRequest. type CreateIPSecConnectionRequest struct { // Details for creating an `IPSecConnection`. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_image_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_image_details.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/create_image_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_image_details.go index fdbc61dc5..eb9f31571 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_image_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_image_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateImageDetails Either instanceId or imageSourceDetails must be provided in addition to other required parameters. @@ -40,7 +40,6 @@ type CreateImageDetails struct { // Example: `{"Department": "Finance"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - // Details for creating an image through import ImageSourceDetails ImageSourceDetails `mandatory:"false" json:"imageSourceDetails"` // The OCID of the instance you want to use as the basis for the image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_image_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_image_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/create_image_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_image_request_response.go index 14fcf1e7c..71df76993 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_image_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_image_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateImageRequest wrapper for the CreateImage operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateImage.go.html to see an example of how to use CreateImageRequest. type CreateImageRequest struct { // Image creation details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_base.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_base.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_base.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_base.go index 206f090b3..0b9548087 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_base.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_base.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInstanceConfigurationBase Creation details for an instance configuration. @@ -30,7 +30,7 @@ type CreateInstanceConfigurationBase interface { // Example: `{"Operations": {"CostCenter": "42"}}` GetDefinedTags() map[string]map[string]interface{} - // A user-friendly name for the instance configuration. Does not have to be unique, + // A user-friendly name for the instance configuration. Does not have to be unique, // and it's changeable. Avoid entering confidential information. GetDisplayName() *string diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_details.go index f26b3d066..5591bb6f0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInstanceConfigurationDetails Details for creating an instance configuration by providing a list of configuration settings. @@ -32,7 +32,7 @@ type CreateInstanceConfigurationDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name for the instance configuration. Does not have to be unique, + // A user-friendly name for the instance configuration. Does not have to be unique, // and it's changeable. Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_from_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_from_instance_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_from_instance_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_from_instance_details.go index a56bd8ee0..79504be17 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_from_instance_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_from_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInstanceConfigurationFromInstanceDetails Details for creating an instance configuration using an existing instance as a template. @@ -34,7 +34,7 @@ type CreateInstanceConfigurationFromInstanceDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name for the instance configuration. Does not have to be unique, + // A user-friendly name for the instance configuration. Does not have to be unique, // and it's changeable. Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_request_response.go index 9efde3994..9ad012266 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_configuration_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_configuration_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateInstanceConfigurationRequest wrapper for the CreateInstanceConfiguration operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInstanceConfiguration.go.html to see an example of how to use CreateInstanceConfigurationRequest. type CreateInstanceConfigurationRequest struct { // Instance configuration creation details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_console_connection_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_console_connection_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_console_connection_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_console_connection_details.go index 2fac22f99..173880c58 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_console_connection_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_console_connection_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInstanceConsoleConnectionDetails The details for creating a instance console connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_console_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_console_connection_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_console_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_console_connection_request_response.go index 11355a486..fdf6e5870 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_console_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_console_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateInstanceConsoleConnectionRequest wrapper for the CreateInstanceConsoleConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInstanceConsoleConnection.go.html to see an example of how to use CreateInstanceConsoleConnectionRequest. type CreateInstanceConsoleConnectionRequest struct { // Request object for creating an InstanceConsoleConnection diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_details.go index 4e9720996..d017dac10 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInstancePoolDetails The data to create an instance pool. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_placement_configuration_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_placement_configuration_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_placement_configuration_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_placement_configuration_details.go index 22d503c07..c434ed712 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_placement_configuration_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_placement_configuration_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInstancePoolPlacementConfigurationDetails The location for where an instance pool will place instances. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_request_response.go index 945937a1d..4c474fecc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateInstancePoolRequest wrapper for the CreateInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInstancePool.go.html to see an example of how to use CreateInstancePoolRequest. type CreateInstancePoolRequest struct { // Instance pool creation details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_internet_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_internet_gateway_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_internet_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_internet_gateway_details.go index 9917a3350..4e764b1ee 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_internet_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_internet_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateInternetGatewayDetails The representation of CreateInternetGatewayDetails @@ -34,7 +34,8 @@ type CreateInternetGatewayDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_internet_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_internet_gateway_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_internet_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_internet_gateway_request_response.go index 4a0339fcc..a07ed88d0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_internet_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_internet_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateInternetGatewayRequest wrapper for the CreateInternetGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateInternetGateway.go.html to see an example of how to use CreateInternetGatewayRequest. type CreateInternetGatewayRequest struct { // Details for creating a new internet gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_connection_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_connection_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_connection_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_connection_details.go index 43a0beae9..64e54eab6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_connection_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_connection_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateIpSecConnectionDetails The representation of CreateIpSecConnectionDetails @@ -37,7 +37,7 @@ type CreateIpSecConnectionDetails struct { // tunnels to use BGP dynamic routing, you can provide an empty list for the static routes. // For more information, see the important note in IPSecConnection. // The CIDR can be either IPv4 or IPv6. Note that IPv6 addressing is currently supported only - // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `10.0.1.0/24` // Example: `2001:db8::/32` StaticRoutes []string `mandatory:"true" json:"staticRoutes"` @@ -47,7 +47,8 @@ type CreateIpSecConnectionDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no @@ -61,7 +62,7 @@ type CreateIpSecConnectionDetails struct { // If you don't provide a value, the `ipAddress` attribute for the Cpe // object specified by `cpeId` is used as the `cpeLocalIdentifier`. // For information about why you'd provide this value, see - // If Your CPE Is Behind a NAT Device (https://docs.cloud.oracle.com/Content/Network/Tasks/overviewIPsec.htm#nat). + // If Your CPE Is Behind a NAT Device (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm#nat). // Example IP address: `10.0.3.3` // Example hostname: `cpe.example.com` CpeLocalIdentifier *string `mandatory:"false" json:"cpeLocalIdentifier"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_connection_tunnel_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_connection_tunnel_details.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_connection_tunnel_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_connection_tunnel_details.go index 8ea704433..53f939540 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_connection_tunnel_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_connection_tunnel_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateIpSecConnectionTunnelDetails The representation of CreateIpSecConnectionTunnelDetails @@ -36,12 +36,9 @@ type CreateIpSecConnectionTunnelDetails struct { // you like with UpdateIPSecConnectionTunnelSharedSecret. SharedSecret *string `mandatory:"false" json:"sharedSecret"` - // Information for establishing a BGP session for the IPSec tunnel. Required if the tunnel uses - // BGP dynamic routing. - // If the tunnel instead uses static routing, you may optionally provide - // this object and set an IP address for one or both ends of the IPSec tunnel for the purposes - // of troubleshooting or monitoring the tunnel. BgpSessionConfig *CreateIpSecTunnelBgpSessionDetails `mandatory:"false" json:"bgpSessionConfig"` + + EncryptionDomainConfig *CreateIpSecTunnelEncryptionDomainDetails `mandatory:"false" json:"encryptionDomainConfig"` } func (m CreateIpSecConnectionTunnelDetails) String() string { @@ -55,11 +52,13 @@ type CreateIpSecConnectionTunnelDetailsRoutingEnum string const ( CreateIpSecConnectionTunnelDetailsRoutingBgp CreateIpSecConnectionTunnelDetailsRoutingEnum = "BGP" CreateIpSecConnectionTunnelDetailsRoutingStatic CreateIpSecConnectionTunnelDetailsRoutingEnum = "STATIC" + CreateIpSecConnectionTunnelDetailsRoutingPolicy CreateIpSecConnectionTunnelDetailsRoutingEnum = "POLICY" ) var mappingCreateIpSecConnectionTunnelDetailsRouting = map[string]CreateIpSecConnectionTunnelDetailsRoutingEnum{ "BGP": CreateIpSecConnectionTunnelDetailsRoutingBgp, "STATIC": CreateIpSecConnectionTunnelDetailsRoutingStatic, + "POLICY": CreateIpSecConnectionTunnelDetailsRoutingPolicy, } // GetCreateIpSecConnectionTunnelDetailsRoutingEnumValues Enumerates the set of values for CreateIpSecConnectionTunnelDetailsRoutingEnum diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_tunnel_bgp_session_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_bgp_session_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_tunnel_bgp_session_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_bgp_session_details.go index f48d76724..6ffc62646 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_ip_sec_tunnel_bgp_session_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_bgp_session_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateIpSecTunnelBgpSessionDetails The representation of CreateIpSecTunnelBgpSessionDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_encryption_domain_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_encryption_domain_details.go new file mode 100644 index 000000000..24db9edf3 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ip_sec_tunnel_encryption_domain_details.go @@ -0,0 +1,33 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// CreateIpSecTunnelEncryptionDomainDetails Request to enable a multi-encryption domain policy on the VPNaaS tunnel. +// The cross product of oracleTrafficSelector and cpeTrafficSelector can't be more than 50. +type CreateIpSecTunnelEncryptionDomainDetails struct { + + // Lists IPv4 or IPv6-enabled subnets in your Oracle tenancy. + OracleTrafficSelector []string `mandatory:"false" json:"oracleTrafficSelector"` + + // Lists IPv4 or IPv6-enabled subnets in your on-premises network. + CpeTrafficSelector []string `mandatory:"false" json:"cpeTrafficSelector"` +} + +func (m CreateIpSecTunnelEncryptionDomainDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_ipv6_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ipv6_details.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_ipv6_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_ipv6_details.go index f98343c8a..ebe7e5d37 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_ipv6_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ipv6_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,12 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateIpv6Details The representation of CreateIpv6Details type CreateIpv6Details struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VNIC to assign the IPv6 to. The - // IPv6 will be in the VNIC's subnet. - VnicId *string `mandatory:"true" json:"vnicId"` - // Defined tags for this resource. Each key is predefined and scoped to a // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). // Example: `{"Operations": {"CostCenter": "42"}}` @@ -52,6 +48,10 @@ type CreateIpv6Details struct { // for the Ipv6 is null. // Example: `true` IsInternetAccessAllowed *bool `mandatory:"false" json:"isInternetAccessAllowed"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VNIC to assign the IPv6 to. The + // IPv6 will be in the VNIC's subnet. + VnicId *string `mandatory:"false" json:"vnicId"` } func (m CreateIpv6Details) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_ipv6_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ipv6_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_ipv6_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_ipv6_request_response.go index 62670299d..392980943 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_ipv6_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_ipv6_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateIpv6Request wrapper for the CreateIpv6 operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateIpv6.go.html to see an example of how to use CreateIpv6Request. type CreateIpv6Request struct { // Create IPv6 details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_local_peering_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_local_peering_gateway_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_local_peering_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_local_peering_gateway_details.go index 9dfe6e7a0..e7f12783d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_local_peering_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_local_peering_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateLocalPeeringGatewayDetails The representation of CreateLocalPeeringGatewayDetails @@ -45,7 +45,7 @@ type CreateLocalPeeringGatewayDetails struct { // table. The Networking service does NOT automatically associate the attached VCN's default route table // with the LPG. // For information about why you would associate a route table with an LPG, see - // Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/Content/Network/Tasks/transitrouting.htm). + // Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitrouting.htm). RouteTableId *string `mandatory:"false" json:"routeTableId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_local_peering_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_local_peering_gateway_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_local_peering_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_local_peering_gateway_request_response.go index 3e574e09a..e5af48ddc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_local_peering_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_local_peering_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateLocalPeeringGatewayRequest wrapper for the CreateLocalPeeringGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateLocalPeeringGateway.go.html to see an example of how to use CreateLocalPeeringGatewayRequest. type CreateLocalPeeringGatewayRequest struct { // Details for creating a new local peering gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_nat_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_nat_gateway_details.go similarity index 79% rename from vendor/github.com/oracle/oci-go-sdk/core/create_nat_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_nat_gateway_details.go index 4e2791ead..09e0d792e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_nat_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_nat_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,17 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateNatGatewayDetails The representation of CreateNatGatewayDetails type CreateNatGatewayDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to contain the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to contain the // NAT gateway. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN the gateway belongs to. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN the gateway belongs to. VcnId *string `mandatory:"true" json:"vcnId"` // Defined tags for this resource. Each key is predefined and scoped to a @@ -44,6 +44,9 @@ type CreateNatGatewayDetails struct { // Whether the NAT gateway blocks traffic through it. The default is `false`. // Example: `true` BlockTraffic *bool `mandatory:"false" json:"blockTraffic"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP address associated with the NAT gateway. + PublicIpId *string `mandatory:"false" json:"publicIpId"` } func (m CreateNatGatewayDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_nat_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_nat_gateway_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_nat_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_nat_gateway_request_response.go index 84a4b1c02..48a9b6baa 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_nat_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_nat_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateNatGatewayRequest wrapper for the CreateNatGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateNatGateway.go.html to see an example of how to use CreateNatGatewayRequest. type CreateNatGatewayRequest struct { // Details for creating a NAT gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_network_security_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_network_security_group_details.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/create_network_security_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_network_security_group_details.go index ed172f63d..fd1993e72 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_network_security_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_network_security_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,17 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateNetworkSecurityGroupDetails The representation of CreateNetworkSecurityGroupDetails type CreateNetworkSecurityGroupDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment to contain the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to contain the // network security group. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN to create the network + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN to create the network // security group in. VcnId *string `mandatory:"true" json:"vcnId"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_network_security_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_network_security_group_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_network_security_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_network_security_group_request_response.go index 3830c5718..0b9e86c6b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_network_security_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_network_security_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateNetworkSecurityGroupRequest wrapper for the CreateNetworkSecurityGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateNetworkSecurityGroup.go.html to see an example of how to use CreateNetworkSecurityGroupRequest. type CreateNetworkSecurityGroupRequest struct { // Details for creating a network security group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_private_ip_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_private_ip_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_private_ip_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_private_ip_details.go index 90bc0b7aa..70b25e54a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_private_ip_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_private_ip_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreatePrivateIpDetails The representation of CreatePrivateIpDetails @@ -41,7 +41,7 @@ type CreatePrivateIpDetails struct { // RFC 952 (https://tools.ietf.org/html/rfc952) and // RFC 1123 (https://tools.ietf.org/html/rfc1123). // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `bminstance-1` HostnameLabel *string `mandatory:"false" json:"hostnameLabel"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_private_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_private_ip_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_private_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_private_ip_request_response.go index 1caeff352..ef1182b80 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_private_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_private_ip_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreatePrivateIpRequest wrapper for the CreatePrivateIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreatePrivateIp.go.html to see an example of how to use CreatePrivateIpRequest. type CreatePrivateIpRequest struct { // Create private IP details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_public_ip_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_details.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_public_ip_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_details.go index 2fcfa3c7d..2a53f6cc6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_public_ip_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreatePublicIpDetails The representation of CreatePublicIpDetails @@ -26,7 +26,7 @@ type CreatePublicIpDetails struct { // Defines when the public IP is deleted and released back to the Oracle Cloud // Infrastructure public IP pool. For more information, see - // Public IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingpublicIPs.htm). + // Public IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingpublicIPs.htm). Lifetime CreatePublicIpDetailsLifetimeEnum `mandatory:"true" json:"lifetime"` // Defined tags for this resource. Each key is predefined and scoped to a @@ -50,6 +50,9 @@ type CreatePublicIpDetails struct { // assigned to a private IP. You can later assign the public IP with // UpdatePublicIp. PrivateIpId *string `mandatory:"false" json:"privateIpId"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"false" json:"publicIpPoolId"` } func (m CreatePublicIpDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_details.go new file mode 100644 index 000000000..c15276c5b --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_details.go @@ -0,0 +1,43 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// CreatePublicIpPoolDetails The information used to create a public IP pool. +type CreatePublicIpPoolDetails struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the public IP pool. + CompartmentId *string `mandatory:"true" json:"compartmentId"` + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` +} + +func (m CreatePublicIpPoolDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_request_response.go new file mode 100644 index 000000000..a8120a88b --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_pool_request_response.go @@ -0,0 +1,76 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// CreatePublicIpPoolRequest wrapper for the CreatePublicIpPool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreatePublicIpPool.go.html to see an example of how to use CreatePublicIpPoolRequest. +type CreatePublicIpPoolRequest struct { + + // Create Public Ip Pool details + CreatePublicIpPoolDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request CreatePublicIpPoolRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request CreatePublicIpPoolRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request CreatePublicIpPoolRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// CreatePublicIpPoolResponse wrapper for the CreatePublicIpPool operation +type CreatePublicIpPoolResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The PublicIpPool instance + PublicIpPool `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response CreatePublicIpPoolResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response CreatePublicIpPoolResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_public_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_public_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_request_response.go index d30d2bb9d..d46b1a388 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_public_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_public_ip_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreatePublicIpRequest wrapper for the CreatePublicIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreatePublicIp.go.html to see an example of how to use CreatePublicIpRequest. type CreatePublicIpRequest struct { // Create public IP details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_remote_peering_connection_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_remote_peering_connection_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_remote_peering_connection_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_remote_peering_connection_details.go index cad2c2e1f..bbbaeca8d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_remote_peering_connection_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_remote_peering_connection_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateRemotePeeringConnectionDetails The representation of CreateRemotePeeringConnectionDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_remote_peering_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_remote_peering_connection_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_remote_peering_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_remote_peering_connection_request_response.go index 81bc1c90a..96dd0249c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_remote_peering_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_remote_peering_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateRemotePeeringConnectionRequest wrapper for the CreateRemotePeeringConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateRemotePeeringConnection.go.html to see an example of how to use CreateRemotePeeringConnectionRequest. type CreateRemotePeeringConnectionRequest struct { // Request to create peering connection to remote region diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_route_table_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_route_table_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_route_table_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_route_table_details.go index ed2f83f97..d41a5d0df 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_route_table_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_route_table_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateRouteTableDetails The representation of CreateRouteTableDetails @@ -34,7 +34,8 @@ type CreateRouteTableDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_route_table_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_route_table_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_route_table_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_route_table_request_response.go index 7a73c0ad1..3de725d0b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_route_table_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_route_table_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateRouteTableRequest wrapper for the CreateRouteTable operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateRouteTable.go.html to see an example of how to use CreateRouteTableRequest. type CreateRouteTableRequest struct { // Details for creating a new route table. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_security_list_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_security_list_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_security_list_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_security_list_details.go index 0b37a79bb..234c86fa5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_security_list_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_security_list_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateSecurityListDetails The representation of CreateSecurityListDetails @@ -37,7 +37,8 @@ type CreateSecurityListDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_security_list_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_security_list_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_security_list_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_security_list_request_response.go index cc11a35d9..cc46c171a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_security_list_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_security_list_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateSecurityListRequest wrapper for the CreateSecurityList operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateSecurityList.go.html to see an example of how to use CreateSecurityListRequest. type CreateSecurityListRequest struct { // Details regarding the security list to create. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_service_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_service_gateway_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/create_service_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_service_gateway_details.go index d62780c6d..0fa0a497e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_service_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_service_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateServiceGatewayDetails The representation of CreateServiceGatewayDetails @@ -33,7 +33,7 @@ type CreateServiceGatewayDetails struct { // RouteTable. Services []ServiceIdRequestDetails `mandatory:"true" json:"services"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"true" json:"vcnId"` // Defined tags for this resource. Each key is predefined and scoped to a @@ -55,7 +55,7 @@ type CreateServiceGatewayDetails struct { // table. The Networking service does NOT automatically associate the attached VCN's default route table // with the service gateway. // For information about why you would associate a route table with a service gateway, see - // Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/Content/Network/Tasks/transitroutingoracleservices.htm). + // Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm). RouteTableId *string `mandatory:"false" json:"routeTableId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_service_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_service_gateway_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_service_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_service_gateway_request_response.go index 3b3a508e1..1c53418c3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_service_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_service_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateServiceGatewayRequest wrapper for the CreateServiceGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateServiceGateway.go.html to see an example of how to use CreateServiceGatewayRequest. type CreateServiceGatewayRequest struct { // Details for creating a service gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_subnet_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_subnet_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/create_subnet_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_subnet_details.go index 1c6987b4c..0ca133e5f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_subnet_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_subnet_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateSubnetDetails The representation of CreateSubnetDetails @@ -53,7 +53,8 @@ type CreateSubnetDetails struct { // provide a value, the subnet uses the VCN's default set of DHCP options. DhcpOptionsId *string `mandatory:"false" json:"dhcpOptionsId"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // A DNS label for the subnet, used in conjunction with the VNIC's hostname and @@ -65,7 +66,7 @@ type CreateSubnetDetails struct { // hostnames of instances in the subnet. It can only be set if the VCN itself // was created with a DNS label. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `subnet123` DnsLabel *string `mandatory:"false" json:"dnsLabel"` @@ -77,7 +78,7 @@ type CreateSubnetDetails struct { // Use this to enable IPv6 addressing for this subnet. The VCN must be enabled for IPv6. // You can't change this subnet characteristic later. All subnets are /64 in size. The subnet // portion of the IPv6 address is the fourth hextet from the left (1111 in the following example). - // For important details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // For important details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `2001:0db8:0123:1111::/64` Ipv6CidrBlock *string `mandatory:"false" json:"ipv6CidrBlock"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_subnet_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_subnet_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_subnet_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_subnet_request_response.go index 71ac31d01..01fbde7b4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_subnet_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_subnet_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateSubnetRequest wrapper for the CreateSubnet operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateSubnet.go.html to see an example of how to use CreateSubnetRequest. type CreateSubnetRequest struct { // Details for creating a subnet. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_vcn_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vcn_details.go similarity index 80% rename from vendor/github.com/oracle/oci-go-sdk/core/create_vcn_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_vcn_details.go index d1e40380a..db3071562 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_vcn_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vcn_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,21 +14,28 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVcnDetails The representation of CreateVcnDetails type CreateVcnDetails struct { - // The CIDR IP address block of the VCN. - // Example: `10.0.0.0/16` - CidrBlock *string `mandatory:"true" json:"cidrBlock"` - // The OCID of the compartment to contain the VCN. CompartmentId *string `mandatory:"true" json:"compartmentId"` + // **Deprecated.** Do *not* set this value. Use `cidrBlocks` instead. + // Example: `10.0.0.0/16` + CidrBlock *string `mandatory:"false" json:"cidrBlock"` + + // The list of one or more IPv4 CIDR blocks for the VCN that meet the following criteria: + // - The CIDR blocks must be valid. + // - They must not overlap with each other or with the on-premises network CIDR block. + // - The number of CIDR blocks must not exceed the limit of CIDR blocks allowed per VCN. + // **Important:** Do *not* specify a value for `cidrBlock`. Use this parameter instead. + CidrBlocks []string `mandatory:"false" json:"cidrBlocks"` + // If you enable IPv6 for the VCN (see `isIpv6Enabled`), you may optionally provide an IPv6 - // /48 CIDR block from the supported ranges (see IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // /48 CIDR block from the supported ranges (see IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // The addresses in this block will be considered private and cannot be accessed // from the internet. The documentation refers to this as a *custom CIDR* for the VCN. // If you don't provide a custom CIDR for the VCN, Oracle assigns the VCN's IPv6 /48 CIDR block. @@ -41,7 +48,7 @@ type CreateVcnDetails struct { // IPv6 IP address for both private and public (internet) communication. You control whether // an IPv6 address can be used for internet communication by using the `isInternetAccessAllowed` // attribute in the Ipv6 object. - // For important details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // For important details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `2001:0db8:0123::/48` Ipv6CidrBlock *string `mandatory:"false" json:"ipv6CidrBlock"` @@ -50,7 +57,8 @@ type CreateVcnDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // A DNS label for the VCN, used in conjunction with the VNIC's hostname and @@ -63,7 +71,7 @@ type CreateVcnDetails struct { // resolve other instances in the VCN. Otherwise the Internet and VCN Resolver // will not work. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `vcn1` DnsLabel *string `mandatory:"false" json:"dnsLabel"` @@ -73,7 +81,7 @@ type CreateVcnDetails struct { FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` // Whether IPv6 is enabled for the VCN. Default is `false`. You cannot change this later. - // For important details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // For important details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `true` IsIpv6Enabled *bool `mandatory:"false" json:"isIpv6Enabled"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_vcn_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vcn_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_vcn_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_vcn_request_response.go index c4e86c090..504f399db 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_vcn_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vcn_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVcnRequest wrapper for the CreateVcn operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVcn.go.html to see an example of how to use CreateVcnRequest. type CreateVcnRequest struct { // Details for creating a new VCN. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_details.go index 7422ffc23..b535de19a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVirtualCircuitDetails The representation of CreateVirtualCircuitDetails @@ -28,7 +28,7 @@ type CreateVirtualCircuitDetails struct { // (10.0.0.0/8, 172.16/12, and 192.168/16). Type CreateVirtualCircuitDetailsTypeEnum `mandatory:"true" json:"type"` - // The provisioned data rate of the connection. To get a list of the + // The provisioned data rate of the connection. To get a list of the // available bandwidth levels (that is, shapes), see // ListFastConnectProviderVirtualCircuitBandwidthShapes. // Example: `10 Gbps` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_public_prefix_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_public_prefix_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_public_prefix_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_public_prefix_details.go index bb2b2896f..0ed5faf8d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_public_prefix_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_public_prefix_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVirtualCircuitPublicPrefixDetails The representation of CreateVirtualCircuitPublicPrefixDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_request_response.go index a247a7290..0452f91ca 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_virtual_circuit_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_virtual_circuit_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVirtualCircuitRequest wrapper for the CreateVirtualCircuit operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVirtualCircuit.go.html to see an example of how to use CreateVirtualCircuitRequest. type CreateVirtualCircuitRequest struct { // Details to create a VirtualCircuit. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_vlan_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vlan_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_vlan_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_vlan_details.go index df74dc718..ee8908c36 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_vlan_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vlan_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVlanDetails The representation of CreateVlanDetails @@ -27,6 +27,7 @@ type CreateVlanDetails struct { // The range of IPv4 addresses that will be used for layer 3 communication with // hosts outside the VLAN. The CIDR must maintain the following rules - // a. The CIDR block is valid and correctly formatted. + // b. The new range is within one of the parent VCN ranges. // Example: `192.0.2.0/24` CidrBlock *string `mandatory:"true" json:"cidrBlock"` @@ -41,7 +42,8 @@ type CreateVlanDetails struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A descriptive name. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A descriptive name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_vlan_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vlan_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_vlan_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_vlan_request_response.go index df6b8cca3..d5646d97d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_vlan_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vlan_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVlanRequest wrapper for the CreateVlan operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVlan.go.html to see an example of how to use CreateVlanRequest. type CreateVlanRequest struct { // Details for creating a VLAN diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_vnic_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vnic_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_vnic_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_vnic_details.go index 1ff1d8751..96bb86d87 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_vnic_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_vnic_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVnicDetails Contains properties for a VNIC. You use this object when creating the // primary VNIC during instance launch or when creating a secondary VNIC. // For more information about VNICs, see -// Virtual Network Interface Cards (VNICs) (https://docs.cloud.oracle.com/Content/Network/Tasks/managingVNICs.htm). +// Virtual Network Interface Cards (VNICs) (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingVNICs.htm). type CreateVnicDetails struct { // Whether the VNIC should be assigned a public IP address. Defaults to whether @@ -32,13 +32,13 @@ type CreateVnicDetails struct { // `prohibitPublicIpOnVnic` = true, an error is returned. // **Note:** This public IP address is associated with the primary private IP // on the VNIC. For more information, see - // IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPaddresses.htm). + // IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPaddresses.htm). // **Note:** There's a limit to the number of PublicIp // a VNIC or instance can have. If you try to create a secondary VNIC // with an assigned public IP for an instance that has already // reached its public IP limit, an error is returned. For information // about the public IP limits, see - // Public IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingpublicIPs.htm). + // Public IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingpublicIPs.htm). // Example: `false` // If you specify a `vlanId`, the `assignPublicIp` is required to be set to false. See // Vlan. @@ -69,7 +69,7 @@ type CreateVnicDetails struct { // ListPrivateIps and // GetPrivateIp. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // When launching an instance, use this `hostnameLabel` instead // of the deprecated `hostnameLabel` in // LaunchInstanceDetails. @@ -105,7 +105,7 @@ type CreateVnicDetails struct { // Whether the source/destination check is disabled on the VNIC. // Defaults to `false`, which means the check is performed. For information // about why you would skip the source/destination check, see - // Using a Private IP as a Route Target (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm#privateip). + // Using a Private IP as a Route Target (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm#privateip). // // If you specify a `vlanId`, the `skipSourceDestCheck` cannot be specified because the // source/destination check is always disabled for VNICs in a VLAN. See diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_details.go index 77f5f2e5a..ee6a90cde 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVolumeBackupDetails The representation of CreateVolumeBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_assignment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_assignment_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_assignment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_assignment_details.go index 93a727e2c..3abf9e699 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_assignment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_assignment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVolumeBackupPolicyAssignmentDetails The representation of CreateVolumeBackupPolicyAssignmentDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_assignment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_assignment_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_assignment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_assignment_request_response.go index 51daa5613..1aeb067e7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_assignment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_assignment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVolumeBackupPolicyAssignmentRequest wrapper for the CreateVolumeBackupPolicyAssignment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeBackupPolicyAssignment.go.html to see an example of how to use CreateVolumeBackupPolicyAssignmentRequest. type CreateVolumeBackupPolicyAssignmentRequest struct { // Request to assign a specified policy to a particular volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_details.go index 698126893..5c4cefa8a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVolumeBackupPolicyDetails Specifies the properties for creating user defined backup policy. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_request_response.go index e043fea90..2109e3bea 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_policy_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_policy_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVolumeBackupPolicyRequest wrapper for the CreateVolumeBackupPolicy operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeBackupPolicy.go.html to see an example of how to use CreateVolumeBackupPolicyRequest. type CreateVolumeBackupPolicyRequest struct { // Request to create a new scheduled backup policy. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_request_response.go index a3b8ca205..6ebdc3650 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVolumeBackupRequest wrapper for the CreateVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeBackup.go.html to see an example of how to use CreateVolumeBackupRequest. type CreateVolumeBackupRequest struct { // Request to create a new backup of given volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_details.go index 8f1267007..6cb351bf2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVolumeDetails The representation of CreateVolumeDetails @@ -66,9 +66,6 @@ type CreateVolumeDetails struct { // This field is deprecated. Use sizeInGBs instead. SizeInMBs *int64 `mandatory:"false" json:"sizeInMBs"` - // Specifies the volume source details for a new Block volume. The volume source is either another Block volume in the same availability domain or a Block volume backup. - // This is an optional field. If not specified or set to null, the new Block volume will be empty. - // When specified, the new Block volume will contain data from the source volume or backup. SourceDetails VolumeSourceDetails `mandatory:"false" json:"sourceDetails"` // The OCID of the volume backup from which the data should be restored on the newly created volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_backup_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_backup_details.go index baa147671..ce906e8b2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVolumeGroupBackupDetails The representation of CreateVolumeGroupBackupDetails @@ -23,7 +23,9 @@ type CreateVolumeGroupBackupDetails struct { // The OCID of the volume group that needs to be backed up. VolumeGroupId *string `mandatory:"true" json:"volumeGroupId"` - // The OCID of the compartment that will contain the volume group backup. This parameter is optional, by default backup will be created in the same compartment and source volume group. + // The OCID of the compartment that will contain the volume group + // backup. This parameter is optional, by default backup will be created in + // the same compartment and source volume group. CompartmentId *string `mandatory:"false" json:"compartmentId"` // Defined tags for this resource. Each key is predefined and scoped to a diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_backup_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_backup_request_response.go index ad3ef4ddf..1beeb03eb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVolumeGroupBackupRequest wrapper for the CreateVolumeGroupBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeGroupBackup.go.html to see an example of how to use CreateVolumeGroupBackupRequest. type CreateVolumeGroupBackupRequest struct { // Request to create a new backup group of given volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_details.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_details.go index 38812745f..9fc96b9fe 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CreateVolumeGroupDetails The representation of CreateVolumeGroupDetails @@ -27,16 +27,19 @@ type CreateVolumeGroupDetails struct { // The OCID of the compartment that contains the volume group. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // Specifies the volume group source details for a new volume group. The volume source is either another a list of - // volume ids in the same availability domain, another volume group or a volume group backup. SourceDetails VolumeGroupSourceDetails `mandatory:"true" json:"sourceDetails"` + // If provided, specifies the ID of the volume backup policy to assign to the newly + // created volume group. If omitted, no policy will be assigned. + BackupPolicyId *string `mandatory:"false" json:"backupPolicyId"` + // Defined tags for this resource. Each key is predefined and scoped to a // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` - // A user-friendly name for the volume group. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name for the volume group. Does not have to be + // unique, and it's changeable. Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` // Free-form tags for this resource. Each tag is a simple key-value pair with no @@ -52,6 +55,7 @@ func (m CreateVolumeGroupDetails) String() string { // UnmarshalJSON unmarshals from json func (m *CreateVolumeGroupDetails) UnmarshalJSON(data []byte) (e error) { model := struct { + BackupPolicyId *string `json:"backupPolicyId"` DefinedTags map[string]map[string]interface{} `json:"definedTags"` DisplayName *string `json:"displayName"` FreeformTags map[string]string `json:"freeformTags"` @@ -65,6 +69,8 @@ func (m *CreateVolumeGroupDetails) UnmarshalJSON(data []byte) (e error) { return } var nn interface{} + m.BackupPolicyId = model.BackupPolicyId + m.DefinedTags = model.DefinedTags m.DisplayName = model.DisplayName diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_request_response.go index d5fd19e01..18b8bedbf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVolumeGroupRequest wrapper for the CreateVolumeGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolumeGroup.go.html to see an example of how to use CreateVolumeGroupRequest. type CreateVolumeGroupRequest struct { // Request to create a new volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/create_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_request_response.go index bf2096722..27993eb6a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/create_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/create_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // CreateVolumeRequest wrapper for the CreateVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/CreateVolume.go.html to see an example of how to use CreateVolumeRequest. type CreateVolumeRequest struct { // Request to create a new volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/cross_connect.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect.go index 31948c0d5..e941c4f6a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CrossConnect For use with Oracle Cloud Infrastructure FastConnect. A cross-connect represents a // physical connection between an existing network and Oracle. Customers who are colocated // with Oracle in a FastConnect location create and use cross-connects. For more -// information, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// information, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // Oracle recommends you create each cross-connect in a // CrossConnectGroup so you can use link aggregation // with the connection. @@ -29,9 +29,7 @@ import ( // same way as a colocated customer's (with `CrossConnect` and `CrossConnectGroup` objects, and so on). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type CrossConnect struct { // The OCID of the compartment containing the cross-connect group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_group.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_group.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/cross_connect_group.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_group.go index e7149fd35..a6fe7d3da 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_group.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_group.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,22 +14,20 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CrossConnectGroup For use with Oracle Cloud Infrastructure FastConnect. A cross-connect group // is a link aggregation group (LAG), which can contain one or more // CrossConnect. Customers who are colocated with // Oracle in a FastConnect location create and use cross-connect groups. For more -// information, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// information, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // **Note:** If you're a provider who is setting up a physical connection to Oracle so customers // can use FastConnect over the connection, be aware that your connection is modeled the // same way as a colocated customer's (with `CrossConnect` and `CrossConnectGroup` objects, and so on). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type CrossConnectGroup struct { // The OCID of the compartment containing the cross-connect group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_location.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_location.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/cross_connect_location.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_location.go index 669cc239b..052d890b6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_location.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_location.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CrossConnectLocation An individual FastConnect location. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_mapping.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_mapping.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/cross_connect_mapping.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_mapping.go index 1e98f152e..b5f54590a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_mapping.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_mapping.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CrossConnectMapping For use with Oracle Cloud Infrastructure FastConnect. Each @@ -78,17 +78,17 @@ type CrossConnectMapping struct { // provider's edge router. Only subnet masks from /64 up to /127 are allowed. // There's one exception: for a public virtual circuit, Oracle specifies the BGP IPv6 addresses. // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `2001:db8::1/64` CustomerBgpPeeringIpv6 *string `mandatory:"false" json:"customerBgpPeeringIpv6"` - // The IPv6 address for Oracle's end of the BGP session. Only subnet masks from /64 up to /127 are allowed. + // The IPv6 address for Oracle's end of the BGP session. Only subnet masks from /64 up to /127 are allowed. // If the session goes from Oracle to a customer's edge router, // the customer specifies this information. If the session goes from Oracle to // a provider's edge router, the provider specifies this. // There's one exception: for a public virtual circuit, Oracle specifies the BGP IPv6 addresses. // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `2001:db8::2/64` OracleBgpPeeringIpv6 *string `mandatory:"false" json:"oracleBgpPeeringIpv6"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_port_speed_shape.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_port_speed_shape.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/cross_connect_port_speed_shape.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_port_speed_shape.go index bc1addfe8..a203e0a8d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_port_speed_shape.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_port_speed_shape.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CrossConnectPortSpeedShape An individual port speed level for cross-connects. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_status.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_status.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/cross_connect_status.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_status.go index 232a6a2b4..d138d8df6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/cross_connect_status.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/cross_connect_status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // CrossConnectStatus The status of the cross-connect. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host.go index 0936854a9..acc631fbe 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DedicatedVmHost A dedicated virtual machine host that enables you to host multiple VM instances diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_instance_shape_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_instance_shape_summary.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_instance_shape_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_instance_shape_summary.go index cfef16784..ca6a76f05 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_instance_shape_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_instance_shape_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DedicatedVmHostInstanceShapeSummary The shape used to launch instances associated with the dedicated VM host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_instance_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_instance_summary.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_instance_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_instance_summary.go index 7fc47c088..999e8e572 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_instance_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_instance_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DedicatedVmHostInstanceSummary Condensed instance data when listing instances on a dedicated VM host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_shape_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_shape_summary.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_shape_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_shape_summary.go index a71166e2f..280832c10 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_shape_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_shape_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DedicatedVmHostShapeSummary The shape used to launch the dedicated virtual machine (VM) host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_summary.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_summary.go index f8a783f02..7d269a453 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dedicated_vm_host_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dedicated_vm_host_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DedicatedVmHostSummary A dedicated virtual machine (VM) host that enables you to host multiple instances on a dedicated host instance that is not shared with other tenancies. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_app_catalog_subscription_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_app_catalog_subscription_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_app_catalog_subscription_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_app_catalog_subscription_request_response.go index 541f91a4a..06a836f8c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_app_catalog_subscription_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_app_catalog_subscription_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteAppCatalogSubscriptionRequest wrapper for the DeleteAppCatalogSubscription operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteAppCatalogSubscription.go.html to see an example of how to use DeleteAppCatalogSubscriptionRequest. type DeleteAppCatalogSubscriptionRequest struct { // The OCID of the listing. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_backup_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_backup_request_response.go index 2526dbabf..0537f45bc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_backup_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteBootVolumeBackupRequest wrapper for the DeleteBootVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteBootVolumeBackup.go.html to see an example of how to use DeleteBootVolumeBackupRequest. type DeleteBootVolumeBackupRequest struct { // The OCID of the boot volume backup. BootVolumeBackupId *string `mandatory:"true" contributesTo:"path" name:"bootVolumeBackupId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_kms_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_kms_key_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_kms_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_kms_key_request_response.go index 9a9ce9652..1d36e2527 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_kms_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_kms_key_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteBootVolumeKmsKeyRequest wrapper for the DeleteBootVolumeKmsKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteBootVolumeKmsKey.go.html to see an example of how to use DeleteBootVolumeKmsKeyRequest. type DeleteBootVolumeKmsKeyRequest struct { // The OCID of the boot volume. BootVolumeId *string `mandatory:"true" contributesTo:"path" name:"bootVolumeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_request_response.go index 86fa797c1..f3c3ed05f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_boot_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_boot_volume_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteBootVolumeRequest wrapper for the DeleteBootVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteBootVolume.go.html to see an example of how to use DeleteBootVolumeRequest. type DeleteBootVolumeRequest struct { // The OCID of the boot volume. BootVolumeId *string `mandatory:"true" contributesTo:"path" name:"bootVolumeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_byoip_range_request_response.go new file mode 100644 index 000000000..22a456987 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_byoip_range_request_response.go @@ -0,0 +1,72 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// DeleteByoipRangeRequest wrapper for the DeleteByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteByoipRange.go.html to see an example of how to use DeleteByoipRangeRequest. +type DeleteByoipRangeRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request DeleteByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request DeleteByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request DeleteByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// DeleteByoipRangeResponse wrapper for the DeleteByoipRange operation +type DeleteByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` +} + +func (response DeleteByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response DeleteByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_compute_image_capability_schema_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_compute_image_capability_schema_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_compute_image_capability_schema_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_compute_image_capability_schema_request_response.go index 057ee7d5b..1955b2d1c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_compute_image_capability_schema_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_compute_image_capability_schema_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteComputeImageCapabilitySchemaRequest wrapper for the DeleteComputeImageCapabilitySchema operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteComputeImageCapabilitySchema.go.html to see an example of how to use DeleteComputeImageCapabilitySchemaRequest. type DeleteComputeImageCapabilitySchemaRequest struct { // The id of the compute image capability schema or the image ocid ComputeImageCapabilitySchemaId *string `mandatory:"true" contributesTo:"path" name:"computeImageCapabilitySchemaId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_console_history_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_console_history_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_console_history_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_console_history_request_response.go index fba488484..c7bf8a83b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_console_history_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_console_history_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteConsoleHistoryRequest wrapper for the DeleteConsoleHistory operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteConsoleHistory.go.html to see an example of how to use DeleteConsoleHistoryRequest. type DeleteConsoleHistoryRequest struct { // The OCID of the console history. InstanceConsoleHistoryId *string `mandatory:"true" contributesTo:"path" name:"instanceConsoleHistoryId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_cpe_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cpe_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_cpe_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cpe_request_response.go index 4ac71e580..1a346a03b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_cpe_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cpe_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteCpeRequest wrapper for the DeleteCpe operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteCpe.go.html to see an example of how to use DeleteCpeRequest. type DeleteCpeRequest struct { // The OCID of the CPE. CpeId *string `mandatory:"true" contributesTo:"path" name:"cpeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_cross_connect_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cross_connect_group_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_cross_connect_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cross_connect_group_request_response.go index 5304df54f..54bc62906 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_cross_connect_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cross_connect_group_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteCrossConnectGroupRequest wrapper for the DeleteCrossConnectGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteCrossConnectGroup.go.html to see an example of how to use DeleteCrossConnectGroupRequest. type DeleteCrossConnectGroupRequest struct { // The OCID of the cross-connect group. CrossConnectGroupId *string `mandatory:"true" contributesTo:"path" name:"crossConnectGroupId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_cross_connect_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cross_connect_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_cross_connect_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cross_connect_request_response.go index 9d9d3c909..7d63d544d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_cross_connect_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_cross_connect_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteCrossConnectRequest wrapper for the DeleteCrossConnect operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteCrossConnect.go.html to see an example of how to use DeleteCrossConnectRequest. type DeleteCrossConnectRequest struct { // The OCID of the cross-connect. CrossConnectId *string `mandatory:"true" contributesTo:"path" name:"crossConnectId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_dedicated_vm_host_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_dedicated_vm_host_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_dedicated_vm_host_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_dedicated_vm_host_request_response.go index 2d675f955..542ac015d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_dedicated_vm_host_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_dedicated_vm_host_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteDedicatedVmHostRequest wrapper for the DeleteDedicatedVmHost operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDedicatedVmHost.go.html to see an example of how to use DeleteDedicatedVmHostRequest. type DeleteDedicatedVmHostRequest struct { // The OCID of the dedicated VM host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_dhcp_options_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_dhcp_options_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_dhcp_options_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_dhcp_options_request_response.go index 50305ed78..0808ca2d0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_dhcp_options_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_dhcp_options_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteDhcpOptionsRequest wrapper for the DeleteDhcpOptions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDhcpOptions.go.html to see an example of how to use DeleteDhcpOptionsRequest. type DeleteDhcpOptionsRequest struct { // The OCID for the set of DHCP options. DhcpId *string `mandatory:"true" contributesTo:"path" name:"dhcpId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_drg_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_drg_attachment_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_drg_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_drg_attachment_request_response.go index 57adf5ce2..e2121c406 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_drg_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_drg_attachment_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteDrgAttachmentRequest wrapper for the DeleteDrgAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDrgAttachment.go.html to see an example of how to use DeleteDrgAttachmentRequest. type DeleteDrgAttachmentRequest struct { // The OCID of the DRG attachment. DrgAttachmentId *string `mandatory:"true" contributesTo:"path" name:"drgAttachmentId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_drg_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_drg_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_drg_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_drg_request_response.go index df5cdbffd..c307e8e26 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_drg_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_drg_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteDrgRequest wrapper for the DeleteDrg operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteDrg.go.html to see an example of how to use DeleteDrgRequest. type DeleteDrgRequest struct { // The OCID of the DRG. DrgId *string `mandatory:"true" contributesTo:"path" name:"drgId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_i_p_sec_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_i_p_sec_connection_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_i_p_sec_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_i_p_sec_connection_request_response.go index 17273f49e..2d0d0141a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_i_p_sec_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_i_p_sec_connection_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteIPSecConnectionRequest wrapper for the DeleteIPSecConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteIPSecConnection.go.html to see an example of how to use DeleteIPSecConnectionRequest. type DeleteIPSecConnectionRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_image_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_image_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_image_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_image_request_response.go index ec37af25d..0ea3a13b6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_image_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_image_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteImageRequest wrapper for the DeleteImage operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteImage.go.html to see an example of how to use DeleteImageRequest. type DeleteImageRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. ImageId *string `mandatory:"true" contributesTo:"path" name:"imageId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_instance_configuration_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_instance_configuration_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_instance_configuration_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_instance_configuration_request_response.go index f89c70f06..e6e630375 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_instance_configuration_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_instance_configuration_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteInstanceConfigurationRequest wrapper for the DeleteInstanceConfiguration operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteInstanceConfiguration.go.html to see an example of how to use DeleteInstanceConfigurationRequest. type DeleteInstanceConfigurationRequest struct { // The OCID of the instance configuration. InstanceConfigurationId *string `mandatory:"true" contributesTo:"path" name:"instanceConfigurationId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_instance_console_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_instance_console_connection_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_instance_console_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_instance_console_connection_request_response.go index 07a002e76..51446149e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_instance_console_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_instance_console_connection_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteInstanceConsoleConnectionRequest wrapper for the DeleteInstanceConsoleConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteInstanceConsoleConnection.go.html to see an example of how to use DeleteInstanceConsoleConnectionRequest. type DeleteInstanceConsoleConnectionRequest struct { // The OCID of the instance console connection. InstanceConsoleConnectionId *string `mandatory:"true" contributesTo:"path" name:"instanceConsoleConnectionId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_internet_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_internet_gateway_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_internet_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_internet_gateway_request_response.go index 37dbf0042..37727dfd3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_internet_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_internet_gateway_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteInternetGatewayRequest wrapper for the DeleteInternetGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteInternetGateway.go.html to see an example of how to use DeleteInternetGatewayRequest. type DeleteInternetGatewayRequest struct { // The OCID of the internet gateway. IgId *string `mandatory:"true" contributesTo:"path" name:"igId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_ipv6_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_ipv6_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_ipv6_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_ipv6_request_response.go index 0466003f0..78b902a2b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_ipv6_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_ipv6_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteIpv6Request wrapper for the DeleteIpv6 operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteIpv6.go.html to see an example of how to use DeleteIpv6Request. type DeleteIpv6Request struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the IPv6. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the IPv6. Ipv6Id *string `mandatory:"true" contributesTo:"path" name:"ipv6Id"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_local_peering_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_local_peering_gateway_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_local_peering_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_local_peering_gateway_request_response.go index b5f7eb835..bdbc9c83d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_local_peering_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_local_peering_gateway_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteLocalPeeringGatewayRequest wrapper for the DeleteLocalPeeringGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteLocalPeeringGateway.go.html to see an example of how to use DeleteLocalPeeringGatewayRequest. type DeleteLocalPeeringGatewayRequest struct { // The OCID of the local peering gateway. LocalPeeringGatewayId *string `mandatory:"true" contributesTo:"path" name:"localPeeringGatewayId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_nat_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_nat_gateway_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_nat_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_nat_gateway_request_response.go index 498b2e181..d5e35c38b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_nat_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_nat_gateway_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteNatGatewayRequest wrapper for the DeleteNatGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteNatGateway.go.html to see an example of how to use DeleteNatGatewayRequest. type DeleteNatGatewayRequest struct { - // The NAT gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The NAT gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). NatGatewayId *string `mandatory:"true" contributesTo:"path" name:"natGatewayId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_network_security_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_network_security_group_request_response.go similarity index 84% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_network_security_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_network_security_group_request_response.go index 4e2aae6a6..f14d5a370 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_network_security_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_network_security_group_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteNetworkSecurityGroupRequest wrapper for the DeleteNetworkSecurityGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteNetworkSecurityGroup.go.html to see an example of how to use DeleteNetworkSecurityGroupRequest. type DeleteNetworkSecurityGroupRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_private_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_private_ip_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_private_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_private_ip_request_response.go index 43c917e80..d92ca21f7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_private_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_private_ip_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeletePrivateIpRequest wrapper for the DeletePrivateIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeletePrivateIp.go.html to see an example of how to use DeletePrivateIpRequest. type DeletePrivateIpRequest struct { // The OCID of the private IP. PrivateIpId *string `mandatory:"true" contributesTo:"path" name:"privateIpId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_pool_request_response.go new file mode 100644 index 000000000..32fd1692b --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_pool_request_response.go @@ -0,0 +1,68 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// DeletePublicIpPoolRequest wrapper for the DeletePublicIpPool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeletePublicIpPool.go.html to see an example of how to use DeletePublicIpPoolRequest. +type DeletePublicIpPoolRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"true" contributesTo:"path" name:"publicIpPoolId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request DeletePublicIpPoolRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request DeletePublicIpPoolRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request DeletePublicIpPoolRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// DeletePublicIpPoolResponse wrapper for the DeletePublicIpPool operation +type DeletePublicIpPoolResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response DeletePublicIpPoolResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response DeletePublicIpPoolResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_public_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_public_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_request_response.go index afd278b68..eed416051 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_public_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_public_ip_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeletePublicIpRequest wrapper for the DeletePublicIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeletePublicIp.go.html to see an example of how to use DeletePublicIpRequest. type DeletePublicIpRequest struct { // The OCID of the public IP. PublicIpId *string `mandatory:"true" contributesTo:"path" name:"publicIpId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_remote_peering_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_remote_peering_connection_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_remote_peering_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_remote_peering_connection_request_response.go index 949dbc1d4..4455f5bb9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_remote_peering_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_remote_peering_connection_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteRemotePeeringConnectionRequest wrapper for the DeleteRemotePeeringConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteRemotePeeringConnection.go.html to see an example of how to use DeleteRemotePeeringConnectionRequest. type DeleteRemotePeeringConnectionRequest struct { // The OCID of the remote peering connection (RPC). RemotePeeringConnectionId *string `mandatory:"true" contributesTo:"path" name:"remotePeeringConnectionId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_route_table_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_route_table_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_route_table_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_route_table_request_response.go index 3b031fcff..472b0b8ef 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_route_table_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_route_table_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteRouteTableRequest wrapper for the DeleteRouteTable operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteRouteTable.go.html to see an example of how to use DeleteRouteTableRequest. type DeleteRouteTableRequest struct { // The OCID of the route table. RtId *string `mandatory:"true" contributesTo:"path" name:"rtId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_security_list_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_security_list_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_security_list_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_security_list_request_response.go index 8f21213d1..700ad7620 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_security_list_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_security_list_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteSecurityListRequest wrapper for the DeleteSecurityList operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteSecurityList.go.html to see an example of how to use DeleteSecurityListRequest. type DeleteSecurityListRequest struct { // The OCID of the security list. SecurityListId *string `mandatory:"true" contributesTo:"path" name:"securityListId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_service_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_service_gateway_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_service_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_service_gateway_request_response.go index 0e54d0f86..f72437911 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_service_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_service_gateway_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteServiceGatewayRequest wrapper for the DeleteServiceGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteServiceGateway.go.html to see an example of how to use DeleteServiceGatewayRequest. type DeleteServiceGatewayRequest struct { - // The service gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceGatewayId *string `mandatory:"true" contributesTo:"path" name:"serviceGatewayId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_subnet_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_subnet_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_subnet_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_subnet_request_response.go index 97d8fab5b..7e028491e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_subnet_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_subnet_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteSubnetRequest wrapper for the DeleteSubnet operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteSubnet.go.html to see an example of how to use DeleteSubnetRequest. type DeleteSubnetRequest struct { // The OCID of the subnet. SubnetId *string `mandatory:"true" contributesTo:"path" name:"subnetId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_vcn_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_vcn_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_vcn_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_vcn_request_response.go index 2fd9df9db..469cd7f18 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_vcn_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_vcn_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVcnRequest wrapper for the DeleteVcn operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVcn.go.html to see an example of how to use DeleteVcnRequest. type DeleteVcnRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_virtual_circuit_public_prefix_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_virtual_circuit_public_prefix_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_virtual_circuit_public_prefix_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_virtual_circuit_public_prefix_details.go index 8df10dcab..fd4a571e4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_virtual_circuit_public_prefix_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_virtual_circuit_public_prefix_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DeleteVirtualCircuitPublicPrefixDetails The representation of DeleteVirtualCircuitPublicPrefixDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_virtual_circuit_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_virtual_circuit_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_virtual_circuit_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_virtual_circuit_request_response.go index e28650765..3cefc57f7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_virtual_circuit_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_virtual_circuit_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVirtualCircuitRequest wrapper for the DeleteVirtualCircuit operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVirtualCircuit.go.html to see an example of how to use DeleteVirtualCircuitRequest. type DeleteVirtualCircuitRequest struct { // The OCID of the virtual circuit. VirtualCircuitId *string `mandatory:"true" contributesTo:"path" name:"virtualCircuitId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_vlan_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_vlan_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_vlan_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_vlan_request_response.go index e2be2deed..44fcb85e4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_vlan_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_vlan_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVlanRequest wrapper for the DeleteVlan operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVlan.go.html to see an example of how to use DeleteVlanRequest. type DeleteVlanRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VLAN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VLAN. VlanId *string `mandatory:"true" contributesTo:"path" name:"vlanId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_policy_assignment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_policy_assignment_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_policy_assignment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_policy_assignment_request_response.go index 3d454c6a5..bb158c749 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_policy_assignment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_policy_assignment_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeBackupPolicyAssignmentRequest wrapper for the DeleteVolumeBackupPolicyAssignment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeBackupPolicyAssignment.go.html to see an example of how to use DeleteVolumeBackupPolicyAssignmentRequest. type DeleteVolumeBackupPolicyAssignmentRequest struct { // The OCID of the volume backup policy assignment. PolicyAssignmentId *string `mandatory:"true" contributesTo:"path" name:"policyAssignmentId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_policy_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_policy_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_policy_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_policy_request_response.go index 8b7c7d3a0..517e8d3e9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_policy_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_policy_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeBackupPolicyRequest wrapper for the DeleteVolumeBackupPolicy operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeBackupPolicy.go.html to see an example of how to use DeleteVolumeBackupPolicyRequest. type DeleteVolumeBackupPolicyRequest struct { // The OCID of the volume backup policy. @@ -20,7 +24,7 @@ type DeleteVolumeBackupPolicyRequest struct { OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_request_response.go index c1c3aabbe..6b831769f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_backup_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeBackupRequest wrapper for the DeleteVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeBackup.go.html to see an example of how to use DeleteVolumeBackupRequest. type DeleteVolumeBackupRequest struct { // The OCID of the volume backup. VolumeBackupId *string `mandatory:"true" contributesTo:"path" name:"volumeBackupId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_group_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_group_backup_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_group_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_group_backup_request_response.go index ca7898ba2..2a910e76f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_group_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_group_backup_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeGroupBackupRequest wrapper for the DeleteVolumeGroupBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeGroupBackup.go.html to see an example of how to use DeleteVolumeGroupBackupRequest. type DeleteVolumeGroupBackupRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group backup. VolumeGroupBackupId *string `mandatory:"true" contributesTo:"path" name:"volumeGroupBackupId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_group_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_group_request_response.go index 566bf07cd..28b1e81f2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_group_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeGroupRequest wrapper for the DeleteVolumeGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeGroup.go.html to see an example of how to use DeleteVolumeGroupRequest. type DeleteVolumeGroupRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group. VolumeGroupId *string `mandatory:"true" contributesTo:"path" name:"volumeGroupId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_kms_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_kms_key_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_kms_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_kms_key_request_response.go index e15f7ba88..8163755eb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_kms_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_kms_key_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeKmsKeyRequest wrapper for the DeleteVolumeKmsKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolumeKmsKey.go.html to see an example of how to use DeleteVolumeKmsKeyRequest. type DeleteVolumeKmsKeyRequest struct { // The OCID of the volume. VolumeId *string `mandatory:"true" contributesTo:"path" name:"volumeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/delete_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_request_response.go index 7d0d6c3c2..1c8f3fb12 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/delete_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/delete_volume_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DeleteVolumeRequest wrapper for the DeleteVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DeleteVolume.go.html to see an example of how to use DeleteVolumeRequest. type DeleteVolumeRequest struct { // The OCID of the volume. VolumeId *string `mandatory:"true" contributesTo:"path" name:"volumeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/detach_boot_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_boot_volume_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/detach_boot_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_boot_volume_request_response.go index 3ce27f42d..716dd90a8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/detach_boot_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_boot_volume_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DetachBootVolumeRequest wrapper for the DetachBootVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachBootVolume.go.html to see an example of how to use DetachBootVolumeRequest. type DetachBootVolumeRequest struct { // The OCID of the boot volume attachment. BootVolumeAttachmentId *string `mandatory:"true" contributesTo:"path" name:"bootVolumeAttachmentId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_agent_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_details.go similarity index 55% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_agent_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_details.go index 56347e215..550196e13 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_agent_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,22 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// UpdateInstanceAgentConfigDetails Instance agent configuration options to choose for updating the instance -type UpdateInstanceAgentConfigDetails struct { +// DetachInstancePoolInstanceDetails Detach an instance from the pool. +type DetachInstancePoolInstanceDetails struct { - // Whether the agent running on the instance can gather performance metrics and monitor the instance. - IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + // The instance ocid to detach. + InstanceId *string `mandatory:"true" json:"instanceId"` - // Whether the agent running on the instance can run all the available management plugins - IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + // Decrement the size of the instance pool during detachment. + IsDecrementSize *bool `mandatory:"false" json:"isDecrementSize"` + + // Terminate the instance after it has been detached. + IsAutoTerminate *bool `mandatory:"false" json:"isAutoTerminate"` } -func (m UpdateInstanceAgentConfigDetails) String() string { +func (m DetachInstancePoolInstanceDetails) String() string { return common.PointerString(m) } diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_request_response.go new file mode 100644 index 000000000..7cbf4ab5a --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_instance_pool_instance_request_response.go @@ -0,0 +1,77 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// DetachInstancePoolInstanceRequest wrapper for the DetachInstancePoolInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachInstancePoolInstance.go.html to see an example of how to use DetachInstancePoolInstanceRequest. +type DetachInstancePoolInstanceRequest struct { + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. + InstancePoolId *string `mandatory:"true" contributesTo:"path" name:"instancePoolId"` + + // Instance being detached + DetachInstancePoolInstanceDetails `contributesTo:"body"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Unique Oracle-assigned identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request DetachInstancePoolInstanceRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request DetachInstancePoolInstanceRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request DetachInstancePoolInstanceRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// DetachInstancePoolInstanceResponse wrapper for the DetachInstancePoolInstance operation +type DetachInstancePoolInstanceResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` +} + +func (response DetachInstancePoolInstanceResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response DetachInstancePoolInstanceResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/detach_load_balancer_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_load_balancer_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/detach_load_balancer_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_load_balancer_details.go index df34d47b7..dcac460bf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/detach_load_balancer_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_load_balancer_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DetachLoadBalancerDetails Represents a load balancer that is to be detached from an instance pool. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/detach_load_balancer_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_load_balancer_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/detach_load_balancer_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_load_balancer_request_response.go index 5d458d27c..0b414f919 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/detach_load_balancer_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_load_balancer_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DetachLoadBalancerRequest wrapper for the DetachLoadBalancer operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachLoadBalancer.go.html to see an example of how to use DetachLoadBalancerRequest. type DetachLoadBalancerRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -26,7 +30,7 @@ type DetachLoadBalancerRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/detach_service_id_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_service_id_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/detach_service_id_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_service_id_request_response.go index aa2c3ff67..bcba9d7ca 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/detach_service_id_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_service_id_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DetachServiceIdRequest wrapper for the DetachServiceId operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachServiceId.go.html to see an example of how to use DetachServiceIdRequest. type DetachServiceIdRequest struct { - // The service gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceGatewayId *string `mandatory:"true" contributesTo:"path" name:"serviceGatewayId"` // ServiceId of Service to be detached from a service gateway. DetachServiceDetails ServiceIdRequestDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/detach_vnic_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_vnic_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/detach_vnic_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_vnic_request_response.go index 3fa7a9223..155099435 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/detach_vnic_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_vnic_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DetachVnicRequest wrapper for the DetachVnic operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachVnic.go.html to see an example of how to use DetachVnicRequest. type DetachVnicRequest struct { // The OCID of the VNIC attachment. VnicAttachmentId *string `mandatory:"true" contributesTo:"path" name:"vnicAttachmentId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/detach_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_volume_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/detach_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/detach_volume_request_response.go index 7113dd64a..046d412fc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/detach_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/detach_volume_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // DetachVolumeRequest wrapper for the DetachVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/DetachVolume.go.html to see an example of how to use DetachVolumeRequest. type DetachVolumeRequest struct { // The OCID of the volume attachment. VolumeAttachmentId *string `mandatory:"true" contributesTo:"path" name:"volumeAttachmentId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/device.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/device.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/device.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/device.go index 340653071..71774b91c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/device.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/device.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Device Device Path corresponding to the block devices attached to instances having a name and isAvailable flag. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_dns_option.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_dns_option.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/dhcp_dns_option.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_dns_option.go index 0f4937b68..22e874963 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_dns_option.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_dns_option.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,12 +15,12 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DhcpDnsOption DHCP option for specifying how DNS (hostname resolution) is handled in the subnets in the VCN. // For more information, see -// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). +// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). type DhcpDnsOption struct { // If you set `serverType` to `CustomDnsServer`, specify the @@ -37,7 +37,7 @@ type DhcpDnsOption struct { // The Internet and VCN Resolver also enables reverse DNS lookup, which lets // you determine the hostname corresponding to the private IP address. For more // information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // * **CustomDnsServer:** Instances use a DNS server of your choice (three // maximum). ServerType DhcpDnsOptionServerTypeEnum `mandatory:"true" json:"serverType"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_option.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_option.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/dhcp_option.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_option.go index a77171849..269741fb5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_option.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_option.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,14 +15,14 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DhcpOption A single DHCP option according to RFC 1533 (https://tools.ietf.org/html/rfc1533). // The two options available to use are DhcpDnsOption // and DhcpSearchDomainOption. For more -// information, see DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm) -// and DHCP Options (https://docs.cloud.oracle.com/Content/Network/Tasks/managingDHCP.htm). +// information, see DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm) +// and DHCP Options (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingDHCP.htm). type DhcpOption interface { } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_options.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/dhcp_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_options.go index 61134deaf..8e56d0150 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DhcpOptions A set of DHCP options. Used by the VCN to automatically provide configuration @@ -24,13 +24,11 @@ import ( // handled in the subnets in your VCN. // - DhcpSearchDomainOption: Lets you specify // a search domain name to use for DNS queries. -// For more information, see DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm) -// and DHCP Options (https://docs.cloud.oracle.com/Content/Network/Tasks/managingDHCP.htm). +// For more information, see DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm) +// and DHCP Options (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingDHCP.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type DhcpOptions struct { // The OCID of the compartment containing the set of DHCP options. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_search_domain_option.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_search_domain_option.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/dhcp_search_domain_option.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_search_domain_option.go index 5cd26819f..4f9b6c95d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/dhcp_search_domain_option.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/dhcp_search_domain_option.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,11 +15,11 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DhcpSearchDomainOption DHCP option for specifying a search domain name for DNS queries. For more information, see -// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). +// DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). type DhcpSearchDomainOption struct { // A single search domain name according to RFC 952 (https://tools.ietf.org/html/rfc952) diff --git a/vendor/github.com/oracle/oci-go-sdk/core/drg.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/drg.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/drg.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/drg.go index 4277792f1..da4a7e6a8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/drg.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/drg.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Drg A dynamic routing gateway (DRG), which is a virtual router that provides a path for private // network traffic between your VCN and your existing network. You use it with other Networking // Service components to create an IPSec VPN or a connection that uses // Oracle Cloud Infrastructure FastConnect. For more information, see -// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm). +// Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type Drg struct { // The OCID of the compartment containing the DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/drg_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/drg_attachment.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/drg_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/drg_attachment.go index 078fb5fbb..193a1c1d8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/drg_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/drg_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,11 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DrgAttachment A link between a DRG and VCN. For more information, see -// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm). type DrgAttachment struct { // The OCID of the compartment containing the DRG attachment. @@ -42,15 +40,15 @@ type DrgAttachment struct { // Avoid entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` - // The OCID of the route table the DRG attachment is using. - // For information about why you would associate a route table with a DRG attachment, see: - // * Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/Content/Network/Tasks/transitrouting.htm) - // * Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/Content/Network/Tasks/transitroutingoracleservices.htm) - RouteTableId *string `mandatory:"false" json:"routeTableId"` - // The date and time the DRG attachment was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` + + // The OCID of the route table the DRG attachment is using. + // For information about why you would associate a route table with a DRG attachment, see: + // * Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitrouting.htm) + // * Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm) + RouteTableId *string `mandatory:"false" json:"routeTableId"` } func (m DrgAttachment) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/drg_redundancy_status.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/drg_redundancy_status.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/drg_redundancy_status.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/drg_redundancy_status.go index b74edca97..d7baa0903 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/drg_redundancy_status.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/drg_redundancy_status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,11 +14,11 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // DrgRedundancyStatus The redundancy status of the DRG. For more information, see -// Redundancy Remedies (https://docs.cloud.oracle.com/Content/Network/Troubleshoot/drgredundancy.htm). +// Redundancy Remedies (https://docs.cloud.oracle.com/iaas/Content/Network/Troubleshoot/drgredundancy.htm). type DrgRedundancyStatus struct { // The OCID of the DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/egress_security_rule.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/egress_security_rule.go similarity index 75% rename from vendor/github.com/oracle/oci-go-sdk/core/egress_security_rule.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/egress_security_rule.go index 997da6464..da4db4eb4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/egress_security_rule.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/egress_security_rule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // EgressSecurityRule A rule for allowing outbound IP packets. @@ -25,7 +25,7 @@ type EgressSecurityRule struct { // Allowed values: // * IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security list rule for traffic destined for a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -45,15 +45,6 @@ type EgressSecurityRule struct { // particular `Service` through a service gateway). DestinationType EgressSecurityRuleDestinationTypeEnum `mandatory:"false" json:"destinationType,omitempty"` - // Optional and valid only for ICMP and ICMPv6. Use to specify a particular ICMP type and code - // as defined in: - // * ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) - // * ICMPv6 Parameters (https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml) - // If you specify ICMP or ICMPv6 as the protocol but omit this object, then all ICMP types and - // codes are allowed. If you do provide this object, the type is required and the code is optional. - // To enable MTU negotiation for ingress internet traffic via IPv4, make sure to allow type 3 ("Destination - // Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). If you need to specify - // multiple codes for a single type, create a separate security list rule for each. IcmpOptions *IcmpOptions `mandatory:"false" json:"icmpOptions"` // A stateless rule allows traffic in one direction. Remember to add a corresponding @@ -63,12 +54,8 @@ type EgressSecurityRule struct { // and a corresponding rule is not necessary for bidirectional traffic. IsStateless *bool `mandatory:"false" json:"isStateless"` - // Optional and valid only for TCP. Use to specify particular destination ports for TCP rules. - // If you specify TCP as the protocol but omit this object, then all destination ports are allowed. TcpOptions *TcpOptions `mandatory:"false" json:"tcpOptions"` - // Optional and valid only for UDP. Use to specify particular destination ports for UDP rules. - // If you specify UDP as the protocol but omit this object, then all destination ports are allowed. UdpOptions *UdpOptions `mandatory:"false" json:"udpOptions"` // An optional description of your choice for the rule. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/emulated_volume_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/emulated_volume_attachment.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/emulated_volume_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/emulated_volume_attachment.go index 429644f8a..50feaac05 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/emulated_volume_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/emulated_volume_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // EmulatedVolumeAttachment An Emulated volume attachment. @@ -52,7 +52,10 @@ type EmulatedVolumeAttachment struct { // Whether the attachment was created in read-only mode. IsReadOnly *bool `mandatory:"false" json:"isReadOnly"` - // Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified. + // Whether the attachment should be created in shareable mode. If an attachment + // is created in shareable mode, then other instances can attach the same volume, provided + // that they also create their attachments in shareable mode. Only certain volume types can + // be attached in shareable mode. Defaults to false if not specified. IsShareable *bool `mandatory:"false" json:"isShareable"` // Whether in-transit encryption for the data volume's paravirtualized attachment is enabled or not. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_agent_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/encryption_domain_config.go similarity index 57% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_agent_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/encryption_domain_config.go index 3e9b28e6e..6ea726811 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_agent_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/encryption_domain_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,19 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// InstanceAgentConfig Instance agent configuration on the instance -type InstanceAgentConfig struct { +// EncryptionDomainConfig Configuration information used by the encryption domain policy. +type EncryptionDomainConfig struct { - // Whether the agent running on the instance can gather performance metrics and monitor the instance. - IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + // Lists IPv4 or IPv6-enabled subnets in your Oracle tenancy. + OracleTrafficSelector []string `mandatory:"false" json:"oracleTrafficSelector"` - // Whether the agent running on the instance can run all the available management plugins. - IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + // Lists IPv4 or IPv6-enabled subnets in your on-premises network. + CpeTrafficSelector []string `mandatory:"false" json:"cpeTrafficSelector"` } -func (m InstanceAgentConfig) String() string { +func (m EncryptionDomainConfig) String() string { return common.PointerString(m) } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/enum_integer_image_capability_descriptor.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/enum_integer_image_capability_descriptor.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/enum_integer_image_capability_descriptor.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/enum_integer_image_capability_descriptor.go index 401de3902..39736847f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/enum_integer_image_capability_descriptor.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/enum_integer_image_capability_descriptor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // EnumIntegerImageCapabilityDescriptor Enum Integer type CapabilityDescriptor diff --git a/vendor/github.com/oracle/oci-go-sdk/core/enum_string_image_capability_schema_descriptor.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/enum_string_image_capability_schema_descriptor.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/enum_string_image_capability_schema_descriptor.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/enum_string_image_capability_schema_descriptor.go index 6e69a0db9..4481aab1c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/enum_string_image_capability_schema_descriptor.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/enum_string_image_capability_schema_descriptor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // EnumStringImageCapabilitySchemaDescriptor Enum String type of ImageCapabilitySchemaDescriptor diff --git a/vendor/github.com/oracle/oci-go-sdk/core/export_image_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_details.go similarity index 54% rename from vendor/github.com/oracle/oci-go-sdk/core/export_image_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_details.go index 8391ceed8..937647649 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/export_image_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ExportImageDetails The destination details for the image export. @@ -26,11 +26,15 @@ import ( // use ExportImageViaObjectStorageUriDetails // when specifying the Object Storage URL. type ExportImageDetails interface { + + // The format of the image to be exported. The default value is "OCI". + GetExportFormat() ExportImageDetailsExportFormatEnum } type exportimagedetails struct { JsonData []byte - DestinationType string `json:"destinationType"` + ExportFormat ExportImageDetailsExportFormatEnum `mandatory:"false" json:"exportFormat,omitempty"` + DestinationType string `json:"destinationType"` } // UnmarshalJSON unmarshals json @@ -44,6 +48,7 @@ func (m *exportimagedetails) UnmarshalJSON(data []byte) error { if err != nil { return err } + m.ExportFormat = s.Model.ExportFormat m.DestinationType = s.Model.DestinationType return err @@ -71,6 +76,40 @@ func (m *exportimagedetails) UnmarshalPolymorphicJSON(data []byte) (interface{}, } } +//GetExportFormat returns ExportFormat +func (m exportimagedetails) GetExportFormat() ExportImageDetailsExportFormatEnum { + return m.ExportFormat +} + func (m exportimagedetails) String() string { return common.PointerString(m) } + +// ExportImageDetailsExportFormatEnum Enum with underlying type: string +type ExportImageDetailsExportFormatEnum string + +// Set of constants representing the allowable values for ExportImageDetailsExportFormatEnum +const ( + ExportImageDetailsExportFormatQcow2 ExportImageDetailsExportFormatEnum = "QCOW2" + ExportImageDetailsExportFormatVmdk ExportImageDetailsExportFormatEnum = "VMDK" + ExportImageDetailsExportFormatOci ExportImageDetailsExportFormatEnum = "OCI" + ExportImageDetailsExportFormatVhd ExportImageDetailsExportFormatEnum = "VHD" + ExportImageDetailsExportFormatVdi ExportImageDetailsExportFormatEnum = "VDI" +) + +var mappingExportImageDetailsExportFormat = map[string]ExportImageDetailsExportFormatEnum{ + "QCOW2": ExportImageDetailsExportFormatQcow2, + "VMDK": ExportImageDetailsExportFormatVmdk, + "OCI": ExportImageDetailsExportFormatOci, + "VHD": ExportImageDetailsExportFormatVhd, + "VDI": ExportImageDetailsExportFormatVdi, +} + +// GetExportImageDetailsExportFormatEnumValues Enumerates the set of values for ExportImageDetailsExportFormatEnum +func GetExportImageDetailsExportFormatEnumValues() []ExportImageDetailsExportFormatEnum { + values := make([]ExportImageDetailsExportFormatEnum, 0) + for _, v := range mappingExportImageDetailsExportFormat { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/export_image_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/export_image_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_request_response.go index 609ac3470..7979ca2b4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/export_image_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ExportImageRequest wrapper for the ExportImage operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ExportImage.go.html to see an example of how to use ExportImageRequest. type ExportImageRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. @@ -26,7 +30,7 @@ type ExportImageRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/export_image_via_object_storage_tuple_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_via_object_storage_tuple_details.go similarity index 80% rename from vendor/github.com/oracle/oci-go-sdk/core/export_image_via_object_storage_tuple_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_via_object_storage_tuple_details.go index 0cbff3e18..91ca33327 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/export_image_via_object_storage_tuple_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_via_object_storage_tuple_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ExportImageViaObjectStorageTupleDetails The representation of ExportImageViaObjectStorageTupleDetails @@ -29,6 +29,14 @@ type ExportImageViaObjectStorageTupleDetails struct { // The Object Storage object name for the exported image. ObjectName *string `mandatory:"true" json:"objectName"` + + // The format of the image to be exported. The default value is "OCI". + ExportFormat ExportImageDetailsExportFormatEnum `mandatory:"false" json:"exportFormat,omitempty"` +} + +//GetExportFormat returns ExportFormat +func (m ExportImageViaObjectStorageTupleDetails) GetExportFormat() ExportImageDetailsExportFormatEnum { + return m.ExportFormat } func (m ExportImageViaObjectStorageTupleDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/export_image_via_object_storage_uri_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_via_object_storage_uri_details.go similarity index 69% rename from vendor/github.com/oracle/oci-go-sdk/core/export_image_via_object_storage_uri_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_via_object_storage_uri_details.go index 901cb275d..ff90f6e7b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/export_image_via_object_storage_uri_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/export_image_via_object_storage_uri_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,15 +15,25 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ExportImageViaObjectStorageUriDetails The representation of ExportImageViaObjectStorageUriDetails type ExportImageViaObjectStorageUriDetails struct { - // The Object Storage URL to export the image to. See Object Storage URLs (https://docs.cloud.oracle.com/Content/Compute/Tasks/imageimportexport.htm#URLs) - // and Using Pre-Authenticated Requests (https://docs.cloud.oracle.com/Content/Object/Tasks/usingpreauthenticatedrequests.htm) for constructing URLs for image import/export. + // The Object Storage URL to export the image to. See Object + // Storage URLs (https://docs.cloud.oracle.com/Content/Compute/Tasks/imageimportexport.htm#URLs) + // and Using Pre-Authenticated Requests (https://docs.cloud.oracle.com/Content/Object/Tasks/usingpreauthenticatedrequests.htm) + // for constructing URLs for image import/export. DestinationUri *string `mandatory:"true" json:"destinationUri"` + + // The format of the image to be exported. The default value is "OCI". + ExportFormat ExportImageDetailsExportFormatEnum `mandatory:"false" json:"exportFormat,omitempty"` +} + +//GetExportFormat returns ExportFormat +func (m ExportImageViaObjectStorageUriDetails) GetExportFormat() ExportImageDetailsExportFormatEnum { + return m.ExportFormat } func (m ExportImageViaObjectStorageUriDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/fast_connect_provider_service.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/fast_connect_provider_service.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/core/fast_connect_provider_service.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/fast_connect_provider_service.go index e8ae506aa..123d4c505 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/fast_connect_provider_service.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/fast_connect_provider_service.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,11 +14,11 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // FastConnectProviderService A service offering from a supported provider. For more information, -// see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). type FastConnectProviderService struct { // The OCID of the service offered by the provider. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/fast_connect_provider_service_key.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/fast_connect_provider_service_key.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/fast_connect_provider_service_key.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/fast_connect_provider_service_key.go index 89590305d..ff2d6f966 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/fast_connect_provider_service_key.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/fast_connect_provider_service_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // FastConnectProviderServiceKey A provider service key and its details. A provider service key is an identifier for a provider's @@ -27,7 +27,7 @@ type FastConnectProviderServiceKey struct { // GetFastConnectProviderServiceKey. Name *string `mandatory:"true" json:"name"` - // The provisioned data rate of the connection. To get a list of the + // The provisioned data rate of the connection. To get a list of the // available bandwidth levels (that is, shapes), see // ListFastConnectProviderVirtualCircuitBandwidthShapes. // Example: `10 Gbps` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_agreements_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_agreements_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_agreements_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_agreements_request_response.go index ae8ab8588..411652061 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_agreements_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_agreements_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetAppCatalogListingAgreementsRequest wrapper for the GetAppCatalogListingAgreements operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetAppCatalogListingAgreements.go.html to see an example of how to use GetAppCatalogListingAgreementsRequest. type GetAppCatalogListingAgreementsRequest struct { // The OCID of the listing. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_request_response.go index ae8b502ed..df5ad8323 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetAppCatalogListingRequest wrapper for the GetAppCatalogListing operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetAppCatalogListing.go.html to see an example of how to use GetAppCatalogListingRequest. type GetAppCatalogListingRequest struct { // The OCID of the listing. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_resource_version_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_resource_version_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_resource_version_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_resource_version_request_response.go index a963ec0a7..797243a76 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_app_catalog_listing_resource_version_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_app_catalog_listing_resource_version_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetAppCatalogListingResourceVersionRequest wrapper for the GetAppCatalogListingResourceVersion operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetAppCatalogListingResourceVersion.go.html to see an example of how to use GetAppCatalogListingResourceVersionRequest. type GetAppCatalogListingResourceVersionRequest struct { // The OCID of the listing. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_attachment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_attachment_request_response.go index 5dfec3ea3..47aef4b9e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetBootVolumeAttachmentRequest wrapper for the GetBootVolumeAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolumeAttachment.go.html to see an example of how to use GetBootVolumeAttachmentRequest. type GetBootVolumeAttachmentRequest struct { // The OCID of the boot volume attachment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_backup_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_backup_request_response.go index ec5e7de12..8074f8320 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetBootVolumeBackupRequest wrapper for the GetBootVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolumeBackup.go.html to see an example of how to use GetBootVolumeBackupRequest. type GetBootVolumeBackupRequest struct { // The OCID of the boot volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_kms_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_kms_key_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_kms_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_kms_key_request_response.go index fbdf3c727..bf8535723 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_kms_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_kms_key_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetBootVolumeKmsKeyRequest wrapper for the GetBootVolumeKmsKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolumeKmsKey.go.html to see an example of how to use GetBootVolumeKmsKeyRequest. type GetBootVolumeKmsKeyRequest struct { // The OCID of the boot volume. BootVolumeId *string `mandatory:"true" contributesTo:"path" name:"bootVolumeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_request_response.go index 09a36a295..3c7c2df88 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_boot_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_boot_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetBootVolumeRequest wrapper for the GetBootVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetBootVolume.go.html to see an example of how to use GetBootVolumeRequest. type GetBootVolumeRequest struct { // The OCID of the boot volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/get_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_byoip_range_request_response.go new file mode 100644 index 000000000..fda02dd99 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_byoip_range_request_response.go @@ -0,0 +1,69 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// GetByoipRangeRequest wrapper for the GetByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetByoipRange.go.html to see an example of how to use GetByoipRangeRequest. +type GetByoipRangeRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request GetByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request GetByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request GetByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// GetByoipRangeResponse wrapper for the GetByoipRange operation +type GetByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The ByoipRange instance + ByoipRange `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response GetByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response GetByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cluster_network_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cluster_network_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cluster_network_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cluster_network_request_response.go index d9c08e2f9..cf4e2095d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cluster_network_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cluster_network_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetClusterNetworkRequest wrapper for the GetClusterNetwork operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetClusterNetwork.go.html to see an example of how to use GetClusterNetworkRequest. type GetClusterNetworkRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster network. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_compute_global_image_capability_schema_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_global_image_capability_schema_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_compute_global_image_capability_schema_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_global_image_capability_schema_request_response.go index 992840a24..d85c3ba44 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_compute_global_image_capability_schema_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_global_image_capability_schema_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetComputeGlobalImageCapabilitySchemaRequest wrapper for the GetComputeGlobalImageCapabilitySchema operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetComputeGlobalImageCapabilitySchema.go.html to see an example of how to use GetComputeGlobalImageCapabilitySchemaRequest. type GetComputeGlobalImageCapabilitySchemaRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compute global image capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_compute_global_image_capability_schema_version_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_global_image_capability_schema_version_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_compute_global_image_capability_schema_version_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_global_image_capability_schema_version_request_response.go index d5082d257..b0c9146d7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_compute_global_image_capability_schema_version_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_global_image_capability_schema_version_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetComputeGlobalImageCapabilitySchemaVersionRequest wrapper for the GetComputeGlobalImageCapabilitySchemaVersion operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetComputeGlobalImageCapabilitySchemaVersion.go.html to see an example of how to use GetComputeGlobalImageCapabilitySchemaVersionRequest. type GetComputeGlobalImageCapabilitySchemaVersionRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compute global image capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_compute_image_capability_schema_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_image_capability_schema_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_compute_image_capability_schema_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_image_capability_schema_request_response.go index a3820d4d6..9804d1026 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_compute_image_capability_schema_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_compute_image_capability_schema_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetComputeImageCapabilitySchemaRequest wrapper for the GetComputeImageCapabilitySchema operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetComputeImageCapabilitySchema.go.html to see an example of how to use GetComputeImageCapabilitySchemaRequest. type GetComputeImageCapabilitySchemaRequest struct { // The id of the compute image capability schema or the image ocid diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_console_history_content_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_console_history_content_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/get_console_history_content_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_console_history_content_request_response.go index 4a79cf634..71ac320cc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_console_history_content_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_console_history_content_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetConsoleHistoryContentRequest wrapper for the GetConsoleHistoryContent operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetConsoleHistoryContent.go.html to see an example of how to use GetConsoleHistoryContentRequest. type GetConsoleHistoryContentRequest struct { // The OCID of the console history. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_console_history_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_console_history_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_console_history_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_console_history_request_response.go index 40df0dab9..969c74e27 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_console_history_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_console_history_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetConsoleHistoryRequest wrapper for the GetConsoleHistory operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetConsoleHistory.go.html to see an example of how to use GetConsoleHistoryRequest. type GetConsoleHistoryRequest struct { // The OCID of the console history. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cpe_device_config_content_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_device_config_content_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cpe_device_config_content_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_device_config_content_request_response.go index aa63f1d04..945f40f1f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cpe_device_config_content_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_device_config_content_request_response.go @@ -1,16 +1,20 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "io" "net/http" ) // GetCpeDeviceConfigContentRequest wrapper for the GetCpeDeviceConfigContent operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCpeDeviceConfigContent.go.html to see an example of how to use GetCpeDeviceConfigContentRequest. type GetCpeDeviceConfigContentRequest struct { // The OCID of the CPE. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cpe_device_shape_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_device_shape_request_response.go similarity index 84% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cpe_device_shape_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_device_shape_request_response.go index 3ebe8d681..84d8906c5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cpe_device_shape_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_device_shape_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetCpeDeviceShapeRequest wrapper for the GetCpeDeviceShape operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCpeDeviceShape.go.html to see an example of how to use GetCpeDeviceShapeRequest. type GetCpeDeviceShapeRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the CPE device shape. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the CPE device shape. CpeDeviceShapeId *string `mandatory:"true" contributesTo:"path" name:"cpeDeviceShapeId"` // Unique identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cpe_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cpe_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_request_response.go index 96cc60df8..418942b58 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cpe_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cpe_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetCpeRequest wrapper for the GetCpe operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCpe.go.html to see an example of how to use GetCpeRequest. type GetCpeRequest struct { // The OCID of the CPE. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_group_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_group_request_response.go index 34799f4af..f8252789a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetCrossConnectGroupRequest wrapper for the GetCrossConnectGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnectGroup.go.html to see an example of how to use GetCrossConnectGroupRequest. type GetCrossConnectGroupRequest struct { // The OCID of the cross-connect group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_letter_of_authority_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_letter_of_authority_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_letter_of_authority_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_letter_of_authority_request_response.go index 988bd1fe6..cec55c1d0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_letter_of_authority_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_letter_of_authority_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetCrossConnectLetterOfAuthorityRequest wrapper for the GetCrossConnectLetterOfAuthority operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnectLetterOfAuthority.go.html to see an example of how to use GetCrossConnectLetterOfAuthorityRequest. type GetCrossConnectLetterOfAuthorityRequest struct { // The OCID of the cross-connect. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_request_response.go index 3a7db32f1..49336ddac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetCrossConnectRequest wrapper for the GetCrossConnect operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnect.go.html to see an example of how to use GetCrossConnectRequest. type GetCrossConnectRequest struct { // The OCID of the cross-connect. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_status_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_status_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_status_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_status_request_response.go index e09d45223..44ed593c4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_cross_connect_status_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_cross_connect_status_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetCrossConnectStatusRequest wrapper for the GetCrossConnectStatus operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetCrossConnectStatus.go.html to see an example of how to use GetCrossConnectStatusRequest. type GetCrossConnectStatusRequest struct { // The OCID of the cross-connect. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_dedicated_vm_host_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_dedicated_vm_host_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_dedicated_vm_host_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_dedicated_vm_host_request_response.go index 0e8019bba..30c24105b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_dedicated_vm_host_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_dedicated_vm_host_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetDedicatedVmHostRequest wrapper for the GetDedicatedVmHost operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDedicatedVmHost.go.html to see an example of how to use GetDedicatedVmHostRequest. type GetDedicatedVmHostRequest struct { // The OCID of the dedicated VM host. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_dhcp_options_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_dhcp_options_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_dhcp_options_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_dhcp_options_request_response.go index 4ee5d0b59..577cf23b9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_dhcp_options_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_dhcp_options_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetDhcpOptionsRequest wrapper for the GetDhcpOptions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDhcpOptions.go.html to see an example of how to use GetDhcpOptionsRequest. type GetDhcpOptionsRequest struct { // The OCID for the set of DHCP options. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_drg_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_attachment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_drg_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_attachment_request_response.go index 5e8056f84..5b80f13b4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_drg_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetDrgAttachmentRequest wrapper for the GetDrgAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDrgAttachment.go.html to see an example of how to use GetDrgAttachmentRequest. type GetDrgAttachmentRequest struct { // The OCID of the DRG attachment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_drg_redundancy_status_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_redundancy_status_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_drg_redundancy_status_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_redundancy_status_request_response.go index 79834f76c..11819b185 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_drg_redundancy_status_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_redundancy_status_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetDrgRedundancyStatusRequest wrapper for the GetDrgRedundancyStatus operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDrgRedundancyStatus.go.html to see an example of how to use GetDrgRedundancyStatusRequest. type GetDrgRedundancyStatusRequest struct { // The OCID of the DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_drg_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_drg_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_request_response.go index 820cefcd9..a0da37139 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_drg_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_drg_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetDrgRequest wrapper for the GetDrg operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetDrg.go.html to see an example of how to use GetDrgRequest. type GetDrgRequest struct { // The OCID of the DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_fast_connect_provider_service_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_fast_connect_provider_service_key_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/get_fast_connect_provider_service_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_fast_connect_provider_service_key_request_response.go index 00542af84..554deb088 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_fast_connect_provider_service_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_fast_connect_provider_service_key_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetFastConnectProviderServiceKeyRequest wrapper for the GetFastConnectProviderServiceKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetFastConnectProviderServiceKey.go.html to see an example of how to use GetFastConnectProviderServiceKeyRequest. type GetFastConnectProviderServiceKeyRequest struct { // The OCID of the provider service. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_fast_connect_provider_service_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_fast_connect_provider_service_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_fast_connect_provider_service_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_fast_connect_provider_service_request_response.go index 9ffe9d531..35d3eeb9c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_fast_connect_provider_service_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_fast_connect_provider_service_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetFastConnectProviderServiceRequest wrapper for the GetFastConnectProviderService operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetFastConnectProviderService.go.html to see an example of how to use GetFastConnectProviderServiceRequest. type GetFastConnectProviderServiceRequest struct { // The OCID of the provider service. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_device_config_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_device_config_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_device_config_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_device_config_request_response.go index 1fb668912..e81a914ae 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_device_config_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_device_config_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetIPSecConnectionDeviceConfigRequest wrapper for the GetIPSecConnectionDeviceConfig operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionDeviceConfig.go.html to see an example of how to use GetIPSecConnectionDeviceConfigRequest. type GetIPSecConnectionDeviceConfigRequest struct { // The OCID of the IPSec connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_device_status_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_device_status_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_device_status_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_device_status_request_response.go index 9d7546cc8..2a6df6165 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_device_status_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_device_status_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetIPSecConnectionDeviceStatusRequest wrapper for the GetIPSecConnectionDeviceStatus operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionDeviceStatus.go.html to see an example of how to use GetIPSecConnectionDeviceStatusRequest. type GetIPSecConnectionDeviceStatusRequest struct { // The OCID of the IPSec connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_request_response.go index aa2060997..4dbe91629 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetIPSecConnectionRequest wrapper for the GetIPSecConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnection.go.html to see an example of how to use GetIPSecConnectionRequest. type GetIPSecConnectionRequest struct { // The OCID of the IPSec connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_tunnel_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_tunnel_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_tunnel_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_tunnel_request_response.go index 3f0d70f24..bba9ec375 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_tunnel_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_tunnel_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetIPSecConnectionTunnelRequest wrapper for the GetIPSecConnectionTunnel operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionTunnel.go.html to see an example of how to use GetIPSecConnectionTunnelRequest. type GetIPSecConnectionTunnelRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go index 6d763e8ec..c4248727c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_i_p_sec_connection_tunnel_shared_secret_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetIPSecConnectionTunnelSharedSecretRequest wrapper for the GetIPSecConnectionTunnelSharedSecret operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIPSecConnectionTunnelSharedSecret.go.html to see an example of how to use GetIPSecConnectionTunnelSharedSecretRequest. type GetIPSecConnectionTunnelSharedSecretRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_image_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_image_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_image_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_image_request_response.go index f5859a2ed..939a55e6c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_image_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_image_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetImageRequest wrapper for the GetImage operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetImage.go.html to see an example of how to use GetImageRequest. type GetImageRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_image_shape_compatibility_entry_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_image_shape_compatibility_entry_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_image_shape_compatibility_entry_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_image_shape_compatibility_entry_request_response.go index a020c7bc5..f062d4420 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_image_shape_compatibility_entry_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_image_shape_compatibility_entry_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetImageShapeCompatibilityEntryRequest wrapper for the GetImageShapeCompatibilityEntry operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetImageShapeCompatibilityEntry.go.html to see an example of how to use GetImageShapeCompatibilityEntryRequest. type GetImageShapeCompatibilityEntryRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_configuration_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_configuration_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_instance_configuration_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_configuration_request_response.go index 98b263ba2..10f594eeb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_configuration_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_configuration_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetInstanceConfigurationRequest wrapper for the GetInstanceConfiguration operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstanceConfiguration.go.html to see an example of how to use GetInstanceConfigurationRequest. type GetInstanceConfigurationRequest struct { // The OCID of the instance configuration. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_console_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_console_connection_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_instance_console_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_console_connection_request_response.go index ef425dba0..718afdf7e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_console_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_console_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetInstanceConsoleConnectionRequest wrapper for the GetInstanceConsoleConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstanceConsoleConnection.go.html to see an example of how to use GetInstanceConsoleConnectionRequest. type GetInstanceConsoleConnectionRequest struct { // The OCID of the instance console connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_instance_request_response.go new file mode 100644 index 000000000..b8e2fd786 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_instance_request_response.go @@ -0,0 +1,72 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// GetInstancePoolInstanceRequest wrapper for the GetInstancePoolInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstancePoolInstance.go.html to see an example of how to use GetInstancePoolInstanceRequest. +type GetInstancePoolInstanceRequest struct { + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. + InstancePoolId *string `mandatory:"true" contributesTo:"path" name:"instancePoolId"` + + // The OCID of the instance. + InstanceId *string `mandatory:"true" contributesTo:"path" name:"instanceId"` + + // Unique Oracle-assigned identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request GetInstancePoolInstanceRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request GetInstancePoolInstanceRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request GetInstancePoolInstanceRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// GetInstancePoolInstanceResponse wrapper for the GetInstancePoolInstance operation +type GetInstancePoolInstanceResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The InstancePoolInstance instance + InstancePoolInstance `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response GetInstancePoolInstanceResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response GetInstancePoolInstanceResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_pool_load_balancer_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_load_balancer_attachment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_instance_pool_load_balancer_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_load_balancer_attachment_request_response.go index c9ed8fa16..92b74c136 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_pool_load_balancer_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_load_balancer_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetInstancePoolLoadBalancerAttachmentRequest wrapper for the GetInstancePoolLoadBalancerAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstancePoolLoadBalancerAttachment.go.html to see an example of how to use GetInstancePoolLoadBalancerAttachmentRequest. type GetInstancePoolLoadBalancerAttachmentRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_request_response.go index 770abcf98..d7afec480 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetInstancePoolRequest wrapper for the GetInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstancePool.go.html to see an example of how to use GetInstancePoolRequest. type GetInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_instance_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_request_response.go index d6f392a09..3fbcdcc68 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_instance_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_instance_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetInstanceRequest wrapper for the GetInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInstance.go.html to see an example of how to use GetInstanceRequest. type GetInstanceRequest struct { // The OCID of the instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_internet_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_internet_gateway_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_internet_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_internet_gateway_request_response.go index 56bfc8b12..67734b5cc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_internet_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_internet_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetInternetGatewayRequest wrapper for the GetInternetGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetInternetGateway.go.html to see an example of how to use GetInternetGatewayRequest. type GetInternetGatewayRequest struct { // The OCID of the internet gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_ipsec_cpe_device_config_content_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_ipsec_cpe_device_config_content_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_ipsec_cpe_device_config_content_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_ipsec_cpe_device_config_content_request_response.go index c709cd229..f757b2ef1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_ipsec_cpe_device_config_content_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_ipsec_cpe_device_config_content_request_response.go @@ -1,16 +1,20 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "io" "net/http" ) // GetIpsecCpeDeviceConfigContentRequest wrapper for the GetIpsecCpeDeviceConfigContent operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIpsecCpeDeviceConfigContent.go.html to see an example of how to use GetIpsecCpeDeviceConfigContentRequest. type GetIpsecCpeDeviceConfigContentRequest struct { // The OCID of the IPSec connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_ipv6_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_ipv6_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_ipv6_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_ipv6_request_response.go index 720f53250..3c0c54d38 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_ipv6_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_ipv6_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetIpv6Request wrapper for the GetIpv6 operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetIpv6.go.html to see an example of how to use GetIpv6Request. type GetIpv6Request struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the IPv6. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the IPv6. Ipv6Id *string `mandatory:"true" contributesTo:"path" name:"ipv6Id"` // Unique identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_local_peering_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_local_peering_gateway_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_local_peering_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_local_peering_gateway_request_response.go index 30aa1f9e2..fbf2986ef 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_local_peering_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_local_peering_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetLocalPeeringGatewayRequest wrapper for the GetLocalPeeringGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetLocalPeeringGateway.go.html to see an example of how to use GetLocalPeeringGatewayRequest. type GetLocalPeeringGatewayRequest struct { // The OCID of the local peering gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_nat_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_nat_gateway_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_nat_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_nat_gateway_request_response.go index 15721c644..b7d86d8f4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_nat_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_nat_gateway_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetNatGatewayRequest wrapper for the GetNatGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetNatGateway.go.html to see an example of how to use GetNatGatewayRequest. type GetNatGatewayRequest struct { - // The NAT gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The NAT gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). NatGatewayId *string `mandatory:"true" contributesTo:"path" name:"natGatewayId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_network_security_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_network_security_group_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_network_security_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_network_security_group_request_response.go index 9687822bb..76f9bb41d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_network_security_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_network_security_group_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetNetworkSecurityGroupRequest wrapper for the GetNetworkSecurityGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetNetworkSecurityGroup.go.html to see an example of how to use GetNetworkSecurityGroupRequest. type GetNetworkSecurityGroupRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_private_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_private_ip_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_private_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_private_ip_request_response.go index 156cb7f3e..f524405d0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_private_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_private_ip_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetPrivateIpRequest wrapper for the GetPrivateIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPrivateIp.go.html to see an example of how to use GetPrivateIpRequest. type GetPrivateIpRequest struct { // The OCID of the private IP. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_ip_address_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_ip_address_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_ip_address_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_ip_address_details.go index 7deda5d2d..47b80b97b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_ip_address_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_ip_address_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // GetPublicIpByIpAddressDetails IP address of the public IP. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_ip_address_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_ip_address_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_ip_address_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_ip_address_request_response.go index de7daeed9..a742f34a5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_ip_address_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_ip_address_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetPublicIpByIpAddressRequest wrapper for the GetPublicIpByIpAddress operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIpByIpAddress.go.html to see an example of how to use GetPublicIpByIpAddressRequest. type GetPublicIpByIpAddressRequest struct { // IP address details for fetching the public IP. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_private_ip_id_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_private_ip_id_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_private_ip_id_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_private_ip_id_details.go index 79b8cc30b..77a5f4a25 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_private_ip_id_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_private_ip_id_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // GetPublicIpByPrivateIpIdDetails Details of the private IP that the public IP is assigned to. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_private_ip_id_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_private_ip_id_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_private_ip_id_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_private_ip_id_request_response.go index b20db8484..1f8ee94f2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_by_private_ip_id_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_by_private_ip_id_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetPublicIpByPrivateIpIdRequest wrapper for the GetPublicIpByPrivateIpId operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIpByPrivateIpId.go.html to see an example of how to use GetPublicIpByPrivateIpIdRequest. type GetPublicIpByPrivateIpIdRequest struct { // Private IP details for fetching the public IP. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_pool_request_response.go new file mode 100644 index 000000000..fb7b3dc91 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_pool_request_response.go @@ -0,0 +1,69 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// GetPublicIpPoolRequest wrapper for the GetPublicIpPool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIpPool.go.html to see an example of how to use GetPublicIpPoolRequest. +type GetPublicIpPoolRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"true" contributesTo:"path" name:"publicIpPoolId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request GetPublicIpPoolRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request GetPublicIpPoolRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request GetPublicIpPoolRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// GetPublicIpPoolResponse wrapper for the GetPublicIpPool operation +type GetPublicIpPoolResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The PublicIpPool instance + PublicIpPool `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response GetPublicIpPoolResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response GetPublicIpPoolResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_request_response.go index 344aa1213..80c5fd066 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_public_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_public_ip_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetPublicIpRequest wrapper for the GetPublicIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetPublicIp.go.html to see an example of how to use GetPublicIpRequest. type GetPublicIpRequest struct { // The OCID of the public IP. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_remote_peering_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_remote_peering_connection_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_remote_peering_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_remote_peering_connection_request_response.go index b31dc2052..f18529c51 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_remote_peering_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_remote_peering_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetRemotePeeringConnectionRequest wrapper for the GetRemotePeeringConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetRemotePeeringConnection.go.html to see an example of how to use GetRemotePeeringConnectionRequest. type GetRemotePeeringConnectionRequest struct { // The OCID of the remote peering connection (RPC). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_route_table_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_route_table_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_route_table_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_route_table_request_response.go index eefb37df6..94157bf55 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_route_table_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_route_table_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetRouteTableRequest wrapper for the GetRouteTable operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetRouteTable.go.html to see an example of how to use GetRouteTableRequest. type GetRouteTableRequest struct { // The OCID of the route table. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_security_list_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_security_list_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_security_list_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_security_list_request_response.go index 8a6764179..c1a9c8140 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_security_list_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_security_list_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetSecurityListRequest wrapper for the GetSecurityList operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetSecurityList.go.html to see an example of how to use GetSecurityListRequest. type GetSecurityListRequest struct { // The OCID of the security list. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_service_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_service_gateway_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_service_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_service_gateway_request_response.go index a2149ae80..e4c634803 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_service_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_service_gateway_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetServiceGatewayRequest wrapper for the GetServiceGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetServiceGateway.go.html to see an example of how to use GetServiceGatewayRequest. type GetServiceGatewayRequest struct { - // The service gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceGatewayId *string `mandatory:"true" contributesTo:"path" name:"serviceGatewayId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_service_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_service_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_service_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_service_request_response.go index baeb51bdc..109a98bd4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_service_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_service_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetServiceRequest wrapper for the GetService operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetService.go.html to see an example of how to use GetServiceRequest. type GetServiceRequest struct { - // The service's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceId *string `mandatory:"true" contributesTo:"path" name:"serviceId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_subnet_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_subnet_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_subnet_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_subnet_request_response.go index f7d6291aa..ea08f2354 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_subnet_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_subnet_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetSubnetRequest wrapper for the GetSubnet operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetSubnet.go.html to see an example of how to use GetSubnetRequest. type GetSubnetRequest struct { // The OCID of the subnet. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_tunnel_cpe_device_config_content_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_tunnel_cpe_device_config_content_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_tunnel_cpe_device_config_content_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_tunnel_cpe_device_config_content_request_response.go index 51d5debce..f61c0b533 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_tunnel_cpe_device_config_content_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_tunnel_cpe_device_config_content_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "io" "net/http" ) // GetTunnelCpeDeviceConfigContentRequest wrapper for the GetTunnelCpeDeviceConfigContent operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetTunnelCpeDeviceConfigContent.go.html to see an example of how to use GetTunnelCpeDeviceConfigContentRequest. type GetTunnelCpeDeviceConfigContentRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Unique identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_tunnel_cpe_device_config_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_tunnel_cpe_device_config_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/get_tunnel_cpe_device_config_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_tunnel_cpe_device_config_request_response.go index 407d4173d..3422faa1a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_tunnel_cpe_device_config_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_tunnel_cpe_device_config_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetTunnelCpeDeviceConfigRequest wrapper for the GetTunnelCpeDeviceConfig operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetTunnelCpeDeviceConfig.go.html to see an example of how to use GetTunnelCpeDeviceConfigRequest. type GetTunnelCpeDeviceConfigRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Unique identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_dns_resolver_association_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_dns_resolver_association_request_response.go new file mode 100644 index 000000000..fb4c58411 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_dns_resolver_association_request_response.go @@ -0,0 +1,69 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// GetVcnDnsResolverAssociationRequest wrapper for the GetVcnDnsResolverAssociation operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVcnDnsResolverAssociation.go.html to see an example of how to use GetVcnDnsResolverAssociationRequest. +type GetVcnDnsResolverAssociationRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. + VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request GetVcnDnsResolverAssociationRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request GetVcnDnsResolverAssociationRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request GetVcnDnsResolverAssociationRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// GetVcnDnsResolverAssociationResponse wrapper for the GetVcnDnsResolverAssociation operation +type GetVcnDnsResolverAssociationResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The VcnDnsResolverAssociation instance + VcnDnsResolverAssociation `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response GetVcnDnsResolverAssociationResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response GetVcnDnsResolverAssociationResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_vcn_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_vcn_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_request_response.go index c6dabbc65..6b2f34a1a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_vcn_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vcn_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVcnRequest wrapper for the GetVcn operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVcn.go.html to see an example of how to use GetVcnRequest. type GetVcnRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_virtual_circuit_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_virtual_circuit_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_virtual_circuit_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_virtual_circuit_request_response.go index 96cf12cd2..311c56736 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_virtual_circuit_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_virtual_circuit_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVirtualCircuitRequest wrapper for the GetVirtualCircuit operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVirtualCircuit.go.html to see an example of how to use GetVirtualCircuitRequest. type GetVirtualCircuitRequest struct { // The OCID of the virtual circuit. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_vlan_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vlan_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/get_vlan_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_vlan_request_response.go index 44daf453f..8b2836db1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_vlan_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vlan_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVlanRequest wrapper for the GetVlan operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVlan.go.html to see an example of how to use GetVlanRequest. type GetVlanRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VLAN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VLAN. VlanId *string `mandatory:"true" contributesTo:"path" name:"vlanId"` // Unique identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_vnic_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vnic_attachment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_vnic_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_vnic_attachment_request_response.go index 86879c331..d9d40ce01 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_vnic_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vnic_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVnicAttachmentRequest wrapper for the GetVnicAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVnicAttachment.go.html to see an example of how to use GetVnicAttachmentRequest. type GetVnicAttachmentRequest struct { // The OCID of the VNIC attachment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_vnic_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vnic_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_vnic_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_vnic_request_response.go index 01988863c..143613332 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_vnic_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_vnic_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVnicRequest wrapper for the GetVnic operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVnic.go.html to see an example of how to use GetVnicRequest. type GetVnicRequest struct { // The OCID of the VNIC. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_attachment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_attachment_request_response.go index e936fb54b..80539715b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeAttachmentRequest wrapper for the GetVolumeAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeAttachment.go.html to see an example of how to use GetVolumeAttachmentRequest. type GetVolumeAttachmentRequest struct { // The OCID of the volume attachment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_asset_assignment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_asset_assignment_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_asset_assignment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_asset_assignment_request_response.go index fc380132c..e68aa1d76 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_asset_assignment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_asset_assignment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeBackupPolicyAssetAssignmentRequest wrapper for the GetVolumeBackupPolicyAssetAssignment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackupPolicyAssetAssignment.go.html to see an example of how to use GetVolumeBackupPolicyAssetAssignmentRequest. type GetVolumeBackupPolicyAssetAssignmentRequest struct { // The OCID of an asset (e.g. a volume). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_assignment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_assignment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_assignment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_assignment_request_response.go index 61282cc4b..cfbe336fa 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_assignment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_assignment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeBackupPolicyAssignmentRequest wrapper for the GetVolumeBackupPolicyAssignment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackupPolicyAssignment.go.html to see an example of how to use GetVolumeBackupPolicyAssignmentRequest. type GetVolumeBackupPolicyAssignmentRequest struct { // The OCID of the volume backup policy assignment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_request_response.go index 55ccbff0a..de702f838 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_policy_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_policy_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeBackupPolicyRequest wrapper for the GetVolumeBackupPolicy operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackupPolicy.go.html to see an example of how to use GetVolumeBackupPolicyRequest. type GetVolumeBackupPolicyRequest struct { // The OCID of the volume backup policy. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_request_response.go index a080af060..87b819879 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeBackupRequest wrapper for the GetVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeBackup.go.html to see an example of how to use GetVolumeBackupRequest. type GetVolumeBackupRequest struct { // The OCID of the volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_group_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_group_backup_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_group_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_group_backup_request_response.go index 9069fa4e8..f13f87333 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_group_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_group_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeGroupBackupRequest wrapper for the GetVolumeGroupBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeGroupBackup.go.html to see an example of how to use GetVolumeGroupBackupRequest. type GetVolumeGroupBackupRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_group_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_group_request_response.go index a39d9c03a..3c299c856 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeGroupRequest wrapper for the GetVolumeGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeGroup.go.html to see an example of how to use GetVolumeGroupRequest. type GetVolumeGroupRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_kms_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_kms_key_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_kms_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_kms_key_request_response.go index 553c690f1..6fef5b4df 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_kms_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_kms_key_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeKmsKeyRequest wrapper for the GetVolumeKmsKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolumeKmsKey.go.html to see an example of how to use GetVolumeKmsKeyRequest. type GetVolumeKmsKeyRequest struct { // The OCID of the volume. VolumeId *string `mandatory:"true" contributesTo:"path" name:"volumeId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/get_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_request_response.go index fecd511a5..077c90c01 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetVolumeRequest wrapper for the GetVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetVolume.go.html to see an example of how to use GetVolumeRequest. type GetVolumeRequest struct { // The OCID of the volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/get_windows_instance_initial_credentials_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_windows_instance_initial_credentials_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/get_windows_instance_initial_credentials_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/get_windows_instance_initial_credentials_request_response.go index be4cba5a1..d51ae7dbd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/get_windows_instance_initial_credentials_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/get_windows_instance_initial_credentials_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // GetWindowsInstanceInitialCredentialsRequest wrapper for the GetWindowsInstanceInitialCredentials operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/GetWindowsInstanceInitialCredentials.go.html to see an example of how to use GetWindowsInstanceInitialCredentialsRequest. type GetWindowsInstanceInitialCredentialsRequest struct { // The OCID of the instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/i_scsi_volume_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/i_scsi_volume_attachment.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/i_scsi_volume_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/i_scsi_volume_attachment.go index 856075c57..ddd82c4bd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/i_scsi_volume_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/i_scsi_volume_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IScsiVolumeAttachment An ISCSI volume attachment. @@ -45,7 +45,8 @@ type IScsiVolumeAttachment struct { // Example: `169.254.0.2` Ipv4 *string `mandatory:"true" json:"ipv4"` - // The target volume's iSCSI Qualified Name in the format defined by RFC 3720 (https://tools.ietf.org/html/rfc3720#page-32). + // The target volume's iSCSI Qualified Name in the format defined + // by RFC 3720 (https://tools.ietf.org/html/rfc3720#page-32). // Example: `iqn.2015-12.us.oracle.com:` Iqn *string `mandatory:"true" json:"iqn"` @@ -64,17 +65,22 @@ type IScsiVolumeAttachment struct { // Whether the attachment was created in read-only mode. IsReadOnly *bool `mandatory:"false" json:"isReadOnly"` - // Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified. + // Whether the attachment should be created in shareable mode. If an attachment + // is created in shareable mode, then other instances can attach the same volume, provided + // that they also create their attachments in shareable mode. Only certain volume types can + // be attached in shareable mode. Defaults to false if not specified. IsShareable *bool `mandatory:"false" json:"isShareable"` // Whether in-transit encryption for the data volume's paravirtualized attachment is enabled or not. IsPvEncryptionInTransitEnabled *bool `mandatory:"false" json:"isPvEncryptionInTransitEnabled"` - // The Challenge-Handshake-Authentication-Protocol (CHAP) secret valid for the associated CHAP user name. + // The Challenge-Handshake-Authentication-Protocol (CHAP) secret + // valid for the associated CHAP user name. // (Also called the "CHAP password".) ChapSecret *string `mandatory:"false" json:"chapSecret"` - // The volume's system-generated Challenge-Handshake-Authentication-Protocol (CHAP) user name. See RFC 1994 (https://tools.ietf.org/html/rfc1994) for more on CHAP. + // The volume's system-generated Challenge-Handshake-Authentication-Protocol + // (CHAP) user name. See RFC 1994 (https://tools.ietf.org/html/rfc1994) for more on CHAP. // Example: `ocid1.volume.oc1.phx.` ChapUsername *string `mandatory:"false" json:"chapUsername"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/icmp_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/icmp_options.go similarity index 52% rename from vendor/github.com/oracle/oci-go-sdk/core/icmp_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/icmp_options.go index 723f92c8b..a9479feb2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/icmp_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/icmp_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,18 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// IcmpOptions Optional object to specify a particular ICMP type and code. If you specify ICMP as the protocol -// but do not provide this object, then all ICMP types and codes are allowed. If you do provide -// this object, the type is required and the code is optional. -// See ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) -// for allowed values. To enable MTU negotiation for ingress internet traffic, make sure to allow -// type 3 ("Destination Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). -// If you need to specify multiple codes for a single type, create a separate security list rule for each. +// IcmpOptions Optional and valid only for ICMP and ICMPv6. Use to specify a particular ICMP type and code +// as defined in: +// - ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) +// - ICMPv6 Parameters (https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml) +// If you specify ICMP or ICMPv6 as the protocol but omit this object, then all ICMP types and +// codes are allowed. If you do provide this object, the type is required and the code is optional. +// To enable MTU negotiation for ingress internet traffic via IPv4, make sure to allow type 3 ("Destination +// Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). If you need to specify +// multiple codes for a single type, create a separate security list rule for each. type IcmpOptions struct { // The ICMP type. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/core/image.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image.go index 971e281a2..07d497847 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Image A boot disk image for launching an instance. For more information, see diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_capability_schema_descriptor.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_capability_schema_descriptor.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/image_capability_schema_descriptor.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_capability_schema_descriptor.go index 7e2f797b3..ca2d5785f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_capability_schema_descriptor.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_capability_schema_descriptor.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageCapabilitySchemaDescriptor Image Capability Schema Descriptor is a type of capability for an image. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/image_memory_constraints.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_memory_constraints.go new file mode 100644 index 000000000..6dac61085 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_memory_constraints.go @@ -0,0 +1,32 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ImageMemoryConstraints For a flexible image and shape, the amount of memory supported for instances that use this image. +type ImageMemoryConstraints struct { + + // The minimum amount of memory, in gigabytes. + MinInGBs *int `mandatory:"false" json:"minInGBs"` + + // The maximum amount of memory, in gigabytes. + MaxInGBs *int `mandatory:"false" json:"maxInGBs"` +} + +func (m ImageMemoryConstraints) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_ocpu_constraints.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_ocpu_constraints.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/image_ocpu_constraints.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_ocpu_constraints.go index ebb0448b4..49f1504eb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_ocpu_constraints.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_ocpu_constraints.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageOcpuConstraints OCPU options for an image and shape. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_shape_compatibility_entry.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_shape_compatibility_entry.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/image_shape_compatibility_entry.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_shape_compatibility_entry.go index 66c4a881d..0751b1d9a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_shape_compatibility_entry.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_shape_compatibility_entry.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageShapeCompatibilityEntry An image and shape that are compatible. @@ -26,6 +26,8 @@ type ImageShapeCompatibilityEntry struct { // The shape name. Shape *string `mandatory:"true" json:"shape"` + MemoryConstraints *ImageMemoryConstraints `mandatory:"false" json:"memoryConstraints"` + OcpuConstraints *ImageOcpuConstraints `mandatory:"false" json:"ocpuConstraints"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_shape_compatibility_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_shape_compatibility_summary.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/image_shape_compatibility_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_shape_compatibility_summary.go index d04eaabae..1cb2248a1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_shape_compatibility_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_shape_compatibility_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageShapeCompatibilitySummary Summary information for a compatible image and shape. @@ -26,6 +26,8 @@ type ImageShapeCompatibilitySummary struct { // The shape name. Shape *string `mandatory:"true" json:"shape"` + MemoryConstraints *ImageMemoryConstraints `mandatory:"false" json:"memoryConstraints"` + OcpuConstraints *ImageOcpuConstraints `mandatory:"false" json:"ocpuConstraints"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/image_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_details.go index 1425109a2..b3e095285 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageSourceDetails The representation of ImageSourceDetails @@ -24,7 +24,7 @@ type ImageSourceDetails interface { GetOperatingSystemVersion() *string - // The format of the image to be imported. Only monolithic + // The format of the image to be imported. Only monolithic // images are supported. This attribute is not used for exported Oracle images with the OCI image format. GetSourceImageType() ImageSourceDetailsSourceImageTypeEnum } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_source_via_object_storage_tuple_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_via_object_storage_tuple_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/image_source_via_object_storage_tuple_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_via_object_storage_tuple_details.go index 5e5a87c97..c61375eb8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_source_via_object_storage_tuple_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_via_object_storage_tuple_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageSourceViaObjectStorageTupleDetails The representation of ImageSourceViaObjectStorageTupleDetails @@ -34,7 +34,7 @@ type ImageSourceViaObjectStorageTupleDetails struct { OperatingSystemVersion *string `mandatory:"false" json:"operatingSystemVersion"` - // The format of the image to be imported. Only monolithic + // The format of the image to be imported. Only monolithic // images are supported. This attribute is not used for exported Oracle images with the OCI image format. SourceImageType ImageSourceDetailsSourceImageTypeEnum `mandatory:"false" json:"sourceImageType,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/image_source_via_object_storage_uri_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_via_object_storage_uri_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/image_source_via_object_storage_uri_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_via_object_storage_uri_details.go index 78ad99823..84dabc8c6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/image_source_via_object_storage_uri_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/image_source_via_object_storage_uri_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ImageSourceViaObjectStorageUriDetails The representation of ImageSourceViaObjectStorageUriDetails @@ -28,7 +28,7 @@ type ImageSourceViaObjectStorageUriDetails struct { OperatingSystemVersion *string `mandatory:"false" json:"operatingSystemVersion"` - // The format of the image to be imported. Only monolithic + // The format of the image to be imported. Only monolithic // images are supported. This attribute is not used for exported Oracle images with the OCI image format. SourceImageType ImageSourceDetailsSourceImageTypeEnum `mandatory:"false" json:"sourceImageType,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ingress_security_rule.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ingress_security_rule.go similarity index 74% rename from vendor/github.com/oracle/oci-go-sdk/core/ingress_security_rule.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ingress_security_rule.go index 66e83044d..f5c36c222 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ingress_security_rule.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ingress_security_rule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IngressSecurityRule A rule for allowing inbound IP packets. @@ -31,21 +31,12 @@ type IngressSecurityRule struct { // Allowed values: // * IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56`. // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security list rule for traffic coming from a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. Source *string `mandatory:"true" json:"source"` - // Optional and valid only for ICMP and ICMPv6. Use to specify a particular ICMP type and code - // as defined in: - // * ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) - // * ICMPv6 Parameters (https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml) - // If you specify ICMP or ICMPv6 as the protocol but omit this object, then all ICMP types and - // codes are allowed. If you do provide this object, the type is required and the code is optional. - // To enable MTU negotiation for ingress internet traffic via IPv4, make sure to allow type 3 ("Destination - // Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). If you need to specify - // multiple codes for a single type, create a separate security list rule for each. IcmpOptions *IcmpOptions `mandatory:"false" json:"icmpOptions"` // A stateless rule allows traffic in one direction. Remember to add a corresponding @@ -62,12 +53,8 @@ type IngressSecurityRule struct { // particular `Service` through a service gateway). SourceType IngressSecurityRuleSourceTypeEnum `mandatory:"false" json:"sourceType,omitempty"` - // Optional and valid only for TCP. Use to specify particular destination ports for TCP rules. - // If you specify TCP as the protocol but omit this object, then all destination ports are allowed. TcpOptions *TcpOptions `mandatory:"false" json:"tcpOptions"` - // Optional and valid only for UDP. Use to specify particular destination ports for UDP rules. - // If you specify UDP as the protocol but omit this object, then all destination ports are allowed. UdpOptions *UdpOptions `mandatory:"false" json:"udpOptions"` // An optional description of your choice for the rule. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance.go index 0ee94167c..615dc0567 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Instance A compute host. The image used to launch the instance determines its operating system and other @@ -121,9 +121,10 @@ type Instance struct { // * `CUSTOM` - VM instances launch with custom configuration settings specified in the `LaunchOptions` parameter. LaunchMode InstanceLaunchModeEnum `mandatory:"false" json:"launchMode,omitempty"` - // Options for tuning the compatibility and performance of VM shapes. The values that you specify override any default values. LaunchOptions *LaunchOptions `mandatory:"false" json:"launchOptions"` + InstanceOptions *InstanceOptions `mandatory:"false" json:"instanceOptions"` + AvailabilityConfig *InstanceAvailabilityConfig `mandatory:"false" json:"availabilityConfig"` // Custom metadata that you provide. @@ -131,7 +132,6 @@ type Instance struct { ShapeConfig *InstanceShapeConfig `mandatory:"false" json:"shapeConfig"` - // Details for creating an instance SourceDetails InstanceSourceDetails `mandatory:"false" json:"sourceDetails"` // System tags for this resource. Each key is predefined and scoped to a namespace. @@ -145,6 +145,8 @@ type Instance struct { // Regardless of how the instance was stopped, the flag will be reset to empty as soon as instance reaches Stopped state. // Example: `2018-05-25T21:10:29.600Z` TimeMaintenanceRebootDue *common.SDKTime `mandatory:"false" json:"timeMaintenanceRebootDue"` + + PlatformConfig PlatformConfig `mandatory:"false" json:"platformConfig"` } func (m Instance) String() string { @@ -164,6 +166,7 @@ func (m *Instance) UnmarshalJSON(data []byte) (e error) { IpxeScript *string `json:"ipxeScript"` LaunchMode InstanceLaunchModeEnum `json:"launchMode"` LaunchOptions *LaunchOptions `json:"launchOptions"` + InstanceOptions *InstanceOptions `json:"instanceOptions"` AvailabilityConfig *InstanceAvailabilityConfig `json:"availabilityConfig"` Metadata map[string]string `json:"metadata"` ShapeConfig *InstanceShapeConfig `json:"shapeConfig"` @@ -171,6 +174,7 @@ func (m *Instance) UnmarshalJSON(data []byte) (e error) { SystemTags map[string]map[string]interface{} `json:"systemTags"` AgentConfig *InstanceAgentConfig `json:"agentConfig"` TimeMaintenanceRebootDue *common.SDKTime `json:"timeMaintenanceRebootDue"` + PlatformConfig platformconfig `json:"platformConfig"` AvailabilityDomain *string `json:"availabilityDomain"` CompartmentId *string `json:"compartmentId"` Id *string `json:"id"` @@ -205,6 +209,8 @@ func (m *Instance) UnmarshalJSON(data []byte) (e error) { m.LaunchOptions = model.LaunchOptions + m.InstanceOptions = model.InstanceOptions + m.AvailabilityConfig = model.AvailabilityConfig m.Metadata = model.Metadata @@ -227,6 +233,16 @@ func (m *Instance) UnmarshalJSON(data []byte) (e error) { m.TimeMaintenanceRebootDue = model.TimeMaintenanceRebootDue + nn, e = model.PlatformConfig.UnmarshalPolymorphicJSON(model.PlatformConfig.JsonData) + if e != nil { + return + } + if nn != nil { + m.PlatformConfig = nn.(PlatformConfig) + } else { + m.PlatformConfig = nil + } + m.AvailabilityDomain = model.AvailabilityDomain m.CompartmentId = model.CompartmentId diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_action_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_action_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_action_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_action_request_response.go index c5266caed..abf10659b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_action_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_action_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // InstanceActionRequest wrapper for the InstanceAction operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/InstanceAction.go.html to see an example of how to use InstanceActionRequest. type InstanceActionRequest struct { // The OCID of the instance. @@ -26,7 +30,7 @@ type InstanceActionRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_config.go new file mode 100644 index 000000000..746b489ef --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_config.go @@ -0,0 +1,60 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceAgentConfig Configuration options for the Oracle Cloud Agent software running on the instance. +type InstanceAgentConfig struct { + + // Whether Oracle Cloud Agent can gather performance metrics and monitor the instance using the + // monitoring plugins. + // These are the monitoring plugins: Compute Instance Monitoring + // and Custom Logs Monitoring. + // The monitoring plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isMonitoringDisabled` is true, all of the monitoring plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isMonitoringDisabled` is false, all of the monitoring plugins are enabled. You + // can optionally disable individual monitoring plugins by providing a value in the `pluginsConfig` + // object. + IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + + // Whether Oracle Cloud Agent can run all the available management plugins. + // These are the management plugins: OS Management Service Agent and Compute Instance + // Run Command. + // The management plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isManagementDisabled` is true, all of the management plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isManagementDisabled` is false, all of the management plugins are enabled. You + // can optionally disable individual management plugins by providing a value in the `pluginsConfig` + // object. + IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + + // Whether Oracle Cloud Agent can run all of the available plugins. + // This includes the management and monitoring plugins. + // For more information about the available plugins, see + // Managing Plugins with Oracle Cloud Agent (https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/manage-plugins.htm). + AreAllPluginsDisabled *bool `mandatory:"false" json:"areAllPluginsDisabled"` + + // The configuration of plugins associated with this instance. + PluginsConfig []InstanceAgentPluginConfigDetails `mandatory:"false" json:"pluginsConfig"` +} + +func (m InstanceAgentConfig) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_agent_features.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_features.go similarity index 74% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_agent_features.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_features.go index 75e798f3f..549245eb8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_agent_features.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_features.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,16 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// InstanceAgentFeatures Instance agent features supported on the image +// InstanceAgentFeatures Oracle Cloud Agent features supported on the image. type InstanceAgentFeatures struct { - // Whether the agent running on the instance can gather performance metrics and monitor the instance. + // Whether Oracle Cloud Agent can gather performance metrics and monitor the instance. IsMonitoringSupported *bool `mandatory:"false" json:"isMonitoringSupported"` - // Whether the agent running on the instance can run all the available management plugins + // Whether Oracle Cloud Agent can run all the available management plugins. IsManagementSupported *bool `mandatory:"false" json:"isManagementSupported"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_plugin_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_plugin_config_details.go new file mode 100644 index 000000000..87ee0786f --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_agent_plugin_config_details.go @@ -0,0 +1,60 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceAgentPluginConfigDetails The configuration of plugins associated with this instance. +type InstanceAgentPluginConfigDetails struct { + + // The plugin name. To get a list of available plugins, use the + // ListInstanceagentAvailablePlugins + // operation in the Oracle Cloud Agent API. For more information about the available plugins, see + // Managing Plugins with Oracle Cloud Agent (https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/manage-plugins.htm). + Name *string `mandatory:"true" json:"name"` + + // Whether the plugin should be enabled or disabled. + // To enable the monitoring and management plugins, the `isMonitoringDisabled` and + // `isManagementDisabled` attributes must also be set to false. + DesiredState InstanceAgentPluginConfigDetailsDesiredStateEnum `mandatory:"true" json:"desiredState"` +} + +func (m InstanceAgentPluginConfigDetails) String() string { + return common.PointerString(m) +} + +// InstanceAgentPluginConfigDetailsDesiredStateEnum Enum with underlying type: string +type InstanceAgentPluginConfigDetailsDesiredStateEnum string + +// Set of constants representing the allowable values for InstanceAgentPluginConfigDetailsDesiredStateEnum +const ( + InstanceAgentPluginConfigDetailsDesiredStateEnabled InstanceAgentPluginConfigDetailsDesiredStateEnum = "ENABLED" + InstanceAgentPluginConfigDetailsDesiredStateDisabled InstanceAgentPluginConfigDetailsDesiredStateEnum = "DISABLED" +) + +var mappingInstanceAgentPluginConfigDetailsDesiredState = map[string]InstanceAgentPluginConfigDetailsDesiredStateEnum{ + "ENABLED": InstanceAgentPluginConfigDetailsDesiredStateEnabled, + "DISABLED": InstanceAgentPluginConfigDetailsDesiredStateDisabled, +} + +// GetInstanceAgentPluginConfigDetailsDesiredStateEnumValues Enumerates the set of values for InstanceAgentPluginConfigDetailsDesiredStateEnum +func GetInstanceAgentPluginConfigDetailsDesiredStateEnumValues() []InstanceAgentPluginConfigDetailsDesiredStateEnum { + values := make([]InstanceAgentPluginConfigDetailsDesiredStateEnum, 0) + for _, v := range mappingInstanceAgentPluginConfigDetailsDesiredState { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_availability_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_availability_config.go similarity index 77% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_availability_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_availability_config.go index d61d66884..e423c8977 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_availability_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_availability_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,16 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// InstanceAvailabilityConfig Options for customers to define the general policy of how compute service perform maintenance on VM instances. +// InstanceAvailabilityConfig Options for defining the availabiity of a VM instance after a maintenance event that impacts the underlying hardware. type InstanceAvailabilityConfig struct { - // Actions customers can specify that would be applied to their instances after scheduled or unexpected host maintenance. - // * `RESTORE_INSTANCE` - This would be the default action if recoveryAction is not set. VM instances - // will be restored to the power state it was in before maintenance. - // * `STOP_INSTANCE` - This action allow customers to have their VM instances be stopped after maintenance. + // The lifecycle state for an instance when it is recovered after infrastructure maintenance. + // * `RESTORE_INSTANCE` - The instance is restored to the lifecycle state it was in before the maintenance event. + // If the instance was running, it is automatically rebooted. This is the default action when a value is not set. + // * `STOP_INSTANCE` - The instance is recovered in the stopped state. RecoveryAction InstanceAvailabilityConfigRecoveryActionEnum `mandatory:"false" json:"recoveryAction,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration.go index c3bf7d6b7..964050c83 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfiguration An instance configuration is a template that defines the settings to use when creating Compute instances. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_amd_milan_bm_launch_instance_platform_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_amd_milan_bm_launch_instance_platform_config.go new file mode 100644 index 000000000..5acdfd440 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_amd_milan_bm_launch_instance_platform_config.go @@ -0,0 +1,71 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "encoding/json" + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig The platform configuration used when launching a bare metal instance specific to the AMD Milan platform. +type InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig struct { + + // The number of NUMA nodes per socket. + NumaNodesPerSocket InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum `mandatory:"false" json:"numaNodesPerSocket,omitempty"` +} + +func (m InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig) String() string { + return common.PointerString(m) +} + +// MarshalJSON marshals to json representation +func (m InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig) MarshalJSON() (buff []byte, e error) { + type MarshalTypeInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig + s := struct { + DiscriminatorParam string `json:"type"` + MarshalTypeInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig + }{ + "AMD_MILAN_BM", + (MarshalTypeInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig)(m), + } + + return json.Marshal(&s) +} + +// InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum Enum with underlying type: string +type InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum string + +// Set of constants representing the allowable values for InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum +const ( + InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps0 InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS0" + InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps1 InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS1" + InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps2 InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS2" + InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps4 InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum = "NPS4" +) + +var mappingInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocket = map[string]InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum{ + "NPS0": InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps0, + "NPS1": InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps1, + "NPS2": InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps2, + "NPS4": InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketNps4, +} + +// GetInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnumValues Enumerates the set of values for InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum +func GetInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnumValues() []InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum { + values := make([]InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocketEnum, 0) + for _, v := range mappingInstanceConfigurationAmdMilanBmLaunchInstancePlatformConfigNumaNodesPerSocket { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_attach_vnic_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_attach_vnic_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_attach_vnic_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_attach_vnic_details.go index 9cb562170..b05cf867a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_attach_vnic_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_attach_vnic_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,11 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationAttachVnicDetails The representation of InstanceConfigurationAttachVnicDetails type InstanceConfigurationAttachVnicDetails struct { - - // Details for creating a new VNIC. CreateVnicDetails *InstanceConfigurationCreateVnicDetails `mandatory:"false" json:"createVnicDetails"` // A user-friendly name for the attachment. Does not have to be unique, and it cannot be changed. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_attach_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_attach_volume_details.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_attach_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_attach_volume_details.go index b03ce7abf..80bcb5cc2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_attach_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_attach_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationAttachVolumeDetails Volume attachmentDetails. Please see AttachVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_availability_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_availability_config.go similarity index 78% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_availability_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_availability_config.go index fd52f3d38..f84bce3f5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_availability_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_availability_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,16 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// InstanceConfigurationAvailabilityConfig Options for customers to define the general policy of how compute service perform maintenance on VM instances. +// InstanceConfigurationAvailabilityConfig Options for defining the availabiity of a VM instance after a maintenance event that impacts the underlying hardware. type InstanceConfigurationAvailabilityConfig struct { - // Actions customers can specify that would be applied to their instances after scheduled or unexpected host maintenance. - // * `RESTORE_INSTANCE` - This would be the default action if recoveryAction is not set. VM instances - // will be restored to the power state it was in before maintenance. - // * `STOP_INSTANCE` - This action allow customers to have their VM instances be stopped after maintenance. + // The lifecycle state for an instance when it is recovered after infrastructure maintenance. + // * `RESTORE_INSTANCE` - The instance is restored to the lifecycle state it was in before the maintenance event. + // If the instance was running, it is automatically rebooted. This is the default action when a value is not set. + // * `STOP_INSTANCE` - The instance is recovered in the stopped state. RecoveryAction InstanceConfigurationAvailabilityConfigRecoveryActionEnum `mandatory:"false" json:"recoveryAction,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_block_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_block_volume_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_block_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_block_volume_details.go index 3daa6f630..ffe2cf468 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_block_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_block_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationBlockVolumeDetails Create new block volumes or attach to an existing volume. Specify either createDetails or volumeId. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_create_vnic_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_create_vnic_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_create_vnic_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_create_vnic_details.go index 7968b07b4..b3c905ecc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_create_vnic_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_create_vnic_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationCreateVnicDetails Contains the properties of the VNIC for an instance configuration. See CreateVnicDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_create_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_create_volume_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_create_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_create_volume_details.go index e0af18c12..904d75d0f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_create_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_create_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationCreateVolumeDetails Creates a new block volume. Please see CreateVolumeDetails @@ -62,9 +62,6 @@ type InstanceConfigurationCreateVolumeDetails struct { // The size of the volume in GBs. SizeInGBs *int64 `mandatory:"false" json:"sizeInGBs"` - // Specifies the volume source details for a new Block volume. The volume source is either another Block volume in the same availability domain or a Block volume backup. - // This is an optional field. If not specified or set to null, the new Block volume will be empty. - // When specified, the new Block volume will contain data from the source volume or backup. SourceDetails InstanceConfigurationVolumeSourceDetails `mandatory:"false" json:"sourceDetails"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_details.go index 8dcffe1be..5cb34889c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationInstanceDetails The representation of InstanceConfigurationInstanceDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_options.go new file mode 100644 index 000000000..5eadc26fa --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_options.go @@ -0,0 +1,31 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceConfigurationInstanceOptions Optional mutable instance options. As a part of Instance Metadata Service Security Header, This allows user to disable the legacy imds endpoints. +type InstanceConfigurationInstanceOptions struct { + + // Whether to disable the legacy (/v1) instance metadata service endpoints. + // Customers who have migrated to /v2 should set this to true for added security. + // Default is false. + AreLegacyImdsEndpointsDisabled *bool `mandatory:"false" json:"areLegacyImdsEndpointsDisabled"` +} + +func (m InstanceConfigurationInstanceOptions) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_details.go index be3168437..b3c3d7149 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationInstanceSourceDetails The representation of InstanceConfigurationInstanceSourceDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_via_boot_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_via_boot_volume_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_via_boot_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_via_boot_volume_details.go index 4064b4930..0ceb78a8a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_via_boot_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_via_boot_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationInstanceSourceViaBootVolumeDetails The representation of InstanceConfigurationInstanceSourceViaBootVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_via_image_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_via_image_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_via_image_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_via_image_details.go index d922347f1..4102e544c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_instance_source_via_image_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_instance_source_via_image_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,13 +15,14 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationInstanceSourceViaImageDetails The representation of InstanceConfigurationInstanceSourceViaImageDetails type InstanceConfigurationInstanceSourceViaImageDetails struct { - // The size of the boot volume in GBs. The minimum value is 50 GB and the maximum value is 16384 GB (16TB). + // The size of the boot volume in GBs. The minimum value is 50 GB and the maximum + // value is 16384 GB (16TB). BootVolumeSizeInGBs *int64 `mandatory:"false" json:"bootVolumeSizeInGBs"` // The OCID of the image used to boot the instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_iscsi_attach_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_iscsi_attach_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_iscsi_attach_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_iscsi_attach_volume_details.go index eb8548e37..18ebb8c28 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_iscsi_attach_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_iscsi_attach_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationIscsiAttachVolumeDetails The representation of InstanceConfigurationIscsiAttachVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_agent_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_agent_config_details.go new file mode 100644 index 000000000..2154d3efe --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_agent_config_details.go @@ -0,0 +1,63 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceConfigurationLaunchInstanceAgentConfigDetails Configuration options for the Oracle Cloud Agent software running on the instance. +type InstanceConfigurationLaunchInstanceAgentConfigDetails struct { + + // Whether Oracle Cloud Agent can gather performance metrics and monitor the instance using the + // monitoring plugins. Default value is false (monitoring plugins are enabled). + // These are the monitoring plugins: Compute Instance Monitoring + // and Custom Logs Monitoring. + // The monitoring plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isMonitoringDisabled` is true, all of the monitoring plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isMonitoringDisabled` is false, all of the monitoring plugins are enabled. You + // can optionally disable individual monitoring plugins by providing a value in the `pluginsConfig` + // object. + IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + + // Whether Oracle Cloud Agent can run all the available management plugins. + // Default value is false (management plugins are enabled). + // These are the management plugins: OS Management Service Agent and Compute Instance + // Run Command. + // The management plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isManagementDisabled` is true, all of the management plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isManagementDisabled` is false, all of the management plugins are enabled. You + // can optionally disable individual management plugins by providing a value in the `pluginsConfig` + // object. + IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + + // Whether Oracle Cloud Agent can run all the available plugins. + // This includes the management and monitoring plugins. + // To get a list of available plugins, use the + // ListInstanceagentAvailablePlugins + // operation in the Oracle Cloud Agent API. For more information about the available plugins, see + // Managing Plugins with Oracle Cloud Agent (https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/manage-plugins.htm). + AreAllPluginsDisabled *bool `mandatory:"false" json:"areAllPluginsDisabled"` + + // The configuration of plugins associated with this instance. + PluginsConfig []InstanceAgentPluginConfigDetails `mandatory:"false" json:"pluginsConfig"` +} + +func (m InstanceConfigurationLaunchInstanceAgentConfigDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_details.go index c5be30af7..6a59d635b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationLaunchInstanceDetails Instance launch details for creating an instance from an instance configuration. Use the `sourceDetails` @@ -30,8 +30,6 @@ type InstanceConfigurationLaunchInstanceDetails struct { // The OCID of the compartment. CompartmentId *string `mandatory:"false" json:"compartmentId"` - // Details for the primary VNIC, which is automatically created and attached when - // the instance is launched. CreateVnicDetails *InstanceConfigurationCreateVnicDetails `mandatory:"false" json:"createVnicDetails"` // Defined tags for this resource. Each key is predefined and scoped to a @@ -122,8 +120,8 @@ type InstanceConfigurationLaunchInstanceDetails struct { ShapeConfig *InstanceConfigurationLaunchInstanceShapeConfigDetails `mandatory:"false" json:"shapeConfig"` - // Details for creating an instance. - // Use this parameter to specify whether a boot volume or an image should be used to launch a new instance. + PlatformConfig InstanceConfigurationLaunchInstancePlatformConfig `mandatory:"false" json:"platformConfig"` + SourceDetails InstanceConfigurationInstanceSourceDetails `mandatory:"false" json:"sourceDetails"` // A fault domain is a grouping of hardware and infrastructure within an availability domain. @@ -151,7 +149,6 @@ type InstanceConfigurationLaunchInstanceDetails struct { // * `CUSTOM` - VM instances launch with custom configuration settings specified in the `LaunchOptions` parameter. LaunchMode InstanceConfigurationLaunchInstanceDetailsLaunchModeEnum `mandatory:"false" json:"launchMode,omitempty"` - // Options for tuning the compatibility and performance of VM shapes. The values that you specify override any default values. LaunchOptions *InstanceConfigurationLaunchOptions `mandatory:"false" json:"launchOptions"` AgentConfig *InstanceConfigurationLaunchInstanceAgentConfigDetails `mandatory:"false" json:"agentConfig"` @@ -164,6 +161,8 @@ type InstanceConfigurationLaunchInstanceDetails struct { // * `REBOOT` - Run maintenance using a reboot. PreferredMaintenanceAction InstanceConfigurationLaunchInstanceDetailsPreferredMaintenanceActionEnum `mandatory:"false" json:"preferredMaintenanceAction,omitempty"` + InstanceOptions *InstanceConfigurationInstanceOptions `mandatory:"false" json:"instanceOptions"` + AvailabilityConfig *InstanceConfigurationAvailabilityConfig `mandatory:"false" json:"availabilityConfig"` } @@ -185,6 +184,7 @@ func (m *InstanceConfigurationLaunchInstanceDetails) UnmarshalJSON(data []byte) Metadata map[string]string `json:"metadata"` Shape *string `json:"shape"` ShapeConfig *InstanceConfigurationLaunchInstanceShapeConfigDetails `json:"shapeConfig"` + PlatformConfig instanceconfigurationlaunchinstanceplatformconfig `json:"platformConfig"` SourceDetails instanceconfigurationinstancesourcedetails `json:"sourceDetails"` FaultDomain *string `json:"faultDomain"` DedicatedVmHostId *string `json:"dedicatedVmHostId"` @@ -193,6 +193,7 @@ func (m *InstanceConfigurationLaunchInstanceDetails) UnmarshalJSON(data []byte) AgentConfig *InstanceConfigurationLaunchInstanceAgentConfigDetails `json:"agentConfig"` IsPvEncryptionInTransitEnabled *bool `json:"isPvEncryptionInTransitEnabled"` PreferredMaintenanceAction InstanceConfigurationLaunchInstanceDetailsPreferredMaintenanceActionEnum `json:"preferredMaintenanceAction"` + InstanceOptions *InstanceConfigurationInstanceOptions `json:"instanceOptions"` AvailabilityConfig *InstanceConfigurationAvailabilityConfig `json:"availabilityConfig"` }{} @@ -223,6 +224,16 @@ func (m *InstanceConfigurationLaunchInstanceDetails) UnmarshalJSON(data []byte) m.ShapeConfig = model.ShapeConfig + nn, e = model.PlatformConfig.UnmarshalPolymorphicJSON(model.PlatformConfig.JsonData) + if e != nil { + return + } + if nn != nil { + m.PlatformConfig = nn.(InstanceConfigurationLaunchInstancePlatformConfig) + } else { + m.PlatformConfig = nil + } + nn, e = model.SourceDetails.UnmarshalPolymorphicJSON(model.SourceDetails.JsonData) if e != nil { return @@ -247,6 +258,8 @@ func (m *InstanceConfigurationLaunchInstanceDetails) UnmarshalJSON(data []byte) m.PreferredMaintenanceAction = model.PreferredMaintenanceAction + m.InstanceOptions = model.InstanceOptions + m.AvailabilityConfig = model.AvailabilityConfig return diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_platform_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_platform_config.go new file mode 100644 index 000000000..9245dc03f --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_platform_config.go @@ -0,0 +1,92 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "encoding/json" + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceConfigurationLaunchInstancePlatformConfig The platform configuration requested for the instance. +// If the parameter is provided, the instance is created with the platform configured as specified. If some +// properties are missing or the entire parameter is not provided, the instance is created +// with the default configuration values for the `shape` that you specify. +// Each shape only supports certain configurable values. If the values that you provide are not valid for the +// specified `shape`, an error is returned. +type InstanceConfigurationLaunchInstancePlatformConfig interface { +} + +type instanceconfigurationlaunchinstanceplatformconfig struct { + JsonData []byte + Type string `json:"type"` +} + +// UnmarshalJSON unmarshals json +func (m *instanceconfigurationlaunchinstanceplatformconfig) UnmarshalJSON(data []byte) error { + m.JsonData = data + type Unmarshalerinstanceconfigurationlaunchinstanceplatformconfig instanceconfigurationlaunchinstanceplatformconfig + s := struct { + Model Unmarshalerinstanceconfigurationlaunchinstanceplatformconfig + }{} + err := json.Unmarshal(data, &s.Model) + if err != nil { + return err + } + m.Type = s.Model.Type + + return err +} + +// UnmarshalPolymorphicJSON unmarshals polymorphic json +func (m *instanceconfigurationlaunchinstanceplatformconfig) UnmarshalPolymorphicJSON(data []byte) (interface{}, error) { + + if data == nil || string(data) == "null" { + return nil, nil + } + + var err error + switch m.Type { + case "AMD_MILAN_BM": + mm := InstanceConfigurationAmdMilanBmLaunchInstancePlatformConfig{} + err = json.Unmarshal(data, &mm) + return mm, err + default: + return *m, nil + } +} + +func (m instanceconfigurationlaunchinstanceplatformconfig) String() string { + return common.PointerString(m) +} + +// InstanceConfigurationLaunchInstancePlatformConfigTypeEnum Enum with underlying type: string +type InstanceConfigurationLaunchInstancePlatformConfigTypeEnum string + +// Set of constants representing the allowable values for InstanceConfigurationLaunchInstancePlatformConfigTypeEnum +const ( + InstanceConfigurationLaunchInstancePlatformConfigTypeAmdMilanBm InstanceConfigurationLaunchInstancePlatformConfigTypeEnum = "AMD_MILAN_BM" +) + +var mappingInstanceConfigurationLaunchInstancePlatformConfigType = map[string]InstanceConfigurationLaunchInstancePlatformConfigTypeEnum{ + "AMD_MILAN_BM": InstanceConfigurationLaunchInstancePlatformConfigTypeAmdMilanBm, +} + +// GetInstanceConfigurationLaunchInstancePlatformConfigTypeEnumValues Enumerates the set of values for InstanceConfigurationLaunchInstancePlatformConfigTypeEnum +func GetInstanceConfigurationLaunchInstancePlatformConfigTypeEnumValues() []InstanceConfigurationLaunchInstancePlatformConfigTypeEnum { + values := make([]InstanceConfigurationLaunchInstancePlatformConfigTypeEnum, 0) + for _, v := range mappingInstanceConfigurationLaunchInstancePlatformConfigType { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_shape_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_shape_config_details.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_shape_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_shape_config_details.go index 768916b09..9faf82f92 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_instance_shape_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_instance_shape_config_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationLaunchInstanceShapeConfigDetails The shape configuration requested for the instance. @@ -30,6 +30,9 @@ type InstanceConfigurationLaunchInstanceShapeConfigDetails struct { // The total number of OCPUs available to the instance. Ocpus *float32 `mandatory:"false" json:"ocpus"` + + // The total amount of memory available to the instance, in gigabytes. + MemoryInGBs *float32 `mandatory:"false" json:"memoryInGBs"` } func (m InstanceConfigurationLaunchInstanceShapeConfigDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_options.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_options.go index 1302486e0..b3718bc42 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_launch_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_launch_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationLaunchOptions Options for tuning the compatibility and performance of VM shapes. The values that you specify override any @@ -25,21 +25,21 @@ type InstanceConfigurationLaunchOptions struct { // * `ISCSI` - ISCSI attached block storage device. // * `SCSI` - Emulated SCSI disk. // * `IDE` - Emulated IDE disk. - // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data + // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data // volumes on Oracle provided images. // * `PARAVIRTUALIZED` - Paravirtualized disk. This is the default for boot volumes and remote block // storage volumes on Oracle-provided images. BootVolumeType InstanceConfigurationLaunchOptionsBootVolumeTypeEnum `mandatory:"false" json:"bootVolumeType,omitempty"` - // Firmware used to boot VM. Select the option that matches your operating system. - // * `BIOS` - Boot VM using BIOS style firmware. This is compatible with both 32 bit and 64 bit operating + // Firmware used to boot VM. Select the option that matches your operating system. + // * `BIOS` - Boot VM using BIOS style firmware. This is compatible with both 32 bit and 64 bit operating // systems that boot using MBR style bootloaders. - // * `UEFI_64` - Boot VM using UEFI style firmware compatible with 64 bit operating systems. This is the + // * `UEFI_64` - Boot VM using UEFI style firmware compatible with 64 bit operating systems. This is the // default for Oracle-provided images. Firmware InstanceConfigurationLaunchOptionsFirmwareEnum `mandatory:"false" json:"firmware,omitempty"` // Emulation type for the physical network interface card (NIC). - // * `E1000` - Emulated Gigabit ethernet controller. Compatible with Linux e1000 network driver. + // * `E1000` - Emulated Gigabit ethernet controller. Compatible with Linux e1000 network driver. // * `VFIO` - Direct attached Virtual Function network controller. This is the networking type // when you launch an instance using hardware-assisted (SR-IOV) networking. // * `PARAVIRTUALIZED` - VM instances launch with paravirtualized devices using VirtIO drivers. @@ -49,7 +49,7 @@ type InstanceConfigurationLaunchOptions struct { // * `ISCSI` - ISCSI attached block storage device. // * `SCSI` - Emulated SCSI disk. // * `IDE` - Emulated IDE disk. - // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data + // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data // volumes on Oracle provided images. // * `PARAVIRTUALIZED` - Paravirtualized disk. This is the default for boot volumes and remote block // storage volumes on Oracle-provided images. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_paravirtualized_attach_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_paravirtualized_attach_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_paravirtualized_attach_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_paravirtualized_attach_volume_details.go index 4f97df51f..3597680da 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_paravirtualized_attach_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_paravirtualized_attach_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationParavirtualizedAttachVolumeDetails The representation of InstanceConfigurationParavirtualizedAttachVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_summary.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_summary.go index fdb57c5be..7231a01a0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationSummary Summary information for an instance configuration. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_details.go index c053c7384..4a8aedff2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationVolumeSourceDetails The representation of InstanceConfigurationVolumeSourceDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_from_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_from_volume_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_from_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_from_volume_backup_details.go index fa08e466a..bc5f3b839 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_from_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_from_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationVolumeSourceFromVolumeBackupDetails Specifies the volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_from_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_from_volume_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_from_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_from_volume_details.go index 142568319..bc60f590f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_configuration_volume_source_from_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_configuration_volume_source_from_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConfigurationVolumeSourceFromVolumeDetails Specifies the source volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_console_connection.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_console_connection.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_console_connection.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_console_connection.go index fdd75ae43..da263c7c9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_console_connection.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_console_connection.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,12 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceConsoleConnection The `InstanceConsoleConnection` API provides you with console access to Compute instances, // enabling you to troubleshoot malfunctioning instances remotely. -// For more information about console access, see -// Accessing the Console (https://docs.cloud.oracle.com/Content/Compute/References/serialconsole.htm). +// For more information about instance console connections, see Troubleshooting Instances Using Instance Console Connections (https://docs.cloud.oracle.com/Content/Compute/References/serialconsole.htm). type InstanceConsoleConnection struct { // The OCID of the compartment to contain the console connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_credentials.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_credentials.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_credentials.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_credentials.go index 525eb6543..5ac9686f7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_credentials.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_credentials.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceCredentials The credentials for a particular instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_options.go new file mode 100644 index 000000000..c547538e0 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_options.go @@ -0,0 +1,31 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstanceOptions Optional mutable instance options +type InstanceOptions struct { + + // Whether to disable the legacy (/v1) instance metadata service endpoints. + // Customers who have migrated to /v2 should set this to true for added security. + // Default is false. + AreLegacyImdsEndpointsDisabled *bool `mandatory:"false" json:"areLegacyImdsEndpointsDisabled"` +} + +func (m InstanceOptions) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_pool.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool.go index 0c3b1f100..93ca83a90 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstancePool An instance pool is a group of instances within the same region that are created based off of the same diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance.go new file mode 100644 index 000000000..be24b5d52 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance.go @@ -0,0 +1,93 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// InstancePoolInstance Instance data along with the lifecycleState of instance to instance pool attachment. +type InstancePoolInstance struct { + + // The OCID of the instance. + Id *string `mandatory:"true" json:"id"` + + // The OCID of the instance pool. + InstancePoolId *string `mandatory:"true" json:"instancePoolId"` + + // The availability domain the instance is running in. + AvailabilityDomain *string `mandatory:"true" json:"availabilityDomain"` + + // the lifecycle state of the instance in the instance pool + LifecycleState InstancePoolInstanceLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` + + // The OCID of the compartment that contains the instance. + CompartmentId *string `mandatory:"true" json:"compartmentId"` + + // The OCID of the instance configuration used to create the instance. + InstanceConfigurationId *string `mandatory:"true" json:"instanceConfigurationId"` + + // The region that contains the availability domain the instance is running in. + Region *string `mandatory:"true" json:"region"` + + // The shape of an instance. The shape determines the number of CPUs, amount of memory, + // and other resources allocated to the instance. + // You can enumerate all available shapes by calling ListShapes. + Shape *string `mandatory:"true" json:"shape"` + + // The lifecycleState of the underlying instance. Refer lifecycleState in Instance + State *string `mandatory:"true" json:"state"` + + // The date and time the instance pool instance was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` + + // The user-friendly name. Does not have to be unique. + DisplayName *string `mandatory:"false" json:"displayName"` + + // The fault domain the instance is running in. + FaultDomain *string `mandatory:"false" json:"faultDomain"` + + // The load balancer backends that are configured for the instance pool instance. + LoadBalancerBackends []InstancePoolInstanceLoadBalancerBackend `mandatory:"false" json:"loadBalancerBackends"` +} + +func (m InstancePoolInstance) String() string { + return common.PointerString(m) +} + +// InstancePoolInstanceLifecycleStateEnum Enum with underlying type: string +type InstancePoolInstanceLifecycleStateEnum string + +// Set of constants representing the allowable values for InstancePoolInstanceLifecycleStateEnum +const ( + InstancePoolInstanceLifecycleStateAttaching InstancePoolInstanceLifecycleStateEnum = "ATTACHING" + InstancePoolInstanceLifecycleStateActive InstancePoolInstanceLifecycleStateEnum = "ACTIVE" + InstancePoolInstanceLifecycleStateDetaching InstancePoolInstanceLifecycleStateEnum = "DETACHING" +) + +var mappingInstancePoolInstanceLifecycleState = map[string]InstancePoolInstanceLifecycleStateEnum{ + "ATTACHING": InstancePoolInstanceLifecycleStateAttaching, + "ACTIVE": InstancePoolInstanceLifecycleStateActive, + "DETACHING": InstancePoolInstanceLifecycleStateDetaching, +} + +// GetInstancePoolInstanceLifecycleStateEnumValues Enumerates the set of values for InstancePoolInstanceLifecycleStateEnum +func GetInstancePoolInstanceLifecycleStateEnumValues() []InstancePoolInstanceLifecycleStateEnum { + values := make([]InstancePoolInstanceLifecycleStateEnum, 0) + for _, v := range mappingInstancePoolInstanceLifecycleState { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_instance_load_balancer_backend.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance_load_balancer_backend.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_pool_instance_load_balancer_backend.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance_load_balancer_backend.go index d91ad20d0..dab4f91cd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_instance_load_balancer_backend.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_instance_load_balancer_backend.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstancePoolInstanceLoadBalancerBackend Represents the load balancer Backend that is configured for an instance pool instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_load_balancer_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_load_balancer_attachment.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_pool_load_balancer_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_load_balancer_attachment.go index 14e7f8e58..3e16eed03 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_load_balancer_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_load_balancer_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstancePoolLoadBalancerAttachment Represents a load balancer that is attached to an instance pool. @@ -35,7 +35,9 @@ type InstancePoolLoadBalancerAttachment struct { // The port value used for the backends. Port *int `mandatory:"true" json:"port"` - // Indicates which VNIC on each instance in the instance pool should be used to associate with the load balancer. Possible values are "PrimaryVnic" or the displayName of one of the secondary VNICs on the instance configuration that is associated with the instance pool. + // Indicates which VNIC on each instance in the instance pool should be used to associate with the load balancer. + // Possible values are "PrimaryVnic" or the displayName of one of the secondary VNICs on the instance configuration + // that is associated with the instance pool. VnicSelection *string `mandatory:"true" json:"vnicSelection"` // The status of the interaction between the instance pool and the load balancer. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_placement_configuration.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_placement_configuration.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_pool_placement_configuration.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_placement_configuration.go index 29a1f9531..e04a2e422 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_placement_configuration.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_placement_configuration.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstancePoolPlacementConfiguration The location for where an instance pool will place instances. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_placement_secondary_vnic_subnet.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_placement_secondary_vnic_subnet.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_pool_placement_secondary_vnic_subnet.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_placement_secondary_vnic_subnet.go index 313b08cf2..c14536b9d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_placement_secondary_vnic_subnet.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_placement_secondary_vnic_subnet.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstancePoolPlacementSecondaryVnicSubnet The secondary VNIC object for the placement configuration for an instance pool. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_summary.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_pool_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_summary.go index f6b868989..0c3004f9a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_pool_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_pool_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstancePoolSummary Summary information for an instance pool. @@ -42,7 +42,7 @@ type InstancePoolSummary struct { // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - // The user-friendly name. Does not have to be unique. + // The user-friendly name. Does not have to be unique. DisplayName *string `mandatory:"false" json:"displayName"` // Defined tags for this resource. Each key is predefined and scoped to a diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_shape_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_shape_config.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_shape_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_shape_config.go index 8de276500..f50d7aa69 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_shape_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_shape_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceShapeConfig The shape configuration for an instance. The shape configuration determines diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_details.go index 95fbee918..e9b6d8d31 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceSourceDetails The representation of InstanceSourceDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_source_via_boot_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_via_boot_volume_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_source_via_boot_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_via_boot_volume_details.go index f7ab62234..406257798 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_source_via_boot_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_via_boot_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceSourceViaBootVolumeDetails The representation of InstanceSourceViaBootVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_source_via_image_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_via_image_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_source_via_image_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_via_image_details.go index 21c50e805..cf853484f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_source_via_image_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_source_via_image_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceSourceViaImageDetails The representation of InstanceSourceViaImageDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/instance_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_summary.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/instance_summary.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/instance_summary.go index c3a2f64c1..804b24537 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/instance_summary.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/instance_summary.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InstanceSummary Condensed instance data when listing instances in an instance pool. @@ -42,7 +42,7 @@ type InstanceSummary struct { // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - // The user-friendly name. Does not have to be unique. + // The user-friendly name. Does not have to be unique. DisplayName *string `mandatory:"false" json:"displayName"` // The fault domain the instance is running in. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/internet_gateway.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/internet_gateway.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/internet_gateway.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/internet_gateway.go index 320871970..90b55c234 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/internet_gateway.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/internet_gateway.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,17 +14,15 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // InternetGateway Represents a router that connects the edge of a VCN with the Internet. For an example scenario // that uses an internet gateway, see -// Typical Networking Service Scenarios (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm#scenarios). +// Typical Networking Service Scenarios (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm#scenarios). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type InternetGateway struct { // The OCID of the compartment containing the internet gateway. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection.go index e9a3c05f6..5707c8d72 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IpSecConnection A connection between a DRG and CPE. This connection consists of multiple IPSec @@ -31,12 +31,10 @@ import ( // Oracle uses the IPSec connection's static routes when routing a tunnel's traffic *only* // if that tunnel's `routing` attribute = `STATIC`. Otherwise the static routes are ignored. // For more information about the workflow for setting up an IPSec connection, see -// IPSec VPN (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPsec.htm). +// IPSec VPN (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPsec.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type IpSecConnection struct { // The OCID of the compartment containing the IPSec connection. @@ -61,7 +59,7 @@ type IpSecConnection struct { // you must provide at least one valid static route. If you configure both // tunnels to use BGP dynamic routing, you can provide an empty list for the static routes. // The CIDR can be either IPv4 or IPv6. Note that IPv6 addressing is currently supported only - // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `10.0.1.0/24` // Example: `2001:db8::/32` StaticRoutes []string `mandatory:"true" json:"staticRoutes"` @@ -86,7 +84,7 @@ type IpSecConnection struct { // If you don't provide a value when creating the IPSec connection, the `ipAddress` attribute // for the Cpe object specified by `cpeId` is used as the `cpeLocalIdentifier`. // For information about why you'd provide this value, see - // If Your CPE Is Behind a NAT Device (https://docs.cloud.oracle.com/Content/Network/Tasks/overviewIPsec.htm#nat). + // If Your CPE Is Behind a NAT Device (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm#nat). // Example IP address: `10.0.3.3` // Example hostname: `cpe.example.com` CpeLocalIdentifier *string `mandatory:"false" json:"cpeLocalIdentifier"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_device_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_device_config.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_device_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_device_config.go index 97fab30cb..2c811b395 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_device_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_device_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IpSecConnectionDeviceConfig Deprecated. For tunnel information, instead see: diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_device_status.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_device_status.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_device_status.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_device_status.go index 27a5a02a5..3f8d9808f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_device_status.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_device_status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IpSecConnectionDeviceStatus Deprecated. For tunnel information, instead see diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_tunnel.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_tunnel.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_tunnel.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_tunnel.go index b558f41d7..c4ce28b9a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_tunnel.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_tunnel.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IpSecConnectionTunnel Information about a single tunnel in an IPSec connection. This object does not include the tunnel's @@ -22,10 +22,10 @@ import ( // IPSecConnectionTunnelSharedSecret object. type IpSecConnectionTunnel struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment containing the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the tunnel. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. Id *string `mandatory:"true" json:"id"` // The tunnel's lifecycle state. @@ -49,9 +49,10 @@ type IpSecConnectionTunnel struct { // entering confidential information. DisplayName *string `mandatory:"false" json:"displayName"` - // Information for establishing the tunnel's BGP session. BgpSessionInfo *BgpSessionInfo `mandatory:"false" json:"bgpSessionInfo"` + EncryptionDomainConfig *EncryptionDomainConfig `mandatory:"false" json:"encryptionDomainConfig"` + // The type of routing used for this tunnel (either BGP dynamic routing or static routing). Routing IpSecConnectionTunnelRoutingEnum `mandatory:"false" json:"routing,omitempty"` @@ -76,12 +77,14 @@ const ( IpSecConnectionTunnelStatusUp IpSecConnectionTunnelStatusEnum = "UP" IpSecConnectionTunnelStatusDown IpSecConnectionTunnelStatusEnum = "DOWN" IpSecConnectionTunnelStatusDownForMaintenance IpSecConnectionTunnelStatusEnum = "DOWN_FOR_MAINTENANCE" + IpSecConnectionTunnelStatusPartialUp IpSecConnectionTunnelStatusEnum = "PARTIAL_UP" ) var mappingIpSecConnectionTunnelStatus = map[string]IpSecConnectionTunnelStatusEnum{ "UP": IpSecConnectionTunnelStatusUp, "DOWN": IpSecConnectionTunnelStatusDown, "DOWN_FOR_MAINTENANCE": IpSecConnectionTunnelStatusDownForMaintenance, + "PARTIAL_UP": IpSecConnectionTunnelStatusPartialUp, } // GetIpSecConnectionTunnelStatusEnumValues Enumerates the set of values for IpSecConnectionTunnelStatusEnum @@ -150,11 +153,13 @@ type IpSecConnectionTunnelRoutingEnum string const ( IpSecConnectionTunnelRoutingBgp IpSecConnectionTunnelRoutingEnum = "BGP" IpSecConnectionTunnelRoutingStatic IpSecConnectionTunnelRoutingEnum = "STATIC" + IpSecConnectionTunnelRoutingPolicy IpSecConnectionTunnelRoutingEnum = "POLICY" ) var mappingIpSecConnectionTunnelRouting = map[string]IpSecConnectionTunnelRoutingEnum{ "BGP": IpSecConnectionTunnelRoutingBgp, "STATIC": IpSecConnectionTunnelRoutingStatic, + "POLICY": IpSecConnectionTunnelRoutingPolicy, } // GetIpSecConnectionTunnelRoutingEnumValues Enumerates the set of values for IpSecConnectionTunnelRoutingEnum diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_tunnel_shared_secret.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_tunnel_shared_secret.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_tunnel_shared_secret.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_tunnel_shared_secret.go index 7948e4bba..2337fdc71 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ip_sec_connection_tunnel_shared_secret.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ip_sec_connection_tunnel_shared_secret.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // IpSecConnectionTunnelSharedSecret The tunnel's shared secret (pre-shared key). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/ipv6.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/ipv6.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/ipv6.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/ipv6.go index 38d7adb40..3d7a7d0b6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/ipv6.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/ipv6.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Ipv6 An *IPv6* is a conceptual term that refers to an IPv6 address and related properties. @@ -22,10 +22,10 @@ import ( // You can create and assign an IPv6 to any VNIC that is in an IPv6-enabled subnet in an // IPv6-enabled VCN. // **Note:** IPv6 addressing is currently supported only in certain regions. For important -// details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). +// details about IPv6 addressing in a VCN, see IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). type Ipv6 struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment containing the IPv6. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the IPv6. // This is the same as the VNIC's compartment. CompartmentId *string `mandatory:"true" json:"compartmentId"` @@ -33,29 +33,25 @@ type Ipv6 struct { // entering confidential information. DisplayName *string `mandatory:"true" json:"displayName"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the IPv6. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the IPv6. Id *string `mandatory:"true" json:"id"` // The IPv6 address of the `IPv6` object. The address is within the private IPv6 CIDR block // of the VNIC's subnet (see the `ipv6CidrBlock` attribute for the Subnet - // object). + // object. // Example: `2001:0db8:0123:1111:abcd:ef01:2345:6789` IpAddress *string `mandatory:"true" json:"ipAddress"` // The IPv6's current state. LifecycleState Ipv6LifecycleStateEnum `mandatory:"true" json:"lifecycleState"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the subnet the VNIC is in. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet the VNIC is in. SubnetId *string `mandatory:"true" json:"subnetId"` // The date and time the IPv6 was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VNIC the IPv6 is assigned to. - // The VNIC and IPv6 must be in the same subnet. - VnicId *string `mandatory:"true" json:"vnicId"` - // Defined tags for this resource. Each key is predefined and scoped to a // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). // Example: `{"Operations": {"CostCenter": "42"}}` @@ -85,6 +81,10 @@ type Ipv6 struct { // This is null if the IPv6 is created with `isInternetAccessAllowed` set to `false`. // Example: `2001:0db8:0123:1111:abcd:ef01:2345:6789` PublicIpAddress *string `mandatory:"false" json:"publicIpAddress"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VNIC the IPv6 is assigned to. + // The VNIC and IPv6 must be in the same subnet. + VnicId *string `mandatory:"false" json:"vnicId"` } func (m Ipv6) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_agent_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_agent_config_details.go new file mode 100644 index 000000000..19ef49c0e --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_agent_config_details.go @@ -0,0 +1,63 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// LaunchInstanceAgentConfigDetails Configuration options for the Oracle Cloud Agent software running on the instance. +type LaunchInstanceAgentConfigDetails struct { + + // Whether Oracle Cloud Agent can gather performance metrics and monitor the instance using the + // monitoring plugins. Default value is false (monitoring plugins are enabled). + // These are the monitoring plugins: Compute Instance Monitoring + // and Custom Logs Monitoring. + // The monitoring plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isMonitoringDisabled` is true, all of the monitoring plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isMonitoringDisabled` is false, all of the monitoring plugins are enabled. You + // can optionally disable individual monitoring plugins by providing a value in the `pluginsConfig` + // object. + IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + + // Whether Oracle Cloud Agent can run all the available management plugins. + // Default value is false (management plugins are enabled). + // These are the management plugins: OS Management Service Agent and Compute Instance + // Run Command. + // The management plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isManagementDisabled` is true, all of the management plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isManagementDisabled` is false, all of the management plugins are enabled. You + // can optionally disable individual management plugins by providing a value in the `pluginsConfig` + // object. + IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + + // Whether Oracle Cloud Agent can run all the available plugins. + // This includes the management and monitoring plugins. + // To get a list of available plugins, use the + // ListInstanceagentAvailablePlugins + // operation in the Oracle Cloud Agent API. For more information about the available plugins, see + // Managing Plugins with Oracle Cloud Agent (https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/manage-plugins.htm). + AreAllPluginsDisabled *bool `mandatory:"false" json:"areAllPluginsDisabled"` + + // The configuration of plugins associated with this instance. + PluginsConfig []InstanceAgentPluginConfigDetails `mandatory:"false" json:"pluginsConfig"` +} + +func (m LaunchInstanceAgentConfigDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_availability_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_availability_config_details.go similarity index 78% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_instance_availability_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_availability_config_details.go index 1682b0f05..3eafd0845 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_availability_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_availability_config_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,16 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// LaunchInstanceAvailabilityConfigDetails Options for customers to define the general policy of how compute service perform maintenance on VM instances. +// LaunchInstanceAvailabilityConfigDetails Options for defining the availability of a VM instance after a maintenance event that impacts the underlying hardware. type LaunchInstanceAvailabilityConfigDetails struct { - // Actions customers can specify that would be applied to their instances after scheduled or unexpected host maintenance. - // * `RESTORE_INSTANCE` - This would be the default action if recoveryAction is not set. VM instances - // will be restored to the power state it was in before maintenance. - // * `STOP_INSTANCE` - This action allow customers to have their VM instances be stopped after maintenance. + // The lifecycle state for an instance when it is recovered after infrastructure maintenance. + // * `RESTORE_INSTANCE` - The instance is restored to the lifecycle state it was in before the maintenance event. + // If the instance was running, it is automatically rebooted. This is the default action when a value is not set. + // * `STOP_INSTANCE` - The instance is recovered in the stopped state. RecoveryAction LaunchInstanceAvailabilityConfigDetailsRecoveryActionEnum `mandatory:"false" json:"recoveryAction,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_configuration_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_configuration_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_instance_configuration_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_configuration_request_response.go index 03fc8d7d9..18a412df6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_configuration_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_configuration_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // LaunchInstanceConfigurationRequest wrapper for the LaunchInstanceConfiguration operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/LaunchInstanceConfiguration.go.html to see an example of how to use LaunchInstanceConfigurationRequest. type LaunchInstanceConfigurationRequest struct { // The OCID of the instance configuration. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_instance_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_details.go index f5bb16228..df471d090 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // LaunchInstanceDetails Instance launch details. @@ -34,8 +34,6 @@ type LaunchInstanceDetails struct { // You can enumerate all available shapes by calling ListShapes. Shape *string `mandatory:"true" json:"shape"` - // Details for the primary VNIC, which is automatically created and attached when - // the instance is launched. CreateVnicDetails *CreateVnicDetails `mandatory:"false" json:"createVnicDetails"` // The OCID of the dedicated VM host. @@ -107,10 +105,10 @@ type LaunchInstanceDetails struct { // For more information about iPXE, see http://ipxe.org. IpxeScript *string `mandatory:"false" json:"ipxeScript"` - // Options for tuning the compatibility and performance of VM shapes. The values that you specify override any - // default values. LaunchOptions *LaunchOptions `mandatory:"false" json:"launchOptions"` + InstanceOptions *InstanceOptions `mandatory:"false" json:"instanceOptions"` + AvailabilityConfig *LaunchInstanceAvailabilityConfigDetails `mandatory:"false" json:"availabilityConfig"` // Custom metadata key/value pairs that you provide, such as the SSH public key @@ -154,8 +152,6 @@ type LaunchInstanceDetails struct { ShapeConfig *LaunchInstanceShapeConfigDetails `mandatory:"false" json:"shapeConfig"` - // Details for creating an instance. - // Use this parameter to specify whether a boot volume or an image should be used to launch a new instance. SourceDetails InstanceSourceDetails `mandatory:"false" json:"sourceDetails"` // Deprecated. Instead use `subnetId` in @@ -163,8 +159,10 @@ type LaunchInstanceDetails struct { // At least one of them is required; if you provide both, the values must match. SubnetId *string `mandatory:"false" json:"subnetId"` - // Whether to enable in-transit encryption for the data volume's paravirtualized attachment. The default value is false. + // Whether to enable in-transit encryption for the data volume's paravirtualized attachment. This field applies to both block volumes and boot volumes. The default value is false. IsPvEncryptionInTransitEnabled *bool `mandatory:"false" json:"isPvEncryptionInTransitEnabled"` + + PlatformConfig LaunchInstancePlatformConfig `mandatory:"false" json:"platformConfig"` } func (m LaunchInstanceDetails) String() string { @@ -185,6 +183,7 @@ func (m *LaunchInstanceDetails) UnmarshalJSON(data []byte) (e error) { ImageId *string `json:"imageId"` IpxeScript *string `json:"ipxeScript"` LaunchOptions *LaunchOptions `json:"launchOptions"` + InstanceOptions *InstanceOptions `json:"instanceOptions"` AvailabilityConfig *LaunchInstanceAvailabilityConfigDetails `json:"availabilityConfig"` Metadata map[string]string `json:"metadata"` AgentConfig *LaunchInstanceAgentConfigDetails `json:"agentConfig"` @@ -192,6 +191,7 @@ func (m *LaunchInstanceDetails) UnmarshalJSON(data []byte) (e error) { SourceDetails instancesourcedetails `json:"sourceDetails"` SubnetId *string `json:"subnetId"` IsPvEncryptionInTransitEnabled *bool `json:"isPvEncryptionInTransitEnabled"` + PlatformConfig launchinstanceplatformconfig `json:"platformConfig"` AvailabilityDomain *string `json:"availabilityDomain"` CompartmentId *string `json:"compartmentId"` Shape *string `json:"shape"` @@ -224,6 +224,8 @@ func (m *LaunchInstanceDetails) UnmarshalJSON(data []byte) (e error) { m.LaunchOptions = model.LaunchOptions + m.InstanceOptions = model.InstanceOptions + m.AvailabilityConfig = model.AvailabilityConfig m.Metadata = model.Metadata @@ -246,6 +248,16 @@ func (m *LaunchInstanceDetails) UnmarshalJSON(data []byte) (e error) { m.IsPvEncryptionInTransitEnabled = model.IsPvEncryptionInTransitEnabled + nn, e = model.PlatformConfig.UnmarshalPolymorphicJSON(model.PlatformConfig.JsonData) + if e != nil { + return + } + if nn != nil { + m.PlatformConfig = nn.(LaunchInstancePlatformConfig) + } else { + m.PlatformConfig = nil + } + m.AvailabilityDomain = model.AvailabilityDomain m.CompartmentId = model.CompartmentId diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_platform_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_platform_config.go new file mode 100644 index 000000000..304e29692 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_platform_config.go @@ -0,0 +1,92 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "encoding/json" + "github.com/oracle/oci-go-sdk/v36/common" +) + +// LaunchInstancePlatformConfig The platform configuration requested for the instance. +// If the parameter is provided, the instance is created with the platform configured as specified. If some +// properties are missing or the entire parameter is not provided, the instance is created +// with the default configuration values for the `shape` that you specify. +// Each shape only supports certain configurable values. If the values that you provide are not valid for the +// specified `shape`, an error is returned. +type LaunchInstancePlatformConfig interface { +} + +type launchinstanceplatformconfig struct { + JsonData []byte + Type string `json:"type"` +} + +// UnmarshalJSON unmarshals json +func (m *launchinstanceplatformconfig) UnmarshalJSON(data []byte) error { + m.JsonData = data + type Unmarshalerlaunchinstanceplatformconfig launchinstanceplatformconfig + s := struct { + Model Unmarshalerlaunchinstanceplatformconfig + }{} + err := json.Unmarshal(data, &s.Model) + if err != nil { + return err + } + m.Type = s.Model.Type + + return err +} + +// UnmarshalPolymorphicJSON unmarshals polymorphic json +func (m *launchinstanceplatformconfig) UnmarshalPolymorphicJSON(data []byte) (interface{}, error) { + + if data == nil || string(data) == "null" { + return nil, nil + } + + var err error + switch m.Type { + case "AMD_MILAN_BM": + mm := AmdMilanBmLaunchInstancePlatformConfig{} + err = json.Unmarshal(data, &mm) + return mm, err + default: + return *m, nil + } +} + +func (m launchinstanceplatformconfig) String() string { + return common.PointerString(m) +} + +// LaunchInstancePlatformConfigTypeEnum Enum with underlying type: string +type LaunchInstancePlatformConfigTypeEnum string + +// Set of constants representing the allowable values for LaunchInstancePlatformConfigTypeEnum +const ( + LaunchInstancePlatformConfigTypeAmdMilanBm LaunchInstancePlatformConfigTypeEnum = "AMD_MILAN_BM" +) + +var mappingLaunchInstancePlatformConfigType = map[string]LaunchInstancePlatformConfigTypeEnum{ + "AMD_MILAN_BM": LaunchInstancePlatformConfigTypeAmdMilanBm, +} + +// GetLaunchInstancePlatformConfigTypeEnumValues Enumerates the set of values for LaunchInstancePlatformConfigTypeEnum +func GetLaunchInstancePlatformConfigTypeEnumValues() []LaunchInstancePlatformConfigTypeEnum { + values := make([]LaunchInstancePlatformConfigTypeEnum, 0) + for _, v := range mappingLaunchInstancePlatformConfigType { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_instance_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_request_response.go index 95c183807..1194597d8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // LaunchInstanceRequest wrapper for the LaunchInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/LaunchInstance.go.html to see an example of how to use LaunchInstanceRequest. type LaunchInstanceRequest struct { // Instance details diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_shape_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_shape_config_details.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_instance_shape_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_shape_config_details.go index d24ee57d9..f99b09d69 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_instance_shape_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_instance_shape_config_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // LaunchInstanceShapeConfigDetails The shape configuration requested for the instance. @@ -29,6 +29,9 @@ type LaunchInstanceShapeConfigDetails struct { // The total number of OCPUs available to the instance. Ocpus *float32 `mandatory:"false" json:"ocpus"` + + // The total amount of memory available to the instance, in gigabytes. + MemoryInGBs *float32 `mandatory:"false" json:"memoryInGBs"` } func (m LaunchInstanceShapeConfigDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/launch_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_options.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/launch_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/launch_options.go index c0adb4b71..e2acd4781 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/launch_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/launch_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // LaunchOptions Options for tuning the compatibility and performance of VM shapes. The values that you specify override any @@ -25,21 +25,21 @@ type LaunchOptions struct { // * `ISCSI` - ISCSI attached block storage device. // * `SCSI` - Emulated SCSI disk. // * `IDE` - Emulated IDE disk. - // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data + // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data // volumes on Oracle-provided images. // * `PARAVIRTUALIZED` - Paravirtualized disk. This is the default for boot volumes and remote block // storage volumes on Oracle-provided images. BootVolumeType LaunchOptionsBootVolumeTypeEnum `mandatory:"false" json:"bootVolumeType,omitempty"` - // Firmware used to boot VM. Select the option that matches your operating system. - // * `BIOS` - Boot VM using BIOS style firmware. This is compatible with both 32 bit and 64 bit operating + // Firmware used to boot VM. Select the option that matches your operating system. + // * `BIOS` - Boot VM using BIOS style firmware. This is compatible with both 32 bit and 64 bit operating // systems that boot using MBR style bootloaders. - // * `UEFI_64` - Boot VM using UEFI style firmware compatible with 64 bit operating systems. This is the + // * `UEFI_64` - Boot VM using UEFI style firmware compatible with 64 bit operating systems. This is the // default for Oracle-provided images. Firmware LaunchOptionsFirmwareEnum `mandatory:"false" json:"firmware,omitempty"` // Emulation type for the physical network interface card (NIC). - // * `E1000` - Emulated Gigabit ethernet controller. Compatible with Linux e1000 network driver. + // * `E1000` - Emulated Gigabit ethernet controller. Compatible with Linux e1000 network driver. // * `VFIO` - Direct attached Virtual Function network controller. This is the networking type // when you launch an instance using hardware-assisted (SR-IOV) networking. // * `PARAVIRTUALIZED` - VM instances launch with paravirtualized devices using VirtIO drivers. @@ -49,7 +49,7 @@ type LaunchOptions struct { // * `ISCSI` - ISCSI attached block storage device. // * `SCSI` - Emulated SCSI disk. // * `IDE` - Emulated IDE disk. - // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data + // * `VFIO` - Direct attached Virtual Function storage. This is the default option for local data // volumes on Oracle-provided images. // * `PARAVIRTUALIZED` - Paravirtualized disk. This is the default for boot volumes and remote block // storage volumes on Oracle-provided images. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/letter_of_authority.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/letter_of_authority.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/letter_of_authority.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/letter_of_authority.go index ce0fae917..df03dc4cb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/letter_of_authority.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/letter_of_authority.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // LetterOfAuthority The Letter of Authority for the cross-connect. You must submit this letter when diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_allowed_peer_regions_for_remote_peering_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_allowed_peer_regions_for_remote_peering_request_response.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/list_allowed_peer_regions_for_remote_peering_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_allowed_peer_regions_for_remote_peering_request_response.go index 42adc9d50..a855c1030 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_allowed_peer_regions_for_remote_peering_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_allowed_peer_regions_for_remote_peering_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListAllowedPeerRegionsForRemotePeeringRequest wrapper for the ListAllowedPeerRegionsForRemotePeering operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAllowedPeerRegionsForRemotePeering.go.html to see an example of how to use ListAllowedPeerRegionsForRemotePeeringRequest. type ListAllowedPeerRegionsForRemotePeeringRequest struct { // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_listing_resource_versions_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_listing_resource_versions_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_listing_resource_versions_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_listing_resource_versions_request_response.go index 7fc014f0e..ea1e5f414 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_listing_resource_versions_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_listing_resource_versions_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListAppCatalogListingResourceVersionsRequest wrapper for the ListAppCatalogListingResourceVersions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAppCatalogListingResourceVersions.go.html to see an example of how to use ListAppCatalogListingResourceVersionsRequest. type ListAppCatalogListingResourceVersionsRequest struct { // The OCID of the listing. @@ -62,9 +66,6 @@ type ListAppCatalogListingResourceVersionsResponse struct { // A list of []AppCatalogListingResourceVersionSummary instances Items []AppCatalogListingResourceVersionSummary `presentIn:"body"` - // For optimistic concurrency control. See `if-match`. - Etag *string `presentIn:"header" name:"etag"` - // For list pagination. When this header appears in the response, additional pages // of results remain. For important details about how pagination works, see // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_listings_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_listings_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_listings_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_listings_request_response.go index 47d1a57e1..650968cba 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_listings_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_listings_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListAppCatalogListingsRequest wrapper for the ListAppCatalogListings operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAppCatalogListings.go.html to see an example of how to use ListAppCatalogListingsRequest. type ListAppCatalogListingsRequest struct { // For list pagination. The maximum number of results per page, or items to return in a paginated diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_subscriptions_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_subscriptions_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_subscriptions_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_subscriptions_request_response.go index c3afc2f33..e88491d2d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_app_catalog_subscriptions_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_app_catalog_subscriptions_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListAppCatalogSubscriptionsRequest wrapper for the ListAppCatalogSubscriptions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListAppCatalogSubscriptions.go.html to see an example of how to use ListAppCatalogSubscriptionsRequest. type ListAppCatalogSubscriptionsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_boot_volume_attachments_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volume_attachments_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_boot_volume_attachments_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volume_attachments_request_response.go index aaa2a8691..fe466802b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_boot_volume_attachments_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volume_attachments_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListBootVolumeAttachmentsRequest wrapper for the ListBootVolumeAttachments operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListBootVolumeAttachments.go.html to see an example of how to use ListBootVolumeAttachmentsRequest. type ListBootVolumeAttachmentsRequest struct { // The name of the availability domain. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_boot_volume_backups_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volume_backups_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_boot_volume_backups_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volume_backups_request_response.go index b52527785..2494f205d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_boot_volume_backups_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volume_backups_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListBootVolumeBackupsRequest wrapper for the ListBootVolumeBackups operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListBootVolumeBackups.go.html to see an example of how to use ListBootVolumeBackupsRequest. type ListBootVolumeBackupsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -48,7 +52,8 @@ type ListBootVolumeBackupsRequest struct { // is case sensitive. SortOrder ListBootVolumeBackupsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state value is + // case-insensitive. LifecycleState BootVolumeBackupLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_boot_volumes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volumes_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_boot_volumes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volumes_request_response.go index 4b181f14c..38d142daf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_boot_volumes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_boot_volumes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListBootVolumesRequest wrapper for the ListBootVolumes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListBootVolumes.go.html to see an example of how to use ListBootVolumesRequest. type ListBootVolumesRequest struct { // The name of the availability domain. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_allocated_ranges_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_allocated_ranges_request_response.go new file mode 100644 index 000000000..f2ef80b3a --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_allocated_ranges_request_response.go @@ -0,0 +1,82 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ListByoipAllocatedRangesRequest wrapper for the ListByoipAllocatedRanges operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListByoipAllocatedRanges.go.html to see an example of how to use ListByoipAllocatedRangesRequest. +type ListByoipAllocatedRangesRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For list pagination. The maximum number of results per page, or items to return in a paginated + // "List" call. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + // Example: `50` + Limit *int `mandatory:"false" contributesTo:"query" name:"limit"` + + // For list pagination. The value of the `opc-next-page` response header from the previous "List" + // call. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + Page *string `mandatory:"false" contributesTo:"query" name:"page"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ListByoipAllocatedRangesRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ListByoipAllocatedRangesRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ListByoipAllocatedRangesRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ListByoipAllocatedRangesResponse wrapper for the ListByoipAllocatedRanges operation +type ListByoipAllocatedRangesResponse struct { + + // The underlying http response + RawResponse *http.Response + + // A list of ByoipAllocatedRangeCollection instances + ByoipAllocatedRangeCollection `presentIn:"body"` + + // For list pagination. When this header appears in the response, additional pages + // of results remain. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + OpcNextPage *string `presentIn:"header" name:"opc-next-page"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response ListByoipAllocatedRangesResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ListByoipAllocatedRangesResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_ranges_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_ranges_request_response.go new file mode 100644 index 000000000..2efacde84 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_byoip_ranges_request_response.go @@ -0,0 +1,147 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ListByoipRangesRequest wrapper for the ListByoipRanges operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListByoipRanges.go.html to see an example of how to use ListByoipRangesRequest. +type ListByoipRangesRequest struct { + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. + CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For list pagination. The maximum number of results per page, or items to return in a paginated + // "List" call. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + // Example: `50` + Limit *int `mandatory:"false" contributesTo:"query" name:"limit"` + + // For list pagination. The value of the `opc-next-page` response header from the previous "List" + // call. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + Page *string `mandatory:"false" contributesTo:"query" name:"page"` + + // A filter to return only resources that match the given display name exactly. + DisplayName *string `mandatory:"false" contributesTo:"query" name:"displayName"` + + // A filter to return only resources that match the given lifecycle state name exactly. + LifecycleState *string `mandatory:"false" contributesTo:"query" name:"lifecycleState"` + + // The field to sort by. You can provide one sort order (`sortOrder`). Default order for + // TIMECREATED is descending. Default order for DISPLAYNAME is ascending. The DISPLAYNAME + // sort order is case sensitive. + // **Note:** In general, some "List" operations (for example, `ListInstances`) let you + // optionally filter by availability domain if the scope of the resource type is within a + // single availability domain. If you call one of these "List" operations without specifying + // an availability domain, the resources are grouped by availability domain, then sorted. + SortBy ListByoipRangesSortByEnum `mandatory:"false" contributesTo:"query" name:"sortBy" omitEmpty:"true"` + + // The sort order to use, either ascending (`ASC`) or descending (`DESC`). The DISPLAYNAME sort order + // is case sensitive. + SortOrder ListByoipRangesSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ListByoipRangesRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ListByoipRangesRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ListByoipRangesRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ListByoipRangesResponse wrapper for the ListByoipRanges operation +type ListByoipRangesResponse struct { + + // The underlying http response + RawResponse *http.Response + + // A list of ByoipRangeCollection instances + ByoipRangeCollection `presentIn:"body"` + + // For list pagination. When this header appears in the response, additional pages + // of results remain. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + OpcNextPage *string `presentIn:"header" name:"opc-next-page"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response ListByoipRangesResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ListByoipRangesResponse) HTTPResponse() *http.Response { + return response.RawResponse +} + +// ListByoipRangesSortByEnum Enum with underlying type: string +type ListByoipRangesSortByEnum string + +// Set of constants representing the allowable values for ListByoipRangesSortByEnum +const ( + ListByoipRangesSortByTimecreated ListByoipRangesSortByEnum = "TIMECREATED" + ListByoipRangesSortByDisplayname ListByoipRangesSortByEnum = "DISPLAYNAME" +) + +var mappingListByoipRangesSortBy = map[string]ListByoipRangesSortByEnum{ + "TIMECREATED": ListByoipRangesSortByTimecreated, + "DISPLAYNAME": ListByoipRangesSortByDisplayname, +} + +// GetListByoipRangesSortByEnumValues Enumerates the set of values for ListByoipRangesSortByEnum +func GetListByoipRangesSortByEnumValues() []ListByoipRangesSortByEnum { + values := make([]ListByoipRangesSortByEnum, 0) + for _, v := range mappingListByoipRangesSortBy { + values = append(values, v) + } + return values +} + +// ListByoipRangesSortOrderEnum Enum with underlying type: string +type ListByoipRangesSortOrderEnum string + +// Set of constants representing the allowable values for ListByoipRangesSortOrderEnum +const ( + ListByoipRangesSortOrderAsc ListByoipRangesSortOrderEnum = "ASC" + ListByoipRangesSortOrderDesc ListByoipRangesSortOrderEnum = "DESC" +) + +var mappingListByoipRangesSortOrder = map[string]ListByoipRangesSortOrderEnum{ + "ASC": ListByoipRangesSortOrderAsc, + "DESC": ListByoipRangesSortOrderDesc, +} + +// GetListByoipRangesSortOrderEnumValues Enumerates the set of values for ListByoipRangesSortOrderEnum +func GetListByoipRangesSortOrderEnumValues() []ListByoipRangesSortOrderEnum { + values := make([]ListByoipRangesSortOrderEnum, 0) + for _, v := range mappingListByoipRangesSortOrder { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cluster_network_instances_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cluster_network_instances_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cluster_network_instances_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cluster_network_instances_request_response.go index 003a5e980..e691bebea 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cluster_network_instances_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cluster_network_instances_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListClusterNetworkInstancesRequest wrapper for the ListClusterNetworkInstances operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListClusterNetworkInstances.go.html to see an example of how to use ListClusterNetworkInstancesRequest. type ListClusterNetworkInstancesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cluster_networks_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cluster_networks_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cluster_networks_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cluster_networks_request_response.go index ed571f1e9..d7f753e44 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cluster_networks_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cluster_networks_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListClusterNetworksRequest wrapper for the ListClusterNetworks operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListClusterNetworks.go.html to see an example of how to use ListClusterNetworksRequest. type ListClusterNetworksRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_compute_global_image_capability_schema_versions_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_global_image_capability_schema_versions_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_compute_global_image_capability_schema_versions_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_global_image_capability_schema_versions_request_response.go index cd5969e90..cb1347b0b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_compute_global_image_capability_schema_versions_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_global_image_capability_schema_versions_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListComputeGlobalImageCapabilitySchemaVersionsRequest wrapper for the ListComputeGlobalImageCapabilitySchemaVersions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListComputeGlobalImageCapabilitySchemaVersions.go.html to see an example of how to use ListComputeGlobalImageCapabilitySchemaVersionsRequest. type ListComputeGlobalImageCapabilitySchemaVersionsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compute global image capability schema diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_compute_global_image_capability_schemas_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_global_image_capability_schemas_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_compute_global_image_capability_schemas_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_global_image_capability_schemas_request_response.go index 67748c297..063263236 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_compute_global_image_capability_schemas_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_global_image_capability_schemas_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListComputeGlobalImageCapabilitySchemasRequest wrapper for the ListComputeGlobalImageCapabilitySchemas operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListComputeGlobalImageCapabilitySchemas.go.html to see an example of how to use ListComputeGlobalImageCapabilitySchemasRequest. type ListComputeGlobalImageCapabilitySchemasRequest struct { // A filter to return only resources that match the given compartment OCID exactly. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_compute_image_capability_schemas_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_image_capability_schemas_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_compute_image_capability_schemas_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_image_capability_schemas_request_response.go index f273f70d0..d42d2f806 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_compute_image_capability_schemas_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_compute_image_capability_schemas_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListComputeImageCapabilitySchemasRequest wrapper for the ListComputeImageCapabilitySchemas operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListComputeImageCapabilitySchemas.go.html to see an example of how to use ListComputeImageCapabilitySchemasRequest. type ListComputeImageCapabilitySchemasRequest struct { // A filter to return only resources that match the given compartment OCID exactly. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_console_histories_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_console_histories_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_console_histories_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_console_histories_request_response.go index 307bf0994..680cb5faa 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_console_histories_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_console_histories_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListConsoleHistoriesRequest wrapper for the ListConsoleHistories operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListConsoleHistories.go.html to see an example of how to use ListConsoleHistoriesRequest. type ListConsoleHistoriesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -46,7 +50,8 @@ type ListConsoleHistoriesRequest struct { // is case sensitive. SortOrder ListConsoleHistoriesSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state + // value is case-insensitive. LifecycleState ConsoleHistoryLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cpe_device_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cpe_device_shapes_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cpe_device_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cpe_device_shapes_request_response.go index e0168b18e..3dafd32e7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cpe_device_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cpe_device_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListCpeDeviceShapesRequest wrapper for the ListCpeDeviceShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCpeDeviceShapes.go.html to see an example of how to use ListCpeDeviceShapesRequest. type ListCpeDeviceShapesRequest struct { // For list pagination. The maximum number of results per page, or items to return in a paginated diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cpes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cpes_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cpes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cpes_request_response.go index c6fa5aff2..293e1f98e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cpes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cpes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListCpesRequest wrapper for the ListCpes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCpes.go.html to see an example of how to use ListCpesRequest. type ListCpesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cross_connect_groups_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connect_groups_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cross_connect_groups_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connect_groups_request_response.go index 7c3652e68..c12b70528 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cross_connect_groups_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connect_groups_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListCrossConnectGroupsRequest wrapper for the ListCrossConnectGroups operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossConnectGroups.go.html to see an example of how to use ListCrossConnectGroupsRequest. type ListCrossConnectGroupsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -42,7 +46,8 @@ type ListCrossConnectGroupsRequest struct { // is case sensitive. SortOrder ListCrossConnectGroupsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to return only resources that match the specified lifecycle state. The value is case insensitive. + // A filter to return only resources that match the specified lifecycle + // state. The value is case insensitive. LifecycleState CrossConnectGroupLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cross_connect_locations_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connect_locations_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cross_connect_locations_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connect_locations_request_response.go index 5b194fd25..e062054ff 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cross_connect_locations_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connect_locations_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListCrossConnectLocationsRequest wrapper for the ListCrossConnectLocations operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossConnectLocations.go.html to see an example of how to use ListCrossConnectLocationsRequest. type ListCrossConnectLocationsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_cross_connects_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connects_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_cross_connects_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connects_request_response.go index 412866c36..33f5fc24d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_cross_connects_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_cross_connects_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListCrossConnectsRequest wrapper for the ListCrossConnects operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossConnects.go.html to see an example of how to use ListCrossConnectsRequest. type ListCrossConnectsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -45,7 +49,8 @@ type ListCrossConnectsRequest struct { // is case sensitive. SortOrder ListCrossConnectsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to return only resources that match the specified lifecycle state. The value is case insensitive. + // A filter to return only resources that match the specified lifecycle + // state. The value is case insensitive. LifecycleState CrossConnectLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_crossconnect_port_speed_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_crossconnect_port_speed_shapes_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_crossconnect_port_speed_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_crossconnect_port_speed_shapes_request_response.go index 8aeac709e..f3d6e1cb8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_crossconnect_port_speed_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_crossconnect_port_speed_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListCrossconnectPortSpeedShapesRequest wrapper for the ListCrossconnectPortSpeedShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListCrossconnectPortSpeedShapes.go.html to see an example of how to use ListCrossconnectPortSpeedShapesRequest. type ListCrossconnectPortSpeedShapesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_instance_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_instance_shapes_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_instance_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_instance_shapes_request_response.go index 69cf0b5fb..dba140dfd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_instance_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_instance_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDedicatedVmHostInstanceShapesRequest wrapper for the ListDedicatedVmHostInstanceShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHostInstanceShapes.go.html to see an example of how to use ListDedicatedVmHostInstanceShapesRequest. type ListDedicatedVmHostInstanceShapesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_instances_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_instances_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_instances_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_instances_request_response.go index 05152a72c..dc9ce28a0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_instances_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_instances_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDedicatedVmHostInstancesRequest wrapper for the ListDedicatedVmHostInstances operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHostInstances.go.html to see an example of how to use ListDedicatedVmHostInstancesRequest. type ListDedicatedVmHostInstancesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_shapes_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_shapes_request_response.go index 42a97f5f1..16ec1a938 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_host_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_host_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDedicatedVmHostShapesRequest wrapper for the ListDedicatedVmHostShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHostShapes.go.html to see an example of how to use ListDedicatedVmHostShapesRequest. type ListDedicatedVmHostShapesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_hosts_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_hosts_request_response.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_hosts_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_hosts_request_response.go index 8b79fd8a4..d45ce541c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_dedicated_vm_hosts_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dedicated_vm_hosts_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDedicatedVmHostsRequest wrapper for the ListDedicatedVmHosts operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDedicatedVmHosts.go.html to see an example of how to use ListDedicatedVmHostsRequest. type ListDedicatedVmHostsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_dhcp_options_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dhcp_options_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_dhcp_options_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_dhcp_options_request_response.go index 659fbada6..9c87a1387 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_dhcp_options_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_dhcp_options_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDhcpOptionsRequest wrapper for the ListDhcpOptions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDhcpOptions.go.html to see an example of how to use ListDhcpOptionsRequest. type ListDhcpOptionsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -45,7 +49,8 @@ type ListDhcpOptionsRequest struct { // is case sensitive. SortOrder ListDhcpOptionsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState DhcpOptionsLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_drg_attachments_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_drg_attachments_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/list_drg_attachments_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_drg_attachments_request_response.go index 09042d4b8..216cb0cfc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_drg_attachments_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_drg_attachments_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDrgAttachmentsRequest wrapper for the ListDrgAttachments operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDrgAttachments.go.html to see an example of how to use ListDrgAttachmentsRequest. type ListDrgAttachmentsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // The OCID of the DRG. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_drgs_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_drgs_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_drgs_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_drgs_request_response.go index e8db8fe52..531dc3f21 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_drgs_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_drgs_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListDrgsRequest wrapper for the ListDrgs operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListDrgs.go.html to see an example of how to use ListDrgsRequest. type ListDrgsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_fast_connect_provider_services_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_fast_connect_provider_services_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_fast_connect_provider_services_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_fast_connect_provider_services_request_response.go index 3340c3a15..fb60d543b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_fast_connect_provider_services_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_fast_connect_provider_services_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListFastConnectProviderServicesRequest wrapper for the ListFastConnectProviderServices operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListFastConnectProviderServices.go.html to see an example of how to use ListFastConnectProviderServicesRequest. type ListFastConnectProviderServicesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go index 4fe98aeae..d5164cc68 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_fast_connect_provider_virtual_circuit_bandwidth_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListFastConnectProviderVirtualCircuitBandwidthShapesRequest wrapper for the ListFastConnectProviderVirtualCircuitBandwidthShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListFastConnectProviderVirtualCircuitBandwidthShapes.go.html to see an example of how to use ListFastConnectProviderVirtualCircuitBandwidthShapesRequest. type ListFastConnectProviderVirtualCircuitBandwidthShapesRequest struct { // The OCID of the provider service. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_i_p_sec_connection_tunnels_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_i_p_sec_connection_tunnels_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_i_p_sec_connection_tunnels_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_i_p_sec_connection_tunnels_request_response.go index 33b8981ff..764e2661c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_i_p_sec_connection_tunnels_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_i_p_sec_connection_tunnels_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListIPSecConnectionTunnelsRequest wrapper for the ListIPSecConnectionTunnels operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListIPSecConnectionTunnels.go.html to see an example of how to use ListIPSecConnectionTunnelsRequest. type ListIPSecConnectionTunnelsRequest struct { // The OCID of the IPSec connection. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_i_p_sec_connections_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_i_p_sec_connections_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_i_p_sec_connections_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_i_p_sec_connections_request_response.go index 63a4f9534..2c8094c69 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_i_p_sec_connections_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_i_p_sec_connections_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListIPSecConnectionsRequest wrapper for the ListIPSecConnections operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListIPSecConnections.go.html to see an example of how to use ListIPSecConnectionsRequest. type ListIPSecConnectionsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_image_shape_compatibility_entries_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_image_shape_compatibility_entries_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_image_shape_compatibility_entries_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_image_shape_compatibility_entries_request_response.go index 6c3e50c35..53702b785 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_image_shape_compatibility_entries_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_image_shape_compatibility_entries_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListImageShapeCompatibilityEntriesRequest wrapper for the ListImageShapeCompatibilityEntries operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListImageShapeCompatibilityEntries.go.html to see an example of how to use ListImageShapeCompatibilityEntriesRequest. type ListImageShapeCompatibilityEntriesRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_images_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_images_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_images_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_images_request_response.go index 4731af781..6ab6eb4ea 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_images_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_images_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListImagesRequest wrapper for the ListImages operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListImages.go.html to see an example of how to use ListImagesRequest. type ListImagesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -53,7 +57,8 @@ type ListImagesRequest struct { // is case sensitive. SortOrder ListImagesSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state + // value is case-insensitive. LifecycleState ImageLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_configurations_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_configurations_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_instance_configurations_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_configurations_request_response.go index 2d869cbf0..5b44d20ae 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_configurations_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_configurations_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInstanceConfigurationsRequest wrapper for the ListInstanceConfigurations operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstanceConfigurations.go.html to see an example of how to use ListInstanceConfigurationsRequest. type ListInstanceConfigurationsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_console_connections_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_console_connections_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_instance_console_connections_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_console_connections_request_response.go index 5be526483..44ece9adc 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_console_connections_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_console_connections_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInstanceConsoleConnectionsRequest wrapper for the ListInstanceConsoleConnections operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstanceConsoleConnections.go.html to see an example of how to use ListInstanceConsoleConnectionsRequest. type ListInstanceConsoleConnectionsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_devices_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_devices_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_instance_devices_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_devices_request_response.go index 24e3b6e5d..90a0f316b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_devices_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_devices_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInstanceDevicesRequest wrapper for the ListInstanceDevices operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstanceDevices.go.html to see an example of how to use ListInstanceDevicesRequest. type ListInstanceDevicesRequest struct { // The OCID of the instance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_pool_instances_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_pool_instances_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_instance_pool_instances_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_pool_instances_request_response.go index 1820e3076..ab5786db1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_pool_instances_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_pool_instances_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInstancePoolInstancesRequest wrapper for the ListInstancePoolInstances operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstancePoolInstances.go.html to see an example of how to use ListInstancePoolInstancesRequest. type ListInstancePoolInstancesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_pools_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_pools_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_instance_pools_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_pools_request_response.go index 9f427afef..0b4dacf17 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_instance_pools_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instance_pools_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInstancePoolsRequest wrapper for the ListInstancePools operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstancePools.go.html to see an example of how to use ListInstancePoolsRequest. type ListInstancePoolsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -42,7 +46,8 @@ type ListInstancePoolsRequest struct { // is case sensitive. SortOrder ListInstancePoolsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state + // value is case-insensitive. LifecycleState InstancePoolSummaryLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_instances_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instances_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_instances_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_instances_request_response.go index 9f10f880d..8afa443f0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_instances_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_instances_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInstancesRequest wrapper for the ListInstances operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInstances.go.html to see an example of how to use ListInstancesRequest. type ListInstancesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -46,7 +50,8 @@ type ListInstancesRequest struct { // is case sensitive. SortOrder ListInstancesSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state + // value is case-insensitive. LifecycleState InstanceLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_internet_gateways_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_internet_gateways_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_internet_gateways_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_internet_gateways_request_response.go index 5d34a4bf2..edc117148 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_internet_gateways_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_internet_gateways_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListInternetGatewaysRequest wrapper for the ListInternetGateways operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListInternetGateways.go.html to see an example of how to use ListInternetGatewaysRequest. type ListInternetGatewaysRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -45,7 +49,8 @@ type ListInternetGatewaysRequest struct { // is case sensitive. SortOrder ListInternetGatewaysSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState InternetGatewayLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_ipv6s_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_ipv6s_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_ipv6s_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_ipv6s_request_response.go index 34b4b72b9..67f75f575 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_ipv6s_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_ipv6s_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListIpv6sRequest wrapper for the ListIpv6s operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListIpv6s.go.html to see an example of how to use ListIpv6sRequest. type ListIpv6sRequest struct { // For list pagination. The maximum number of results per page, or items to return in a paginated diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_local_peering_gateways_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_local_peering_gateways_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/list_local_peering_gateways_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_local_peering_gateways_request_response.go index 867e440e9..7209756a2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_local_peering_gateways_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_local_peering_gateways_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListLocalPeeringGatewaysRequest wrapper for the ListLocalPeeringGateways operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListLocalPeeringGateways.go.html to see an example of how to use ListLocalPeeringGatewaysRequest. type ListLocalPeeringGatewaysRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -26,7 +30,7 @@ type ListLocalPeeringGatewaysRequest struct { // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). Page *string `mandatory:"false" contributesTo:"query" name:"page"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_nat_gateways_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_nat_gateways_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_nat_gateways_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_nat_gateways_request_response.go index 4cd93a4a7..23eaf0456 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_nat_gateways_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_nat_gateways_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListNatGatewaysRequest wrapper for the ListNatGateways operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNatGateways.go.html to see an example of how to use ListNatGatewaysRequest. type ListNatGatewaysRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -45,7 +49,8 @@ type ListNatGatewaysRequest struct { // is case sensitive. SortOrder ListNatGatewaysSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to return only resources that match the specified lifecycle state. The value is case insensitive. + // A filter to return only resources that match the specified lifecycle + // state. The value is case insensitive. LifecycleState NatGatewayLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_network_security_group_security_rules_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_group_security_rules_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_network_security_group_security_rules_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_group_security_rules_request_response.go index 7ba169a5a..338565afb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_network_security_group_security_rules_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_group_security_rules_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListNetworkSecurityGroupSecurityRulesRequest wrapper for the ListNetworkSecurityGroupSecurityRules operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNetworkSecurityGroupSecurityRules.go.html to see an example of how to use ListNetworkSecurityGroupSecurityRulesRequest. type ListNetworkSecurityGroupSecurityRulesRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Direction of the security rule. Set to `EGRESS` for rules that allow outbound IP packets, diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_network_security_group_vnics_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_group_vnics_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_network_security_group_vnics_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_group_vnics_request_response.go index 19a5f7d53..efc310710 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_network_security_group_vnics_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_group_vnics_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListNetworkSecurityGroupVnicsRequest wrapper for the ListNetworkSecurityGroupVnics operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNetworkSecurityGroupVnics.go.html to see an example of how to use ListNetworkSecurityGroupVnicsRequest. type ListNetworkSecurityGroupVnicsRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // For list pagination. The maximum number of results per page, or items to return in a paginated diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_network_security_groups_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_groups_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_network_security_groups_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_groups_request_response.go index d5e6f0b98..c61b6dad7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_network_security_groups_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_network_security_groups_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListNetworkSecurityGroupsRequest wrapper for the ListNetworkSecurityGroups operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListNetworkSecurityGroups.go.html to see an example of how to use ListNetworkSecurityGroupsRequest. type ListNetworkSecurityGroupsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -45,7 +49,8 @@ type ListNetworkSecurityGroupsRequest struct { // is case sensitive. SortOrder ListNetworkSecurityGroupsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to return only resources that match the specified lifecycle state. The value is case insensitive. + // A filter to return only resources that match the specified lifecycle + // state. The value is case insensitive. LifecycleState NetworkSecurityGroupLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_private_ips_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_private_ips_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/list_private_ips_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_private_ips_request_response.go index 6ed8b4aff..251ad329e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_private_ips_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_private_ips_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListPrivateIpsRequest wrapper for the ListPrivateIps operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListPrivateIps.go.html to see an example of how to use ListPrivateIpsRequest. type ListPrivateIpsRequest struct { // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -33,7 +37,7 @@ type ListPrivateIpsRequest struct { // The OCID of the VNIC. VnicId *string `mandatory:"false" contributesTo:"query" name:"vnicId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VLAN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VLAN. VlanId *string `mandatory:"false" contributesTo:"query" name:"vlanId"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ip_pools_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ip_pools_request_response.go new file mode 100644 index 000000000..d53132bf3 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ip_pools_request_response.go @@ -0,0 +1,147 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ListPublicIpPoolsRequest wrapper for the ListPublicIpPools operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListPublicIpPools.go.html to see an example of how to use ListPublicIpPoolsRequest. +type ListPublicIpPoolsRequest struct { + + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. + CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For list pagination. The maximum number of results per page, or items to return in a paginated + // "List" call. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + // Example: `50` + Limit *int `mandatory:"false" contributesTo:"query" name:"limit"` + + // For list pagination. The value of the `opc-next-page` response header from the previous "List" + // call. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + Page *string `mandatory:"false" contributesTo:"query" name:"page"` + + // A filter to return only resources that match the given display name exactly. + DisplayName *string `mandatory:"false" contributesTo:"query" name:"displayName"` + + // A filter to return only resources that match the given BYOIP CIDR block. + ByoipRangeId *string `mandatory:"false" contributesTo:"query" name:"byoipRangeId"` + + // The field to sort by. You can provide one sort order (`sortOrder`). Default order for + // TIMECREATED is descending. Default order for DISPLAYNAME is ascending. The DISPLAYNAME + // sort order is case sensitive. + // **Note:** In general, some "List" operations (for example, `ListInstances`) let you + // optionally filter by availability domain if the scope of the resource type is within a + // single availability domain. If you call one of these "List" operations without specifying + // an availability domain, the resources are grouped by availability domain, then sorted. + SortBy ListPublicIpPoolsSortByEnum `mandatory:"false" contributesTo:"query" name:"sortBy" omitEmpty:"true"` + + // The sort order to use, either ascending (`ASC`) or descending (`DESC`). The DISPLAYNAME sort order + // is case sensitive. + SortOrder ListPublicIpPoolsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ListPublicIpPoolsRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ListPublicIpPoolsRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ListPublicIpPoolsRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ListPublicIpPoolsResponse wrapper for the ListPublicIpPools operation +type ListPublicIpPoolsResponse struct { + + // The underlying http response + RawResponse *http.Response + + // A list of PublicIpPoolCollection instances + PublicIpPoolCollection `presentIn:"body"` + + // For list pagination. When this header appears in the response, additional pages + // of results remain. For important details about how pagination works, see + // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). + OpcNextPage *string `presentIn:"header" name:"opc-next-page"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response ListPublicIpPoolsResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ListPublicIpPoolsResponse) HTTPResponse() *http.Response { + return response.RawResponse +} + +// ListPublicIpPoolsSortByEnum Enum with underlying type: string +type ListPublicIpPoolsSortByEnum string + +// Set of constants representing the allowable values for ListPublicIpPoolsSortByEnum +const ( + ListPublicIpPoolsSortByTimecreated ListPublicIpPoolsSortByEnum = "TIMECREATED" + ListPublicIpPoolsSortByDisplayname ListPublicIpPoolsSortByEnum = "DISPLAYNAME" +) + +var mappingListPublicIpPoolsSortBy = map[string]ListPublicIpPoolsSortByEnum{ + "TIMECREATED": ListPublicIpPoolsSortByTimecreated, + "DISPLAYNAME": ListPublicIpPoolsSortByDisplayname, +} + +// GetListPublicIpPoolsSortByEnumValues Enumerates the set of values for ListPublicIpPoolsSortByEnum +func GetListPublicIpPoolsSortByEnumValues() []ListPublicIpPoolsSortByEnum { + values := make([]ListPublicIpPoolsSortByEnum, 0) + for _, v := range mappingListPublicIpPoolsSortBy { + values = append(values, v) + } + return values +} + +// ListPublicIpPoolsSortOrderEnum Enum with underlying type: string +type ListPublicIpPoolsSortOrderEnum string + +// Set of constants representing the allowable values for ListPublicIpPoolsSortOrderEnum +const ( + ListPublicIpPoolsSortOrderAsc ListPublicIpPoolsSortOrderEnum = "ASC" + ListPublicIpPoolsSortOrderDesc ListPublicIpPoolsSortOrderEnum = "DESC" +) + +var mappingListPublicIpPoolsSortOrder = map[string]ListPublicIpPoolsSortOrderEnum{ + "ASC": ListPublicIpPoolsSortOrderAsc, + "DESC": ListPublicIpPoolsSortOrderDesc, +} + +// GetListPublicIpPoolsSortOrderEnumValues Enumerates the set of values for ListPublicIpPoolsSortOrderEnum +func GetListPublicIpPoolsSortOrderEnumValues() []ListPublicIpPoolsSortOrderEnum { + values := make([]ListPublicIpPoolsSortOrderEnum, 0) + for _, v := range mappingListPublicIpPoolsSortOrder { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_public_ips_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ips_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_public_ips_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ips_request_response.go index dad4a965d..b96b9d31c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_public_ips_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_public_ips_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListPublicIpsRequest wrapper for the ListPublicIps operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListPublicIps.go.html to see an example of how to use ListPublicIpsRequest. type ListPublicIpsRequest struct { // Whether the public IP is regional or specific to a particular availability domain. @@ -43,6 +47,9 @@ type ListPublicIpsRequest struct { // A filter to return only public IPs that match given lifetime. Lifetime ListPublicIpsLifetimeEnum `mandatory:"false" contributesTo:"query" name:"lifetime" omitEmpty:"true"` + // A filter to return only resources that belong to the given public IP pool. + PublicIpPoolId *string `mandatory:"false" contributesTo:"query" name:"publicIpPoolId"` + // Unique Oracle-assigned identifier for the request. // If you need to contact Oracle about a particular request, please provide the request ID. OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_remote_peering_connections_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_remote_peering_connections_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_remote_peering_connections_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_remote_peering_connections_request_response.go index 736b552d1..d7a97e36f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_remote_peering_connections_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_remote_peering_connections_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListRemotePeeringConnectionsRequest wrapper for the ListRemotePeeringConnections operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListRemotePeeringConnections.go.html to see an example of how to use ListRemotePeeringConnectionsRequest. type ListRemotePeeringConnectionsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_route_tables_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_route_tables_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_route_tables_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_route_tables_request_response.go index e89d57d85..5b4da2eb3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_route_tables_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_route_tables_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListRouteTablesRequest wrapper for the ListRouteTables operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListRouteTables.go.html to see an example of how to use ListRouteTablesRequest. type ListRouteTablesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -26,7 +30,7 @@ type ListRouteTablesRequest struct { // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). Page *string `mandatory:"false" contributesTo:"query" name:"page"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // A filter to return only resources that match the given display name exactly. @@ -45,7 +49,8 @@ type ListRouteTablesRequest struct { // is case sensitive. SortOrder ListRouteTablesSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState RouteTableLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_security_lists_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_security_lists_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_security_lists_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_security_lists_request_response.go index dfaef9ae7..3891e80ac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_security_lists_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_security_lists_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListSecurityListsRequest wrapper for the ListSecurityLists operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListSecurityLists.go.html to see an example of how to use ListSecurityListsRequest. type ListSecurityListsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -26,7 +30,7 @@ type ListSecurityListsRequest struct { // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). Page *string `mandatory:"false" contributesTo:"query" name:"page"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // A filter to return only resources that match the given display name exactly. @@ -45,7 +49,8 @@ type ListSecurityListsRequest struct { // is case sensitive. SortOrder ListSecurityListsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState SecurityListLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_service_gateways_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_service_gateways_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_service_gateways_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_service_gateways_request_response.go index 6caa2b041..17f056d9e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_service_gateways_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_service_gateways_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListServiceGatewaysRequest wrapper for the ListServiceGateways operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListServiceGateways.go.html to see an example of how to use ListServiceGatewaysRequest. type ListServiceGatewaysRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -42,7 +46,8 @@ type ListServiceGatewaysRequest struct { // is case sensitive. SortOrder ListServiceGatewaysSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to return only resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to return only resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState ServiceGatewayLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_services_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_services_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_services_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_services_request_response.go index 1537b4582..9c60c3360 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_services_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_services_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListServicesRequest wrapper for the ListServices operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListServices.go.html to see an example of how to use ListServicesRequest. type ListServicesRequest struct { // For list pagination. The maximum number of results per page, or items to return in a paginated diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_shapes_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_shapes_request_response.go index 4e6a93771..5d9ed37ff 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListShapesRequest wrapper for the ListShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListShapes.go.html to see an example of how to use ListShapesRequest. type ListShapesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_subnets_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_subnets_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_subnets_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_subnets_request_response.go index f2eda3610..63db83338 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_subnets_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_subnets_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListSubnetsRequest wrapper for the ListSubnets operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListSubnets.go.html to see an example of how to use ListSubnetsRequest. type ListSubnetsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -26,7 +30,7 @@ type ListSubnetsRequest struct { // List Pagination (https://docs.cloud.oracle.com/iaas/Content/API/Concepts/usingapi.htm#nine). Page *string `mandatory:"false" contributesTo:"query" name:"page"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"false" contributesTo:"query" name:"vcnId"` // A filter to return only resources that match the given display name exactly. @@ -45,7 +49,8 @@ type ListSubnetsRequest struct { // is case sensitive. SortOrder ListSubnetsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState SubnetLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_vcns_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_vcns_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_vcns_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_vcns_request_response.go index 9791d7f71..85a14acc2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_vcns_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_vcns_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVcnsRequest wrapper for the ListVcns operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVcns.go.html to see an example of how to use ListVcnsRequest. type ListVcnsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -42,7 +46,8 @@ type ListVcnsRequest struct { // is case sensitive. SortOrder ListVcnsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState VcnLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuit_bandwidth_shapes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuit_bandwidth_shapes_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuit_bandwidth_shapes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuit_bandwidth_shapes_request_response.go index 427a59400..ca99c4c76 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuit_bandwidth_shapes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuit_bandwidth_shapes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVirtualCircuitBandwidthShapesRequest wrapper for the ListVirtualCircuitBandwidthShapes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVirtualCircuitBandwidthShapes.go.html to see an example of how to use ListVirtualCircuitBandwidthShapesRequest. type ListVirtualCircuitBandwidthShapesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuit_public_prefixes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuit_public_prefixes_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuit_public_prefixes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuit_public_prefixes_request_response.go index f554a54e8..52f714351 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuit_public_prefixes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuit_public_prefixes_request_response.go @@ -1,21 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVirtualCircuitPublicPrefixesRequest wrapper for the ListVirtualCircuitPublicPrefixes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVirtualCircuitPublicPrefixes.go.html to see an example of how to use ListVirtualCircuitPublicPrefixesRequest. type ListVirtualCircuitPublicPrefixesRequest struct { // The OCID of the virtual circuit. VirtualCircuitId *string `mandatory:"true" contributesTo:"path" name:"virtualCircuitId"` - // A filter to only return resources that match the given verification state. + // A filter to only return resources that match the given verification + // state. // The state value is case-insensitive. VerificationState VirtualCircuitPublicPrefixVerificationStateEnum `mandatory:"false" contributesTo:"query" name:"verificationState" omitEmpty:"true"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuits_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuits_request_response.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuits_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuits_request_response.go index a75a4125d..c4b62178f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_virtual_circuits_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_virtual_circuits_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVirtualCircuitsRequest wrapper for the ListVirtualCircuits operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVirtualCircuits.go.html to see an example of how to use ListVirtualCircuitsRequest. type ListVirtualCircuitsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -42,7 +46,8 @@ type ListVirtualCircuitsRequest struct { // is case sensitive. SortOrder ListVirtualCircuitsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to return only resources that match the specified lifecycle state. The value is case insensitive. + // A filter to return only resources that match the specified lifecycle + // state. The value is case insensitive. LifecycleState VirtualCircuitLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_vlans_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_vlans_request_response.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/list_vlans_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_vlans_request_response.go index 4009c5924..fe5a3ac7a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_vlans_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_vlans_request_response.go @@ -1,21 +1,25 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVlansRequest wrapper for the ListVlans operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVlans.go.html to see an example of how to use ListVlansRequest. type ListVlansRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. CompartmentId *string `mandatory:"true" contributesTo:"query" name:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"true" contributesTo:"query" name:"vcnId"` // For list pagination. The maximum number of results per page, or items to return in a paginated @@ -49,7 +53,8 @@ type ListVlansRequest struct { // If you need to contact Oracle about a particular request, please provide the request ID. OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState VlanLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Metadata about the request. This information will not be transmitted to the service, but diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_vnic_attachments_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_vnic_attachments_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_vnic_attachments_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_vnic_attachments_request_response.go index d63df5cb7..cbadfaf43 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_vnic_attachments_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_vnic_attachments_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVnicAttachmentsRequest wrapper for the ListVnicAttachments operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVnicAttachments.go.html to see an example of how to use ListVnicAttachmentsRequest. type ListVnicAttachmentsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_attachments_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_attachments_request_response.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/list_volume_attachments_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_attachments_request_response.go index 00981bb7e..ac5dd8b54 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_attachments_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_attachments_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVolumeAttachmentsRequest wrapper for the ListVolumeAttachments operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeAttachments.go.html to see an example of how to use ListVolumeAttachmentsRequest. type ListVolumeAttachmentsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_backup_policies_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_backup_policies_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/list_volume_backup_policies_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_backup_policies_request_response.go index acd07bef3..922d422fd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_backup_policies_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_backup_policies_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVolumeBackupPoliciesRequest wrapper for the ListVolumeBackupPolicies operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeBackupPolicies.go.html to see an example of how to use ListVolumeBackupPoliciesRequest. type ListVolumeBackupPoliciesRequest struct { // For list pagination. The maximum number of results per page, or items to return in a paginated diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_backups_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_backups_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_volume_backups_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_backups_request_response.go index 7320805d1..603df1929 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_backups_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_backups_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVolumeBackupsRequest wrapper for the ListVolumeBackups operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeBackups.go.html to see an example of how to use ListVolumeBackupsRequest. type ListVolumeBackupsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -48,7 +52,8 @@ type ListVolumeBackupsRequest struct { // is case sensitive. SortOrder ListVolumeBackupsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state + // value is case-insensitive. LifecycleState VolumeBackupLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_group_backups_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_group_backups_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_volume_group_backups_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_group_backups_request_response.go index da2092a41..18235e45a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_group_backups_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_group_backups_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVolumeGroupBackupsRequest wrapper for the ListVolumeGroupBackups operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeGroupBackups.go.html to see an example of how to use ListVolumeGroupBackupsRequest. type ListVolumeGroupBackupsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_groups_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_groups_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_volume_groups_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_groups_request_response.go index be64cb98b..1c5c23e52 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_volume_groups_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volume_groups_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVolumeGroupsRequest wrapper for the ListVolumeGroups operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumeGroups.go.html to see an example of how to use ListVolumeGroupsRequest. type ListVolumeGroupsRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -46,7 +50,8 @@ type ListVolumeGroupsRequest struct { // is case sensitive. SortOrder ListVolumeGroupsSortOrderEnum `mandatory:"false" contributesTo:"query" name:"sortOrder" omitEmpty:"true"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle + // state. The state value is case-insensitive. LifecycleState VolumeGroupLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/list_volumes_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volumes_request_response.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/list_volumes_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/list_volumes_request_response.go index b54c9d6bc..142f4c0f4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/list_volumes_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/list_volumes_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ListVolumesRequest wrapper for the ListVolumes operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ListVolumes.go.html to see an example of how to use ListVolumesRequest. type ListVolumesRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment. @@ -49,7 +53,8 @@ type ListVolumesRequest struct { // The OCID of the volume group. VolumeGroupId *string `mandatory:"false" contributesTo:"query" name:"volumeGroupId"` - // A filter to only return resources that match the given lifecycle state. The state value is case-insensitive. + // A filter to only return resources that match the given lifecycle state. The state + // value is case-insensitive. LifecycleState VolumeLifecycleStateEnum `mandatory:"false" contributesTo:"query" name:"lifecycleState" omitEmpty:"true"` // Unique Oracle-assigned identifier for the request. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/local_peering_gateway.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/local_peering_gateway.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/local_peering_gateway.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/local_peering_gateway.go index f32e43a2f..5d366c766 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/local_peering_gateway.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/local_peering_gateway.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // LocalPeeringGateway A local peering gateway (LPG) is an object on a VCN that lets that VCN peer // with another VCN in the same region. *Peering* means that the two VCNs can // communicate using private IP addresses, but without the traffic traversing the // internet or routing through your on-premises network. For more information, -// see VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). +// see VCN Peering (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/VCNpeering.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type LocalPeeringGateway struct { // The OCID of the compartment containing the LPG. @@ -55,7 +53,7 @@ type LocalPeeringGateway struct { // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - // The OCID of the VCN the LPG belongs to. + // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN that uses the LPG. VcnId *string `mandatory:"true" json:"vcnId"` // Defined tags for this resource. Each key is predefined and scoped to a @@ -86,7 +84,7 @@ type LocalPeeringGateway struct { // The OCID of the route table the LPG is using. // For information about why you would associate a route table with an LPG, see - // Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/Content/Network/Tasks/transitrouting.htm). + // Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitrouting.htm). RouteTableId *string `mandatory:"false" json:"routeTableId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_details.go new file mode 100644 index 000000000..05d521ba4 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_details.go @@ -0,0 +1,32 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// ModifyVcnCidrDetails Details for updating a CIDR block. +type ModifyVcnCidrDetails struct { + + // The CIDR IP address to update. + OriginalCidrBlock *string `mandatory:"true" json:"originalCidrBlock"` + + // The new CIDR IP address. + NewCidrBlock *string `mandatory:"true" json:"newCidrBlock"` +} + +func (m ModifyVcnCidrDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_request_response.go new file mode 100644 index 000000000..e388efdd3 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/modify_vcn_cidr_request_response.go @@ -0,0 +1,82 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ModifyVcnCidrRequest wrapper for the ModifyVcnCidr operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ModifyVcnCidr.go.html to see an example of how to use ModifyVcnCidrRequest. +type ModifyVcnCidrRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. + VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` + + // Details object for updating a VCN CIDR. + ModifyVcnCidrDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ModifyVcnCidrRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ModifyVcnCidrRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ModifyVcnCidrRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ModifyVcnCidrResponse wrapper for the ModifyVcnCidr operation +type ModifyVcnCidrResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` +} + +func (response ModifyVcnCidrResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ModifyVcnCidrResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/nat_gateway.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/nat_gateway.go similarity index 83% rename from vendor/github.com/oracle/oci-go-sdk/core/nat_gateway.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/nat_gateway.go index cf72e730c..d1c4c6810 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/nat_gateway.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/nat_gateway.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,27 +14,26 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // NatGateway A NAT (Network Address Translation) gateway, which represents a router that lets instances // without public IPs contact the public internet without exposing the instance to inbound // internet traffic. For more information, see -// NAT Gateway (https://docs.cloud.oracle.com/Content/Network/Tasks/NATgateway.htm). +// NAT Gateway (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/NATgateway.htm). // To use any of the API operations, you must be authorized in an // IAM policy. If you are not authorized, talk to an // administrator. If you are an administrator who needs to write // policies to give users access, see Getting Started with -// Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type NatGateway struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment that contains + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains // the NAT gateway. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the NAT gateway. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the + // NAT gateway. Id *string `mandatory:"true" json:"id"` // Whether the NAT gateway blocks traffic through it. The default is `false`. @@ -51,7 +50,7 @@ type NatGateway struct { // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN the NAT gateway + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN the NAT gateway // belongs to. VcnId *string `mandatory:"true" json:"vcnId"` @@ -68,6 +67,9 @@ type NatGateway struct { // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). // Example: `{"Department": "Finance"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP address associated with the NAT gateway. + PublicIpId *string `mandatory:"false" json:"publicIpId"` } func (m NatGateway) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/network_security_group.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/network_security_group.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/network_security_group.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/network_security_group.go index 753ed7e7b..4dba6d25e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/network_security_group.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/network_security_group.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // NetworkSecurityGroup A *network security group* (NSG) provides virtual firewall rules for a specific set of @@ -44,15 +44,13 @@ import ( // * The instance's OS firewall rules // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type NetworkSecurityGroup struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment the network security group is in. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment the network security group is in. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. Id *string `mandatory:"true" json:"id"` // The network security group's current state. @@ -62,7 +60,7 @@ type NetworkSecurityGroup struct { // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group's VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group's VCN. VcnId *string `mandatory:"true" json:"vcnId"` // Defined tags for this resource. Each key is predefined and scoped to a diff --git a/vendor/github.com/oracle/oci-go-sdk/core/network_security_group_vnic.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/network_security_group_vnic.go similarity index 80% rename from vendor/github.com/oracle/oci-go-sdk/core/network_security_group_vnic.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/network_security_group_vnic.go index 0487b116e..ec04a7042 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/network_security_group_vnic.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/network_security_group_vnic.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,16 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // NetworkSecurityGroupVnic Information about a VNIC that belongs to a network security group. type NetworkSecurityGroupVnic struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VNIC. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VNIC. VnicId *string `mandatory:"true" json:"vnicId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the parent resource that the VNIC + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the parent resource that the VNIC // is attached to (for example, a Compute instance). ResourceId *string `mandatory:"false" json:"resourceId"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/paravirtualized_volume_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/paravirtualized_volume_attachment.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/paravirtualized_volume_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/paravirtualized_volume_attachment.go index aa3abb86d..1c94b467d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/paravirtualized_volume_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/paravirtualized_volume_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ParavirtualizedVolumeAttachment A paravirtualized volume attachment. @@ -52,7 +52,10 @@ type ParavirtualizedVolumeAttachment struct { // Whether the attachment was created in read-only mode. IsReadOnly *bool `mandatory:"false" json:"isReadOnly"` - // Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified. + // Whether the attachment should be created in shareable mode. If an attachment + // is created in shareable mode, then other instances can attach the same volume, provided + // that they also create their attachments in shareable mode. Only certain volume types can + // be attached in shareable mode. Defaults to false if not specified. IsShareable *bool `mandatory:"false" json:"isShareable"` // Whether in-transit encryption for the data volume's paravirtualized attachment is enabled or not. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/peer_region_for_remote_peering.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/peer_region_for_remote_peering.go similarity index 81% rename from vendor/github.com/oracle/oci-go-sdk/core/peer_region_for_remote_peering.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/peer_region_for_remote_peering.go index ea3bd964e..650fe0f2a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/peer_region_for_remote_peering.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/peer_region_for_remote_peering.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,10 +14,11 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// PeerRegionForRemotePeering Details about a region that supports remote VCN peering. For more information, see VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). +// PeerRegionForRemotePeering Details about a region that supports remote VCN peering. For more +// information, see VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). type PeerRegionForRemotePeering struct { // The region's name. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/platform_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/platform_config.go new file mode 100644 index 000000000..cee168da9 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/platform_config.go @@ -0,0 +1,88 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "encoding/json" + "github.com/oracle/oci-go-sdk/v36/common" +) + +// PlatformConfig The platform configuration for the instance. The type of platform configuration is +// determined by the `type`. +type PlatformConfig interface { +} + +type platformconfig struct { + JsonData []byte + Type string `json:"type"` +} + +// UnmarshalJSON unmarshals json +func (m *platformconfig) UnmarshalJSON(data []byte) error { + m.JsonData = data + type Unmarshalerplatformconfig platformconfig + s := struct { + Model Unmarshalerplatformconfig + }{} + err := json.Unmarshal(data, &s.Model) + if err != nil { + return err + } + m.Type = s.Model.Type + + return err +} + +// UnmarshalPolymorphicJSON unmarshals polymorphic json +func (m *platformconfig) UnmarshalPolymorphicJSON(data []byte) (interface{}, error) { + + if data == nil || string(data) == "null" { + return nil, nil + } + + var err error + switch m.Type { + case "AMD_MILAN_BM": + mm := AmdMilanBmPlatformConfig{} + err = json.Unmarshal(data, &mm) + return mm, err + default: + return *m, nil + } +} + +func (m platformconfig) String() string { + return common.PointerString(m) +} + +// PlatformConfigTypeEnum Enum with underlying type: string +type PlatformConfigTypeEnum string + +// Set of constants representing the allowable values for PlatformConfigTypeEnum +const ( + PlatformConfigTypeAmdMilanBm PlatformConfigTypeEnum = "AMD_MILAN_BM" +) + +var mappingPlatformConfigType = map[string]PlatformConfigTypeEnum{ + "AMD_MILAN_BM": PlatformConfigTypeAmdMilanBm, +} + +// GetPlatformConfigTypeEnumValues Enumerates the set of values for PlatformConfigTypeEnum +func GetPlatformConfigTypeEnumValues() []PlatformConfigTypeEnum { + values := make([]PlatformConfigTypeEnum, 0) + for _, v := range mappingPlatformConfigType { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/port_range.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/port_range.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/port_range.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/port_range.go index f14dce23d..5d2a4de2d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/port_range.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/port_range.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // PortRange The representation of PortRange diff --git a/vendor/github.com/oracle/oci-go-sdk/core/private_ip.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/private_ip.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/private_ip.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/private_ip.go index b7ad4ac4d..b744c7cd9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/private_ip.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/private_ip.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // PrivateIp A *private IP* is a conceptual term that refers to an IPv4 private IP address and related properties. @@ -27,7 +27,7 @@ import ( // automatically deleted when the VNIC is terminated. // You can add *secondary private IPs* to a VNIC after it's created. For more // information, see the `privateIp` operations and also -// IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPaddresses.htm). +// IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPaddresses.htm). // **Note:** Only // ListPrivateIps and // GetPrivateIp work with @@ -44,9 +44,7 @@ import ( // Vlan. // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type PrivateIp struct { // The private IP's availability domain. This attribute will be null if this is a *secondary* @@ -78,7 +76,7 @@ type PrivateIp struct { // RFC 952 (https://tools.ietf.org/html/rfc952) and // RFC 1123 (https://tools.ietf.org/html/rfc1123). // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `bminstance-1` HostnameLabel *string `mandatory:"false" json:"hostnameLabel"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/public_ip.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/public_ip.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip.go index 26738aaef..cb5175915 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/public_ip.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // PublicIp A *public IP* is a conceptual term that refers to a public IP address and related properties. @@ -23,9 +23,7 @@ import ( // 1. Ephemeral // 2. Reserved // For more information and comparison of the two types, -// see Public IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingpublicIPs.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// see Public IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingpublicIPs.htm). type PublicIp struct { // The OCID of the entity the public IP is assigned to, or in the process of @@ -82,7 +80,7 @@ type PublicIp struct { // * `RESERVED`: You control the public IP's lifetime. You can delete a reserved public IP // whenever you like. It does not need to be assigned to a private IP at all times. // For more information and comparison of the two types, - // see Public IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingpublicIPs.htm). + // see Public IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingpublicIPs.htm). Lifetime PublicIpLifetimeEnum `mandatory:"false" json:"lifetime,omitempty"` // Deprecated. Use `assignedEntityId` instead. @@ -105,6 +103,9 @@ type PublicIp struct { // The date and time the public IP was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). // Example: `2016-08-25T21:10:29.600Z` TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the pool object created in the current tenancy. + PublicIpPoolId *string `mandatory:"false" json:"publicIpPoolId"` } func (m PublicIp) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool.go new file mode 100644 index 000000000..d03b13c90 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool.go @@ -0,0 +1,85 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// PublicIpPool A public IP pool is a set of public IP addresses represented as one or more IPv4 CIDR blocks. Resources like load balancers and compute instances can be allocated public IP addresses from a public IP pool. +type PublicIpPool struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing this pool. + CompartmentId *string `mandatory:"true" json:"compartmentId"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + Id *string `mandatory:"true" json:"id"` + + // The date and time the public IP pool was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` + + // The CIDR blocks added to this pool. This could be all or a portion of a BYOIP CIDR block. + CidrBlocks []string `mandatory:"false" json:"cidrBlocks"` + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` + + // The public IP pool's current state. + LifecycleState PublicIpPoolLifecycleStateEnum `mandatory:"false" json:"lifecycleState,omitempty"` +} + +func (m PublicIpPool) String() string { + return common.PointerString(m) +} + +// PublicIpPoolLifecycleStateEnum Enum with underlying type: string +type PublicIpPoolLifecycleStateEnum string + +// Set of constants representing the allowable values for PublicIpPoolLifecycleStateEnum +const ( + PublicIpPoolLifecycleStateInactive PublicIpPoolLifecycleStateEnum = "INACTIVE" + PublicIpPoolLifecycleStateUpdating PublicIpPoolLifecycleStateEnum = "UPDATING" + PublicIpPoolLifecycleStateActive PublicIpPoolLifecycleStateEnum = "ACTIVE" + PublicIpPoolLifecycleStateDeleting PublicIpPoolLifecycleStateEnum = "DELETING" + PublicIpPoolLifecycleStateDeleted PublicIpPoolLifecycleStateEnum = "DELETED" +) + +var mappingPublicIpPoolLifecycleState = map[string]PublicIpPoolLifecycleStateEnum{ + "INACTIVE": PublicIpPoolLifecycleStateInactive, + "UPDATING": PublicIpPoolLifecycleStateUpdating, + "ACTIVE": PublicIpPoolLifecycleStateActive, + "DELETING": PublicIpPoolLifecycleStateDeleting, + "DELETED": PublicIpPoolLifecycleStateDeleted, +} + +// GetPublicIpPoolLifecycleStateEnumValues Enumerates the set of values for PublicIpPoolLifecycleStateEnum +func GetPublicIpPoolLifecycleStateEnumValues() []PublicIpPoolLifecycleStateEnum { + values := make([]PublicIpPoolLifecycleStateEnum, 0) + for _, v := range mappingPublicIpPoolLifecycleState { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_collection.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_collection.go new file mode 100644 index 000000000..824bf9303 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_collection.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// PublicIpPoolCollection Results of a `ListPublicIpPool` operation. +type PublicIpPoolCollection struct { + + // A list of public IP pool summaries. + Items []PublicIpPoolSummary `mandatory:"true" json:"items"` +} + +func (m PublicIpPoolCollection) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_summary.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_summary.go new file mode 100644 index 000000000..1dc8f4a04 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/public_ip_pool_summary.go @@ -0,0 +1,53 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// PublicIpPoolSummary Summary information about a public IP pool. +type PublicIpPoolSummary struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the public IP pool. + CompartmentId *string `mandatory:"false" json:"compartmentId"` + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. + // Avoid entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + Id *string `mandatory:"false" json:"id"` + + // The public IP pool's current state. + LifecycleState PublicIpPoolLifecycleStateEnum `mandatory:"false" json:"lifecycleState,omitempty"` + + // The date and time the public IP pool was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // Example: `2016-08-25T21:10:29.600Z` + TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` +} + +func (m PublicIpPoolSummary) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/remote_peering_connection.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remote_peering_connection.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/remote_peering_connection.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/remote_peering_connection.go index d758f6a31..b51c80771 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/remote_peering_connection.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remote_peering_connection.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // RemotePeeringConnection A remote peering connection (RPC) is an object on a DRG that lets the VCN that is attached // to the DRG peer with a VCN in a different region. *Peering* means that the two VCNs can // communicate using private IP addresses, but without the traffic traversing the internet or // routing through your on-premises network. For more information, see -// VCN Peering (https://docs.cloud.oracle.com/Content/Network/Tasks/VCNpeering.htm). +// VCN Peering (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/VCNpeering.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type RemotePeeringConnection struct { // The OCID of the compartment that contains the RPC. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/remove_image_shape_compatibility_entry_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_image_shape_compatibility_entry_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/remove_image_shape_compatibility_entry_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/remove_image_shape_compatibility_entry_request_response.go index 714813195..c69d57450 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/remove_image_shape_compatibility_entry_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_image_shape_compatibility_entry_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // RemoveImageShapeCompatibilityEntryRequest wrapper for the RemoveImageShapeCompatibilityEntry operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemoveImageShapeCompatibilityEntry.go.html to see an example of how to use RemoveImageShapeCompatibilityEntryRequest. type RemoveImageShapeCompatibilityEntryRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/remove_network_security_group_security_rules_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_network_security_group_security_rules_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/remove_network_security_group_security_rules_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/remove_network_security_group_security_rules_details.go index cd3189717..ced17e776 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/remove_network_security_group_security_rules_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_network_security_group_security_rules_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // RemoveNetworkSecurityGroupSecurityRulesDetails The representation of RemoveNetworkSecurityGroupSecurityRulesDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/remove_network_security_group_security_rules_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_network_security_group_security_rules_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/remove_network_security_group_security_rules_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/remove_network_security_group_security_rules_request_response.go index e958b6282..8110371e7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/remove_network_security_group_security_rules_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_network_security_group_security_rules_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // RemoveNetworkSecurityGroupSecurityRulesRequest wrapper for the RemoveNetworkSecurityGroupSecurityRules operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemoveNetworkSecurityGroupSecurityRules.go.html to see an example of how to use RemoveNetworkSecurityGroupSecurityRulesRequest. type RemoveNetworkSecurityGroupSecurityRulesRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Request with one or more security rules associated with the network security group that diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_details.go new file mode 100644 index 000000000..0dfbe66a9 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_details.go @@ -0,0 +1,30 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// RemovePublicIpPoolCapacityDetails The information needed to remove capacity from a public IP pool. +type RemovePublicIpPoolCapacityDetails struct { + + // The CIDR block to remove from the public IP pool. + // Example: `10.0.1.0/24` + CidrBlock *string `mandatory:"true" json:"cidrBlock"` +} + +func (m RemovePublicIpPoolCapacityDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_request_response.go new file mode 100644 index 000000000..bdfbd489a --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_public_ip_pool_capacity_request_response.go @@ -0,0 +1,79 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// RemovePublicIpPoolCapacityRequest wrapper for the RemovePublicIpPoolCapacity operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemovePublicIpPoolCapacity.go.html to see an example of how to use RemovePublicIpPoolCapacityRequest. +type RemovePublicIpPoolCapacityRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"true" contributesTo:"path" name:"publicIpPoolId"` + + // The CIDR block to remove from the IP pool. + RemovePublicIpPoolCapacityDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request RemovePublicIpPoolCapacityRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request RemovePublicIpPoolCapacityRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request RemovePublicIpPoolCapacityRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// RemovePublicIpPoolCapacityResponse wrapper for the RemovePublicIpPoolCapacity operation +type RemovePublicIpPoolCapacityResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The PublicIpPool instance + PublicIpPool `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response RemovePublicIpPoolCapacityResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response RemovePublicIpPoolCapacityResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_details.go new file mode 100644 index 000000000..b23f630d6 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_details.go @@ -0,0 +1,29 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// RemoveVcnCidrDetails Details for removing a CIDR block from a VCN. +type RemoveVcnCidrDetails struct { + + // The CIDR block to remove. + CidrBlock *string `mandatory:"true" json:"cidrBlock"` +} + +func (m RemoveVcnCidrDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_request_response.go new file mode 100644 index 000000000..88d37f667 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/remove_vcn_cidr_request_response.go @@ -0,0 +1,82 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// RemoveVcnCidrRequest wrapper for the RemoveVcnCidr operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/RemoveVcnCidr.go.html to see an example of how to use RemoveVcnCidrRequest. +type RemoveVcnCidrRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. + VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` + + // Details object for removing a VCN CIDR. + RemoveVcnCidrDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // A token that uniquely identifies a request so it can be retried in case of a timeout or + // server error without risk of executing that same action again. Retry tokens expire after 24 + // hours, but can be invalidated before then due to conflicting operations (for example, if a resource + // has been deleted and purged from the system, then a retry of the original creation request + // may be rejected). + OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request RemoveVcnCidrRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request RemoveVcnCidrRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request RemoveVcnCidrRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// RemoveVcnCidrResponse wrapper for the RemoveVcnCidr operation +type RemoveVcnCidrResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` +} + +func (response RemoveVcnCidrResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response RemoveVcnCidrResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/reset_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/reset_instance_pool_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/reset_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/reset_instance_pool_request_response.go index d0c490a6d..d173928e5 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/reset_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/reset_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // ResetInstancePoolRequest wrapper for the ResetInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ResetInstancePool.go.html to see an example of how to use ResetInstancePoolRequest. type ResetInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -23,7 +27,7 @@ type ResetInstancePoolRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/route_rule.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/route_rule.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/route_rule.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/route_rule.go index 4996fffd9..a0a325e71 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/route_rule.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/route_rule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // RouteRule A mapping between a destination IP address range and a virtual device to route matching @@ -23,7 +23,7 @@ type RouteRule struct { // The OCID for the route rule's target. For information about the type of // targets you can specify, see - // Route Tables (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm). + // Route Tables (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm). NetworkEntityId *string `mandatory:"true" json:"networkEntityId"` // Deprecated. Instead use `destination` and `destinationType`. Requests that include both @@ -40,7 +40,7 @@ type RouteRule struct { // * IP address range in CIDR notation. Can be an IPv4 or IPv6 CIDR. For example: `192.168.1.0/24` // or `2001:0db8:0123:45::/56`. If you set this to an IPv6 CIDR, the route rule's target // can only be a DRG or internet gateway. Note that IPv6 addressing is currently supported - // only in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // only in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a route rule for traffic destined for a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/route_table.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/route_table.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/route_table.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/route_table.go index 9b0ea9631..090fa4077 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/route_table.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/route_table.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,17 +14,15 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // RouteTable A collection of `RouteRule` objects, which are used to route packets // based on destination IP to a particular network entity. For more information, see -// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm). +// Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type RouteTable struct { // The OCID of the compartment containing the route table. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/security_list.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/security_list.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/security_list.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/security_list.go index aa064de22..e72993d40 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/security_list.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/security_list.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // SecurityList A set of virtual firewall rules for your VCN. Security lists are configured at the subnet // level, but the rules are applied to the ingress and egress traffic for the individual instances // in the subnet. The rules can be stateful or stateless. For more information, see -// Security Lists (https://docs.cloud.oracle.com/Content/Network/Concepts/securitylists.htm). +// Security Lists (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securitylists.htm). // **Note:** Compare security lists to NetworkSecurityGroups, // which let you apply a set of security rules to a *specific set of VNICs* instead of an entire // subnet. Oracle recommends using network security groups instead of security lists, although you @@ -31,9 +31,7 @@ import ( // firewall rules are set correctly. // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type SecurityList struct { // The OCID of the compartment containing the security list. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/security_rule.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/security_rule.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/security_rule.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/security_rule.go index ad66fca41..35f14224d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/security_rule.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/security_rule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // SecurityRule A security rule is one of the items in a NetworkSecurityGroup. @@ -22,7 +22,8 @@ import ( // either inbound (`direction`= INGRESS) or outbound (`direction`= EGRESS) IP packets. type SecurityRule struct { - // Direction of the security rule. Set to `EGRESS` for rules to allow outbound IP packets, or `INGRESS` for rules to allow inbound IP packets. + // Direction of the security rule. Set to `EGRESS` for rules to allow outbound IP packets, + // or `INGRESS` for rules to allow inbound IP packets. Direction SecurityRuleDirectionEnum `mandatory:"true" json:"direction"` // The transport protocol. Specify either `all` or an IPv4 protocol number as @@ -39,7 +40,7 @@ type SecurityRule struct { // Allowed values: // * An IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security rule for traffic destined for a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -58,15 +59,6 @@ type SecurityRule struct { // NetworkSecurityGroup. DestinationType SecurityRuleDestinationTypeEnum `mandatory:"false" json:"destinationType,omitempty"` - // Optional and valid only for ICMP and ICMPv6. Use to specify a particular ICMP type and code - // as defined in: - // - ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) - // - ICMPv6 Parameters (https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml) - // If you specify ICMP or ICMPv6 as the protocol but omit this object, then all ICMP types and - // codes are allowed. If you do provide this object, the type is required and the code is optional. - // To enable MTU negotiation for ingress internet traffic via IPv4, make sure to allow type 3 ("Destination - // Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). If you need to specify - // multiple codes for a single type, create a separate security rule for each. IcmpOptions *IcmpOptions `mandatory:"false" json:"icmpOptions"` // An Oracle-assigned identifier for the security rule. You specify this ID when you want to @@ -91,7 +83,7 @@ type SecurityRule struct { // Allowed values: // * An IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security rule for traffic coming from a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -109,15 +101,11 @@ type SecurityRule struct { // NetworkSecurityGroup. SourceType SecurityRuleSourceTypeEnum `mandatory:"false" json:"sourceType,omitempty"` - // Optional and valid only for TCP. Use to specify particular destination ports for TCP rules. - // If you specify TCP as the protocol but omit this object, then all destination ports are allowed. TcpOptions *TcpOptions `mandatory:"false" json:"tcpOptions"` // The date and time the security rule was created. Format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` - // Optional and valid only for UDP. Use to specify particular destination ports for UDP rules. - // If you specify UDP as the protocol but omit this object, then all destination ports are allowed. UdpOptions *UdpOptions `mandatory:"false" json:"udpOptions"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/service.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/service.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/service.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/service.go index 1952fadad..e8342b944 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/service.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/service.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,12 +14,12 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Service An object that represents one or multiple Oracle services that you can enable for a // ServiceGateway. In the User Guide topic -// Access to Oracle Services: Service Gateway (https://docs.cloud.oracle.com/Content/Network/Tasks/servicegateway.htm), the +// Access to Oracle Services: Service Gateway (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/servicegateway.htm), the // term *service CIDR label* is used to refer to the string that represents the regional public // IP address ranges of the Oracle service or services covered by a given `Service` object. That // unique string is the value of the `Service` object's `cidrBlock` attribute. @@ -40,7 +40,7 @@ type Service struct { // Example: `OCI PHX Object Storage` Description *string `mandatory:"true" json:"description"` - // The `Service` object's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The `Service` object's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). Id *string `mandatory:"true" json:"id"` // Name of the `Service` object. This name can change and is not guaranteed to be unique. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/service_gateway.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/service_gateway.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/service_gateway.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/service_gateway.go index 132af4b5e..6a792f271 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/service_gateway.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/service_gateway.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ServiceGateway Represents a router that lets your VCN privately access specific Oracle services such as Object @@ -23,12 +23,10 @@ import ( // routed through the service gateway and does not traverse the internet. The instances in the VCN // do not need to have public IP addresses nor be in a public subnet. The VCN does not need an internet gateway // for this traffic. For more information, see -// Access to Oracle Services: Service Gateway (https://docs.cloud.oracle.com/Content/Network/Tasks/servicegateway.htm). +// Access to Oracle Services: Service Gateway (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/servicegateway.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type ServiceGateway struct { // Whether the service gateway blocks all traffic through it. The default is `false`. When @@ -36,11 +34,11 @@ type ServiceGateway struct { // Example: `true` BlockTraffic *bool `mandatory:"true" json:"blockTraffic"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the compartment that contains the + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the // service gateway. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the service gateway. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the service gateway. Id *string `mandatory:"true" json:"id"` // The service gateway's current state. @@ -52,7 +50,7 @@ type ServiceGateway struct { // UpdateServiceGateway. Services []ServiceIdResponseDetails `mandatory:"true" json:"services"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN the service gateway + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN the service gateway // belongs to. VcnId *string `mandatory:"true" json:"vcnId"` @@ -72,7 +70,7 @@ type ServiceGateway struct { // The OCID of the route table the service gateway is using. // For information about why you would associate a route table with a service gateway, see - // Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/Content/Network/Tasks/transitroutingoracleservices.htm). + // Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm). RouteTableId *string `mandatory:"false" json:"routeTableId"` // The date and time the service gateway was created, in the format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/service_id_request_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/service_id_request_details.go similarity index 82% rename from vendor/github.com/oracle/oci-go-sdk/core/service_id_request_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/service_id_request_details.go index 641deaabb..50040b5f4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/service_id_request_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/service_id_request_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ServiceIdRequestDetails The representation of ServiceIdRequestDetails type ServiceIdRequestDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the Service. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the Service. ServiceId *string `mandatory:"true" json:"serviceId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/service_id_response_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/service_id_response_details.go similarity index 84% rename from vendor/github.com/oracle/oci-go-sdk/core/service_id_response_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/service_id_response_details.go index ba57714dd..297fd2469 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/service_id_response_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/service_id_response_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,13 +14,13 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ServiceIdResponseDetails The representation of ServiceIdResponseDetails type ServiceIdResponseDetails struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the service. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the service. ServiceId *string `mandatory:"true" json:"serviceId"` // The name of the service. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/shape.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/shape.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/shape.go index 7953bd3e7..a7a0cf111 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/shape.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Shape A compute instance shape that can be used in LaunchInstance. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/shape_max_vnic_attachment_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_max_vnic_attachment_options.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/shape_max_vnic_attachment_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/shape_max_vnic_attachment_options.go index 1136f2b7b..1778ca9c3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/shape_max_vnic_attachment_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_max_vnic_attachment_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ShapeMaxVnicAttachmentOptions For a flexible shape, the number of VNIC attachments that are available for instances that use this shape. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/shape_memory_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_memory_options.go similarity index 78% rename from vendor/github.com/oracle/oci-go-sdk/core/shape_memory_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/shape_memory_options.go index 9011b115c..712b4811b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/shape_memory_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_memory_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ShapeMemoryOptions For a flexible shape, the amount of memory available for instances that use this shape. @@ -29,6 +29,12 @@ type ShapeMemoryOptions struct { // The default amount of memory per OCPU available for this shape, in gigabytes. DefaultPerOcpuInGBs *float32 `mandatory:"false" json:"defaultPerOcpuInGBs"` + + // The minimum amount of memory per OCPU available for this shape, in gigabytes. + MinPerOcpuInGBs *float32 `mandatory:"false" json:"minPerOcpuInGBs"` + + // The maximum amount of memory per OCPU available for this shape, in gigabytes. + MaxPerOcpuInGBs *float32 `mandatory:"false" json:"maxPerOcpuInGBs"` } func (m ShapeMemoryOptions) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/shape_networking_bandwidth_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_networking_bandwidth_options.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/shape_networking_bandwidth_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/shape_networking_bandwidth_options.go index bedf41245..c21df7b91 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/shape_networking_bandwidth_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_networking_bandwidth_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ShapeNetworkingBandwidthOptions For a flexible shape, the amount of networking bandwidth available for instances that use this shape. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/shape_ocpu_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_ocpu_options.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/shape_ocpu_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/shape_ocpu_options.go index f00327c8f..0e5a06f6f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/shape_ocpu_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/shape_ocpu_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // ShapeOcpuOptions For a flexible shape, the number of OCPUs available for instances that use this shape. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/softreset_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/softreset_instance_pool_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/softreset_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/softreset_instance_pool_request_response.go index 6568ba942..2334d9220 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/softreset_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/softreset_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // SoftresetInstancePoolRequest wrapper for the SoftresetInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/SoftresetInstancePool.go.html to see an example of how to use SoftresetInstancePoolRequest. type SoftresetInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -23,7 +27,7 @@ type SoftresetInstancePoolRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/start_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/start_instance_pool_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/start_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/start_instance_pool_request_response.go index c5df60bb5..227f8c224 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/start_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/start_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // StartInstancePoolRequest wrapper for the StartInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/StartInstancePool.go.html to see an example of how to use StartInstancePoolRequest. type StartInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -23,7 +27,7 @@ type StartInstancePoolRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/stop_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/stop_instance_pool_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/stop_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/stop_instance_pool_request_response.go index 55f301a2f..05783c9c1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/stop_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/stop_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // StopInstancePoolRequest wrapper for the StopInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/StopInstancePool.go.html to see an example of how to use StopInstancePoolRequest. type StopInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -23,7 +27,7 @@ type StopInstancePoolRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/subnet.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/subnet.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/subnet.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/subnet.go index b991bde9b..d6ecab3c8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/subnet.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/subnet.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,17 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Subnet A logical subdivision of a VCN. Each subnet // consists of a contiguous range of IP addresses that do not overlap with // other subnets in the VCN. Example: 172.16.1.0/24. For more information, see -// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm) and -// VCNs and Subnets (https://docs.cloud.oracle.com/Content/Network/Tasks/managingVCNs.htm). +// Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm) and +// VCNs and Subnets (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingVCNs.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type Subnet struct { // The subnet's CIDR block. @@ -81,7 +79,7 @@ type Subnet struct { // The absence of this parameter means the Internet and VCN Resolver // will not resolve hostnames of instances in this subnet. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `subnet123` DnsLabel *string `mandatory:"false" json:"dnsLabel"` @@ -92,7 +90,7 @@ type Subnet struct { // For an IPv6-enabled subnet, this is the IPv6 CIDR block for the subnet's private IP address // space. The subnet size is always /64. Note that IPv6 addressing is currently supported only - // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `2001:0db8:0123:1111::/64` Ipv6CidrBlock *string `mandatory:"false" json:"ipv6CidrBlock"` @@ -127,7 +125,7 @@ type Subnet struct { // The subnet's domain name, which consists of the subnet's DNS label, // the VCN's DNS label, and the `oraclevcn.com` domain. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `subnet123.vcn1.oraclevcn.com` SubnetDomainName *string `mandatory:"false" json:"subnetDomainName"` @@ -149,6 +147,7 @@ const ( SubnetLifecycleStateAvailable SubnetLifecycleStateEnum = "AVAILABLE" SubnetLifecycleStateTerminating SubnetLifecycleStateEnum = "TERMINATING" SubnetLifecycleStateTerminated SubnetLifecycleStateEnum = "TERMINATED" + SubnetLifecycleStateUpdating SubnetLifecycleStateEnum = "UPDATING" ) var mappingSubnetLifecycleState = map[string]SubnetLifecycleStateEnum{ @@ -156,6 +155,7 @@ var mappingSubnetLifecycleState = map[string]SubnetLifecycleStateEnum{ "AVAILABLE": SubnetLifecycleStateAvailable, "TERMINATING": SubnetLifecycleStateTerminating, "TERMINATED": SubnetLifecycleStateTerminated, + "UPDATING": SubnetLifecycleStateUpdating, } // GetSubnetLifecycleStateEnumValues Enumerates the set of values for SubnetLifecycleStateEnum diff --git a/vendor/github.com/oracle/oci-go-sdk/core/tcp_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/tcp_options.go similarity index 64% rename from vendor/github.com/oracle/oci-go-sdk/core/tcp_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/tcp_options.go index c52f18a1d..8b0263999 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/tcp_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/tcp_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,14 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// TcpOptions Optional object to specify ports for a TCP rule. If you specify TCP as the -// protocol but omit this object, then all ports are allowed. +// TcpOptions Optional and valid only for TCP. Use to specify particular destination ports for TCP rules. +// If you specify TCP as the protocol but omit this object, then all destination ports are allowed. type TcpOptions struct { - - // An inclusive range of allowed destination ports. Use the same number for the min and max - // to indicate a single port. Defaults to all ports if not specified. DestinationPortRange *PortRange `mandatory:"false" json:"destinationPortRange"` - // An inclusive range of allowed source ports. Use the same number for the min and max to - // indicate a single port. Defaults to all ports if not specified. SourcePortRange *PortRange `mandatory:"false" json:"sourcePortRange"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/terminate_cluster_network_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_cluster_network_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/terminate_cluster_network_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_cluster_network_request_response.go index 6fc2f03cc..9cd81ca02 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/terminate_cluster_network_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_cluster_network_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // TerminateClusterNetworkRequest wrapper for the TerminateClusterNetwork operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/TerminateClusterNetwork.go.html to see an example of how to use TerminateClusterNetworkRequest. type TerminateClusterNetworkRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster network. ClusterNetworkId *string `mandatory:"true" contributesTo:"path" name:"clusterNetworkId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/terminate_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_instance_pool_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/terminate_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_instance_pool_request_response.go index 3fb7c9ae2..6ce3db7cd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/terminate_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_instance_pool_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // TerminateInstancePoolRequest wrapper for the TerminateInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/TerminateInstancePool.go.html to see an example of how to use TerminateInstancePoolRequest. type TerminateInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. InstancePoolId *string `mandatory:"true" contributesTo:"path" name:"instancePoolId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/terminate_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_instance_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/terminate_instance_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_instance_request_response.go index 25aabb5c4..0de6da1c2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/terminate_instance_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/terminate_instance_request_response.go @@ -1,22 +1,26 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // TerminateInstanceRequest wrapper for the TerminateInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/TerminateInstance.go.html to see an example of how to use TerminateInstanceRequest. type TerminateInstanceRequest struct { // The OCID of the instance. InstanceId *string `mandatory:"true" contributesTo:"path" name:"instanceId"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/tunnel_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_config.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/tunnel_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_config.go index 79f1514e2..ab357e618 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/tunnel_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // TunnelConfig Deprecated. For tunnel information, instead see: diff --git a/vendor/github.com/oracle/oci-go-sdk/core/tunnel_cpe_device_config.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_cpe_device_config.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/tunnel_cpe_device_config.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_cpe_device_config.go index 257047e55..d7e4aee28 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/tunnel_cpe_device_config.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_cpe_device_config.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // TunnelCpeDeviceConfig The set of CPE configuration answers for the tunnel, which the customer provides in diff --git a/vendor/github.com/oracle/oci-go-sdk/core/tunnel_status.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_status.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/tunnel_status.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_status.go index 958b4fdd2..67c773186 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/tunnel_status.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/tunnel_status.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // TunnelStatus Deprecated. For tunnel information, instead see IPSecConnectionTunnel. @@ -48,12 +48,14 @@ const ( TunnelStatusLifecycleStateUp TunnelStatusLifecycleStateEnum = "UP" TunnelStatusLifecycleStateDown TunnelStatusLifecycleStateEnum = "DOWN" TunnelStatusLifecycleStateDownForMaintenance TunnelStatusLifecycleStateEnum = "DOWN_FOR_MAINTENANCE" + TunnelStatusLifecycleStatePartialUp TunnelStatusLifecycleStateEnum = "PARTIAL_UP" ) var mappingTunnelStatusLifecycleState = map[string]TunnelStatusLifecycleStateEnum{ "UP": TunnelStatusLifecycleStateUp, "DOWN": TunnelStatusLifecycleStateDown, "DOWN_FOR_MAINTENANCE": TunnelStatusLifecycleStateDownForMaintenance, + "PARTIAL_UP": TunnelStatusLifecycleStatePartialUp, } // GetTunnelStatusLifecycleStateEnumValues Enumerates the set of values for TunnelStatusLifecycleStateEnum diff --git a/vendor/github.com/oracle/oci-go-sdk/core/udp_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/udp_options.go similarity index 64% rename from vendor/github.com/oracle/oci-go-sdk/core/udp_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/udp_options.go index 000abbe97..9b90bee73 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/udp_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/udp_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,19 +14,14 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// UdpOptions Optional object to specify ports for a UDP rule. If you specify UDP as the -// protocol but omit this object, then all ports are allowed. +// UdpOptions Optional and valid only for UDP. Use to specify particular destination ports for UDP rules. +// If you specify UDP as the protocol but omit this object, then all destination ports are allowed. type UdpOptions struct { - - // An inclusive range of allowed destination ports. Use the same number for the min and max - // to indicate a single port. Defaults to all ports if not specified. DestinationPortRange *PortRange `mandatory:"false" json:"destinationPortRange"` - // An inclusive range of allowed source ports. Use the same number for the min and max to - // indicate a single port. Defaults to all ports if not specified. SourcePortRange *PortRange `mandatory:"false" json:"sourcePortRange"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_backup_details.go index 057057933..a93c293d2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateBootVolumeBackupDetails The representation of UpdateBootVolumeBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_backup_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_backup_request_response.go index 79c2f937c..6c8da4861 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateBootVolumeBackupRequest wrapper for the UpdateBootVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateBootVolumeBackup.go.html to see an example of how to use UpdateBootVolumeBackupRequest. type UpdateBootVolumeBackupRequest struct { // The OCID of the boot volume backup. @@ -19,7 +23,7 @@ type UpdateBootVolumeBackupRequest struct { UpdateBootVolumeBackupDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_details.go index 29d093be9..a8a940928 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateBootVolumeDetails The representation of UpdateBootVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_kms_key_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_kms_key_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_kms_key_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_kms_key_details.go index f0d1fae9e..f02733efe 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_kms_key_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_kms_key_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateBootVolumeKmsKeyDetails The representation of UpdateBootVolumeKmsKeyDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_kms_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_kms_key_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_kms_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_kms_key_request_response.go index dceda1078..c08b73635 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_kms_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_kms_key_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateBootVolumeKmsKeyRequest wrapper for the UpdateBootVolumeKmsKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateBootVolumeKmsKey.go.html to see an example of how to use UpdateBootVolumeKmsKeyRequest. type UpdateBootVolumeKmsKeyRequest struct { // The OCID of the boot volume. @@ -19,7 +23,7 @@ type UpdateBootVolumeKmsKeyRequest struct { UpdateBootVolumeKmsKeyDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_request_response.go index cd2d71cc9..1d4f4f900 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_boot_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_boot_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateBootVolumeRequest wrapper for the UpdateBootVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateBootVolume.go.html to see an example of how to use UpdateBootVolumeRequest. type UpdateBootVolumeRequest struct { // The OCID of the boot volume. @@ -19,7 +23,7 @@ type UpdateBootVolumeRequest struct { UpdateBootVolumeDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_details.go new file mode 100644 index 000000000..70a7ce970 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_details.go @@ -0,0 +1,40 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// UpdateByoipRangeDetails The information used to update a `ByoipRange` resource. +type UpdateByoipRangeDetails struct { + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. Avoid + // entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` +} + +func (m UpdateByoipRangeDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_request_response.go new file mode 100644 index 000000000..d5cb8366c --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_byoip_range_request_response.go @@ -0,0 +1,77 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// UpdateByoipRangeRequest wrapper for the UpdateByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateByoipRange.go.html to see an example of how to use UpdateByoipRangeRequest. +type UpdateByoipRangeRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Byoip Range details. + UpdateByoipRangeDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request UpdateByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request UpdateByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request UpdateByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// UpdateByoipRangeResponse wrapper for the UpdateByoipRange operation +type UpdateByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The ByoipRange instance + ByoipRange `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response UpdateByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response UpdateByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cluster_network_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cluster_network_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cluster_network_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cluster_network_details.go index 4d2ca9468..361c9026e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cluster_network_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cluster_network_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateClusterNetworkDetails The data to update a cluster network. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cluster_network_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cluster_network_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cluster_network_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cluster_network_request_response.go index 0b9ee0a3d..af1370605 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cluster_network_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cluster_network_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateClusterNetworkRequest wrapper for the UpdateClusterNetwork operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateClusterNetwork.go.html to see an example of how to use UpdateClusterNetworkRequest. type UpdateClusterNetworkRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster network. @@ -26,7 +30,7 @@ type UpdateClusterNetworkRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_compute_image_capability_schema_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_compute_image_capability_schema_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_compute_image_capability_schema_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_compute_image_capability_schema_details.go index e5aef1643..5713bf69e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_compute_image_capability_schema_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_compute_image_capability_schema_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateComputeImageCapabilitySchemaDetails Create Image Capability Schema for an image. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_compute_image_capability_schema_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_compute_image_capability_schema_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_compute_image_capability_schema_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_compute_image_capability_schema_request_response.go index 8c94b6844..b41e04f69 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_compute_image_capability_schema_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_compute_image_capability_schema_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateComputeImageCapabilitySchemaRequest wrapper for the UpdateComputeImageCapabilitySchema operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateComputeImageCapabilitySchema.go.html to see an example of how to use UpdateComputeImageCapabilitySchemaRequest. type UpdateComputeImageCapabilitySchemaRequest struct { // The id of the compute image capability schema or the image ocid @@ -19,7 +23,7 @@ type UpdateComputeImageCapabilitySchemaRequest struct { UpdateComputeImageCapabilitySchemaDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_console_history_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_console_history_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_console_history_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_console_history_details.go index 035437df3..3866afcc8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_console_history_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_console_history_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateConsoleHistoryDetails The representation of UpdateConsoleHistoryDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_console_history_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_console_history_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_console_history_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_console_history_request_response.go index cf62d7f6c..7169cdccf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_console_history_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_console_history_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateConsoleHistoryRequest wrapper for the UpdateConsoleHistory operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateConsoleHistory.go.html to see an example of how to use UpdateConsoleHistoryRequest. type UpdateConsoleHistoryRequest struct { // The OCID of the console history. @@ -19,7 +23,7 @@ type UpdateConsoleHistoryRequest struct { UpdateConsoleHistoryDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cpe_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cpe_details.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cpe_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cpe_details.go index 340ab7ec8..55907a850 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cpe_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cpe_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateCpeDetails The representation of UpdateCpeDetails @@ -34,7 +34,7 @@ type UpdateCpeDetails struct { // Example: `{"Department": "Finance"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the CPE device type. You can provide + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the CPE device type. You can provide // a value if you want to generate CPE device configuration content for IPSec connections // that use this CPE. For a list of possible values, see // ListCpeDeviceShapes. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cpe_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cpe_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cpe_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cpe_request_response.go index 4271e15de..16bd9ec29 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cpe_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cpe_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateCpeRequest wrapper for the UpdateCpe operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateCpe.go.html to see an example of how to use UpdateCpeRequest. type UpdateCpeRequest struct { // The OCID of the CPE. @@ -19,7 +23,7 @@ type UpdateCpeRequest struct { UpdateCpeDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_details.go index b6af41e80..667433dfb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateCrossConnectDetails Update a CrossConnect diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_group_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_group_details.go index 90b7c3c9c..ec8db5da3 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateCrossConnectGroupDetails The representation of UpdateCrossConnectGroupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_group_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_group_request_response.go index d4a8b413b..38c583a49 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateCrossConnectGroupRequest wrapper for the UpdateCrossConnectGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateCrossConnectGroup.go.html to see an example of how to use UpdateCrossConnectGroupRequest. type UpdateCrossConnectGroupRequest struct { // The OCID of the cross-connect group. @@ -19,7 +23,7 @@ type UpdateCrossConnectGroupRequest struct { UpdateCrossConnectGroupDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_request_response.go index d5e8c0383..7c0b14a5c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_cross_connect_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_cross_connect_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateCrossConnectRequest wrapper for the UpdateCrossConnect operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateCrossConnect.go.html to see an example of how to use UpdateCrossConnectRequest. type UpdateCrossConnectRequest struct { // The OCID of the cross-connect. @@ -19,7 +23,7 @@ type UpdateCrossConnectRequest struct { UpdateCrossConnectDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_dedicated_vm_host_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dedicated_vm_host_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_dedicated_vm_host_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_dedicated_vm_host_details.go index 9342092a3..d66b6195e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_dedicated_vm_host_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dedicated_vm_host_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateDedicatedVmHostDetails Details for updating the dedicated virtual machine host details. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_dedicated_vm_host_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dedicated_vm_host_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/update_dedicated_vm_host_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_dedicated_vm_host_request_response.go index 98af72cfd..b0b3cf5a6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_dedicated_vm_host_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dedicated_vm_host_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateDedicatedVmHostRequest wrapper for the UpdateDedicatedVmHost operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDedicatedVmHost.go.html to see an example of how to use UpdateDedicatedVmHostRequest. type UpdateDedicatedVmHostRequest struct { // The OCID of the dedicated VM host. @@ -19,7 +23,7 @@ type UpdateDedicatedVmHostRequest struct { UpdateDedicatedVmHostDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_dhcp_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dhcp_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_dhcp_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_dhcp_details.go index ef0aa11c8..0baeeedaa 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_dhcp_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dhcp_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateDhcpDetails The representation of UpdateDhcpDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_dhcp_options_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dhcp_options_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_dhcp_options_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_dhcp_options_request_response.go index 36455284c..b99d93a07 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_dhcp_options_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_dhcp_options_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateDhcpOptionsRequest wrapper for the UpdateDhcpOptions operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDhcpOptions.go.html to see an example of how to use UpdateDhcpOptionsRequest. type UpdateDhcpOptionsRequest struct { // The OCID for the set of DHCP options. @@ -19,7 +23,7 @@ type UpdateDhcpOptionsRequest struct { UpdateDhcpDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_attachment_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_attachment_details.go similarity index 84% rename from vendor/github.com/oracle/oci-go-sdk/core/update_drg_attachment_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_attachment_details.go index c9c14bfc6..8cbce31dd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_attachment_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_attachment_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateDrgAttachmentDetails The representation of UpdateDrgAttachmentDetails @@ -26,8 +26,8 @@ type UpdateDrgAttachmentDetails struct { // The OCID of the route table the DRG attachment will use. // For information about why you would associate a route table with a DRG attachment, see: - // * Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/Content/Network/Tasks/transitrouting.htm) - // * Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/Content/Network/Tasks/transitroutingoracleservices.htm) + // * Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitrouting.htm) + // * Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm) RouteTableId *string `mandatory:"false" json:"routeTableId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_attachment_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_attachment_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_drg_attachment_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_attachment_request_response.go index 621c6b108..53c12e2d4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_attachment_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_attachment_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateDrgAttachmentRequest wrapper for the UpdateDrgAttachment operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDrgAttachment.go.html to see an example of how to use UpdateDrgAttachmentRequest. type UpdateDrgAttachmentRequest struct { // The OCID of the DRG attachment. @@ -19,7 +23,7 @@ type UpdateDrgAttachmentRequest struct { UpdateDrgAttachmentDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_drg_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_details.go index 12a5c51c9..3f8084639 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateDrgDetails The representation of UpdateDrgDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_drg_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_request_response.go index 0da9d552e..bc94b59b7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_drg_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_drg_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateDrgRequest wrapper for the UpdateDrg operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateDrg.go.html to see an example of how to use UpdateDrgRequest. type UpdateDrgRequest struct { // The OCID of the DRG. @@ -19,7 +23,7 @@ type UpdateDrgRequest struct { UpdateDrgDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_request_response.go index 394f28097..18f86a27a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateIPSecConnectionRequest wrapper for the UpdateIPSecConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIPSecConnection.go.html to see an example of how to use UpdateIPSecConnectionRequest. type UpdateIPSecConnectionRequest struct { // The OCID of the IPSec connection. @@ -19,7 +23,7 @@ type UpdateIPSecConnectionRequest struct { UpdateIpSecConnectionDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_tunnel_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_tunnel_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_tunnel_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_tunnel_request_response.go index 403eda263..100d0825f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_tunnel_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_tunnel_request_response.go @@ -1,28 +1,32 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateIPSecConnectionTunnelRequest wrapper for the UpdateIPSecConnectionTunnel operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIPSecConnectionTunnel.go.html to see an example of how to use UpdateIPSecConnectionTunnelRequest. type UpdateIPSecConnectionTunnelRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Details object for updating a IPSecConnection tunnel's details. UpdateIpSecConnectionTunnelDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go index 76fc19919..42906aacb 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_i_p_sec_connection_tunnel_shared_secret_request_response.go @@ -1,28 +1,32 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateIPSecConnectionTunnelSharedSecretRequest wrapper for the UpdateIPSecConnectionTunnelSharedSecret operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIPSecConnectionTunnelSharedSecret.go.html to see an example of how to use UpdateIPSecConnectionTunnelSharedSecretRequest. type UpdateIPSecConnectionTunnelSharedSecretRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Details object for updating a IPSec connection tunnel's sharedSecret. UpdateIpSecConnectionTunnelSharedSecretDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_image_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_image_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_image_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_image_details.go index c92f560db..f41261b2b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_image_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_image_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateImageDetails The representation of UpdateImageDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_image_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_image_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_image_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_image_request_response.go index 1497bb692..dbedef07f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_image_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_image_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateImageRequest wrapper for the UpdateImage operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateImage.go.html to see an example of how to use UpdateImageRequest. type UpdateImageRequest struct { // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the image. @@ -26,7 +30,7 @@ type UpdateImageRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_agent_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_agent_config_details.go new file mode 100644 index 000000000..cd7600149 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_agent_config_details.go @@ -0,0 +1,62 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// UpdateInstanceAgentConfigDetails Configuration options for the Oracle Cloud Agent software running on the instance. +type UpdateInstanceAgentConfigDetails struct { + + // Whether Oracle Cloud Agent can gather performance metrics and monitor the instance using the + // monitoring plugins. + // These are the monitoring plugins: Compute Instance Monitoring + // and Custom Logs Monitoring. + // The monitoring plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isMonitoringDisabled` is true, all of the monitoring plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isMonitoringDisabled` is false, all of the monitoring plugins are enabled. You + // can optionally disable individual monitoring plugins by providing a value in the `pluginsConfig` + // object. + IsMonitoringDisabled *bool `mandatory:"false" json:"isMonitoringDisabled"` + + // Whether Oracle Cloud Agent can run all the available management plugins. + // These are the management plugins: OS Management Service Agent and Compute Instance + // Run Command. + // The management plugins are controlled by this parameter and by the per-plugin + // configuration in the `pluginsConfig` object. + // - If `isManagementDisabled` is true, all of the management plugins are disabled, regardless of + // the per-plugin configuration. + // - If `isManagementDisabled` is false, all of the management plugins are enabled. You + // can optionally disable individual management plugins by providing a value in the `pluginsConfig` + // object. + IsManagementDisabled *bool `mandatory:"false" json:"isManagementDisabled"` + + // Whether Oracle Cloud Agent can run all the available plugins. + // This includes the management and monitoring plugins. + // To get a list of available plugins, use the + // ListInstanceagentAvailablePlugins + // operation in the Oracle Cloud Agent API. For more information about the available plugins, see + // Managing Plugins with Oracle Cloud Agent (https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/manage-plugins.htm). + AreAllPluginsDisabled *bool `mandatory:"false" json:"areAllPluginsDisabled"` + + // The configuration of plugins associated with this instance. + PluginsConfig []InstanceAgentPluginConfigDetails `mandatory:"false" json:"pluginsConfig"` +} + +func (m UpdateInstanceAgentConfigDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_availability_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_availability_config_details.go similarity index 78% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_availability_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_availability_config_details.go index 688a13308..302c2832a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_availability_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_availability_config_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,16 +14,16 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// UpdateInstanceAvailabilityConfigDetails Options for customers to define the general policy of how compute service perform maintenance on VM instances. +// UpdateInstanceAvailabilityConfigDetails Options for defining the availability of a VM instance after a maintenance event that impacts the underlying hardware. type UpdateInstanceAvailabilityConfigDetails struct { - // Actions customers can specify that would be applied to their instances after scheduled or unexpected host maintenance. - // * `RESTORE_INSTANCE` - This would be the default action if recoveryAction is not set. VM instances - // will be restored to the power state it was in before maintenance. - // * `STOP_INSTANCE` - This action allow customers to have their VM instances be stopped after maintenance. + // The lifecycle state for an instance when it is recovered after infrastructure maintenance. + // * `RESTORE_INSTANCE` - The instance is restored to the lifecycle state it was in before the maintenance event. + // If the instance was running, it is automatically rebooted. This is the default action when a value is not set. + // * `STOP_INSTANCE` - The instance is recovered in the stopped state. RecoveryAction UpdateInstanceAvailabilityConfigDetailsRecoveryActionEnum `mandatory:"false" json:"recoveryAction,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_configuration_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_configuration_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_configuration_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_configuration_details.go index 493722ebf..54d6637d0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_configuration_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_configuration_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateInstanceConfigurationDetails The representation of UpdateInstanceConfigurationDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_configuration_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_configuration_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_configuration_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_configuration_request_response.go index e74969bb2..e22a5734f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_configuration_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_configuration_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateInstanceConfigurationRequest wrapper for the UpdateInstanceConfiguration operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstanceConfiguration.go.html to see an example of how to use UpdateInstanceConfigurationRequest. type UpdateInstanceConfigurationRequest struct { // The OCID of the instance configuration. @@ -26,7 +30,7 @@ type UpdateInstanceConfigurationRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_details.go new file mode 100644 index 000000000..2c69c523b --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_details.go @@ -0,0 +1,36 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// UpdateInstanceConsoleConnectionDetails Specifies the properties for updating tags for an instance console connection. +type UpdateInstanceConsoleConnectionDetails struct { + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` +} + +func (m UpdateInstanceConsoleConnectionDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_request_response.go new file mode 100644 index 000000000..a2b349213 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_console_connection_request_response.go @@ -0,0 +1,77 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// UpdateInstanceConsoleConnectionRequest wrapper for the UpdateInstanceConsoleConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstanceConsoleConnection.go.html to see an example of how to use UpdateInstanceConsoleConnectionRequest. +type UpdateInstanceConsoleConnectionRequest struct { + + // The OCID of the instance console connection. + InstanceConsoleConnectionId *string `mandatory:"true" contributesTo:"path" name:"instanceConsoleConnectionId"` + + // Update instanceConsoleConnection tags + UpdateInstanceConsoleConnectionDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request UpdateInstanceConsoleConnectionRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request UpdateInstanceConsoleConnectionRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request UpdateInstanceConsoleConnectionRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// UpdateInstanceConsoleConnectionResponse wrapper for the UpdateInstanceConsoleConnection operation +type UpdateInstanceConsoleConnectionResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The InstanceConsoleConnection instance + InstanceConsoleConnection `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response UpdateInstanceConsoleConnectionResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response UpdateInstanceConsoleConnectionResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_details.go index 242cc2d08..5b5183fac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateInstanceDetails The representation of UpdateInstanceDetails @@ -35,7 +35,6 @@ type UpdateInstanceDetails struct { // Example: `{"Department": "Finance"}` FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` - // Instance agent configuration options to choose for updating the instance AgentConfig *UpdateInstanceAgentConfigDetails `mandatory:"false" json:"agentConfig"` // Custom metadata key/value string pairs that you provide. Any set of key/value pairs @@ -76,6 +75,8 @@ type UpdateInstanceDetails struct { ShapeConfig *UpdateInstanceShapeConfigDetails `mandatory:"false" json:"shapeConfig"` + InstanceOptions *InstanceOptions `mandatory:"false" json:"instanceOptions"` + // A fault domain is a grouping of hardware and infrastructure within an availability domain. // Each availability domain contains three fault domains. Fault domains let you distribute your // instances so that they are not on the same physical hardware within a single availability domain. @@ -87,7 +88,6 @@ type UpdateInstanceDetails struct { // Example: `FAULT-DOMAIN-1` FaultDomain *string `mandatory:"false" json:"faultDomain"` - // Options for tuning the compatibility and performance of VM shapes. LaunchOptions *UpdateLaunchOptions `mandatory:"false" json:"launchOptions"` AvailabilityConfig *UpdateInstanceAvailabilityConfigDetails `mandatory:"false" json:"availabilityConfig"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_details.go index 2ab364a93..1432c05bd 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateInstancePoolDetails The data to update an instance pool. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_placement_configuration_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_placement_configuration_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_placement_configuration_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_placement_configuration_details.go index bbe027578..c56e20263 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_placement_configuration_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_placement_configuration_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateInstancePoolPlacementConfigurationDetails The location for where an instance pool will place instances. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_request_response.go index 4deadc01a..bf632017f 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_pool_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_pool_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateInstancePoolRequest wrapper for the UpdateInstancePool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstancePool.go.html to see an example of how to use UpdateInstancePoolRequest. type UpdateInstancePoolRequest struct { // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the instance pool. @@ -26,7 +30,7 @@ type UpdateInstancePoolRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_request_response.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_request_response.go index a87257fc0..8b94f791e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateInstanceRequest wrapper for the UpdateInstance operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInstance.go.html to see an example of how to use UpdateInstanceRequest. type UpdateInstanceRequest struct { // The OCID of the instance. @@ -26,7 +30,7 @@ type UpdateInstanceRequest struct { OpcRetryToken *string `mandatory:"false" contributesTo:"header" name:"opc-retry-token"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_shape_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_shape_config_details.go similarity index 87% rename from vendor/github.com/oracle/oci-go-sdk/core/update_instance_shape_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_shape_config_details.go index 8716f23fe..4a9b5db22 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_instance_shape_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_instance_shape_config_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateInstanceShapeConfigDetails The shape configuration requested for the instance. If provided, the instance will be updated @@ -28,6 +28,9 @@ type UpdateInstanceShapeConfigDetails struct { // The total number of OCPUs available to the instance. Ocpus *float32 `mandatory:"false" json:"ocpus"` + + // The total amount of memory available to the instance, in gigabytes. + MemoryInGBs *float32 `mandatory:"false" json:"memoryInGBs"` } func (m UpdateInstanceShapeConfigDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_internet_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_internet_gateway_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_internet_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_internet_gateway_details.go index dbe20262e..41d240e3d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_internet_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_internet_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateInternetGatewayDetails The representation of UpdateInternetGatewayDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_internet_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_internet_gateway_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_internet_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_internet_gateway_request_response.go index 5edf04824..425ea4ae2 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_internet_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_internet_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateInternetGatewayRequest wrapper for the UpdateInternetGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateInternetGateway.go.html to see an example of how to use UpdateInternetGatewayRequest. type UpdateInternetGatewayRequest struct { // The OCID of the internet gateway. @@ -19,7 +23,7 @@ type UpdateInternetGatewayRequest struct { UpdateInternetGatewayDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_details.go index aab4ee8e8..23cd55c42 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateIpSecConnectionDetails The representation of UpdateIpSecConnectionDetails @@ -38,7 +38,7 @@ type UpdateIpSecConnectionDetails struct { // fully qualified domain name (FQDN)). The type of identifier you provide here must correspond // to the value for `cpeLocalIdentifierType`. // For information about why you'd provide this value, see - // If Your CPE Is Behind a NAT Device (https://docs.cloud.oracle.com/Content/Network/Tasks/overviewIPsec.htm#nat). + // If Your CPE Is Behind a NAT Device (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/overviewIPsec.htm#nat). // Example IP address: `10.0.3.3` // Example hostname: `cpe.example.com` CpeLocalIdentifier *string `mandatory:"false" json:"cpeLocalIdentifier"` @@ -50,7 +50,7 @@ type UpdateIpSecConnectionDetails struct { // Static routes to the CPE. If you provide this attribute, it replaces the entire current set of // static routes. A static route's CIDR must not be a multicast address or class E address. // The CIDR can be either IPv4 or IPv6. Note that IPv6 addressing is currently supported only - // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // in certain regions. See IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `10.0.1.0/24` // Example: `2001:db8::/32` StaticRoutes []string `mandatory:"false" json:"staticRoutes"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_tunnel_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_tunnel_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_tunnel_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_tunnel_details.go index e3fbe6b5f..bc4d5ac39 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_tunnel_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_tunnel_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateIpSecConnectionTunnelDetails The representation of UpdateIpSecConnectionTunnelDetails @@ -30,8 +30,9 @@ type UpdateIpSecConnectionTunnelDetails struct { // Internet Key Exchange protocol version. IkeVersion UpdateIpSecConnectionTunnelDetailsIkeVersionEnum `mandatory:"false" json:"ikeVersion,omitempty"` - // Information for establishing a BGP session for the IPSec tunnel. BgpSessionConfig *UpdateIpSecTunnelBgpSessionDetails `mandatory:"false" json:"bgpSessionConfig"` + + EncryptionDomainConfig *UpdateIpSecTunnelEncryptionDomainDetails `mandatory:"false" json:"encryptionDomainConfig"` } func (m UpdateIpSecConnectionTunnelDetails) String() string { @@ -45,11 +46,13 @@ type UpdateIpSecConnectionTunnelDetailsRoutingEnum string const ( UpdateIpSecConnectionTunnelDetailsRoutingBgp UpdateIpSecConnectionTunnelDetailsRoutingEnum = "BGP" UpdateIpSecConnectionTunnelDetailsRoutingStatic UpdateIpSecConnectionTunnelDetailsRoutingEnum = "STATIC" + UpdateIpSecConnectionTunnelDetailsRoutingPolicy UpdateIpSecConnectionTunnelDetailsRoutingEnum = "POLICY" ) var mappingUpdateIpSecConnectionTunnelDetailsRouting = map[string]UpdateIpSecConnectionTunnelDetailsRoutingEnum{ "BGP": UpdateIpSecConnectionTunnelDetailsRoutingBgp, "STATIC": UpdateIpSecConnectionTunnelDetailsRoutingStatic, + "POLICY": UpdateIpSecConnectionTunnelDetailsRoutingPolicy, } // GetUpdateIpSecConnectionTunnelDetailsRoutingEnumValues Enumerates the set of values for UpdateIpSecConnectionTunnelDetailsRoutingEnum diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_tunnel_shared_secret_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_tunnel_shared_secret_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_tunnel_shared_secret_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_tunnel_shared_secret_details.go index 8510151e6..cb3516cca 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_connection_tunnel_shared_secret_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_connection_tunnel_shared_secret_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateIpSecConnectionTunnelSharedSecretDetails The representation of UpdateIpSecConnectionTunnelSharedSecretDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_tunnel_bgp_session_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_bgp_session_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_tunnel_bgp_session_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_bgp_session_details.go index 46c4ef1b4..375ec018d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_ip_sec_tunnel_bgp_session_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_bgp_session_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateIpSecTunnelBgpSessionDetails The representation of UpdateIpSecTunnelBgpSessionDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_encryption_domain_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_encryption_domain_details.go new file mode 100644 index 000000000..338596644 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ip_sec_tunnel_encryption_domain_details.go @@ -0,0 +1,33 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// UpdateIpSecTunnelEncryptionDomainDetails Request to enable a multi-encryption domain policy on the VPNaaS tunnel. +// The cross product of oracleTrafficSelector and cpeTrafficSelector can't be more than 50. +type UpdateIpSecTunnelEncryptionDomainDetails struct { + + // Lists IPv4 or IPv6-enabled subnets in your Oracle tenancy. + OracleTrafficSelector []string `mandatory:"false" json:"oracleTrafficSelector"` + + // Lists IPv4 or IPv6-enabled subnets in your on-premises network. + CpeTrafficSelector []string `mandatory:"false" json:"cpeTrafficSelector"` +} + +func (m UpdateIpSecTunnelEncryptionDomainDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_ipv6_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ipv6_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_ipv6_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_ipv6_details.go index 2df641452..6e68a14af 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_ipv6_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ipv6_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateIpv6Details The representation of UpdateIpv6Details @@ -42,7 +42,7 @@ type UpdateIpv6Details struct { // Example: `false` IsInternetAccessAllowed *bool `mandatory:"false" json:"isInternetAccessAllowed"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VNIC to reassign the IPv6 to. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VNIC to reassign the IPv6 to. // The VNIC must be in the same subnet as the current VNIC. VnicId *string `mandatory:"false" json:"vnicId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_ipv6_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ipv6_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_ipv6_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_ipv6_request_response.go index 6f35aa68b..273815793 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_ipv6_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_ipv6_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateIpv6Request wrapper for the UpdateIpv6 operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateIpv6.go.html to see an example of how to use UpdateIpv6Request. type UpdateIpv6Request struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the IPv6. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the IPv6. Ipv6Id *string `mandatory:"true" contributesTo:"path" name:"ipv6Id"` // IPv6 details to be updated. UpdateIpv6Details `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_launch_options.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_launch_options.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_launch_options.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_launch_options.go index 2ed255270..796f1bb18 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_launch_options.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_launch_options.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateLaunchOptions Options for tuning the compatibility and performance of VM shapes. @@ -46,12 +46,13 @@ type UpdateLaunchOptions struct { // as expected, the changes are not supported. Revert the instance to the original networking type. NetworkType UpdateLaunchOptionsNetworkTypeEnum `mandatory:"false" json:"networkType,omitempty"` - // Whether to enable in-transit encryption for the boot volume's paravirtualized attachment. + // Whether to enable in-transit encryption for the volume's paravirtualized attachment. + // To enable in-transit encryption for block volumes and boot volumes, this field must be set to `true`. // Data in transit is transferred over an internal and highly secure network. If you have specific // compliance requirements related to the encryption of the data while it is moving between the - // instance and the boot volume, you can enable in-transit encryption. In-transit encryption is - // not enabled by default. - // All boot volumes are encrypted at rest. + // instance and the boot volume or the block volume, you can enable in-transit encryption. + // In-transit encryption is not enabled by default. + // All boot volumes and block volumes are encrypted at rest. // For more information, see Block Volume Encryption (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm#Encrypti). IsPvEncryptionInTransitEnabled *bool `mandatory:"false" json:"isPvEncryptionInTransitEnabled"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_local_peering_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_local_peering_gateway_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/update_local_peering_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_local_peering_gateway_details.go index 5df0a3e9f..de4274c96 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_local_peering_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_local_peering_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateLocalPeeringGatewayDetails The representation of UpdateLocalPeeringGatewayDetails @@ -36,7 +36,7 @@ type UpdateLocalPeeringGatewayDetails struct { // The OCID of the route table the LPG will use. // For information about why you would associate a route table with an LPG, see - // Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/Content/Network/Tasks/transitrouting.htm). + // Transit Routing: Access to Multiple VCNs in Same Region (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitrouting.htm). RouteTableId *string `mandatory:"false" json:"routeTableId"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_local_peering_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_local_peering_gateway_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_local_peering_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_local_peering_gateway_request_response.go index cb5603671..459442882 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_local_peering_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_local_peering_gateway_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateLocalPeeringGatewayRequest wrapper for the UpdateLocalPeeringGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateLocalPeeringGateway.go.html to see an example of how to use UpdateLocalPeeringGatewayRequest. type UpdateLocalPeeringGatewayRequest struct { // The OCID of the local peering gateway. @@ -19,7 +23,7 @@ type UpdateLocalPeeringGatewayRequest struct { UpdateLocalPeeringGatewayDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_nat_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_nat_gateway_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_nat_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_nat_gateway_details.go index 27f5664fc..a43683227 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_nat_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_nat_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateNatGatewayDetails The representation of UpdateNatGatewayDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_nat_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_nat_gateway_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_nat_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_nat_gateway_request_response.go index 2df43a5da..f9cf101ec 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_nat_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_nat_gateway_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateNatGatewayRequest wrapper for the UpdateNatGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateNatGateway.go.html to see an example of how to use UpdateNatGatewayRequest. type UpdateNatGatewayRequest struct { - // The NAT gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The NAT gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). NatGatewayId *string `mandatory:"true" contributesTo:"path" name:"natGatewayId"` // Details object for updating a NAT gateway. UpdateNatGatewayDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_details.go index 0d70c608a..9cd60ac78 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateNetworkSecurityGroupDetails The representation of UpdateNetworkSecurityGroupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_request_response.go index d647c4729..6928c10c6 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateNetworkSecurityGroupRequest wrapper for the UpdateNetworkSecurityGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateNetworkSecurityGroup.go.html to see an example of how to use UpdateNetworkSecurityGroupRequest. type UpdateNetworkSecurityGroupRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Details object for updating a network security group. UpdateNetworkSecurityGroupDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_security_rules_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_security_rules_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_security_rules_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_security_rules_details.go index 9543cdad2..8d9a70e41 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_security_rules_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_security_rules_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateNetworkSecurityGroupSecurityRulesDetails The representation of UpdateNetworkSecurityGroupSecurityRulesDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_security_rules_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_security_rules_request_response.go similarity index 85% rename from vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_security_rules_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_security_rules_request_response.go index f42955657..d8d0fcdbe 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_network_security_group_security_rules_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_network_security_group_security_rules_request_response.go @@ -1,18 +1,22 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateNetworkSecurityGroupSecurityRulesRequest wrapper for the UpdateNetworkSecurityGroupSecurityRules operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateNetworkSecurityGroupSecurityRules.go.html to see an example of how to use UpdateNetworkSecurityGroupSecurityRulesRequest. type UpdateNetworkSecurityGroupSecurityRulesRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the network security group. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the network security group. NetworkSecurityGroupId *string `mandatory:"true" contributesTo:"path" name:"networkSecurityGroupId"` // Request with one or more security rules associated with the network security group that diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_private_ip_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_private_ip_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_private_ip_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_private_ip_details.go index ccb9bf812..6738fd194 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_private_ip_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_private_ip_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdatePrivateIpDetails The representation of UpdatePrivateIpDetails @@ -41,7 +41,7 @@ type UpdatePrivateIpDetails struct { // RFC 952 (https://tools.ietf.org/html/rfc952) and // RFC 1123 (https://tools.ietf.org/html/rfc1123). // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `bminstance-1` HostnameLabel *string `mandatory:"false" json:"hostnameLabel"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_private_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_private_ip_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_private_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_private_ip_request_response.go index 574eb6160..b8c1581f8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_private_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_private_ip_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdatePrivateIpRequest wrapper for the UpdatePrivateIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdatePrivateIp.go.html to see an example of how to use UpdatePrivateIpRequest. type UpdatePrivateIpRequest struct { // The OCID of the private IP. @@ -19,7 +23,7 @@ type UpdatePrivateIpRequest struct { UpdatePrivateIpDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_public_ip_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_public_ip_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_details.go index 9218d10be..bed453240 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_public_ip_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdatePublicIpDetails The representation of UpdatePublicIpDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_details.go new file mode 100644 index 000000000..3ae6b3bce --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_details.go @@ -0,0 +1,40 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// UpdatePublicIpPoolDetails The data to update for a public IP pool. +type UpdatePublicIpPoolDetails struct { + + // Defined tags for this resource. Each key is predefined and scoped to a + // namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Operations": {"CostCenter": "42"}}` + DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + + // A user-friendly name. Does not have to be unique, and it's changeable. Avoid + // entering confidential information. + DisplayName *string `mandatory:"false" json:"displayName"` + + // Free-form tags for this resource. Each tag is a simple key-value pair with no + // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). + // Example: `{"Department": "Finance"}` + FreeformTags map[string]string `mandatory:"false" json:"freeformTags"` +} + +func (m UpdatePublicIpPoolDetails) String() string { + return common.PointerString(m) +} diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_request_response.go new file mode 100644 index 000000000..84682fb22 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_pool_request_response.go @@ -0,0 +1,77 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// UpdatePublicIpPoolRequest wrapper for the UpdatePublicIpPool operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdatePublicIpPool.go.html to see an example of how to use UpdatePublicIpPoolRequest. +type UpdatePublicIpPoolRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the public IP pool. + PublicIpPoolId *string `mandatory:"true" contributesTo:"path" name:"publicIpPoolId"` + + // Public IP pool details. + UpdatePublicIpPoolDetails `contributesTo:"body"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // will be updated or deleted only if the etag you provide matches the resource's current etag value. + IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request UpdatePublicIpPoolRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request UpdatePublicIpPoolRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request UpdatePublicIpPoolRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// UpdatePublicIpPoolResponse wrapper for the UpdatePublicIpPool operation +type UpdatePublicIpPoolResponse struct { + + // The underlying http response + RawResponse *http.Response + + // The PublicIpPool instance + PublicIpPool `presentIn:"body"` + + // For optimistic concurrency control. See `if-match`. + Etag *string `presentIn:"header" name:"etag"` + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response UpdatePublicIpPoolResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response UpdatePublicIpPoolResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_public_ip_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_public_ip_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_request_response.go index 8a12052d0..a6fbaf070 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_public_ip_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_public_ip_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdatePublicIpRequest wrapper for the UpdatePublicIp operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdatePublicIp.go.html to see an example of how to use UpdatePublicIpRequest. type UpdatePublicIpRequest struct { // The OCID of the public IP. @@ -19,7 +23,7 @@ type UpdatePublicIpRequest struct { UpdatePublicIpDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_remote_peering_connection_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_remote_peering_connection_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_remote_peering_connection_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_remote_peering_connection_details.go index 41841cde7..eca6f548c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_remote_peering_connection_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_remote_peering_connection_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateRemotePeeringConnectionDetails The representation of UpdateRemotePeeringConnectionDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_remote_peering_connection_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_remote_peering_connection_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_remote_peering_connection_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_remote_peering_connection_request_response.go index 130649cf0..93206c32b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_remote_peering_connection_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_remote_peering_connection_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateRemotePeeringConnectionRequest wrapper for the UpdateRemotePeeringConnection operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateRemotePeeringConnection.go.html to see an example of how to use UpdateRemotePeeringConnectionRequest. type UpdateRemotePeeringConnectionRequest struct { // The OCID of the remote peering connection (RPC). @@ -19,7 +23,7 @@ type UpdateRemotePeeringConnectionRequest struct { UpdateRemotePeeringConnectionDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_route_table_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_route_table_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_route_table_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_route_table_details.go index d5da1e520..886e3d666 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_route_table_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_route_table_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateRouteTableDetails The representation of UpdateRouteTableDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_route_table_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_route_table_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_route_table_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_route_table_request_response.go index aca88c2c5..ea3c8a780 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_route_table_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_route_table_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateRouteTableRequest wrapper for the UpdateRouteTable operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateRouteTable.go.html to see an example of how to use UpdateRouteTableRequest. type UpdateRouteTableRequest struct { // The OCID of the route table. @@ -19,7 +23,7 @@ type UpdateRouteTableRequest struct { UpdateRouteTableDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_security_list_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_list_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_security_list_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_list_details.go index cc47dfc67..904dde4a4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_security_list_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_list_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateSecurityListDetails The representation of UpdateSecurityListDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_security_list_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_list_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_security_list_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_list_request_response.go index 0728336bf..bc7ff323c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_security_list_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_list_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateSecurityListRequest wrapper for the UpdateSecurityList operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateSecurityList.go.html to see an example of how to use UpdateSecurityListRequest. type UpdateSecurityListRequest struct { // The OCID of the security list. @@ -19,7 +23,7 @@ type UpdateSecurityListRequest struct { UpdateSecurityListDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_security_rule_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_rule_details.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_security_rule_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_rule_details.go index 2d59c7c02..8c9fe616a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_security_rule_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_security_rule_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateSecurityRuleDetails A rule for allowing inbound (`direction`= INGRESS) or outbound (`direction`= EGRESS) IP packets. @@ -42,7 +42,7 @@ type UpdateSecurityRuleDetails struct { // Allowed values: // * An IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security rule for traffic destined for a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -61,15 +61,6 @@ type UpdateSecurityRuleDetails struct { // NetworkSecurityGroup. DestinationType UpdateSecurityRuleDetailsDestinationTypeEnum `mandatory:"false" json:"destinationType,omitempty"` - // Optional and valid only for ICMP and ICMPv6. Use to specify a particular ICMP type and code - // as defined in: - // - ICMP Parameters (http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml) - // - ICMPv6 Parameters (https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml) - // If you specify ICMP or ICMPv6 as the protocol but omit this object, then all ICMP types and - // codes are allowed. If you do provide this object, the type is required and the code is optional. - // To enable MTU negotiation for ingress internet traffic via IPv4, make sure to allow type 3 ("Destination - // Unreachable") code 4 ("Fragmentation Needed and Don't Fragment was Set"). If you need to specify - // multiple codes for a single type, create a separate security rule for each. IcmpOptions *IcmpOptions `mandatory:"false" json:"icmpOptions"` // A stateless rule allows traffic in one direction. Remember to add a corresponding @@ -84,7 +75,7 @@ type UpdateSecurityRuleDetails struct { // Allowed values: // * An IP address range in CIDR notation. For example: `192.168.1.0/24` or `2001:0db8:0123:45::/56` // Note that IPv6 addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // * The `cidrBlock` value for a Service, if you're // setting up a security rule for traffic coming from a particular `Service` through // a service gateway. For example: `oci-phx-objectstorage`. @@ -102,12 +93,8 @@ type UpdateSecurityRuleDetails struct { // NetworkSecurityGroup. SourceType UpdateSecurityRuleDetailsSourceTypeEnum `mandatory:"false" json:"sourceType,omitempty"` - // Optional and valid only for TCP. Use to specify particular destination ports for TCP rules. - // If you specify TCP as the protocol but omit this object, then all destination ports are allowed. TcpOptions *TcpOptions `mandatory:"false" json:"tcpOptions"` - // Optional and valid only for UDP. Use to specify particular destination ports for UDP rules. - // If you specify UDP as the protocol but omit this object, then all destination ports are allowed. UdpOptions *UdpOptions `mandatory:"false" json:"udpOptions"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_service_gateway_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_service_gateway_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_service_gateway_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_service_gateway_details.go index 4f5f973e2..ffaede673 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_service_gateway_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_service_gateway_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateServiceGatewayDetails The representation of UpdateServiceGatewayDetails @@ -41,7 +41,7 @@ type UpdateServiceGatewayDetails struct { // The OCID of the route table the service gateway will use. // For information about why you would associate a route table with a service gateway, see - // Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/Content/Network/Tasks/transitroutingoracleservices.htm). + // Transit Routing: Private Access to Oracle Services (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/transitroutingoracleservices.htm). RouteTableId *string `mandatory:"false" json:"routeTableId"` // List of all the `Service` objects you want enabled on this service gateway. Sending an empty list diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_service_gateway_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_service_gateway_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_service_gateway_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_service_gateway_request_response.go index 6c8c8f2b3..2b04e90bf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_service_gateway_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_service_gateway_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateServiceGatewayRequest wrapper for the UpdateServiceGateway operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateServiceGateway.go.html to see an example of how to use UpdateServiceGatewayRequest. type UpdateServiceGatewayRequest struct { - // The service gateway's OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm). + // The service gateway's OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm). ServiceGatewayId *string `mandatory:"true" contributesTo:"path" name:"serviceGatewayId"` // Details object for updating a service gateway. UpdateServiceGatewayDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_subnet_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_subnet_details.go similarity index 73% rename from vendor/github.com/oracle/oci-go-sdk/core/update_subnet_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_subnet_details.go index d185831ff..9e95ac1af 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_subnet_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_subnet_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateSubnetDetails The representation of UpdateSubnetDetails @@ -45,6 +45,16 @@ type UpdateSubnetDetails struct { // security lists are associated *with the subnet*, but the rules are // applied to the individual VNICs in the subnet. SecurityListIds []string `mandatory:"false" json:"securityListIds"` + + // The CIDR block of the subnet. The new CIDR block must meet the following criteria: + // - Must be valid. + // - The CIDR block's IP range must be completely within one of the VCN's CIDR block ranges. + // - The old and new CIDR block ranges must use the same network address. Example: `10.0.0.0/25` and `10.0.0.0/24`. + // - Must contain all IP addresses in use in the old CIDR range. + // - The new CIDR range's broadcast address (last IP address of CIDR range) must not be an IP address in use in the old CIDR range. + // **Note:** If you are changing the CIDR block, you cannot create VNICs or private IPs for this resource while the update is in progress. + // Example: `172.16.0.0/16` + CidrBlock *string `mandatory:"false" json:"cidrBlock"` } func (m UpdateSubnetDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_subnet_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_subnet_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_subnet_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_subnet_request_response.go index afa8fa44d..333f47d5a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_subnet_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_subnet_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateSubnetRequest wrapper for the UpdateSubnet operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateSubnet.go.html to see an example of how to use UpdateSubnetRequest. type UpdateSubnetRequest struct { // The OCID of the subnet. @@ -19,7 +23,7 @@ type UpdateSubnetRequest struct { UpdateSubnetDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_tunnel_cpe_device_config_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_tunnel_cpe_device_config_details.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/update_tunnel_cpe_device_config_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_tunnel_cpe_device_config_details.go index 39d3f680a..8a2acc177 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_tunnel_cpe_device_config_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_tunnel_cpe_device_config_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateTunnelCpeDeviceConfigDetails The representation of UpdateTunnelCpeDeviceConfigDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_tunnel_cpe_device_config_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_tunnel_cpe_device_config_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/update_tunnel_cpe_device_config_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_tunnel_cpe_device_config_request_response.go index e0d7b6ff1..d2c582f09 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_tunnel_cpe_device_config_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_tunnel_cpe_device_config_request_response.go @@ -1,28 +1,32 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateTunnelCpeDeviceConfigRequest wrapper for the UpdateTunnelCpeDeviceConfig operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateTunnelCpeDeviceConfig.go.html to see an example of how to use UpdateTunnelCpeDeviceConfigRequest. type UpdateTunnelCpeDeviceConfigRequest struct { // The OCID of the IPSec connection. IpscId *string `mandatory:"true" contributesTo:"path" name:"ipscId"` - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the tunnel. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the tunnel. TunnelId *string `mandatory:"true" contributesTo:"path" name:"tunnelId"` // Request to input the tunnel's cpe configuration parameters UpdateTunnelCpeDeviceConfigDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_vcn_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vcn_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_vcn_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_vcn_details.go index 4ed37677d..1c921ebb9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_vcn_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vcn_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVcnDetails The representation of UpdateVcnDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_vcn_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vcn_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_vcn_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_vcn_request_response.go index 4b4502aa3..3254cc9e0 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_vcn_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vcn_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVcnRequest wrapper for the UpdateVcn operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVcn.go.html to see an example of how to use UpdateVcnRequest. type UpdateVcnRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VCN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VCN. VcnId *string `mandatory:"true" contributesTo:"path" name:"vcnId"` // Details object for updating a VCN. UpdateVcnDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_virtual_circuit_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_virtual_circuit_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_virtual_circuit_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_virtual_circuit_details.go index bd7d54043..620061583 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_virtual_circuit_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_virtual_circuit_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVirtualCircuitDetails The representation of UpdateVirtualCircuitDetails @@ -69,7 +69,7 @@ type UpdateVirtualCircuitDetails struct { GatewayId *string `mandatory:"false" json:"gatewayId"` // The provider's state in relation to this virtual circuit. Relevant only - // if the customer is using FastConnect via a provider. ACTIVE + // if the customer is using FastConnect via a provider. ACTIVE // means the provider has provisioned the virtual circuit from their // end. INACTIVE means the provider has not yet provisioned the virtual // circuit, or has de-provisioned it. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_virtual_circuit_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_virtual_circuit_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_virtual_circuit_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_virtual_circuit_request_response.go index 70800a4e1..59a393aac 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_virtual_circuit_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_virtual_circuit_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVirtualCircuitRequest wrapper for the UpdateVirtualCircuit operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVirtualCircuit.go.html to see an example of how to use UpdateVirtualCircuitRequest. type UpdateVirtualCircuitRequest struct { // The OCID of the virtual circuit. @@ -19,7 +23,7 @@ type UpdateVirtualCircuitRequest struct { UpdateVirtualCircuitDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_vlan_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vlan_details.go similarity index 72% rename from vendor/github.com/oracle/oci-go-sdk/core/update_vlan_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_vlan_details.go index 1fd48fa35..459c30a66 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_vlan_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vlan_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVlanDetails The representation of UpdateVlanDetails @@ -42,6 +42,15 @@ type UpdateVlanDetails struct { // The OCID of the route table the VLAN will use. RouteTableId *string `mandatory:"false" json:"routeTableId"` + + // The CIDR block of the VLAN. The new CIDR block must meet the following criteria: + // - Must be valid. + // - The CIDR block's IP range must be completely within one of the VCN's CIDR block ranges. + // - The old and new CIDR block ranges must use the same network address. Example: `10.0.0.0/25` and `10.0.0.0/24`. + // - Must contain all IP addresses in use in the old CIDR range. + // - The new CIDR range's broadcast address (last IP address of CIDR range) must not be an IP address in use in the old CIDR range. + // **Note:** If you are changing the CIDR block, you cannot create VNICs or private IPs for this resource while the update is in progress. + CidrBlock *string `mandatory:"false" json:"cidrBlock"` } func (m UpdateVlanDetails) String() string { diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_vlan_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vlan_request_response.go similarity index 86% rename from vendor/github.com/oracle/oci-go-sdk/core/update_vlan_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_vlan_request_response.go index ec2e3d992..4e188bcad 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_vlan_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vlan_request_response.go @@ -1,25 +1,29 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVlanRequest wrapper for the UpdateVlan operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVlan.go.html to see an example of how to use UpdateVlanRequest. type UpdateVlanRequest struct { - // The OCID (https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm) of the VLAN. + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the VLAN. VlanId *string `mandatory:"true" contributesTo:"path" name:"vlanId"` // Details object for updating a subnet. UpdateVlanDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_vnic_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vnic_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_vnic_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_vnic_details.go index db8b82191..3816fffcf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_vnic_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vnic_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVnicDetails The representation of UpdateVnicDetails @@ -45,7 +45,7 @@ type UpdateVnicDetails struct { // ListPrivateIps and // GetPrivateIp. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). HostnameLabel *string `mandatory:"false" json:"hostnameLabel"` // A list of the OCIDs of the network security groups (NSGs) to add the VNIC to. Setting this as @@ -60,7 +60,7 @@ type UpdateVnicDetails struct { // Whether the source/destination check is disabled on the VNIC. // Defaults to `false`, which means the check is performed. For information about why you would // skip the source/destination check, see - // Using a Private IP as a Route Target (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm#privateip). + // Using a Private IP as a Route Target (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm#privateip). // If the VNIC belongs to a VLAN as part of the Oracle Cloud VMware Solution (instead of // belonging to a subnet), the value of the `skipSourceDestCheck` attribute is ignored. // This is because the source/destination check is always disabled for VNICs in a VLAN. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_vnic_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vnic_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_vnic_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_vnic_request_response.go index 567d64617..7fc74a668 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_vnic_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_vnic_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVnicRequest wrapper for the UpdateVnic operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVnic.go.html to see an example of how to use UpdateVnicRequest. type UpdateVnicRequest struct { // The OCID of the VNIC. @@ -19,7 +23,7 @@ type UpdateVnicRequest struct { UpdateVnicDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_details.go index a49c3c83f..c55ac3f75 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVolumeBackupDetails The representation of UpdateVolumeBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_policy_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_policy_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_policy_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_policy_details.go index 57224e865..9a2de164a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_policy_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_policy_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,10 +14,10 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) -// UpdateVolumeBackupPolicyDetails Specifies the properties for a updating a user defined backup policy. +// UpdateVolumeBackupPolicyDetails Specifies the properties for updating a user defined backup policy. // For more information about user defined backup policies, // see User Defined Policies (https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/schedulingvolumebackups.htm#UserDefinedBackupPolicies) in // Policy-Based Backups (https://docs.cloud.oracle.com/iaas/Content/Block/Tasks/schedulingvolumebackups.htm). diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_policy_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_policy_request_response.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_policy_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_policy_request_response.go index 9dfd44957..f201c04e9 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_policy_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_policy_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVolumeBackupPolicyRequest wrapper for the UpdateVolumeBackupPolicy operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeBackupPolicy.go.html to see an example of how to use UpdateVolumeBackupPolicyRequest. type UpdateVolumeBackupPolicyRequest struct { // The OCID of the volume backup policy. @@ -19,7 +23,7 @@ type UpdateVolumeBackupPolicyRequest struct { UpdateVolumeBackupPolicyDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_request_response.go index df16a05f2..cb3d8b2c7 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVolumeBackupRequest wrapper for the UpdateVolumeBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeBackup.go.html to see an example of how to use UpdateVolumeBackupRequest. type UpdateVolumeBackupRequest struct { // The OCID of the volume backup. @@ -19,7 +23,7 @@ type UpdateVolumeBackupRequest struct { UpdateVolumeBackupDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_details.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_details.go index afb0d6ceb..12110a56d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVolumeDetails The representation of UpdateVolumeDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_backup_details.go index 0f6b405dd..f4f343821 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVolumeGroupBackupDetails The representation of UpdateVolumeGroupBackupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_backup_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_backup_request_response.go similarity index 88% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_backup_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_backup_request_response.go index ca7645669..dad7af13b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_backup_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_backup_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVolumeGroupBackupRequest wrapper for the UpdateVolumeGroupBackup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeGroupBackup.go.html to see an example of how to use UpdateVolumeGroupBackupRequest. type UpdateVolumeGroupBackupRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group backup. @@ -19,7 +23,7 @@ type UpdateVolumeGroupBackupRequest struct { UpdateVolumeGroupBackupDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_details.go index 85f779af7..608e9355b 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVolumeGroupDetails The representation of UpdateVolumeGroupDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_request_response.go index 830d687b9..7f3b6ee48 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_group_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_group_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVolumeGroupRequest wrapper for the UpdateVolumeGroup operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeGroup.go.html to see an example of how to use UpdateVolumeGroupRequest. type UpdateVolumeGroupRequest struct { // The Oracle Cloud ID (OCID) that uniquely identifies the volume group. @@ -19,7 +23,7 @@ type UpdateVolumeGroupRequest struct { UpdateVolumeGroupDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_kms_key_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_kms_key_details.go similarity index 92% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_kms_key_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_kms_key_details.go index 2dc9015a8..cfedc2718 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_kms_key_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_kms_key_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdateVolumeKmsKeyDetails The representation of UpdateVolumeKmsKeyDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_kms_key_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_kms_key_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_kms_key_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_kms_key_request_response.go index 64d35c6f9..e5767adf4 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_kms_key_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_kms_key_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVolumeKmsKeyRequest wrapper for the UpdateVolumeKmsKey operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolumeKmsKey.go.html to see an example of how to use UpdateVolumeKmsKeyRequest. type UpdateVolumeKmsKeyRequest struct { // The OCID of the volume. @@ -19,7 +23,7 @@ type UpdateVolumeKmsKeyRequest struct { UpdateVolumeKmsKeyDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_request_response.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/update_volume_request_response.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_request_response.go index a20e5411f..661c70160 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/update_volume_request_response.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/update_volume_request_response.go @@ -1,15 +1,19 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" "net/http" ) // UpdateVolumeRequest wrapper for the UpdateVolume operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/UpdateVolume.go.html to see an example of how to use UpdateVolumeRequest. type UpdateVolumeRequest struct { // The OCID of the volume. @@ -19,7 +23,7 @@ type UpdateVolumeRequest struct { UpdateVolumeDetails `contributesTo:"body"` // For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` - // parameter to the value of the etag from a previous GET or POST response for that resource. The resource + // parameter to the value of the etag from a previous GET or POST response for that resource. The resource // will be updated or deleted only if the etag you provide matches the resource's current etag value. IfMatch *string `mandatory:"false" contributesTo:"header" name:"if-match"` diff --git a/vendor/github.com/oracle/oci-go-sdk/core/updated_network_security_group_security_rules.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/updated_network_security_group_security_rules.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/updated_network_security_group_security_rules.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/updated_network_security_group_security_rules.go index d4de8ea2c..d8c47513c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/updated_network_security_group_security_rules.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/updated_network_security_group_security_rules.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // UpdatedNetworkSecurityGroupSecurityRules The representation of UpdatedNetworkSecurityGroupSecurityRules diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/validate_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/validate_byoip_range_request_response.go new file mode 100644 index 000000000..14ea831c7 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/validate_byoip_range_request_response.go @@ -0,0 +1,67 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// ValidateByoipRangeRequest wrapper for the ValidateByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/ValidateByoipRange.go.html to see an example of how to use ValidateByoipRangeRequest. +type ValidateByoipRangeRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request ValidateByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request ValidateByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request ValidateByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// ValidateByoipRangeResponse wrapper for the ValidateByoipRange operation +type ValidateByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` + + // The OCID of the work request. Use GetWorkRequest (https://docs.cloud.oracle.com/api/#/en/workrequests/20160918/WorkRequest/GetWorkRequest) + // with this ID to track the status of the request. + OpcWorkRequestId *string `presentIn:"header" name:"opc-work-request-id"` +} + +func (response ValidateByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response ValidateByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/vcn.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/vcn.go similarity index 90% rename from vendor/github.com/oracle/oci-go-sdk/core/vcn.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/vcn.go index fe26b64e1..b1ddf4ecf 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/vcn.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/vcn.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,22 +14,23 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Vcn A virtual cloud network (VCN). For more information, see -// Overview of the Networking Service (https://docs.cloud.oracle.com/Content/Network/Concepts/overview.htm). +// Overview of the Networking Service (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm). // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type Vcn struct { - // The CIDR IP address block of the VCN. + // Deprecated. The first CIDR IP address from cidrBlocks. // Example: `172.16.0.0/16` CidrBlock *string `mandatory:"true" json:"cidrBlock"` + // The list of IPv4 CIDR blocks the VCN will use. + CidrBlocks []string `mandatory:"true" json:"cidrBlocks"` + // The OCID of the compartment containing the VCN. CompartmentId *string `mandatory:"true" json:"compartmentId"` @@ -65,7 +66,7 @@ type Vcn struct { // The absence of this parameter means the Internet and VCN Resolver will // not work for this VCN. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `vcn1` DnsLabel *string `mandatory:"false" json:"dnsLabel"` @@ -79,7 +80,7 @@ type Vcn struct { // provides one and uses that *same* CIDR for the `ipv6PublicCidrBlock`. If you do provide a // value, Oracle provides a *different* CIDR for the `ipv6PublicCidrBlock`. Note that IPv6 // addressing is currently supported only in certain regions. See - // IPv6 Addresses (https://docs.cloud.oracle.com/Content/Network/Concepts/ipv6.htm). + // IPv6 Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm). // Example: `2001:0db8:0123::/48` Ipv6CidrBlock *string `mandatory:"false" json:"ipv6CidrBlock"` @@ -98,7 +99,7 @@ type Vcn struct { // The VCN's domain name, which consists of the VCN's DNS label, and the // `oraclevcn.com` domain. // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `vcn1.oraclevcn.com` VcnDomainName *string `mandatory:"false" json:"vcnDomainName"` } @@ -116,6 +117,7 @@ const ( VcnLifecycleStateAvailable VcnLifecycleStateEnum = "AVAILABLE" VcnLifecycleStateTerminating VcnLifecycleStateEnum = "TERMINATING" VcnLifecycleStateTerminated VcnLifecycleStateEnum = "TERMINATED" + VcnLifecycleStateUpdating VcnLifecycleStateEnum = "UPDATING" ) var mappingVcnLifecycleState = map[string]VcnLifecycleStateEnum{ @@ -123,6 +125,7 @@ var mappingVcnLifecycleState = map[string]VcnLifecycleStateEnum{ "AVAILABLE": VcnLifecycleStateAvailable, "TERMINATING": VcnLifecycleStateTerminating, "TERMINATED": VcnLifecycleStateTerminated, + "UPDATING": VcnLifecycleStateUpdating, } // GetVcnLifecycleStateEnumValues Enumerates the set of values for VcnLifecycleStateEnum diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/vcn_dns_resolver_association.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/vcn_dns_resolver_association.go new file mode 100644 index 000000000..20fa4f670 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/vcn_dns_resolver_association.go @@ -0,0 +1,62 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +// Core Services API +// +// API covering the Networking (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/overview.htm), +// Compute (https://docs.cloud.oracle.com/iaas/Content/Compute/Concepts/computeoverview.htm), and +// Block Volume (https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm) services. Use this API +// to manage resources such as virtual cloud networks (VCNs), compute instances, and +// block storage volumes. +// + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" +) + +// VcnDnsResolverAssociation The information about the VCN and the DNS resolver in the association. +type VcnDnsResolverAssociation struct { + + // The OCID of the VCN in the association. + VcnId *string `mandatory:"true" json:"vcnId"` + + // The current state of the association. + LifecycleState VcnDnsResolverAssociationLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` + + // The OCID of the DNS resolver in the association. + DnsResolverId *string `mandatory:"false" json:"dnsResolverId"` +} + +func (m VcnDnsResolverAssociation) String() string { + return common.PointerString(m) +} + +// VcnDnsResolverAssociationLifecycleStateEnum Enum with underlying type: string +type VcnDnsResolverAssociationLifecycleStateEnum string + +// Set of constants representing the allowable values for VcnDnsResolverAssociationLifecycleStateEnum +const ( + VcnDnsResolverAssociationLifecycleStateProvisioning VcnDnsResolverAssociationLifecycleStateEnum = "PROVISIONING" + VcnDnsResolverAssociationLifecycleStateAvailable VcnDnsResolverAssociationLifecycleStateEnum = "AVAILABLE" + VcnDnsResolverAssociationLifecycleStateTerminating VcnDnsResolverAssociationLifecycleStateEnum = "TERMINATING" + VcnDnsResolverAssociationLifecycleStateTerminated VcnDnsResolverAssociationLifecycleStateEnum = "TERMINATED" +) + +var mappingVcnDnsResolverAssociationLifecycleState = map[string]VcnDnsResolverAssociationLifecycleStateEnum{ + "PROVISIONING": VcnDnsResolverAssociationLifecycleStateProvisioning, + "AVAILABLE": VcnDnsResolverAssociationLifecycleStateAvailable, + "TERMINATING": VcnDnsResolverAssociationLifecycleStateTerminating, + "TERMINATED": VcnDnsResolverAssociationLifecycleStateTerminated, +} + +// GetVcnDnsResolverAssociationLifecycleStateEnumValues Enumerates the set of values for VcnDnsResolverAssociationLifecycleStateEnum +func GetVcnDnsResolverAssociationLifecycleStateEnumValues() []VcnDnsResolverAssociationLifecycleStateEnum { + values := make([]VcnDnsResolverAssociationLifecycleStateEnum, 0) + for _, v := range mappingVcnDnsResolverAssociationLifecycleState { + values = append(values, v) + } + return values +} diff --git a/vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit.go index d10b25f0d..5942d3a50 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VirtualCircuit For use with Oracle Cloud Infrastructure FastConnect. @@ -22,7 +22,7 @@ import ( // network connections to provide a single, logical connection between the edge router // on the customer's existing network and Oracle Cloud Infrastructure. *Private* // virtual circuits support private peering, and *public* virtual circuits support -// public peering. For more information, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// public peering. For more information, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). // Each virtual circuit is made up of information shared between a customer, Oracle, // and a provider (if the customer is using FastConnect via a provider). Who fills in // a given property of a virtual circuit depends on whether the BGP session related to @@ -32,12 +32,10 @@ import ( // provider and Oracle each do their part to provision the virtual circuit. // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type VirtualCircuit struct { - // The provisioned data rate of the connection. To get a list of the + // The provisioned data rate of the connection. To get a list of the // available bandwidth levels (that is, shapes), see // ListFastConnectProviderVirtualCircuitBandwidthShapes. // Example: `10 Gbps` @@ -93,7 +91,7 @@ type VirtualCircuit struct { // The virtual circuit's current state. For information about // the different states, see - // FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). + // FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). LifecycleState VirtualCircuitLifecycleStateEnum `mandatory:"false" json:"lifecycleState,omitempty"` // The Oracle BGP ASN. @@ -139,7 +137,7 @@ type VirtualCircuit struct { TimeCreated *common.SDKTime `mandatory:"false" json:"timeCreated"` // Whether the virtual circuit supports private or public peering. For more information, - // see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). + // see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). Type VirtualCircuitTypeEnum `mandatory:"false" json:"type,omitempty"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit_bandwidth_shape.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit_bandwidth_shape.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit_bandwidth_shape.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit_bandwidth_shape.go index 39f8d7be0..9fec82c07 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit_bandwidth_shape.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit_bandwidth_shape.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VirtualCircuitBandwidthShape An individual bandwidth level for virtual circuits. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit_public_prefix.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit_public_prefix.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit_public_prefix.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit_public_prefix.go index 1c0467423..c219debad 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/virtual_circuit_public_prefix.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/virtual_circuit_public_prefix.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,12 +14,12 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VirtualCircuitPublicPrefix A public IP prefix and its details. With a public virtual circuit, the customer // specifies the customer-owned public IP prefixes to advertise across the connection. -// For more information, see FastConnect Overview (https://docs.cloud.oracle.com/Content/Network/Concepts/fastconnect.htm). +// For more information, see FastConnect Overview (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/fastconnect.htm). type VirtualCircuitPublicPrefix struct { // Publix IP prefix (CIDR) that the customer specified. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/vlan.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/vlan.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/vlan.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/vlan.go index f811953ae..f1d9ff109 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/vlan.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/vlan.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Vlan A resource to be used only with the Oracle Cloud VMware Solution. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/vnic.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/vnic.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/vnic.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/vnic.go index 4a33ce765..7bdb9627d 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/vnic.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/vnic.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Vnic A virtual network interface card. Each VNIC resides in a subnet in a VCN. @@ -22,11 +22,11 @@ import ( // through that subnet. Each instance has a *primary VNIC* that is automatically // created and attached during launch. You can add *secondary VNICs* to an // instance after it's launched. For more information, see -// Virtual Network Interface Cards (VNICs) (https://docs.cloud.oracle.com/Content/Network/Tasks/managingVNICs.htm). +// Virtual Network Interface Cards (VNICs) (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingVNICs.htm). // Each VNIC has a *primary private IP* that is automatically assigned during launch. // You can add *secondary private IPs* to a VNIC after it's created. For more // information, see CreatePrivateIp and -// IP Addresses (https://docs.cloud.oracle.com/Content/Network/Tasks/managingIPaddresses.htm). +// IP Addresses (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingIPaddresses.htm). // // If you are an Oracle Cloud VMware Solution customer, you will have secondary VNICs // that reside in a VLAN instead of a subnet. These VNICs have other differences, which @@ -34,9 +34,7 @@ import ( // Also see Vlan. // To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, // talk to an administrator. If you're an administrator who needs to write policies to give users access, see -// Getting Started with Policies (https://docs.cloud.oracle.com/Content/Identity/Concepts/policygetstarted.htm). -// **Warning:** Oracle recommends that you avoid using any confidential information when you -// supply string values using the API. +// Getting Started with Policies (https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policygetstarted.htm). type Vnic struct { // The VNIC's availability domain. @@ -77,7 +75,7 @@ type Vnic struct { // RFC 952 (https://tools.ietf.org/html/rfc952) and // RFC 1123 (https://tools.ietf.org/html/rfc1123). // For more information, see - // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/Content/Network/Concepts/dns.htm). + // DNS in Your Virtual Cloud Network (https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/dns.htm). // Example: `bminstance-1` HostnameLabel *string `mandatory:"false" json:"hostnameLabel"` @@ -116,7 +114,7 @@ type Vnic struct { // Whether the source/destination check is disabled on the VNIC. // Defaults to `false`, which means the check is performed. For information // about why you would skip the source/destination check, see - // Using a Private IP as a Route Target (https://docs.cloud.oracle.com/Content/Network/Tasks/managingroutetables.htm#privateip). + // Using a Private IP as a Route Target (https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm#privateip). // // If the VNIC belongs to a VLAN as part of the Oracle Cloud VMware Solution (instead of // belonging to a subnet), the `skipSourceDestCheck` attribute is `true`. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/vnic_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/vnic_attachment.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/vnic_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/vnic_attachment.go index 7e075dfd2..53066d82e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/vnic_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/vnic_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VnicAttachment Represents an attachment between a VNIC and an instance. For more information, see diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume.go similarity index 97% rename from vendor/github.com/oracle/oci-go-sdk/core/volume.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume.go index 63c3a0afe..97551023a 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // Volume A detachable block volume device that allows you to dynamically expand @@ -45,7 +45,8 @@ type Volume struct { // The current state of a volume. LifecycleState VolumeLifecycleStateEnum `mandatory:"true" json:"lifecycleState"` - // The size of the volume in MBs. This field is deprecated. Use sizeInGBs instead. + // The size of the volume in MBs. This field is deprecated. Use + // sizeInGBs instead. SizeInMBs *int64 `mandatory:"true" json:"sizeInMBs"` // The date and time the volume was created. Format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). @@ -83,8 +84,6 @@ type Volume struct { // The size of the volume in GBs. SizeInGBs *int64 `mandatory:"false" json:"sizeInGBs"` - // The volume source, either an existing volume in the same availability domain or a volume backup. - // If null, an empty volume is created. SourceDetails VolumeSourceDetails `mandatory:"false" json:"sourceDetails"` // The OCID of the source volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_attachment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_attachment.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_attachment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_attachment.go index 1c3861d19..36805b5fe 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_attachment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_attachment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeAttachment A base object for all types of attachments between a storage volume and an instance. @@ -61,7 +61,10 @@ type VolumeAttachment interface { // Whether the attachment was created in read-only mode. GetIsReadOnly() *bool - // Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified. + // Whether the attachment should be created in shareable mode. If an attachment + // is created in shareable mode, then other instances can attach the same volume, provided + // that they also create their attachments in shareable mode. Only certain volume types can + // be attached in shareable mode. Defaults to false if not specified. GetIsShareable() *bool // Whether in-transit encryption for the data volume's paravirtualized attachment is enabled or not. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup.go similarity index 98% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_backup.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup.go index 333420c15..6c50c0d73 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeBackup A point-in-time copy of a volume that can then be used to create a new block volume diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup_policy.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_policy.go similarity index 96% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_backup_policy.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_policy.go index 47d364bdb..432cd868c 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup_policy.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_policy.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeBackupPolicy A policy for automatically creating volume backups according to a diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup_policy_assignment.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_policy_assignment.go similarity index 89% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_backup_policy_assignment.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_policy_assignment.go index 4e4edd7a4..fce760184 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup_policy_assignment.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_policy_assignment.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeBackupPolicyAssignment Specifies the volume that the volume backup policy is assigned to. @@ -31,7 +31,8 @@ type VolumeBackupPolicyAssignment struct { // The OCID of the volume backup policy that has been assigned to the volume. PolicyId *string `mandatory:"true" json:"policyId"` - // The date and time the volume backup policy was assigned to the volume. The format is defined by RFC3339 (https://tools.ietf.org/html/rfc3339). + // The date and time the volume backup policy was assigned to the volume. The format is + // defined by RFC3339 (https://tools.ietf.org/html/rfc3339). TimeCreated *common.SDKTime `mandatory:"true" json:"timeCreated"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup_schedule.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_schedule.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_backup_schedule.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_schedule.go index d3dffe07d..d74e8a708 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_backup_schedule.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_backup_schedule.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeBackupSchedule Defines the backup frequency and retention period for a volume backup policy. For more information, @@ -30,17 +30,27 @@ type VolumeBackupSchedule struct { // How long, in seconds, to keep the volume backups created by this schedule. RetentionSeconds *int `mandatory:"true" json:"retentionSeconds"` - // The number of seconds that the volume backup start time should be shifted from the default interval boundaries specified by the period. The volume backup start time is the frequency start time plus the offset. + // The number of seconds that the volume backup start + // time should be shifted from the default interval boundaries specified by + // the period. The volume backup start time is the frequency start time plus the offset. OffsetSeconds *int `mandatory:"false" json:"offsetSeconds"` - // Indicates how the offset is defined. If value is `STRUCTURED`, then `hourOfDay`, `dayOfWeek`, `dayOfMonth`, and `month` fields are used and `offsetSeconds` will be ignored in requests and users should ignore its value from the responses. - // `hourOfDay` is applicable for periods `ONE_DAY`, `ONE_WEEK`, `ONE_MONTH` and `ONE_YEAR`. - // `dayOfWeek` is applicable for period `ONE_WEEK`. + // Indicates how the offset is defined. If value is `STRUCTURED`, + // then `hourOfDay`, `dayOfWeek`, `dayOfMonth`, and `month` fields are used + // and `offsetSeconds` will be ignored in requests and users should ignore its + // value from the responses. + // `hourOfDay` is applicable for periods `ONE_DAY`, + // `ONE_WEEK`, `ONE_MONTH` and `ONE_YEAR`. + // `dayOfWeek` is applicable for period + // `ONE_WEEK`. // `dayOfMonth` is applicable for periods `ONE_MONTH` and `ONE_YEAR`. // 'month' is applicable for period 'ONE_YEAR'. // They will be ignored in the requests for inapplicable periods. - // If value is `NUMERIC_SECONDS`, then `offsetSeconds` will be used for both requests and responses and the structured fields will be ignored in the requests and users should ignore their values from the responses. - // For clients using older versions of Apis and not sending `offsetType` in their requests, the behaviour is just like `NUMERIC_SECONDS`. + // If value is `NUMERIC_SECONDS`, then `offsetSeconds` + // will be used for both requests and responses and the structured fields will be + // ignored in the requests and users should ignore their values from the responses. + // For clients using older versions of Apis and not sending `offsetType` in their + // requests, the behaviour is just like `NUMERIC_SECONDS`. OffsetType VolumeBackupScheduleOffsetTypeEnum `mandatory:"false" json:"offsetType,omitempty"` // The hour of the day to schedule the volume backup. @@ -224,7 +234,7 @@ const ( ) var mappingVolumeBackupScheduleTimeZone = map[string]VolumeBackupScheduleTimeZoneEnum{ - "UTC": VolumeBackupScheduleTimeZoneUtc, + "UTC": VolumeBackupScheduleTimeZoneUtc, "REGIONAL_DATA_CENTER_TIME": VolumeBackupScheduleTimeZoneRegionalDataCenterTime, } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_group.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_group.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group.go index 13528f138..51608b021 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_group.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeGroup Specifies a volume group which is a collection of @@ -30,7 +30,8 @@ type VolumeGroup struct { // The OCID of the compartment that contains the volume group. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // A user-friendly name for the volume group. Does not have to be unique, and it's changeable. Avoid entering confidential information. + // A user-friendly name for the volume group. Does not have to be + // unique, and it's changeable. Avoid entering confidential information. DisplayName *string `mandatory:"true" json:"displayName"` // The OCID for the volume group. @@ -61,11 +62,10 @@ type VolumeGroup struct { // The aggregate size of the volume group in GBs. SizeInGBs *int64 `mandatory:"false" json:"sizeInGBs"` - // The volume group source. The source is either another a list of - // volume IDs in the same availability domain, another volume group, or a volume group backup. SourceDetails VolumeGroupSourceDetails `mandatory:"false" json:"sourceDetails"` - // Specifies whether the newly created cloned volume group's data has finished copying from the source volume group or backup. + // Specifies whether the newly created cloned volume group's data has finished copying + // from the source volume group or backup. IsHydrated *bool `mandatory:"false" json:"isHydrated"` } diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_backup.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_backup.go similarity index 76% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_group_backup.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_backup.go index beb711c9e..c7db07e2e 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_backup.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_backup.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeGroupBackup A point-in-time copy of a volume group that can then be used to create a new volume group @@ -29,7 +29,8 @@ type VolumeGroupBackup struct { // The OCID of the compartment that contains the volume group backup. CompartmentId *string `mandatory:"true" json:"compartmentId"` - // A user-friendly name for the volume group backup. Does not have to be unique and it's changeable. Avoid entering confidential information. + // A user-friendly name for the volume group backup. Does not have + // to be unique and it's changeable. Avoid entering confidential information. DisplayName *string `mandatory:"true" json:"displayName"` // The OCID of the volume group backup. @@ -53,6 +54,13 @@ type VolumeGroupBackup struct { // Example: `{"Operations": {"CostCenter": "42"}}` DefinedTags map[string]map[string]interface{} `mandatory:"false" json:"definedTags"` + // The date and time the volume group backup will expire and be automatically deleted. + // Format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). This parameter will always be present for volume group + // backups that were created automatically by a scheduled-backup policy. For manually + // created volume group backups, it will be absent, signifying that there is no expiration + // time and the backup will last forever until manually deleted. + ExpirationTime *common.SDKTime `mandatory:"false" json:"expirationTime"` + // Free-form tags for this resource. Each tag is a simple key-value pair with no // predefined name, type, or namespace. For more information, see Resource Tags (https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm). // Example: `{"Department": "Finance"}` @@ -64,21 +72,28 @@ type VolumeGroupBackup struct { // The aggregate size of the volume group backup, in GBs. SizeInGBs *int64 `mandatory:"false" json:"sizeInGBs"` + // Specifies whether the volume group backup was created manually, or via scheduled + // backup policy. + SourceType VolumeGroupBackupSourceTypeEnum `mandatory:"false" json:"sourceType,omitempty"` + // The date and time the request to create the volume group backup was received. Format defined by RFC3339 (https://tools.ietf.org/html/rfc3339). TimeRequestReceived *common.SDKTime `mandatory:"false" json:"timeRequestReceived"` // The aggregate size used by the volume group backup, in MBs. - // It is typically smaller than sizeInMBs, depending on the space - // consumed on the volume group and whether the volume backup is full or incremental. + // It is typically smaller than sizeInMBs, depending on the spaceconsumed + // on the volume group and whether the volume backup is full or incremental. UniqueSizeInMbs *int64 `mandatory:"false" json:"uniqueSizeInMbs"` // The aggregate size used by the volume group backup, in GBs. - // It is typically smaller than sizeInGBs, depending on the space - // consumed on the volume group and whether the volume backup is full or incremental. + // It is typically smaller than sizeInGBs, depending on the spaceconsumed + // on the volume group and whether the volume backup is full or incremental. UniqueSizeInGbs *int64 `mandatory:"false" json:"uniqueSizeInGbs"` // The OCID of the source volume group. VolumeGroupId *string `mandatory:"false" json:"volumeGroupId"` + + // The OCID of the source volume group backup. + SourceVolumeGroupBackupId *string `mandatory:"false" json:"sourceVolumeGroupBackupId"` } func (m VolumeGroupBackup) String() string { @@ -118,6 +133,29 @@ func GetVolumeGroupBackupLifecycleStateEnumValues() []VolumeGroupBackupLifecycle return values } +// VolumeGroupBackupSourceTypeEnum Enum with underlying type: string +type VolumeGroupBackupSourceTypeEnum string + +// Set of constants representing the allowable values for VolumeGroupBackupSourceTypeEnum +const ( + VolumeGroupBackupSourceTypeManual VolumeGroupBackupSourceTypeEnum = "MANUAL" + VolumeGroupBackupSourceTypeScheduled VolumeGroupBackupSourceTypeEnum = "SCHEDULED" +) + +var mappingVolumeGroupBackupSourceType = map[string]VolumeGroupBackupSourceTypeEnum{ + "MANUAL": VolumeGroupBackupSourceTypeManual, + "SCHEDULED": VolumeGroupBackupSourceTypeScheduled, +} + +// GetVolumeGroupBackupSourceTypeEnumValues Enumerates the set of values for VolumeGroupBackupSourceTypeEnum +func GetVolumeGroupBackupSourceTypeEnumValues() []VolumeGroupBackupSourceTypeEnum { + values := make([]VolumeGroupBackupSourceTypeEnum, 0) + for _, v := range mappingVolumeGroupBackupSourceType { + values = append(values, v) + } + return values +} + // VolumeGroupBackupTypeEnum Enum with underlying type: string type VolumeGroupBackupTypeEnum string diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_details.go similarity index 95% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_details.go index d1eb5baae..932b3df33 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeGroupSourceDetails Specifies the source for a volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volume_group_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volume_group_backup_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volume_group_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volume_group_backup_details.go index e61dd94c3..56e0a2023 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volume_group_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volume_group_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeGroupSourceFromVolumeGroupBackupDetails Specifies the volume group backup to restore from. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volume_group_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volume_group_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volume_group_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volume_group_details.go index fdaa30de0..09539e907 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volume_group_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volume_group_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeGroupSourceFromVolumeGroupDetails Specifies the volume group to clone from. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volumes_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volumes_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volumes_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volumes_details.go index 0c0ef885b..1e4b925f8 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_group_source_from_volumes_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_group_source_from_volumes_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeGroupSourceFromVolumesDetails Specifies the volumes in a volume group. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_kms_key.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_kms_key.go similarity index 91% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_kms_key.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_kms_key.go index 5a5278102..4d9621686 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_kms_key.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_kms_key.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -14,7 +14,7 @@ package core import ( - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeKmsKey The Key Management master encryption key associated with this volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_source_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_details.go similarity index 94% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_source_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_details.go index 995ae92a7..6d6d139f1 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_source_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeSourceDetails The representation of VolumeSourceDetails diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_source_from_volume_backup_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_from_volume_backup_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_source_from_volume_backup_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_from_volume_backup_details.go index 02d978203..e05df6144 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_source_from_volume_backup_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_from_volume_backup_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeSourceFromVolumeBackupDetails Specifies the volume backup. diff --git a/vendor/github.com/oracle/oci-go-sdk/core/volume_source_from_volume_details.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_from_volume_details.go similarity index 93% rename from vendor/github.com/oracle/oci-go-sdk/core/volume_source_from_volume_details.go rename to vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_from_volume_details.go index b3f693723..8d1c3fd73 100644 --- a/vendor/github.com/oracle/oci-go-sdk/core/volume_source_from_volume_details.go +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/volume_source_from_volume_details.go @@ -1,4 +1,4 @@ -// Copyright (c) 2016, 2018, 2020, Oracle and/or its affiliates. All rights reserved. +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. // This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. // Code generated. DO NOT EDIT. @@ -15,7 +15,7 @@ package core import ( "encoding/json" - "github.com/oracle/oci-go-sdk/common" + "github.com/oracle/oci-go-sdk/v36/common" ) // VolumeSourceFromVolumeDetails Specifies the source volume. diff --git a/vendor/github.com/oracle/oci-go-sdk/v36/core/withdraw_byoip_range_request_response.go b/vendor/github.com/oracle/oci-go-sdk/v36/core/withdraw_byoip_range_request_response.go new file mode 100644 index 000000000..4d68cea29 --- /dev/null +++ b/vendor/github.com/oracle/oci-go-sdk/v36/core/withdraw_byoip_range_request_response.go @@ -0,0 +1,63 @@ +// Copyright (c) 2016, 2018, 2021, Oracle and/or its affiliates. All rights reserved. +// This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +// Code generated. DO NOT EDIT. + +package core + +import ( + "github.com/oracle/oci-go-sdk/v36/common" + "net/http" +) + +// WithdrawByoipRangeRequest wrapper for the WithdrawByoipRange operation +// +// See also +// +// Click https://docs.cloud.oracle.com/en-us/iaas/tools/go-sdk-examples/latest/core/WithdrawByoipRange.go.html to see an example of how to use WithdrawByoipRangeRequest. +type WithdrawByoipRangeRequest struct { + + // The OCID (https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the `ByoipRange` resource containing the BYOIP CIDR block. + ByoipRangeId *string `mandatory:"true" contributesTo:"path" name:"byoipRangeId"` + + // Unique identifier for the request. + // If you need to contact Oracle about a particular request, please provide the request ID. + OpcRequestId *string `mandatory:"false" contributesTo:"header" name:"opc-request-id"` + + // Metadata about the request. This information will not be transmitted to the service, but + // represents information that the SDK will consume to drive retry behavior. + RequestMetadata common.RequestMetadata +} + +func (request WithdrawByoipRangeRequest) String() string { + return common.PointerString(request) +} + +// HTTPRequest implements the OCIRequest interface +func (request WithdrawByoipRangeRequest) HTTPRequest(method, path string) (http.Request, error) { + return common.MakeDefaultHTTPRequestWithTaggedStruct(method, path, request) +} + +// RetryPolicy implements the OCIRetryableRequest interface. This retrieves the specified retry policy. +func (request WithdrawByoipRangeRequest) RetryPolicy() *common.RetryPolicy { + return request.RequestMetadata.RetryPolicy +} + +// WithdrawByoipRangeResponse wrapper for the WithdrawByoipRange operation +type WithdrawByoipRangeResponse struct { + + // The underlying http response + RawResponse *http.Response + + // Unique Oracle-assigned identifier for the request. If you need to contact + // Oracle about a particular request, please provide the request ID. + OpcRequestId *string `presentIn:"header" name:"opc-request-id"` +} + +func (response WithdrawByoipRangeResponse) String() string { + return common.PointerString(response) +} + +// HTTPResponse implements the OCIResponse interface +func (response WithdrawByoipRangeResponse) HTTPResponse() *http.Response { + return response.RawResponse +} diff --git a/vendor/modules.txt b/vendor/modules.txt index f5a55521e..f7a0f0ffb 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -570,6 +570,8 @@ github.com/mitchellh/go-testing-interface github.com/mitchellh/go-vnc # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap +# github.com/mitchellh/gox v1.0.1 +## explicit # github.com/mitchellh/iochan v1.0.0 github.com/mitchellh/iochan # github.com/mitchellh/mapstructure v1.4.0 @@ -593,11 +595,13 @@ github.com/nu7hatch/gouuid # github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b ## explicit github.com/olekukonko/tablewriter -# github.com/oracle/oci-go-sdk v24.3.0+incompatible +# github.com/oracle/oci-go-sdk v18.0.0+incompatible ## explicit -github.com/oracle/oci-go-sdk/common -github.com/oracle/oci-go-sdk/common/auth -github.com/oracle/oci-go-sdk/core +# github.com/oracle/oci-go-sdk/v36 v36.2.0 +## explicit +github.com/oracle/oci-go-sdk/v36/common +github.com/oracle/oci-go-sdk/v36/common/auth +github.com/oracle/oci-go-sdk/v36/core # github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 ## explicit github.com/outscale/osc-sdk-go/osc From fb0886b7245245876a76824bfe212c5cc68ee9fa Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:32:13 -0400 Subject: [PATCH 148/212] website: Implement basic validation for plugin docs config --- .github/workflows/check-plugin-docs.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/check-plugin-docs.js b/.github/workflows/check-plugin-docs.js index ef4150fec..16a9495a3 100644 --- a/.github/workflows/check-plugin-docs.js +++ b/.github/workflows/check-plugin-docs.js @@ -20,6 +20,20 @@ async function checkPluginDocs() { console.log(`\n${COLOR_BLUE}${repo}${COLOR_RESET} | ${title}`); console.log(`Fetching docs from release "${version}" …`); try { + const undefinedProps = ["title", "repo", "version", "path"].filter( + (key) => typeof pluginEntry[key] == "undefined" + ); + if (undefinedProps.length > 0) { + throw new Error( + `Failed to validate plugin docs. Undefined configuration properties ${JSON.stringify( + undefinedProps + )} found for "${ + title || pluginEntry.path || repo + }". In "website/data/docs-remote-plugins.json", please ensure the missing properties ${JSON.stringify( + undefinedProps + )} are defined. Additional information on this configuration can be found in "website/README.md".` + ); + } const docsMdxFiles = await fetchPluginDocs({ repo, tag: version }); const mdxFilesByComponent = docsMdxFiles.reduce((acc, mdxFile) => { const componentType = mdxFile.filePath.split("/")[1]; From ce896351b92f7c60a41dacb5c80fc85405f5ee3e Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:37:21 -0400 Subject: [PATCH 149/212] website: temporary change to double-check validation --- website/data/docs-remote-plugins.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index ab7aecb94..8c247cfab 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -2,7 +2,6 @@ { "title": "Docker", "path": "docker", - "repo": "hashicorp/packer-plugin-docker", - "version": "v0.0.4" + "repo": "hashicorp/packer-plugin-docker" } ] From 15d467eaf1a1b840f46279c227c4529cd8a68d2d Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:45:12 -0400 Subject: [PATCH 150/212] website: fix outdated comment --- website/components/remote-plugin-docs/server.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/components/remote-plugin-docs/server.js b/website/components/remote-plugin-docs/server.js index 9b00b6f92..6054b78f1 100644 --- a/website/components/remote-plugin-docs/server.js +++ b/website/components/remote-plugin-docs/server.js @@ -31,8 +31,8 @@ async function generateStaticProps( ? remoteFile.fileString : fs.readFileSync(path.join(process.cwd(), filePath), 'utf8') // Construct the githubFileUrl, used for "Edit this page" link - // Note: for custom ".docs-artifacts" directories, the "Edit this page" - // link will lead to the artifact file rather than the "docs" source file + // Note: we expect remote files, such as those used to render plugin docs, + // to have a sourceUrl defined, that points to the file we built from const githubFileUrl = remoteFile ? remoteFile.sourceUrl : `https://github.com/hashicorp/${product.slug}/blob/${mainBranch}/website/${filePath}` From 55012937a92914ad884a35d8dc44c888d5b799e9 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:45:40 -0400 Subject: [PATCH 151/212] website: add comments to duo of plugin docs zip fns --- .../components/remote-plugin-docs/utils/parse-docs-zip.js | 6 ++++++ .../remote-plugin-docs/utils/parse-source-zip.js | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/website/components/remote-plugin-docs/utils/parse-docs-zip.js b/website/components/remote-plugin-docs/utils/parse-docs-zip.js index 69563877e..483065597 100644 --- a/website/components/remote-plugin-docs/utils/parse-docs-zip.js +++ b/website/components/remote-plugin-docs/utils/parse-docs-zip.js @@ -2,6 +2,12 @@ const path = require('path') const AdmZip = require('adm-zip') const validatePluginDocsFiles = require('./validate-plugin-docs-files') +/* + +NOTE: used for default `docs.zip` release assets + +*/ + // Given a response from fetching a docs.zip file, // which is a compressed "docs" folder, // diff --git a/website/components/remote-plugin-docs/utils/parse-source-zip.js b/website/components/remote-plugin-docs/utils/parse-source-zip.js index 07a26ad6a..f33208b7b 100644 --- a/website/components/remote-plugin-docs/utils/parse-source-zip.js +++ b/website/components/remote-plugin-docs/utils/parse-source-zip.js @@ -2,6 +2,13 @@ const path = require('path') const AdmZip = require('adm-zip') const validatePluginDocsFiles = require('./validate-plugin-docs-files') +/* + +NOTE: used for fallback approach, where we parse from +the full release archive + +*/ + // Given a response from fetching a source .zip file, // which contains a "docs" folder, // From e6596a0a1db04ad46cf4c4b0c7e5dc5bbfc2ebde Mon Sep 17 00:00:00 2001 From: Avi Miller Date: Sun, 21 Mar 2021 12:46:21 +1100 Subject: [PATCH 152/212] [oracle-oci] Add support for E3/E4.Flex shapes This addes an optional shape_config stanza which allows you to specify how many ocpus and memory the Flex instance should be allocated. This required an upgrade of the OCI Go SDK version. Signed-off-by: Avi Miller --- builder/oracle/oci/config.go | 6 ++++++ builder/oracle/oci/driver_oci.go | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/builder/oracle/oci/config.go b/builder/oracle/oci/config.go index 7391e7693..6e369dc97 100644 --- a/builder/oracle/oci/config.go +++ b/builder/oracle/oci/config.go @@ -46,6 +46,11 @@ type ListImagesRequest struct { Shape *string `mapstructure:"shape"` } +type FlexShapeConfig struct { + Ocpus *float32 `mapstructure:"ocpus" required:"false"` + MemoryInGBs *float32 `mapstructure:"ocpus" required:"false"` +} + type Config struct { common.PackerConfig `mapstructure:",squash"` Comm communicator.Config `mapstructure:",squash"` @@ -91,6 +96,7 @@ type Config struct { InstanceTags map[string]string `mapstructure:"instance_tags"` InstanceDefinedTags map[string]map[string]interface{} `mapstructure:"instance_defined_tags"` Shape string `mapstructure:"shape"` + ShapeConfig FlexShapeConfig `mapstructure:"shape_config"` BootVolumeSizeInGBs int64 `mapstructure:"disk_size"` // Metadata optionally contains custom metadata key/value pairs provided in the diff --git a/builder/oracle/oci/driver_oci.go b/builder/oracle/oci/driver_oci.go index 94cfcc0c6..2d8ea27e8 100644 --- a/builder/oracle/oci/driver_oci.go +++ b/builder/oracle/oci/driver_oci.go @@ -95,6 +95,11 @@ func (d *driverOCI) CreateInstance(ctx context.Context, publicKey string) (strin FreeformTags: d.cfg.CreateVnicDetails.FreeformTags, } + LaunchInstanceShapeConfigDetails := core.LaunchInstanceShapeConfigDetails{ + Ocpus: d.cfg.ShapeConfig.Ocpus, + MemoryInGBs: d.cfg.ShapeConfig.MemoryInGBs, + } + // Determine base image ID var imageId *string if d.cfg.BaseImageID != "" { @@ -154,6 +159,7 @@ func (d *driverOCI) CreateInstance(ctx context.Context, publicKey string) (strin DisplayName: d.cfg.InstanceName, FreeformTags: d.cfg.InstanceTags, Shape: &d.cfg.Shape, + ShapeConfig: &LaunchInstanceShapeConfigDetails, SourceDetails: InstanceSourceDetails, Metadata: metadata, } From c100b56d4488983d5637a876dfffd42c4500bc05 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:50:20 -0400 Subject: [PATCH 153/212] website: clarify error message in plugin config check --- .github/workflows/check-plugin-docs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-plugin-docs.js b/.github/workflows/check-plugin-docs.js index 16a9495a3..96a00a83f 100644 --- a/.github/workflows/check-plugin-docs.js +++ b/.github/workflows/check-plugin-docs.js @@ -25,7 +25,7 @@ async function checkPluginDocs() { ); if (undefinedProps.length > 0) { throw new Error( - `Failed to validate plugin docs. Undefined configuration properties ${JSON.stringify( + `Failed to validate plugin docs config. Undefined configuration properties ${JSON.stringify( undefinedProps )} found for "${ title || pluginEntry.path || repo From 565ca6627cf78adc12c8fec1a01fbc09692921b2 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:51:42 -0400 Subject: [PATCH 154/212] website: revert test of plugin docs config validation --- website/data/docs-remote-plugins.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index 8c247cfab..ab7aecb94 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -2,6 +2,7 @@ { "title": "Docker", "path": "docker", - "repo": "hashicorp/packer-plugin-docker" + "repo": "hashicorp/packer-plugin-docker", + "version": "v0.0.4" } ] From b780da57506c8fc27d340052b23173949ba38b32 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Sat, 20 Mar 2021 21:59:34 -0400 Subject: [PATCH 155/212] website: run plugin docs check also on schedule --- .github/workflows/check-plugin-docs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/check-plugin-docs.yml b/.github/workflows/check-plugin-docs.yml index 7b3303c9a..ec6ac65d5 100644 --- a/.github/workflows/check-plugin-docs.yml +++ b/.github/workflows/check-plugin-docs.yml @@ -12,6 +12,8 @@ on: pull_request: paths: - "website/**" + schedule: + - cron: "45 0 * * *" jobs: check-plugin-docs: From 1e312ebc21d7d1de7e923b163975b427986bf1b3 Mon Sep 17 00:00:00 2001 From: outscale-mgo Date: Mon, 22 Mar 2021 09:05:10 +0100 Subject: [PATCH 156/212] Fix description that was ignored in Osc builder (#10792) Signed-off-by: Matthias Gatto --- builder/osc/bsu/step_create_omi.go | 3 +++ builder/osc/bsusurrogate/step_register_omi.go | 3 +++ builder/osc/chroot/step_create_omi.go | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/builder/osc/bsu/step_create_omi.go b/builder/osc/bsu/step_create_omi.go index d2ba7c02d..74ddb36ce 100644 --- a/builder/osc/bsu/step_create_omi.go +++ b/builder/osc/bsu/step_create_omi.go @@ -32,6 +32,9 @@ func (s *stepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multi ImageName: omiName, BlockDeviceMappings: config.BlockDevices.BuildOscOMIDevices(), } + if config.OMIDescription != "" { + createOpts.Description = config.OMIDescription + } resp, _, err := oscconn.ImageApi.CreateImage(context.Background(), &osc.CreateImageOpts{ CreateImageRequest: optional.NewInterface(createOpts), diff --git a/builder/osc/bsusurrogate/step_register_omi.go b/builder/osc/bsusurrogate/step_register_omi.go index 8f6bb1cfb..4b14fa2d3 100644 --- a/builder/osc/bsusurrogate/step_register_omi.go +++ b/builder/osc/bsusurrogate/step_register_omi.go @@ -37,6 +37,9 @@ func (s *StepRegisterOMI) Run(ctx context.Context, state multistep.StateBag) mul BlockDeviceMappings: blockDevices, } + if config.OMIDescription != "" { + registerOpts.Description = config.OMIDescription + } registerResp, _, err := oscconn.ImageApi.CreateImage(context.Background(), &osc.CreateImageOpts{ CreateImageRequest: optional.NewInterface(registerOpts), }) diff --git a/builder/osc/chroot/step_create_omi.go b/builder/osc/chroot/step_create_omi.go index 62afb7c32..00bfe090b 100644 --- a/builder/osc/chroot/step_create_omi.go +++ b/builder/osc/chroot/step_create_omi.go @@ -75,6 +75,10 @@ func (s *StepCreateOMI) Run(ctx context.Context, state multistep.StateBag) multi registerOpts = buildRegisterOpts(config, image, newMappings) } + if config.OMIDescription != "" { + registerOpts.Description = config.OMIDescription + } + registerResp, _, err := osconn.ImageApi.CreateImage(context.Background(), &osc.CreateImageOpts{ CreateImageRequest: optional.NewInterface(registerOpts), }) From 0993c976fab3d11dcb9db85f9f40ae8a7efb0ed4 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 22 Mar 2021 02:56:30 -0700 Subject: [PATCH 157/212] hcl2_upgrade escaped quotes fix (#10794) * clean up extra quoting that can cause text template failures. when everyone else abandons you, regex will always be there. * LINTING --- command/hcl2_upgrade.go | 56 ++++++++++++++++++- command/hcl2_upgrade_test.go | 1 + .../hcl2_upgrade/escaping/expected.pkr.hcl | 31 ++++++++++ .../hcl2_upgrade/escaping/input.json | 21 +++++++ 4 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 command/test-fixtures/hcl2_upgrade/escaping/expected.pkr.hcl create mode 100644 command/test-fixtures/hcl2_upgrade/escaping/input.json diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 7192c193b..5273e3996 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -8,7 +8,9 @@ import ( "os" "path/filepath" "reflect" + "regexp" "sort" + "strconv" "strings" texttemplate "text/template" @@ -437,7 +439,22 @@ func transposeTemplatingCalls(s []byte) []byte { Parse(string(s)) if err != nil { - return fallbackReturn(err, s) + if strings.Contains(err.Error(), "unexpected \"\\\\\" in operand") { + // This error occurs if the operand in the text template used + // escaped quoting \" instead of bactick quoting ` + // Create a regex to do a string replace on this block, to fix + // quoting. + q := fixQuoting(string(s)) + unquoted := []byte(q) + tpl, err = texttemplate.New("hcl2_upgrade"). + Funcs(funcMap). + Parse(string(unquoted)) + if err != nil { + return fallbackReturn(err, unquoted) + } + } else { + return fallbackReturn(err, s) + } } str := &bytes.Buffer{} @@ -502,7 +519,22 @@ func variableTransposeTemplatingCalls(s []byte) (isLocal bool, body []byte) { Parse(string(s)) if err != nil { - return isLocal, fallbackReturn(err, s) + if strings.Contains(err.Error(), "unexpected \"\\\\\" in operand") { + // This error occurs if the operand in the text template used + // escaped quoting \" instead of bactick quoting ` + // Create a regex to do a string replace on this block, to fix + // quoting. + q := fixQuoting(string(s)) + unquoted := []byte(q) + tpl, err = texttemplate.New("hcl2_upgrade"). + Funcs(funcMap). + Parse(string(unquoted)) + if err != nil { + return isLocal, fallbackReturn(err, unquoted) + } + } else { + return isLocal, fallbackReturn(err, s) + } } str := &bytes.Buffer{} @@ -1247,3 +1279,23 @@ var PASSTHROUGHS = map[string]string{"NVME_Present": "{{ .NVME_Present }}", "ProviderVagrantfile": "{{ .ProviderVagrantfile }}", "Sound_Present": "{{ .Sound_Present }}", } + +func fixQuoting(old string) string { + // This regex captures golang template functions that use escaped quotes: + // {{ env \"myvar\" }} + re := regexp.MustCompile(`{{\s*\w*\s*(\\".*\\")\s*}}`) + + body := re.ReplaceAllFunc([]byte(old), func(s []byte) []byte { + // Get the capture group + group := re.ReplaceAllString(string(s), `$1`) + + unquoted, err := strconv.Unquote(fmt.Sprintf("\"%s\"", group)) + if err != nil { + return s + } + return []byte(strings.Replace(string(s), group, unquoted, 1)) + + }) + + return string(body) +} diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index fea33f365..35fabe816 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -29,6 +29,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "variables-only", flags: []string{}}, {folder: "variables-with-variables", flags: []string{}}, {folder: "complete-variables-with-template-engine", flags: []string{}}, + {folder: "escaping", flags: []string{}}, } for _, tc := range tc { diff --git a/command/test-fixtures/hcl2_upgrade/escaping/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/escaping/expected.pkr.hcl new file mode 100644 index 000000000..c0010aa75 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/escaping/expected.pkr.hcl @@ -0,0 +1,31 @@ + +variable "conf" { + type = string + default = "${env("ONE")}-${env("ANOTHER")}-${env("BACKTICKED")}" +} + +variable "manyspaces" { + type = string + default = "${env("ASDFASDF")}" +} + +variable "nospaces" { + type = string + default = "${env("SOMETHING")}" +} + +locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } +# The "legacy_isotime" function has been provided for backwards compatability, but we recommend switching to the timestamp and formatdate functions. + +source "null" "autogenerated_1" { + communicator = "none" +} + +build { + sources = ["source.null.autogenerated_1"] + + provisioner "shell-local" { + inline = ["echo ${var.conf}-${local.timestamp}-${legacy_isotime("01-02-2006")}"] + } + +} diff --git a/command/test-fixtures/hcl2_upgrade/escaping/input.json b/command/test-fixtures/hcl2_upgrade/escaping/input.json new file mode 100644 index 000000000..654ba61b2 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/escaping/input.json @@ -0,0 +1,21 @@ +{ + "variables": { + "conf": "{{ env \"ONE\" }}-{{env \"ANOTHER\"}}-{{ env `BACKTICKED` }}", + "nospaces": "{{env \"SOMETHING\"}}", + "manyspaces": "{{ env \"ASDFASDF\"}}" + }, + "builders": [ + { + "type": "null", + "communicator": "none" + } + ], + "provisioners": [ + { + "type": "shell-local", + "inline": [ + "echo {{user \"conf\"}}-{{timestamp}}-{{isotime \"01-02-2006\"}}" + ] + } + ] +} \ No newline at end of file From 4d9fb629c60fddad0ebecde8538977079d3b9641 Mon Sep 17 00:00:00 2001 From: Marcus Weiner Date: Mon, 22 Mar 2021 11:48:31 +0100 Subject: [PATCH 158/212] Allow using API tokens for Proxmox authentication (#10797) --- builder/proxmox/clone/config.hcl2spec.go | 2 + builder/proxmox/common/builder.go | 11 +- builder/proxmox/common/client.go | 37 ++ builder/proxmox/common/client_test.go | 91 ++++ builder/proxmox/common/config.go | 8 +- builder/proxmox/common/config.hcl2spec.go | 2 + builder/proxmox/iso/config.hcl2spec.go | 2 + go.mod | 2 +- go.sum | 3 +- .../Telmate/proxmox-api-go/proxmox/client.go | 287 +++++++++++- .../proxmox-api-go/proxmox/config_lxc.go | 234 +++++----- .../proxmox-api-go/proxmox/config_qemu.go | 427 +++++++++++------- .../Telmate/proxmox-api-go/proxmox/session.go | 10 +- .../Telmate/proxmox-api-go/proxmox/util.go | 46 ++ vendor/modules.txt | 2 +- .../content/docs/builders/proxmox/clone.mdx | 10 + website/content/docs/builders/proxmox/iso.mdx | 10 + 17 files changed, 870 insertions(+), 314 deletions(-) create mode 100644 builder/proxmox/common/client.go create mode 100644 builder/proxmox/common/client_test.go diff --git a/builder/proxmox/clone/config.hcl2spec.go b/builder/proxmox/clone/config.hcl2spec.go index e20717cb9..32b6e64f3 100644 --- a/builder/proxmox/clone/config.hcl2spec.go +++ b/builder/proxmox/clone/config.hcl2spec.go @@ -81,6 +81,7 @@ type FlatConfig struct { SkipCertValidation *bool `mapstructure:"insecure_skip_tls_verify" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` Username *string `mapstructure:"username" cty:"username" hcl:"username"` Password *string `mapstructure:"password" cty:"password" hcl:"password"` + Token *string `mapstructure:"token" cty:"token" hcl:"token"` Node *string `mapstructure:"node" cty:"node" hcl:"node"` Pool *string `mapstructure:"pool" cty:"pool" hcl:"pool"` VMName *string `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"` @@ -190,6 +191,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, "username": &hcldec.AttrSpec{Name: "username", Type: cty.String, Required: false}, "password": &hcldec.AttrSpec{Name: "password", Type: cty.String, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, "node": &hcldec.AttrSpec{Name: "node", Type: cty.String, Required: false}, "pool": &hcldec.AttrSpec{Name: "pool", Type: cty.String, Required: false}, "vm_name": &hcldec.AttrSpec{Name: "vm_name", Type: cty.String, Required: false}, diff --git a/builder/proxmox/common/builder.go b/builder/proxmox/common/builder.go index 96937cf8f..0d4391afd 100644 --- a/builder/proxmox/common/builder.go +++ b/builder/proxmox/common/builder.go @@ -2,7 +2,6 @@ package proxmox import ( "context" - "crypto/tls" "errors" "fmt" @@ -35,15 +34,7 @@ type Builder struct { func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook, state multistep.StateBag) (packersdk.Artifact, error) { var err error - tlsConfig := &tls.Config{ - InsecureSkipVerify: b.config.SkipCertValidation, - } - b.proxmoxClient, err = proxmox.NewClient(b.config.proxmoxURL.String(), nil, tlsConfig) - if err != nil { - return nil, err - } - - err = b.proxmoxClient.Login(b.config.Username, b.config.Password, "") + b.proxmoxClient, err = newProxmoxClient(b.config) if err != nil { return nil, err } diff --git a/builder/proxmox/common/client.go b/builder/proxmox/common/client.go new file mode 100644 index 000000000..e70f8af50 --- /dev/null +++ b/builder/proxmox/common/client.go @@ -0,0 +1,37 @@ +package proxmox + +import ( + "crypto/tls" + "log" + "time" + + "github.com/Telmate/proxmox-api-go/proxmox" +) + +const defaultTaskTimeout = 30 * time.Second + +func newProxmoxClient(config Config) (*proxmox.Client, error) { + tlsConfig := &tls.Config{ + InsecureSkipVerify: config.SkipCertValidation, + } + + client, err := proxmox.NewClient(config.proxmoxURL.String(), nil, tlsConfig, int(defaultTaskTimeout.Seconds())) + if err != nil { + return nil, err + } + + if config.Token != "" { + // configure token auth + log.Print("using token auth") + client.SetAPIToken(config.Username, config.Token) + } else { + // fallback to login if not using tokens + log.Print("using password auth") + err = client.Login(config.Username, config.Password, "") + if err != nil { + return nil, err + } + } + + return client, nil +} diff --git a/builder/proxmox/common/client_test.go b/builder/proxmox/common/client_test.go new file mode 100644 index 000000000..afdf8ddf2 --- /dev/null +++ b/builder/proxmox/common/client_test.go @@ -0,0 +1,91 @@ +package proxmox + +import ( + "encoding/json" + "io/ioutil" + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/Telmate/proxmox-api-go/proxmox" + "github.com/stretchr/testify/require" +) + +func TestTokenAuth(t *testing.T) { + mockAPI := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + if req.Header.Get("Authorization") != "PVEAPIToken=dummy@vmhost!test-token=ac5293bf-15e2-477f-b04c-a6dfa7a46b80" { + rw.WriteHeader(http.StatusUnauthorized) + return + } + })) + defer mockAPI.Close() + + pmURL, _ := url.Parse(mockAPI.URL) + config := Config{ + proxmoxURL: pmURL, + SkipCertValidation: false, + Username: "dummy@vmhost!test-token", + Password: "not-used", + Token: "ac5293bf-15e2-477f-b04c-a6dfa7a46b80", + } + + client, err := newProxmoxClient(config) + require.NoError(t, err) + + ref := proxmox.NewVmRef(110) + ref.SetNode("node1") + ref.SetVmType("qemu") + err = client.Sendkey(ref, "ping") + require.NoError(t, err) +} + +func TestLogin(t *testing.T) { + mockAPI := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + // mock ticketing api + if req.Method == http.MethodPost && req.URL.Path == "/access/ticket" { + body, _ := ioutil.ReadAll(req.Body) + values, _ := url.ParseQuery(string(body)) + user := values.Get("username") + pass := values.Get("password") + if user != "dummy@vmhost" || pass != "correct-horse-battery-staple" { + rw.WriteHeader(http.StatusUnauthorized) + return + } + + _ = json.NewEncoder(rw).Encode(map[string]interface{}{ + "data": map[string]string{ + "username": user, + "ticket": "dummy-ticket", + "CSRFPreventionToken": "random-token", + }, + }) + return + } + + // validate ticket + if val, err := req.Cookie("PVEAuthCookie"); err != nil || val.Value != "dummy-ticket" { + rw.WriteHeader(http.StatusUnauthorized) + return + } + })) + defer mockAPI.Close() + + pmURL, _ := url.Parse(mockAPI.URL) + config := Config{ + proxmoxURL: pmURL, + SkipCertValidation: false, + Username: "dummy@vmhost", + Password: "correct-horse-battery-staple", + Token: "", + } + + client, err := newProxmoxClient(config) + require.NoError(t, err) + + ref := proxmox.NewVmRef(110) + ref.SetNode("node1") + ref.SetVmType("qemu") + err = client.Sendkey(ref, "ping") + require.NoError(t, err) +} diff --git a/builder/proxmox/common/config.go b/builder/proxmox/common/config.go index 33810c57d..19d7793cb 100644 --- a/builder/proxmox/common/config.go +++ b/builder/proxmox/common/config.go @@ -35,6 +35,7 @@ type Config struct { SkipCertValidation bool `mapstructure:"insecure_skip_tls_verify"` Username string `mapstructure:"username"` Password string `mapstructure:"password"` + Token string `mapstructure:"token"` Node string `mapstructure:"node"` Pool string `mapstructure:"pool"` @@ -135,6 +136,9 @@ func (c *Config) Prepare(upper interface{}, raws ...interface{}) ([]string, []st if c.Password == "" { c.Password = os.Getenv("PROXMOX_PASSWORD") } + if c.Token == "" { + c.Token = os.Getenv("PROXMOX_TOKEN") + } if c.BootKeyInterval == 0 && os.Getenv(bootcommand.PackerKeyEnv) != "" { var err error c.BootKeyInterval, err = time.ParseDuration(os.Getenv(bootcommand.PackerKeyEnv)) @@ -220,8 +224,8 @@ func (c *Config) Prepare(upper interface{}, raws ...interface{}) ([]string, []st if c.Username == "" { errs = packersdk.MultiErrorAppend(errs, errors.New("username must be specified")) } - if c.Password == "" { - errs = packersdk.MultiErrorAppend(errs, errors.New("password must be specified")) + if c.Password == "" && c.Token == "" { + errs = packersdk.MultiErrorAppend(errs, errors.New("password or token must be specified")) } if c.ProxmoxURLRaw == "" { errs = packersdk.MultiErrorAppend(errs, errors.New("proxmox_url must be specified")) diff --git a/builder/proxmox/common/config.hcl2spec.go b/builder/proxmox/common/config.hcl2spec.go index 96a5e09e8..f6d11221c 100644 --- a/builder/proxmox/common/config.hcl2spec.go +++ b/builder/proxmox/common/config.hcl2spec.go @@ -80,6 +80,7 @@ type FlatConfig struct { SkipCertValidation *bool `mapstructure:"insecure_skip_tls_verify" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` Username *string `mapstructure:"username" cty:"username" hcl:"username"` Password *string `mapstructure:"password" cty:"password" hcl:"password"` + Token *string `mapstructure:"token" cty:"token" hcl:"token"` Node *string `mapstructure:"node" cty:"node" hcl:"node"` Pool *string `mapstructure:"pool" cty:"pool" hcl:"pool"` VMName *string `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"` @@ -187,6 +188,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, "username": &hcldec.AttrSpec{Name: "username", Type: cty.String, Required: false}, "password": &hcldec.AttrSpec{Name: "password", Type: cty.String, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, "node": &hcldec.AttrSpec{Name: "node", Type: cty.String, Required: false}, "pool": &hcldec.AttrSpec{Name: "pool", Type: cty.String, Required: false}, "vm_name": &hcldec.AttrSpec{Name: "vm_name", Type: cty.String, Required: false}, diff --git a/builder/proxmox/iso/config.hcl2spec.go b/builder/proxmox/iso/config.hcl2spec.go index 7d420d277..88aa679bb 100644 --- a/builder/proxmox/iso/config.hcl2spec.go +++ b/builder/proxmox/iso/config.hcl2spec.go @@ -81,6 +81,7 @@ type FlatConfig struct { SkipCertValidation *bool `mapstructure:"insecure_skip_tls_verify" cty:"insecure_skip_tls_verify" hcl:"insecure_skip_tls_verify"` Username *string `mapstructure:"username" cty:"username" hcl:"username"` Password *string `mapstructure:"password" cty:"password" hcl:"password"` + Token *string `mapstructure:"token" cty:"token" hcl:"token"` Node *string `mapstructure:"node" cty:"node" hcl:"node"` Pool *string `mapstructure:"pool" cty:"pool" hcl:"pool"` VMName *string `mapstructure:"vm_name" cty:"vm_name" hcl:"vm_name"` @@ -196,6 +197,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "insecure_skip_tls_verify": &hcldec.AttrSpec{Name: "insecure_skip_tls_verify", Type: cty.Bool, Required: false}, "username": &hcldec.AttrSpec{Name: "username", Type: cty.String, Required: false}, "password": &hcldec.AttrSpec{Name: "password", Type: cty.String, Required: false}, + "token": &hcldec.AttrSpec{Name: "token", Type: cty.String, Required: false}, "node": &hcldec.AttrSpec{Name: "node", Type: cty.String, Required: false}, "pool": &hcldec.AttrSpec{Name: "pool", Type: cty.String, Required: false}, "vm_name": &hcldec.AttrSpec{Name: "vm_name", Type: cty.String, Required: false}, diff --git a/go.mod b/go.mod index 4cb549450..e8950e8bc 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Azure/go-autorest/autorest/to v0.3.0 github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022 github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.0 - github.com/Telmate/proxmox-api-go v0.0.0-20200715182505-ec97c70ba887 + github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0 github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190418113227-25233c783f4e github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f github.com/antihax/optional v1.0.0 diff --git a/go.sum b/go.sum index 807fb3dc9..d67880e44 100644 --- a/go.sum +++ b/go.sum @@ -81,8 +81,9 @@ github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.0 h1:0nxjOH7NurPGUWNG5BCrASW github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.0/go.mod h1:P+3VS0ETiQPyWOx3vB/oeC8J3qd7jnVZLYAFwWgGRt8= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/Telmate/proxmox-api-go v0.0.0-20200715182505-ec97c70ba887 h1:Q65o4V0g/KR1sSUZIMf4m1rShb7f1tVHuEt30hfnh2A= github.com/Telmate/proxmox-api-go v0.0.0-20200715182505-ec97c70ba887/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= +github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0 h1:LeBf+Ex12uqA6dWZp73Qf3dzpV/LvB9SRmHgPBwnXrQ= +github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0/go.mod h1:ayPkdmEKnlssqLQ9K1BE1jlsaYhXVwkoduXI30oQF0I= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go index f7fa27da5..e69c467b0 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go @@ -20,9 +20,6 @@ import ( "time" ) -// TaskTimeout - default async task call timeout in seconds -const TaskTimeout = 300 - // TaskStatusCheckInterval - time between async checks in seconds const TaskStatusCheckInterval = 2 @@ -30,11 +27,12 @@ const exitStatusSuccess = "OK" // Client - URL, user and password to specifc Proxmox node type Client struct { - session *Session - ApiUrl string - Username string - Password string - Otp string + session *Session + ApiUrl string + Username string + Password string + Otp string + TaskTimeout int } // VmRef - virtual machine ref parts @@ -86,15 +84,27 @@ func NewVmRef(vmId int) (vmr *VmRef) { return } -func NewClient(apiUrl string, hclient *http.Client, tls *tls.Config) (client *Client, err error) { +func NewClient(apiUrl string, hclient *http.Client, tls *tls.Config, taskTimeout int) (client *Client, err error) { var sess *Session sess, err = NewSession(apiUrl, hclient, tls) if err == nil { - client = &Client{session: sess, ApiUrl: apiUrl} + client = &Client{session: sess, ApiUrl: apiUrl, TaskTimeout: taskTimeout} } return client, err } +// SetAPIToken specifies a pair of user identifier and token UUID to use +// for authenticating API calls. +// If this is set, a ticket from calling `Login` will not be used. +// +// - `userID` is expected to be in the form `USER@REALM!TOKENID` +// - `token` is just the UUID you get when initially creating the token +// +// See https://pve.proxmox.com/wiki/User_Management#pveum_tokens +func (c *Client) SetAPIToken(userID, token string) { + c.session.SetAPIToken(userID, token) +} + func (c *Client) Login(username string, password string, otp string) (err error) { c.Username = username c.Password = password @@ -214,6 +224,40 @@ func (c *Client) GetVmConfig(vmr *VmRef) (vmConfig map[string]interface{}, err e return } +func (c *Client) GetStorageStatus(vmr *VmRef, storageName string) (storageStatus map[string]interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + var data map[string]interface{} + url := fmt.Sprintf("/nodes/%s/storage/%s/status", vmr.node, storageName) + err = c.GetJsonRetryable(url, &data, 3) + if err != nil { + return nil, err + } + if data["data"] == nil { + return nil, errors.New("Storage STATUS not readable") + } + storageStatus = data["data"].(map[string]interface{}) + return +} + +func (c *Client) GetStorageContent(vmr *VmRef, storageName string) (data map[string]interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + url := fmt.Sprintf("/nodes/%s/storage/%s/content", vmr.node, storageName) + err = c.GetJsonRetryable(url, &data, 3) + if err != nil { + return nil, err + } + if data["data"] == nil { + return nil, errors.New("Storage Content not readable") + } + return +} + func (c *Client) GetVmSpiceProxy(vmr *VmRef) (vmSpiceProxy map[string]interface{}, err error) { err = c.CheckVmRef(vmr) if err != nil { @@ -343,7 +387,7 @@ func (c *Client) WaitForCompletion(taskResponse map[string]interface{}) (waitExi } waited := 0 taskUpid := taskResponse["data"].(string) - for waited < TaskTimeout { + for waited < c.TaskTimeout { exitStatus, statErr := c.GetTaskExitstatus(taskUpid) if statErr != nil { if statErr != io.ErrUnexpectedEOF { // don't give up on ErrUnexpectedEOF @@ -421,6 +465,10 @@ func (c *Client) ResumeVm(vmr *VmRef) (exitStatus string, err error) { } func (c *Client) DeleteVm(vmr *VmRef) (exitStatus string, err error) { + return c.DeleteVmParams(vmr, nil) +} + +func (c *Client) DeleteVmParams(vmr *VmRef, params map[string]interface{}) (exitStatus string, err error) { err = c.CheckVmRef(vmr) if err != nil { return "", err @@ -442,9 +490,10 @@ func (c *Client) DeleteVm(vmr *VmRef) (exitStatus string, err error) { } } + reqbody := ParamsToBody(params) url := fmt.Sprintf("/nodes/%s/%s/%d", vmr.node, vmr.vmType, vmr.vmId) var taskResponse map[string]interface{} - _, err = c.session.RequestJSON("DELETE", url, nil, nil, nil, &taskResponse) + _, err = c.session.RequestJSON("DELETE", url, nil, nil, &reqbody, &taskResponse) exitStatus, err = c.WaitForCompletion(taskResponse) return } @@ -523,6 +572,61 @@ func (c *Client) CloneQemuVm(vmr *VmRef, vmParams map[string]interface{}) (exitS return } +func (c *Client) CreateQemuSnapshot(vmr *VmRef, snapshotName string) (exitStatus string, err error) { + err = c.CheckVmRef(vmr) + snapshotParams := map[string]interface{}{ + "snapname": snapshotName, + } + reqbody := ParamsToBody(snapshotParams) + if err != nil { + return "", err + } + url := fmt.Sprintf("/nodes/%s/%s/%d/snapshot/", vmr.node, vmr.vmType, vmr.vmId) + resp, err := c.session.Post(url, nil, nil, &reqbody) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return "", err + } + exitStatus, err = c.WaitForCompletion(taskResponse) + } + return +} + +func (c *Client) DeleteQemuSnapshot(vmr *VmRef, snapshotName string) (exitStatus string, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return "", err + } + url := fmt.Sprintf("/nodes/%s/%s/%d/snapshot/%s", vmr.node, vmr.vmType, vmr.vmId, snapshotName) + resp, err := c.session.Delete(url, nil, nil) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return "", err + } + exitStatus, err = c.WaitForCompletion(taskResponse) + } + return +} + +func (c *Client) ListQemuSnapshot(vmr *VmRef) (taskResponse map[string]interface{}, exitStatus string, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, "", err + } + url := fmt.Sprintf("/nodes/%s/%s/%d/snapshot/", vmr.node, vmr.vmType, vmr.vmId) + resp, err := c.session.Get(url, nil, nil) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return nil, "", err + } + return taskResponse, "", nil + } + return +} + func (c *Client) RollbackQemuVm(vmr *VmRef, snapshot string) (exitStatus string, err error) { err = c.CheckVmRef(vmr) if err != nil { @@ -581,14 +685,24 @@ func (c *Client) MigrateNode(vmr *VmRef, newTargetNode string, online bool) (exi return nil, err } +// ResizeQemuDisk allows the caller to increase the size of a disk by the indicated number of gigabytes func (c *Client) ResizeQemuDisk(vmr *VmRef, disk string, moreSizeGB int) (exitStatus interface{}, err error) { + size := fmt.Sprintf("+%dG", moreSizeGB) + return c.ResizeQemuDiskRaw(vmr, disk, size) +} + +// ResizeQemuDiskRaw allows the caller to provide the raw resize string to be send to proxmox. +// See the proxmox API documentation for full information, but the short version is if you prefix +// your desired size with a '+' character it will ADD size to the disk. If you just specify the size by +// itself it will do an absolute resizing to the specified size. Permitted suffixes are K, M, G, T +// to indicate order of magnitude (kilobyte, megabyte, etc). Decrease of disk size is not permitted. +func (c *Client) ResizeQemuDiskRaw(vmr *VmRef, disk string, size string) (exitStatus interface{}, err error) { // PUT //disk:virtio0 //size:+2G if disk == "" { disk = "virtio0" } - size := fmt.Sprintf("+%dG", moreSizeGB) reqbody := ParamsToBody(map[string]interface{}{"disk": disk, "size": size}) url := fmt.Sprintf("/nodes/%s/%s/%d/resize", vmr.node, vmr.vmType, vmr.vmId) resp, err := c.session.Put(url, nil, nil, &reqbody) @@ -602,6 +716,20 @@ func (c *Client) ResizeQemuDisk(vmr *VmRef, disk string, moreSizeGB int) (exitSt return } +func (c *Client) MoveLxcDisk(vmr *VmRef, disk string, storage string) (exitStatus interface{}, err error) { + reqbody := ParamsToBody(map[string]interface{}{"disk": disk, "storage": storage, "delete": true}) + url := fmt.Sprintf("/nodes/%s/%s/%d/move_volume", vmr.node, vmr.vmType, vmr.vmId) + resp, err := c.session.Post(url, nil, nil, &reqbody) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return nil, err + } + exitStatus, err = c.WaitForCompletion(taskResponse) + } + return +} + func (c *Client) MoveQemuDisk(vmr *VmRef, disk string, storage string) (exitStatus interface{}, err error) { if disk == "" { disk = "virtio0" @@ -661,7 +789,7 @@ func (c *Client) CreateVMDisk( return err } if diskName, containsData := taskResponse["data"]; !containsData || diskName != fullDiskName { - return errors.New(fmt.Sprintf("Cannot create VM disk %s", fullDiskName)) + return errors.New(fmt.Sprintf("Cannot create VM disk %s - %s", fullDiskName, diskName)) } } else { return err @@ -680,7 +808,7 @@ func (c *Client) createVMDisks( for deviceName, deviceConf := range vmParams { rxStorageModels := `(ide|sata|scsi|virtio)\d+` if matched, _ := regexp.MatchString(rxStorageModels, deviceName); matched { - deviceConfMap := ParseConf(deviceConf.(string), ",", "=") + deviceConfMap := ParsePMConf(deviceConf.(string), "") // This if condition to differentiate between `disk` and `cdrom`. if media, containsFile := deviceConfMap["media"]; containsFile && media == "disk" { fullDiskName := deviceConfMap["file"].(string) @@ -722,6 +850,135 @@ func (c *Client) DeleteVMDisks( return nil } +// VzDump - Create backup +func (c *Client) VzDump(vmr *VmRef, params map[string]interface{}) (exitStatus interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + reqbody := ParamsToBody(params) + url := fmt.Sprintf("/nodes/%s/vzdump", vmr.node) + resp, err := c.session.Post(url, nil, nil, &reqbody) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return nil, err + } + exitStatus, err = c.WaitForCompletion(taskResponse) + } + return +} + +// CreateVNCProxy - Creates a TCP VNC proxy connections +func (c *Client) CreateVNCProxy(vmr *VmRef, params map[string]interface{}) (vncProxyRes map[string]interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + reqbody := ParamsToBody(params) + url := fmt.Sprintf("/nodes/%s/qemu/%d/vncproxy", vmr.node, vmr.vmId) + resp, err := c.session.Post(url, nil, nil, &reqbody) + if err != nil { + return nil, err + } + vncProxyRes, err = ResponseJSON(resp) + if err != nil { + return nil, err + } + if vncProxyRes["data"] == nil { + return nil, errors.New("VNC Proxy not readable") + } + vncProxyRes = vncProxyRes["data"].(map[string]interface{}) + return +} + +// GetExecStatus - Gets the status of the given pid started by the guest-agent +func (c *Client) GetExecStatus(vmr *VmRef, pid string) (status map[string]interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + err = c.GetJsonRetryable(fmt.Sprintf("/nodes/%s/%s/%d/agent/exec-status?pid=%s", vmr.node, vmr.vmType, vmr.vmId, pid), &status, 3) + if err == nil { + status = status["data"].(map[string]interface{}) + } + return +} + +// SetQemuFirewallOptions - Set Firewall options. +func (c *Client) SetQemuFirewallOptions(vmr *VmRef, fwOptions map[string]interface{}) (exitStatus interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + reqbody := ParamsToBody(fwOptions) + url := fmt.Sprintf("/nodes/%s/qemu/%d/firewall/options", vmr.node, vmr.vmId) + resp, err := c.session.Put(url, nil, nil, &reqbody) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return nil, err + } + exitStatus, err = c.WaitForCompletion(taskResponse) + } + return +} + +// GetQemuFirewallOptions - Get VM firewall options. +func (c *Client) GetQemuFirewallOptions(vmr *VmRef) (firewallOptions map[string]interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + url := fmt.Sprintf("/nodes/%s/qemu/%d/firewall/options", vmr.node, vmr.vmId) + resp, err := c.session.Get(url, nil, nil) + if err == nil { + firewallOptions, err := ResponseJSON(resp) + if err != nil { + return nil, err + } + return firewallOptions, nil + } + return +} + +// CreateQemuIPSet - Create new IPSet +func (c *Client) CreateQemuIPSet(vmr *VmRef, params map[string]interface{}) (exitStatus interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + reqbody := ParamsToBody(params) + url := fmt.Sprintf("/nodes/%s/qemu/%d/firewall/ipset", vmr.node, vmr.vmId) + resp, err := c.session.Post(url, nil, nil, &reqbody) + if err == nil { + taskResponse, err := ResponseJSON(resp) + if err != nil { + return nil, err + } + exitStatus, err = c.WaitForCompletion(taskResponse) + } + return +} + +// GetQemuIPSet - List IPSets +func (c *Client) GetQemuIPSet(vmr *VmRef) (ipsets map[string]interface{}, err error) { + err = c.CheckVmRef(vmr) + if err != nil { + return nil, err + } + url := fmt.Sprintf("/nodes/%s/qemu/%d/firewall/ipset", vmr.node, vmr.vmId) + resp, err := c.session.Get(url, nil, nil) + if err == nil { + ipsets, err := ResponseJSON(resp) + if err != nil { + return nil, err + } + return ipsets, nil + } + return +} + func (c *Client) Upload(node string, storage string, contentType string, filename string, file io.Reader) error { var doStreamingIO bool var fileSize int64 diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_lxc.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_lxc.go index 5060d64ee..38df551bc 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_lxc.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_lxc.go @@ -4,7 +4,6 @@ import ( "encoding/json" "fmt" "io" - "log" "strconv" "strings" ) @@ -36,7 +35,7 @@ type configLxc struct { Pool string `json:"pool,omitempty"` Protection bool `json:"protection"` Restore bool `json:"restore,omitempty"` - RootFs string `json:"rootfs,omitempty"` + RootFs QemuDevice `json:"rootfs,omitempty"` SearchDomain string `json:"searchdomain,omitempty"` SSHPublicKeys string `json:"ssh-public-keys,omitempty"` Start bool `json:"start"` @@ -47,6 +46,7 @@ type configLxc struct { Tty int `json:"tty"` Unique bool `json:"unique,omitempty"` Unprivileged bool `json:"unprivileged"` + Tags string `json:"tags"` Unused []string `json:"unused,omitempty"` } @@ -72,12 +72,7 @@ func NewConfigLxc() configLxc { func NewConfigLxcFromJson(io io.Reader) (config configLxc, err error) { config = NewConfigLxc() err = json.NewDecoder(io).Decode(config) - if err != nil { - log.Fatal(err) - return config, err - } - log.Println(config) - return + return config, err } func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err error) { @@ -85,7 +80,6 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err var lxcConfig map[string]interface{} lxcConfig, err = client.GetVmConfig(vmr) if err != nil { - log.Fatal(err) return nil, err } @@ -106,7 +100,7 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err if _, isSet := lxcConfig["console"]; isSet { console = Itob(int(lxcConfig["console"].(float64))) } - cores := 1 + cores := 0 if _, isSet := lxcConfig["cores"]; isSet { cores = int(lxcConfig["cores"].(float64)) } @@ -158,6 +152,12 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err memory = int(lxcConfig["memory"].(float64)) } + // add rootfs + rootfs := QemuDevice{} + if rootfsStr, isSet := lxcConfig["rootfs"]; isSet { + rootfs = ParsePMConf(rootfsStr.(string), "volume") + } + // add mountpoints mpNames := []string{} @@ -168,17 +168,14 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err } for _, mpName := range mpNames { - mpConfStr := lxcConfig[mpName] - mpConfList := strings.Split(mpConfStr.(string), ",") + mpConfStr := lxcConfig[mpName].(string) + mpConfMap := ParseLxcDisk(mpConfStr) + // add mp id id := rxDeviceID.FindStringSubmatch(mpName) mpID, _ := strconv.Atoi(id[0]) - // add mp id - mpConfMap := QemuDevice{ - "id": mpID, - } - // add rest of device config - mpConfMap.readDeviceConfig(mpConfList) + mpConfMap["slot"] = mpID + // prepare empty mountpoint map if config.Mountpoints == nil { config.Mountpoints = QemuDevices{} @@ -215,6 +212,13 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err } // add rest of device config nicConfMap.readDeviceConfig(nicConfList) + + if nicConfMap["firewall"] == 1 { + nicConfMap["firewall"] = true + } else if nicConfMap["firewall"] == 0 { + nicConfMap["firewall"] = false + } + // prepare empty network map if config.Networks == nil { config.Networks = QemuDevices{} @@ -237,10 +241,6 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err if _, isSet := lxcConfig["protection"]; isSet { protection = Itob(int(lxcConfig["protection"].(float64))) } - rootfs := "" - if _, isSet := lxcConfig["rootfs"]; isSet { - rootfs = lxcConfig["rootfs"].(string) - } searchdomain := "" if _, isSet := lxcConfig["searchdomain"]; isSet { searchdomain = lxcConfig["searchdomain"].(string) @@ -265,6 +265,10 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err if _, isset := lxcConfig["unprivileged"]; isset { unprivileged = Itob(int(lxcConfig["unprivileged"].(float64))) } + tags := "" + if _, isSet := lxcConfig["tags"]; isSet { + tags = lxcConfig["tags"].(string) + } var unused []string if _, isset := lxcConfig["unused"]; isset { unused = lxcConfig["unused"].([]string) @@ -294,6 +298,7 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err config.Tty = tty config.Unprivileged = unprivileged config.Unused = unused + config.Tags = tags return } @@ -301,123 +306,21 @@ func NewConfigLxcFromApi(vmr *VmRef, client *Client) (config *configLxc, err err // create LXC container using the Proxmox API func (config configLxc) CreateLxc(vmr *VmRef, client *Client) (err error) { vmr.SetVmType("lxc") - - // convert config to map - params, _ := json.Marshal(&config) - var paramMap map[string]interface{} - json.Unmarshal(params, ¶mMap) - - // build list of features - // add features as parameter list to lxc parameters - // this overwrites the orginal formatting with a - // comma separated list of "key=value" pairs - featuresParam := QemuDeviceParam{} - featuresParam = featuresParam.createDeviceParam(config.Features, nil) - if len(featuresParam) > 0 { - paramMap["features"] = strings.Join(featuresParam, ",") - } - - // build list of mountpoints - // this does the same as for the feature list - // except that there can be multiple of these mountpoint sets - // and each mountpoint set comes with a new id - for mpID, mpConfMap := range config.Mountpoints { - mpConfParam := QemuDeviceParam{} - mpConfParam = mpConfParam.createDeviceParam(mpConfMap, nil) - - // add mp to lxc parameters - mpName := fmt.Sprintf("mp%v", mpID) - paramMap[mpName] = strings.Join(mpConfParam, ",") - } - - // build list of network parameters - for nicID, nicConfMap := range config.Networks { - nicConfParam := QemuDeviceParam{} - nicConfParam = nicConfParam.createDeviceParam(nicConfMap, nil) - - // add nic to lxc parameters - nicName := fmt.Sprintf("net%v", nicID) - paramMap[nicName] = strings.Join(nicConfParam, ",") - } - - // build list of unused volumes for sake of completenes, - // even if it is not recommended to change these volumes manually - for volID, vol := range config.Unused { - // add volume to lxc parameters - volName := fmt.Sprintf("unused%v", volID) - paramMap[volName] = vol - } - - // now that we concatenated the key value parameter - // list for the networks, mountpoints and unused volumes, - // remove the original keys, since the Proxmox API does - // not know how to handle this key - delete(paramMap, "networks") - delete(paramMap, "mountpoints") - delete(paramMap, "unused") + paramMap := config.mapToAPIParams() // amend vmid paramMap["vmid"] = vmr.vmId exitStatus, err := client.CreateLxcContainer(vmr.node, paramMap) if err != nil { - return fmt.Errorf("Error creating LXC container: %v, error status: %s (params: %v)", err, exitStatus, params) + params, _ := json.Marshal(¶mMap) + return fmt.Errorf("Error creating LXC container: %v, error status: %s (params: %v)", err, exitStatus, string(params)) } return } func (config configLxc) UpdateConfig(vmr *VmRef, client *Client) (err error) { - // convert config to map - params, _ := json.Marshal(&config) - var paramMap map[string]interface{} - json.Unmarshal(params, ¶mMap) - - // build list of features - // add features as parameter list to lxc parameters - // this overwrites the orginal formatting with a - // comma separated list of "key=value" pairs - featuresParam := QemuDeviceParam{} - featuresParam = featuresParam.createDeviceParam(config.Features, nil) - paramMap["features"] = strings.Join(featuresParam, ",") - - // build list of mountpoints - // this does the same as for the feature list - // except that there can be multiple of these mountpoint sets - // and each mountpoint set comes with a new id - for mpID, mpConfMap := range config.Mountpoints { - mpConfParam := QemuDeviceParam{} - mpConfParam = mpConfParam.createDeviceParam(mpConfMap, nil) - - // add mp to lxc parameters - mpName := fmt.Sprintf("mp%v", mpID) - paramMap[mpName] = strings.Join(mpConfParam, ",") - } - - // build list of network parameters - for nicID, nicConfMap := range config.Networks { - nicConfParam := QemuDeviceParam{} - nicConfParam = nicConfParam.createDeviceParam(nicConfMap, nil) - - // add nic to lxc parameters - nicName := fmt.Sprintf("net%v", nicID) - paramMap[nicName] = strings.Join(nicConfParam, ",") - } - - // build list of unused volumes for sake of completenes, - // even if it is not recommended to change these volumes manually - for volID, vol := range config.Unused { - // add volume to lxc parameters - volName := fmt.Sprintf("unused%v", volID) - paramMap[volName] = vol - } - - // now that we concatenated the key value parameter - // list for the networks, mountpoints and unused volumes, - // remove the original keys, since the Proxmox API does - // not know how to handle this key - delete(paramMap, "networks") - delete(paramMap, "mountpoints") - delete(paramMap, "unused") + paramMap := config.mapToAPIParams() // delete parameters wich are not supported in updated operations delete(paramMap, "pool") @@ -425,6 +328,7 @@ func (config configLxc) UpdateConfig(vmr *VmRef, client *Client) (err error) { delete(paramMap, "password") delete(paramMap, "ostemplate") delete(paramMap, "start") + // even though it is listed as a PUT option in the API documentation // we remove it here because "it should not be modified manually"; // also, error "500 unable to modify read-only option: 'unprivileged'" @@ -433,3 +337,77 @@ func (config configLxc) UpdateConfig(vmr *VmRef, client *Client) (err error) { _, err = client.SetLxcConfig(vmr, paramMap) return err } + +func ParseLxcDisk(diskStr string) QemuDevice { + disk := ParsePMConf(diskStr, "volume") + + // add features, if any + if mountoptions, isSet := disk["mountoptions"]; isSet { + moList := strings.Split(mountoptions.(string), ";") + moMap := map[string]bool{} + for _, mo := range moList { + moMap[mo] = true + } + disk["mountoptions"] = moMap + } + + storageName, fileName := ParseSubConf(disk["volume"].(string), ":") + disk["storage"] = storageName + disk["file"] = fileName + + return disk +} + +func (config configLxc) mapToAPIParams() map[string]interface{} { + // convert config to map + params, _ := json.Marshal(&config) + var paramMap map[string]interface{} + json.Unmarshal(params, ¶mMap) + + // build list of features + // add features as parameter list to lxc parameters + // this overwrites the orginal formatting with a + // comma separated list of "key=value" pairs + paramMap["features"] = formatDeviceParam(config.Features) + + // format rootfs params as expected + if rootfs := config.RootFs; rootfs != nil { + paramMap["rootfs"] = FormatDiskParam(rootfs) + } + + // build list of mountpoints + // this does the same as for the feature list + // except that there can be multiple of these mountpoint sets + // and each mountpoint set comes with a new id + for _, mpConfMap := range config.Mountpoints { + // add mp to lxc parameters + mpID := mpConfMap["slot"] + mpName := fmt.Sprintf("mp%v", mpID) + paramMap[mpName] = FormatDiskParam(mpConfMap) + } + + // build list of network parameters + for nicID, nicConfMap := range config.Networks { + // add nic to lxc parameters + nicName := fmt.Sprintf("net%v", nicID) + paramMap[nicName] = formatDeviceParam(nicConfMap) + } + + // build list of unused volumes for sake of completeness, + // even if it is not recommended to change these volumes manually + for volID, vol := range config.Unused { + // add volume to lxc parameters + volName := fmt.Sprintf("unused%v", volID) + paramMap[volName] = vol + } + + // now that we concatenated the key value parameter + // list for the networks, mountpoints and unused volumes, + // remove the original keys, since the Proxmox API does + // not know how to handle this key + delete(paramMap, "networks") + delete(paramMap, "mountpoints") + delete(paramMap, "unused") + + return paramMap +} diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go index e57ee6bdf..2609ca9af 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go @@ -15,6 +15,10 @@ import ( "time" ) +// Currently ZFS local, LVM, Ceph RBD, CephFS, Directory and virtio-scsi-pci are considered. +// Other formats are not verified, but could be added if they're needed. +const rxStorageTypes = `(zfspool|lvm|rbd|cephfs|dir|virtio-scsi-pci)` + type ( QemuDevices map[int]map[string]interface{} QemuDevice map[string]interface{} @@ -23,33 +27,35 @@ type ( // ConfigQemu - Proxmox API QEMU options type ConfigQemu struct { - VmID int `json:"vmid"` - Name string `json:"name"` - Description string `json:"desc"` - Pool string `json:"pool,omitempty"` - Bios string `json:"bios"` - Onboot bool `json:"onboot"` - Agent int `json:"agent"` - Memory int `json:"memory"` - Balloon int `json:"balloon"` - QemuOs string `json:"os"` - QemuCores int `json:"cores"` - QemuSockets int `json:"sockets"` - QemuVcpus int `json:"vcpus"` - QemuCpu string `json:"cpu"` - QemuNuma bool `json:"numa"` - QemuKVM bool `json:"kvm"` - Hotplug string `json:"hotplug"` - QemuIso string `json:"iso"` - FullClone *int `json:"fullclone"` - Boot string `json:"boot"` - BootDisk string `json:"bootdisk,omitempty"` - Scsihw string `json:"scsihw,omitempty"` - QemuDisks QemuDevices `json:"disk"` - QemuVga QemuDevice `json:"vga,omitempty"` - QemuNetworks QemuDevices `json:"network"` - QemuSerials QemuDevices `json:"serial,omitempty"` - HaState string `json:"hastate,omitempty"` + VmID int `json:"vmid"` + Name string `json:"name"` + Description string `json:"desc"` + Pool string `json:"pool,omitempty"` + Bios string `json:"bios"` + Onboot bool `json:"onboot"` + Agent int `json:"agent"` + Memory int `json:"memory"` + Balloon int `json:"balloon"` + QemuOs string `json:"os"` + QemuCores int `json:"cores"` + QemuSockets int `json:"sockets"` + QemuVcpus int `json:"vcpus"` + QemuCpu string `json:"cpu"` + QemuNuma bool `json:"numa"` + QemuKVM bool `json:"kvm"` + Hotplug string `json:"hotplug"` + QemuIso string `json:"iso"` + FullClone *int `json:"fullclone"` + Boot string `json:"boot"` + BootDisk string `json:"bootdisk,omitempty"` + Scsihw string `json:"scsihw,omitempty"` + QemuDisks QemuDevices `json:"disk"` + QemuUnusedDisks QemuDevices `json:"unused_disk"` + QemuVga QemuDevice `json:"vga,omitempty"` + QemuNetworks QemuDevices `json:"network"` + QemuSerials QemuDevices `json:"serial,omitempty"` + HaState string `json:"hastate,omitempty"` + Tags string `json:"tags"` // Deprecated single disk. DiskSize float64 `json:"diskGB"` @@ -100,6 +106,7 @@ func (config ConfigQemu) CreateVm(vmr *VmRef, client *Client) (err error) { "memory": config.Memory, "boot": config.Boot, "description": config.Description, + "tags": config.Tags, } if config.Bios != "" { @@ -127,7 +134,10 @@ func (config ConfigQemu) CreateVm(vmr *VmRef, client *Client) (err error) { } // Create disks config. - config.CreateQemuDisksParams(vmr.vmId, params, false) + err = config.CreateQemuDisksParams(vmr.vmId, params, false) + if err != nil { + log.Printf("[ERROR] %q", err) + } // Create vga config. vgaParam := QemuDeviceParam{} @@ -137,17 +147,26 @@ func (config ConfigQemu) CreateVm(vmr *VmRef, client *Client) (err error) { } // Create networks config. - config.CreateQemuNetworksParams(vmr.vmId, params) + err = config.CreateQemuNetworksParams(vmr.vmId, params) + if err != nil { + log.Printf("[ERROR] %q", err) + } // Create serial interfaces - config.CreateQemuSerialsParams(vmr.vmId, params) + err = config.CreateQemuSerialsParams(vmr.vmId, params) + if err != nil { + log.Printf("[ERROR] %q", err) + } exitStatus, err := client.CreateQemuVm(vmr.node, params) if err != nil { return fmt.Errorf("Error creating VM: %v, error status: %s (params: %v)", err, exitStatus, params) } - client.UpdateVMHA(vmr, config.HaState) + _, err = client.UpdateVMHA(vmr, config.HaState) + if err != nil { + log.Printf("[ERROR] %q", err) + } return } @@ -210,6 +229,7 @@ func (config ConfigQemu) UpdateConfig(vmr *VmRef, client *Client) (err error) { configParams := map[string]interface{}{ "name": config.Name, "description": config.Description, + "tags": config.Tags, "onboot": config.Onboot, "agent": config.Agent, "sockets": config.QemuSockets, @@ -253,8 +273,16 @@ func (config ConfigQemu) UpdateConfig(vmr *VmRef, client *Client) (err error) { configParamsDisk := map[string]interface{}{ "vmid": vmr.vmId, } - config.CreateQemuDisksParams(vmr.vmId, configParamsDisk, false) - client.createVMDisks(vmr.node, configParamsDisk) + // TODO keep going if error= + err = config.CreateQemuDisksParams(vmr.vmId, configParamsDisk, false) + if err != nil { + log.Printf("[ERROR] %q", err) + } + // TODO keep going if error= + _, err = client.createVMDisks(vmr.node, configParamsDisk) + if err != nil { + log.Printf("[ERROR] %q", err) + } //Copy the disks to the global configParams for key, value := range configParamsDisk { //vmid is only required in createVMDisks @@ -264,7 +292,10 @@ func (config ConfigQemu) UpdateConfig(vmr *VmRef, client *Client) (err error) { } // Create networks config. - config.CreateQemuNetworksParams(vmr.vmId, configParams) + err = config.CreateQemuNetworksParams(vmr.vmId, configParams) + if err != nil { + log.Printf("[ERROR] %q", err) + } // Create vga config. vgaParam := QemuDeviceParam{} @@ -276,7 +307,10 @@ func (config ConfigQemu) UpdateConfig(vmr *VmRef, client *Client) (err error) { } // Create serial interfaces - config.CreateQemuSerialsParams(vmr.vmId, configParams) + err = config.CreateQemuSerialsParams(vmr.vmId, configParams) + if err != nil { + log.Printf("[ERROR] %q", err) + } // cloud-init options if config.CIuser != "" { @@ -321,7 +355,10 @@ func (config ConfigQemu) UpdateConfig(vmr *VmRef, client *Client) (err error) { return err } - client.UpdateVMHA(vmr, config.HaState) + _, err = client.UpdateVMHA(vmr, config.HaState) + if err != nil { + log.Printf("[ERROR] %q", err) + } _, err = client.UpdateVMPool(vmr, config.Pool) @@ -340,13 +377,14 @@ func NewConfigQemuFromJson(io io.Reader) (config *ConfigQemu, err error) { } var ( - rxIso = regexp.MustCompile(`(.*?),media`) - rxDeviceID = regexp.MustCompile(`\d+`) - rxDiskName = regexp.MustCompile(`(virtio|scsi)\d+`) - rxDiskType = regexp.MustCompile(`\D+`) - rxNicName = regexp.MustCompile(`net\d+`) - rxMpName = regexp.MustCompile(`mp\d+`) - rxSerialName = regexp.MustCompile(`serial\d+`) + rxIso = regexp.MustCompile(`(.*?),media`) + rxDeviceID = regexp.MustCompile(`\d+`) + rxDiskName = regexp.MustCompile(`(virtio|scsi)\d+`) + rxDiskType = regexp.MustCompile(`\D+`) + rxUnusedDiskName = regexp.MustCompile(`^(unused)\d+`) + rxNicName = regexp.MustCompile(`net\d+`) + rxMpName = regexp.MustCompile(`mp\d+`) + rxSerialName = regexp.MustCompile(`serial\d+`) ) func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err error) { @@ -387,6 +425,10 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e if _, isSet := vmConfig["description"]; isSet { description = vmConfig["description"].(string) } + tags := "" + if _, isSet := vmConfig["tags"]; isSet { + tags = vmConfig["tags"].(string) + } bios := "seabios" if _, isSet := vmConfig["bios"]; isSet { bios = vmConfig["bios"].(string) @@ -466,28 +508,30 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e } config = &ConfigQemu{ - Name: name, - Description: strings.TrimSpace(description), - Bios: bios, - Onboot: onboot, - Agent: agent, - QemuOs: ostype, - Memory: int(memory), - QemuCores: int(cores), - QemuSockets: int(sockets), - QemuCpu: cpu, - QemuNuma: numa, - QemuKVM: kvm, - Hotplug: hotplug, - QemuVlanTag: -1, - Boot: boot, - BootDisk: bootdisk, - Scsihw: scsihw, - HaState: hastate, - QemuDisks: QemuDevices{}, - QemuVga: QemuDevice{}, - QemuNetworks: QemuDevices{}, - QemuSerials: QemuDevices{}, + Name: name, + Description: strings.TrimSpace(description), + Tags: strings.TrimSpace(tags), + Bios: bios, + Onboot: onboot, + Agent: agent, + QemuOs: ostype, + Memory: int(memory), + QemuCores: int(cores), + QemuSockets: int(sockets), + QemuCpu: cpu, + QemuNuma: numa, + QemuKVM: kvm, + Hotplug: hotplug, + QemuVlanTag: -1, + Boot: boot, + BootDisk: bootdisk, + Scsihw: scsihw, + HaState: hastate, + QemuDisks: QemuDevices{}, + QemuUnusedDisks: QemuDevices{}, + QemuVga: QemuDevice{}, + QemuNetworks: QemuDevices{}, + QemuSerials: QemuDevices{}, } if balloon >= 1 { @@ -533,32 +577,66 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e // Add disks. diskNames := []string{} - for k, _ := range vmConfig { + for k := range vmConfig { if diskName := rxDiskName.FindStringSubmatch(k); len(diskName) > 0 { diskNames = append(diskNames, diskName[0]) } } for _, diskName := range diskNames { - diskConfStr := vmConfig[diskName] - diskConfList := strings.Split(diskConfStr.(string), ",") + diskConfStr := vmConfig[diskName].(string) - // id := rxDeviceID.FindStringSubmatch(diskName) diskID, _ := strconv.Atoi(id[0]) diskType := rxDiskType.FindStringSubmatch(diskName)[0] - storageName, fileName := ParseSubConf(diskConfList[0], ":") - // - diskConfMap := QemuDevice{ - "id": diskID, - "type": diskType, - "storage": storageName, - "file": fileName, + diskConfMap := ParsePMConf(diskConfStr, "volume") + diskConfMap["slot"] = diskID + diskConfMap["type"] = diskType + + storageName, fileName := ParseSubConf(diskConfMap["volume"].(string), ":") + diskConfMap["storage"] = storageName + diskConfMap["file"] = fileName + + filePath := diskConfMap["volume"] + + // Get disk format + storageContent, err := client.GetStorageContent(vmr, storageName) + if err != nil { + log.Fatal(err) + return nil, err } + var storageFormat string + contents := storageContent["data"].([]interface{}) + for content := range contents { + storageContentMap := contents[content].(map[string]interface{}) + if storageContentMap["volid"] == filePath { + storageFormat = storageContentMap["format"].(string) + break + } + } + diskConfMap["format"] = storageFormat - // Add rest of device config. - diskConfMap.readDeviceConfig(diskConfList[1:]) + // Get storage type for disk + var storageStatus map[string]interface{} + storageStatus, err = client.GetStorageStatus(vmr, storageName) + if err != nil { + log.Fatal(err) + return nil, err + } + storageType := storageStatus["type"] + + diskConfMap["storage_type"] = storageType + + // Convert to gigabytes if disk size was received in terabytes + sizeIsInTerabytes, err := regexp.MatchString("[0-9]+T", diskConfMap["size"].(string)) + if err != nil { + log.Fatal(err) + return nil, err + } + if sizeIsInTerabytes { + diskConfMap["size"] = fmt.Sprintf("%.0fG", DiskSizeGB(diskConfMap["size"])) + } // And device config to disks map. if len(diskConfMap) > 0 { @@ -566,11 +644,49 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e } } + // Add unused disks + // unused0:local:100/vm-100-disk-1.qcow2 + unusedDiskNames := []string{} + for k := range vmConfig { + // look for entries from the config in the format "unusedX:" where X is an integer + if unusedDiskName := rxUnusedDiskName.FindStringSubmatch(k); len(unusedDiskName) > 0 { + unusedDiskNames = append(unusedDiskNames, unusedDiskName[0]) + } + } + + fmt.Println(fmt.Sprintf("unusedDiskNames: %v", unusedDiskNames)) + for _, unusedDiskName := range unusedDiskNames { + unusedDiskConfStr := vmConfig[unusedDiskName].(string) + finalDiskConfMap := QemuDevice{} + + // parse "unused0" to get the id '0' as an int + id := rxDeviceID.FindStringSubmatch(unusedDiskName) + diskID, err := strconv.Atoi(id[0]) + if err != nil { + return nil, errors.New(fmt.Sprintf("Unable to parse unused disk id from input string '%v' tried to convert '%v' to integer.", unusedDiskName, diskID)) + } + finalDiskConfMap["slot"] = diskID + + // parse the attributes from the unused disk + // extract the storage and file path from the unused disk entry + parsedUnusedDiskMap := ParsePMConf(unusedDiskConfStr, "storage+file") + storageName, fileName := ParseSubConf(parsedUnusedDiskMap["storage+file"].(string), ":") + finalDiskConfMap["storage"] = storageName + finalDiskConfMap["file"] = fileName + + config.QemuUnusedDisks[diskID] = finalDiskConfMap + } + //Display if vga, isSet := vmConfig["vga"]; isSet { vgaList := strings.Split(vga.(string), ",") vgaMap := QemuDevice{} - vgaMap.readDeviceConfig(vgaList) + + // TODO: keep going if error? + err = vgaMap.readDeviceConfig(vgaList) + if err != nil { + log.Printf("[ERROR] %q", err) + } if len(vgaMap) > 0 { config.QemuVga = vgaMap } @@ -579,7 +695,7 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e // Add networks. nicNames := []string{} - for k, _ := range vmConfig { + for k := range vmConfig { if nicName := rxNicName.FindStringSubmatch(k); len(nicName) > 0 { nicNames = append(nicNames, nicName[0]) } @@ -601,7 +717,15 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e } // Add rest of device config. - nicConfMap.readDeviceConfig(nicConfList[1:]) + err = nicConfMap.readDeviceConfig(nicConfList[1:]) + if err != nil { + log.Printf("[ERROR] %q", err) + } + if nicConfMap["firewall"] == 1 { + nicConfMap["firewall"] = true + } else if nicConfMap["firewall"] == 0 { + nicConfMap["firewall"] = false + } // And device config to networks. if len(nicConfMap) > 0 { @@ -612,7 +736,7 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e // Add serials serialNames := []string{} - for k, _ := range vmConfig { + for k := range vmConfig { if serialName := rxSerialName.FindStringSubmatch(k); len(serialName) > 0 { serialNames = append(serialNames, serialName[0]) } @@ -773,6 +897,52 @@ func SendKeysString(vmr *VmRef, client *Client, keys string) (err error) { return nil } +// Given a QemuDevice, return a param string to give to ProxMox +func formatDeviceParam(device QemuDevice) string { + deviceConfParams := QemuDeviceParam{} + deviceConfParams = deviceConfParams.createDeviceParam(device, nil) + return strings.Join(deviceConfParams, ",") +} + +// Given a QemuDevice (represesting a disk), return a param string to give to ProxMox +func FormatDiskParam(disk QemuDevice) string { + diskConfParam := QemuDeviceParam{} + + if volume, ok := disk["volume"]; ok && volume != "" { + diskConfParam = append(diskConfParam, volume.(string)) + diskConfParam = append(diskConfParam, fmt.Sprintf("size=%v", disk["size"])) + } else { + volumeInit := fmt.Sprintf("%v:%v", disk["storage"], DiskSizeGB(disk["size"])) + diskConfParam = append(diskConfParam, volumeInit) + } + + // Set cache if not none (default). + if cache, ok := disk["cache"]; ok && cache != "none" { + diskCache := fmt.Sprintf("cache=%v", disk["cache"]) + diskConfParam = append(diskConfParam, diskCache) + } + + // Mountoptions + if mountoptions, ok := disk["mountoptions"]; ok { + options := []string{} + for opt, enabled := range mountoptions.(map[string]interface{}) { + if enabled.(bool) { + options = append(options, opt) + } + } + diskMountOpts := fmt.Sprintf("mountoptions=%v", strings.Join(options, ";")) + diskConfParam = append(diskConfParam, diskMountOpts) + } + + // Keys that are not used as real/direct conf. + ignoredKeys := []string{"key", "slot", "type", "storage", "file", "size", "cache", "volume", "container", "vm", "mountoptions", "storage_type", "format"} + + // Rest of config. + diskConfParam = diskConfParam.createDeviceParam(disk, ignoredKeys) + + return strings.Join(diskConfParam, ",") +} + // Create parameters for each Nic device. func (c ConfigQemu) CreateQemuNetworksParams(vmID int, params map[string]interface{}) error { @@ -873,57 +1043,41 @@ func (c ConfigQemu) CreateQemuDisksParams( // For new style with multi disk device. for diskID, diskConfMap := range c.QemuDisks { - // skip the first disk for clones (may not always be right, but a template probably has at least 1 disk) if diskID == 0 && cloned { continue } - diskConfParam := QemuDeviceParam{ - "media=disk", - } // Device name. deviceType := diskConfMap["type"].(string) qemuDiskName := deviceType + strconv.Itoa(diskID) - // Set disk storage. - // Disk size. - diskSizeGB := fmt.Sprintf("size=%v", diskConfMap["size"]) - diskConfParam = append(diskConfParam, diskSizeGB) - - // Disk name. - var diskFile string - // Currently ZFS local, LVM, Ceph RBD, CephFS and Directory are considered. - // Other formats are not verified, but could be added if they're needed. - rxStorageTypes := `(zfspool|lvm|rbd|cephfs)` - storageType := diskConfMap["storage_type"].(string) - if matched, _ := regexp.MatchString(rxStorageTypes, storageType); matched { - diskFile = fmt.Sprintf("file=%v:vm-%v-disk-%v", diskConfMap["storage"], vmID, diskID) - } else { - diskFile = fmt.Sprintf("file=%v:%v/vm-%v-disk-%v.%v", diskConfMap["storage"], vmID, vmID, diskID, diskConfMap["format"]) - } - diskConfParam = append(diskConfParam, diskFile) - - // Set cache if not none (default). - if diskConfMap["cache"].(string) != "none" { - diskCache := fmt.Sprintf("cache=%v", diskConfMap["cache"]) - diskConfParam = append(diskConfParam, diskCache) - } - - // Keys that are not used as real/direct conf. - ignoredKeys := []string{"id", "type", "storage", "storage_type", "size", "cache"} - - // Rest of config. - diskConfParam = diskConfParam.createDeviceParam(diskConfMap, ignoredKeys) - // Add back to Qemu prams. - params[qemuDiskName] = strings.Join(diskConfParam, ",") + params[qemuDiskName] = FormatDiskParam(diskConfMap) + } + + return nil +} + +// Create parameters for serial interface +func (c ConfigQemu) CreateQemuSerialsParams( + vmID int, + params map[string]interface{}, +) error { + + // For new style with multi disk device. + for serialID, serialConfMap := range c.QemuSerials { + // Device name. + deviceType := serialConfMap["type"].(string) + qemuSerialName := "serial" + strconv.Itoa(serialID) + + // Add back to Qemu prams. + params[qemuSerialName] = deviceType } return nil } -// Create the parameters for each device that will be sent to Proxmox API. func (p QemuDeviceParam) createDeviceParam( deviceConfMap QemuDevice, ignoredKeys []string, @@ -964,43 +1118,6 @@ func (c ConfigQemu) String() string { return string(jsConf) } -// Create parameters for serial interface -func (c ConfigQemu) CreateQemuSerialsParams( - vmID int, - params map[string]interface{}, -) error { - - // For new style with multi disk device. - for serialID, serialConfMap := range c.QemuSerials { - // Device name. - deviceType := serialConfMap["type"].(string) - qemuSerialName := "serial" + strconv.Itoa(serialID) - - // Add back to Qemu prams. - params[qemuSerialName] = deviceType - } - - return nil -} - -// NextId - Get next free VMID -func (c *Client) NextId() (id int, err error) { - var data map[string]interface{} - _, err = c.session.GetJSON("/cluster/nextid", nil, nil, &data) - if err != nil { - return -1, err - } - if data["data"] == nil || data["errors"] != nil { - return -1, fmt.Errorf(data["errors"].(string)) - } - - i, err := strconv.Atoi(data["data"].(string)) - if err != nil { - return -1, err - } - return i, nil -} - // VMIdExists - If you pass an VMID that exists it will raise an error otherwise it will return the vmID func (c *Client) VMIdExists(vmID int) (id int, err error) { _, err = c.session.Get(fmt.Sprintf("/cluster/nextid?vmid=%d", vmID), nil, nil) diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/session.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/session.go index 2b6f58c44..9b4787478 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/session.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/session.go @@ -28,6 +28,7 @@ type Session struct { ApiUrl string AuthTicket string CsrfToken string + AuthToken string // Combination of user, realm, token ID and UUID Headers http.Header } @@ -108,6 +109,11 @@ func TypedResponse(resp *http.Response, v interface{}) error { return nil } +func (s *Session) SetAPIToken(userID, token string) { + auth := fmt.Sprintf("%s=%s", userID, token) + s.AuthToken = auth +} + func (s *Session) Login(username string, password string, otp string) (err error) { reqUser := map[string]interface{}{"username": username, "password": password} if otp != "" { @@ -150,7 +156,9 @@ func (s *Session) NewRequest(method, url string, headers *http.Header, body io.R if headers != nil { req.Header = *headers } - if s.AuthTicket != "" { + if s.AuthToken != "" { + req.Header.Add("Authorization", "PVEAPIToken="+s.AuthToken) + } else if s.AuthTicket != "" { req.Header.Add("Cookie", "PVEAuthCookie="+s.AuthTicket) req.Header.Add("CSRFPreventionToken", s.CsrfToken) } diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/util.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/util.go index 5841c421f..636e69fd0 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/util.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/util.go @@ -1,6 +1,7 @@ package proxmox import ( + "regexp" "strconv" "strings" ) @@ -51,12 +52,57 @@ func ParseConf( kvString string, confSeparator string, subConfSeparator string, + implicitFirstKey string, ) QemuDevice { var confMap = QemuDevice{} confList := strings.Split(kvString, confSeparator) + + if implicitFirstKey != "" { + if !strings.Contains(confList[0], "=") { + confMap[implicitFirstKey] = confList[0] + confList = confList[1:] + } + } + for _, item := range confList { key, value := ParseSubConf(item, subConfSeparator) confMap[key] = value } return confMap } + +func ParsePMConf( + kvString string, + implicitFirstKey string, +) QemuDevice { + return ParseConf(kvString, ",", "=", implicitFirstKey) +} + +// Convert a disk-size string to a GB float +func DiskSizeGB(dcSize interface{}) float64 { + var diskSize float64 + switch dcSize.(type) { + case string: + diskString := strings.ToUpper(dcSize.(string)) + re := regexp.MustCompile("([0-9]+)([A-Z]*)") + diskArray := re.FindStringSubmatch(diskString) + + diskSize, _ = strconv.ParseFloat(diskArray[1], 64) + + if len(diskArray) >= 3 { + switch diskArray[2] { + case "T", "TB": + diskSize *= 1024 + case "G", "GB": + //Nothing to do + case "M", "MB": + diskSize /= 1024 + case "K", "KB": + diskSize /= 1048576 + } + } + case float64: + diskSize = dcSize.(float64) + } + return diskSize +} diff --git a/vendor/modules.txt b/vendor/modules.txt index f5a55521e..3836bdf3a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -78,7 +78,7 @@ github.com/NaverCloudPlatform/ncloud-sdk-go-v2/ncloud github.com/NaverCloudPlatform/ncloud-sdk-go-v2/services/server # github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d github.com/StackExchange/wmi -# github.com/Telmate/proxmox-api-go v0.0.0-20200715182505-ec97c70ba887 +# github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0 ## explicit github.com/Telmate/proxmox-api-go/proxmox # github.com/agext/levenshtein v1.2.1 diff --git a/website/content/docs/builders/proxmox/clone.mdx b/website/content/docs/builders/proxmox/clone.mdx index 5b8da5e02..487ec6606 100644 --- a/website/content/docs/builders/proxmox/clone.mdx +++ b/website/content/docs/builders/proxmox/clone.mdx @@ -43,10 +43,20 @@ in the image's Cloud-Init settings for provisioning. - `username` (string) - Username when authenticating to Proxmox, including the realm. For example `user@pve` to use the local Proxmox realm. + When used with `token`, it would look like this: `user@pve!token` Can also be set via the `PROXMOX_USERNAME` environment variable. - `password` (string) - Password for the user. + For API tokens please use `token`. Can also be set via the `PROXMOX_PASSWORD` environment variable. + Either `password` or `token` must be specifed. If both are set, + `token` takes precedence. + +- `token` (string) - Token for authenticating API calls. + This allows the API client to work with API tokens instead of user passwords. + Can also be set via the `PROXMOX_TOKEN` environment variable. + Either `password` or `token` must be specifed. If both are set, + `token` takes precedence. - `node` (string) - Which node in the Proxmox cluster to start the virtual machine on during creation. diff --git a/website/content/docs/builders/proxmox/iso.mdx b/website/content/docs/builders/proxmox/iso.mdx index 2fe3f8f55..1d991c73c 100644 --- a/website/content/docs/builders/proxmox/iso.mdx +++ b/website/content/docs/builders/proxmox/iso.mdx @@ -40,10 +40,20 @@ builder. - `username` (string) - Username when authenticating to Proxmox, including the realm. For example `user@pve` to use the local Proxmox realm. + When used with `token`, it would look like this: `user@pve!token` Can also be set via the `PROXMOX_USERNAME` environment variable. - `password` (string) - Password for the user. + For API tokens please use `token`. Can also be set via the `PROXMOX_PASSWORD` environment variable. + Either `password` or `token` must be specifed. If both are set, + `token` takes precedence. + +- `token` (string) - Token for authenticating API calls. + This allows the API client to work with API tokens instead of user passwords. + Can also be set via the `PROXMOX_TOKEN` environment variable. + Either `password` or `token` must be specifed. If both are set, + `token` takes precedence. - `node` (string) - Which node in the Proxmox cluster to start the virtual machine on during creation. From 8c61ca174f2570c298cd2bd719b6fcddbd84ad7b Mon Sep 17 00:00:00 2001 From: Bryce Kalow Date: Mon, 22 Mar 2021 09:21:59 -0500 Subject: [PATCH 159/212] feat: adds should-build website script (#10779) --- website/package-lock.json | 305 ++++++++++++++++++-------------- website/package.json | 2 +- website/scripts/should-build.sh | 13 ++ 3 files changed, 184 insertions(+), 136 deletions(-) create mode 100644 website/scripts/should-build.sh diff --git a/website/package-lock.json b/website/package-lock.json index e2585dfd9..927589763 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -2416,9 +2416,9 @@ } }, "@babel/runtime-corejs3": { - "version": "7.13.7", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.7.tgz", - "integrity": "sha512-zkDsGGSRU2YyYTXkPfcxuYuCVc6xBOeH1ZMh72ywBvmrDs+kSmoMuCUXZJUPbXZafrPivDHS2Oq7wI37gaTvqw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", + "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -2551,17 +2551,17 @@ } }, "@bugsnag/browser": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.7.0.tgz", - "integrity": "sha512-o3Y/8ZINTCyCiDid01xF4RwAfRCtt4Ak65sbEUjuen90Lf62LcqNIrguRotum5/5GrXl/ktm8gk6Tp8XBiS79A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.9.0.tgz", + "integrity": "sha512-+W/oxEJJMgNRVrgcCGXYQKAf6Nu28JklU3v+w7zgPEaxnzxxUwsCj7s4534XQvj/jprP60281WsAlTDqFRprAQ==", "requires": { - "@bugsnag/core": "^7.7.0" + "@bugsnag/core": "^7.9.0" } }, "@bugsnag/core": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.7.0.tgz", - "integrity": "sha512-y6xY/ZjHRSD3h1ADdkgH4sUJeJ9TUjNjkui+pjdmQkG4asjA8lBNmjnqirGeAxgL00lg5xvbfLSq9iHdqFW9oQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.9.0.tgz", + "integrity": "sha512-LjARVBusQ1ewNrHRPBrwY4ISsXf/aPjQHAixFe6fRMiLzAS0awxFweVlbdfm+Oj/ZE04J6O9n4re9TC6pVBpEA==", "requires": { "@bugsnag/cuid": "^3.0.0", "@bugsnag/safe-json-stringify": "^6.0.0", @@ -2585,11 +2585,11 @@ } }, "@bugsnag/node": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.8.0.tgz", - "integrity": "sha512-2ZkXP5gmTE4LcPu2TB350BUmClbwsPZ1ZjYMiHqHDb2Xjoico0PNt6F9tBLjDRy9jS/pFGbjt/iOpyfr4GFm8A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.9.0.tgz", + "integrity": "sha512-ctTJLfeNgbWZAnKbqg4w1PMsabSnmkgAY199oZLonDuu/60UWlNOcDEicDEhULD9gt2vYTZy78QsYov4LDAojQ==", "requires": { - "@bugsnag/core": "^7.7.0", + "@bugsnag/core": "^7.9.0", "byline": "^5.0.0", "error-stack-parser": "^2.0.2", "iserror": "^0.0.2", @@ -2682,9 +2682,9 @@ "integrity": "sha512-REr07tPJDKpyTh/u9tUS3sf29LnkDrWFVgY7FTvDJfbJ60IJ/R1TYNmcE7QKREGJ8j0p43QWEDabqVWOWvOXFA==" }, "@hashicorp/nextjs-scripts": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@hashicorp/nextjs-scripts/-/nextjs-scripts-16.2.0.tgz", - "integrity": "sha512-CpqCaBji51EKp+1yoIKx1J2OLLunueVASgPMnnVgNkUokbt5PGFLbujgpC/hP9OroPtc7HlsXmvI6zEN/MWXYg==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@hashicorp/nextjs-scripts/-/nextjs-scripts-16.3.0.tgz", + "integrity": "sha512-G8xPfsS9z/a67J0ma/a0Bl5jBcti2h4henAH/8egLtD1jmqdX4iLzU8AHBEWHLnEpHQwfTTRqW40O2qzIRPQig==", "requires": { "@bugsnag/js": "7.5.4", "@bugsnag/plugin-react": "7.5.4", @@ -2837,14 +2837,12 @@ "requires": { "@hashicorp/react-inline-svg": "^1.0.0", "slugify": "^1.3.6" - }, - "dependencies": { - "@hashicorp/react-inline-svg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", - "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" - } } + }, + "@hashicorp/react-inline-svg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", + "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" } } }, @@ -4118,9 +4116,9 @@ } }, "axe-core": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz", - "integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg==" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", + "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==" }, "axobject-query": { "version": "2.2.0", @@ -5217,9 +5215,9 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -5234,9 +5232,9 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "clipboard": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", - "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", "optional": true, "requires": { "good-listener": "^1.2.2", @@ -5469,9 +5467,9 @@ } }, "core-js-pure": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.0.tgz", - "integrity": "sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", + "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==" }, "core-util-is": { "version": "1.0.2", @@ -6227,26 +6225,33 @@ } }, "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", "object-inspect": "^1.9.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" }, "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -6368,9 +6373,9 @@ }, "dependencies": { "emoji-regex": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.1.tgz", - "integrity": "sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" } } }, @@ -6906,6 +6911,11 @@ "resolved": "https://registry.npmjs.org/fast-stringify/-/fast-stringify-1.1.2.tgz", "integrity": "sha512-SfslXjiH8km0WnRiuPfpUKwlZjW5I878qsOm+2x8x3TgqmElOOLh1rgJFb+PolNdNRK3r8urEefqx0wt7vx1dA==" }, + "fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==" + }, "fastest-levenshtein": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", @@ -7481,6 +7491,11 @@ } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -7745,11 +7760,6 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, "html-tags": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", @@ -8240,9 +8250,9 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8340,6 +8350,11 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -8348,6 +8363,14 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", @@ -8474,6 +8497,11 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -8532,11 +8560,11 @@ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-svg": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.2.1.tgz", - "integrity": "sha512-PHx3ANecKsKNl5y5+Jvt53Y4J7MfMpbNZkv384QNiswMKAWIbvcqbPz+sYbFKJI8Xv3be01GSFniPmoaP+Ai5A==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.1.tgz", + "integrity": "sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==", "requires": { - "html-comment-regex": "^1.1.2" + "fast-xml-parser": "^3.19.0" } }, "is-symbol": { @@ -8552,6 +8580,11 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, "is-url-superb": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-3.0.0.tgz", @@ -8913,9 +8946,9 @@ } }, "listr2": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.3.tgz", - "integrity": "sha512-CeQrTeot/OQTrd2loXEBMfwlOjlPeHu/9alA8UyEoiEyncpj/mv2zRLgx32JzO62wbJIBSKgGM2L23XeOwrRlg==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.4.3.tgz", + "integrity": "sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA==", "requires": { "chalk": "^4.1.0", "cli-truncate": "^2.1.0", @@ -8923,7 +8956,7 @@ "indent-string": "^4.0.0", "log-update": "^4.0.0", "p-map": "^4.0.0", - "rxjs": "^6.6.3", + "rxjs": "^6.6.6", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, @@ -9036,11 +9069,12 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "requires": { - "chalk": "^4.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "log-update": { @@ -9101,9 +9135,9 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11384,9 +11418,9 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "4.0.1", @@ -13049,9 +13083,9 @@ }, "dependencies": { "ajv": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", - "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -13133,9 +13167,9 @@ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==" }, "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.1.tgz", + "integrity": "sha512-eT7NrxAsppPRQEBSwKSosReE+v8OzABwEScQYk5d4uxaEPlzxTIku7LINXtBGalthkLhJnq5lBI89PfK43zAKg==", "requires": { "lru-cache": "^6.0.0" } @@ -13169,9 +13203,9 @@ } }, "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.0.tgz", + "integrity": "sha512-NAq0fCmZYGz9UFEQyndp7sisrow4GroyGeKluyKC/chuITZsPyOyC1UJZPJlVFImhXdROIP5xqouRLThT3BbpQ==" }, "meow": { "version": "8.1.2", @@ -13197,13 +13231,13 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "normalize-package-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", - "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", "requires": { - "hosted-git-info": "^3.0.6", - "resolve": "^1.17.0", - "semver": "^7.3.2", + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", "validate-npm-package-license": "^3.0.1" } }, @@ -13307,6 +13341,15 @@ "strip-indent": "^3.0.0" } }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -13323,9 +13366,9 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13792,9 +13835,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tsutils": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", - "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "requires": { "tslib": "^1.8.1" } @@ -13847,6 +13890,17 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==" }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, "unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -14171,37 +14225,6 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } } }, "utils-merge": { @@ -14215,9 +14238,9 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -14345,6 +14368,18 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", @@ -14433,9 +14468,9 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -14479,9 +14514,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==" + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==" }, "yauzl": { "version": "2.10.0", diff --git a/website/package.json b/website/package.json index e1e2bd44d..db826733c 100644 --- a/website/package.json +++ b/website/package.json @@ -5,7 +5,7 @@ "author": "HashiCorp", "dependencies": { "@hashicorp/mktg-global-styles": "2.1.0", - "@hashicorp/nextjs-scripts": "16.2.0", + "@hashicorp/nextjs-scripts": "16.3.0", "@hashicorp/react-button": "4.0.0", "@hashicorp/react-docs-page": "11.0.1", "@hashicorp/react-hashi-stack-menu": "^1.1.0", diff --git a/website/scripts/should-build.sh b/website/scripts/should-build.sh new file mode 100644 index 000000000..1d0cb6fd9 --- /dev/null +++ b/website/scripts/should-build.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# This is run during the website build step to determine if we should skip the build or not. +# More information: https://vercel.com/docs/platform/projects#ignored-build-step + +if [[ "$VERCEL_GIT_COMMIT_REF" == "stable-website" ]] ; then + # Proceed with the build if the branch is stable-website + echo "✅ - Build can proceed" + exit 1; +else + # Check for differences in the website directory + git diff --quiet HEAD^ HEAD ./ +fi From 1bb5c455aa8e5b57a2c55434d0da8e83bedba533 Mon Sep 17 00:00:00 2001 From: Taylor Dolezal Date: Mon, 22 Mar 2021 11:05:42 -0700 Subject: [PATCH 160/212] Update 'Hashicorp' to 'HashiCorp' --- builder/amazon/common/access_config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/amazon/common/access_config.go b/builder/amazon/common/access_config.go index 2103aa83b..9d6dfb459 100644 --- a/builder/amazon/common/access_config.go +++ b/builder/amazon/common/access_config.go @@ -150,7 +150,7 @@ type AccessConfig struct { // environmental variable. Token string `mapstructure:"token" required:"false"` session *session.Session - // Get credentials from Hashicorp Vault's aws secrets engine. You must + // Get credentials from HashiCorp Vault's aws secrets engine. You must // already have created a role to use. For more information about // generating credentials via the Vault engine, see the [Vault // docs.](https://www.vaultproject.io/api/secret/aws#generate-credentials) From ff01e6715ab6ae89d4353ce7d98d356700a7bb30 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Tue, 23 Mar 2021 12:02:05 +0100 Subject: [PATCH 161/212] HCL2: add templatefile function (#10776) * tests * docs --- .gitattributes | 1 + hcl2template/function/templatefile.go | 140 ++++++++++++++++ hcl2template/function/templatefile_test.go | 151 ++++++++++++++++++ hcl2template/function/testdata/bare.tmpl | 1 + hcl2template/function/testdata/func.tmpl | 1 + hcl2template/function/testdata/hello.tmpl | 1 + hcl2template/function/testdata/hello.txt | 1 + hcl2template/function/testdata/icon.png | Bin 0 -> 806 bytes hcl2template/function/testdata/list.tmpl | 3 + hcl2template/function/testdata/recursive.tmpl | 1 + hcl2template/functions.go | 6 + .../functions/file/fileexists.mdx | 3 +- .../functions/file/templatefile.mdx | 133 +++++++++++++++ website/data/docs-nav-data.json | 4 + website/data/docs-navigation.js | 1 + 15 files changed, 446 insertions(+), 1 deletion(-) create mode 100644 hcl2template/function/templatefile.go create mode 100644 hcl2template/function/templatefile_test.go create mode 100644 hcl2template/function/testdata/bare.tmpl create mode 100644 hcl2template/function/testdata/func.tmpl create mode 100644 hcl2template/function/testdata/hello.tmpl create mode 100644 hcl2template/function/testdata/hello.txt create mode 100644 hcl2template/function/testdata/icon.png create mode 100644 hcl2template/function/testdata/list.tmpl create mode 100644 hcl2template/function/testdata/recursive.tmpl create mode 100644 website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx diff --git a/.gitattributes b/.gitattributes index 0eb67ecaf..af45aba81 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6,6 +6,7 @@ *.mdx text eol=lf *.ps1 text eol=lf *.hcl text eol=lf +*.tmpl text eol=lf *.txt text eol=lf go.mod text eol=lf go.sum text eol=lf diff --git a/hcl2template/function/templatefile.go b/hcl2template/function/templatefile.go new file mode 100644 index 000000000..d7edf23b2 --- /dev/null +++ b/hcl2template/function/templatefile.go @@ -0,0 +1,140 @@ +package function + +import ( + "fmt" + + "github.com/hashicorp/go-cty-funcs/filesystem" + "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/hcl/v2/hclsyntax" + "github.com/zclconf/go-cty/cty" + "github.com/zclconf/go-cty/cty/function" +) + +// MakeTemplateFileFunc constructs a function that takes a file path and +// an arbitrary object of named values and attempts to render the referenced +// file as a template using HCL template syntax. +// +// The template itself may recursively call other functions so a callback +// must be provided to get access to those functions. The template cannot, +// however, access any variables defined in the scope: it is restricted only to +// those variables provided in the second function argument. +// +// As a special exception, a referenced template file may not recursively call +// the templatefile function, since that would risk the same file being +// included into itself indefinitely. +func MakeTemplateFileFunc(baseDir string, funcsCb func() map[string]function.Function) function.Function { + + params := []function.Parameter{ + { + Name: "path", + Type: cty.String, + }, + { + Name: "vars", + Type: cty.DynamicPseudoType, + }, + } + + loadTmpl := func(fn string) (hcl.Expression, error) { + // We re-use File here to ensure the same filename interpretation + // as it does, along with its other safety checks. + tmplVal, err := filesystem.File(baseDir, cty.StringVal(fn)) + if err != nil { + return nil, err + } + + expr, diags := hclsyntax.ParseTemplate([]byte(tmplVal.AsString()), fn, hcl.Pos{Line: 1, Column: 1}) + if diags.HasErrors() { + return nil, diags + } + + return expr, nil + } + + renderTmpl := func(expr hcl.Expression, varsVal cty.Value) (cty.Value, error) { + if varsTy := varsVal.Type(); !(varsTy.IsMapType() || varsTy.IsObjectType()) { + return cty.DynamicVal, function.NewArgErrorf(1, "invalid vars value: must be a map") // or an object, but we don't strongly distinguish these most of the time + } + + ctx := &hcl.EvalContext{ + Variables: varsVal.AsValueMap(), + } + + // We require all of the variables to be valid HCL identifiers, because + // otherwise there would be no way to refer to them in the template + // anyway. Rejecting this here gives better feedback to the user + // than a syntax error somewhere in the template itself. + for n := range ctx.Variables { + if !hclsyntax.ValidIdentifier(n) { + // This error message intentionally doesn't describe _all_ of + // the different permutations that are technically valid as an + // HCL identifier, but rather focuses on what we might + // consider to be an "idiomatic" variable name. + return cty.DynamicVal, function.NewArgErrorf(1, "invalid template variable name %q: must start with a letter, followed by zero or more letters, digits, and underscores", n) + } + } + + // We'll pre-check references in the template here so we can give a + // more specialized error message than HCL would by default, so it's + // clearer that this problem is coming from a templatefile call. + for _, traversal := range expr.Variables() { + root := traversal.RootName() + if _, ok := ctx.Variables[root]; !ok { + return cty.DynamicVal, function.NewArgErrorf(1, "vars map does not contain key %q, referenced at %s", root, traversal[0].SourceRange()) + } + } + + givenFuncs := funcsCb() // this callback indirection is to avoid chicken/egg problems + funcs := make(map[string]function.Function, len(givenFuncs)) + for name, fn := range givenFuncs { + if name == "templatefile" { + // We stub this one out to prevent recursive calls. + funcs[name] = function.New(&function.Spec{ + Params: params, + Type: func(args []cty.Value) (cty.Type, error) { + return cty.NilType, fmt.Errorf("cannot recursively call templatefile from inside templatefile call") + }, + }) + continue + } + funcs[name] = fn + } + ctx.Functions = funcs + + val, diags := expr.Value(ctx) + if diags.HasErrors() { + return cty.DynamicVal, diags + } + return val, nil + } + + return function.New(&function.Spec{ + Params: params, + Type: func(args []cty.Value) (cty.Type, error) { + if !(args[0].IsKnown() && args[1].IsKnown()) { + return cty.DynamicPseudoType, nil + } + + // We'll render our template now to see what result type it + // produces. A template consisting only of a single interpolation + // can potentially return any type. + expr, err := loadTmpl(args[0].AsString()) + if err != nil { + return cty.DynamicPseudoType, err + } + + // This is safe even if args[1] contains unknowns because the HCL + // template renderer itself knows how to short-circuit those. + val, err := renderTmpl(expr, args[1]) + return val.Type(), err + }, + Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { + expr, err := loadTmpl(args[0].AsString()) + if err != nil { + return cty.DynamicVal, err + } + return renderTmpl(expr, args[1]) + }, + }) + +} diff --git a/hcl2template/function/templatefile_test.go b/hcl2template/function/templatefile_test.go new file mode 100644 index 000000000..658d2f368 --- /dev/null +++ b/hcl2template/function/templatefile_test.go @@ -0,0 +1,151 @@ +package function + +import ( + "fmt" + "path/filepath" + "testing" + + "github.com/hashicorp/go-cty-funcs/filesystem" + "github.com/zclconf/go-cty/cty" + "github.com/zclconf/go-cty/cty/function" + "github.com/zclconf/go-cty/cty/function/stdlib" +) + +func TestTemplateFile(t *testing.T) { + tests := []struct { + Path cty.Value + Vars cty.Value + Want cty.Value + Err string + }{ + { + cty.StringVal("testdata/hello.txt"), + cty.EmptyObjectVal, + cty.StringVal("Hello World"), + ``, + }, + { + cty.StringVal("testdata/icon.png"), + cty.EmptyObjectVal, + cty.NilVal, + `contents of testdata/icon.png are not valid UTF-8; use the filebase64 function to obtain the Base64 encoded contents or the other file functions (e.g. filemd5, filesha256) to obtain file hashing results instead`, + }, + { + cty.StringVal("testdata/missing"), + cty.EmptyObjectVal, + cty.NilVal, + `no file exists at ` + filepath.Clean("testdata/missing"), + }, + { + cty.StringVal("testdata/hello.tmpl"), + cty.MapVal(map[string]cty.Value{ + "name": cty.StringVal("Jodie"), + }), + cty.StringVal("Hello, Jodie!"), + ``, + }, + { + cty.StringVal("testdata/hello.tmpl"), + cty.MapVal(map[string]cty.Value{ + "name!": cty.StringVal("Jodie"), + }), + cty.NilVal, + `invalid template variable name "name!": must start with a letter, followed by zero or more letters, digits, and underscores`, + }, + { + cty.StringVal("testdata/hello.tmpl"), + cty.ObjectVal(map[string]cty.Value{ + "name": cty.StringVal("Jimbo"), + }), + cty.StringVal("Hello, Jimbo!"), + ``, + }, + { + cty.StringVal("testdata/hello.tmpl"), + cty.EmptyObjectVal, + cty.NilVal, + `vars map does not contain key "name", referenced at testdata/hello.tmpl:1,10-14`, + }, + { + cty.StringVal("testdata/func.tmpl"), + cty.ObjectVal(map[string]cty.Value{ + "list": cty.ListVal([]cty.Value{ + cty.StringVal("a"), + cty.StringVal("b"), + cty.StringVal("c"), + }), + }), + cty.StringVal("The items are a, b, c"), + ``, + }, + { + cty.StringVal("testdata/recursive.tmpl"), + cty.MapValEmpty(cty.String), + cty.NilVal, + `testdata/recursive.tmpl:1,3-16: Error in function call; Call to function "templatefile" failed: cannot recursively call templatefile from inside templatefile call.`, + }, + { + cty.StringVal("testdata/list.tmpl"), + cty.ObjectVal(map[string]cty.Value{ + "list": cty.ListVal([]cty.Value{ + cty.StringVal("a"), + cty.StringVal("b"), + cty.StringVal("c"), + }), + }), + cty.StringVal("- a\n- b\n- c\n"), + ``, + }, + { + cty.StringVal("testdata/list.tmpl"), + cty.ObjectVal(map[string]cty.Value{ + "list": cty.True, + }), + cty.NilVal, + `testdata/list.tmpl:1,13-17: Iteration over non-iterable value; A value of type bool cannot be used as the collection in a 'for' expression.`, + }, + { + cty.StringVal("testdata/bare.tmpl"), + cty.ObjectVal(map[string]cty.Value{ + "val": cty.True, + }), + cty.True, // since this template contains only an interpolation, its true value shines through + ``, + }, + } + + templateFileFn := MakeTemplateFileFunc(".", func() map[string]function.Function { + return map[string]function.Function{ + "join": stdlib.JoinFunc, + "templatefile": filesystem.MakeFileFunc(".", false), // just a placeholder, since templatefile itself overrides this + } + }) + + for _, test := range tests { + t.Run(fmt.Sprintf("TemplateFile(%#v, %#v)", test.Path, test.Vars), func(t *testing.T) { + got, err := templateFileFn.Call([]cty.Value{test.Path, test.Vars}) + + if argErr, ok := err.(function.ArgError); ok { + if argErr.Index < 0 || argErr.Index > 1 { + t.Errorf("ArgError index %d is out of range for templatefile (must be 0 or 1)", argErr.Index) + } + } + + if test.Err != "" { + if err == nil { + t.Fatal("succeeded; want error") + } + if got, want := err.Error(), test.Err; got != want { + t.Errorf("wrong error\ngot: %s\nwant: %s", got, want) + } + return + } else if err != nil { + t.Fatalf("unexpected error: %s", err) + } + + if !got.RawEquals(test.Want) { + t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, test.Want) + } + }) + } +} diff --git a/hcl2template/function/testdata/bare.tmpl b/hcl2template/function/testdata/bare.tmpl new file mode 100644 index 000000000..da7cbab0e --- /dev/null +++ b/hcl2template/function/testdata/bare.tmpl @@ -0,0 +1 @@ +${val} \ No newline at end of file diff --git a/hcl2template/function/testdata/func.tmpl b/hcl2template/function/testdata/func.tmpl new file mode 100644 index 000000000..33a240000 --- /dev/null +++ b/hcl2template/function/testdata/func.tmpl @@ -0,0 +1 @@ +The items are ${join(", ", list)} \ No newline at end of file diff --git a/hcl2template/function/testdata/hello.tmpl b/hcl2template/function/testdata/hello.tmpl new file mode 100644 index 000000000..f112ef899 --- /dev/null +++ b/hcl2template/function/testdata/hello.tmpl @@ -0,0 +1 @@ +Hello, ${name}! \ No newline at end of file diff --git a/hcl2template/function/testdata/hello.txt b/hcl2template/function/testdata/hello.txt new file mode 100644 index 000000000..5e1c309da --- /dev/null +++ b/hcl2template/function/testdata/hello.txt @@ -0,0 +1 @@ +Hello World \ No newline at end of file diff --git a/hcl2template/function/testdata/icon.png b/hcl2template/function/testdata/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a474f146faee923bb5a874fd6cb0809bba8ce59a GIT binary patch literal 806 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>332`Z|9_0%)40GV zF@DcL$p2}y=Ubpitp8&MhX0*{}xJ`pM2qX`E&9==A3uc!ft=>%4P5WGfl)`YxdpUI{lIg0_&Wz#k($7 zo&cJ_nB?v5!qCAg>jC6&7I;J!GcYhO1YyQK)BiRD1=&kHeO=ifvakvX@QeBStOg1- zdAc};NL;QxcT((NfB?${rwKETE4ZAQSGn%{|9Us~VioSaFN4bimpAx`ojh&%(@E&W zqSu)kdmEp2XmPe^t!kl{4g!gau6mWI#P8nbu~o$zed z!)MFH-|^qqZ7b-_%*MZSy$pMx77{OkBH{Opb3j`*jCb%3r>Epd$~Nl7e8 zwMs5Z1yT$~28QOk1}3@&rXhwFR)%I)hNjvEMpgy}o2Q))MbVI(pOTqYiCe>=)5R}= z8YDqB1m~xflqVLYGL)B>>t*I;7bhncr0V4trO$q6BL!5%4N?@6S(1~=;9itpS};vs zsRt+=UKJ8i5|mi3P*9YgmYI{PP*Pcts*qVwlFYzRG3W6o9*)8=4UJR&r_Xpk4Pszc z=GIH*7FHJao-D#Ftl-jMayW%qd2@)u=^Iy09657D<_P=g29E_^dJM0`1xr3TnN9^- O!QkoY=d#Wzp$P!sd@q*( literal 0 HcmV?d00001 diff --git a/hcl2template/function/testdata/list.tmpl b/hcl2template/function/testdata/list.tmpl new file mode 100644 index 000000000..da8f4749e --- /dev/null +++ b/hcl2template/function/testdata/list.tmpl @@ -0,0 +1,3 @@ +%{ for x in list ~} +- ${x} +%{ endfor ~} diff --git a/hcl2template/function/testdata/recursive.tmpl b/hcl2template/function/testdata/recursive.tmpl new file mode 100644 index 000000000..f121b604e --- /dev/null +++ b/hcl2template/function/testdata/recursive.tmpl @@ -0,0 +1 @@ +${templatefile("recursive.tmpl", {})} \ No newline at end of file diff --git a/hcl2template/functions.go b/hcl2template/functions.go index fdd900ee4..3ac79cfec 100644 --- a/hcl2template/functions.go +++ b/hcl2template/functions.go @@ -118,6 +118,12 @@ func Functions(basedir string) map[string]function.Function { "zipmap": stdlib.ZipmapFunc, } + funcs["templatefile"] = pkrfunction.MakeTemplateFileFunc(basedir, func() map[string]function.Function { + // The templatefile function prevents recursive calls to itself + // by copying this map and overwriting the "templatefile" entry. + return funcs + }) + return funcs } diff --git a/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx b/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx index 8acb0565a..9d7ae7207 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx @@ -32,4 +32,5 @@ fileexists("custom-section.sh") ? file("custom-section.sh") : local.default_cont ## Related Functions -- [`file`](/docs/templates/hcl_templates/functions/file) reads the contents of a file at a given path +- [`file`](/docs/templates/hcl_templates/functions/file/file) reads the contents + of a file at a given path. diff --git a/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx b/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx new file mode 100644 index 000000000..7d07133bd --- /dev/null +++ b/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx @@ -0,0 +1,133 @@ +--- +page_title: templatefile - Functions - Configuration Language +sidebar_title: templatefile +description: |- + The templatefile function reads the file at the given path and renders its + content as a template using a supplied set of template variables. +--- + +# `templatefile` Function + +-> *Recommendation:* we recommend using the `.pkrtpl.hcl` file extension when +using the `templatefile` function. Template files *are* hcl treated as files but +also templates and therefore have slightly different set of features +than the ones offered in a `.pkr.hcl` Packer template. While you are not +required to use this extension, doing so will enable syntax highlighters to +properly understand your file. + +`templatefile` reads the file at the given path and renders its content as a +template using a supplied set of template variables. + +```hcl +templatefile(path, vars) +``` + +The template syntax is the same as for string templates in the main HCL2 +language, including interpolation sequences delimited with `${ ... }`. This +function just allows longer template sequences to be factored out into a +separate file for readability. + +The "vars" argument must be a map. Within the template file, each of the keys in +the map is available as a variable for interpolation. The template may also use +any other function available in Packer, except that recursive calls to +templatefile are not permitted. Variable names must each start with a letter, +followed by zero or more letters, digits, or underscores. + +Strings in HCL2 are sequences of Unicode characters, so this function will +interpret the file contents as UTF-8 encoded text and return the resulting +Unicode characters. If the file contains invalid UTF-8 sequences then this +function will produce an error. + +This function can be used only with files that already exist on disk at the +beginning of a run. + +## Examples + +### Lists + +Given a template file backends.tpl with the following content: + +```hcl +%{ for addr in ip_addrs ~} +backend ${addr}:${port} +%{ endfor ~} +``` +The templatefile function renders the template: + +```shell-session +> templatefile("${path.root}/backends.tmpl", { port = 8080, ip_addrs = ["10.0.0.1", "10.0.0.2"] }) +backend 10.0.0.1:8080 +backend 10.0.0.2:8080 +``` + +### Maps + +Given a template file config.tmpl with the following content: +```hcl +%{ for config_key, config_value in config } +set ${config_key} = ${config_value} +%{ endfor ~} +``` +The templatefile function renders the template: +```shell-session +> templatefile( + "${path.root}/config.tmpl", + { + config = { + "x" = "y" + "foo" = "bar" + "key" = "value" + } + } + ) +set foo = bar +set key = value +set x = y +``` + +### Generating JSON or YAML from a template + +If the string you want to generate will be in JSON or YAML syntax, it's often +tricky and tedious to write a template that will generate valid JSON or YAML +that will be interpreted correctly when using lots of individual interpolation +sequences and directives. + +Instead, you can write a template that consists only of a single interpolated +call to either jsonencode or yamlencode, specifying the value to encode using +normal expression syntax as in the following examples: + +```hcl +${jsonencode({ + "backends": [for addr in ip_addrs : "${addr}:${port}"], +})} +${yamlencode({ + "backends": [for addr in ip_addrs : "${addr}:${port}"], +})} +``` + +Given the same input as the `backends.tmpl` example in the previous section, +this will produce a valid JSON or YAML representation of the given data +structure, without the need to manually handle escaping or delimiters. In the +latest examples above, the repetition based on elements of ip_addrs is achieved +by using a for expression rather than by using template directives. + +``` +{"backends":["10.0.0.1:8080","10.0.0.2:8080"]} +``` +If the resulting template is small, you can choose instead to write jsonencode or yamlencode calls inline in your main configuration files, and avoid creating separate template files at all: + +locals { + backend_config_json = jsonencode({ + "backends": [for addr in ip_addrs : "${addr}:${port}"], + }) +} +For more information, see the main documentation for jsonencode and yamlencode. + +» + +## Related Functions + +- [`file`](/docs/templates/hcl_templates/functions/file/file) reads the contents + of a file at a given path. +- [`fileexists`](/docs/templates/hcl_templates/functions/file/fileexists) + determines whether a file exists at a given path. diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index f4a652250..ada4ff3c0 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -449,6 +449,10 @@ { "title": "pathexpand", "path": "templates/hcl_templates/functions/file/pathexpand" + }, + { + "title": "templatefile", + "path": "templates/hcl_templates/functions/file/templatefile" } ] }, diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js index a65fd5c5a..118101f7c 100644 --- a/website/data/docs-navigation.js +++ b/website/data/docs-navigation.js @@ -137,6 +137,7 @@ export default [ 'fileexists', 'fileset', 'pathexpand', + 'templatefile', ], }, { From 7732f7998c89c2921708ad0bbed1644ebdbfb088 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Tue, 23 Mar 2021 12:31:13 +0100 Subject: [PATCH 162/212] Add http_content func to serve variables from HTTP @ preseed (#10801) This imports hashicorp/packer-plugin-sdk#43 * code generate things * update docs * update guides * update examples We want to add a new guide. --- builder/cloudstack/builder.go | 7 +- builder/cloudstack/config.hcl2spec.go | 2 + builder/hyperv/iso/builder.go | 7 +- builder/hyperv/iso/builder.hcl2spec.go | 2 + builder/hyperv/vmcx/builder.go | 7 +- builder/hyperv/vmcx/builder.hcl2spec.go | 2 + builder/parallels/iso/builder.go | 7 +- builder/parallels/iso/builder.hcl2spec.go | 2 + builder/proxmox/clone/config.hcl2spec.go | 2 + builder/proxmox/common/builder.go | 7 +- builder/proxmox/common/config.hcl2spec.go | 2 + builder/proxmox/iso/config.hcl2spec.go | 2 + builder/qemu/builder.go | 7 +- builder/qemu/config.hcl2spec.go | 2 + builder/qemu/step_run.go | 2 + builder/vagrant/builder.hcl2spec.go | 2 + builder/virtualbox/iso/builder.go | 7 +- builder/virtualbox/iso/builder.hcl2spec.go | 2 + builder/virtualbox/ovf/builder.go | 7 +- builder/virtualbox/ovf/config.hcl2spec.go | 2 + builder/virtualbox/vm/builder.go | 7 +- builder/virtualbox/vm/config.hcl2spec.go | 2 + builder/vmware/iso/builder.go | 7 +- builder/vmware/iso/config.hcl2spec.go | 2 + builder/vmware/vmx/builder.go | 7 +- builder/vmware/vmx/config.hcl2spec.go | 2 + builder/vsphere/clone/builder.go | 7 +- builder/vsphere/clone/config.hcl2spec.go | 2 + builder/vsphere/iso/builder.go | 7 +- builder/vsphere/iso/config.hcl2spec.go | 2 + command/hcl2_upgrade.go | 1 + .../hcl/linux/source.parallels-iso.pkr.hcl | 2 +- .../hcl/linux/source.virtualbox-iso.pkr.hcl | 2 +- examples/hcl/linux/variables.18.04.pkr.hcl | 4 +- examples/hcl/linux/variables.common.pkr.hcl | 6 ++ go.mod | 2 +- go.sum | 4 +- .../didyoumean/name_suggestion.go | 24 ++++++ .../multistep/commonsteps/http_config.go | 14 ++++ .../multistep/commonsteps/step_http_server.go | 81 +++++++++++++++++-- .../packer-plugin-sdk/template/funcs.go | 5 +- .../packer-plugin-sdk/version/version.go | 4 +- vendor/modules.txt | 3 +- website/content/docs/builders/cloudstack.mdx | 15 ---- .../content/docs/builders/parallels/iso.mdx | 22 ++--- website/content/docs/provisioners/file.mdx | 15 ++-- .../preseed_ubuntu.mdx | 8 +- .../partials/builders/boot-command.mdx | 4 +- .../commonsteps/HTTPConfig-not-required.mdx | 9 +++ 49 files changed, 212 insertions(+), 138 deletions(-) create mode 100644 vendor/github.com/hashicorp/packer-plugin-sdk/didyoumean/name_suggestion.go diff --git a/builder/cloudstack/builder.go b/builder/cloudstack/builder.go index 53d71a901..08f9ebeda 100644 --- a/builder/cloudstack/builder.go +++ b/builder/cloudstack/builder.go @@ -60,12 +60,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) // Build the steps. steps := []multistep.Step{ &stepPrepareConfig{}, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &stepKeypair{ Debug: b.config.PackerDebug, Comm: &b.config.Comm, diff --git a/builder/cloudstack/config.hcl2spec.go b/builder/cloudstack/config.hcl2spec.go index 171a7dffa..638223c4c 100644 --- a/builder/cloudstack/config.hcl2spec.go +++ b/builder/cloudstack/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -135,6 +136,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/hyperv/iso/builder.go b/builder/hyperv/iso/builder.go index d99de8c15..c87e89271 100644 --- a/builder/hyperv/iso/builder.go +++ b/builder/hyperv/iso/builder.go @@ -211,12 +211,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) Directories: b.config.FloppyConfig.FloppyDirectories, Label: b.config.FloppyConfig.FloppyLabel, }, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &hypervcommon.StepCreateSwitch{ SwitchName: b.config.SwitchName, }, diff --git a/builder/hyperv/iso/builder.hcl2spec.go b/builder/hyperv/iso/builder.hcl2spec.go index afc83c364..b2b74f892 100644 --- a/builder/hyperv/iso/builder.hcl2spec.go +++ b/builder/hyperv/iso/builder.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -141,6 +142,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/hyperv/vmcx/builder.go b/builder/hyperv/vmcx/builder.go index 319bff68b..b2c06b4ee 100644 --- a/builder/hyperv/vmcx/builder.go +++ b/builder/hyperv/vmcx/builder.go @@ -251,12 +251,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) Directories: b.config.FloppyConfig.FloppyDirectories, Label: b.config.FloppyConfig.FloppyLabel, }, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &hypervcommon.StepCreateSwitch{ SwitchName: b.config.SwitchName, }, diff --git a/builder/hyperv/vmcx/builder.hcl2spec.go b/builder/hyperv/vmcx/builder.hcl2spec.go index 2b827e8c2..b24a8c663 100644 --- a/builder/hyperv/vmcx/builder.hcl2spec.go +++ b/builder/hyperv/vmcx/builder.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -143,6 +144,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/parallels/iso/builder.go b/builder/parallels/iso/builder.go index 356ccec76..a5d99b272 100644 --- a/builder/parallels/iso/builder.go +++ b/builder/parallels/iso/builder.go @@ -209,12 +209,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) Directories: b.config.FloppyConfig.FloppyDirectories, Label: b.config.FloppyConfig.FloppyLabel, }, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), new(stepCreateVM), new(stepCreateDisk), new(stepSetBootOrder), diff --git a/builder/parallels/iso/builder.hcl2spec.go b/builder/parallels/iso/builder.hcl2spec.go index 9ab62b8c3..b4d20dc72 100644 --- a/builder/parallels/iso/builder.hcl2spec.go +++ b/builder/parallels/iso/builder.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -126,6 +127,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/proxmox/clone/config.hcl2spec.go b/builder/proxmox/clone/config.hcl2spec.go index 32b6e64f3..5ea7b18c2 100644 --- a/builder/proxmox/clone/config.hcl2spec.go +++ b/builder/proxmox/clone/config.hcl2spec.go @@ -20,6 +20,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -130,6 +131,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/proxmox/common/builder.go b/builder/proxmox/common/builder.go index 0d4391afd..9a9e9585b 100644 --- a/builder/proxmox/common/builder.go +++ b/builder/proxmox/common/builder.go @@ -52,12 +52,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook, &stepStartVM{ vmCreator: b.vmCreator, }, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &stepTypeBootCommand{ BootConfig: b.config.BootConfig, Ctx: b.config.Ctx, diff --git a/builder/proxmox/common/config.hcl2spec.go b/builder/proxmox/common/config.hcl2spec.go index f6d11221c..95ba40895 100644 --- a/builder/proxmox/common/config.hcl2spec.go +++ b/builder/proxmox/common/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -127,6 +128,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/proxmox/iso/config.hcl2spec.go b/builder/proxmox/iso/config.hcl2spec.go index 88aa679bb..24650d35e 100644 --- a/builder/proxmox/iso/config.hcl2spec.go +++ b/builder/proxmox/iso/config.hcl2spec.go @@ -20,6 +20,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -136,6 +137,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/qemu/builder.go b/builder/qemu/builder.go index 5bbc5268d..c9e63a312 100644 --- a/builder/qemu/builder.go +++ b/builder/qemu/builder.go @@ -96,12 +96,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) QemuImgArgs: b.config.QemuImgArgs, }, new(stepHTTPIPDiscover), - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &stepPortForward{ CommunicatorType: b.config.CommConfig.Comm.Type, NetBridge: b.config.NetBridge, diff --git a/builder/qemu/config.hcl2spec.go b/builder/qemu/config.hcl2spec.go index dc141cd7d..dc331e20c 100644 --- a/builder/qemu/config.hcl2spec.go +++ b/builder/qemu/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -153,6 +154,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/qemu/step_run.go b/builder/qemu/step_run.go index be802348b..37239396f 100644 --- a/builder/qemu/step_run.go +++ b/builder/qemu/step_run.go @@ -298,6 +298,7 @@ func (s *stepRun) applyUserOverrides(defaultArgs map[string]interface{}, config HTTPIP string HTTPPort int HTTPDir string + HTTPContent map[string]string OutputDir string Name string SSHHostPort int @@ -308,6 +309,7 @@ func (s *stepRun) applyUserOverrides(defaultArgs map[string]interface{}, config HTTPIP: httpIp, HTTPPort: httpPort, HTTPDir: config.HTTPDir, + HTTPContent: config.HTTPContent, OutputDir: config.OutputDir, Name: config.VMName, SSHHostPort: commHostPort, diff --git a/builder/vagrant/builder.hcl2spec.go b/builder/vagrant/builder.hcl2spec.go index e815fa016..09f5d7660 100644 --- a/builder/vagrant/builder.hcl2spec.go +++ b/builder/vagrant/builder.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -128,6 +129,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/virtualbox/iso/builder.go b/builder/virtualbox/iso/builder.go index 4421a122c..f8adc5801 100644 --- a/builder/virtualbox/iso/builder.go +++ b/builder/virtualbox/iso/builder.go @@ -406,12 +406,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) Label: b.config.CDConfig.CDLabel, }, new(vboxcommon.StepHTTPIPDiscover), - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &vboxcommon.StepSshKeyPair{ Debug: b.config.PackerDebug, DebugKeyPath: fmt.Sprintf("%s.pem", b.config.PackerBuildName), diff --git a/builder/virtualbox/iso/builder.hcl2spec.go b/builder/virtualbox/iso/builder.hcl2spec.go index ca02f022e..c44c81ca8 100644 --- a/builder/virtualbox/iso/builder.hcl2spec.go +++ b/builder/virtualbox/iso/builder.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -162,6 +163,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/virtualbox/ovf/builder.go b/builder/virtualbox/ovf/builder.go index fb0a53965..7dd1de56c 100644 --- a/builder/virtualbox/ovf/builder.go +++ b/builder/virtualbox/ovf/builder.go @@ -65,12 +65,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) Label: b.config.CDConfig.CDLabel, }, new(vboxcommon.StepHTTPIPDiscover), - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &vboxcommon.StepSshKeyPair{ Debug: b.config.PackerDebug, DebugKeyPath: fmt.Sprintf("%s.pem", b.config.PackerBuildName), diff --git a/builder/virtualbox/ovf/config.hcl2spec.go b/builder/virtualbox/ovf/config.hcl2spec.go index 845b27f24..1129ae208 100644 --- a/builder/virtualbox/ovf/config.hcl2spec.go +++ b/builder/virtualbox/ovf/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -138,6 +139,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/virtualbox/vm/builder.go b/builder/virtualbox/vm/builder.go index b762e65f7..04be971a3 100644 --- a/builder/virtualbox/vm/builder.go +++ b/builder/virtualbox/vm/builder.go @@ -64,12 +64,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) KeepRegistered: b.config.KeepRegistered, }, new(vboxcommon.StepHTTPIPDiscover), - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &vboxcommon.StepDownloadGuestAdditions{ GuestAdditionsMode: b.config.GuestAdditionsMode, GuestAdditionsURL: b.config.GuestAdditionsURL, diff --git a/builder/virtualbox/vm/config.hcl2spec.go b/builder/virtualbox/vm/config.hcl2spec.go index e672cd48b..9ac76a4f4 100644 --- a/builder/virtualbox/vm/config.hcl2spec.go +++ b/builder/virtualbox/vm/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -136,6 +137,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/vmware/iso/builder.go b/builder/vmware/iso/builder.go index 9ef6f6569..7b712356c 100644 --- a/builder/vmware/iso/builder.go +++ b/builder/vmware/iso/builder.go @@ -117,12 +117,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &vmwcommon.StepSuppressMessages{}, &vmwcommon.StepHTTPIPDiscover{}, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &vmwcommon.StepConfigureVNC{ Enabled: !b.config.DisableVNC && !b.config.VNCOverWebsocket, VNCBindAddress: b.config.VNCBindAddress, diff --git a/builder/vmware/iso/config.hcl2spec.go b/builder/vmware/iso/config.hcl2spec.go index 724157428..9ee645c8a 100644 --- a/builder/vmware/iso/config.hcl2spec.go +++ b/builder/vmware/iso/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -167,6 +168,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/vmware/vmx/builder.go b/builder/vmware/vmx/builder.go index dbf8b1b58..b8ec91906 100644 --- a/builder/vmware/vmx/builder.go +++ b/builder/vmware/vmx/builder.go @@ -108,12 +108,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) }, &vmwcommon.StepSuppressMessages{}, &vmwcommon.StepHTTPIPDiscover{}, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &vmwcommon.StepUploadVMX{ RemoteType: b.config.RemoteType, }, diff --git a/builder/vmware/vmx/config.hcl2spec.go b/builder/vmware/vmx/config.hcl2spec.go index 0af743f1a..f18765929 100644 --- a/builder/vmware/vmx/config.hcl2spec.go +++ b/builder/vmware/vmx/config.hcl2spec.go @@ -19,6 +19,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -149,6 +150,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/vsphere/clone/builder.go b/builder/vsphere/clone/builder.go index 169f6b5f5..d9c34bab9 100644 --- a/builder/vsphere/clone/builder.go +++ b/builder/vsphere/clone/builder.go @@ -89,12 +89,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) HTTPIP: b.config.BootConfig.HTTPIP, Network: b.config.WaitIpConfig.GetIPNet(), }, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &common.StepSshKeyPair{ Debug: b.config.PackerDebug, DebugKeyPath: fmt.Sprintf("%s.pem", b.config.PackerBuildName), diff --git a/builder/vsphere/clone/config.hcl2spec.go b/builder/vsphere/clone/config.hcl2spec.go index 790eeb7ae..ad7787e7e 100644 --- a/builder/vsphere/clone/config.hcl2spec.go +++ b/builder/vsphere/clone/config.hcl2spec.go @@ -20,6 +20,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -159,6 +160,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/builder/vsphere/iso/builder.go b/builder/vsphere/iso/builder.go index 567046fa2..f975bad84 100644 --- a/builder/vsphere/iso/builder.go +++ b/builder/vsphere/iso/builder.go @@ -92,12 +92,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) HTTPIP: b.config.BootConfig.HTTPIP, Network: b.config.WaitIpConfig.GetIPNet(), }, - &commonsteps.StepHTTPServer{ - HTTPDir: b.config.HTTPDir, - HTTPPortMin: b.config.HTTPPortMin, - HTTPPortMax: b.config.HTTPPortMax, - HTTPAddress: b.config.HTTPAddress, - }, + commonsteps.HTTPServerFromHTTPConfig(&b.config.HTTPConfig), &common.StepRun{ Config: &b.config.RunConfig, SetOrder: true, diff --git a/builder/vsphere/iso/config.hcl2spec.go b/builder/vsphere/iso/config.hcl2spec.go index dea92fa94..ee8298e49 100644 --- a/builder/vsphere/iso/config.hcl2spec.go +++ b/builder/vsphere/iso/config.hcl2spec.go @@ -20,6 +20,7 @@ type FlatConfig struct { PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` HTTPDir *string `mapstructure:"http_directory" cty:"http_directory" hcl:"http_directory"` + HTTPContent map[string]string `mapstructure:"http_content" cty:"http_content" hcl:"http_content"` HTTPPortMin *int `mapstructure:"http_port_min" cty:"http_port_min" hcl:"http_port_min"` HTTPPortMax *int `mapstructure:"http_port_max" cty:"http_port_max" hcl:"http_port_max"` HTTPAddress *string `mapstructure:"http_bind_address" cty:"http_bind_address" hcl:"http_bind_address"` @@ -161,6 +162,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, "http_directory": &hcldec.AttrSpec{Name: "http_directory", Type: cty.String, Required: false}, + "http_content": &hcldec.AttrSpec{Name: "http_content", Type: cty.Map(cty.String), Required: false}, "http_port_min": &hcldec.AttrSpec{Name: "http_port_min", Type: cty.Number, Required: false}, "http_port_max": &hcldec.AttrSpec{Name: "http_port_max", Type: cty.Number, Required: false}, "http_bind_address": &hcldec.AttrSpec{Name: "http_bind_address", Type: cty.String, Required: false}, diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 5273e3996..cd70b62ba 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -1216,6 +1216,7 @@ var PASSTHROUGHS = map[string]string{"NVME_Present": "{{ .NVME_Present }}", "WinRMPassword": "{{ .WinRMPassword }}", "DefaultOrganizationID": "{{ .DefaultOrganizationID }}", "HTTPDir": "{{ .HTTPDir }}", + "HTTPContent": "{{ .HTTPContent }}", "SegmentPath": "{{ .SegmentPath }}", "NewVHDSizeBytes": "{{ .NewVHDSizeBytes }}", "CTyp": "{{ .CTyp }}", diff --git a/examples/hcl/linux/source.parallels-iso.pkr.hcl b/examples/hcl/linux/source.parallels-iso.pkr.hcl index e95b467d0..7f2c1a71a 100644 --- a/examples/hcl/linux/source.parallels-iso.pkr.hcl +++ b/examples/hcl/linux/source.parallels-iso.pkr.hcl @@ -2,7 +2,7 @@ source "parallels-iso" "base-ubuntu-amd64" { boot_wait = "10s" guest_os_type = "ubuntu" - http_directory = local.http_directory + http_content = local.http_directory_content parallels_tools_flavor = "lin" prlctl_version_file = ".prlctl_version" shutdown_command = "echo 'vagrant' | sudo -S shutdown -P now" diff --git a/examples/hcl/linux/source.virtualbox-iso.pkr.hcl b/examples/hcl/linux/source.virtualbox-iso.pkr.hcl index 0d8011e4c..5cd5f1a89 100644 --- a/examples/hcl/linux/source.virtualbox-iso.pkr.hcl +++ b/examples/hcl/linux/source.virtualbox-iso.pkr.hcl @@ -1,7 +1,7 @@ source "virtualbox-iso" "base-ubuntu-amd64" { headless = var.headless guest_os_type = "Ubuntu_64" - http_directory = local.http_directory + http_content = local.http_directory_content shutdown_command = "echo 'vagrant' | sudo -S shutdown -P now" ssh_username = "vagrant" ssh_password = "vagrant" diff --git a/examples/hcl/linux/variables.18.04.pkr.hcl b/examples/hcl/linux/variables.18.04.pkr.hcl index 76c9d48c0..abdbc8ea4 100644 --- a/examples/hcl/linux/variables.18.04.pkr.hcl +++ b/examples/hcl/linux/variables.18.04.pkr.hcl @@ -1,9 +1,9 @@ variable "ubuntu_1804_version" { - default = "18.04.4" + default = "18.04.5" } locals { - iso_url_ubuntu_1804 = "http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ubuntu-18.04.4-server-amd64.iso" + iso_url_ubuntu_1804 = "http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/ubuntu-${var.ubuntu_1804_version}-server-amd64.iso" iso_checksum_url_ubuntu_1804 = "http://cdimage.ubuntu.com/ubuntu/releases/18.04/release/SHA256SUMS" ubuntu_1804_boot_command = [ "", diff --git a/examples/hcl/linux/variables.common.pkr.hcl b/examples/hcl/linux/variables.common.pkr.hcl index 19231c04d..01a178945 100644 --- a/examples/hcl/linux/variables.common.pkr.hcl +++ b/examples/hcl/linux/variables.common.pkr.hcl @@ -20,4 +20,10 @@ locals { // value. This validates that the http directory exists even before starting // any builder/provisioner. http_directory = dirname(convert(fileset(".", "etc/http/*"), list(string))[0]) + http_directory_content = { + "/alpine-answers" = file("${local.http_directory}/alpine-answers"), + "/alpine-setup.sh" = file("${local.http_directory}/alpine-setup.sh"), + "/preseed_hardcoded_ip.cfg" = file("${local.http_directory}/preseed_hardcoded_ip.cfg"), + "/preseed.cfg" = file("${local.http_directory}/preseed.cfg"), + } } diff --git a/go.mod b/go.mod index e8950e8bc..415c54661 100644 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( github.com/hashicorp/go-version v1.2.0 github.com/hashicorp/hcl/v2 v2.8.0 github.com/hashicorp/packer-plugin-docker v0.0.2 - github.com/hashicorp/packer-plugin-sdk v0.0.14 + github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 github.com/hashicorp/vault/api v1.0.4 github.com/hetznercloud/hcloud-go v1.15.1 github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 diff --git a/go.sum b/go.sum index d67880e44..6452de5bd 100644 --- a/go.sum +++ b/go.sum @@ -394,6 +394,7 @@ github.com/hashicorp/packer v1.6.7-0.20210125170305-539638b0f951/go.mod h1:Z3eun github.com/hashicorp/packer v1.6.7-0.20210126105722-aef4ced967ec/go.mod h1:2+Vo/c/fA+TD9yFc/h9jQMFm4yG+IymQIr0OdJJOPiE= github.com/hashicorp/packer v1.6.7-0.20210208125835-f616955ebcb6/go.mod h1:7f5ZpTTRG53rQ58BcTADuTnpiBcB3wapuxl4sF2sGMM= github.com/hashicorp/packer v1.6.7-0.20210217093213-201869d627bf/go.mod h1:+EWPPcqee4h8S/y913Dnta1eJkgiqsGXBQgB75A2qV0= +github.com/hashicorp/packer v1.7.0/go.mod h1:3KRJcwOctl2JaAGpQMI1bWQRArfWNWqcYjO6AOsVVGQ= github.com/hashicorp/packer-plugin-docker v0.0.2 h1:j/hQTogaN2pZfZohlZTRu5YvNZg2/qtYYHkxPBxv2Oo= github.com/hashicorp/packer-plugin-docker v0.0.2/go.mod h1:A2p9qztS4n88KsNF+qBM7BWw2HndW636GpFIjNSvbKM= github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= @@ -403,8 +404,9 @@ github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210122130548-45a6ca0a9365/go.m github.com/hashicorp/packer-plugin-sdk v0.0.10-0.20210126105622-8e1648006d93/go.mod h1:AtWQLNfpn7cgH2SmZ1PTedwqNOhiPvzcuKfH5sDvIQ0= github.com/hashicorp/packer-plugin-sdk v0.0.11/go.mod h1:GNb0WNs7zibb8vzUZce1As64z2AW0FEMwhe2J7/NW5I= github.com/hashicorp/packer-plugin-sdk v0.0.12/go.mod h1:hs82OYeufirGG6KRENMpjBWomnIlte99X6wXAPThJ5I= -github.com/hashicorp/packer-plugin-sdk v0.0.14 h1:42WOZLmIbAYYC1WXxtlrQZN+fFdysVvTmj3jtoI6gOU= github.com/hashicorp/packer-plugin-sdk v0.0.14/go.mod h1:tNb3XzJPnjMl3QuUdKmF47B5ImerdTakalHzUAvW0aw= +github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 h1:nw4RqF7C4jUWGo5PGDG4dSclU+G/vXyVBHIu5j7akd4= +github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0/go.mod h1:1d3nqB9LUsXMQaNUiL67Q+WYEtjsVcLNTX8ikVlpBrc= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0= github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/didyoumean/name_suggestion.go b/vendor/github.com/hashicorp/packer-plugin-sdk/didyoumean/name_suggestion.go new file mode 100644 index 000000000..333811fc4 --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/didyoumean/name_suggestion.go @@ -0,0 +1,24 @@ +package didyoumean + +import ( + "github.com/agext/levenshtein" +) + +// NameSuggestion tries to find a name from the given slice of suggested names +// that is close to the given name and returns it if found. If no suggestion is +// close enough, returns the empty string. +// +// The suggestions are tried in order, so earlier suggestions take precedence if +// the given string is similar to two or more suggestions. +// +// This function is intended to be used with a relatively-small number of +// suggestions. It's not optimized for hundreds or thousands of them. +func NameSuggestion(given string, suggestions []string) string { + for _, suggestion := range suggestions { + dist := levenshtein.Distance(given, suggestion, nil) + if dist < 3 { // threshold determined experimentally + return suggestion + } + } + return "" +} diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/http_config.go b/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/http_config.go index 8a85accfd..cf20965d0 100644 --- a/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/http_config.go +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/http_config.go @@ -23,6 +23,15 @@ type HTTPConfig struct { // started. The address and port of the HTTP server will be available as // variables in `boot_command`. This is covered in more detail below. HTTPDir string `mapstructure:"http_directory"` + // Key/Values to serve using an HTTP server. http_content works like and + // conflicts with http_directory The keys represent the paths and the values + // contents. This is useful for hosting kickstart files and so on. By + // default this is empty, which means no HTTP server will be started. The + // address and port of the HTTP server will be available as variables in + // `boot_command`. This is covered in more detail below. Example: Setting + // `"foo/bar"="baz"`, will allow you to http get on + // `http://{http_ip}:{http_port}/foo/bar`. + HTTPContent map[string]string `mapstructure:"http_content"` // These are the minimum and maximum port to use for the HTTP server // started to serve the `http_directory`. Because Packer often runs in // parallel, Packer will choose a randomly available port in this range to @@ -66,5 +75,10 @@ func (c *HTTPConfig) Prepare(ctx *interpolate.Context) []error { errors.New("http_port_min must be less than http_port_max")) } + if len(c.HTTPContent) > 0 && len(c.HTTPDir) > 0 { + errs = append(errs, + errors.New("http_content cannot be used in conjunction with http_dir. Consider using the file function to load file in memory and serve them with http_content: https://www.packer.io/docs/templates/hcl_templates/functions/file/file")) + } + return errs } diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/step_http_server.go b/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/step_http_server.go index 42a3f5d4f..3b4f7dc5b 100644 --- a/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/step_http_server.go +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/multistep/commonsteps/step_http_server.go @@ -3,14 +3,28 @@ package commonsteps import ( "context" "fmt" - + "log" "net/http" + "os" + "path" + "sort" + "github.com/hashicorp/packer-plugin-sdk/didyoumean" "github.com/hashicorp/packer-plugin-sdk/multistep" "github.com/hashicorp/packer-plugin-sdk/net" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" ) +func HTTPServerFromHTTPConfig(cfg *HTTPConfig) *StepHTTPServer { + return &StepHTTPServer{ + HTTPDir: cfg.HTTPDir, + HTTPContent: cfg.HTTPContent, + HTTPPortMin: cfg.HTTPPortMin, + HTTPPortMax: cfg.HTTPPortMax, + HTTPAddress: cfg.HTTPAddress, + } +} + // This step creates and runs the HTTP server that is serving files from the // directory specified by the 'http_directory` configuration parameter in the // template. @@ -22,6 +36,7 @@ import ( // http_port int - The port the HTTP server started on. type StepHTTPServer struct { HTTPDir string + HTTPContent map[string]string HTTPPortMin int HTTPPortMax int HTTPAddress string @@ -29,16 +44,58 @@ type StepHTTPServer struct { l *net.Listener } +func (s *StepHTTPServer) Handler() http.Handler { + if s.HTTPDir != "" { + return http.FileServer(http.Dir(s.HTTPDir)) + } + + return MapServer(s.HTTPContent) +} + +type MapServer map[string]string + +func (s MapServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { + path := path.Clean(r.URL.Path) + content, found := s[path] + if !found { + paths := make([]string, 0, len(s)) + for k := range s { + paths = append(paths, k) + } + sort.Strings(paths) + err := fmt.Sprintf("%s not found.", path) + if sug := didyoumean.NameSuggestion(path, paths); sug != "" { + err += fmt.Sprintf(" Did you mean %q?", sug) + } + + http.Error(w, err, http.StatusNotFound) + return + } + + if _, err := w.Write([]byte(content)); err != nil { + // log err in case the file couldn't be 100% transferred for example. + log.Printf("http_content serve error: %v", err) + } +} + func (s *StepHTTPServer) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { ui := state.Get("ui").(packersdk.Ui) - if s.HTTPDir == "" { + if s.HTTPDir == "" && len(s.HTTPContent) == 0 { state.Put("http_port", 0) return multistep.ActionContinue } + if s.HTTPDir != "" { + if _, err := os.Stat(s.HTTPDir); err != nil { + err := fmt.Errorf("Error finding %q: %s", s.HTTPDir, err) + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + } + // Find an available TCP port for our HTTP server - var httpAddr string var err error s.l, err = net.ListenRangeConfig{ Min: s.HTTPPortMin, @@ -57,8 +114,7 @@ func (s *StepHTTPServer) Run(ctx context.Context, state multistep.StateBag) mult ui.Say(fmt.Sprintf("Starting HTTP server on port %d", s.l.Port)) // Start the HTTP server and run it in the background - fileServer := http.FileServer(http.Dir(s.HTTPDir)) - server := &http.Server{Addr: httpAddr, Handler: fileServer} + server := &http.Server{Addr: "", Handler: s.Handler()} go server.Serve(s.l) // Save the address into the state so it can be accessed in the future @@ -67,9 +123,20 @@ func (s *StepHTTPServer) Run(ctx context.Context, state multistep.StateBag) mult return multistep.ActionContinue } -func (s *StepHTTPServer) Cleanup(multistep.StateBag) { +func (s *StepHTTPServer) Cleanup(state multistep.StateBag) { if s.l != nil { + ui := state.Get("ui").(packersdk.Ui) + // Close the listener so that the HTTP server stops - s.l.Close() + if err := s.l.Close(); err != nil { + err = fmt.Errorf("Failed closing http server on port %d: %w", s.l.Port, err) + ui.Error(err.Error()) + // Here this error should be shown to the UI but it won't + // specifically stop Packer from terminating successfully. It could + // cause a "Listen leak" if it happenned a lot. Though Listen will + // try other ports if one is already used. In the case we want to + // Listen on only one port, the next Listen call could fail or be + // longer than expected. + } } } diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/template/funcs.go b/vendor/github.com/hashicorp/packer-plugin-sdk/template/funcs.go index 6a340d1c2..cf1e691dd 100644 --- a/vendor/github.com/hashicorp/packer-plugin-sdk/template/funcs.go +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/template/funcs.go @@ -56,7 +56,10 @@ func Vault(path string, key string) (string, error) { } // neither v1 nor v2 proudced a valid value - return "", fmt.Errorf("Vault data was empty at the given path. Warnings: %s", strings.Join(secret.Warnings, "; ")) + return "", fmt.Errorf("Vault data was empty at the given path. Check "+ + "the Vault function docs for help: "+ + "https://www.packer.io/docs/templates/hcl_templates/functions/contextual/vault. "+ + "Original warnings from Vault call: %s", strings.Join(secret.Warnings, "; ")) } if val, ok := data.(map[string]interface{})[key]; ok { diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go b/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go index 9bb9c33d3..3fdf751cd 100644 --- a/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go @@ -13,12 +13,12 @@ import ( var GitCommit string // Package version helps plugin creators set and track the sdk version using -var Version = "0.0.14" +var Version = "0.1.1" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. -var VersionPrerelease = "" +var VersionPrerelease = "dev" // SDKVersion is used by the plugin set to allow Packer to recognize // what version of the sdk the plugin is. diff --git a/vendor/modules.txt b/vendor/modules.txt index 3836bdf3a..49143ddb0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -428,7 +428,7 @@ github.com/hashicorp/packer-plugin-docker/post-processor/docker-import github.com/hashicorp/packer-plugin-docker/post-processor/docker-push github.com/hashicorp/packer-plugin-docker/post-processor/docker-save github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag -# github.com/hashicorp/packer-plugin-sdk v0.0.14 +# github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 ## explicit github.com/hashicorp/packer-plugin-sdk/acctest github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc @@ -440,6 +440,7 @@ github.com/hashicorp/packer-plugin-sdk/common github.com/hashicorp/packer-plugin-sdk/communicator github.com/hashicorp/packer-plugin-sdk/communicator/ssh github.com/hashicorp/packer-plugin-sdk/communicator/sshkey +github.com/hashicorp/packer-plugin-sdk/didyoumean github.com/hashicorp/packer-plugin-sdk/filelock github.com/hashicorp/packer-plugin-sdk/guestexec github.com/hashicorp/packer-plugin-sdk/hcl2helper diff --git a/website/content/docs/builders/cloudstack.mdx b/website/content/docs/builders/cloudstack.mdx index 149370e23..55e0c74c9 100644 --- a/website/content/docs/builders/cloudstack.mdx +++ b/website/content/docs/builders/cloudstack.mdx @@ -89,25 +89,10 @@ builder. - `expunge` (boolean) - Set to `true` to expunge the instance when it is destroyed. Defaults to `false`. -- `http_directory` (string) - Path to a directory to serve using an HTTP - server. The files in this directory will be available over HTTP that will - be requestable from the virtual machine. This is useful for hosting - kickstart files and so on. By default this is "", which means no HTTP - server will be started. The address and port of the HTTP server will be - available as variables in `user_data`. This is covered in more detail - below. - - `http_get_only` (boolean) - Some cloud providers only allow HTTP GET calls to their CloudStack API. If using such a provider, you need to set this to `true` in order for the provider to only make GET calls and no POST calls. -- `http_port_min` and `http_port_max` (number) - These are the minimum and - maximum port to use for the HTTP server started to serve the - `http_directory`. Because Packer often runs in parallel, Packer will choose - a randomly available port in this range to run the HTTP server. If you want - to force the HTTP server to be on one port, make this minimum and maximum - port the same. By default the values are 8000 and 9000, respectively. - - `hypervisor` (string) - The target hypervisor (e.g. `XenServer`, `KVM`) for the new template. This option is required when using `source_iso`. diff --git a/website/content/docs/builders/parallels/iso.mdx b/website/content/docs/builders/parallels/iso.mdx index b974064cd..fa49e7b91 100644 --- a/website/content/docs/builders/parallels/iso.mdx +++ b/website/content/docs/builders/parallels/iso.mdx @@ -146,20 +146,6 @@ can also be supplied to override the typical auto-generated key: \["en0", "en1", "en2", "en3", "en4", "en5", "en6", "en7", "en8", "en9", "ppp0", "ppp1", "ppp2"\]. -- `http_directory` (string) - Path to a directory to serve using an - HTTP server. The files in this directory will be available over HTTP that - will be requestable from the virtual machine. This is useful for hosting - kickstart files and so on. By default this is "", which means no HTTP server - will be started. The address and port of the HTTP server will be available - as variables in `boot_command`. This is covered in more detail below. - -- `http_port_min` and `http_port_max` (number) - These are the minimum and - maximum port to use for the HTTP server started to serve the - `http_directory`. Because Packer often runs in parallel, Packer will choose - a randomly available port in this range to run the HTTP server. If you want - to force the HTTP server to be on one port, make this minimum and maximum - port the same. By default the values are 8000 and 9000, respectively. - - `memory` (number) - The amount of memory to use for building the VM in megabytes. Defaults to `512` megabytes. @@ -231,6 +217,14 @@ can also be supplied to override the typical auto-generated key: virtual machine, without the file extension. By default this is "packer-BUILDNAME", where "BUILDNAME" is the name of the build. +## Http directory configuration reference + +@include 'packer-plugin-sdk/multistep/commonsteps/HTTPConfig.mdx' + +### Optional: + +@include 'packer-plugin-sdk/multistep/commonsteps/HTTPConfig-not-required.mdx' + ## Boot Command The `boot_command` configuration is very important: it specifies the keys to diff --git a/website/content/docs/provisioners/file.mdx b/website/content/docs/provisioners/file.mdx index e65002898..b2bc1bfe2 100644 --- a/website/content/docs/provisioners/file.mdx +++ b/website/content/docs/provisioners/file.mdx @@ -180,11 +180,10 @@ build { ## Slowness when transferring large files over WinRM. Because of the way our WinRM transfers works, it can take a very long time to -upload and download even moderately sized files. If you're experiencing -slowness using the file provisioner on Windows, it's suggested that you set up -an SSH server and use the [ssh -communicator](/docs/communicators/ssh). If you only -want to transfer files to your guest, and if your builder supports it, you may -also use the `http_directory` directive. This will cause that directory to be -available to the guest over http, and set the environment variable -`PACKER_HTTP_ADDR` to the address. +upload and download even moderately sized files. If you're experiencing slowness +using the file provisioner on Windows, it's suggested that you set up an SSH +server and use the [ssh communicator](/docs/communicators/ssh). If you only want +to transfer files to your guest, and if your builder supports it, you may also +use the `http_directory` or `http_content` directives. This will cause that +directory to be available to the guest over http, and set the environment +variable `PACKER_HTTP_ADDR` to the address. diff --git a/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx b/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx index dbcb3e40a..bb218f4ff 100644 --- a/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx +++ b/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx @@ -41,10 +41,10 @@ comment or uncomment the options as you need them. ## Where to put the preseed file -The `-iso` builders mentioned above all have an `http_dir` option. Any file -inside of your `http_dir` will be served on a local fileserver for your virtual -machine to be able to access. One very common use for this directory is to use -it to provide your preseed file. +The `-iso` builders mentioned above all have an `http_dir` or an `http_content` +option. Any file inside of your `http_dir` or `http_content` will be served on a +local fileserver for your virtual machine to be able to access. One very common +use for this directory is to use it to provide your preseed file. You then reference the file using a `boot_command` to kick off the installation. In the example below, see how the `preseed/url` command line option is being diff --git a/website/content/partials/builders/boot-command.mdx b/website/content/partials/builders/boot-command.mdx index 1cd77193e..625984915 100644 --- a/website/content/partials/builders/boot-command.mdx +++ b/website/content/partials/builders/boot-command.mdx @@ -60,8 +60,8 @@ available variables are: - `HTTPIP` and `HTTPPort` - The IP and port, respectively of an HTTP server that is started serving the directory specified by the `http_directory` - configuration parameter. If `http_directory` isn't specified, these will be - blank! + configuration parameter or the content specified in the `http_content` map. If + `http_directory` or `http_content` isn't specified, these will be blank! - `Name` - The name of the VM. For more examples of various boot commands, see the sample projects from our diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig-not-required.mdx index c8a364003..1d5d59d5c 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig-not-required.mdx @@ -7,6 +7,15 @@ started. The address and port of the HTTP server will be available as variables in `boot_command`. This is covered in more detail below. +- `http_content` (map[string]string) - Key/Values to serve using an HTTP server. http_content works like and + conflicts with http_directory The keys represent the paths and the values + contents. This is useful for hosting kickstart files and so on. By + default this is empty, which means no HTTP server will be started. The + address and port of the HTTP server will be available as variables in + `boot_command`. This is covered in more detail below. Example: Setting + `"foo/bar"="baz"`, will allow you to http get on + `http://{http_ip}:{http_port}/foo/bar`. + - `http_port_min` (int) - These are the minimum and maximum port to use for the HTTP server started to serve the `http_directory`. Because Packer often runs in parallel, Packer will choose a randomly available port in this range to From d0512c6edd07d564357bb72d474477dc2a786d4f Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Mar 2021 14:14:59 -0400 Subject: [PATCH 163/212] docs/amazon: Updated generated docs --- .../builder/amazon/common/AccessConfig-not-required.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx b/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx index c0fee09e1..f002ac703 100644 --- a/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx +++ b/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx @@ -42,7 +42,7 @@ probably don't need it. This will also be read from the AWS_SESSION_TOKEN environmental variable. -- `vault_aws_engine` (VaultAWSEngineOptions) - Get credentials from Hashicorp Vault's aws secrets engine. You must +- `vault_aws_engine` (VaultAWSEngineOptions) - Get credentials from HashiCorp Vault's aws secrets engine. You must already have created a role to use. For more information about generating credentials via the Vault engine, see the [Vault docs.](https://www.vaultproject.io/api/secret/aws#generate-credentials) From 5e17dbeff299df988052d6af4d977b1f1490a58d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Mar 2021 14:39:45 -0400 Subject: [PATCH 164/212] Fix up regex in test --- hcl2template/function/datetime_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hcl2template/function/datetime_test.go b/hcl2template/function/datetime_test.go index 1d90ce53e..fca279e84 100644 --- a/hcl2template/function/datetime_test.go +++ b/hcl2template/function/datetime_test.go @@ -40,7 +40,7 @@ func TestLegacyIsotime_inputs(t *testing.T) { }, { cty.StringVal("Mon Jan 02, 2006"), - `^(Mon|Tues|Wed|Thu|Fri|Sat|Sun){1} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec){1} \d{2}, \d{4}$`, + `^(Mon|Tue|Wed|Thu|Fri|Sat|Sun){1} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec){1} \d{2}, \d{4}$`, }, } From 89931d0f2ac530bd51faea33f771ce649277a161 Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Tue, 23 Mar 2021 16:06:50 -0400 Subject: [PATCH 165/212] website: fixes and tweaks for plugin docs (#10812) * website: sort nested plugin docs files * website: allow ignored .md files in plugin docs folders * website: allow plugin docs/README.md only as extra file * website: fix issue with latest link for plugin docs.zip --- .../utils/fetch-plugin-docs.js | 5 +++- .../utils/resolve-nav-data.js | 27 ++++++++++++++----- .../utils/validate-plugin-docs-files.js | 9 ++++++- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js b/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js index ee4238b3a..d86b725f1 100644 --- a/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js +++ b/website/components/remote-plugin-docs/utils/fetch-plugin-docs.js @@ -13,7 +13,10 @@ const parseDocsZip = require('./parse-docs-zip') // docs files were missing or invalid, with a path to resolution async function fetchDocsFiles({ repo, tag }) { // If there's a docs.zip asset, we'll prefer that - const docsZipUrl = `https://github.com/${repo}/releases/download/${tag}/docs.zip` + const docsZipUrl = + tag === 'latest' + ? `https://github.com/${repo}/releases/latest/download/docs.zip` + : `https://github.com/${repo}/releases/download/${tag}/docs.zip` const docsZipResponse = await fetch(docsZipUrl, { method: 'GET' }) const hasDocsZip = docsZipResponse.status === 200 // Note: early return! diff --git a/website/components/remote-plugin-docs/utils/resolve-nav-data.js b/website/components/remote-plugin-docs/utils/resolve-nav-data.js index d5d21b7e3..f1a65647a 100644 --- a/website/components/remote-plugin-docs/utils/resolve-nav-data.js +++ b/website/components/remote-plugin-docs/utils/resolve-nav-data.js @@ -95,16 +95,19 @@ async function mergeRemotePlugins(remotePluginsFile, navData) { // console.log(JSON.stringify(routesWithPlugins, null, 2)) // Also, sort the child routes so the order is alphabetical routesWithPlugins.sort((a, b) => { + // ensure casing does not affect ordering + const aTitle = a.title.toLowerCase() + const bTitle = b.title.toLowerCase() // (exception: "Overview" comes first) - if (a.title == 'Overview') return -1 - if (b.title === 'Overview') return 1 + if (aTitle === 'overview') return -1 + if (bTitle === 'overview') return 1 // (exception: "Community-Supported" comes last) - if (a.title == 'Community-Supported') return 1 - if (b.title === 'Community-Supported') return -1 + if (aTitle === 'community-supported') return 1 + if (bTitle === 'community-supported') return -1 // (exception: "Custom" comes second-last) - if (a.title == 'Custom') return 1 - if (b.title === 'Custom') return -1 - return a.title < b.title ? -1 : a.title > b.title ? 1 : 0 + if (aTitle === 'custom') return 1 + if (bTitle === 'custom') return -1 + return aTitle < bTitle ? -1 : aTitle > bTitle ? 1 : 0 }) // return n return { ...n, routes: routesWithPlugins } @@ -159,6 +162,16 @@ async function resolvePluginEntryDocs(pluginConfigEntry) { } }) // + navNodes.sort((a, b) => { + // ensure casing does not affect ordering + const aTitle = a.title.toLowerCase() + const bTitle = b.title.toLowerCase() + // (exception: "Overview" comes first) + if (aTitle === 'overview') return -1 + if (bTitle === 'overview') return 1 + return aTitle < bTitle ? -1 : aTitle > bTitle ? 1 : 0 + }) + // const navNodesByComponent = navNodes.reduce((acc, navLeaf) => { const componentType = navLeaf.remoteFile.filePath.split('/')[1] if (!acc[componentType]) acc[componentType] = [] diff --git a/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js b/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js index e846092a9..d2e094919 100644 --- a/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js +++ b/website/components/remote-plugin-docs/utils/validate-plugin-docs-files.js @@ -13,15 +13,22 @@ const COMPONENT_TYPES = [ // with at least one .mdx file within it. function validatePluginDocsFiles(filePaths) { function isValidPath(filePath) { + // Allow the docs root folder const isDocsRoot = filePath === 'docs/' + // Allow component folders const isComponentRoot = COMPONENT_TYPES.reduce((acc, type) => { return acc || filePath === `docs/${type}/` }, false) + // Allow .mdx files in component folders const isComponentMdx = COMPONENT_TYPES.reduce((acc, type) => { const mdxPathRegex = new RegExp(`^docs/${type}/(.*).mdx$`) return acc || mdxPathRegex.test(filePath) }, false) - const isValidPath = isDocsRoot || isComponentRoot || isComponentMdx + // Allow docs/README.md files + const isDocsReadme = filePath == 'docs/README.md' + // Combine all allowed types + const isValidPath = + isDocsRoot || isComponentRoot || isComponentMdx || isDocsReadme return isValidPath } const invalidPaths = filePaths.filter((f) => !isValidPath(f)) From 1d5308062507c3b4469b034c080019fac0722901 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Mar 2021 16:44:21 -0400 Subject: [PATCH 166/212] Update script to exit on immediate failure (#10815) --- scripts/build.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index e16152e6f..337596313 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -126,7 +126,7 @@ if [ -n "${PACKER_DEV+x}" ]; then fi export CGO_ENABLED=0 -set +e + ${GOX:?command not found} \ -os="${XC_OS:-$ALL_XC_OS}" \ -arch="${XC_ARCH:-$ALL_XC_ARCH}" \ @@ -134,7 +134,6 @@ ${GOX:?command not found} \ -ldflags "${GOLDFLAGS}" \ -output "pkg/{{.OS}}_{{.Arch}}/packer" \ . -set -e # trim GOPATH to first element IFS="${PATHSEP}" From 82eedc8f0204b94a86cce1d27333fd75e2bcb929 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Mar 2021 17:02:44 -0400 Subject: [PATCH 167/212] Update packer docs to latest (#10814) --- website/data/docs-remote-plugins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index ab7aecb94..b3199e499 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -3,6 +3,6 @@ "title": "Docker", "path": "docker", "repo": "hashicorp/packer-plugin-docker", - "version": "v0.0.4" + "version": "latest" } ] From 70ceed111095d041521614cab87c98f71812bd1a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Mar 2021 17:41:43 -0400 Subject: [PATCH 168/212] Update vendor modules --- go.mod | 1 + go.sum | 1 + vendor/modules.txt | 2 ++ 3 files changed, 4 insertions(+) diff --git a/go.mod b/go.mod index 415c54661..a9155c4ee 100644 --- a/go.mod +++ b/go.mod @@ -64,6 +64,7 @@ require ( github.com/mitchellh/cli v1.1.0 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed + github.com/mitchellh/gox v1.0.1 // indirect github.com/mitchellh/mapstructure v1.4.0 github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 diff --git a/go.sum b/go.sum index 6452de5bd..288453a78 100644 --- a/go.sum +++ b/go.sum @@ -529,6 +529,7 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI= github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= diff --git a/vendor/modules.txt b/vendor/modules.txt index 49143ddb0..cda1c5dee 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -571,6 +571,8 @@ github.com/mitchellh/go-testing-interface github.com/mitchellh/go-vnc # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap +# github.com/mitchellh/gox v1.0.1 +## explicit # github.com/mitchellh/iochan v1.0.0 github.com/mitchellh/iochan # github.com/mitchellh/mapstructure v1.4.0 From 0e3fcb589b98776a011fcfec9719fb66e9aba763 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Wed, 24 Mar 2021 11:31:39 +0100 Subject: [PATCH 169/212] Implicit required_plugin blocks (#10732) * used components that don't have a required_plugin block will make Packer 'implicitly' require those. These components are manually selected and commented for now. * add tests * docs --- command/init.go | 46 ++- hcl2template/common_test.go | 12 +- hcl2template/components.go | 11 + hcl2template/plugin.go | 1 + hcl2template/types.datasource.go | 12 +- hcl2template/types.packer_config_test.go | 2 +- hcl2template/types.required_plugins.go | 127 ++++++- hcl2template/types.required_plugins_test.go | 363 ++++++++++++++++++++ main.go | 61 ++++ packer/plugin-getter/plugins.go | 3 + packer/plugin.go | 17 + website/content/docs/commands/init.mdx | 15 +- 12 files changed, 652 insertions(+), 18 deletions(-) create mode 100644 hcl2template/components.go create mode 100644 hcl2template/types.required_plugins_test.go diff --git a/command/init.go b/command/init.go index eab38b648..dd49c500f 100644 --- a/command/init.go +++ b/command/init.go @@ -121,12 +121,54 @@ func (c *InitCommand) RunContext(buildCtx context.Context, cla *InitArgs) int { Getters: getters, }) if err != nil { - c.Ui.Error(err.Error()) - ret = 1 + if pluginRequirement.Implicit { + msg := fmt.Sprintf(` +Warning! At least one component used in your config file(s) has moved out of +Packer into the %q plugin. +For that reason, Packer init tried to install the latest version of the %s +plugin. Unfortunately, this failed : +%s`, + pluginRequirement.Identifier, + pluginRequirement.Identifier.Type, + err) + c.Ui.Say(msg) + } else { + c.Ui.Error(err.Error()) + ret = 1 + } } if newInstall != nil { + if pluginRequirement.Implicit { + msg := fmt.Sprintf("Installed implicitly required plugin %s %s in %q", pluginRequirement.Identifier, newInstall.Version, newInstall.BinaryPath) + ui.Say(msg) + + warn := fmt.Sprintf(` +Warning, at least one component used in your config file(s) has moved out of +Packer into the %[2]q plugin and is now being implicitly required. +For more details on implicitly required plugins see https://packer.io/docs/commands/init#implicit-required-plugin + +To avoid any backward incompatible changes with your +config file you may want to lock the plugin version by pasting the following to your config: + +packer { + required_plugins { + %[1]s = { + source = "%[2]s" + version = "~> %[3]s" + } + } +} +`, + pluginRequirement.Identifier.Type, + pluginRequirement.Identifier, + newInstall.Version, + ) + ui.Error(warn) + continue + } msg := fmt.Sprintf("Installed plugin %s %s in %q", pluginRequirement.Identifier, newInstall.Version, newInstall.BinaryPath) ui.Say(msg) + } } return ret diff --git a/hcl2template/common_test.go b/hcl2template/common_test.go index fa50013a3..c9f7b9789 100644 --- a/hcl2template/common_test.go +++ b/hcl2template/common_test.go @@ -20,8 +20,8 @@ import ( const lockedVersion = "v1.5.0" -func getBasicParser() *Parser { - return &Parser{ +func getBasicParser(opts ...getParserOption) *Parser { + parser := &Parser{ CorePackerVersion: version.Must(version.NewSemver(lockedVersion)), CorePackerVersionString: lockedVersion, Parser: hclparse.NewParser(), @@ -44,8 +44,14 @@ func getBasicParser() *Parser { }, }, } + for _, configure := range opts { + configure(parser) + } + return parser } +type getParserOption func(*Parser) + type parseTestArgs struct { filename string vars map[string]string @@ -338,7 +344,7 @@ var cmpOpts = []cmp.Option{ PackerConfig{}, Variable{}, SourceBlock{}, - Datasource{}, + DatasourceBlock{}, ProvisionerBlock{}, PostProcessorBlock{}, packer.CoreBuild{}, diff --git a/hcl2template/components.go b/hcl2template/components.go new file mode 100644 index 000000000..b2063cd38 --- /dev/null +++ b/hcl2template/components.go @@ -0,0 +1,11 @@ +package hcl2template + +// ComponentKind helps enumerate what kind of components exist in this Package. +type ComponentKind int + +const ( + Builder ComponentKind = iota + Provisioner + PostProcessor + Datasource +) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index b43abdeb5..7f5a5206d 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -41,6 +41,7 @@ func (cfg *PackerConfig) PluginRequirements() (plugingetter.Requirements, hcl.Di Accessor: name, Identifier: block.Type, VersionConstraints: block.Requirement.Required, + Implicit: block.PluginDependencyReason == PluginDependencyImplicit, }) uniq[name] = block } diff --git a/hcl2template/types.datasource.go b/hcl2template/types.datasource.go index c25ab5b1a..568a0882f 100644 --- a/hcl2template/types.datasource.go +++ b/hcl2template/types.datasource.go @@ -11,8 +11,8 @@ import ( "github.com/zclconf/go-cty/cty" ) -// DataBlock references an HCL 'data' block. -type Datasource struct { +// DatasourceBlock references an HCL 'data' block. +type DatasourceBlock struct { Type string Name string @@ -25,9 +25,9 @@ type DatasourceRef struct { Name string } -type Datasources map[DatasourceRef]Datasource +type Datasources map[DatasourceRef]DatasourceBlock -func (data *Datasource) Ref() DatasourceRef { +func (data *DatasourceBlock) Ref() DatasourceRef { return DatasourceRef{ Type: data.Type, Name: data.Name, @@ -124,9 +124,9 @@ func (cfg *PackerConfig) startDatasource(dataSourceStore packer.DatasourceStore, return datasource, diags } -func (p *Parser) decodeDataBlock(block *hcl.Block) (*Datasource, hcl.Diagnostics) { +func (p *Parser) decodeDataBlock(block *hcl.Block) (*DatasourceBlock, hcl.Diagnostics) { var diags hcl.Diagnostics - r := &Datasource{ + r := &DatasourceBlock{ Type: block.Labels[0], Name: block.Labels[1], block: block, diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index 5a522b4d0..a045ebb68 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -131,7 +131,7 @@ func TestParser_complete(t *testing.T) { }, }, Datasources: Datasources{ - DatasourceRef{Type: "amazon-ami", Name: "test"}: Datasource{ + DatasourceRef{Type: "amazon-ami", Name: "test"}: DatasourceBlock{ Type: "amazon-ami", Name: "test", value: cty.StringVal("foo"), diff --git a/hcl2template/types.required_plugins.go b/hcl2template/types.required_plugins.go index 736aeb2c1..f1309f09d 100644 --- a/hcl2template/types.required_plugins.go +++ b/hcl2template/types.required_plugins.go @@ -6,6 +6,7 @@ import ( "github.com/hashicorp/go-version" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer/hcl2template/addrs" + "github.com/hashicorp/packer/packer" "github.com/zclconf/go-cty/cty" ) @@ -41,9 +42,13 @@ func (cfg *PackerConfig) decodeRequiredPluginsBlock(f *hcl.File) hcl.Diagnostics } func (cfg *PackerConfig) decodeImplicitRequiredPluginsBlocks(f *hcl.File) hcl.Diagnostics { - // when a plugin is used but not defined in the required plugin blocks, it - // is 'implicitly used'. Here we read common configuration blocks to try to - // guess plugins. + // when a plugin is used but not available it should be 'implicitly + // required'. Here we read common configuration blocks to try to guess + // plugin usages. + + // decodeRequiredPluginsBlock needs to be called before + // decodeImplicitRequiredPluginsBlocks; otherwise all required plugins will + // be implicitly required too. var diags hcl.Diagnostics @@ -51,14 +56,112 @@ func (cfg *PackerConfig) decodeImplicitRequiredPluginsBlocks(f *hcl.File) hcl.Di diags = append(diags, moreDiags...) for _, block := range content.Blocks { + switch block.Type { case sourceLabel: - // TODO + diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(Builder, block)...) + case dataSourceLabel: + diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(Datasource, block)...) + case buildLabel: + content, _, moreDiags := block.Body.PartialContent(buildSchema) + diags = append(diags, moreDiags...) + for _, block := range content.Blocks { + + switch block.Type { + case buildProvisionerLabel: + diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(Provisioner, block)...) + case buildPostProcessorLabel: + diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(PostProcessor, block)...) + case buildPostProcessorsLabel: + content, _, moreDiags := block.Body.PartialContent(postProcessorsSchema) + diags = append(diags, moreDiags...) + for _, block := range content.Blocks { + + switch block.Type { + case buildPostProcessorLabel: + diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(PostProcessor, block)...) + } + } + } + } + } } return diags } +func (cfg *PackerConfig) decodeImplicitRequiredPluginsBlock(k ComponentKind, block *hcl.Block) hcl.Diagnostics { + if len(block.Labels) == 0 { + // malformed block ? Let's not panic :) + return nil + } + // Currently all block types are `type "component-kind" ["name"] {` + // this makes this simple. + componentName := block.Labels[0] + + store := map[ComponentKind]packer.BasicStore{ + Builder: cfg.parser.PluginConfig.Builders, + PostProcessor: cfg.parser.PluginConfig.PostProcessors, + Provisioner: cfg.parser.PluginConfig.Provisioners, + Datasource: cfg.parser.PluginConfig.DataSources, + }[k] + if store.Has(componentName) { + // If any core or pre-loaded plugin defines the `happycloud-uploader` + // pp, skip. This happens for core and manually installed plugins, as + // they will be listed in the PluginConfig before parsing any HCL. + return nil + } + + redirect := map[ComponentKind]map[string]string{ + Builder: cfg.parser.PluginConfig.BuilderRedirects, + PostProcessor: cfg.parser.PluginConfig.PostProcessorRedirects, + Provisioner: cfg.parser.PluginConfig.ProvisionerRedirects, + Datasource: cfg.parser.PluginConfig.DatasourceRedirects, + }[k][componentName] + + if redirect == "" { + // no known redirect for this component + return nil + } + + redirectAddr, diags := addrs.ParsePluginSourceString(redirect) + if diags.HasErrors() { + // This should never happen, since the map is manually filled. + return diags + } + + for _, req := range cfg.Packer.RequiredPlugins { + if _, found := req.RequiredPlugins[redirectAddr.Type]; found { + // This could happen if a plugin was forked. For example, I forked + // the github.com/hashicorp/happycloud plugin into + // github.com/azr/happycloud that is required in my config file; and + // am using the `happycloud-uploader` pp component from it. In that + // case - and to avoid miss-requires - we won't implicitly import + // any other `happycloud` plugin. + return nil + } + } + + cfg.implicitlyRequirePlugin(redirectAddr) + return nil +} + +func (cfg *PackerConfig) implicitlyRequirePlugin(plugin *addrs.Plugin) { + cfg.Packer.RequiredPlugins = append(cfg.Packer.RequiredPlugins, &RequiredPlugins{ + RequiredPlugins: map[string]*RequiredPlugin{ + plugin.Type: { + Name: plugin.Type, + Source: plugin.String(), + Type: plugin, + Requirement: VersionConstraint{ + Required: nil, // means latest + }, + PluginDependencyReason: PluginDependencyImplicit, + }, + }, + }) +} + // RequiredPlugin represents a declaration of a dependency on a particular // Plugin version or source. type RequiredPlugin struct { @@ -71,8 +174,24 @@ type RequiredPlugin struct { Type *addrs.Plugin Requirement VersionConstraint DeclRange hcl.Range + PluginDependencyReason } +// PluginDependencyReason is an enumeration of reasons why a dependency might be +// present. +type PluginDependencyReason int + +const ( + // PluginDependencyExplicit means that there is an explicit + // "required_plugin" block in the configuration. + PluginDependencyExplicit PluginDependencyReason = iota + + // PluginDependencyImplicit means that there is no explicit + // "required_plugin" block but there is at least one resource that uses this + // plugin. + PluginDependencyImplicit +) + type RequiredPlugins struct { RequiredPlugins map[string]*RequiredPlugin DeclRange hcl.Range diff --git a/hcl2template/types.required_plugins_test.go b/hcl2template/types.required_plugins_test.go new file mode 100644 index 000000000..fe0869198 --- /dev/null +++ b/hcl2template/types.required_plugins_test.go @@ -0,0 +1,363 @@ +package hcl2template + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/go-version" + "github.com/hashicorp/packer/hcl2template/addrs" +) + +func TestPackerConfig_required_plugin_parse(t *testing.T) { + + tests := []struct { + name string + cfg PackerConfig + requirePlugins string + restOfTemplate string + wantDiags bool + wantConfig PackerConfig + }{ + {"required_plugin", PackerConfig{parser: getBasicParser()}, ` + packer { + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> v1.2.3" + } + } + } `, ` + source "amazon-ebs" "example" { + } + `, false, PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "amazon": { + Name: "amazon", + Source: "github.com/hashicorp/amazon", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, + Requirement: VersionConstraint{ + Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), + }, + PluginDependencyReason: PluginDependencyExplicit, + }, + }}, + }, + }, + }}, + {"required_plugin_forked_no_redirect", PackerConfig{parser: getBasicParser()}, ` + packer { + required_plugins { + amazon = { + source = "github.com/azr/amazon" + version = "~> v1.2.3" + } + } + } `, ` + source "amazon-chroot" "example" { + } + `, false, PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "amazon": { + Name: "amazon", + Source: "github.com/azr/amazon", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "azr", Type: "amazon"}, + Requirement: VersionConstraint{ + Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), + }, + PluginDependencyReason: PluginDependencyExplicit, + }, + }}, + }, + }, + }}, + {"required_plugin_forked", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.BuilderRedirects = map[string]string{ + "amazon-chroot": "github.com/hashicorp/amazon", + } + }, + )}, ` + packer { + required_plugins { + amazon = { + source = "github.com/azr/amazon" + version = "~> v1.2.3" + } + } + } `, ` + source "amazon-chroot" "example" { + } + `, false, PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "amazon": { + Name: "amazon", + Source: "github.com/azr/amazon", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "azr", Type: "amazon"}, + Requirement: VersionConstraint{ + Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), + }, + PluginDependencyReason: PluginDependencyExplicit, + }, + }}, + }, + }, + }}, + {"missing-required-plugin-for-pre-defined-builder", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.BuilderRedirects = map[string]string{ + "amazon-ebs": "github.com/hashicorp/amazon", + } + }, + )}, + ` + packer { + }`, ` + # amazon-ebs is mocked in getBasicParser() + source "amazon-ebs" "example" { + } + `, + false, + PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: nil, + }, + }}, + {"missing-required-plugin-for-builder", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.BuilderRedirects = map[string]string{ + "amazon-chroot": "github.com/hashicorp/amazon", + } + }, + )}, + ` + packer { + }`, ` + source "amazon-chroot" "example" { + } + `, + false, + PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "amazon": { + Name: "amazon", + Source: "github.com/hashicorp/amazon", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, + Requirement: VersionConstraint{ + Required: nil, + }, + PluginDependencyReason: PluginDependencyImplicit, + }, + }}, + }, + }, + }}, + {"missing-required-plugin-for-provisioner", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.ProvisionerRedirects = map[string]string{ + "ansible-local": "github.com/ansible/ansible", + } + }, + )}, + ` + packer { + }`, ` + build { + provisioner "ansible-local" {} + } + `, + false, + PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "ansible": { + Name: "ansible", + Source: "github.com/ansible/ansible", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "ansible", Type: "ansible"}, + Requirement: VersionConstraint{ + Required: nil, + }, + PluginDependencyReason: PluginDependencyImplicit, + }, + }}, + }, + }, + }}, + {"missing-required-plugin-for-post-processor", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.PostProcessorRedirects = map[string]string{ + "docker-push": "github.com/hashicorp/docker", + } + }, + )}, + ` + packer { + }`, ` + build { + post-processor "docker-push" {} + } + `, + false, + PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "docker": { + Name: "docker", + Source: "github.com/hashicorp/docker", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "docker"}, + Requirement: VersionConstraint{ + Required: nil, + }, + PluginDependencyReason: PluginDependencyImplicit, + }, + }}, + }, + }, + }}, + {"missing-required-plugin-for-nested-post-processor", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.PostProcessorRedirects = map[string]string{ + "docker-push": "github.com/hashicorp/docker", + } + }, + )}, + ` + packer { + }`, ` + build { + post-processors { + post-processor "docker-push" { + } + } + } + `, + false, + PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "docker": { + Name: "docker", + Source: "github.com/hashicorp/docker", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "docker"}, + Requirement: VersionConstraint{ + Required: nil, + }, + PluginDependencyReason: PluginDependencyImplicit, + }, + }}, + }, + }, + }}, + + {"required-plugin-renamed", PackerConfig{ + parser: getBasicParser(func(p *Parser) { + p.PluginConfig.BuilderRedirects = map[string]string{ + "amazon-chroot": "github.com/hashicorp/amazon", + } + }, + )}, + ` + packer { + required_plugins { + amazon-v1 = { + source = "github.com/hashicorp/amazon" + version = "~> v1.0" + } + } + }`, ` + source "amazon-v1-chroot" "example" { + } + source "amazon-chroot" "example" { + } + `, + false, + PackerConfig{ + Packer: struct { + VersionConstraints []VersionConstraint + RequiredPlugins []*RequiredPlugins + }{ + RequiredPlugins: []*RequiredPlugins{ + {RequiredPlugins: map[string]*RequiredPlugin{ + "amazon-v1": { + Name: "amazon-v1", + Source: "github.com/hashicorp/amazon", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, + Requirement: VersionConstraint{ + Required: mustVersionConstraints(version.NewConstraint("~> v1.0")), + }, + PluginDependencyReason: PluginDependencyExplicit, + }, + }}, + {RequiredPlugins: map[string]*RequiredPlugin{ + "amazon": { + Name: "amazon", + Source: "github.com/hashicorp/amazon", + Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, + Requirement: VersionConstraint{ + Required: nil, + }, + PluginDependencyReason: PluginDependencyImplicit, + }, + }}, + }, + }, + }}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + cfg := tt.cfg + file, diags := cfg.parser.ParseHCL([]byte(tt.requirePlugins), "required_plugins.pkr.hcl") + if len(diags) > 0 { + t.Fatal(diags) + } + if diags := cfg.decodeRequiredPluginsBlock(file); len(diags) > 0 { + t.Fatal(diags) + } + + rest, diags := cfg.parser.ParseHCL([]byte(tt.restOfTemplate), "rest.pkr.hcl") + if len(diags) > 0 { + t.Fatal(diags) + } + if gotDiags := cfg.decodeImplicitRequiredPluginsBlocks(rest); (len(gotDiags) > 0) != tt.wantDiags { + t.Fatal(gotDiags) + } + if diff := cmp.Diff(tt.wantConfig, cfg, cmpOpts...); diff != "" { + t.Errorf("PackerConfig.inferImplicitRequiredPluginFromBlocks() unexpected PackerConfig: %v", diff) + } + }) + } +} diff --git a/main.go b/main.go index 12ad1aca5..aa0b51d2e 100644 --- a/main.go +++ b/main.go @@ -297,6 +297,67 @@ func loadConfig() (*config, error) { PluginMinPort: 10000, PluginMaxPort: 25000, KnownPluginFolders: packer.PluginFolders("."), + + // BuilderRedirects + BuilderRedirects: map[string]string{ + + // "amazon-chroot": "github.com/hashicorp/amazon", + // "amazon-ebs": "github.com/hashicorp/amazon", + // "amazon-ebssurrogate": "github.com/hashicorp/amazon", + // "amazon-ebsvolume": "github.com/hashicorp/amazon", + // "amazon-instance": "github.com/hashicorp/amazon", + + // "azure-arm": "github.com/hashicorp/azure", + // "azure-chroot": "github.com/hashicorp/azure", + // "dtl": "github.com/hashicorp/azure", + + // "docker": "github.com/hashicorp/docker", + + // "googlecompute": "github.com/hashicorp/googlecompute", + + // "parallels-iso": "github.com/hashicorp/parallels", + // "parallels-pvm": "github.com/hashicorp/parallels", + + // "qemu": "github.com/hashicorp/qemu", + + // "vagrant": "github.com/hashicorp/vagrant", + + // "virtualbox-iso": "github.com/hashicorp/virtualbox", + // "virtualbox-ovf": "github.com/hashicorp/virtualbox", + // "virtualbox-vm": "github.com/hashicorp/virtualbox", + + // "vmware-iso": "github.com/hashicorp/vmware", + // "vmware-vmx": "github.com/hashicorp/vmware", + + // "vsphere-iso": "github.com/hashicorp/vsphere", + // "vsphere-clone": "github.com/hashicorp/vsphere", + }, + DatasourceRedirects: map[string]string{ + // "amazon-ami": "github.com/hashicorp/amazon", + }, + ProvisionerRedirects: map[string]string{ + // "ansible": "github.com/hashicorp/ansible", + // "ansible-local": "github.com/hashicorp/ansible", + + // "azure-dtlartifact": "github.com/hashicorp/azure", + }, + PostProcessorRedirects: map[string]string{ + // "amazon-import": "github.com/hashicorp/amazon", + + // "docker-import": "github.com/hashicorp/docker", + // "docker-push": "github.com/hashicorp/docker", + // "docker-save": "github.com/hashicorp/docker", + // "docker-tag": "github.com/hashicorp/docker", + + // "googlecompute-export": "github.com/hashicorp/googlecompute", + // "googlecompute-import": "github.com/hashicorp/googlecompute", + + // "vagrant": "github.com/hashicorp/vagrant", + // "vagrant-cloud": "github.com/hashicorp/vagrant", + + // "vsphere": "github.com/hashicorp/vsphere", + // "vsphere-template": "github.com/hashicorp/vsphere", + }, } if err := config.Plugins.Discover(); err != nil { return nil, err diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 8355afd87..e996a9d0c 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -38,6 +38,9 @@ type Requirement struct { // VersionConstraints as defined by user. Empty ( to be avoided ) means // highest found version. VersionConstraints version.Constraints + + // was this require implicitly guessed ? + Implicit bool } type BinaryInstallationOptions struct { diff --git a/packer/plugin.go b/packer/plugin.go index 9235398c9..c5e1b56b1 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -24,6 +24,23 @@ type PluginConfig struct { Provisioners ProvisionerSet PostProcessors PostProcessorSet DataSources DatasourceSet + + // Redirects are only set when a plugin was completely moved out; they allow + // telling where a plugin has moved by checking if a known component of this + // plugin is used. For example implicitly require the + // github.com/hashicorp/amazon plugin if it was moved out and the + // "amazon-ebs" plugin is used, but not found. + // + // Redirects will be bypassed if the redirected components are already found + // in their corresponding sets (Builders, Provisioners, PostProcessors, + // DataSources). That is, for example, if you manually put a single + // component plugin in the plugins folder. + // + // Example BuilderRedirects: "amazon-ebs" => "github.com/hashicorp/amazon" + BuilderRedirects map[string]string + DatasourceRedirects map[string]string + ProvisionerRedirects map[string]string + PostProcessorRedirects map[string]string } // PACKERSPACE is used to represent the spaces that separate args for a command diff --git a/website/content/docs/commands/init.mdx b/website/content/docs/commands/init.mdx index e4c3dbad1..ce165081d 100644 --- a/website/content/docs/commands/init.mdx +++ b/website/content/docs/commands/init.mdx @@ -67,10 +67,21 @@ plugins will be installed in the [Plugin Directory](/docs/configure#packer-s-plugin-directory). See [Installing Plugins](/docs/plugins#installing-plugins) for more information on how plugin installation works. + +### Implicit required plugin + +This is part of a set of breaking changes made to decouple Packer releases from +plugin releases. To make the transition easier, we will tag components of these +plugins as "moved out". If one of the components of a moved out plugin is used +in a config file, but there is no mention of that plugin in the +"required_plugin" block, then Packer init will automatically download and +install that plugin. Packer will then display a warning and suggest that you +add the plugin to your required_plugin block. We recommend you use the +required_plugin block even if you are only using official plugins, because it +allows you to set the plugin version to avoid surprises in the future. + ## Options - `-upgrade` - On top of installing missing plugins, update installed plugins to the latest available version, if there is a new higher one. Note that this still takes into consideration the version constraint of the config. - - From 3a11820a41ca8df3995fe3e787d60558e37feced Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 24 Mar 2021 10:51:10 -0700 Subject: [PATCH 170/212] Adjust upload limit value and fix error value stored in state bag --- post-processor/vagrant-cloud/step_prepare_upload.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/post-processor/vagrant-cloud/step_prepare_upload.go b/post-processor/vagrant-cloud/step_prepare_upload.go index b68c8bbe0..07ab7d7de 100644 --- a/post-processor/vagrant-cloud/step_prepare_upload.go +++ b/post-processor/vagrant-cloud/step_prepare_upload.go @@ -9,7 +9,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" ) -const VAGRANT_CLOUD_DIRECT_UPLOAD_LIMIT = 5000000000 // Upload limit is 5GB +const VAGRANT_CLOUD_DIRECT_UPLOAD_LIMIT = 5368709120 // Upload limit is 5G type Upload struct { UploadPath string `json:"upload_path"` @@ -52,7 +52,7 @@ func (s *stepPrepareUpload) Run(ctx context.Context, state multistep.StateBag) m if err != nil || (resp.StatusCode != 200) { if resp == nil || resp.Body == nil { - state.Put("error", "No response from server.") + state.Put("error", fmt.Errorf("No response from server.")) } else { cloudErrors := &VagrantCloudErrors{} err = decodeBody(resp, cloudErrors) From 2de91e48627ccbe8b7c043f6bdfc438f0b8e4919 Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 24 Mar 2021 10:52:56 -0700 Subject: [PATCH 171/212] Check configuration before running callback for upload confirmation --- post-processor/vagrant-cloud/step_confirm_upload.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/post-processor/vagrant-cloud/step_confirm_upload.go b/post-processor/vagrant-cloud/step_confirm_upload.go index fcb8e02ca..a177ecbcd 100644 --- a/post-processor/vagrant-cloud/step_confirm_upload.go +++ b/post-processor/vagrant-cloud/step_confirm_upload.go @@ -16,6 +16,11 @@ func (s *stepConfirmUpload) Run(ctx context.Context, state multistep.StateBag) m ui := state.Get("ui").(packersdk.Ui) upload := state.Get("upload").(*Upload) url := upload.CallbackPath + config := state.Get("config").(*Config) + + if config.NoDirectUpload { + return multistep.ActionContinue + } ui.Say("Confirming direct box upload completion") @@ -23,7 +28,7 @@ func (s *stepConfirmUpload) Run(ctx context.Context, state multistep.StateBag) m if err != nil || resp.StatusCode != 200 { if resp == nil || resp.Body == nil { - state.Put("error", "No response from server.") + state.Put("error", fmt.Errorf("No response from server.")) } else { cloudErrors := &VagrantCloudErrors{} err = decodeBody(resp, cloudErrors) From a665e6b822190ef9dbbbd9a4c3df7fd89bd3753b Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 24 Mar 2021 10:53:38 -0700 Subject: [PATCH 172/212] Always include all upload steps regardless of configuration --- post-processor/vagrant-cloud/post-processor.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/post-processor/vagrant-cloud/post-processor.go b/post-processor/vagrant-cloud/post-processor.go index 53ff8c205..09e74e7b7 100644 --- a/post-processor/vagrant-cloud/post-processor.go +++ b/post-processor/vagrant-cloud/post-processor.go @@ -188,10 +188,10 @@ func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifa new(stepCreateProvider), } if p.config.BoxDownloadUrl == "" { - steps = append(steps, new(stepPrepareUpload), new(stepUpload)) - if !p.config.NoDirectUpload { - steps = append(steps, new(stepConfirmUpload)) - } + steps = append(steps, + new(stepPrepareUpload), + new(stepUpload), + new(stepConfirmUpload)) } steps = append(steps, new(stepReleaseVersion)) From 4ea4c0570f27b1c7128dce091b54edff601527ef Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 24 Mar 2021 10:54:11 -0700 Subject: [PATCH 173/212] Add test coverage for direct upload file size limits --- .../vagrant-cloud/post-processor_test.go | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/post-processor/vagrant-cloud/post-processor_test.go b/post-processor/vagrant-cloud/post-processor_test.go index 298398154..c29f7ec2d 100644 --- a/post-processor/vagrant-cloud/post-processor_test.go +++ b/post-processor/vagrant-cloud/post-processor_test.go @@ -10,6 +10,7 @@ import ( "net/http" "net/http/httptest" "os" + "runtime" "strings" "testing" @@ -361,6 +362,138 @@ func TestPostProcessor_PostProcess_uploadsAndNoRelease(t *testing.T) { } } +func TestPostProcessor_PostProcess_directUpload5GFile(t *testing.T) { + // Disable test on Windows due to unreliable sparse file creation + if runtime.GOOS == "windows" { + return + } + + // Boxes up to 5GB are supported for direct upload so + // set the box asset to be 5GB exactly + fSize := int64(5368709120) + files := tarFiles{ + {"foo.txt", "This is a foo file"}, + {"bar.txt", "This is a bar file"}, + {"metadata.json", `{"provider": "virtualbox"}`}, + } + f, err := createBox(files) + if err != nil { + t.Fatalf("%s", err) + } + defer os.Remove(f.Name()) + + if err := expandFile(f, fSize); err != nil { + t.Fatalf("failed to expand box file - %s", err) + } + + artifact := &packersdk.MockArtifact{ + BuilderIdValue: "mitchellh.post-processor.vagrant", + FilesValue: []string{f.Name()}, + } + f.Close() + + s := newStackServer( + []stubResponse{ + stubResponse{StatusCode: 200, Method: "PUT", Path: "/box-upload-path"}, + }, + ) + defer s.Close() + + stack := []stubResponse{ + stubResponse{StatusCode: 200, Method: "GET", Path: "/authenticate"}, + stubResponse{StatusCode: 200, Method: "GET", Path: "/box/hashicorp/precise64", Response: `{"tag": "hashicorp/precise64"}`}, + stubResponse{StatusCode: 200, Method: "POST", Path: "/box/hashicorp/precise64/versions", Response: `{}`}, + stubResponse{StatusCode: 200, Method: "POST", Path: "/box/hashicorp/precise64/version/0.5/providers", Response: `{}`}, + stubResponse{StatusCode: 200, Method: "GET", Path: "/box/hashicorp/precise64/version/0.5/provider/id/upload/direct"}, + stubResponse{StatusCode: 200, Method: "PUT", Path: "/box-upload-complete"}, + } + + server := newStackServer(stack) + defer server.Close() + config := testGoodConfig() + config["vagrant_cloud_url"] = server.URL + config["no_release"] = true + + // Set response here so we have API server URL available + stack[4].Response = `{"upload_path": "` + s.URL + `/box-upload-path", "callback": "` + server.URL + `/box-upload-complete"}` + + var p PostProcessor + + err = p.Configure(config) + if err != nil { + t.Fatalf("err: %s", err) + } + + _, _, _, err = p.PostProcess(context.Background(), testUi(), artifact) + if err != nil { + t.Fatalf("err: %s", err) + } +} + +func TestPostProcessor_PostProcess_directUploadOver5GFile(t *testing.T) { + // Disable test on Windows due to unreliable sparse file creation + if runtime.GOOS == "windows" { + return + } + + // Boxes over 5GB are not supported for direct upload so + // set the box asset to be one byte over 5GB + fSize := int64(5368709121) + files := tarFiles{ + {"foo.txt", "This is a foo file"}, + {"bar.txt", "This is a bar file"}, + {"metadata.json", `{"provider": "virtualbox"}`}, + } + f, err := createBox(files) + if err != nil { + t.Fatalf("%s", err) + } + defer os.Remove(f.Name()) + + if err := expandFile(f, fSize); err != nil { + t.Fatalf("failed to expand box file - %s", err) + } + f.Close() + + artifact := &packersdk.MockArtifact{ + BuilderIdValue: "mitchellh.post-processor.vagrant", + FilesValue: []string{f.Name()}, + } + + s := newStackServer( + []stubResponse{ + stubResponse{StatusCode: 200, Method: "PUT", Path: "/box-upload-path"}, + }, + ) + defer s.Close() + + stack := []stubResponse{ + stubResponse{StatusCode: 200, Method: "GET", Path: "/authenticate"}, + stubResponse{StatusCode: 200, Method: "GET", Path: "/box/hashicorp/precise64", Response: `{"tag": "hashicorp/precise64"}`}, + stubResponse{StatusCode: 200, Method: "POST", Path: "/box/hashicorp/precise64/versions", Response: `{}`}, + stubResponse{StatusCode: 200, Method: "POST", Path: "/box/hashicorp/precise64/version/0.5/providers", Response: `{}`}, + stubResponse{StatusCode: 200, Method: "GET", Path: "/box/hashicorp/precise64/version/0.5/provider/id/upload", Response: `{"upload_path": "` + s.URL + `/box-upload-path"}`}, + } + + server := newStackServer(stack) + defer server.Close() + config := testGoodConfig() + config["vagrant_cloud_url"] = server.URL + config["no_release"] = true + + var p PostProcessor + + err = p.Configure(config) + if err != nil { + t.Fatalf("err: %s", err) + } + + _, _, _, err = p.PostProcess(context.Background(), testUi(), artifact) + if err != nil { + t.Fatalf("err: %s", err) + } +} + func TestPostProcessor_PostProcess_uploadsDirectAndReleases(t *testing.T) { files := tarFiles{ {"foo.txt", "This is a foo file"}, @@ -697,3 +830,21 @@ func createBox(files tarFiles) (boxfile *os.File, err error) { return boxfile, nil } + +func expandFile(f *os.File, finalSize int64) (err error) { + s, err := f.Stat() + if err != nil { + return + } + size := finalSize - s.Size() + if size < 1 { + return + } + if _, err = f.Seek(size-1, 2); err != nil { + return + } + if _, err = f.Write([]byte{0}); err != nil { + return + } + return nil +} From cc133ea25056032cf43ce083b69d9592a0233e66 Mon Sep 17 00:00:00 2001 From: Zach Shilton <4624598+zchsh@users.noreply.github.com> Date: Wed, 24 Mar 2021 16:39:29 -0400 Subject: [PATCH 174/212] website: fix issue with .mdx in URL paths --- website/components/remote-plugin-docs/utils/resolve-nav-data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/components/remote-plugin-docs/utils/resolve-nav-data.js b/website/components/remote-plugin-docs/utils/resolve-nav-data.js index f1a65647a..7bcd2b8fb 100644 --- a/website/components/remote-plugin-docs/utils/resolve-nav-data.js +++ b/website/components/remote-plugin-docs/utils/resolve-nav-data.js @@ -139,7 +139,7 @@ async function resolvePluginEntryDocs(pluginConfigEntry) { // Process into a NavLeaf, with a remoteFile attribute const dirs = path.dirname(filePath).split('/') const dirUrl = dirs.slice(2).join('/') - const basename = path.basename(filePath) + const basename = path.basename(filePath, path.extname(filePath)) // build urlPath // note that this will be prefixed to get to our final path const isIndexFile = basename === 'index' From 166df2ce1d08b419a6ab451e4846bbde64d619c8 Mon Sep 17 00:00:00 2001 From: Ricardo Katz Date: Thu, 25 Mar 2021 09:27:05 -0300 Subject: [PATCH 175/212] correct provisioner typo (#10822) Correct provision typo --- .../templates/hcl_templates/blocks/build/post-processors.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx index 60e3491e4..801b72e61 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx @@ -82,5 +82,5 @@ build { ``` Each of these `post-processors` will start after each build -- that is, after -each privision step has run on each source --. In all cases the source image is +each provision step has run on each source --. In all cases the source image is going to be deleted. From 25fddf319955b468e65cb06f3db625eb17d73ce3 Mon Sep 17 00:00:00 2001 From: GennadySpb Date: Thu, 25 Mar 2021 15:34:21 +0300 Subject: [PATCH 176/212] Add release build for darwin/arm64 (#10804) * Add release build for darwin/arm64 Co-authored-by: Adrien Delorme --- .circleci/config.yml | 19 ++++++++++++++++--- scripts/build.sh | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c2c41e5e9..4ae72ad75 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -37,15 +37,19 @@ commands: parameters: GOOS: type: string + GOARCH: + default: "amd64" + type: string steps: - checkout - - run: GOOS=<< parameters.GOOS >> go build -ldflags="-s -w -X github.com/hashicorp/packer/version.GitCommit=${CIRCLE_SHA1}" -o ./pkg/packer_<< parameters.GOOS >>_$(go env GOARCH) . - - run: zip ./pkg/packer_<< parameters.GOOS >>_$(go env GOARCH).zip ./pkg/packer_<< parameters.GOOS >>_$(go env GOARCH) - - run: rm ./pkg/packer_<< parameters.GOOS >>_$(go env GOARCH) + - run: GOOS=<< parameters.GOOS >> GOARCH=<> go build -ldflags="-s -w -X github.com/hashicorp/packer/version.GitCommit=${CIRCLE_SHA1}" -o ./pkg/packer_<< parameters.GOOS >>_<< parameters.GOARCH >> . + - run: zip ./pkg/packer_<< parameters.GOOS >>_<< parameters.GOARCH >>.zip ./pkg/packer_<< parameters.GOOS >>_<< parameters.GOARCH >> + - run: rm ./pkg/packer_<< parameters.GOOS >>_<< parameters.GOARCH >> - persist_to_workspace: root: . paths: - ./pkg/ + # Golang CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-go/ for more details @@ -123,6 +127,13 @@ jobs: steps: - build-and-persist-packer-binary: GOOS: darwin + build_darwin_arm64: + executor: golang + working_directory: /go/src/github.com/hashicorp/packer + steps: + - build-and-persist-packer-binary: + GOOS: darwin + GOARCH: arm64 build_freebsd: executor: golang working_directory: /go/src/github.com/hashicorp/packer @@ -203,6 +214,7 @@ workflows: jobs: - build_linux - build_darwin + - build_darwin_arm64 - build_windows - build_freebsd - build_openbsd @@ -211,6 +223,7 @@ workflows: requires: - build_linux - build_darwin + - build_darwin_arm64 - build_windows - build_freebsd - build_openbsd diff --git a/scripts/build.sh b/scripts/build.sh index 337596313..b72be9038 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -4,7 +4,7 @@ # Determine the arch/os combos we're building for ALL_XC_ARCH="386 amd64 arm arm64 ppc64le mips mips64 mipsle mipsle64 s390x" ALL_XC_OS="linux darwin windows freebsd openbsd solaris" -SKIPPED_OSARCH="!darwin/arm !darwin/arm64 !freebsd/arm !freebsd/arm64" +SKIPPED_OSARCH="!darwin/arm !freebsd/arm !freebsd/arm64" # Exit immediately if a command fails set -e From 505cbd2591c3c6a414045fa9dcee76f810cf7686 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Thu, 25 Mar 2021 13:37:48 +0100 Subject: [PATCH 177/212] Vendor amazon plugin (#10800) * remove amazon from core * vendor amazon plugin * remove website content * Add amazon to docs-remote-plugins * update amazon reference links in the documentation * update amazon docs version to latest Co-authored-by: Adrien Delorme --- builder/amazon/chroot/builder_test.go | 251 - builder/amazon/chroot/copy_files_test.go | 51 - builder/amazon/chroot/device_test.go | 10 - .../amazon/chroot/step_attach_volume_test.go | 15 - .../amazon/chroot/step_create_volume_test.go | 97 - builder/amazon/chroot/step_flock_test.go | 15 - .../amazon/chroot/step_mount_device_test.go | 15 - .../amazon/chroot/step_register_ami_test.go | 216 - builder/amazon/common/access_config_test.go | 47 - builder/amazon/common/ami_config_test.go | 244 - builder/amazon/common/artifact_test.go | 90 - builder/amazon/common/block_device_test.go | 401 -- builder/amazon/common/build_filter_test.go | 31 - builder/amazon/common/errors_test.go | 70 - .../common/interpolate_build_info_test.go | 91 - builder/amazon/common/run_config_test.go | 251 - builder/amazon/common/ssh_test.go | 141 - builder/amazon/common/state_test.go | 66 - .../common/step_ami_region_copy_test.go | 404 -- .../amazon/common/step_pre_validate_test.go | 70 - .../common/step_run_spot_instance_test.go | 366 -- .../common/step_source_ami_info_test.go | 43 - builder/amazon/common/template_funcs_test.go | 16 - builder/amazon/ebs/acceptance/aws.go | 46 - .../ebs/acceptance/builder_acceptance.go | 59 - .../acceptance/test-fixtures/amazon-ebs.txt | 12 - .../test-fixtures/amazon-ebs_windows.txt | 23 - .../test-fixtures/scripts/bootstrap_win.txt | 40 - builder/amazon/ebs/builder_acc_test.go | 396 -- builder/amazon/ebs/builder_test.go | 166 - builder/amazon/ebs/tags_acc_test.go | 137 - builder/amazon/ebssurrogate/builder_test.go | 110 - .../ebssurrogate/step_register_ami_test.go | 249 - builder/amazon/ebsvolume/artifact_test.go | 29 - builder/amazon/ebsvolume/builder_test.go | 166 - .../step_snapshot_ebs_volumes_test.go | 170 - .../amazon/examples/apache_server/README.Md | 1 - .../amazon/examples/apache_server/apache.json | 31 - .../amazon/examples/apache_server/packages.sh | 6 - .../amazon/examples/nginx_server/README.Md | 1 - .../amazon/examples/nginx_server/nginx.json | 31 - .../amazon/examples/nginx_server/packages.sh | 4 - builder/amazon/instance/builder_test.go | 343 -- builder/amazon/version/version.go | 13 - cmd/packer-plugin-amazon/main.go | 31 - command/exec_test.go | 2 +- command/hcl2_upgrade.go | 6 +- command/plugin.go | 111 +- .../hcl2_upgrade/complete/expected.pkr.hcl | 4 +- command/vendored_plugins.go | 30 +- datasource/amazon/ami/data_acc_test.go | 64 - datasource/amazon/ami/data_test.go | 45 - .../test-fixtures/configure-source-ssh.ps1 | 161 - .../amazon/secretsmanager/data_acc_test.go | 179 - datasource/amazon/secretsmanager/data_test.go | 39 - go.mod | 16 +- go.sum | 37 +- .../amazon-import/version/version.go | 13 - .../go-textseg/v12/textseg/emoji_table.rl | 290 -- .../v12/textseg/grapheme_clusters.go | 4078 ---------------- .../go-textseg/{v12 => v13}/LICENSE | 0 .../{v12 => v13}/textseg/all_tokens.go | 0 .../go-textseg/v13/textseg/emoji_table.rl | 525 +++ .../{v12 => v13}/textseg/generate.go | 4 +- .../v13/textseg/grapheme_clusters.go | 4138 +++++++++++++++++ .../{v12 => v13}/textseg/grapheme_clusters.rl | 0 .../textseg/grapheme_clusters_table.rl | 24 +- .../go-textseg/{v12 => v13}/textseg/tables.go | 0 .../{v12 => v13}/textseg/unicode2ragel.rb | 2 +- .../{v12 => v13}/textseg/utf8_seqs.go | 0 .../aws/aws-sdk-go/aws/endpoints/defaults.go | 175 +- .../aws/aws-sdk-go/aws/signer/v4/v4.go | 5 +- .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../aws-sdk-go/internal/s3shared/arn/arn.go | 18 +- .../s3shared/arn/s3_object_lambda_arn.go | 15 + .../aws/aws-sdk-go/service/ec2/api.go | 116 +- .../aws/aws-sdk-go/service/iam/api.go | 16 + .../aws/aws-sdk-go/service/s3/api.go | 1890 +++++--- .../aws-sdk-go/service/s3/customizations.go | 2 + .../aws/aws-sdk-go/service/s3/endpoint.go | 102 +- .../aws-sdk-go/service/s3/endpoint_builder.go | 98 +- .../aws/aws-sdk-go/service/s3/errors.go | 6 +- .../service/s3/s3iface/interface.go | 4 + .../aws-sdk-go/service/s3/s3manager/arn.go | 23 + .../service/s3/s3manager/download.go | 4 + .../aws-sdk-go/service/s3/s3manager/upload.go | 4 + .../service/s3/s3manager/upload_input.go | 26 +- .../aws-sdk-go/service/secretsmanager/api.go | 927 +++- .../service/secretsmanager/errors.go | 5 +- .../secretsmanageriface/interface.go | 12 + .../aws/aws-sdk-go/service/ssm/api.go | 259 +- .../google/go-cmp/cmp/cmpopts/equate.go | 10 +- .../google/go-cmp/cmp/cmpopts/errors_go113.go | 15 + .../go-cmp/cmp/cmpopts/errors_xerrors.go | 18 + .../google/go-cmp/cmp/cmpopts/ignore.go | 2 +- .../google/go-cmp/cmp/cmpopts/sort.go | 2 +- .../go-cmp/cmp/cmpopts/struct_filter.go | 2 +- .../google/go-cmp/cmp/cmpopts/xform.go | 2 +- .../github.com/google/go-cmp/cmp/compare.go | 6 +- .../google/go-cmp/cmp/export_panic.go | 2 +- .../google/go-cmp/cmp/export_unsafe.go | 2 +- .../go-cmp/cmp/internal/diff/debug_disable.go | 2 +- .../go-cmp/cmp/internal/diff/debug_enable.go | 2 +- .../google/go-cmp/cmp/internal/diff/diff.go | 50 +- .../google/go-cmp/cmp/internal/flags/flags.go | 2 +- .../cmp/internal/flags/toolchain_legacy.go | 2 +- .../cmp/internal/flags/toolchain_recent.go | 2 +- .../go-cmp/cmp/internal/function/func.go | 2 +- .../google/go-cmp/cmp/internal/value/name.go | 2 +- .../cmp/internal/value/pointer_purego.go | 2 +- .../cmp/internal/value/pointer_unsafe.go | 2 +- .../google/go-cmp/cmp/internal/value/sort.go | 2 +- .../google/go-cmp/cmp/internal/value/zero.go | 2 +- .../github.com/google/go-cmp/cmp/options.go | 2 +- vendor/github.com/google/go-cmp/cmp/path.go | 2 +- vendor/github.com/google/go-cmp/cmp/report.go | 2 +- .../google/go-cmp/cmp/report_compare.go | 6 +- .../google/go-cmp/cmp/report_references.go | 2 +- .../google/go-cmp/cmp/report_reflect.go | 4 +- .../google/go-cmp/cmp/report_slices.go | 27 +- .../google/go-cmp/cmp/report_text.go | 2 +- .../google/go-cmp/cmp/report_value.go | 2 +- .../hashicorp/aws-sdk-go-base/CHANGELOG.md | 9 +- .../hashicorp/aws-sdk-go-base/awsauth.go | 13 +- .../hashicorp/go-cleanhttp/cleanhttp.go | 1 + .../github.com/hashicorp/go-cleanhttp/go.mod | 2 + .../hashicorp/go-multierror/.travis.yml | 12 - .../hashicorp/go-multierror/README.md | 29 +- .../hashicorp/go-multierror/append.go | 2 + .../github.com/hashicorp/go-multierror/go.mod | 2 +- .../hashicorp/go-multierror/multierror.go | 15 +- .../github.com/hashicorp/hcl/v2/CHANGELOG.md | 29 + .../github.com/hashicorp/hcl/v2/appveyor.yml | 13 - vendor/github.com/hashicorp/hcl/v2/go.mod | 6 +- vendor/github.com/hashicorp/hcl/v2/go.sum | 21 +- .../hashicorp/hcl/v2/hclsyntax/expression.go | 42 +- .../hcl/v2/hclsyntax/expression_template.go | 12 +- .../hashicorp/hcl/v2/hclsyntax/parser.go | 2 +- .../hcl/v2/hclsyntax/parser_template.go | 2 +- .../hashicorp/hcl/v2/hclsyntax/token.go | 2 +- .../hashicorp/hcl/v2/hclwrite/tokens.go | 2 +- .../hashicorp/hcl/v2/json/scanner.go | 2 +- vendor/github.com/hashicorp/hcl/v2/ops.go | 2 + .../hashicorp/hcl/v2/pos_scanner.go | 2 +- .../hashicorp/packer-plugin-amazon/LICENSE | 373 ++ .../builder}/chroot/builder.go | 2 +- .../builder}/chroot/builder.hcl2spec.go | 2 +- .../builder}/chroot/copy_files.go | 0 .../builder}/chroot/device.go | 0 .../builder}/chroot/lockfile.go | 0 .../builder}/chroot/lockfile_unix.go | 0 .../builder}/chroot/step_attach_volume.go | 2 +- .../builder}/chroot/step_check_root_device.go | 0 .../builder}/chroot/step_create_volume.go | 2 +- .../builder}/chroot/step_early_unflock.go | 0 .../builder}/chroot/step_flock.go | 0 .../builder}/chroot/step_instance_info.go | 0 .../builder}/chroot/step_mount_device.go | 0 .../builder}/chroot/step_prepare_device.go | 0 .../builder}/chroot/step_register_ami.go | 2 +- .../builder}/chroot/step_snapshot.go | 2 +- .../builder}/common/access_config.go | 2 +- .../builder}/common/access_config.hcl2spec.go | 0 .../builder}/common/ami_config.go | 0 .../builder}/common/ami_filter.go | 0 .../builder}/common/artifact.go | 0 .../builder}/common/awserrors/utils.go | 0 .../builder}/common/block_device.go | 0 .../builder}/common/block_device.hcl2spec.go | 0 .../builder}/common/build_filter.go | 0 .../builder}/common/errors.go | 0 .../builder}/common/helper_funcs.go | 2 +- .../builder}/common/interpolate_build_info.go | 0 .../builder}/common/regions.go | 0 .../builder}/common/run_config.go | 0 .../builder}/common/run_config.hcl2spec.go | 0 .../builder}/common/snapshot_config.go | 0 .../builder}/common/ssh.go | 0 .../builder}/common/ssm/session.go | 2 +- .../builder}/common/state.go | 0 .../builder}/common/state.hcl2spec.go | 0 .../builder}/common/step_ami_region_copy.go | 0 .../builder}/common/step_cleanup_volumes.go | 0 .../builder}/common/step_create_ssm_tunnel.go | 2 +- .../builder}/common/step_create_tags.go | 2 +- .../builder}/common/step_deregister_ami.go | 0 .../builder}/common/step_get_password.go | 0 .../common/step_iam_instance_profile.go | 0 .../builder}/common/step_key_pair.go | 0 .../common/step_modify_ami_attributes.go | 0 .../common/step_modify_ebs_instance.go | 0 .../builder}/common/step_network_info.go | 0 .../builder}/common/step_pre_validate.go | 2 +- .../common/step_run_source_instance.go | 2 +- .../builder}/common/step_run_spot_instance.go | 2 +- .../builder}/common/step_security_group.go | 0 .../common/step_set_generated_data.go | 0 .../builder}/common/step_source_ami_info.go | 0 .../builder}/common/step_stop_ebs_instance.go | 2 +- .../builder}/common/tags.go | 0 .../builder}/common/template_funcs.go | 0 .../builder}/common/test_helper_funcs.go | 0 .../builder}/ebs/builder.go | 2 +- .../builder}/ebs/builder.hcl2spec.go | 2 +- .../builder}/ebs/step_create_ami.go | 4 +- .../builder}/ebssurrogate/block_device.go | 2 +- .../builder}/ebssurrogate/builder.go | 2 +- .../builder}/ebssurrogate/builder.hcl2spec.go | 2 +- .../ebssurrogate/root_block_device.go | 0 .../ebssurrogate/step_register_ami.go | 2 +- .../ebssurrogate/step_snapshot_volumes.go | 2 +- .../builder}/ebsvolume/artifact.go | 0 .../builder}/ebsvolume/block_device.go | 2 +- .../builder}/ebsvolume/builder.go | 2 +- .../builder}/ebsvolume/builder.hcl2spec.go | 2 +- .../ebsvolume/step_snapshot_ebs_volumes.go | 2 +- .../ebsvolume/step_tag_ebs_volumes.go | 2 +- .../builder}/instance/builder.go | 2 +- .../builder}/instance/builder.hcl2spec.go | 2 +- .../builder}/instance/step_bundle_volume.go | 0 .../builder}/instance/step_register_ami.go | 2 +- .../builder}/instance/step_upload_bundle.go | 0 .../instance/step_upload_x509_cert.go | 0 .../datasource}/ami/data.go | 2 +- .../datasource}/ami/data.hcl2spec.go | 2 +- .../datasource}/secretsmanager/data.go | 4 +- .../secretsmanager/data.hcl2spec.go | 2 +- .../post-processor/import}/post-processor.go | 2 +- .../import}/post-processor.hcl2spec.go | 2 +- .../zclconf/go-cty/cty/convert/conversion.go | 27 +- .../cty/convert/conversion_collection.go | 57 +- .../go-cty/cty/convert/mismatch_msg.go | 4 + .../zclconf/go-cty/cty/convert/unify.go | 150 +- .../zclconf/go-cty/cty/function/function.go | 8 +- .../go-cty/cty/function/stdlib/collection.go | 12 +- .../go-cty/cty/function/stdlib/format.go | 2 +- .../go-cty/cty/function/stdlib/string.go | 3 +- .../zclconf/go-cty/cty/object_type.go | 2 +- vendor/github.com/zclconf/go-cty/cty/type.go | 41 + .../zclconf/go-cty/cty/value_init.go | 48 + .../zclconf/go-cty/cty/value_ops.go | 30 +- vendor/golang.org/x/sys/cpu/cpu_aix.go | 1 + vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go | 1 + vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go | 1 + vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 1 + .../golang.org/x/sys/cpu/cpu_gccgo_arm64.go | 1 + .../golang.org/x/sys/cpu/cpu_gccgo_s390x.go | 1 + vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go | 1 + vendor/golang.org/x/sys/cpu/cpu_linux.go | 1 + .../golang.org/x/sys/cpu/cpu_linux_mips64x.go | 1 + .../golang.org/x/sys/cpu/cpu_linux_noinit.go | 1 + .../golang.org/x/sys/cpu/cpu_linux_ppc64x.go | 1 + vendor/golang.org/x/sys/cpu/cpu_mips64x.go | 1 + vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 1 + vendor/golang.org/x/sys/cpu/cpu_other_arm.go | 1 + .../golang.org/x/sys/cpu/cpu_other_arm64.go | 4 +- .../golang.org/x/sys/cpu/cpu_other_mips64x.go | 1 + vendor/golang.org/x/sys/cpu/cpu_ppc64x.go | 1 + vendor/golang.org/x/sys/cpu/cpu_riscv64.go | 1 + vendor/golang.org/x/sys/cpu/cpu_wasm.go | 1 + vendor/golang.org/x/sys/cpu/cpu_x86.go | 1 + .../golang.org/x/sys/cpu/syscall_aix_gccgo.go | 4 +- .../x/sys/cpu/syscall_aix_ppc64_gc.go | 4 +- vendor/golang.org/x/sys/unix/aliases.go | 3 +- .../unix/{asm_freebsd_386.s => asm_bsd_386.s} | 10 +- .../{asm_darwin_amd64.s => asm_bsd_amd64.s} | 8 +- .../unix/{asm_freebsd_arm.s => asm_bsd_arm.s} | 8 +- .../{asm_netbsd_amd64.s => asm_bsd_arm64.s} | 8 +- vendor/golang.org/x/sys/unix/asm_darwin_386.s | 29 - vendor/golang.org/x/sys/unix/asm_darwin_arm.s | 30 - .../golang.org/x/sys/unix/asm_darwin_arm64.s | 30 - .../x/sys/unix/asm_dragonfly_amd64.s | 29 - .../golang.org/x/sys/unix/asm_freebsd_amd64.s | 29 - .../golang.org/x/sys/unix/asm_freebsd_arm64.s | 29 - vendor/golang.org/x/sys/unix/asm_netbsd_386.s | 29 - vendor/golang.org/x/sys/unix/asm_netbsd_arm.s | 29 - .../golang.org/x/sys/unix/asm_netbsd_arm64.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_386.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_amd64.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_arm.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_arm64.s | 29 - vendor/golang.org/x/sys/unix/asm_zos_s390x.s | 426 ++ vendor/golang.org/x/sys/unix/cap_freebsd.go | 1 + vendor/golang.org/x/sys/unix/constants.go | 3 +- vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 4 +- vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 4 +- vendor/golang.org/x/sys/unix/dev_zos.go | 29 + vendor/golang.org/x/sys/unix/dirent.go | 1 + vendor/golang.org/x/sys/unix/endian_big.go | 1 + vendor/golang.org/x/sys/unix/endian_little.go | 1 + vendor/golang.org/x/sys/unix/env_unix.go | 3 +- vendor/golang.org/x/sys/unix/epoll_zos.go | 221 + vendor/golang.org/x/sys/unix/fcntl.go | 1 + .../x/sys/unix/fcntl_linux_32bit.go | 1 + vendor/golang.org/x/sys/unix/fdset.go | 1 + vendor/golang.org/x/sys/unix/fstatfs_zos.go | 164 + vendor/golang.org/x/sys/unix/gccgo.go | 4 +- .../x/sys/unix/gccgo_linux_amd64.go | 1 + vendor/golang.org/x/sys/unix/ioctl.go | 1 + vendor/golang.org/x/sys/unix/ioctl_zos.go | 74 + vendor/golang.org/x/sys/unix/mkall.sh | 2 +- vendor/golang.org/x/sys/unix/mkerrors.sh | 23 +- vendor/golang.org/x/sys/unix/pagesize_unix.go | 1 + vendor/golang.org/x/sys/unix/ptrace_darwin.go | 1 + vendor/golang.org/x/sys/unix/ptrace_ios.go | 1 + vendor/golang.org/x/sys/unix/race.go | 1 + vendor/golang.org/x/sys/unix/race0.go | 3 +- .../x/sys/unix/readdirent_getdents.go | 1 + .../x/sys/unix/readdirent_getdirentries.go | 1 + vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 3 +- .../x/sys/unix/sockcmsg_unix_other.go | 7 +- vendor/golang.org/x/sys/unix/str.go | 1 + vendor/golang.org/x/sys/unix/syscall.go | 3 +- vendor/golang.org/x/sys/unix/syscall_aix.go | 13 +- .../golang.org/x/sys/unix/syscall_aix_ppc.go | 4 +- .../x/sys/unix/syscall_aix_ppc64.go | 4 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 9 +- .../x/sys/unix/syscall_darwin.1_12.go | 1 + .../x/sys/unix/syscall_darwin.1_13.go | 1 + .../golang.org/x/sys/unix/syscall_darwin.go | 19 +- .../x/sys/unix/syscall_darwin_386.go | 1 + .../x/sys/unix/syscall_darwin_amd64.go | 1 + .../x/sys/unix/syscall_darwin_arm64.go | 1 + .../x/sys/unix/syscall_darwin_libSystem.go | 1 + .../x/sys/unix/syscall_dragonfly.go | 18 +- .../x/sys/unix/syscall_dragonfly_amd64.go | 1 + .../golang.org/x/sys/unix/syscall_freebsd.go | 17 +- .../x/sys/unix/syscall_freebsd_386.go | 1 + .../x/sys/unix/syscall_freebsd_amd64.go | 1 + .../x/sys/unix/syscall_freebsd_arm.go | 1 + .../x/sys/unix/syscall_freebsd_arm64.go | 1 + .../golang.org/x/sys/unix/syscall_illumos.go | 54 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 108 +- .../x/sys/unix/syscall_linux_386.go | 7 +- .../x/sys/unix/syscall_linux_amd64.go | 3 +- .../x/sys/unix/syscall_linux_amd64_gc.go | 4 +- .../x/sys/unix/syscall_linux_arm.go | 11 +- .../x/sys/unix/syscall_linux_arm64.go | 3 +- .../golang.org/x/sys/unix/syscall_linux_gc.go | 1 + .../x/sys/unix/syscall_linux_gc_386.go | 1 + .../x/sys/unix/syscall_linux_gc_arm.go | 1 + .../x/sys/unix/syscall_linux_gccgo_386.go | 1 + .../x/sys/unix/syscall_linux_gccgo_arm.go | 1 + .../x/sys/unix/syscall_linux_mips64x.go | 3 +- .../x/sys/unix/syscall_linux_mipsx.go | 9 +- .../x/sys/unix/syscall_linux_ppc64x.go | 5 +- .../x/sys/unix/syscall_linux_riscv64.go | 3 +- .../x/sys/unix/syscall_linux_s390x.go | 5 +- .../x/sys/unix/syscall_linux_sparc64.go | 5 +- .../golang.org/x/sys/unix/syscall_netbsd.go | 21 +- .../x/sys/unix/syscall_netbsd_386.go | 1 + .../x/sys/unix/syscall_netbsd_amd64.go | 1 + .../x/sys/unix/syscall_netbsd_arm.go | 1 + .../x/sys/unix/syscall_netbsd_arm64.go | 1 + .../golang.org/x/sys/unix/syscall_openbsd.go | 4 +- .../x/sys/unix/syscall_openbsd_386.go | 1 + .../x/sys/unix/syscall_openbsd_amd64.go | 1 + .../x/sys/unix/syscall_openbsd_arm.go | 1 + .../x/sys/unix/syscall_openbsd_arm64.go | 1 + .../golang.org/x/sys/unix/syscall_solaris.go | 10 +- .../x/sys/unix/syscall_solaris_amd64.go | 1 + vendor/golang.org/x/sys/unix/syscall_unix.go | 1 + .../golang.org/x/sys/unix/syscall_unix_gc.go | 5 +- .../x/sys/unix/syscall_unix_gc_ppc64x.go | 1 + .../x/sys/unix/syscall_zos_s390x.go | 1781 +++++++ vendor/golang.org/x/sys/unix/timestruct.go | 3 +- vendor/golang.org/x/sys/unix/xattr_bsd.go | 1 + .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1 + .../x/sys/unix/zerrors_aix_ppc64.go | 1 + .../x/sys/unix/zerrors_darwin_386.go | 1 + .../x/sys/unix/zerrors_darwin_amd64.go | 63 +- .../x/sys/unix/zerrors_darwin_arm.go | 1 + .../x/sys/unix/zerrors_darwin_arm64.go | 63 +- .../x/sys/unix/zerrors_dragonfly_amd64.go | 1 + .../x/sys/unix/zerrors_freebsd_386.go | 7 + .../x/sys/unix/zerrors_freebsd_amd64.go | 7 + .../x/sys/unix/zerrors_freebsd_arm.go | 7 + .../x/sys/unix/zerrors_freebsd_arm64.go | 7 + vendor/golang.org/x/sys/unix/zerrors_linux.go | 23 +- .../x/sys/unix/zerrors_linux_386.go | 11 + .../x/sys/unix/zerrors_linux_amd64.go | 11 + .../x/sys/unix/zerrors_linux_arm.go | 11 + .../x/sys/unix/zerrors_linux_arm64.go | 12 + .../x/sys/unix/zerrors_linux_mips.go | 11 + .../x/sys/unix/zerrors_linux_mips64.go | 11 + .../x/sys/unix/zerrors_linux_mips64le.go | 11 + .../x/sys/unix/zerrors_linux_mipsle.go | 11 + .../x/sys/unix/zerrors_linux_ppc64.go | 11 + .../x/sys/unix/zerrors_linux_ppc64le.go | 11 + .../x/sys/unix/zerrors_linux_riscv64.go | 11 + .../x/sys/unix/zerrors_linux_s390x.go | 11 + .../x/sys/unix/zerrors_linux_sparc64.go | 11 + .../x/sys/unix/zerrors_netbsd_386.go | 1 + .../x/sys/unix/zerrors_netbsd_amd64.go | 1 + .../x/sys/unix/zerrors_netbsd_arm.go | 1 + .../x/sys/unix/zerrors_netbsd_arm64.go | 1 + .../x/sys/unix/zerrors_openbsd_386.go | 1 + .../x/sys/unix/zerrors_openbsd_amd64.go | 1 + .../x/sys/unix/zerrors_openbsd_arm.go | 1 + .../x/sys/unix/zerrors_openbsd_arm64.go | 1 + .../x/sys/unix/zerrors_openbsd_mips64.go | 1 + .../x/sys/unix/zerrors_solaris_amd64.go | 1 + .../x/sys/unix/zerrors_zos_s390x.go | 831 ++++ .../x/sys/unix/zptrace_armnn_linux.go | 1 + .../x/sys/unix/zptrace_mipsnn_linux.go | 1 + .../x/sys/unix/zptrace_mipsnnle_linux.go | 1 + .../x/sys/unix/zptrace_x86_linux.go | 1 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1 + .../x/sys/unix/zsyscall_aix_ppc64.go | 1 + .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 4 +- .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 4 +- .../x/sys/unix/zsyscall_darwin_386.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_386.go | 1 + .../x/sys/unix/zsyscall_darwin_amd64.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_amd64.go | 1 + .../x/sys/unix/zsyscall_darwin_arm.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_arm.go | 1 + .../x/sys/unix/zsyscall_darwin_arm64.1_13.go | 1 + .../x/sys/unix/zsyscall_darwin_arm64.go | 1 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 7 +- .../x/sys/unix/zsyscall_freebsd_386.go | 1 + .../x/sys/unix/zsyscall_freebsd_amd64.go | 1 + .../x/sys/unix/zsyscall_freebsd_arm.go | 1 + .../x/sys/unix/zsyscall_freebsd_arm64.go | 1 + .../x/sys/unix/zsyscall_illumos_amd64.go | 29 +- .../golang.org/x/sys/unix/zsyscall_linux.go | 11 + .../x/sys/unix/zsyscall_linux_386.go | 1 + .../x/sys/unix/zsyscall_linux_amd64.go | 1 + .../x/sys/unix/zsyscall_linux_arm.go | 1 + .../x/sys/unix/zsyscall_linux_arm64.go | 1 + .../x/sys/unix/zsyscall_linux_mips.go | 1 + .../x/sys/unix/zsyscall_linux_mips64.go | 1 + .../x/sys/unix/zsyscall_linux_mips64le.go | 1 + .../x/sys/unix/zsyscall_linux_mipsle.go | 1 + .../x/sys/unix/zsyscall_linux_ppc64.go | 1 + .../x/sys/unix/zsyscall_linux_ppc64le.go | 1 + .../x/sys/unix/zsyscall_linux_riscv64.go | 1 + .../x/sys/unix/zsyscall_linux_s390x.go | 1 + .../x/sys/unix/zsyscall_linux_sparc64.go | 1 + .../x/sys/unix/zsyscall_netbsd_386.go | 11 + .../x/sys/unix/zsyscall_netbsd_amd64.go | 11 + .../x/sys/unix/zsyscall_netbsd_arm.go | 11 + .../x/sys/unix/zsyscall_netbsd_arm64.go | 11 + .../x/sys/unix/zsyscall_openbsd_386.go | 1 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 1 + .../x/sys/unix/zsyscall_openbsd_arm.go | 1 + .../x/sys/unix/zsyscall_openbsd_arm64.go | 1 + .../x/sys/unix/zsyscall_openbsd_mips64.go | 1 + .../x/sys/unix/zsyscall_solaris_amd64.go | 20 +- .../x/sys/unix/zsyscall_zos_s390x.go | 1217 +++++ .../x/sys/unix/zsysctl_openbsd_386.go | 1 + .../x/sys/unix/zsysctl_openbsd_amd64.go | 1 + .../x/sys/unix/zsysctl_openbsd_arm.go | 1 + .../x/sys/unix/zsysctl_openbsd_arm64.go | 1 + .../x/sys/unix/zsysctl_openbsd_mips64.go | 1 + .../x/sys/unix/zsysnum_darwin_386.go | 1 + .../x/sys/unix/zsysnum_darwin_amd64.go | 1 + .../x/sys/unix/zsysnum_darwin_arm.go | 1 + .../x/sys/unix/zsysnum_darwin_arm64.go | 1 + .../x/sys/unix/zsysnum_dragonfly_amd64.go | 1 + .../x/sys/unix/zsysnum_freebsd_386.go | 1 + .../x/sys/unix/zsysnum_freebsd_amd64.go | 1 + .../x/sys/unix/zsysnum_freebsd_arm.go | 1 + .../x/sys/unix/zsysnum_freebsd_arm64.go | 1 + .../x/sys/unix/zsysnum_linux_386.go | 2 + .../x/sys/unix/zsysnum_linux_amd64.go | 2 + .../x/sys/unix/zsysnum_linux_arm.go | 2 + .../x/sys/unix/zsysnum_linux_arm64.go | 2 + .../x/sys/unix/zsysnum_linux_mips.go | 2 + .../x/sys/unix/zsysnum_linux_mips64.go | 2 + .../x/sys/unix/zsysnum_linux_mips64le.go | 2 + .../x/sys/unix/zsysnum_linux_mipsle.go | 2 + .../x/sys/unix/zsysnum_linux_ppc64.go | 2 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 2 + .../x/sys/unix/zsysnum_linux_riscv64.go | 2 + .../x/sys/unix/zsysnum_linux_s390x.go | 2 + .../x/sys/unix/zsysnum_linux_sparc64.go | 2 + .../x/sys/unix/zsysnum_netbsd_386.go | 1 + .../x/sys/unix/zsysnum_netbsd_amd64.go | 1 + .../x/sys/unix/zsysnum_netbsd_arm.go | 1 + .../x/sys/unix/zsysnum_netbsd_arm64.go | 1 + .../x/sys/unix/zsysnum_openbsd_386.go | 1 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 1 + .../x/sys/unix/zsysnum_openbsd_arm.go | 1 + .../x/sys/unix/zsysnum_openbsd_arm64.go | 1 + .../x/sys/unix/zsysnum_openbsd_mips64.go | 1 + .../x/sys/unix/zsysnum_zos_s390x.go | 2670 +++++++++++ .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 1 + .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 1 + .../x/sys/unix/ztypes_darwin_386.go | 1 + .../x/sys/unix/ztypes_darwin_amd64.go | 9 + .../x/sys/unix/ztypes_darwin_arm.go | 1 + .../x/sys/unix/ztypes_darwin_arm64.go | 9 + .../x/sys/unix/ztypes_dragonfly_amd64.go | 1 + .../x/sys/unix/ztypes_freebsd_386.go | 10 + .../x/sys/unix/ztypes_freebsd_amd64.go | 10 + .../x/sys/unix/ztypes_freebsd_arm.go | 10 + .../x/sys/unix/ztypes_freebsd_arm64.go | 10 + .../x/sys/unix/ztypes_illumos_amd64.go | 40 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 46 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 1 + .../x/sys/unix/ztypes_linux_amd64.go | 1 + .../golang.org/x/sys/unix/ztypes_linux_arm.go | 1 + .../x/sys/unix/ztypes_linux_arm64.go | 1 + .../x/sys/unix/ztypes_linux_mips.go | 1 + .../x/sys/unix/ztypes_linux_mips64.go | 1 + .../x/sys/unix/ztypes_linux_mips64le.go | 1 + .../x/sys/unix/ztypes_linux_mipsle.go | 1 + .../x/sys/unix/ztypes_linux_ppc64.go | 1 + .../x/sys/unix/ztypes_linux_ppc64le.go | 1 + .../x/sys/unix/ztypes_linux_riscv64.go | 1 + .../x/sys/unix/ztypes_linux_s390x.go | 1 + .../x/sys/unix/ztypes_linux_sparc64.go | 1 + .../x/sys/unix/ztypes_netbsd_386.go | 1 + .../x/sys/unix/ztypes_netbsd_amd64.go | 1 + .../x/sys/unix/ztypes_netbsd_arm.go | 1 + .../x/sys/unix/ztypes_netbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_386.go | 1 + .../x/sys/unix/ztypes_openbsd_amd64.go | 1 + .../x/sys/unix/ztypes_openbsd_arm.go | 1 + .../x/sys/unix/ztypes_openbsd_arm64.go | 1 + .../x/sys/unix/ztypes_openbsd_mips64.go | 1 + .../x/sys/unix/ztypes_solaris_amd64.go | 1 + .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 402 ++ .../golang.org/x/sys/windows/exec_windows.go | 35 + vendor/golang.org/x/sys/windows/mkerrors.bash | 7 + .../x/sys/windows/security_windows.go | 13 + .../x/sys/windows/syscall_windows.go | 190 +- .../golang.org/x/sys/windows/types_windows.go | 681 +++ .../x/sys/windows/types_windows_arm64.go | 34 + .../x/sys/windows/zerrors_windows.go | 2619 ++++++++++- .../x/sys/windows/zsyscall_windows.go | 337 +- vendor/modules.txt | 34 +- .../content/docs/builders/amazon/chroot.mdx | 589 --- website/content/docs/builders/amazon/ebs.mdx | 685 --- .../docs/builders/amazon/ebssurrogate.mdx | 368 -- .../docs/builders/amazon/ebsvolume.mdx | 393 -- .../content/docs/builders/amazon/index.mdx | 369 -- .../content/docs/builders/amazon/instance.mdx | 385 -- .../content/docs/datasources/amazon/ami.mdx | 41 - .../content/docs/datasources/amazon/index.mdx | 42 - .../datasources/amazon/secretsmanager.mdx | 51 - .../plugins/creation/custom-datasources.mdx | 2 +- .../docs/post-processors/amazon-import.mdx | 257 - .../hcl_templates/contextual-variables.mdx | 10 +- .../legacy_json_templates/engine.mdx | 10 +- .../guides/hcl/component-object-spec.mdx | 2 +- .../amazon/chroot/Config-not-required.mdx | 154 - .../builder/amazon/chroot/Config-required.mdx | 6 - .../partials/builder/amazon/chroot/Config.mdx | 4 - .../amazon/common/AMIConfig-not-required.mdx | 118 - .../amazon/common/AMIConfig-required.mdx | 6 - .../builder/amazon/common/AMIConfig.mdx | 3 - .../common/AWSPollingConfig-not-required.mdx | 11 - .../amazon/common/AWSPollingConfig.mdx | 20 - .../common/AccessConfig-not-required.mdx | 92 - .../amazon/common/AccessConfig-required.mdx | 14 - .../builder/amazon/common/AccessConfig.mdx | 3 - .../common/AmiFilterOptions-not-required.mdx | 14 - .../common/AssumeRoleConfig-not-required.mdx | 20 - .../amazon/common/AssumeRoleConfig.mdx | 31 - .../common/BlockDevice-not-required.mdx | 49 - .../builder/amazon/common/BlockDevice.mdx | 36 - .../common/MetadataOptions-not-required.mdx | 10 - .../builder/amazon/common/MetadataOptions.mdx | 4 - .../common/PolicyDocument-not-required.mdx | 5 - .../amazon/common/RunConfig-not-required.mdx | 414 -- .../amazon/common/RunConfig-required.mdx | 8 - .../builder/amazon/common/RunConfig.mdx | 4 - .../common/SnapshotConfig-not-required.mdx | 21 - .../builder/amazon/common/SnapshotConfig.mdx | 3 - .../builder/amazon/common/StateChangeConf.mdx | 3 - .../amazon/common/Statement-not-required.mdx | 7 - .../SubnetFilterOptions-not-required.mdx | 5 - .../VaultAWSEngineOptions-not-required.mdx | 17 - .../amazon/ebs/Config-not-required.mdx | 41 - .../ebssurrogate/BlockDevice-not-required.mdx | 7 - .../ebssurrogate/Config-not-required.mdx | 31 - .../amazon/ebssurrogate/Config-required.mdx | 9 - .../RootBlockDevice-not-required.mdx | 26 - .../ebsvolume/BlockDevice-not-required.mdx | 12 - .../amazon/ebsvolume/Config-not-required.mdx | 43 - .../amazon/instance/Config-not-required.mdx | 38 - .../amazon/instance/Config-required.mdx | 15 - .../builder/amazon/instance/Config.mdx | 4 - .../builders/aws-common-block-device-a-i.mdx | 19 - .../builders/aws-common-block-device-i-v.mdx | 17 - .../builders/aws-common-opional-fields.mdx | 7 - .../partials/builders/aws-session-manager.mdx | 102 - .../partials/builders/aws-spot-docs.mdx | 32 - .../aws-ssh-differentiation-table.mdx | 11 - website/content/partials/datasource/.gitkeep | 0 .../amazon/ami/DatasourceOutput.mdx | 13 - .../secretsmanager/Config-not-required.mdx | 10 - .../amazon/secretsmanager/Config-required.mdx | 4 - .../secretsmanager/DatasourceOutput.mdx | 12 - website/data/docs-nav-data.json | 50 - website/data/docs-navigation.js | 336 -- website/data/docs-remote-plugins.json | 6 + 599 files changed, 21566 insertions(+), 16720 deletions(-) delete mode 100644 builder/amazon/chroot/builder_test.go delete mode 100644 builder/amazon/chroot/copy_files_test.go delete mode 100644 builder/amazon/chroot/device_test.go delete mode 100644 builder/amazon/chroot/step_attach_volume_test.go delete mode 100644 builder/amazon/chroot/step_create_volume_test.go delete mode 100644 builder/amazon/chroot/step_flock_test.go delete mode 100644 builder/amazon/chroot/step_mount_device_test.go delete mode 100644 builder/amazon/chroot/step_register_ami_test.go delete mode 100644 builder/amazon/common/access_config_test.go delete mode 100644 builder/amazon/common/ami_config_test.go delete mode 100644 builder/amazon/common/artifact_test.go delete mode 100644 builder/amazon/common/block_device_test.go delete mode 100644 builder/amazon/common/build_filter_test.go delete mode 100644 builder/amazon/common/errors_test.go delete mode 100644 builder/amazon/common/interpolate_build_info_test.go delete mode 100644 builder/amazon/common/run_config_test.go delete mode 100644 builder/amazon/common/ssh_test.go delete mode 100644 builder/amazon/common/state_test.go delete mode 100644 builder/amazon/common/step_ami_region_copy_test.go delete mode 100644 builder/amazon/common/step_pre_validate_test.go delete mode 100644 builder/amazon/common/step_run_spot_instance_test.go delete mode 100644 builder/amazon/common/step_source_ami_info_test.go delete mode 100644 builder/amazon/common/template_funcs_test.go delete mode 100644 builder/amazon/ebs/acceptance/aws.go delete mode 100644 builder/amazon/ebs/acceptance/builder_acceptance.go delete mode 100644 builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs.txt delete mode 100644 builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs_windows.txt delete mode 100644 builder/amazon/ebs/acceptance/test-fixtures/scripts/bootstrap_win.txt delete mode 100644 builder/amazon/ebs/builder_acc_test.go delete mode 100644 builder/amazon/ebs/builder_test.go delete mode 100644 builder/amazon/ebs/tags_acc_test.go delete mode 100644 builder/amazon/ebssurrogate/builder_test.go delete mode 100644 builder/amazon/ebssurrogate/step_register_ami_test.go delete mode 100644 builder/amazon/ebsvolume/artifact_test.go delete mode 100644 builder/amazon/ebsvolume/builder_test.go delete mode 100644 builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go delete mode 100644 builder/amazon/examples/apache_server/README.Md delete mode 100644 builder/amazon/examples/apache_server/apache.json delete mode 100644 builder/amazon/examples/apache_server/packages.sh delete mode 100644 builder/amazon/examples/nginx_server/README.Md delete mode 100644 builder/amazon/examples/nginx_server/nginx.json delete mode 100644 builder/amazon/examples/nginx_server/packages.sh delete mode 100644 builder/amazon/instance/builder_test.go delete mode 100644 builder/amazon/version/version.go delete mode 100644 cmd/packer-plugin-amazon/main.go delete mode 100644 datasource/amazon/ami/data_acc_test.go delete mode 100644 datasource/amazon/ami/data_test.go delete mode 100644 datasource/amazon/ami/test-fixtures/configure-source-ssh.ps1 delete mode 100644 datasource/amazon/secretsmanager/data_acc_test.go delete mode 100644 datasource/amazon/secretsmanager/data_test.go delete mode 100644 post-processor/amazon-import/version/version.go delete mode 100644 vendor/github.com/apparentlymart/go-textseg/v12/textseg/emoji_table.rl delete mode 100644 vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters.go rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/LICENSE (100%) rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/all_tokens.go (100%) create mode 100644 vendor/github.com/apparentlymart/go-textseg/v13/textseg/emoji_table.rl rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/generate.go (74%) create mode 100644 vendor/github.com/apparentlymart/go-textseg/v13/textseg/grapheme_clusters.go rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/grapheme_clusters.rl (100%) rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/grapheme_clusters_table.rl (98%) rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/tables.go (100%) rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/unicode2ragel.rb (99%) rename vendor/github.com/apparentlymart/go-textseg/{v12 => v13}/textseg/utf8_seqs.go (100%) create mode 100644 vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/s3_object_lambda_arn.go create mode 100644 vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/arn.go create mode 100644 vendor/github.com/google/go-cmp/cmp/cmpopts/errors_go113.go create mode 100644 vendor/github.com/google/go-cmp/cmp/cmpopts/errors_xerrors.go delete mode 100644 vendor/github.com/hashicorp/go-multierror/.travis.yml delete mode 100644 vendor/github.com/hashicorp/hcl/v2/appveyor.yml create mode 100644 vendor/github.com/hashicorp/packer-plugin-amazon/LICENSE rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/builder.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/builder.hcl2spec.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/copy_files.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/device.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/lockfile.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/lockfile_unix.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_attach_volume.go (97%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_check_root_device.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_create_volume.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_early_unflock.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_flock.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_instance_info.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_mount_device.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_prepare_device.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_register_ami.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/chroot/step_snapshot.go (96%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/access_config.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/access_config.hcl2spec.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/ami_config.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/ami_filter.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/artifact.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/awserrors/utils.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/block_device.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/block_device.hcl2spec.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/build_filter.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/errors.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/helper_funcs.go (96%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/interpolate_build_info.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/regions.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/run_config.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/run_config.hcl2spec.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/snapshot_config.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/ssh.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/ssm/session.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/state.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/state.hcl2spec.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_ami_region_copy.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_cleanup_volumes.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_create_ssm_tunnel.go (97%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_create_tags.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_deregister_ami.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_get_password.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_iam_instance_profile.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_key_pair.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_modify_ami_attributes.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_modify_ebs_instance.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_network_info.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_pre_validate.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_run_source_instance.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_run_spot_instance.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_security_group.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_set_generated_data.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_source_ami_info.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/step_stop_ebs_instance.go (97%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/tags.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/template_funcs.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/common/test_helper_funcs.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebs/builder.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebs/builder.hcl2spec.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebs/step_create_ami.go (97%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebssurrogate/block_device.go (95%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebssurrogate/builder.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebssurrogate/builder.hcl2spec.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebssurrogate/root_block_device.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebssurrogate/step_register_ami.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebssurrogate/step_snapshot_volumes.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebsvolume/artifact.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebsvolume/block_device.go (96%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebsvolume/builder.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebsvolume/builder.hcl2spec.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebsvolume/step_snapshot_ebs_volumes.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/ebsvolume/step_tag_ebs_volumes.go (98%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/instance/builder.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/instance/builder.hcl2spec.go (99%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/instance/step_bundle_volume.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/instance/step_register_ami.go (97%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/instance/step_upload_bundle.go (100%) rename {builder/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/builder}/instance/step_upload_x509_cert.go (100%) rename {datasource/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/datasource}/ami/data.go (97%) rename {datasource/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/datasource}/ami/data.hcl2spec.go (99%) rename {datasource/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/datasource}/secretsmanager/data.go (97%) rename {datasource/amazon => vendor/github.com/hashicorp/packer-plugin-amazon/datasource}/secretsmanager/data.hcl2spec.go (99%) rename {post-processor/amazon-import => vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import}/post-processor.go (99%) rename {post-processor/amazon-import => vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import}/post-processor.hcl2spec.go (99%) rename vendor/golang.org/x/sys/unix/{asm_freebsd_386.s => asm_bsd_386.s} (70%) rename vendor/golang.org/x/sys/unix/{asm_darwin_amd64.s => asm_bsd_amd64.s} (72%) rename vendor/golang.org/x/sys/unix/{asm_freebsd_arm.s => asm_bsd_arm.s} (74%) rename vendor/golang.org/x/sys/unix/{asm_netbsd_amd64.s => asm_bsd_arm64.s} (75%) delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_zos_s390x.s create mode 100644 vendor/golang.org/x/sys/unix/dev_zos.go create mode 100644 vendor/golang.org/x/sys/unix/epoll_zos.go create mode 100644 vendor/golang.org/x/sys/unix/fstatfs_zos.go create mode 100644 vendor/golang.org/x/sys/unix/ioctl_zos.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm64.go delete mode 100644 website/content/docs/builders/amazon/chroot.mdx delete mode 100644 website/content/docs/builders/amazon/ebs.mdx delete mode 100644 website/content/docs/builders/amazon/ebssurrogate.mdx delete mode 100644 website/content/docs/builders/amazon/ebsvolume.mdx delete mode 100644 website/content/docs/builders/amazon/index.mdx delete mode 100644 website/content/docs/builders/amazon/instance.mdx delete mode 100644 website/content/docs/datasources/amazon/ami.mdx delete mode 100644 website/content/docs/datasources/amazon/index.mdx delete mode 100644 website/content/docs/datasources/amazon/secretsmanager.mdx delete mode 100644 website/content/docs/post-processors/amazon-import.mdx delete mode 100644 website/content/partials/builder/amazon/chroot/Config-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/chroot/Config-required.mdx delete mode 100644 website/content/partials/builder/amazon/chroot/Config.mdx delete mode 100644 website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AMIConfig-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AMIConfig.mdx delete mode 100644 website/content/partials/builder/amazon/common/AWSPollingConfig-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AWSPollingConfig.mdx delete mode 100644 website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AccessConfig-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AccessConfig.mdx delete mode 100644 website/content/partials/builder/amazon/common/AmiFilterOptions-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AssumeRoleConfig-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx delete mode 100644 website/content/partials/builder/amazon/common/BlockDevice-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/BlockDevice.mdx delete mode 100644 website/content/partials/builder/amazon/common/MetadataOptions-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/MetadataOptions.mdx delete mode 100644 website/content/partials/builder/amazon/common/PolicyDocument-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/RunConfig-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/RunConfig-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/RunConfig.mdx delete mode 100644 website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/SnapshotConfig.mdx delete mode 100644 website/content/partials/builder/amazon/common/StateChangeConf.mdx delete mode 100644 website/content/partials/builder/amazon/common/Statement-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/SubnetFilterOptions-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/common/VaultAWSEngineOptions-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebs/Config-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebssurrogate/BlockDevice-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebssurrogate/Config-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebssurrogate/Config-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebssurrogate/RootBlockDevice-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/ebsvolume/Config-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/instance/Config-not-required.mdx delete mode 100644 website/content/partials/builder/amazon/instance/Config-required.mdx delete mode 100644 website/content/partials/builder/amazon/instance/Config.mdx delete mode 100644 website/content/partials/builders/aws-common-block-device-a-i.mdx delete mode 100644 website/content/partials/builders/aws-common-block-device-i-v.mdx delete mode 100644 website/content/partials/builders/aws-common-opional-fields.mdx delete mode 100644 website/content/partials/builders/aws-session-manager.mdx delete mode 100644 website/content/partials/builders/aws-spot-docs.mdx delete mode 100644 website/content/partials/builders/aws-ssh-differentiation-table.mdx create mode 100644 website/content/partials/datasource/.gitkeep delete mode 100644 website/content/partials/datasource/amazon/ami/DatasourceOutput.mdx delete mode 100644 website/content/partials/datasource/amazon/secretsmanager/Config-not-required.mdx delete mode 100644 website/content/partials/datasource/amazon/secretsmanager/Config-required.mdx delete mode 100644 website/content/partials/datasource/amazon/secretsmanager/DatasourceOutput.mdx delete mode 100644 website/data/docs-navigation.js diff --git a/builder/amazon/chroot/builder_test.go b/builder/amazon/chroot/builder_test.go deleted file mode 100644 index 69502f3d6..000000000 --- a/builder/amazon/chroot/builder_test.go +++ /dev/null @@ -1,251 +0,0 @@ -package chroot - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func testConfig() map[string]interface{} { - return map[string]interface{}{ - "ami_name": "foo", - "source_ami": "foo", - "region": "us-east-1", - // region validation logic is checked in ami_config_test - "skip_region_validation": true, - } -} - -func TestBuilder_ImplementsBuilder(t *testing.T) { - var raw interface{} - raw = &Builder{} - if _, ok := raw.(packersdk.Builder); !ok { - t.Fatalf("Builder should be a builder") - } -} - -func TestBuilderPrepare_AMIName(t *testing.T) { - var b Builder - config := testConfig() - - // Test good - config["ami_name"] = "foo" - config["skip_region_validation"] = true - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test bad - config["ami_name"] = "foo {{" - b = Builder{} - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - // Test bad - delete(config, "ami_name") - b = Builder{} - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_ChrootMounts(t *testing.T) { - b := &Builder{} - config := testConfig() - - config["chroot_mounts"] = nil - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } -} - -func TestBuilderPrepare_ChrootMountsBadDefaults(t *testing.T) { - b := &Builder{} - config := testConfig() - - config["chroot_mounts"] = [][]string{ - {"bad"}, - } - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} -func TestBuilderPrepare_SourceAmi(t *testing.T) { - b := &Builder{} - config := testConfig() - - config["source_ami"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - config["source_ami"] = "foo" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } -} - -func TestBuilderPrepare_CommandWrapper(t *testing.T) { - b := &Builder{} - config := testConfig() - - config["command_wrapper"] = "echo hi; {{.Command}}" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } -} - -func TestBuilderPrepare_CopyFiles(t *testing.T) { - b := &Builder{} - config := testConfig() - - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } - - if len(b.config.CopyFiles) != 1 && b.config.CopyFiles[0] != "/etc/resolv.conf" { - t.Errorf("Was expecting default value for copy_files.") - } -} - -func TestBuilderPrepare_CopyFilesNoDefault(t *testing.T) { - b := &Builder{} - config := testConfig() - - config["copy_files"] = []string{} - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } - - if len(b.config.CopyFiles) > 0 { - t.Errorf("Was expecting no default value for copy_files. Found %v", - b.config.CopyFiles) - } -} - -func TestBuilderPrepare_RootDeviceNameAndAMIMappings(t *testing.T) { - var b Builder - config := testConfig() - - config["root_device_name"] = "/dev/sda" - config["ami_block_device_mappings"] = []interface{}{map[string]string{}} - config["root_volume_size"] = 15 - _, warnings, err := b.Prepare(config) - if len(warnings) == 0 { - t.Fatal("Missing warning, stating block device mappings will be overwritten") - } else if len(warnings) > 1 { - t.Fatalf("excessive warnings: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } -} - -func TestBuilderPrepare_AMIMappingsNoRootDeviceName(t *testing.T) { - var b Builder - config := testConfig() - - config["ami_block_device_mappings"] = []interface{}{map[string]string{}} - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatalf("should have error") - } -} - -func TestBuilderPrepare_RootDeviceNameNoAMIMappings(t *testing.T) { - var b Builder - config := testConfig() - - config["root_device_name"] = "/dev/sda" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatalf("should have error") - } -} - -func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { - var b Builder - config := testConfig() - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if generatedData[0] != "SourceAMIName" { - t.Fatalf("Generated data should contain SourceAMIName") - } - if generatedData[1] != "BuildRegion" { - t.Fatalf("Generated data should contain BuildRegion") - } - if generatedData[2] != "SourceAMI" { - t.Fatalf("Generated data should contain SourceAMI") - } - if generatedData[3] != "SourceAMICreationDate" { - t.Fatalf("Generated data should contain SourceAMICreationDate") - } - if generatedData[4] != "SourceAMIOwner" { - t.Fatalf("Generated data should contain SourceAMIOwner") - } - if generatedData[5] != "SourceAMIOwnerName" { - t.Fatalf("Generated data should contain SourceAMIOwnerName") - } - if generatedData[6] != "Device" { - t.Fatalf("Generated data should contain Device") - } - if generatedData[7] != "MountPath" { - t.Fatalf("Generated data should contain MountPath") - } -} diff --git a/builder/amazon/chroot/copy_files_test.go b/builder/amazon/chroot/copy_files_test.go deleted file mode 100644 index fe6b27e88..000000000 --- a/builder/amazon/chroot/copy_files_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package chroot - -import ( - "fmt" - "io/ioutil" - "os" - "runtime" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/common" -) - -func TestCopyFile(t *testing.T) { - if runtime.GOOS == "windows" { - return - } - - first, err := ioutil.TempFile("", "copy_files_test") - if err != nil { - t.Fatalf("couldn't create temp file.") - } - defer os.Remove(first.Name()) - newName := first.Name() + "-new" - - payload := "copy_files_test.go payload" - if _, err = first.WriteString(payload); err != nil { - t.Fatalf("Couldn't write payload to first file.") - } - first.Sync() - - cmd := common.ShellCommand(fmt.Sprintf("cp %s %s", first.Name(), newName)) - if err := cmd.Run(); err != nil { - t.Fatalf("Couldn't copy file") - } - defer os.Remove(newName) - - second, err := os.Open(newName) - if err != nil { - t.Fatalf("Couldn't open copied file.") - } - defer second.Close() - - var copiedPayload = make([]byte, len(payload)) - if _, err := second.Read(copiedPayload); err != nil { - t.Fatalf("Couldn't open copied file for reading.") - } - - if string(copiedPayload) != payload { - t.Fatalf("payload not copied.") - } -} diff --git a/builder/amazon/chroot/device_test.go b/builder/amazon/chroot/device_test.go deleted file mode 100644 index a47fc7dff..000000000 --- a/builder/amazon/chroot/device_test.go +++ /dev/null @@ -1,10 +0,0 @@ -package chroot - -import "testing" - -func TestDevicePrefixMatch(t *testing.T) { - /* - if devicePrefixMatch("nvme0n1") != "" { - } - */ -} diff --git a/builder/amazon/chroot/step_attach_volume_test.go b/builder/amazon/chroot/step_attach_volume_test.go deleted file mode 100644 index 72f8b24f0..000000000 --- a/builder/amazon/chroot/step_attach_volume_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package chroot - -import ( - "testing" - - "github.com/hashicorp/packer-plugin-sdk/chroot" -) - -func TestAttachVolumeCleanupFunc_ImplementsCleanupFunc(t *testing.T) { - var raw interface{} - raw = new(StepAttachVolume) - if _, ok := raw.(chroot.Cleanup); !ok { - t.Fatalf("cleanup func should be a CleanupFunc") - } -} diff --git a/builder/amazon/chroot/step_create_volume_test.go b/builder/amazon/chroot/step_create_volume_test.go deleted file mode 100644 index 22cb82a75..000000000 --- a/builder/amazon/chroot/step_create_volume_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package chroot - -import ( - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - confighelper "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/stretchr/testify/assert" -) - -func buildTestRootDevice() *ec2.BlockDeviceMapping { - return &ec2.BlockDeviceMapping{ - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(10), - SnapshotId: aws.String("snap-1234"), - VolumeType: aws.String("gp2"), - Encrypted: aws.Bool(false), - }, - } -} - -func TestCreateVolume_Default(t *testing.T) { - stepCreateVolume := new(StepCreateVolume) - _, err := stepCreateVolume.buildCreateVolumeInput("test-az", buildTestRootDevice()) - assert.NoError(t, err) -} - -func TestCreateVolume_Shrink(t *testing.T) { - stepCreateVolume := StepCreateVolume{RootVolumeSize: 1} - testRootDevice := buildTestRootDevice() - ret, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.NoError(t, err) - // Ensure that the new value is equal to the size of the old root device - assert.Equal(t, *ret.Size, *testRootDevice.Ebs.VolumeSize) -} - -func TestCreateVolume_Expand(t *testing.T) { - stepCreateVolume := StepCreateVolume{RootVolumeSize: 25} - testRootDevice := buildTestRootDevice() - ret, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.NoError(t, err) - // Ensure that the new value is equal to the size of the value passed in - assert.Equal(t, *ret.Size, stepCreateVolume.RootVolumeSize) -} - -func TestCreateVolume_io1_to_io1(t *testing.T) { - stepCreateVolume := StepCreateVolume{RootVolumeType: "io1"} - testRootDevice := buildTestRootDevice() - testRootDevice.Ebs.VolumeType = aws.String("io1") - testRootDevice.Ebs.Iops = aws.Int64(1000) - ret, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.NoError(t, err) - assert.Equal(t, *ret.VolumeType, stepCreateVolume.RootVolumeType) - assert.Equal(t, *ret.Iops, *testRootDevice.Ebs.Iops) -} - -func TestCreateVolume_io1_to_gp2(t *testing.T) { - stepCreateVolume := StepCreateVolume{RootVolumeType: "gp2"} - testRootDevice := buildTestRootDevice() - testRootDevice.Ebs.VolumeType = aws.String("io1") - testRootDevice.Ebs.Iops = aws.Int64(1000) - - ret, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.NoError(t, err) - assert.Equal(t, *ret.VolumeType, stepCreateVolume.RootVolumeType) - assert.Nil(t, ret.Iops) -} - -func TestCreateVolume_gp2_to_io1(t *testing.T) { - stepCreateVolume := StepCreateVolume{RootVolumeType: "io1"} - testRootDevice := buildTestRootDevice() - - _, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.Error(t, err) -} - -func TestCreateVolume_Encrypted(t *testing.T) { - stepCreateVolume := StepCreateVolume{RootVolumeEncryptBoot: confighelper.TrileanFromBool(true)} - testRootDevice := buildTestRootDevice() - ret, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.NoError(t, err) - // Ensure that the new value is equal to the the value passed in - assert.Equal(t, confighelper.TrileanFromBool(*ret.Encrypted), stepCreateVolume.RootVolumeEncryptBoot) -} - -func TestCreateVolume_Custom_KMS_Key_Encrypted(t *testing.T) { - stepCreateVolume := StepCreateVolume{ - RootVolumeEncryptBoot: confighelper.TrileanFromBool(true), - RootVolumeKmsKeyId: "alias/1234", - } - testRootDevice := buildTestRootDevice() - ret, err := stepCreateVolume.buildCreateVolumeInput("test-az", testRootDevice) - assert.NoError(t, err) - // Ensure that the new value is equal to the value passed in - assert.Equal(t, *ret.KmsKeyId, stepCreateVolume.RootVolumeKmsKeyId) -} diff --git a/builder/amazon/chroot/step_flock_test.go b/builder/amazon/chroot/step_flock_test.go deleted file mode 100644 index ea113861f..000000000 --- a/builder/amazon/chroot/step_flock_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package chroot - -import ( - "testing" - - "github.com/hashicorp/packer-plugin-sdk/chroot" -) - -func TestFlockCleanupFunc_ImplementsCleanupFunc(t *testing.T) { - var raw interface{} - raw = new(StepFlock) - if _, ok := raw.(chroot.Cleanup); !ok { - t.Fatalf("cleanup func should be a CleanupFunc") - } -} diff --git a/builder/amazon/chroot/step_mount_device_test.go b/builder/amazon/chroot/step_mount_device_test.go deleted file mode 100644 index 9c0433245..000000000 --- a/builder/amazon/chroot/step_mount_device_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package chroot - -import ( - "testing" - - "github.com/hashicorp/packer-plugin-sdk/chroot" -) - -func TestMountDeviceCleanupFunc_ImplementsCleanupFunc(t *testing.T) { - var raw interface{} - raw = new(StepMountDevice) - if _, ok := raw.(chroot.Cleanup); !ok { - t.Fatalf("cleanup func should be a CleanupFunc") - } -} diff --git a/builder/amazon/chroot/step_register_ami_test.go b/builder/amazon/chroot/step_register_ami_test.go deleted file mode 100644 index bf86249e8..000000000 --- a/builder/amazon/chroot/step_register_ami_test.go +++ /dev/null @@ -1,216 +0,0 @@ -package chroot - -import ( - "testing" - - "github.com/hashicorp/packer-plugin-sdk/common" - amazon "github.com/hashicorp/packer/builder/amazon/common" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" -) - -func testImage() ec2.Image { - return ec2.Image{ - ImageId: aws.String("ami-abcd1234"), - Name: aws.String("ami_test_name"), - Architecture: aws.String("x86_64"), - KernelId: aws.String("aki-abcd1234"), - } -} - -func TestStepRegisterAmi_buildRegisterOpts_pv(t *testing.T) { - config := Config{} - config.AMIName = "test_ami_name" - config.AMIDescription = "test_ami_description" - config.AMIVirtType = "paravirtual" - rootDeviceName := "foo" - - image := testImage() - - blockDevices := []*ec2.BlockDeviceMapping{} - - opts := buildRegisterOptsFromExistingImage(&config, &image, blockDevices, rootDeviceName, config.AMIName) - - expected := config.AMIVirtType - if *opts.VirtualizationType != expected { - t.Fatalf("Unexpected VirtType value: expected %s got %s\n", expected, *opts.VirtualizationType) - } - - expected = config.AMIName - if *opts.Name != expected { - t.Fatalf("Unexpected Name value: expected %s got %s\n", expected, *opts.Name) - } - - expected = *image.KernelId - if *opts.KernelId != expected { - t.Fatalf("Unexpected KernelId value: expected %s got %s\n", expected, *opts.KernelId) - } - - expected = rootDeviceName - if *opts.RootDeviceName != expected { - t.Fatalf("Unexpected RootDeviceName value: expected %s got %s\n", expected, *opts.RootDeviceName) - } -} - -func TestStepRegisterAmi_buildRegisterOpts_hvm(t *testing.T) { - config := Config{} - config.AMIName = "test_ami_name" - config.AMIDescription = "test_ami_description" - config.AMIVirtType = "hvm" - rootDeviceName := "foo" - - image := testImage() - - blockDevices := []*ec2.BlockDeviceMapping{} - - opts := buildRegisterOptsFromExistingImage(&config, &image, blockDevices, rootDeviceName, config.AMIName) - - expected := config.AMIVirtType - if *opts.VirtualizationType != expected { - t.Fatalf("Unexpected VirtType value: expected %s got %s\n", expected, *opts.VirtualizationType) - } - - expected = config.AMIName - if *opts.Name != expected { - t.Fatalf("Unexpected Name value: expected %s got %s\n", expected, *opts.Name) - } - - if opts.KernelId != nil { - t.Fatalf("Unexpected KernelId value: expected nil got %s\n", *opts.KernelId) - } - - expected = rootDeviceName - if *opts.RootDeviceName != expected { - t.Fatalf("Unexpected RootDeviceName value: expected %s got %s\n", expected, *opts.RootDeviceName) - } -} - -func TestStepRegisterAmi_buildRegisterOptsFromScratch(t *testing.T) { - rootDeviceName := "/dev/sda" - snapshotID := "foo" - config := Config{ - FromScratch: true, - PackerConfig: common.PackerConfig{}, - AMIMappings: []amazon.BlockDevice{ - { - DeviceName: rootDeviceName, - }, - }, - RootDeviceName: rootDeviceName, - } - registerOpts := buildBaseRegisterOpts(&config, nil, 10, snapshotID, config.AMIName) - - if len(registerOpts.BlockDeviceMappings) != 1 { - t.Fatal("Expected block device mapping of length 1") - } - - if *registerOpts.BlockDeviceMappings[0].Ebs.SnapshotId != snapshotID { - t.Fatalf("Snapshot ID of root disk not set to snapshot id %s", rootDeviceName) - } -} - -func TestStepRegisterAmi_buildRegisterOptFromExistingImage(t *testing.T) { - rootDeviceName := "/dev/sda" - snapshotID := "foo" - - config := Config{ - FromScratch: false, - PackerConfig: common.PackerConfig{}, - } - sourceImage := ec2.Image{ - RootDeviceName: &rootDeviceName, - BlockDeviceMappings: []*ec2.BlockDeviceMapping{ - { - DeviceName: &rootDeviceName, - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(10), - }, - }, - // Throw in an ephemeral device, it seems like all devices in the return struct in a source AMI have - // a size, even if it's for ephemeral - { - DeviceName: aws.String("/dev/sdb"), - VirtualName: aws.String("ephemeral0"), - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(0), - }, - }, - }, - } - registerOpts := buildBaseRegisterOpts(&config, &sourceImage, 15, snapshotID, config.AMIName) - - if len(registerOpts.BlockDeviceMappings) != 2 { - t.Fatal("Expected block device mapping of length 2") - } - - for _, dev := range registerOpts.BlockDeviceMappings { - if dev.Ebs.SnapshotId != nil && *dev.Ebs.SnapshotId == snapshotID { - // Even though root volume size is in config, it isn't used, instead we use the root volume size - // that's derived when we build the step - if *dev.Ebs.VolumeSize != 15 { - t.Fatalf("Root volume size not 15 GB instead %d", *dev.Ebs.VolumeSize) - } - return - } - } - t.Fatalf("Could not find device with snapshot ID %s", snapshotID) -} - -func TestStepRegisterAmi_buildRegisterOptFromExistingImageWithBlockDeviceMappings(t *testing.T) { - const ( - rootDeviceName = "/dev/xvda" - oldRootDevice = "/dev/sda1" - ) - snapshotId := "foo" - - config := Config{ - FromScratch: false, - PackerConfig: common.PackerConfig{}, - AMIMappings: []amazon.BlockDevice{ - { - DeviceName: rootDeviceName, - }, - }, - RootDeviceName: rootDeviceName, - } - - // Intentionally try to use a different root devicename - sourceImage := ec2.Image{ - RootDeviceName: aws.String(oldRootDevice), - BlockDeviceMappings: []*ec2.BlockDeviceMapping{ - { - DeviceName: aws.String(oldRootDevice), - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(10), - }, - }, - // Throw in an ephemeral device, it seems like all devices in the return struct in a source AMI have - // a size, even if it's for ephemeral - { - DeviceName: aws.String("/dev/sdb"), - VirtualName: aws.String("ephemeral0"), - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(0), - }, - }, - }, - } - registerOpts := buildBaseRegisterOpts(&config, &sourceImage, 15, snapshotId, config.AMIName) - - if len(registerOpts.BlockDeviceMappings) != 1 { - t.Fatal("Expected block device mapping of length 1") - } - - if *registerOpts.BlockDeviceMappings[0].Ebs.SnapshotId != snapshotId { - t.Fatalf("Snapshot ID of root disk set to '%s' expected '%s'", *registerOpts.BlockDeviceMappings[0].Ebs.SnapshotId, rootDeviceName) - } - - if *registerOpts.RootDeviceName != rootDeviceName { - t.Fatalf("Root device set to '%s' expected %s", *registerOpts.RootDeviceName, rootDeviceName) - } - - if *registerOpts.BlockDeviceMappings[0].Ebs.VolumeSize != 15 { - t.Fatalf("Size of root disk not set to 15 GB, instead %d", *registerOpts.BlockDeviceMappings[0].Ebs.VolumeSize) - } -} diff --git a/builder/amazon/common/access_config_test.go b/builder/amazon/common/access_config_test.go deleted file mode 100644 index e1eeaa05f..000000000 --- a/builder/amazon/common/access_config_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package common - -import ( - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" -) - -func TestAccessConfigPrepare_Region(t *testing.T) { - c := FakeAccessConfig() - - c.RawRegion = "us-east-12" - err := c.ValidateRegion(c.RawRegion) - if err == nil { - t.Fatalf("should have region validation err: %s", c.RawRegion) - } - - c.RawRegion = "us-east-1" - err = c.ValidateRegion(c.RawRegion) - if err != nil { - t.Fatalf("shouldn't have region validation err: %s", c.RawRegion) - } - - c.RawRegion = "custom" - err = c.ValidateRegion(c.RawRegion) - if err == nil { - t.Fatalf("should have region validation err: %s", c.RawRegion) - } -} - -func TestAccessConfigPrepare_RegionRestricted(t *testing.T) { - c := FakeAccessConfig() - - // Create a Session with a custom region - c.session = session.Must(session.NewSession(&aws.Config{ - Region: aws.String("us-gov-west-1"), - })) - - if err := c.Prepare(); err != nil { - t.Fatalf("shouldn't have err: %s", err) - } - - if !c.IsGovCloud() { - t.Fatal("We should be in gov region.") - } -} diff --git a/builder/amazon/common/ami_config_test.go b/builder/amazon/common/ami_config_test.go deleted file mode 100644 index 1a3435868..000000000 --- a/builder/amazon/common/ami_config_test.go +++ /dev/null @@ -1,244 +0,0 @@ -package common - -import ( - "fmt" - "reflect" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/hashicorp/packer-plugin-sdk/template/config" -) - -func testAMIConfig() *AMIConfig { - return &AMIConfig{ - AMIName: "foo", - } -} - -func getFakeAccessConfig(region string) *AccessConfig { - c := FakeAccessConfig() - c.RawRegion = region - return c -} - -func TestAMIConfigPrepare_name(t *testing.T) { - c := testAMIConfig() - accessConf := FakeAccessConfig() - if err := c.Prepare(accessConf, nil); err != nil { - t.Fatalf("shouldn't have err: %s", err) - } - - c.AMIName = "" - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatal("should have error") - } -} - -func (m *mockEC2Client) DescribeRegions(*ec2.DescribeRegionsInput) (*ec2.DescribeRegionsOutput, error) { - return &ec2.DescribeRegionsOutput{ - Regions: []*ec2.Region{ - {RegionName: aws.String("us-east-1")}, - {RegionName: aws.String("us-east-2")}, - {RegionName: aws.String("us-west-1")}, - }, - }, nil -} - -func TestAMIConfigPrepare_regions(t *testing.T) { - c := testAMIConfig() - c.AMIRegions = nil - - var errs []error - var err error - accessConf := FakeAccessConfig() - mockConn := &mockEC2Client{} - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatalf("shouldn't have err: %#v", errs) - } - - c.AMIRegions, err = listEC2Regions(mockConn) - if err != nil { - t.Fatalf("shouldn't have err: %s", err.Error()) - } - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatalf("shouldn't have err: %#v", errs) - } - - c.AMIRegions = []string{"us-east-1", "us-west-1", "us-east-1"} - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatalf("bad: %s", errs[0]) - } - - expected := []string{"us-east-1", "us-west-1"} - if !reflect.DeepEqual(c.AMIRegions, expected) { - t.Fatalf("bad: %#v", c.AMIRegions) - } - - c.AMIRegions = []string{"custom"} - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal("shouldn't have error") - } - - c.AMIRegions = []string{"us-east-1", "us-east-2", "us-west-1"} - c.AMIRegionKMSKeyIDs = map[string]string{ - "us-east-1": "123-456-7890", - "us-west-1": "789-012-3456", - "us-east-2": "456-789-0123", - } - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal(fmt.Sprintf("shouldn't have error: %s", errs[0])) - } - - c.AMIRegions = []string{"us-east-1", "us-east-2", "us-west-1"} - c.AMIRegionKMSKeyIDs = map[string]string{ - "us-east-1": "123-456-7890", - "us-west-1": "789-012-3456", - "us-east-2": "", - } - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal("should have passed; we are able to use default KMS key if not sharing") - } - - c.SnapshotUsers = []string{"user-foo", "user-bar"} - c.AMIRegions = []string{"us-east-1", "us-east-2", "us-west-1"} - c.AMIRegionKMSKeyIDs = map[string]string{ - "us-east-1": "123-456-7890", - "us-west-1": "789-012-3456", - "us-east-2": "", - } - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal("should have an error b/c can't use default KMS key if sharing") - } - - c.AMIRegions = []string{"us-east-1", "us-west-1"} - c.AMIRegionKMSKeyIDs = map[string]string{ - "us-east-1": "123-456-7890", - "us-west-1": "789-012-3456", - "us-east-2": "456-789-0123", - } - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal("should have error b/c theres a region in the key map that isn't in ami_regions") - } - - c.AMIRegions = []string{"us-east-1", "us-west-1", "us-east-2"} - c.AMIRegionKMSKeyIDs = map[string]string{ - "us-east-1": "123-456-7890", - "us-west-1": "789-012-3456", - } - - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatal("should have error b/c theres a region in in ami_regions that isn't in the key map") - } - - c.SnapshotUsers = []string{"foo", "bar"} - c.AMIKmsKeyId = "123-abc-456" - c.AMIEncryptBootVolume = config.TriTrue - c.AMIRegions = []string{"us-east-1", "us-west-1"} - c.AMIRegionKMSKeyIDs = map[string]string{ - "us-east-1": "123-456-7890", - "us-west-1": "", - } - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal("should have error b/c theres a region in in ami_regions that isn't in the key map") - } - - // allow rawregion to exist in ami_regions list. - accessConf = getFakeAccessConfig("us-east-1") - c.AMIRegions = []string{"us-east-1", "us-west-1", "us-east-2"} - c.AMIRegionKMSKeyIDs = nil - if errs = c.prepareRegions(accessConf); len(errs) > 0 { - t.Fatal("should allow user to have the raw region in ami_regions") - } - -} - -func TestAMIConfigPrepare_Share_EncryptedBoot(t *testing.T) { - c := testAMIConfig() - c.AMIUsers = []string{"testAccountID"} - c.AMIEncryptBootVolume = config.TriTrue - - accessConf := FakeAccessConfig() - - c.AMIKmsKeyId = "" - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatal("shouldn't be able to share ami with encrypted boot volume") - } - c.AMIKmsKeyId = "89c3fb9a-de87-4f2a-aedc-fddc5138193c" - if err := c.Prepare(accessConf, nil); err != nil { - t.Fatal("should be able to share ami with encrypted boot volume") - } -} - -func TestAMIConfigPrepare_ValidateKmsKey(t *testing.T) { - c := testAMIConfig() - c.AMIEncryptBootVolume = config.TriTrue - - accessConf := FakeAccessConfig() - - validCases := []string{ - "abcd1234-e567-890f-a12b-a123b4cd56ef", - "alias/foo/bar", - "arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef", - "arn:aws:kms:us-east-1:012345678910:alias/foo/bar", - "arn:aws-us-gov:kms:us-gov-east-1:123456789012:key/12345678-1234-abcd-0000-123456789012", - } - for _, validCase := range validCases { - c.AMIKmsKeyId = validCase - if err := c.Prepare(accessConf, nil); err != nil { - t.Fatalf("%s should not have failed KMS key validation", validCase) - } - } - - invalidCases := []string{ - "ABCD1234-e567-890f-a12b-a123b4cd56ef", - "ghij1234-e567-890f-a12b-a123b4cd56ef", - "ghij1234+e567_890f-a12b-a123b4cd56ef", - "foo/bar", - "arn:aws:kms:us-east-1:012345678910:foo/bar", - "arn:foo:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef", - } - for _, invalidCase := range invalidCases { - c.AMIKmsKeyId = invalidCase - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatalf("%s should have failed KMS key validation", invalidCase) - } - } - -} - -func TestAMINameValidation(t *testing.T) { - c := testAMIConfig() - - accessConf := FakeAccessConfig() - - c.AMIName = "aa" - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatal("shouldn't be able to have an ami name with less than 3 characters") - } - - var longAmiName string - for i := 0; i < 129; i++ { - longAmiName += "a" - } - c.AMIName = longAmiName - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatal("shouldn't be able to have an ami name with great than 128 characters") - } - - c.AMIName = "+aaa" - if err := c.Prepare(accessConf, nil); err == nil { - t.Fatal("shouldn't be able to have an ami name with invalid characters") - } - - c.AMIName = "fooBAR1()[] ./-'@_" - if err := c.Prepare(accessConf, nil); err != nil { - t.Fatal("should be able to use all of the allowed AMI characters") - } - - c.AMIName = `xyz-base-2017-04-05-1934` - if err := c.Prepare(accessConf, nil); err != nil { - t.Fatalf("expected `xyz-base-2017-04-05-1934` to pass validation.") - } - -} diff --git a/builder/amazon/common/artifact_test.go b/builder/amazon/common/artifact_test.go deleted file mode 100644 index 7931f218a..000000000 --- a/builder/amazon/common/artifact_test.go +++ /dev/null @@ -1,90 +0,0 @@ -package common - -import ( - "reflect" - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func TestArtifact_Impl(t *testing.T) { - var _ packersdk.Artifact = new(Artifact) -} - -func TestArtifactId(t *testing.T) { - expected := `east:foo,west:bar` - - amis := make(map[string]string) - amis["east"] = "foo" - amis["west"] = "bar" - - a := &Artifact{ - Amis: amis, - } - - result := a.Id() - if result != expected { - t.Fatalf("bad: %s", result) - } -} - -func TestArtifactState_atlasMetadata(t *testing.T) { - a := &Artifact{ - Amis: map[string]string{ - "east": "foo", - "west": "bar", - }, - } - - actual := a.State("atlas.artifact.metadata") - expected := map[string]string{ - "region.east": "foo", - "region.west": "bar", - } - if !reflect.DeepEqual(actual, expected) { - t.Fatalf("bad: %#v", actual) - } -} - -func TestArtifactString(t *testing.T) { - expected := `AMIs were created: -east: foo -west: bar -` - - amis := make(map[string]string) - amis["east"] = "foo" - amis["west"] = "bar" - - a := &Artifact{Amis: amis} - result := a.String() - if result != expected { - t.Fatalf("bad: %s", result) - } -} - -func TestArtifactState(t *testing.T) { - expectedData := "this is the data" - artifact := &Artifact{ - StateData: map[string]interface{}{"state_data": expectedData}, - } - - // Valid state - result := artifact.State("state_data") - if result != expectedData { - t.Fatalf("Bad: State data was %s instead of %s", result, expectedData) - } - - // Invalid state - result = artifact.State("invalid_key") - if result != nil { - t.Fatalf("Bad: State should be nil for invalid state data name") - } - - // Nil StateData should not fail and should return nil - artifact = &Artifact{} - result = artifact.State("key") - if result != nil { - t.Fatalf("Bad: State should be nil for nil StateData") - } -} diff --git a/builder/amazon/common/block_device_test.go b/builder/amazon/common/block_device_test.go deleted file mode 100644 index 8d33b918e..000000000 --- a/builder/amazon/common/block_device_test.go +++ /dev/null @@ -1,401 +0,0 @@ -package common - -import ( - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/google/go-cmp/cmp" - "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer-plugin-sdk/template/interpolate" -) - -func TestBlockDevice(t *testing.T) { - cases := []struct { - Config *BlockDevice - Result *ec2.BlockDeviceMapping - }{ - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - SnapshotId: "snap-1234", - VolumeType: "standard", - VolumeSize: 8, - DeleteOnTermination: true, - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-1234"), - VolumeType: aws.String("standard"), - VolumeSize: aws.Int64(8), - DeleteOnTermination: aws.Bool(true), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeSize: 8, - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeSize: aws.Int64(8), - DeleteOnTermination: aws.Bool(false), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io1", - VolumeSize: 8, - DeleteOnTermination: true, - IOPS: aws.Int64(1000), - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeType: aws.String("io1"), - VolumeSize: aws.Int64(8), - DeleteOnTermination: aws.Bool(true), - Iops: aws.Int64(1000), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io2", - VolumeSize: 8, - DeleteOnTermination: true, - IOPS: aws.Int64(1000), - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeType: aws.String("io2"), - VolumeSize: aws.Int64(8), - DeleteOnTermination: aws.Bool(true), - Iops: aws.Int64(1000), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp2", - VolumeSize: 8, - DeleteOnTermination: true, - Encrypted: config.TriTrue, - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeType: aws.String("gp2"), - VolumeSize: aws.Int64(8), - DeleteOnTermination: aws.Bool(true), - Encrypted: aws.Bool(true), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp2", - VolumeSize: 8, - DeleteOnTermination: true, - Encrypted: config.TriTrue, - KmsKeyId: "2Fa48a521f-3aff-4b34-a159-376ac5d37812", - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeType: aws.String("gp2"), - VolumeSize: aws.Int64(8), - DeleteOnTermination: aws.Bool(true), - Encrypted: aws.Bool(true), - KmsKeyId: aws.String("2Fa48a521f-3aff-4b34-a159-376ac5d37812"), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "standard", - DeleteOnTermination: true, - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeType: aws.String("standard"), - DeleteOnTermination: aws.Bool(true), - }, - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VirtualName: "ephemeral0", - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - VirtualName: aws.String("ephemeral0"), - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - NoDevice: true, - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - NoDevice: aws.String(""), - }, - }, - { - Config: &BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - VolumeSize: 8, - Throughput: aws.Int64(125), - IOPS: aws.Int64(3000), - DeleteOnTermination: true, - Encrypted: config.TriTrue, - }, - - Result: &ec2.BlockDeviceMapping{ - DeviceName: aws.String("/dev/sdb"), - Ebs: &ec2.EbsBlockDevice{ - VolumeType: aws.String("gp3"), - VolumeSize: aws.Int64(8), - Throughput: aws.Int64(125), - Iops: aws.Int64(3000), - DeleteOnTermination: aws.Bool(true), - Encrypted: aws.Bool(true), - }, - }, - }, - } - - for _, tc := range cases { - var amiBlockDevices BlockDevices = []BlockDevice{*tc.Config} - - var launchBlockDevices BlockDevices = []BlockDevice{*tc.Config} - - expected := []*ec2.BlockDeviceMapping{tc.Result} - - amiResults := amiBlockDevices.BuildEC2BlockDeviceMappings() - if diff := cmp.Diff(expected, amiResults); diff != "" { - t.Fatalf("Bad block device: %s", diff) - } - - launchResults := launchBlockDevices.BuildEC2BlockDeviceMappings() - if diff := cmp.Diff(expected, launchResults); diff != "" { - t.Fatalf("Bad block device: %s", diff) - } - } -} - -func TestIOPSValidation(t *testing.T) { - - cases := []struct { - device BlockDevice - ok bool - msg string - }{ - // volume size unknown - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io1", - IOPS: aws.Int64(1000), - }, - ok: true, - }, - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io2", - IOPS: aws.Int64(1000), - }, - ok: true, - }, - // ratio requirement satisfied - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io1", - VolumeSize: 50, - IOPS: aws.Int64(1000), - }, - ok: true, - }, - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io2", - VolumeSize: 100, - IOPS: aws.Int64(1000), - }, - ok: true, - }, - // ratio requirement not satisfied - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io1", - VolumeSize: 10, - IOPS: aws.Int64(2000), - }, - ok: false, - msg: "/dev/sdb: the maximum ratio of provisioned IOPS to requested volume size (in GiB) is 50:1 for io1 volumes", - }, - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io2", - VolumeSize: 50, - IOPS: aws.Int64(30000), - }, - ok: false, - msg: "/dev/sdb: the maximum ratio of provisioned IOPS to requested volume size (in GiB) is 500:1 for io2 volumes", - }, - // exceed max iops - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io2", - VolumeSize: 500, - IOPS: aws.Int64(99999), - }, - ok: false, - msg: "IOPS must be between 100 and 64000 for device /dev/sdb", - }, - // lower than min iops - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "io2", - VolumeSize: 50, - IOPS: aws.Int64(10), - }, - ok: false, - msg: "IOPS must be between 100 and 64000 for device /dev/sdb", - }, - // exceed max iops - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - VolumeSize: 50, - Throughput: aws.Int64(125), - IOPS: aws.Int64(99999), - }, - ok: false, - msg: "IOPS must be between 3000 and 16000 for device /dev/sdb", - }, - // lower than min iops - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - VolumeSize: 50, - Throughput: aws.Int64(125), - IOPS: aws.Int64(10), - }, - ok: false, - msg: "IOPS must be between 3000 and 16000 for device /dev/sdb", - }, - } - - ctx := interpolate.Context{} - for _, testCase := range cases { - err := testCase.device.Prepare(&ctx) - if testCase.ok && err != nil { - t.Fatalf("should not error, but: %v", err) - } - if !testCase.ok { - if err == nil { - t.Fatalf("should error") - } else if err.Error() != testCase.msg { - t.Fatalf("wrong error: expected %s, found: %v", testCase.msg, err) - } - } - } -} - -func TestThroughputValidation(t *testing.T) { - - cases := []struct { - device BlockDevice - ok bool - msg string - }{ - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - Throughput: aws.Int64(125), - IOPS: aws.Int64(3000), - }, - ok: true, - }, - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - Throughput: aws.Int64(1000), - IOPS: aws.Int64(3000), - }, - ok: true, - }, - // exceed max Throughput - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - Throughput: aws.Int64(1001), - IOPS: aws.Int64(3000), - }, - ok: false, - msg: "Throughput must be between 125 and 1000 for device /dev/sdb", - }, - // lower than min Throughput - { - device: BlockDevice{ - DeviceName: "/dev/sdb", - VolumeType: "gp3", - Throughput: aws.Int64(124), - IOPS: aws.Int64(3000), - }, - ok: false, - msg: "Throughput must be between 125 and 1000 for device /dev/sdb", - }, - } - - ctx := interpolate.Context{} - for _, testCase := range cases { - err := testCase.device.Prepare(&ctx) - if testCase.ok && err != nil { - t.Fatalf("should not error, but: %v", err) - } - if !testCase.ok { - if err == nil { - t.Fatalf("should error") - } else if err.Error() != testCase.msg { - t.Fatalf("wrong error: expected %s, found: %v", testCase.msg, err) - } - } - } -} diff --git a/builder/amazon/common/build_filter_test.go b/builder/amazon/common/build_filter_test.go deleted file mode 100644 index e84a4b10d..000000000 --- a/builder/amazon/common/build_filter_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package common - -import ( - "testing" -) - -func TestStepSourceAmiInfo_BuildFilter(t *testing.T) { - filter_key := "name" - filter_value := "foo" - filter_key2 := "name2" - filter_value2 := "foo2" - - inputFilter := map[string]string{filter_key: filter_value, filter_key2: filter_value2} - outputFilter := buildEc2Filters(inputFilter) - - // deconstruct filter back into things we can test - foundMap := map[string]bool{filter_key: false, filter_key2: false} - for _, filter := range outputFilter { - for key, value := range inputFilter { - if *filter.Name == key && *filter.Values[0] == value { - foundMap[key] = true - } - } - } - - for k, v := range foundMap { - if !v { - t.Fatalf("Fail: should have found value for key: %s", k) - } - } -} diff --git a/builder/amazon/common/errors_test.go b/builder/amazon/common/errors_test.go deleted file mode 100644 index b2c05390e..000000000 --- a/builder/amazon/common/errors_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package common - -import ( - "fmt" - "strings" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/sts" - - "github.com/aws/aws-sdk-go/aws/awserr" -) - -type mockSTS struct { -} - -func (m *mockSTS) DecodeAuthorizationMessage(input *sts.DecodeAuthorizationMessageInput) (*sts.DecodeAuthorizationMessageOutput, error) { - return &sts.DecodeAuthorizationMessageOutput{ - DecodedMessage: aws.String(`{ - "allowed": false, - "explicitDeny": true, - "matchedStatements": {} - }`), - }, nil -} - -func TestErrorsParsing_RequestFailure(t *testing.T) { - - ae := awserr.New("UnauthorizedOperation", - `You are not authorized to perform this operation. Encoded authorization failure message: D9Q7oicjOMr9l2CC-NPP1FiZXK9Ijia1k-3l0siBFCcrK3oSuMFMkBIO5TNj0HdXE-WfwnAcdycFOohfKroNO6toPJEns8RFVfy_M_IjNGmrEFJ6E62pnmBW0OLrMsXxR9FQE4gB4gJzSM0AD6cV6S3FOfqYzWBRX-sQdOT4HryGkFNRoFBr9Xbp-tRwiadwkbdHdfnV9fbRkXmnwCdULml16NBSofC4ZPepLMKmIB5rKjwk-m179UUh2XA-J5no0si6XcRo5GbHQB5QfCIwSHL4vsro2wLZUd16-8OWKyr3tVlTbQe0ERZskqRqRQ5E28QuiBCVV6XstUyo-T4lBSr75Fgnyr3wCO-dS3b_5Ns3WzA2JD4E2AJOAStXIU8IH5YuKkAg7C-dJMuBMPpmKCBEXhNoHDwCyOo5PsV3xMlc0jSb0qYGpfst_TDDtejcZfn7NssUjxVq9qkdH-OXz2gPoQB-hX8ycmZCL5UZwKc3TCLUr7TGnudHjmnMrE9cUo-yTCWfyHPLprhiYhTCKW18EikJ0O1EKI3FJ_b4F19_jFBPARjSwQc7Ut6MNCVzrPdZGYSF6acj5gPaxdy9uSkVQwWXK7Pd5MFP7EBDE1_DgYbzodgwDO2PXeVFUbSLBHKWo_ebZS9ZX2nYPcGss_sYaly0ZVSIJXp7G58B5BoFVhvVH6jYnF9XiAOjMltuP_ycu1pQP1lki500RY3baLvfeYeAsB38XZHKEgWZzq7Fei-uh89q0cjJTmlVyrfRU3q6`, - fmt.Errorf("You can't do it!!")) - rf := awserr.NewRequestFailure(ae, 400, "abc-def-123-456") - - result := decodeAWSError(&mockSTS{}, rf) - if result == nil { - t.Error("Expected resulting error") - } - if !strings.Contains(result.Error(), "Authorization failure message:") { - t.Error("Expected authorization failure message") - } -} - -func TestErrorsParsing_NonAuthorizationFailure(t *testing.T) { - - ae := awserr.New("BadRequest", - `You did something wrong. Try again`, - fmt.Errorf("Request was no good.")) - rf := awserr.NewRequestFailure(ae, 400, "abc-def-123-456") - - result := decodeAWSError(&mockSTS{}, rf) - if result == nil { - t.Error("Expected resulting error") - } - if result != rf { - t.Error("Expected original error to be returned unchanged") - } -} - -func TestErrorsParsing_NonAWSError(t *testing.T) { - - err := fmt.Errorf("Random error occurred") - - result := decodeAWSError(&mockSTS{}, err) - if result == nil { - t.Error("Expected resulting error") - } - if result != err { - t.Error("Expected original error to be returned unchanged") - } -} diff --git a/builder/amazon/common/interpolate_build_info_test.go b/builder/amazon/common/interpolate_build_info_test.go deleted file mode 100644 index f371d3ce7..000000000 --- a/builder/amazon/common/interpolate_build_info_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package common - -import ( - "reflect" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" -) - -func testImage() *ec2.Image { - return &ec2.Image{ - ImageId: aws.String("ami-abcd1234"), - CreationDate: aws.String("ami_test_creation_date"), - Name: aws.String("ami_test_name"), - OwnerId: aws.String("ami_test_owner_id"), - ImageOwnerAlias: aws.String("ami_test_owner_alias"), - RootDeviceType: aws.String("ebs"), - Tags: []*ec2.Tag{ - { - Key: aws.String("key-1"), - Value: aws.String("value-1"), - }, - { - Key: aws.String("key-2"), - Value: aws.String("value-2"), - }, - }, - } -} - -func testState() multistep.StateBag { - state := new(multistep.BasicStateBag) - return state -} - -func testGeneratedData(state multistep.StateBag) packerbuilderdata.GeneratedData { - generatedData := packerbuilderdata.GeneratedData{State: state} - return generatedData -} - -func TestInterpolateBuildInfo_extractBuildInfo_noSourceImage(t *testing.T) { - state := testState() - generatedData := testGeneratedData(state) - buildInfo := extractBuildInfo("foo", state, &generatedData) - - expected := BuildInfoTemplate{ - BuildRegion: "foo", - } - if !reflect.DeepEqual(*buildInfo, expected) { - t.Fatalf("Unexpected BuildInfoTemplate: expected %#v got %#v\n", expected, *buildInfo) - } -} - -func TestInterpolateBuildInfo_extractBuildInfo_withSourceImage(t *testing.T) { - state := testState() - state.Put("source_image", testImage()) - generatedData := testGeneratedData(state) - buildInfo := extractBuildInfo("foo", state, &generatedData) - - expected := BuildInfoTemplate{ - BuildRegion: "foo", - SourceAMI: "ami-abcd1234", - SourceAMICreationDate: "ami_test_creation_date", - SourceAMIName: "ami_test_name", - SourceAMIOwner: "ami_test_owner_id", - SourceAMIOwnerName: "ami_test_owner_alias", - SourceAMITags: map[string]string{ - "key-1": "value-1", - "key-2": "value-2", - }, - } - if !reflect.DeepEqual(*buildInfo, expected) { - t.Fatalf("Unexpected BuildInfoTemplate: expected %#v got %#v\n", expected, *buildInfo) - } -} - -func TestInterpolateBuildInfo_extractBuildInfo_GeneratedDataWithSourceImageName(t *testing.T) { - state := testState() - state.Put("source_image", testImage()) - generatedData := testGeneratedData(state) - extractBuildInfo("foo", state, &generatedData) - - generatedDataState := state.Get("generated_data").(map[string]interface{}) - - if generatedDataState["SourceAMIName"] != "ami_test_name" { - t.Fatalf("Unexpected state SourceAMIName: expected %#v got %#v\n", "ami_test_name", generatedDataState["SourceAMIName"]) - } -} diff --git a/builder/amazon/common/run_config_test.go b/builder/amazon/common/run_config_test.go deleted file mode 100644 index 0497714e6..000000000 --- a/builder/amazon/common/run_config_test.go +++ /dev/null @@ -1,251 +0,0 @@ -package common - -import ( - "io/ioutil" - "os" - "regexp" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/communicator" -) - -func init() { - // Clear out the AWS access key env vars so they don't - // affect our tests. - os.Setenv("AWS_ACCESS_KEY_ID", "") - os.Setenv("AWS_ACCESS_KEY", "") - os.Setenv("AWS_SECRET_ACCESS_KEY", "") - os.Setenv("AWS_SECRET_KEY", "") -} - -func testConfig() *RunConfig { - return &RunConfig{ - SourceAmi: "abcd", - InstanceType: "m1.small", - - Comm: communicator.Config{ - SSH: communicator.SSH{ - SSHUsername: "foo", - }, - }, - } -} - -func testConfigFilter() *RunConfig { - config := testConfig() - config.SourceAmi = "" - config.SourceAmiFilter = AmiFilterOptions{} - return config -} - -func TestRunConfigPrepare(t *testing.T) { - c := testConfig() - err := c.Prepare(nil) - if len(err) > 0 { - t.Fatalf("err: %s", err) - } -} - -func TestRunConfigPrepare_InstanceType(t *testing.T) { - c := testConfig() - c.InstanceType = "" - if err := c.Prepare(nil); len(err) != 1 { - t.Fatalf("Should error if an instance_type is not specified") - } -} - -func TestRunConfigPrepare_SourceAmi(t *testing.T) { - c := testConfig() - c.SourceAmi = "" - if err := c.Prepare(nil); len(err) != 2 { - t.Fatalf("Should error if a source_ami (or source_ami_filter) is not specified") - } -} - -func TestRunConfigPrepare_SourceAmiFilterBlank(t *testing.T) { - c := testConfigFilter() - if err := c.Prepare(nil); len(err) != 2 { - t.Fatalf("Should error if source_ami_filter is empty or not specified (and source_ami is not specified)") - } -} - -func TestRunConfigPrepare_SourceAmiFilterOwnersBlank(t *testing.T) { - c := testConfigFilter() - filter_key := "name" - filter_value := "foo" - c.SourceAmiFilter.Filters = map[string]string{filter_key: filter_value} - if err := c.Prepare(nil); len(err) != 1 { - t.Fatalf("Should error if Owners is not specified)") - } -} - -func TestRunConfigPrepare_SourceAmiFilterGood(t *testing.T) { - c := testConfigFilter() - owner := "123" - filter_key := "name" - filter_value := "foo" - goodFilter := AmiFilterOptions{ - Owners: []string{owner}, - Filters: map[string]string{filter_key: filter_value}, - } - c.SourceAmiFilter = goodFilter - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } -} - -func TestRunConfigPrepare_EnableT2UnlimitedGood(t *testing.T) { - c := testConfig() - // Must have a T2 instance type if T2 Unlimited is enabled - c.InstanceType = "t2.micro" - c.EnableT2Unlimited = true - err := c.Prepare(nil) - if len(err) > 0 { - t.Fatalf("err: %s", err) - } -} - -func TestRunConfigPrepare_EnableT2UnlimitedBadInstanceType(t *testing.T) { - c := testConfig() - // T2 Unlimited cannot be used with instance types other than T2 - c.InstanceType = "m5.large" - c.EnableT2Unlimited = true - err := c.Prepare(nil) - if len(err) != 1 { - t.Fatalf("Should error if T2 Unlimited is enabled with non-T2 instance_type") - } -} - -func TestRunConfigPrepare_EnableT2UnlimitedBadWithSpotInstanceRequest(t *testing.T) { - c := testConfig() - // T2 Unlimited cannot be used with Spot Instances - c.InstanceType = "t2.micro" - c.EnableT2Unlimited = true - c.SpotPrice = "auto" - err := c.Prepare(nil) - if len(err) != 1 { - t.Fatalf("Should error if T2 Unlimited has been used in conjuntion with a Spot Price request") - } -} - -func TestRunConfigPrepare_SpotAuto(t *testing.T) { - c := testConfig() - c.SpotPrice = "auto" - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } - - // Shouldn't error (YET) even though SpotPriceAutoProduct is deprecated - c.SpotPriceAutoProduct = "Linux/Unix" - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } -} - -func TestRunConfigPrepare_SSHPort(t *testing.T) { - c := testConfig() - c.Comm.SSHPort = 0 - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } - - if c.Comm.SSHPort != 22 { - t.Fatalf("invalid value: %d", c.Comm.SSHPort) - } - - c.Comm.SSHPort = 44 - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } - - if c.Comm.SSHPort != 44 { - t.Fatalf("invalid value: %d", c.Comm.SSHPort) - } -} - -func TestRunConfigPrepare_UserData(t *testing.T) { - c := testConfig() - tf, err := ioutil.TempFile("", "packer") - if err != nil { - t.Fatalf("err: %s", err) - } - defer os.Remove(tf.Name()) - defer tf.Close() - - c.UserData = "foo" - c.UserDataFile = tf.Name() - if err := c.Prepare(nil); len(err) != 1 { - t.Fatalf("Should error if user_data string and user_data_file have both been specified") - } -} - -func TestRunConfigPrepare_UserDataFile(t *testing.T) { - c := testConfig() - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } - - c.UserDataFile = "idontexistidontthink" - if err := c.Prepare(nil); len(err) != 1 { - t.Fatalf("Should error if the file specified by user_data_file does not exist") - } - - tf, err := ioutil.TempFile("", "packer") - if err != nil { - t.Fatalf("err: %s", err) - } - defer os.Remove(tf.Name()) - defer tf.Close() - - c.UserDataFile = tf.Name() - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } -} - -func TestRunConfigPrepare_TemporaryKeyPairName(t *testing.T) { - c := testConfig() - c.Comm.SSHTemporaryKeyPairName = "" - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } - - if c.Comm.SSHTemporaryKeyPairName == "" { - t.Fatal("keypair name is empty") - } - - // Match prefix and UUID, e.g. "packer_5790d491-a0b8-c84c-c9d2-2aea55086550". - r := regexp.MustCompile(`\Apacker_(?:(?i)[a-f\d]{8}(?:-[a-f\d]{4}){3}-[a-f\d]{12}?)\z`) - if !r.MatchString(c.Comm.SSHTemporaryKeyPairName) { - t.Fatal("keypair name is not valid") - } - - c.Comm.SSHTemporaryKeyPairName = "ssh-key-123" - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("err: %s", err) - } - - if c.Comm.SSHTemporaryKeyPairName != "ssh-key-123" { - t.Fatal("keypair name does not match") - } -} - -func TestRunConfigPrepare_TenancyBad(t *testing.T) { - c := testConfig() - c.Tenancy = "not_real" - - if err := c.Prepare(nil); len(err) != 1 { - t.Fatal("Should error if tenancy is set to an invalid type") - } -} - -func TestRunConfigPrepare_TenancyGood(t *testing.T) { - validTenancy := []string{"", "default", "dedicated", "host"} - for _, vt := range validTenancy { - c := testConfig() - c.Tenancy = vt - if err := c.Prepare(nil); len(err) != 0 { - t.Fatalf("Should not error if tenancy is set to %s", vt) - } - } -} diff --git a/builder/amazon/common/ssh_test.go b/builder/amazon/common/ssh_test.go deleted file mode 100644 index 27bedca80..000000000 --- a/builder/amazon/common/ssh_test.go +++ /dev/null @@ -1,141 +0,0 @@ -package common - -import ( - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/hashicorp/packer-plugin-sdk/multistep" -) - -const ( - privateIP = "10.0.0.1" - publicIP = "192.168.1.1" - privateDNS = "private.dns.test" - publicDNS = "public.dns.test" - localhost = "localhost" - sshHostTemplate = "custom.host.value" -) - -func TestSSHHost(t *testing.T) { - origSshHostSleepDuration := sshHostSleepDuration - defer func() { sshHostSleepDuration = origSshHostSleepDuration }() - sshHostSleepDuration = 0 - - var cases = []struct { - allowTries int - vpcId string - sshInterface string - - ok bool - wantHost string - sshHostOverride string - }{ - {1, "", "", true, publicDNS, ""}, - {1, "", "private_ip", true, privateIP, ""}, - {1, "", "session_manager", true, localhost, ""}, - {1, "vpc-id", "", true, publicIP, ""}, - {1, "vpc-id", "private_ip", true, privateIP, ""}, - {1, "vpc-id", "private_dns", true, privateDNS, ""}, - {1, "vpc-id", "public_dns", true, publicDNS, ""}, - {1, "vpc-id", "public_ip", true, publicIP, ""}, - {1, "vpc-id", "session_manager", true, localhost, ""}, - {2, "", "", true, publicDNS, ""}, - {2, "", "private_ip", true, privateIP, ""}, - {2, "vpc-id", "", true, publicIP, ""}, - {2, "vpc-id", "private_ip", true, privateIP, ""}, - {2, "vpc-id", "private_dns", true, privateDNS, ""}, - {2, "vpc-id", "public_dns", true, publicDNS, ""}, - {2, "vpc-id", "public_ip", true, publicIP, ""}, - {3, "", "", false, "", ""}, - {3, "", "private_ip", false, "", ""}, - {3, "vpc-id", "", false, "", ""}, - {3, "vpc-id", "private_ip", false, "", ""}, - {3, "vpc-id", "private_dns", false, "", ""}, - {3, "vpc-id", "public_dns", false, "", ""}, - {3, "vpc-id", "public_ip", false, "", ""}, - {1, "", "", true, sshHostTemplate, sshHostTemplate}, - {1, "vpc-id", "", true, sshHostTemplate, sshHostTemplate}, - {2, "vpc-id", "private_dns", true, sshHostTemplate, sshHostTemplate}, - } - - for _, c := range cases { - testSSHHost(t, c.allowTries, c.vpcId, c.sshInterface, c.ok, c.wantHost, - c.sshHostOverride) - } -} - -func testSSHHost(t *testing.T, allowTries int, vpcId string, sshInterface string, - ok bool, wantHost string, sshHostOverride string) { - t.Logf("allowTries=%d vpcId=%s sshInterface=%s ok=%t wantHost=%q sshHostOverride=%s", - allowTries, vpcId, sshInterface, ok, wantHost, sshHostOverride) - - e := &fakeEC2Describer{ - allowTries: allowTries, - vpcId: vpcId, - privateIP: privateIP, - publicIP: publicIP, - privateDNS: privateDNS, - publicDNS: publicDNS, - } - - f := SSHHost(e, sshInterface, sshHostOverride) - st := &multistep.BasicStateBag{} - st.Put("instance", &ec2.Instance{ - InstanceId: aws.String("instance-id"), - }) - - host, err := f(st) - - if e.tries > allowTries { - t.Fatalf("got %d ec2 DescribeInstances tries, want %d", e.tries, allowTries) - } - - switch { - case ok && err != nil: - t.Fatalf("expected no error, got %+v", err) - case !ok && err == nil: - t.Fatalf("expected error, got none and host %s", host) - } - - if host != wantHost { - t.Fatalf("got host %s, want %s", host, wantHost) - } -} - -type fakeEC2Describer struct { - allowTries int - tries int - - vpcId string - privateIP, publicIP, privateDNS, publicDNS string -} - -func (d *fakeEC2Describer) DescribeInstances(in *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) { - d.tries++ - - instance := &ec2.Instance{ - InstanceId: aws.String("instance-id"), - } - - if d.vpcId != "" { - instance.VpcId = aws.String(d.vpcId) - } - - if d.tries >= d.allowTries { - instance.PublicIpAddress = aws.String(d.publicIP) - instance.PrivateIpAddress = aws.String(d.privateIP) - instance.PublicDnsName = aws.String(d.publicDNS) - instance.PrivateDnsName = aws.String(d.privateDNS) - } - - out := &ec2.DescribeInstancesOutput{ - Reservations: []*ec2.Reservation{ - { - Instances: []*ec2.Instance{instance}, - }, - }, - } - - return out, nil -} diff --git a/builder/amazon/common/state_test.go b/builder/amazon/common/state_test.go deleted file mode 100644 index 2ef7ae5aa..000000000 --- a/builder/amazon/common/state_test.go +++ /dev/null @@ -1,66 +0,0 @@ -package common - -import ( - "reflect" - "testing" - "time" - - "github.com/aws/aws-sdk-go/aws/request" -) - -func testGetWaiterOptions(t *testing.T) { - // no vars are set - envValues := overridableWaitVars{ - envInfo{"AWS_POLL_DELAY_SECONDS", 2, false}, - envInfo{"AWS_MAX_ATTEMPTS", 0, false}, - envInfo{"AWS_TIMEOUT_SECONDS", 300, false}, - } - options := applyEnvOverrides(envValues) - if len(options) > 0 { - t.Fatalf("Did not expect any waiter options to be generated; actual: %#v", options) - } - - // all vars are set - envValues = overridableWaitVars{ - envInfo{"AWS_POLL_DELAY_SECONDS", 1, true}, - envInfo{"AWS_MAX_ATTEMPTS", 800, true}, - envInfo{"AWS_TIMEOUT_SECONDS", 20, true}, - } - options = applyEnvOverrides(envValues) - expected := []request.WaiterOption{ - request.WithWaiterDelay(request.ConstantWaiterDelay(time.Duration(1) * time.Second)), - request.WithWaiterMaxAttempts(800), - } - if !reflect.DeepEqual(options, expected) { - t.Fatalf("expected != actual!! Expected: %#v; Actual: %#v.", expected, options) - } - - // poll delay is not set - envValues = overridableWaitVars{ - envInfo{"AWS_POLL_DELAY_SECONDS", 2, false}, - envInfo{"AWS_MAX_ATTEMPTS", 800, true}, - envInfo{"AWS_TIMEOUT_SECONDS", 300, false}, - } - options = applyEnvOverrides(envValues) - expected = []request.WaiterOption{ - request.WithWaiterMaxAttempts(800), - } - if !reflect.DeepEqual(options, expected) { - t.Fatalf("expected != actual!! Expected: %#v; Actual: %#v.", expected, options) - } - - // poll delay is not set but timeout seconds is - envValues = overridableWaitVars{ - envInfo{"AWS_POLL_DELAY_SECONDS", 2, false}, - envInfo{"AWS_MAX_ATTEMPTS", 0, false}, - envInfo{"AWS_TIMEOUT_SECONDS", 20, true}, - } - options = applyEnvOverrides(envValues) - expected = []request.WaiterOption{ - request.WithWaiterDelay(request.ConstantWaiterDelay(time.Duration(2) * time.Second)), - request.WithWaiterMaxAttempts(10), - } - if !reflect.DeepEqual(options, expected) { - t.Fatalf("expected != actual!! Expected: %#v; Actual: %#v.", expected, options) - } -} diff --git a/builder/amazon/common/step_ami_region_copy_test.go b/builder/amazon/common/step_ami_region_copy_test.go deleted file mode 100644 index 4c809b665..000000000 --- a/builder/amazon/common/step_ami_region_copy_test.go +++ /dev/null @@ -1,404 +0,0 @@ -package common - -import ( - "bytes" - "context" - "fmt" - "sync" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/aws/aws-sdk-go/service/ec2/ec2iface" - "github.com/hashicorp/packer-plugin-sdk/multistep" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/template/config" -) - -// Define a mock struct to be used in unit tests for common aws steps. -type mockEC2Conn struct { - ec2iface.EC2API - Config *aws.Config - - // Counters to figure out what code path was taken - copyImageCount int - describeImagesCount int - deregisterImageCount int - deleteSnapshotCount int - waitCount int - - lock sync.Mutex -} - -func (m *mockEC2Conn) CopyImage(copyInput *ec2.CopyImageInput) (*ec2.CopyImageOutput, error) { - m.lock.Lock() - m.copyImageCount++ - m.lock.Unlock() - copiedImage := fmt.Sprintf("%s-copied-%d", *copyInput.SourceImageId, m.copyImageCount) - output := &ec2.CopyImageOutput{ - ImageId: &copiedImage, - } - return output, nil -} - -// functions we have to create mock responses for in order for test to run -func (m *mockEC2Conn) DescribeImages(*ec2.DescribeImagesInput) (*ec2.DescribeImagesOutput, error) { - m.lock.Lock() - m.describeImagesCount++ - m.lock.Unlock() - output := &ec2.DescribeImagesOutput{ - Images: []*ec2.Image{{}}, - } - return output, nil -} - -func (m *mockEC2Conn) DeregisterImage(*ec2.DeregisterImageInput) (*ec2.DeregisterImageOutput, error) { - m.lock.Lock() - m.deregisterImageCount++ - m.lock.Unlock() - output := &ec2.DeregisterImageOutput{} - return output, nil -} - -func (m *mockEC2Conn) DeleteSnapshot(*ec2.DeleteSnapshotInput) (*ec2.DeleteSnapshotOutput, error) { - m.lock.Lock() - m.deleteSnapshotCount++ - m.lock.Unlock() - output := &ec2.DeleteSnapshotOutput{} - return output, nil -} - -func (m *mockEC2Conn) WaitUntilImageAvailableWithContext(aws.Context, *ec2.DescribeImagesInput, ...request.WaiterOption) error { - m.lock.Lock() - m.waitCount++ - m.lock.Unlock() - return nil -} - -func getMockConn(config *AccessConfig, target string) (ec2iface.EC2API, error) { - mockConn := &mockEC2Conn{ - Config: aws.NewConfig(), - } - - return mockConn, nil -} - -// Create statebag for running test -func tState() multistep.StateBag { - state := new(multistep.BasicStateBag) - state.Put("ui", &packersdk.BasicUi{ - Reader: new(bytes.Buffer), - Writer: new(bytes.Buffer), - }) - state.Put("amis", map[string]string{"us-east-1": "ami-12345"}) - state.Put("snapshots", map[string][]string{"us-east-1": {"snap-0012345"}}) - conn, _ := getMockConn(&AccessConfig{}, "us-east-2") - state.Put("ec2", conn) - return state -} - -func TestStepAMIRegionCopy_duplicates(t *testing.T) { - // ------------------------------------------------------------------------ - // Test that if the original region is added to both Regions and Region, - // the ami is only copied once (with encryption). - // ------------------------------------------------------------------------ - - stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-east-1"}, - AMIKmsKeyId: "12345", - // Original region key in regionkeyids is different than in amikmskeyid - RegionKeyIds: map[string]string{"us-east-1": "12345"}, - EncryptBootVolume: config.TriTrue, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state := tState() - state.Put("intermediary_image", true) - stepAMIRegionCopy.Run(context.Background(), state) - - if len(stepAMIRegionCopy.Regions) != 1 { - t.Fatalf("Should have added original ami to Regions one time only") - } - - // ------------------------------------------------------------------------ - // Both Region and Regions set, but no encryption - shouldn't copy anything - // ------------------------------------------------------------------------ - - // the ami is only copied once. - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-east-1"}, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - state.Put("intermediary_image", false) - stepAMIRegionCopy.getRegionConn = getMockConn - stepAMIRegionCopy.Run(context.Background(), state) - - if len(stepAMIRegionCopy.Regions) != 0 { - t.Fatalf("Should not have added original ami to Regions; not encrypting") - } - - // ------------------------------------------------------------------------ - // Both Region and Regions set, but no encryption - shouldn't copy anything, - // this tests false as opposed to nil value above. - // ------------------------------------------------------------------------ - - // the ami is only copied once. - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-east-1"}, - EncryptBootVolume: config.TriFalse, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - state.Put("intermediary_image", false) - stepAMIRegionCopy.getRegionConn = getMockConn - stepAMIRegionCopy.Run(context.Background(), state) - - if len(stepAMIRegionCopy.Regions) != 0 { - t.Fatalf("Should not have added original ami to Regions once; not" + - "encrypting") - } - - // ------------------------------------------------------------------------ - // Multiple regions, many duplicates, and encryption (this shouldn't ever - // happen because of our template validation, but good to test it.) - // ------------------------------------------------------------------------ - - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - // Many duplicates for only 3 actual values - Regions: []string{"us-east-1", "us-west-2", "us-west-2", "ap-east-1", "ap-east-1", "ap-east-1"}, - AMIKmsKeyId: "IlikePancakes", - // Original region key in regionkeyids is different than in amikmskeyid - RegionKeyIds: map[string]string{"us-east-1": "12345", "us-west-2": "abcde", "ap-east-1": "xyz"}, - EncryptBootVolume: config.TriTrue, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - state.Put("intermediary_image", true) - stepAMIRegionCopy.Run(context.Background(), state) - - if len(stepAMIRegionCopy.Regions) != 3 { - t.Fatalf("Each AMI should have been added to Regions one time only.") - } - - // Also verify that we respect RegionKeyIds over AMIKmsKeyIds: - if stepAMIRegionCopy.RegionKeyIds["us-east-1"] != "12345" { - t.Fatalf("RegionKeyIds should take precedence over AmiKmsKeyIds") - } - - // ------------------------------------------------------------------------ - // Multiple regions, many duplicates, NO encryption - // ------------------------------------------------------------------------ - - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - // Many duplicates for only 3 actual values - Regions: []string{"us-east-1", "us-west-2", "us-west-2", "ap-east-1", "ap-east-1", "ap-east-1"}, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - state.Put("intermediary_image", false) - stepAMIRegionCopy.Run(context.Background(), state) - - if len(stepAMIRegionCopy.Regions) != 2 { - t.Fatalf("Each AMI should have been added to Regions one time only, " + - "and original region shouldn't be added at all") - } -} - -func TestStepAmiRegionCopy_nil_encryption(t *testing.T) { - // create step - stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: make([]string, 0), - AMIKmsKeyId: "", - RegionKeyIds: make(map[string]string), - EncryptBootVolume: config.TriUnset, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state := tState() - state.Put("intermediary_image", false) - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete != "" { - t.Fatalf("Shouldn't have an intermediary ami if encrypt is nil") - } - if len(stepAMIRegionCopy.Regions) != 0 { - t.Fatalf("Should not have added original ami to original region") - } -} - -func TestStepAmiRegionCopy_true_encryption(t *testing.T) { - // create step - stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: make([]string, 0), - AMIKmsKeyId: "", - RegionKeyIds: make(map[string]string), - EncryptBootVolume: config.TriTrue, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state := tState() - state.Put("intermediary_image", true) - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete == "" { - t.Fatalf("Should delete original AMI if encrypted=true") - } - if len(stepAMIRegionCopy.Regions) == 0 { - t.Fatalf("Should have added original ami to Regions") - } -} - -func TestStepAmiRegionCopy_nil_intermediary(t *testing.T) { - // create step - stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: make([]string, 0), - AMIKmsKeyId: "", - RegionKeyIds: make(map[string]string), - EncryptBootVolume: config.TriFalse, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state := tState() - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete != "" { - t.Fatalf("Should not delete original AMI if no intermediary") - } - if len(stepAMIRegionCopy.Regions) != 0 { - t.Fatalf("Should not have added original ami to Regions") - } -} - -func TestStepAmiRegionCopy_AMISkipBuildRegion(t *testing.T) { - // ------------------------------------------------------------------------ - // skip build region is true - // ------------------------------------------------------------------------ - - stepAMIRegionCopy := StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-west-1"}, - AMIKmsKeyId: "", - RegionKeyIds: map[string]string{"us-west-1": "abcde"}, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - AMISkipBuildRegion: true, - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state := tState() - state.Put("intermediary_image", true) - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete == "" { - t.Fatalf("Should delete original AMI if skip_save_build_region=true") - } - if len(stepAMIRegionCopy.Regions) != 1 { - t.Fatalf("Should not have added original ami to Regions; Regions: %#v", stepAMIRegionCopy.Regions) - } - - // ------------------------------------------------------------------------ - // skip build region is false. - // ------------------------------------------------------------------------ - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-west-1"}, - AMIKmsKeyId: "", - RegionKeyIds: make(map[string]string), - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - AMISkipBuildRegion: false, - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state.Put("intermediary_image", false) // not encrypted - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete != "" { - t.Fatalf("Shouldn't have an intermediary AMI, so dont delete original ami") - } - if len(stepAMIRegionCopy.Regions) != 1 { - t.Fatalf("Should not have added original ami to Regions; Regions: %#v", stepAMIRegionCopy.Regions) - } - - // ------------------------------------------------------------------------ - // skip build region is false, but encrypt is true - // ------------------------------------------------------------------------ - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-west-1"}, - AMIKmsKeyId: "", - RegionKeyIds: map[string]string{"us-west-1": "abcde"}, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - AMISkipBuildRegion: false, - EncryptBootVolume: config.TriTrue, - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state.Put("intermediary_image", true) //encrypted - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete == "" { - t.Fatalf("Have to delete intermediary AMI") - } - if len(stepAMIRegionCopy.Regions) != 2 { - t.Fatalf("Should have added original ami to Regions; Regions: %#v", stepAMIRegionCopy.Regions) - } - - // ------------------------------------------------------------------------ - // skip build region is true, and encrypt is true - // ------------------------------------------------------------------------ - stepAMIRegionCopy = StepAMIRegionCopy{ - AccessConfig: FakeAccessConfig(), - Regions: []string{"us-west-1"}, - AMIKmsKeyId: "", - RegionKeyIds: map[string]string{"us-west-1": "abcde"}, - Name: "fake-ami-name", - OriginalRegion: "us-east-1", - AMISkipBuildRegion: true, - EncryptBootVolume: config.TriTrue, - } - // mock out the region connection code - stepAMIRegionCopy.getRegionConn = getMockConn - - state.Put("intermediary_image", true) //encrypted - stepAMIRegionCopy.Run(context.Background(), state) - - if stepAMIRegionCopy.toDelete == "" { - t.Fatalf("Have to delete intermediary AMI") - } - if len(stepAMIRegionCopy.Regions) != 1 { - t.Fatalf("Should not have added original ami to Regions; Regions: %#v", stepAMIRegionCopy.Regions) - } -} diff --git a/builder/amazon/common/step_pre_validate_test.go b/builder/amazon/common/step_pre_validate_test.go deleted file mode 100644 index ffaf946f9..000000000 --- a/builder/amazon/common/step_pre_validate_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package common - -import ( - "fmt" - "strings" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" -) - -//DescribeVpcs mocks an ec2.DescribeVpcsOutput for a given input -func (m *mockEC2Conn) DescribeVpcs(input *ec2.DescribeVpcsInput) (*ec2.DescribeVpcsOutput, error) { - - if input == nil || aws.StringValue(input.VpcIds[0]) == "" { - return nil, fmt.Errorf("oops looks like we need more input") - } - - var isDefault bool - vpcID := aws.StringValue(input.VpcIds[0]) - - //only one default VPC per region - if strings.Contains("vpc-default-id", vpcID) { - isDefault = true - } - - output := &ec2.DescribeVpcsOutput{ - Vpcs: []*ec2.Vpc{ - {IsDefault: aws.Bool(isDefault), - VpcId: aws.String(vpcID), - }, - }, - } - return output, nil -} - -func TestStepPreValidate_checkVpc(t *testing.T) { - tt := []struct { - name string - step StepPreValidate - errorExpected bool - }{ - {"DefaultVpc", StepPreValidate{VpcId: "vpc-default-id"}, false}, - {"NonDefaultVpcNoSubnet", StepPreValidate{VpcId: "vpc-1234567890"}, true}, - {"NonDefaultVpcWithSubnet", StepPreValidate{VpcId: "vpc-1234567890", SubnetId: "subnet-1234567890"}, false}, - {"SubnetWithNoVpc", StepPreValidate{SubnetId: "subnet-1234567890"}, false}, - {"NoVpcInformation", StepPreValidate{}, false}, - {"NonDefaultVpcWithSubnetFilter", StepPreValidate{VpcId: "vpc-1234567890", HasSubnetFilter: true}, false}, - } - - mockConn, err := getMockConn(nil, "") - if err != nil { - t.Fatal("unable to get a mock connection") - } - - for _, tc := range tt { - t.Run(tc.name, func(t *testing.T) { - err := tc.step.checkVpc(mockConn) - - if tc.errorExpected && err == nil { - t.Errorf("expected a validation error for %q but got %q", tc.name, err) - } - - if !tc.errorExpected && err != nil { - t.Errorf("expected a validation to pass for %q but got %q", tc.name, err) - } - }) - } - -} diff --git a/builder/amazon/common/step_run_spot_instance_test.go b/builder/amazon/common/step_run_spot_instance_test.go deleted file mode 100644 index 71caa4bd3..000000000 --- a/builder/amazon/common/step_run_spot_instance_test.go +++ /dev/null @@ -1,366 +0,0 @@ -package common - -import ( - "bytes" - "context" - "fmt" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/aws/aws-sdk-go/service/ec2/ec2iface" - "github.com/hashicorp/packer-plugin-sdk/communicator" - "github.com/hashicorp/packer-plugin-sdk/multistep" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -// Create statebag for running test -func tStateSpot() multistep.StateBag { - state := new(multistep.BasicStateBag) - state.Put("ui", &packersdk.BasicUi{ - Reader: new(bytes.Buffer), - Writer: new(bytes.Buffer), - }) - state.Put("availability_zone", "us-east-1c") - state.Put("securityGroupIds", []string{"sg-0b8984db72f213dc3"}) - state.Put("iamInstanceProfile", "packer-123") - state.Put("subnet_id", "subnet-077fde4e") - state.Put("source_image", "") - return state -} - -func getBasicStep() *StepRunSpotInstance { - stepRunSpotInstance := StepRunSpotInstance{ - PollingConfig: new(AWSPollingConfig), - AssociatePublicIpAddress: false, - LaunchMappings: BlockDevices{}, - BlockDurationMinutes: 0, - Debug: false, - Comm: &communicator.Config{ - SSH: communicator.SSH{ - SSHKeyPairName: "foo", - }, - }, - EbsOptimized: false, - ExpectedRootDevice: "ebs", - InstanceInitiatedShutdownBehavior: "stop", - InstanceType: "t2.micro", - Region: "us-east-1", - SourceAMI: "", - SpotPrice: "auto", - SpotTags: nil, - Tags: map[string]string{}, - VolumeTags: nil, - UserData: "", - UserDataFile: "", - } - - return &stepRunSpotInstance -} - -func TestCreateTemplateData(t *testing.T) { - state := tStateSpot() - stepRunSpotInstance := getBasicStep() - template := stepRunSpotInstance.CreateTemplateData(aws.String("userdata"), "az", state, - &ec2.LaunchTemplateInstanceMarketOptionsRequest{}) - - // expected := []*ec2.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest{ - // &ec2.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest{ - // DeleteOnTermination: aws.Bool(true), - // DeviceIndex: aws.Int64(0), - // Groups: aws.StringSlice([]string{"sg-0b8984db72f213dc3"}), - // SubnetId: aws.String("subnet-077fde4e"), - // }, - // } - // if expected != template.NetworkInterfaces { - if template.NetworkInterfaces == nil { - t.Fatalf("Template should have contained a networkInterface object: recieved %#v", template.NetworkInterfaces) - } - - if *template.IamInstanceProfile.Name != state.Get("iamInstanceProfile") { - t.Fatalf("Template should have contained a InstanceProfile name: recieved %#v", template.IamInstanceProfile.Name) - } - - // Rerun, this time testing that we set security group IDs - state.Put("subnet_id", "") - template = stepRunSpotInstance.CreateTemplateData(aws.String("userdata"), "az", state, - &ec2.LaunchTemplateInstanceMarketOptionsRequest{}) - if template.NetworkInterfaces != nil { - t.Fatalf("Template shouldn't contain network interfaces object if subnet_id is unset.") - } - - // Rerun, this time testing that instance doesn't have instance profile is iamInstanceProfile is unset - state.Put("iamInstanceProfile", "") - template = stepRunSpotInstance.CreateTemplateData(aws.String("userdata"), "az", state, - &ec2.LaunchTemplateInstanceMarketOptionsRequest{}) - fmt.Println(template.IamInstanceProfile) - if *template.IamInstanceProfile.Name != "" { - t.Fatalf("Template shouldn't contain instance profile if iamInstanceProfile is unset.") - } -} - -func TestCreateTemplateData_NoEphemeral(t *testing.T) { - state := tStateSpot() - stepRunSpotInstance := getBasicStep() - stepRunSpotInstance.NoEphemeral = true - template := stepRunSpotInstance.CreateTemplateData(aws.String("userdata"), "az", state, - &ec2.LaunchTemplateInstanceMarketOptionsRequest{}) - if len(template.BlockDeviceMappings) != 26 { - t.Fatalf("Should have created 26 mappings to keep ephemeral drives from appearing.") - } - - // Now check that noEphemeral doesn't mess with the mappings in real life. - // state = tStateSpot() - // stepRunSpotInstance = getBasicStep() - // stepRunSpotInstance.NoEphemeral = true - // mappings := []*ec2.InstanceBlockDeviceMapping{ - // &ec2.InstanceBlockDeviceMapping{ - // DeviceName: "xvda", - // Ebs: { - // DeleteOnTermination: true, - // Status: "attaching", - // VolumeId: "vol-044cd49c330f21c05", - // }, - // }, - // &ec2.InstanceBlockDeviceMapping{ - // DeviceName: "/dev/xvdf", - // Ebs: { - // DeleteOnTermination: false, - // Status: "attaching", - // VolumeId: "vol-0eefaf2d6ae35827e", - // }, - // }, - // } - // template = stepRunSpotInstance.CreateTemplateData(aws.String("userdata"), "az", state, - // &ec2.LaunchTemplateInstanceMarketOptionsRequest{}) - // if len(*template.BlockDeviceMappings) != 26 { - // t.Fatalf("Should have created 26 mappings to keep ephemeral drives from appearing.") - // } -} - -type runSpotEC2ConnMock struct { - ec2iface.EC2API - - CreateLaunchTemplateParams []*ec2.CreateLaunchTemplateInput - CreateLaunchTemplateFn func(*ec2.CreateLaunchTemplateInput) (*ec2.CreateLaunchTemplateOutput, error) - - CreateFleetParams []*ec2.CreateFleetInput - CreateFleetFn func(*ec2.CreateFleetInput) (*ec2.CreateFleetOutput, error) - - CreateTagsParams []*ec2.CreateTagsInput - CreateTagsFn func(*ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) - - DescribeInstancesParams []*ec2.DescribeInstancesInput - DescribeInstancesFn func(input *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) -} - -func (m *runSpotEC2ConnMock) CreateLaunchTemplate(req *ec2.CreateLaunchTemplateInput) (*ec2.CreateLaunchTemplateOutput, error) { - m.CreateLaunchTemplateParams = append(m.CreateLaunchTemplateParams, req) - resp, err := m.CreateLaunchTemplateFn(req) - return resp, err -} - -func (m *runSpotEC2ConnMock) CreateFleet(req *ec2.CreateFleetInput) (*ec2.CreateFleetOutput, error) { - m.CreateFleetParams = append(m.CreateFleetParams, req) - if m.CreateFleetFn != nil { - resp, err := m.CreateFleetFn(req) - return resp, err - } else { - return nil, nil - } -} - -func (m *runSpotEC2ConnMock) DescribeInstances(req *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) { - m.DescribeInstancesParams = append(m.DescribeInstancesParams, req) - if m.DescribeInstancesFn != nil { - resp, err := m.DescribeInstancesFn(req) - return resp, err - } else { - return nil, nil - } -} - -func (m *runSpotEC2ConnMock) CreateTags(req *ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) { - m.CreateTagsParams = append(m.CreateTagsParams, req) - if m.CreateTagsFn != nil { - resp, err := m.CreateTagsFn(req) - return resp, err - } else { - return nil, nil - } -} - -func defaultEc2Mock(instanceId, spotRequestId, volumeId, launchTemplateId *string) *runSpotEC2ConnMock { - instance := &ec2.Instance{ - InstanceId: instanceId, - SpotInstanceRequestId: spotRequestId, - BlockDeviceMappings: []*ec2.InstanceBlockDeviceMapping{ - { - Ebs: &ec2.EbsInstanceBlockDevice{ - VolumeId: volumeId, - }, - }, - }, - } - return &runSpotEC2ConnMock{ - CreateLaunchTemplateFn: func(in *ec2.CreateLaunchTemplateInput) (*ec2.CreateLaunchTemplateOutput, error) { - return &ec2.CreateLaunchTemplateOutput{ - LaunchTemplate: &ec2.LaunchTemplate{ - LaunchTemplateId: launchTemplateId, - }, - Warning: nil, - }, nil - }, - CreateFleetFn: func(*ec2.CreateFleetInput) (*ec2.CreateFleetOutput, error) { - return &ec2.CreateFleetOutput{ - Errors: nil, - FleetId: nil, - Instances: []*ec2.CreateFleetInstance{ - { - InstanceIds: []*string{instanceId}, - }, - }, - }, nil - }, - DescribeInstancesFn: func(input *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) { - return &ec2.DescribeInstancesOutput{ - NextToken: nil, - Reservations: []*ec2.Reservation{ - { - Instances: []*ec2.Instance{instance}, - }, - }, - }, nil - }, - } -} - -func TestRun(t *testing.T) { - instanceId := aws.String("test-instance-id") - spotRequestId := aws.String("spot-id") - volumeId := aws.String("volume-id") - launchTemplateId := aws.String("launchTemplateId") - ec2Mock := defaultEc2Mock(instanceId, spotRequestId, volumeId, launchTemplateId) - - uiMock := packersdk.TestUi(t) - - state := tStateSpot() - state.Put("ec2", ec2Mock) - state.Put("ui", uiMock) - state.Put("source_image", testImage()) - - stepRunSpotInstance := getBasicStep() - stepRunSpotInstance.Tags["Name"] = "Packer Builder" - stepRunSpotInstance.Tags["test-tag"] = "test-value" - stepRunSpotInstance.SpotTags = map[string]string{ - "spot-tag": "spot-tag-value", - } - stepRunSpotInstance.VolumeTags = map[string]string{ - "volume-tag": "volume-tag-value", - } - - ctx := context.TODO() - action := stepRunSpotInstance.Run(ctx, state) - - if err := state.Get("error"); err != nil { - t.Fatalf("should not error, but: %v", err) - } - - if action != multistep.ActionContinue { - t.Fatalf("shoul continue, but: %v", action) - } - - if len(ec2Mock.CreateLaunchTemplateParams) != 1 { - t.Fatalf("createLaunchTemplate should be invoked once, but invoked %v", len(ec2Mock.CreateLaunchTemplateParams)) - } - launchTemplateName := ec2Mock.CreateLaunchTemplateParams[0].LaunchTemplateName - - if len(ec2Mock.CreateLaunchTemplateParams[0].TagSpecifications) != 1 { - t.Fatalf("exactly one launch template tag specification expected") - } - if *ec2Mock.CreateLaunchTemplateParams[0].TagSpecifications[0].ResourceType != "launch-template" { - t.Fatalf("resource type 'launch-template' expected") - } - if len(ec2Mock.CreateLaunchTemplateParams[0].TagSpecifications[0].Tags) != 1 { - t.Fatalf("1 launch template tag expected") - } - - nameTag := ec2Mock.CreateLaunchTemplateParams[0].TagSpecifications[0].Tags[0] - if *nameTag.Key != "spot-tag" || *nameTag.Value != "spot-tag-value" { - t.Fatalf("expected spot-tag: spot-tag-value") - } - - if len(ec2Mock.CreateFleetParams) != 1 { - t.Fatalf("createFleet should be invoked once, but invoked %v", len(ec2Mock.CreateLaunchTemplateParams)) - } - if *ec2Mock.CreateFleetParams[0].TargetCapacitySpecification.DefaultTargetCapacityType != "spot" { - t.Fatalf("capacity type should be spot") - } - if *ec2Mock.CreateFleetParams[0].TargetCapacitySpecification.TotalTargetCapacity != 1 { - t.Fatalf("target capacity should be 1") - } - if len(ec2Mock.CreateFleetParams[0].LaunchTemplateConfigs) != 1 { - t.Fatalf("exactly one launch config template expected") - } - if *ec2Mock.CreateFleetParams[0].LaunchTemplateConfigs[0].LaunchTemplateSpecification.LaunchTemplateName != *launchTemplateName { - t.Fatalf("launchTemplateName should match in createLaunchTemplate and createFleet requests") - } - - if len(ec2Mock.DescribeInstancesParams) != 1 { - t.Fatalf("describeInstancesParams should be invoked once, but invoked %v", len(ec2Mock.DescribeInstancesParams)) - } - if *ec2Mock.DescribeInstancesParams[0].InstanceIds[0] != *instanceId { - t.Fatalf("instanceId should match from createFleet response") - } - - uiMock.Say(fmt.Sprintf("%v", ec2Mock.CreateTagsParams)) - if len(ec2Mock.CreateTagsParams) != 3 { - t.Fatalf("createTags should be invoked 3 times") - } - if len(ec2Mock.CreateTagsParams[0].Resources) != 1 || *ec2Mock.CreateTagsParams[0].Resources[0] != *spotRequestId { - t.Fatalf("should create tags for spot request") - } - if len(ec2Mock.CreateTagsParams[1].Resources) != 1 || *ec2Mock.CreateTagsParams[1].Resources[0] != *instanceId { - t.Fatalf("should create tags for instance") - } - if len(ec2Mock.CreateTagsParams[2].Resources) != 1 || ec2Mock.CreateTagsParams[2].Resources[0] != volumeId { - t.Fatalf("should create tags for volume") - } -} - -func TestRun_NoSpotTags(t *testing.T) { - instanceId := aws.String("test-instance-id") - spotRequestId := aws.String("spot-id") - volumeId := aws.String("volume-id") - launchTemplateId := aws.String("lt-id") - ec2Mock := defaultEc2Mock(instanceId, spotRequestId, volumeId, launchTemplateId) - - uiMock := packersdk.TestUi(t) - - state := tStateSpot() - state.Put("ec2", ec2Mock) - state.Put("ui", uiMock) - state.Put("source_image", testImage()) - - stepRunSpotInstance := getBasicStep() - stepRunSpotInstance.Tags["Name"] = "Packer Builder" - stepRunSpotInstance.Tags["test-tag"] = "test-value" - stepRunSpotInstance.VolumeTags = map[string]string{ - "volume-tag": "volume-tag-value", - } - - ctx := context.TODO() - action := stepRunSpotInstance.Run(ctx, state) - - if err := state.Get("error"); err != nil { - t.Fatalf("should not error, but: %v", err) - } - - if action != multistep.ActionContinue { - t.Fatalf("shoul continue, but: %v", action) - } - - if len(ec2Mock.CreateLaunchTemplateParams[0].TagSpecifications) != 0 { - t.Fatalf("0 launch template tags expected") - } -} diff --git a/builder/amazon/common/step_source_ami_info_test.go b/builder/amazon/common/step_source_ami_info_test.go deleted file mode 100644 index 4941180cd..000000000 --- a/builder/amazon/common/step_source_ami_info_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package common - -import ( - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/stretchr/testify/assert" -) - -func TestStepSourceAmiInfo_PVImage(t *testing.T) { - err := new(StepSourceAMIInfo).canEnableEnhancedNetworking(&ec2.Image{ - VirtualizationType: aws.String("paravirtual"), - }) - assert.Error(t, err) -} - -func TestStepSourceAmiInfo_HVMImage(t *testing.T) { - err := new(StepSourceAMIInfo).canEnableEnhancedNetworking(&ec2.Image{ - VirtualizationType: aws.String("hvm"), - }) - assert.NoError(t, err) -} - -func TestStepSourceAmiInfo_PVImageWithAMIVirtPV(t *testing.T) { - stepSourceAMIInfo := StepSourceAMIInfo{ - AMIVirtType: "paravirtual", - } - err := stepSourceAMIInfo.canEnableEnhancedNetworking(&ec2.Image{ - VirtualizationType: aws.String("paravirtual"), - }) - assert.Error(t, err) -} - -func TestStepSourceAmiInfo_PVImageWithAMIVirtHVM(t *testing.T) { - stepSourceAMIInfo := StepSourceAMIInfo{ - AMIVirtType: "hvm", - } - err := stepSourceAMIInfo.canEnableEnhancedNetworking(&ec2.Image{ - VirtualizationType: aws.String("paravirtual"), - }) - assert.NoError(t, err) -} diff --git a/builder/amazon/common/template_funcs_test.go b/builder/amazon/common/template_funcs_test.go deleted file mode 100644 index 11ad70aac..000000000 --- a/builder/amazon/common/template_funcs_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package common - -import ( - "testing" -) - -func TestAMITemplatePrepare_clean(t *testing.T) { - origName := "AMZamz09()./-_:&^ $%[]#'@" - expected := "AMZamz09()./-_--- --[]-'@" - - name := templateCleanAMIName(origName) - - if name != expected { - t.Fatalf("template names do not match: expected %s got %s\n", expected, name) - } -} diff --git a/builder/amazon/ebs/acceptance/aws.go b/builder/amazon/ebs/acceptance/aws.go deleted file mode 100644 index bbccf3857..000000000 --- a/builder/amazon/ebs/acceptance/aws.go +++ /dev/null @@ -1,46 +0,0 @@ -package amazon_acc - -import ( - "fmt" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - awscommon "github.com/hashicorp/packer/builder/amazon/common" -) - -type AWSHelper struct { - Region string - AMIName string -} - -func (a *AWSHelper) CleanUpAmi() error { - accessConfig := &awscommon.AccessConfig{} - session, err := accessConfig.Session() - if err != nil { - return fmt.Errorf("AWSAMICleanUp: Unable to create aws session %s", err.Error()) - } - - regionconn := ec2.New(session.Copy(&aws.Config{ - Region: aws.String(a.Region), - })) - - resp, err := regionconn.DescribeImages(&ec2.DescribeImagesInput{ - Owners: aws.StringSlice([]string{"self"}), - Filters: []*ec2.Filter{{ - Name: aws.String("name"), - Values: aws.StringSlice([]string{a.AMIName}), - }}}) - if err != nil { - return fmt.Errorf("AWSAMICleanUp: Unable to find Image %s: %s", a.AMIName, err.Error()) - } - - if resp != nil && len(resp.Images) > 0 { - _, err = regionconn.DeregisterImage(&ec2.DeregisterImageInput{ - ImageId: resp.Images[0].ImageId, - }) - if err != nil { - return fmt.Errorf("AWSAMICleanUp: Unable to Deregister Image %s", err.Error()) - } - } - return nil -} diff --git a/builder/amazon/ebs/acceptance/builder_acceptance.go b/builder/amazon/ebs/acceptance/builder_acceptance.go deleted file mode 100644 index 9363a1647..000000000 --- a/builder/amazon/ebs/acceptance/builder_acceptance.go +++ /dev/null @@ -1,59 +0,0 @@ -package amazon_acc - -// This is the code necessary for running the provisioner acceptance tests. -// It provides the builder config and cleans up created resource. - -import ( - "fmt" - "io/ioutil" - "os" - "path/filepath" - - amazonebsbuilder "github.com/hashicorp/packer/builder/amazon/ebs" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -type AmazonEBSAccTest struct{} - -func (s *AmazonEBSAccTest) GetConfigs() (map[string]string, error) { - fixtures := map[string]string{ - "linux": "amazon-ebs.txt", - "windows": "amazon-ebs_windows.txt", - } - - configs := make(map[string]string) - - for distro, fixture := range fixtures { - fileName := fixture - filePath := filepath.Join("../../builder/amazon/ebs/acceptance/test-fixtures/", fileName) - config, err := os.Open(filePath) - if err != nil { - return nil, fmt.Errorf("Expected to find %s", filePath) - } - defer config.Close() - - file, err := ioutil.ReadAll(config) - if err != nil { - return nil, fmt.Errorf("Unable to read %s", filePath) - } - - configs[distro] = string(file) - - } - return configs, nil -} - -func (s *AmazonEBSAccTest) CleanUp() error { - helper := AWSHelper{ - Region: "us-east-1", - AMIName: "packer-acc-test", - } - return helper.CleanUpAmi() -} - -func (s *AmazonEBSAccTest) GetBuilderStore() packersdk.MapOfBuilder { - return packersdk.MapOfBuilder{ - "amazon-ebs": func() (packersdk.Builder, error) { return &amazonebsbuilder.Builder{}, nil }, - } -} diff --git a/builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs.txt b/builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs.txt deleted file mode 100644 index 1245cf9e5..000000000 --- a/builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs.txt +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "amazon-ebs", - "ami_name": "packer-acc-test", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "force_deregister" : true, - "tags": { - "packer-test": "true" - } -} \ No newline at end of file diff --git a/builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs_windows.txt b/builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs_windows.txt deleted file mode 100644 index b23dc04ba..000000000 --- a/builder/amazon/ebs/acceptance/test-fixtures/amazon-ebs_windows.txt +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "amazon-ebs", - "region": "us-east-1", - "instance_type": "t2.micro", - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "*Windows_Server-2012-R2*English-64Bit-Base*", - "root-device-type": "ebs" - }, - "most_recent": true, - "owners": "amazon" - }, - "ami_name": "packer-acc-test", - "user_data_file": "../../builder/amazon/ebs/acceptance/test-fixtures/scripts/bootstrap_win.txt", - "communicator": "winrm", - "winrm_username": "Administrator", - "winrm_password": "SuperS3cr3t!!!!", - "force_deregister" : true, - "tags": { - "packer-test": "true" - } -} diff --git a/builder/amazon/ebs/acceptance/test-fixtures/scripts/bootstrap_win.txt b/builder/amazon/ebs/acceptance/test-fixtures/scripts/bootstrap_win.txt deleted file mode 100644 index 8229c8842..000000000 --- a/builder/amazon/ebs/acceptance/test-fixtures/scripts/bootstrap_win.txt +++ /dev/null @@ -1,40 +0,0 @@ - -# Set administrator password -net user Administrator SuperS3cr3t!!!! -wmic useraccount where "name='Administrator'" set PasswordExpires=FALSE - -# First, make sure WinRM can't be connected to -netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" new enable=yes action=block - -# Delete any existing WinRM listeners -winrm delete winrm/config/listener?Address=*+Transport=HTTP 2>$Null -winrm delete winrm/config/listener?Address=*+Transport=HTTPS 2>$Null - -# Disable group policies which block basic authentication and unencrypted login - -Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WinRM\Client -Name AllowBasic -Value 1 -Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WinRM\Client -Name AllowUnencryptedTraffic -Value 1 -Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WinRM\Service -Name AllowBasic -Value 1 -Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WinRM\Service -Name AllowUnencryptedTraffic -Value 1 - - -# Create a new WinRM listener and configure -winrm create winrm/config/listener?Address=*+Transport=HTTP -winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="0"}' -winrm set winrm/config '@{MaxTimeoutms="7200000"}' -winrm set winrm/config/service '@{AllowUnencrypted="true"}' -winrm set winrm/config/service '@{MaxConcurrentOperationsPerUser="12000"}' -winrm set winrm/config/service/auth '@{Basic="true"}' -winrm set winrm/config/client/auth '@{Basic="true"}' - -# Configure UAC to allow privilege elevation in remote shells -$Key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -$Setting = 'LocalAccountTokenFilterPolicy' -Set-ItemProperty -Path $Key -Name $Setting -Value 1 -Force - -# Configure and restart the WinRM Service; Enable the required firewall exception -Stop-Service -Name WinRM -Set-Service -Name WinRM -StartupType Automatic -netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" new action=allow localip=any remoteip=any -Start-Service -Name WinRM - diff --git a/builder/amazon/ebs/builder_acc_test.go b/builder/amazon/ebs/builder_acc_test.go deleted file mode 100644 index 13623f435..000000000 --- a/builder/amazon/ebs/builder_acc_test.go +++ /dev/null @@ -1,396 +0,0 @@ -/* -Deregister the test image with -aws ec2 deregister-image --image-id $(aws ec2 describe-images --output text --filters "Name=name,Values=packer-test-packer-test-dereg" --query 'Images[*].{ID:ImageId}') -*/ -package ebs - -import ( - "fmt" - "os" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - builderT "github.com/hashicorp/packer-plugin-sdk/acctest" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/amazon/common" -) - -func TestBuilderAcc_basic(t *testing.T) { - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: testBuilderAccBasic, - }) -} - -func TestBuilderAcc_regionCopy(t *testing.T) { - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: testBuilderAccRegionCopy, - Check: checkRegionCopy([]string{"us-east-1", "us-west-2"}), - }) -} - -func TestBuilderAcc_forceDeregister(t *testing.T) { - // Build the same AMI name twice, with force_deregister on the second run - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: buildForceDeregisterConfig("false", "dereg"), - SkipArtifactTeardown: true, - }) - - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: buildForceDeregisterConfig("true", "dereg"), - }) -} - -func TestBuilderAcc_forceDeleteSnapshot(t *testing.T) { - amiName := "packer-test-dereg" - - // Build the same AMI name twice, with force_delete_snapshot on the second run - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: buildForceDeleteSnapshotConfig("false", amiName), - SkipArtifactTeardown: true, - }) - - // Get image data by AMI name - ec2conn, _ := testEC2Conn() - describeInput := &ec2.DescribeImagesInput{Filters: []*ec2.Filter{ - { - Name: aws.String("name"), - Values: []*string{aws.String(amiName)}, - }, - }} - ec2conn.WaitUntilImageExists(describeInput) - imageResp, _ := ec2conn.DescribeImages(describeInput) - image := imageResp.Images[0] - - // Get snapshot ids for image - snapshotIds := []*string{} - for _, device := range image.BlockDeviceMappings { - if device.Ebs != nil && device.Ebs.SnapshotId != nil { - snapshotIds = append(snapshotIds, device.Ebs.SnapshotId) - } - } - - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: buildForceDeleteSnapshotConfig("true", amiName), - Check: checkSnapshotsDeleted(snapshotIds), - }) -} - -func checkSnapshotsDeleted(snapshotIds []*string) builderT.TestCheckFunc { - return func(artifacts []packersdk.Artifact) error { - // Verify the snapshots are gone - ec2conn, _ := testEC2Conn() - snapshotResp, _ := ec2conn.DescribeSnapshots( - &ec2.DescribeSnapshotsInput{SnapshotIds: snapshotIds}, - ) - - if len(snapshotResp.Snapshots) > 0 { - return fmt.Errorf("Snapshots weren't successfully deleted by `force_delete_snapshot`") - } - return nil - } -} - -func TestBuilderAcc_amiSharing(t *testing.T) { - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccSharingPreCheck(t) }, - Builder: &Builder{}, - Template: buildSharingConfig(os.Getenv("TESTACC_AWS_ACCOUNT_ID")), - Check: checkAMISharing(2, os.Getenv("TESTACC_AWS_ACCOUNT_ID"), "all"), - }) -} - -func TestBuilderAcc_encryptedBoot(t *testing.T) { - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: testBuilderAccEncrypted, - Check: checkBootEncrypted(), - }) -} - -func checkAMISharing(count int, uid, group string) builderT.TestCheckFunc { - return func(artifacts []packersdk.Artifact) error { - if len(artifacts) > 1 { - return fmt.Errorf("more than 1 artifact") - } - - // Get the actual *Artifact pointer so we can access the AMIs directly - artifactRaw := artifacts[0] - artifact, ok := artifactRaw.(*common.Artifact) - if !ok { - return fmt.Errorf("unknown artifact: %#v", artifactRaw) - } - - // describe the image, get block devices with a snapshot - ec2conn, _ := testEC2Conn() - imageResp, err := ec2conn.DescribeImageAttribute(&ec2.DescribeImageAttributeInput{ - Attribute: aws.String("launchPermission"), - ImageId: aws.String(artifact.Amis["us-east-1"]), - }) - - if err != nil { - return fmt.Errorf("Error retrieving Image Attributes for AMI Artifact (%#v) in AMI Sharing Test: %s", artifact, err) - } - - // Launch Permissions are in addition to the userid that created it, so if - // you add 3 additional ami_users, you expect 2 Launch Permissions here - if len(imageResp.LaunchPermissions) != count { - return fmt.Errorf("Error in Image Attributes, expected (%d) Launch Permissions, got (%d)", count, len(imageResp.LaunchPermissions)) - } - - userFound := false - for _, lp := range imageResp.LaunchPermissions { - if lp.UserId != nil && uid == *lp.UserId { - userFound = true - } - } - - if !userFound { - return fmt.Errorf("Error in Image Attributes, expected User ID (%s) to have Launch Permissions, but was not found", uid) - } - - groupFound := false - for _, lp := range imageResp.LaunchPermissions { - if lp.Group != nil && group == *lp.Group { - groupFound = true - } - } - - if !groupFound { - return fmt.Errorf("Error in Image Attributes, expected Group ID (%s) to have Launch Permissions, but was not found", group) - } - - return nil - } -} - -func checkRegionCopy(regions []string) builderT.TestCheckFunc { - return func(artifacts []packersdk.Artifact) error { - if len(artifacts) > 1 { - return fmt.Errorf("more than 1 artifact") - } - - // Get the actual *Artifact pointer so we can access the AMIs directly - artifactRaw := artifacts[0] - artifact, ok := artifactRaw.(*common.Artifact) - if !ok { - return fmt.Errorf("unknown artifact: %#v", artifactRaw) - } - - // Verify that we copied to only the regions given - regionSet := make(map[string]struct{}) - for _, r := range regions { - regionSet[r] = struct{}{} - } - for r := range artifact.Amis { - if _, ok := regionSet[r]; !ok { - return fmt.Errorf("unknown region: %s", r) - } - - delete(regionSet, r) - } - if len(regionSet) > 0 { - return fmt.Errorf("didn't copy to: %#v", regionSet) - } - - return nil - } -} - -func checkBootEncrypted() builderT.TestCheckFunc { - return func(artifacts []packersdk.Artifact) error { - - // Get the actual *Artifact pointer so we can access the AMIs directly - artifactRaw := artifacts[0] - artifact, ok := artifactRaw.(*common.Artifact) - if !ok { - return fmt.Errorf("unknown artifact: %#v", artifactRaw) - } - - // describe the image, get block devices with a snapshot - ec2conn, _ := testEC2Conn() - imageResp, err := ec2conn.DescribeImages(&ec2.DescribeImagesInput{ - ImageIds: []*string{aws.String(artifact.Amis["us-east-1"])}, - }) - - if err != nil { - return fmt.Errorf("Error retrieving Image Attributes for AMI (%s) in AMI Encrypted Boot Test: %s", artifact, err) - } - - image := imageResp.Images[0] // Only requested a single AMI ID - - rootDeviceName := image.RootDeviceName - - for _, bd := range image.BlockDeviceMappings { - if *bd.DeviceName == *rootDeviceName { - if *bd.Ebs.Encrypted != true { - return fmt.Errorf("volume not encrypted: %s", *bd.Ebs.SnapshotId) - } - } - } - - return nil - } -} - -func TestBuilderAcc_SessionManagerInterface(t *testing.T) { - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: testBuilderAccSessionManagerInterface, - }) -} - -func testAccPreCheck(t *testing.T) { -} - -func testAccSharingPreCheck(t *testing.T) { - if v := os.Getenv("TESTACC_AWS_ACCOUNT_ID"); v == "" { - t.Fatal(fmt.Sprintf("TESTACC_AWS_ACCOUNT_ID must be set for acceptance tests")) - } -} - -func testEC2Conn() (*ec2.EC2, error) { - access := &common.AccessConfig{RawRegion: "us-east-1"} - session, err := access.Session() - if err != nil { - return nil, err - } - - return ec2.New(session), nil -} - -const testBuilderAccBasic = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami": "ami-76b2a71e", - "ssh_username": "ubuntu", - "ami_name": "packer-test {{timestamp}}" - }] -} -` - -const testBuilderAccRegionCopy = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami": "ami-76b2a71e", - "ssh_username": "ubuntu", - "ami_name": "packer-test {{timestamp}}", - "ami_regions": ["us-east-1", "us-west-2"] - }] -} -` - -const testBuilderAccForceDeregister = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami": "ami-76b2a71e", - "ssh_username": "ubuntu", - "force_deregister": "%s", - "ami_name": "%s" - }] -} -` - -const testBuilderAccForceDeleteSnapshot = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami": "ami-76b2a71e", - "ssh_username": "ubuntu", - "force_deregister": "%s", - "force_delete_snapshot": "%s", - "ami_name": "%s" - }] -} -` - -const testBuilderAccSharing = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami": "ami-76b2a71e", - "ssh_username": "ubuntu", - "ami_name": "packer-test {{timestamp}}", - "ami_users":["%s"], - "ami_groups":["all"] - }] -} -` - -const testBuilderAccEncrypted = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami":"ami-c15bebaa", - "ssh_username": "ubuntu", - "ami_name": "packer-enc-test {{timestamp}}", - "encrypt_boot": true - }] -} -` - -const testBuilderAccSessionManagerInterface = ` -{ - "builders": [{ - "type": "test", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", - "root-device-type": "ebs" - }, - "owners": [ - "099720109477" - ], - "most_recent": true - }, - "ssh_username": "ubuntu", - "ssh_interface": "session_manager", - "iam_instance_profile": "SSMInstanceProfile", - "ami_name": "packer-ssm-test-{{timestamp}}" - }] -} -` - -func buildForceDeregisterConfig(val, name string) string { - return fmt.Sprintf(testBuilderAccForceDeregister, val, name) -} - -func buildForceDeleteSnapshotConfig(val, name string) string { - return fmt.Sprintf(testBuilderAccForceDeleteSnapshot, val, val, name) -} - -func buildSharingConfig(val string) string { - return fmt.Sprintf(testBuilderAccSharing, val) -} diff --git a/builder/amazon/ebs/builder_test.go b/builder/amazon/ebs/builder_test.go deleted file mode 100644 index 33a0d0d28..000000000 --- a/builder/amazon/ebs/builder_test.go +++ /dev/null @@ -1,166 +0,0 @@ -package ebs - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func testConfig() map[string]interface{} { - return map[string]interface{}{ - "access_key": "foo", - "secret_key": "bar", - "source_ami": "foo", - "instance_type": "foo", - "region": "us-east-1", - "ssh_username": "root", - "ami_name": "foo", - } -} - -func TestBuilder_ImplementsBuilder(t *testing.T) { - var raw interface{} - raw = &Builder{} - if _, ok := raw.(packersdk.Builder); !ok { - t.Fatalf("Builder should be a builder") - } -} - -func TestBuilder_Prepare_BadType(t *testing.T) { - b := &Builder{} - c := map[string]interface{}{ - "access_key": []string{}, - } - - _, warnings, err := b.Prepare(c) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatalf("prepare should fail") - } -} - -func TestBuilderPrepare_AMIName(t *testing.T) { - var b Builder - config := testConfig() - - // Test good - config["ami_name"] = "foo" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test bad - config["ami_name"] = "foo {{" - b = Builder{} - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - // Test bad - delete(config, "ami_name") - b = Builder{} - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_InvalidKey(t *testing.T) { - var b Builder - config := testConfig() - - // Add a random key - config["i_should_not_be_valid"] = true - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_InvalidShutdownBehavior(t *testing.T) { - var b Builder - config := testConfig() - - // Test good - config["shutdown_behavior"] = "terminate" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test good - config["shutdown_behavior"] = "stop" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test bad - config["shutdown_behavior"] = "foobar" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { - var b Builder - config := testConfig() - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if generatedData[0] != "SourceAMIName" { - t.Fatalf("Generated data should contain SourceAMIName") - } - if generatedData[1] != "BuildRegion" { - t.Fatalf("Generated data should contain BuildRegion") - } - if generatedData[2] != "SourceAMI" { - t.Fatalf("Generated data should contain SourceAMI") - } - if generatedData[3] != "SourceAMICreationDate" { - t.Fatalf("Generated data should contain SourceAMICreationDate") - } - if generatedData[4] != "SourceAMIOwner" { - t.Fatalf("Generated data should contain SourceAMIOwner") - } - if generatedData[5] != "SourceAMIOwnerName" { - t.Fatalf("Generated data should contain SourceAMIOwnerName") - } -} diff --git a/builder/amazon/ebs/tags_acc_test.go b/builder/amazon/ebs/tags_acc_test.go deleted file mode 100644 index c6337b902..000000000 --- a/builder/amazon/ebs/tags_acc_test.go +++ /dev/null @@ -1,137 +0,0 @@ -package ebs - -import ( - "encoding/json" - "fmt" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - builderT "github.com/hashicorp/packer-plugin-sdk/acctest" - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/amazon/common" -) - -type TFBuilder struct { - Type string `json:"type"` - Region string `json:"region"` - SourceAmi string `json:"source_ami"` - InstanceType string `json:"instance_type"` - SshUsername string `json:"ssh_username"` - AmiName string `json:"ami_name"` - Tags map[string]string `json:"tags"` - SnapshotTags map[string]string `json:"snapshot_tags"` -} - -type TFConfig struct { - Builders []TFBuilder `json:"builders"` -} - -func TestBuilderTagsAcc_basic(t *testing.T) { - builderT.Test(t, builderT.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Builder: &Builder{}, - Template: testBuilderTagsAccBasic, - Check: checkTags(), - }) -} - -func checkTags() builderT.TestCheckFunc { - return func(artifacts []packersdk.Artifact) error { - if len(artifacts) > 1 { - return fmt.Errorf("more than 1 artifact") - } - - config := TFConfig{} - json.Unmarshal([]byte(testBuilderTagsAccBasic), &config) - tags := config.Builders[0].Tags - snapshotTags := config.Builders[0].SnapshotTags - - // Get the actual *Artifact pointer so we can access the AMIs directly - artifactRaw := artifacts[0] - artifact, ok := artifactRaw.(*common.Artifact) - if !ok { - return fmt.Errorf("unknown artifact: %#v", artifactRaw) - } - - // Describe the image, get block devices with a snapshot - ec2conn, _ := testEC2Conn() - imageResp, err := ec2conn.DescribeImages(&ec2.DescribeImagesInput{ - ImageIds: []*string{aws.String(artifact.Amis["us-east-1"])}, - }) - - if err != nil { - return fmt.Errorf("Error retrieving details for AMI Artifact (%#v) in Tags Test: %s", artifact, err) - } - - if len(imageResp.Images) == 0 { - return fmt.Errorf("No images found for AMI Artifact (%#v) in Tags Test: %s", artifact, err) - } - - image := imageResp.Images[0] - - // Check only those with a Snapshot ID, i.e. not Ephemeral - var snapshots []*string - for _, device := range image.BlockDeviceMappings { - if device.Ebs != nil && device.Ebs.SnapshotId != nil { - snapshots = append(snapshots, device.Ebs.SnapshotId) - } - } - - // Grab matching snapshot info - resp, err := ec2conn.DescribeSnapshots(&ec2.DescribeSnapshotsInput{ - SnapshotIds: snapshots, - }) - - if err != nil { - return fmt.Errorf("Error retrieving Snapshots for AMI Artifact (%#v) in Tags Test: %s", artifact, err) - } - - if len(resp.Snapshots) == 0 { - return fmt.Errorf("No Snapshots found for AMI Artifact (%#v) in Tags Test", artifact) - } - - // Grab the snapshots, check the tags - for _, s := range resp.Snapshots { - expected := len(tags) - for _, t := range s.Tags { - for key, value := range tags { - if val, ok := snapshotTags[key]; ok && val == *t.Value { - expected-- - } else if key == *t.Key && value == *t.Value { - expected-- - } - } - } - - if expected > 0 { - return fmt.Errorf("Not all tags found") - } - } - - return nil - } -} - -const testBuilderTagsAccBasic = ` -{ - "builders": [ - { - "type": "test", - "region": "us-east-1", - "source_ami": "ami-9eaa1cf6", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer-tags-testing-{{timestamp}}", - "tags": { - "OS_Version": "Ubuntu", - "Release": "Latest", - "Name": "Bleep" - }, - "snapshot_tags": { - "Name": "Foobar" - } - } - ] -} -` diff --git a/builder/amazon/ebssurrogate/builder_test.go b/builder/amazon/ebssurrogate/builder_test.go deleted file mode 100644 index 5e724466e..000000000 --- a/builder/amazon/ebssurrogate/builder_test.go +++ /dev/null @@ -1,110 +0,0 @@ -package ebssurrogate - -import ( - "testing" - - "github.com/hashicorp/packer/builder/amazon/common" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func testConfig() map[string]interface{} { - return map[string]interface{}{ - "access_key": "foo", - "secret_key": "bar", - "source_ami": "foo", - "instance_type": "foo", - "region": "us-east-1", - "ssh_username": "root", - } -} - -func TestBuilder_ImplementsBuilder(t *testing.T) { - var raw interface{} - raw = &Builder{} - if _, ok := raw.(packersdk.Builder); !ok { - t.Fatal("Builder should be a builder") - } -} - -func TestBuilder_Prepare_BadType(t *testing.T) { - b := &Builder{} - c := map[string]interface{}{ - "access_key": []string{}, - } - - _, warnings, err := b.Prepare(c) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("prepare should fail") - } -} - -func TestBuilderPrepare_InvalidKey(t *testing.T) { - var b Builder - config := testConfig() - - // Add a random key - config["i_should_not_be_valid"] = true - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { - var b Builder - // Basic configuration - b.config.RootDevice = RootBlockDevice{ - SourceDeviceName: "device name", - DeviceName: "device name", - } - b.config.LaunchMappings = BlockDevices{ - BlockDevice{ - BlockDevice: common.BlockDevice{ - DeviceName: "device name", - }, - OmitFromArtifact: false, - }, - } - b.config.AMIVirtType = "type" - config := testConfig() - config["ami_name"] = "name" - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if generatedData[0] != "SourceAMIName" { - t.Fatalf("Generated data should contain SourceAMIName") - } - if generatedData[1] != "BuildRegion" { - t.Fatalf("Generated data should contain BuildRegion") - } - if generatedData[2] != "SourceAMI" { - t.Fatalf("Generated data should contain SourceAMI") - } - if generatedData[3] != "SourceAMICreationDate" { - t.Fatalf("Generated data should contain SourceAMICreationDate") - } - if generatedData[4] != "SourceAMIOwner" { - t.Fatalf("Generated data should contain SourceAMIOwner") - } - if generatedData[5] != "SourceAMIOwnerName" { - t.Fatalf("Generated data should contain SourceAMIOwnerName") - } -} diff --git a/builder/amazon/ebssurrogate/step_register_ami_test.go b/builder/amazon/ebssurrogate/step_register_ami_test.go deleted file mode 100644 index 1f4ac0752..000000000 --- a/builder/amazon/ebssurrogate/step_register_ami_test.go +++ /dev/null @@ -1,249 +0,0 @@ -package ebssurrogate - -import ( - "reflect" - "sort" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/hashicorp/packer/builder/amazon/common" -) - -const sourceDeviceName = "/dev/xvdf" -const rootDeviceName = "/dev/xvda" - -func newStepRegisterAMI(amiDevices, launchDevices []*ec2.BlockDeviceMapping) *StepRegisterAMI { - return &StepRegisterAMI{ - RootDevice: RootBlockDevice{ - SourceDeviceName: sourceDeviceName, - DeviceName: rootDeviceName, - DeleteOnTermination: true, - VolumeType: "ebs", - VolumeSize: 10, - }, - AMIDevices: amiDevices, - LaunchDevices: launchDevices, - PollingConfig: new(common.AWSPollingConfig), - } -} - -func sorted(devices []*ec2.BlockDeviceMapping) []*ec2.BlockDeviceMapping { - sort.SliceStable(devices, func(i, j int) bool { - return *devices[i].DeviceName < *devices[j].DeviceName - }) - return devices -} - -func TestStepRegisterAmi_combineDevices(t *testing.T) { - cases := []struct { - snapshotIds map[string]string - amiDevices []*ec2.BlockDeviceMapping - launchDevices []*ec2.BlockDeviceMapping - allDevices []*ec2.BlockDeviceMapping - }{ - { - snapshotIds: map[string]string{}, - amiDevices: []*ec2.BlockDeviceMapping{}, - launchDevices: []*ec2.BlockDeviceMapping{}, - allDevices: []*ec2.BlockDeviceMapping{}, - }, - { - snapshotIds: map[string]string{}, - amiDevices: []*ec2.BlockDeviceMapping{}, - launchDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String(sourceDeviceName), - }, - }, - allDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String(rootDeviceName), - }, - }, - }, - { - // Minimal single device - snapshotIds: map[string]string{ - sourceDeviceName: "snap-0123456789abcdef1", - }, - amiDevices: []*ec2.BlockDeviceMapping{}, - launchDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String(sourceDeviceName), - }, - }, - allDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef1"), - }, - DeviceName: aws.String(rootDeviceName), - }, - }, - }, - { - // Single launch device with AMI device - snapshotIds: map[string]string{ - sourceDeviceName: "snap-0123456789abcdef1", - }, - amiDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - launchDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String(sourceDeviceName), - }, - }, - allDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef1"), - }, - DeviceName: aws.String(rootDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - }, - { - // Multiple launch devices - snapshotIds: map[string]string{ - sourceDeviceName: "snap-0123456789abcdef1", - "/dev/xvdg": "snap-0123456789abcdef2", - }, - amiDevices: []*ec2.BlockDeviceMapping{}, - launchDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String(sourceDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{}, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - allDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef1"), - }, - DeviceName: aws.String(rootDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef2"), - }, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - }, - { - // Multiple launch devices with encryption - snapshotIds: map[string]string{ - sourceDeviceName: "snap-0123456789abcdef1", - "/dev/xvdg": "snap-0123456789abcdef2", - }, - amiDevices: []*ec2.BlockDeviceMapping{}, - launchDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - Encrypted: aws.Bool(true), - }, - DeviceName: aws.String(sourceDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{ - Encrypted: aws.Bool(true), - }, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - allDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef1"), - // Encrypted: true stripped from snapshotted devices - }, - DeviceName: aws.String(rootDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef2"), - }, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - }, - { - // Multiple launch devices and AMI devices with encryption - snapshotIds: map[string]string{ - sourceDeviceName: "snap-0123456789abcdef1", - "/dev/xvdg": "snap-0123456789abcdef2", - }, - amiDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - Encrypted: aws.Bool(true), - KmsKeyId: aws.String("keyId"), - }, - // Source device name can be used in AMI devices - // since launch device of same name gets renamed - // to root device name - DeviceName: aws.String(sourceDeviceName), - }, - }, - launchDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - Encrypted: aws.Bool(true), - }, - DeviceName: aws.String(sourceDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{ - Encrypted: aws.Bool(true), - }, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - allDevices: []*ec2.BlockDeviceMapping{ - { - Ebs: &ec2.EbsBlockDevice{ - Encrypted: aws.Bool(true), - KmsKeyId: aws.String("keyId"), - }, - DeviceName: aws.String(sourceDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef1"), - }, - DeviceName: aws.String(rootDeviceName), - }, - { - Ebs: &ec2.EbsBlockDevice{ - SnapshotId: aws.String("snap-0123456789abcdef2"), - }, - DeviceName: aws.String("/dev/xvdg"), - }, - }, - }, - } - for _, tc := range cases { - stepRegisterAmi := newStepRegisterAMI(tc.amiDevices, tc.launchDevices) - allDevices := stepRegisterAmi.combineDevices(tc.snapshotIds) - if !reflect.DeepEqual(sorted(allDevices), sorted(tc.allDevices)) { - t.Fatalf("Unexpected output from combineDevices") - } - } -} diff --git a/builder/amazon/ebsvolume/artifact_test.go b/builder/amazon/ebsvolume/artifact_test.go deleted file mode 100644 index 1b220994d..000000000 --- a/builder/amazon/ebsvolume/artifact_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package ebsvolume - -import "testing" - -func TestArtifactState(t *testing.T) { - expectedData := "this is the data" - artifact := &Artifact{ - StateData: map[string]interface{}{"state_data": expectedData}, - } - - // Valid state - result := artifact.State("state_data") - if result != expectedData { - t.Fatalf("Bad: State data was %s instead of %s", result, expectedData) - } - - // Invalid state - result = artifact.State("invalid_key") - if result != nil { - t.Fatalf("Bad: State should be nil for invalid state data name") - } - - // Nil StateData should not fail and should return nil - artifact = &Artifact{} - result = artifact.State("key") - if result != nil { - t.Fatalf("Bad: State should be nil for nil StateData") - } -} diff --git a/builder/amazon/ebsvolume/builder_test.go b/builder/amazon/ebsvolume/builder_test.go deleted file mode 100644 index 9db0a189b..000000000 --- a/builder/amazon/ebsvolume/builder_test.go +++ /dev/null @@ -1,166 +0,0 @@ -package ebsvolume - -import ( - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func testConfig() map[string]interface{} { - return map[string]interface{}{ - "access_key": "foo", - "secret_key": "bar", - "source_ami": "foo", - "instance_type": "foo", - "region": "us-east-1", - "ssh_username": "root", - } -} - -func TestBuilder_ImplementsBuilder(t *testing.T) { - var raw interface{} - raw = &Builder{} - if _, ok := raw.(packersdk.Builder); !ok { - t.Fatalf("Builder should be a builder") - } -} - -func TestBuilder_Prepare_BadType(t *testing.T) { - b := &Builder{} - c := map[string]interface{}{ - "access_key": []string{}, - } - - _, warnings, err := b.Prepare(c) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatalf("prepare should fail") - } -} - -func TestBuilderPrepare_InvalidKey(t *testing.T) { - var b Builder - config := testConfig() - - // Add a random key - config["i_should_not_be_valid"] = true - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_InvalidShutdownBehavior(t *testing.T) { - var b Builder - config := testConfig() - - // Test good - config["shutdown_behavior"] = "terminate" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test good - config["shutdown_behavior"] = "stop" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test bad - config["shutdown_behavior"] = "foobar" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { - var b Builder - config := testConfig() - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if generatedData[0] != "SourceAMIName" { - t.Fatalf("Generated data should contain SourceAMIName") - } - if generatedData[1] != "BuildRegion" { - t.Fatalf("Generated data should contain BuildRegion") - } - if generatedData[2] != "SourceAMI" { - t.Fatalf("Generated data should contain SourceAMI") - } - if generatedData[3] != "SourceAMICreationDate" { - t.Fatalf("Generated data should contain SourceAMICreationDate") - } - if generatedData[4] != "SourceAMIOwner" { - t.Fatalf("Generated data should contain SourceAMIOwner") - } - if generatedData[5] != "SourceAMIOwnerName" { - t.Fatalf("Generated data should contain SourceAMIOwnerName") - } -} - -func TestBuidler_ConfigBlockdevicemapping(t *testing.T) { - var b Builder - config := testConfig() - - //Set some snapshot settings - config["ebs_volumes"] = []map[string]interface{}{ - { - "device_name": "/dev/xvdb", - "volume_size": "32", - "delete_on_termination": true, - }, - { - "device_name": "/dev/xvdc", - "volume_size": "32", - "delete_on_termination": true, - "snapshot_tags": map[string]string{ - "Test_Tag": "tag_value", - "another tag": "another value", - }, - "snapshot_users": []string{ - "123", "456", - }, - }, - } - - generatedData, warnings, err := b.Prepare(config) - - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - - t.Logf("Test gen %+v", b.config.VolumeMappings) - -} diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go b/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go deleted file mode 100644 index fa946efc7..000000000 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes_test.go +++ /dev/null @@ -1,170 +0,0 @@ -package ebsvolume - -import ( - "bytes" - "context" - "fmt" - "testing" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" - - //"github.com/aws/aws-sdk-go/service/ec2" - "github.com/aws/aws-sdk-go/service/ec2" - "github.com/aws/aws-sdk-go/service/ec2/ec2iface" - "github.com/hashicorp/packer-plugin-sdk/multistep" - "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/amazon/common" -) - -// Define a mock struct to be used in unit tests for common aws steps. -type mockEC2Conn struct { - ec2iface.EC2API - Config *aws.Config -} - -func (m *mockEC2Conn) CreateSnapshot(input *ec2.CreateSnapshotInput) (*ec2.Snapshot, error) { - snap := &ec2.Snapshot{ - // This isn't typical amazon format, but injecting the volume id into - // this field lets us verify that the right volume was snapshotted with - // a simple string comparison - SnapshotId: aws.String(fmt.Sprintf("snap-of-%s", *input.VolumeId)), - } - - return snap, nil -} - -func (m *mockEC2Conn) WaitUntilSnapshotCompletedWithContext(aws.Context, *ec2.DescribeSnapshotsInput, ...request.WaiterOption) error { - return nil -} - -func getMockConn(config *common.AccessConfig, target string) (ec2iface.EC2API, error) { - mockConn := &mockEC2Conn{ - Config: aws.NewConfig(), - } - return mockConn, nil -} - -// Create statebag for running test -func tState(t *testing.T) multistep.StateBag { - state := new(multistep.BasicStateBag) - state.Put("ui", &packer.BasicUi{ - Reader: new(bytes.Buffer), - Writer: new(bytes.Buffer), - }) - // state.Put("amis", map[string]string{"us-east-1": "ami-12345"}) - // state.Put("snapshots", map[string][]string{"us-east-1": {"snap-0012345"}}) - conn, _ := getMockConn(&common.AccessConfig{}, "us-east-2") - - state.Put("ec2", conn) - // Store a fake instance that contains a block device that matches the - // volumes defined in the config above - state.Put("instance", &ec2.Instance{ - InstanceId: aws.String("instance-id"), - BlockDeviceMappings: []*ec2.InstanceBlockDeviceMapping{ - { - DeviceName: aws.String("/dev/xvda"), - Ebs: &ec2.EbsInstanceBlockDevice{ - VolumeId: aws.String("vol-1234"), - }, - }, - { - DeviceName: aws.String("/dev/xvdb"), - Ebs: &ec2.EbsInstanceBlockDevice{ - VolumeId: aws.String("vol-5678"), - }, - }, - }, - }) - return state -} - -func TestStepSnapshot_run_simple(t *testing.T) { - var b Builder - config := testConfig() //from builder_test - - //Set some snapshot settings - config["ebs_volumes"] = []map[string]interface{}{ - { - "device_name": "/dev/xvdb", - "volume_size": "32", - "delete_on_termination": true, - "snapshot_volume": true, - }, - } - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - - state := tState(t) - - accessConfig := common.FakeAccessConfig() - - step := stepSnapshotEBSVolumes{ - PollingConfig: new(common.AWSPollingConfig), - AccessConfig: accessConfig, - VolumeMapping: b.config.VolumeMappings, - Ctx: b.config.ctx, - } - - step.Run(context.Background(), state) - - if len(step.snapshotMap) != 1 { - t.Fatalf("Missing Snapshot from step") - } - - if volmapping := step.snapshotMap["snap-of-vol-5678"]; volmapping == nil { - t.Fatalf("Didn't snapshot correct volume: Map is %#v", step.snapshotMap) - } -} - -func TestStepSnapshot_run_no_snaps(t *testing.T) { - var b Builder - config := testConfig() //from builder_test - - //Set some snapshot settings - config["ebs_volumes"] = []map[string]interface{}{ - { - "device_name": "/dev/xvdb", - "volume_size": "32", - "delete_on_termination": true, - "snapshot_volume": false, - }, - } - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - - state := tState(t) - - accessConfig := common.FakeAccessConfig() - - step := stepSnapshotEBSVolumes{ - PollingConfig: new(common.AWSPollingConfig), - AccessConfig: accessConfig, - VolumeMapping: b.config.VolumeMappings, - Ctx: b.config.ctx, - } - - step.Run(context.Background(), state) - - if len(step.snapshotMap) != 0 { - t.Fatalf("Shouldn't have snapshotted any volumes") - } -} diff --git a/builder/amazon/examples/apache_server/README.Md b/builder/amazon/examples/apache_server/README.Md deleted file mode 100644 index e46c898fd..000000000 --- a/builder/amazon/examples/apache_server/README.Md +++ /dev/null @@ -1 +0,0 @@ -command: packer build -var "accesskey=*" -var "secretkey=" -var "shellpath=packages.sh" .\apache.json diff --git a/builder/amazon/examples/apache_server/apache.json b/builder/amazon/examples/apache_server/apache.json deleted file mode 100644 index ddba2e18e..000000000 --- a/builder/amazon/examples/apache_server/apache.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "variables": - { - "accesskey": "", - "secretkey": "", - "shellpath": "packages.sh" - }, - "builders":[ - { - "type": "amazon-ebs", - "access_key": "{{user `accesskey`}}", - "secret_key": "{{user `secretkey`}}", - "region": "ap-south-1", - "source_ami": "ami-sa7608343426b", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "apache", - "tags": { - "OS_Version": "Ubuntu", - "Release": "Latest" - } - } - ], - "provisioners":[ - { - "type": "shell", - "script": "{{user `shellpath`}}" - } - ] - -} diff --git a/builder/amazon/examples/apache_server/packages.sh b/builder/amazon/examples/apache_server/packages.sh deleted file mode 100644 index 0a6af1d1c..000000000 --- a/builder/amazon/examples/apache_server/packages.sh +++ /dev/null @@ -1,6 +0,0 @@ -echo "installing apache " -sudo apt-get update -sudo apt-get install apache2 -y -sudo apt-get update -sudo service apache2 restart -sudo apache2 --version diff --git a/builder/amazon/examples/nginx_server/README.Md b/builder/amazon/examples/nginx_server/README.Md deleted file mode 100644 index 27756eff7..000000000 --- a/builder/amazon/examples/nginx_server/README.Md +++ /dev/null @@ -1 +0,0 @@ -command: packer build -var "accesskey=*" -var "secretkey=" -var "shellpath=packages.sh" .\nginx.json diff --git a/builder/amazon/examples/nginx_server/nginx.json b/builder/amazon/examples/nginx_server/nginx.json deleted file mode 100644 index 185f370b7..000000000 --- a/builder/amazon/examples/nginx_server/nginx.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "variables": - { - "accesskey": "", - "secretkey": "", - "shellpath": "packages.sh" - }, - "builders":[ - { - "type": "amazon-ebs", - "access_key": "{{user `accesskey`}}", - "secret_key": "{{user `secretkey`}}", - "region": "ap-south-1", - "source_ami": "ami-sa7608343426b", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "nginx", - "tags": { - "OS_Version": "Ubuntu", - "Release": "Latest" - } - } - ], - "provisioners":[ - { - "type": "shell", - "script": "{{user `shellpath`}}" - } - ] - -} diff --git a/builder/amazon/examples/nginx_server/packages.sh b/builder/amazon/examples/nginx_server/packages.sh deleted file mode 100644 index 3f5973ef0..000000000 --- a/builder/amazon/examples/nginx_server/packages.sh +++ /dev/null @@ -1,4 +0,0 @@ -echo "installing nginx " -sudo apt-get update -sudo apt-get install nginx -y -sudo service nginx restart diff --git a/builder/amazon/instance/builder_test.go b/builder/amazon/instance/builder_test.go deleted file mode 100644 index 41300e4c4..000000000 --- a/builder/amazon/instance/builder_test.go +++ /dev/null @@ -1,343 +0,0 @@ -package instance - -import ( - "io/ioutil" - "os" - "testing" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" -) - -func testConfig() (config map[string]interface{}, tf *os.File) { - tf, err := ioutil.TempFile("", "packer") - if err != nil { - panic(err) - } - - config = map[string]interface{}{ - "account_id": "foo", - "ami_name": "foo", - "instance_type": "m1.small", - "region": "us-east-1", - "s3_bucket": "foo", - "source_ami": "foo", - "ssh_username": "bob", - "x509_cert_path": tf.Name(), - "x509_key_path": tf.Name(), - "x509_upload_path": "/foo", - } - - return config, tf -} - -func TestBuilder_ImplementsBuilder(t *testing.T) { - var raw interface{} - raw = &Builder{} - if _, ok := raw.(packersdk.Builder); !ok { - t.Fatalf("Builder should be a builder") - } -} - -func TestBuilderPrepare_AccountId(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - config["account_id"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - config["account_id"] = "foo" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } - - config["account_id"] = "0123-0456-7890" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if b.config.AccountId != "012304567890" { - t.Errorf("should strip hyphens: %s", b.config.AccountId) - } -} - -func TestBuilderPrepare_AMIName(t *testing.T) { - var b Builder - config, tempfile := testConfig() - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - // Test good - config["ami_name"] = "foo" - config["skip_region_validation"] = true - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - - // Test bad - config["ami_name"] = "foo {{" - b = Builder{} - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - // Test bad - delete(config, "ami_name") - b = Builder{} - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_BundleDestination(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - config["bundle_destination"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if b.config.BundleDestination != "/tmp" { - t.Fatalf("bad: %s", b.config.BundleDestination) - } -} - -func TestBuilderPrepare_BundlePrefix(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("err: %s", err) - } - - if b.config.BundlePrefix == "" { - t.Fatalf("bad: %s", b.config.BundlePrefix) - } -} - -func TestBuilderPrepare_InvalidKey(t *testing.T) { - var b Builder - config, tempfile := testConfig() - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - // Add a random key - config["i_should_not_be_valid"] = true - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } -} - -func TestBuilderPrepare_S3Bucket(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - config["s3_bucket"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - config["s3_bucket"] = "foo" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Errorf("err: %s", err) - } -} - -func TestBuilderPrepare_X509CertPath(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - config["x509_cert_path"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - config["x509_cert_path"] = "i/am/a/file/that/doesnt/exist" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Error("should have error") - } - - tf, err := ioutil.TempFile("", "packer") - if err != nil { - t.Fatalf("error tempfile: %s", err) - } - defer os.Remove(tf.Name()) - defer tf.Close() - - config["x509_cert_path"] = tf.Name() - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } -} - -func TestBuilderPrepare_X509KeyPath(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - config["x509_key_path"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Fatal("should have error") - } - - config["x509_key_path"] = "i/am/a/file/that/doesnt/exist" - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err == nil { - t.Error("should have error") - } - - tf, err := ioutil.TempFile("", "packer") - if err != nil { - t.Fatalf("error tempfile: %s", err) - } - defer os.Remove(tf.Name()) - defer tf.Close() - - config["x509_key_path"] = tf.Name() - _, warnings, err = b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } -} - -func TestBuilderPrepare_X509UploadPath(t *testing.T) { - b := &Builder{} - config, tempfile := testConfig() - config["skip_region_validation"] = true - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - config["x509_upload_path"] = "" - _, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } -} - -func TestBuilderPrepare_ReturnGeneratedData(t *testing.T) { - var b Builder - config, tempfile := testConfig() - defer os.Remove(tempfile.Name()) - defer tempfile.Close() - - generatedData, warnings, err := b.Prepare(config) - if len(warnings) > 0 { - t.Fatalf("bad: %#v", warnings) - } - if err != nil { - t.Fatalf("should not have error: %s", err) - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if len(generatedData) == 0 { - t.Fatalf("Generated data should not be empty") - } - if generatedData[0] != "SourceAMIName" { - t.Fatalf("Generated data should contain SourceAMIName") - } - if generatedData[1] != "BuildRegion" { - t.Fatalf("Generated data should contain BuildRegion") - } - if generatedData[2] != "SourceAMI" { - t.Fatalf("Generated data should contain SourceAMI") - } - if generatedData[3] != "SourceAMICreationDate" { - t.Fatalf("Generated data should contain SourceAMICreationDate") - } - if generatedData[4] != "SourceAMIOwner" { - t.Fatalf("Generated data should contain SourceAMIOwner") - } - if generatedData[5] != "SourceAMIOwnerName" { - t.Fatalf("Generated data should contain SourceAMIOwnerName") - } -} diff --git a/builder/amazon/version/version.go b/builder/amazon/version/version.go deleted file mode 100644 index 2dd13f9f5..000000000 --- a/builder/amazon/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var AWSPluginVersion *version.PluginVersion - -func init() { - AWSPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/cmd/packer-plugin-amazon/main.go b/cmd/packer-plugin-amazon/main.go deleted file mode 100644 index e05a799de..000000000 --- a/cmd/packer-plugin-amazon/main.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/hashicorp/packer-plugin-sdk/plugin" - "github.com/hashicorp/packer/builder/amazon/ebs" - "github.com/hashicorp/packer/builder/amazon/ebssurrogate" - "github.com/hashicorp/packer/builder/amazon/ebsvolume" - "github.com/hashicorp/packer/builder/osc/chroot" - amazonami "github.com/hashicorp/packer/datasource/amazon/ami" - "github.com/hashicorp/packer/datasource/amazon/secretsmanager" - amazonimport "github.com/hashicorp/packer/post-processor/amazon-import" -) - -func main() { - pps := plugin.NewSet() - pps.RegisterBuilder("ebs", new(ebs.Builder)) - pps.RegisterBuilder("chroot", new(chroot.Builder)) - pps.RegisterBuilder("ebssurrogate", new(ebssurrogate.Builder)) - pps.RegisterBuilder("ebsvolume", new(ebsvolume.Builder)) - pps.RegisterPostProcessor("import", new(amazonimport.PostProcessor)) - pps.RegisterDatasource("ami", new(amazonami.Datasource)) - pps.RegisterDatasource("secretsmanager", new(secretsmanager.Datasource)) - err := pps.Run() - if err != nil { - fmt.Fprintln(os.Stderr, err.Error()) - os.Exit(1) - } -} diff --git a/command/exec_test.go b/command/exec_test.go index 4986a4bf3..bdee7c80b 100644 --- a/command/exec_test.go +++ b/command/exec_test.go @@ -8,8 +8,8 @@ import ( "runtime" "testing" + "github.com/hashicorp/packer-plugin-amazon/builder/ebs" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer/builder/amazon/ebs" "github.com/hashicorp/packer/builder/file" "github.com/hashicorp/packer/builder/null" "github.com/hashicorp/packer/packer" diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index cd70b62ba..f96a037e5 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -16,9 +16,9 @@ import ( "github.com/hashicorp/go-multierror" "github.com/hashicorp/hcl/v2/hclwrite" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" hcl2shim "github.com/hashicorp/packer-plugin-sdk/hcl2helper" "github.com/hashicorp/packer-plugin-sdk/template" - awscommon "github.com/hashicorp/packer/builder/amazon/common" "github.com/hashicorp/packer/packer" "github.com/mitchellh/mapstructure" "github.com/posener/complete" @@ -107,7 +107,7 @@ const ( # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon AMI Data Source here: -# https://www.packer.io/docs/datasources/amazon/ami` +# https://www.packer.io/docs/datasources/amazon/ami.mdx` amazonSecretsManagerDataHeader = ` # The amazon-secretsmanager data block is generated from your aws_secretsmanager template function; a data @@ -115,7 +115,7 @@ const ( # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon Secrets Manager Data Source here: -# https://www.packer.io/docs/datasources/amazon/secretsmanager` +# https://www.packer.io/docs/datasources/amazon/secretsmanager.mdx` ) var ( diff --git a/command/plugin.go b/command/plugin.go index b5c08b185..57ccbf1d2 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -14,11 +14,6 @@ import ( "github.com/hashicorp/packer-plugin-sdk/plugin" alicloudecsbuilder "github.com/hashicorp/packer/builder/alicloud/ecs" - amazonchrootbuilder "github.com/hashicorp/packer/builder/amazon/chroot" - amazonebsbuilder "github.com/hashicorp/packer/builder/amazon/ebs" - amazonebssurrogatebuilder "github.com/hashicorp/packer/builder/amazon/ebssurrogate" - amazonebsvolumebuilder "github.com/hashicorp/packer/builder/amazon/ebsvolume" - amazoninstancebuilder "github.com/hashicorp/packer/builder/amazon/instance" azurearmbuilder "github.com/hashicorp/packer/builder/azure/arm" azurechrootbuilder "github.com/hashicorp/packer/builder/azure/chroot" azuredtlbuilder "github.com/hashicorp/packer/builder/azure/dtl" @@ -64,10 +59,7 @@ import ( vsphereclonebuilder "github.com/hashicorp/packer/builder/vsphere/clone" vsphereisobuilder "github.com/hashicorp/packer/builder/vsphere/iso" yandexbuilder "github.com/hashicorp/packer/builder/yandex" - amazonamidatasource "github.com/hashicorp/packer/datasource/amazon/ami" - amazonsecretsmanagerdatasource "github.com/hashicorp/packer/datasource/amazon/secretsmanager" alicloudimportpostprocessor "github.com/hashicorp/packer/post-processor/alicloud-import" - amazonimportpostprocessor "github.com/hashicorp/packer/post-processor/amazon-import" artificepostprocessor "github.com/hashicorp/packer/post-processor/artifice" checksumpostprocessor "github.com/hashicorp/packer/post-processor/checksum" compresspostprocessor "github.com/hashicorp/packer/post-processor/compress" @@ -108,57 +100,52 @@ type PluginCommand struct { } var Builders = map[string]packersdk.Builder{ - "alicloud-ecs": new(alicloudecsbuilder.Builder), - "amazon-chroot": new(amazonchrootbuilder.Builder), - "amazon-ebs": new(amazonebsbuilder.Builder), - "amazon-ebssurrogate": new(amazonebssurrogatebuilder.Builder), - "amazon-ebsvolume": new(amazonebsvolumebuilder.Builder), - "amazon-instance": new(amazoninstancebuilder.Builder), - "azure-arm": new(azurearmbuilder.Builder), - "azure-chroot": new(azurechrootbuilder.Builder), - "azure-dtl": new(azuredtlbuilder.Builder), - "cloudstack": new(cloudstackbuilder.Builder), - "digitalocean": new(digitaloceanbuilder.Builder), - "file": new(filebuilder.Builder), - "googlecompute": new(googlecomputebuilder.Builder), - "hcloud": new(hcloudbuilder.Builder), - "hyperone": new(hyperonebuilder.Builder), - "hyperv-iso": new(hypervisobuilder.Builder), - "hyperv-vmcx": new(hypervvmcxbuilder.Builder), - "jdcloud": new(jdcloudbuilder.Builder), - "linode": new(linodebuilder.Builder), - "lxc": new(lxcbuilder.Builder), - "lxd": new(lxdbuilder.Builder), - "ncloud": new(ncloudbuilder.Builder), - "null": new(nullbuilder.Builder), - "oneandone": new(oneandonebuilder.Builder), - "openstack": new(openstackbuilder.Builder), - "oracle-classic": new(oracleclassicbuilder.Builder), - "oracle-oci": new(oracleocibuilder.Builder), - "osc-bsu": new(oscbsubuilder.Builder), - "osc-bsusurrogate": new(oscbsusurrogatebuilder.Builder), - "osc-bsuvolume": new(oscbsuvolumebuilder.Builder), - "osc-chroot": new(oscchrootbuilder.Builder), - "parallels-iso": new(parallelsisobuilder.Builder), - "parallels-pvm": new(parallelspvmbuilder.Builder), - "profitbricks": new(profitbricksbuilder.Builder), - "proxmox": new(proxmoxbuilder.Builder), - "proxmox-clone": new(proxmoxclonebuilder.Builder), - "proxmox-iso": new(proxmoxisobuilder.Builder), - "qemu": new(qemubuilder.Builder), - "scaleway": new(scalewaybuilder.Builder), - "tencentcloud-cvm": new(tencentcloudcvmbuilder.Builder), - "triton": new(tritonbuilder.Builder), - "ucloud-uhost": new(uclouduhostbuilder.Builder), - "vagrant": new(vagrantbuilder.Builder), - "virtualbox-iso": new(virtualboxisobuilder.Builder), - "virtualbox-ovf": new(virtualboxovfbuilder.Builder), - "virtualbox-vm": new(virtualboxvmbuilder.Builder), - "vmware-iso": new(vmwareisobuilder.Builder), - "vmware-vmx": new(vmwarevmxbuilder.Builder), - "vsphere-clone": new(vsphereclonebuilder.Builder), - "vsphere-iso": new(vsphereisobuilder.Builder), - "yandex": new(yandexbuilder.Builder), + "alicloud-ecs": new(alicloudecsbuilder.Builder), + "azure-arm": new(azurearmbuilder.Builder), + "azure-chroot": new(azurechrootbuilder.Builder), + "azure-dtl": new(azuredtlbuilder.Builder), + "cloudstack": new(cloudstackbuilder.Builder), + "digitalocean": new(digitaloceanbuilder.Builder), + "file": new(filebuilder.Builder), + "googlecompute": new(googlecomputebuilder.Builder), + "hcloud": new(hcloudbuilder.Builder), + "hyperone": new(hyperonebuilder.Builder), + "hyperv-iso": new(hypervisobuilder.Builder), + "hyperv-vmcx": new(hypervvmcxbuilder.Builder), + "jdcloud": new(jdcloudbuilder.Builder), + "linode": new(linodebuilder.Builder), + "lxc": new(lxcbuilder.Builder), + "lxd": new(lxdbuilder.Builder), + "ncloud": new(ncloudbuilder.Builder), + "null": new(nullbuilder.Builder), + "oneandone": new(oneandonebuilder.Builder), + "openstack": new(openstackbuilder.Builder), + "oracle-classic": new(oracleclassicbuilder.Builder), + "oracle-oci": new(oracleocibuilder.Builder), + "osc-bsu": new(oscbsubuilder.Builder), + "osc-bsusurrogate": new(oscbsusurrogatebuilder.Builder), + "osc-bsuvolume": new(oscbsuvolumebuilder.Builder), + "osc-chroot": new(oscchrootbuilder.Builder), + "parallels-iso": new(parallelsisobuilder.Builder), + "parallels-pvm": new(parallelspvmbuilder.Builder), + "profitbricks": new(profitbricksbuilder.Builder), + "proxmox": new(proxmoxbuilder.Builder), + "proxmox-clone": new(proxmoxclonebuilder.Builder), + "proxmox-iso": new(proxmoxisobuilder.Builder), + "qemu": new(qemubuilder.Builder), + "scaleway": new(scalewaybuilder.Builder), + "tencentcloud-cvm": new(tencentcloudcvmbuilder.Builder), + "triton": new(tritonbuilder.Builder), + "ucloud-uhost": new(uclouduhostbuilder.Builder), + "vagrant": new(vagrantbuilder.Builder), + "virtualbox-iso": new(virtualboxisobuilder.Builder), + "virtualbox-ovf": new(virtualboxovfbuilder.Builder), + "virtualbox-vm": new(virtualboxvmbuilder.Builder), + "vmware-iso": new(vmwareisobuilder.Builder), + "vmware-vmx": new(vmwarevmxbuilder.Builder), + "vsphere-clone": new(vsphereclonebuilder.Builder), + "vsphere-iso": new(vsphereisobuilder.Builder), + "yandex": new(yandexbuilder.Builder), } var Provisioners = map[string]packersdk.Provisioner{ @@ -184,7 +171,6 @@ var Provisioners = map[string]packersdk.Provisioner{ var PostProcessors = map[string]packersdk.PostProcessor{ "alicloud-import": new(alicloudimportpostprocessor.PostProcessor), - "amazon-import": new(amazonimportpostprocessor.PostProcessor), "artifice": new(artificepostprocessor.PostProcessor), "checksum": new(checksumpostprocessor.PostProcessor), "compress": new(compresspostprocessor.PostProcessor), @@ -202,10 +188,7 @@ var PostProcessors = map[string]packersdk.PostProcessor{ "yandex-import": new(yandeximportpostprocessor.PostProcessor), } -var Datasources = map[string]packersdk.Datasource{ - "amazon-ami": new(amazonamidatasource.Datasource), - "amazon-secretsmanager": new(amazonsecretsmanagerdatasource.Datasource), -} +var Datasources = map[string]packersdk.Datasource{} var pluginRegexp = regexp.MustCompile("packer-(builder|post-processor|provisioner|datasource)-(.+)") diff --git a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl index 3f1a46150..cf9019a98 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl @@ -52,7 +52,7 @@ variable "secret_account" { # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon Secrets Manager Data Source here: -# https://www.packer.io/docs/datasources/amazon/secretsmanager +# https://www.packer.io/docs/datasources/amazon/secretsmanager.mdx data "amazon-secretsmanager" "autogenerated_1" { name = "sample/app/password" } @@ -76,7 +76,7 @@ data "amazon-secretsmanager" "autogenerated_4" { # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon AMI Data Source here: -# https://www.packer.io/docs/datasources/amazon/ami +# https://www.packer.io/docs/datasources/amazon/ami.mdx data "amazon-ami" "autogenerated_1" { access_key = "${var.aws_access_key}" filters = { diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 4c4d6498a..eea52e9d5 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -7,6 +7,14 @@ import ( // still vendored with Packer for now. Importing as library instead of // forcing use of packer init, until packer v1.8.0 exoscaleimportpostprocessor "github.com/exoscale/packer-plugin-exoscale/post-processor/exoscale-import" + amazonchrootbuilder "github.com/hashicorp/packer-plugin-amazon/builder/chroot" + amazonebsbuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebs" + amazonebssurrogatebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate" + amazonebsvolumebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume" + amazoninstancebuilder "github.com/hashicorp/packer-plugin-amazon/builder/instance" + amazonamidatasource "github.com/hashicorp/packer-plugin-amazon/datasource/ami" + amazonsecretsmanagerdatasource "github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager" + anazibimportpostprocessor "github.com/hashicorp/packer-plugin-amazon/post-processor/import" dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" @@ -14,10 +22,22 @@ import ( dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" ) +// VendoredDatasources are datasource components that were once bundled with the +// Packer core, but are now being imported from their counterpart plugin repos +var VendoredDatasources = map[string]packersdk.Datasource{ + "amazon-ami": new(amazonamidatasource.Datasource), + "amazon-secretsmanager": new(amazonsecretsmanagerdatasource.Datasource), +} + // VendoredBuilders are builder components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredBuilders = map[string]packersdk.Builder{ - "docker": new(dockerbuilder.Builder), + "docker": new(dockerbuilder.Builder), + "amazon-ebs": new(amazonebsbuilder.Builder), + "amazon-chroot": new(amazonchrootbuilder.Builder), + "amazon-ebssurrogate": new(amazonebssurrogatebuilder.Builder), + "amazon-ebsvolume": new(amazonebsvolumebuilder.Builder), + "amazon-instance": new(amazoninstancebuilder.Builder), } // VendoredProvisioners are provisioner components that were once bundled with the @@ -32,11 +52,19 @@ var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "docker-save": new(dockersavepostprocessor.PostProcessor), "docker-tag": new(dockertagpostprocessor.PostProcessor), "exoscale-import": new(exoscaleimportpostprocessor.PostProcessor), + "amazon-import": new(anazibimportpostprocessor.PostProcessor), } // Upon init lets load up any plugins that were vendored manually into the default // set of plugins. func init() { + for k, v := range VendoredDatasources { + if _, ok := Datasources[k]; ok { + continue + } + Datasources[k] = v + } + for k, v := range VendoredBuilders { if _, ok := Builders[k]; ok { continue diff --git a/datasource/amazon/ami/data_acc_test.go b/datasource/amazon/ami/data_acc_test.go deleted file mode 100644 index ced44bd3d..000000000 --- a/datasource/amazon/ami/data_acc_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package ami - -import ( - "fmt" - "os/exec" - "testing" - - "github.com/hashicorp/packer-plugin-sdk/acctest" - amazonacc "github.com/hashicorp/packer/builder/amazon/ebs/acceptance" -) - -func TestAmazonAmi(t *testing.T) { - testCase := &acctest.DatasourceTestCase{ - Name: "amazon_ami_datasource_basic_test", - Teardown: func() error { - helper := amazonacc.AWSHelper{ - Region: "us-west-2", - AMIName: "packer-amazon-ami-test", - } - return helper.CleanUpAmi() - }, - Template: testDatasourceBasic, - Type: "amazon-ami", - Check: func(buildCommand *exec.Cmd, logfile string) error { - if buildCommand.ProcessState != nil { - if buildCommand.ProcessState.ExitCode() != 0 { - return fmt.Errorf("Bad exit code. Logfile: %s", logfile) - } - } - return nil - }, - } - acctest.TestDatasource(t, testCase) -} - -const testDatasourceBasic = ` -data "amazon-ami" "test" { - filters = { - virtualization-type = "hvm" - name = "Windows_Server-2016-English-Full-Base-*" - root-device-type = "ebs" - } - most_recent = true - owners = ["801119661308"] -} - -source "amazon-ebs" "basic-example" { - user_data_file = "./test-fixtures/configure-source-ssh.ps1" - region = "us-west-2" - source_ami = data.amazon-ami.test.id - instance_type = "t2.small" - ssh_agent_auth = false - ami_name = "packer-amazon-ami-test" - communicator = "ssh" - ssh_timeout = "10m" - ssh_username = "Administrator" -} - -build { - sources = [ - "source.amazon-ebs.basic-example" - ] -} -` diff --git a/datasource/amazon/ami/data_test.go b/datasource/amazon/ami/data_test.go deleted file mode 100644 index ff11431b2..000000000 --- a/datasource/amazon/ami/data_test.go +++ /dev/null @@ -1,45 +0,0 @@ -package ami - -import ( - "testing" - - awscommon "github.com/hashicorp/packer/builder/amazon/common" -) - -func TestDatasourceConfigure_FilterBlank(t *testing.T) { - datasource := Datasource{ - config: Config{ - AmiFilterOptions: awscommon.AmiFilterOptions{}, - }, - } - if err := datasource.Configure(nil); err == nil { - t.Fatalf("Should error if filters map is empty or not specified") - } -} - -func TestRunConfigPrepare_SourceAmiFilterOwnersBlank(t *testing.T) { - datasource := Datasource{ - config: Config{ - AmiFilterOptions: awscommon.AmiFilterOptions{ - Filters: map[string]string{"foo": "bar"}, - }, - }, - } - if err := datasource.Configure(nil); err == nil { - t.Fatalf("Should error if Owners is not specified)") - } -} - -func TestRunConfigPrepare_SourceAmiFilterGood(t *testing.T) { - datasource := Datasource{ - config: Config{ - AmiFilterOptions: awscommon.AmiFilterOptions{ - Owners: []string{"1234567"}, - Filters: map[string]string{"foo": "bar"}, - }, - }, - } - if err := datasource.Configure(nil); err != nil { - t.Fatalf("err: %s", err) - } -} diff --git a/datasource/amazon/ami/test-fixtures/configure-source-ssh.ps1 b/datasource/amazon/ami/test-fixtures/configure-source-ssh.ps1 deleted file mode 100644 index 7c12dd742..000000000 --- a/datasource/amazon/ami/test-fixtures/configure-source-ssh.ps1 +++ /dev/null @@ -1,161 +0,0 @@ - -# Version and download URL -$openSSHVersion = "8.1.0.0p1-Beta" -$openSSHURL = "https://github.com/PowerShell/Win32-OpenSSH/releases/download/v$openSSHVersion/OpenSSH-Win64.zip" - -Set-ExecutionPolicy Unrestricted - -# GitHub became TLS 1.2 only on Feb 22, 2018 -[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; - -# Function to unzip an archive to a given destination -Add-Type -AssemblyName System.IO.Compression.FileSystem -Function Unzip -{ - [CmdletBinding()] - param( - [Parameter(Mandatory=$true, Position=0)] - [string] $ZipFile, - [Parameter(Mandatory=$true, Position=1)] - [string] $OutPath - ) - - [System.IO.Compression.ZipFile]::ExtractToDirectory($zipFile, $outPath) -} - -# Set various known paths -$openSSHZip = Join-Path $env:TEMP 'OpenSSH.zip' -$openSSHInstallDir = Join-Path $env:ProgramFiles 'OpenSSH' -$openSSHInstallScript = Join-Path $openSSHInstallDir 'install-sshd.ps1' -$openSSHDownloadKeyScript = Join-Path $openSSHInstallDir 'download-key-pair.ps1' -$openSSHDaemon = Join-Path $openSSHInstallDir 'sshd.exe' -$openSSHDaemonConfig = [io.path]::combine($env:ProgramData, 'ssh', 'sshd_config') - -# Download and unpack the binary distribution of OpenSSH -Invoke-WebRequest -Uri $openSSHURL ` - -OutFile $openSSHZip ` - -ErrorAction Stop - -Unzip -ZipFile $openSSHZip ` - -OutPath "$env:TEMP" ` - -ErrorAction Stop - -Remove-Item $openSSHZip ` - -ErrorAction SilentlyContinue - -# Move into Program Files -Move-Item -Path (Join-Path $env:TEMP 'OpenSSH-Win64') ` - -Destination $openSSHInstallDir ` - -ErrorAction Stop - -# Run the install script, terminate if it fails -& Powershell.exe -ExecutionPolicy Bypass -File $openSSHInstallScript -if ($LASTEXITCODE -ne 0) { - throw("Failed to install OpenSSH Server") -} - -# Add a firewall rule to allow inbound SSH connections to sshd.exe -New-NetFirewallRule -Name sshd ` - -DisplayName "OpenSSH Server (sshd)" ` - -Group "Remote Access" ` - -Description "Allow access via TCP port 22 to the OpenSSH Daemon" ` - -Enabled True ` - -Direction Inbound ` - -Protocol TCP ` - -LocalPort 22 ` - -Program "$openSSHDaemon" ` - -Action Allow ` - -ErrorAction Stop - -# Ensure sshd automatically starts on boot -Set-Service sshd -StartupType Automatic ` - -ErrorAction Stop - -# Set the default login shell for SSH connections to Powershell -New-Item -Path HKLM:\SOFTWARE\OpenSSH -Force -New-ItemProperty -Path HKLM:\SOFTWARE\OpenSSH ` - -Name DefaultShell ` - -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" ` - -ErrorAction Stop - -$keyDownloadScript = @' -# Download the instance key pair and authorize Administrator logins using it -$openSSHAdminUser = 'c:\ProgramData\ssh' -$openSSHAuthorizedKeys = Join-Path $openSSHAdminUser 'authorized_keys' - -If (-Not (Test-Path $openSSHAdminUser)) { - New-Item -Path $openSSHAdminUser -Type Directory -} - -$keyUrl = "http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key" -$keyReq = [System.Net.WebRequest]::Create($keyUrl) -$keyResp = $keyReq.GetResponse() -$keyRespStream = $keyResp.GetResponseStream() - $streamReader = New-Object System.IO.StreamReader $keyRespStream -$keyMaterial = $streamReader.ReadToEnd() - -$keyMaterial | Out-File -Append -FilePath $openSSHAuthorizedKeys -Encoding ASCII - -# Ensure access control on authorized_keys meets the requirements -$acl = Get-ACL -Path $openSSHAuthorizedKeys -$acl.SetAccessRuleProtection($True, $True) -Set-Acl -Path $openSSHAuthorizedKeys -AclObject $acl - -$acl = Get-ACL -Path $openSSHAuthorizedKeys -$ar = New-Object System.Security.AccessControl.FileSystemAccessRule( ` - "NT Authority\Authenticated Users", "ReadAndExecute", "Allow") -$acl.RemoveAccessRule($ar) -$ar = New-Object System.Security.AccessControl.FileSystemAccessRule( ` - "BUILTIN\Administrators", "FullControl", "Allow") -$acl.RemoveAccessRule($ar) -$ar = New-Object System.Security.AccessControl.FileSystemAccessRule( ` - "BUILTIN\Users", "FullControl", "Allow") -$acl.RemoveAccessRule($ar) -Set-Acl -Path $openSSHAuthorizedKeys -AclObject $acl - -Disable-ScheduledTask -TaskName "Download Key Pair" - -$sshdConfigContent = @" -# Modified sshd_config, created by Packer provisioner - -PasswordAuthentication yes -PubKeyAuthentication yes -PidFile __PROGRAMDATA__/ssh/logs/sshd.pid -AuthorizedKeysFile __PROGRAMDATA__/ssh/authorized_keys -AllowUsers Administrator - -Subsystem sftp sftp-server.exe -"@ - -Set-Content -Path C:\ProgramData\ssh\sshd_config ` - -Value $sshdConfigContent - -'@ -$keyDownloadScript | Out-File $openSSHDownloadKeyScript - -# Create Task - Ensure the name matches the verbatim version above -$taskName = "Download Key Pair" -$principal = New-ScheduledTaskPrincipal ` - -UserID "NT AUTHORITY\SYSTEM" ` - -LogonType ServiceAccount ` - -RunLevel Highest -$action = New-ScheduledTaskAction -Execute 'Powershell.exe' ` - -Argument "-NoProfile -File ""$openSSHDownloadKeyScript""" -$trigger = New-ScheduledTaskTrigger -AtStartup -Register-ScheduledTask -Action $action ` - -Trigger $trigger ` - -Principal $principal ` - -TaskName $taskName ` - -Description $taskName -Disable-ScheduledTask -TaskName $taskName - -# Run the install script, terminate if it fails -& Powershell.exe -ExecutionPolicy Bypass -File $openSSHDownloadKeyScript -if ($LASTEXITCODE -ne 0) { - throw("Failed to download key pair") -} - -# Restart to ensure public key authentication works and SSH comes up -Restart-Computer - -true \ No newline at end of file diff --git a/datasource/amazon/secretsmanager/data_acc_test.go b/datasource/amazon/secretsmanager/data_acc_test.go deleted file mode 100644 index 2aeec663b..000000000 --- a/datasource/amazon/secretsmanager/data_acc_test.go +++ /dev/null @@ -1,179 +0,0 @@ -package secretsmanager - -import ( - "context" - "fmt" - "io/ioutil" - "os" - "os/exec" - "regexp" - "testing" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/secretsmanager" - "github.com/hashicorp/packer-plugin-sdk/acctest" - "github.com/hashicorp/packer-plugin-sdk/retry" - awscommon "github.com/hashicorp/packer/builder/amazon/common" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" -) - -func TestAmazonSecretsManager(t *testing.T) { - secret := &AmazonSecret{ - Name: "packer_datasource_secretsmanager_test_secret", - Key: "packer_test_key", - Value: "this_is_the_packer_test_secret_value", - Description: "this is a secret used in a packer acc test", - } - - testCase := &acctest.DatasourceTestCase{ - Name: "amazon_secretsmanager_datasource_basic_test", - Setup: func() error { - return secret.Create() - }, - Teardown: func() error { - return secret.Delete() - }, - Template: testDatasourceBasic, - Type: "amazon-secrestmanager", - Check: func(buildCommand *exec.Cmd, logfile string) error { - if buildCommand.ProcessState != nil { - if buildCommand.ProcessState.ExitCode() != 0 { - return fmt.Errorf("Bad exit code. Logfile: %s", logfile) - } - } - - logs, err := os.Open(logfile) - if err != nil { - return fmt.Errorf("Unable find %s", logfile) - } - defer logs.Close() - - logsBytes, err := ioutil.ReadAll(logs) - if err != nil { - return fmt.Errorf("Unable to read %s", logfile) - } - logsString := string(logsBytes) - - valueLog := fmt.Sprintf("null.basic-example: secret value: %s", secret.Value) - secretStringLog := fmt.Sprintf("null.basic-example: secret secret_string: %s", fmt.Sprintf("{%s:%s}", secret.Key, secret.Value)) - versionIdLog := fmt.Sprintf("null.basic-example: secret version_id: %s", aws.StringValue(secret.Info.VersionId)) - secretValueLog := fmt.Sprintf("null.basic-example: secret value: %s", secret.Value) - - if matched, _ := regexp.MatchString(valueLog+".*", logsString); !matched { - t.Fatalf("logs doesn't contain expected arn %q", logsString) - } - if matched, _ := regexp.MatchString(secretStringLog+".*", logsString); !matched { - t.Fatalf("logs doesn't contain expected secret_string %q", logsString) - } - if matched, _ := regexp.MatchString(versionIdLog+".*", logsString); !matched { - t.Fatalf("logs doesn't contain expected version_id %q", logsString) - } - if matched, _ := regexp.MatchString(secretValueLog+".*", logsString); !matched { - t.Fatalf("logs doesn't contain expected value %q", logsString) - } - return nil - }, - } - acctest.TestDatasource(t, testCase) -} - -const testDatasourceBasic = ` -data "amazon-secretsmanager" "test" { - name = "packer_datasource_secretsmanager_test_secret" - key = "packer_test_key" -} - -locals { - value = data.amazon-secretsmanager.test.value - secret_string = data.amazon-secretsmanager.test.secret_string - version_id = data.amazon-secretsmanager.test.version_id - secret_value = jsondecode(data.amazon-secretsmanager.test.secret_string)["packer_test_key"] -} - -source "null" "basic-example" { - communicator = "none" -} - -build { - sources = [ - "source.null.basic-example" - ] - - provisioner "shell-local" { - inline = [ - "echo secret value: ${local.value}", - "echo secret secret_string: ${local.secret_string}", - "echo secret version_id: ${local.version_id}", - "echo secret value: ${local.secret_value}" - ] - } -} -` - -type AmazonSecret struct { - Name string - Key string - Value string - Description string - - Info *secretsmanager.CreateSecretOutput - manager *secretsmanager.SecretsManager -} - -func (as *AmazonSecret) Create() error { - if as.manager == nil { - accessConfig := &awscommon.AccessConfig{} - session, err := accessConfig.Session() - if err != nil { - return fmt.Errorf("Unable to create aws session %s", err.Error()) - } - as.manager = secretsmanager.New(session) - } - - newSecret := &secretsmanager.CreateSecretInput{ - Description: aws.String(as.Description), - Name: aws.String(as.Name), - SecretString: aws.String(fmt.Sprintf(`{%q:%q}`, as.Key, as.Value)), - } - - secret := new(secretsmanager.CreateSecretOutput) - var err error - err = retry.Config{ - Tries: 11, - ShouldRetry: func(err error) bool { - if awserrors.Matches(err, "ResourceExistsException", "") { - _ = as.Delete() - return true - } - if awserrors.Matches(err, "InvalidRequestException", "already scheduled for deletion") { - return true - } - return false - }, - RetryDelay: (&retry.Backoff{InitialBackoff: 200 * time.Millisecond, MaxBackoff: 30 * time.Second, Multiplier: 2}).Linear, - }.Run(context.TODO(), func(_ context.Context) error { - secret, err = as.manager.CreateSecret(newSecret) - return err - }) - as.Info = secret - return err -} - -func (as *AmazonSecret) Delete() error { - if as.manager == nil { - accessConfig := &awscommon.AccessConfig{} - session, err := accessConfig.Session() - if err != nil { - return fmt.Errorf("Unable to create aws session %s", err.Error()) - } - as.manager = secretsmanager.New(session) - } - - secret := &secretsmanager.DeleteSecretInput{ - ForceDeleteWithoutRecovery: aws.Bool(true), - SecretId: aws.String(as.Name), - } - _, err := as.manager.DeleteSecret(secret) - return err -} diff --git a/datasource/amazon/secretsmanager/data_test.go b/datasource/amazon/secretsmanager/data_test.go deleted file mode 100644 index 5802b3b29..000000000 --- a/datasource/amazon/secretsmanager/data_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package secretsmanager - -import ( - "testing" -) - -func TestDatasourceConfigure_EmptySecretId(t *testing.T) { - datasource := Datasource{ - config: Config{}, - } - if err := datasource.Configure(nil); err == nil { - t.Fatalf("Should error if secret id is not specified") - } -} - -func TestDatasourceConfigure_Dafaults(t *testing.T) { - datasource := Datasource{ - config: Config{ - Name: "arn:1223", - }, - } - if err := datasource.Configure(nil); err != nil { - t.Fatalf("err: %s", err) - } - if datasource.config.VersionStage != "AWSCURRENT" { - t.Fatalf("VersionStage not set correctly") - } -} - -func TestDatasourceConfigure(t *testing.T) { - datasource := Datasource{ - config: Config{ - Name: "arn:1223", - }, - } - if err := datasource.Configure(nil); err != nil { - t.Fatalf("err: %s", err) - } -} diff --git a/go.mod b/go.mod index a9155c4ee..6a0a4c25d 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f github.com/antihax/optional v1.0.0 github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43 - github.com/aws/aws-sdk-go v1.37.15 + github.com/aws/aws-sdk-go v1.38.0 github.com/biogo/hts v0.0.0-20160420073057-50da7d4131a3 github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee github.com/cheggaaa/pb v1.0.27 @@ -32,24 +32,24 @@ require ( github.com/go-resty/resty/v2 v2.3.0 github.com/gobwas/glob v0.2.3 github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.5 github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 github.com/google/uuid v1.1.2 github.com/gophercloud/gophercloud v0.12.0 github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 - github.com/hashicorp/aws-sdk-go-base v0.6.0 github.com/hashicorp/errwrap v1.0.0 github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de - github.com/hashicorp/go-cleanhttp v0.5.1 + github.com/hashicorp/go-cleanhttp v0.5.2 github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 github.com/hashicorp/go-getter/v2 v2.0.0-20200604122502-a6995fa1edad - github.com/hashicorp/go-multierror v1.1.0 + github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-oracle-terraform v0.0.0-20181016190316-007121241b79 github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.2.0 - github.com/hashicorp/hcl/v2 v2.8.0 + github.com/hashicorp/hcl/v2 v2.9.1 + github.com/hashicorp/packer-plugin-amazon v0.0.1 github.com/hashicorp/packer-plugin-docker v0.0.2 github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 github.com/hashicorp/vault/api v1.0.4 @@ -87,7 +87,7 @@ require ( github.com/xanzy/go-cloudstack v0.0.0-20190526095453-42f262b63ed0 github.com/yandex-cloud/go-genproto v0.0.0-20200915125933-33de72a328bd github.com/yandex-cloud/go-sdk v0.0.0-20200921111412-ef15ded2014c - github.com/zclconf/go-cty v1.7.0 + github.com/zclconf/go-cty v1.8.1 github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad golang.org/x/mobile v0.0.0-20201208152944-da85bec010a2 @@ -95,7 +95,7 @@ require ( golang.org/x/net v0.0.0-20210119194325-5f4716e94777 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c + golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d golang.org/x/tools v0.0.0-20201111133315-69daaf961d65 google.golang.org/api v0.32.0 google.golang.org/grpc v1.32.0 diff --git a/go.sum b/go.sum index 288453a78..0bcce3dfa 100644 --- a/go.sum +++ b/go.sum @@ -106,8 +106,9 @@ github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhi github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43 h1:ePCAQPf5tUc5IMcUvu6euhSGna7jzs7eiXtJXHig6Zc= github.com/approvals/go-approval-tests v0.0.0-20160714161514-ad96e53bea43/go.mod h1:S6puKjZ9ZeqUPBv2hEBnMZGcM2J6mOsDRQcmxkMAND0= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -123,8 +124,8 @@ github.com/aws/aws-sdk-go v1.30.8/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.36.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.36.5/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.37.15 h1:W7l7gLLMcYRlg6a+uvf3Zz4jYwdqYzhe5ymqwWoOhp4= -github.com/aws/aws-sdk-go v1.37.15/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.38.0 h1:mqnmtdW8rGIQmp2d0WRFLua0zW0Pel0P6/vd3gJuViY= +github.com/aws/aws-sdk-go v1.38.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= @@ -268,8 +269,9 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github/v33 v33.0.0/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 h1:zL0/Ug5CMhV0XRb3A6vnK1SQ9kJM3VIyRxPQ5t9w8Bg= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg= @@ -310,8 +312,9 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdR github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 h1:BpJ2o0OR5FV7vrkDYfXYVJQeMNWa8RhklZOpW2ITAIQ= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE= -github.com/hashicorp/aws-sdk-go-base v0.6.0 h1:qmUbzM36msbBF59YctwuO5w0M2oNXjlilgKpnEhx1uw= github.com/hashicorp/aws-sdk-go-base v0.6.0/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNeFBx2gpDLQaZNxUVAY= +github.com/hashicorp/aws-sdk-go-base v0.7.0 h1:Umcq11kcoARameDgxPiYBbyltTZqO7GgBVSdq4pzX/w= +github.com/hashicorp/aws-sdk-go-base v0.7.0/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNeFBx2gpDLQaZNxUVAY= github.com/hashicorp/consul/api v1.4.0 h1:jfESivXnO5uLdH650JU/6AnjRoHrLhULq0FnC3Kp9EY= github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= github.com/hashicorp/consul/sdk v0.4.0 h1:zBtCfKJZcJDBvSCkQJch4ulp59m1rATFLKwNo/LYY30= @@ -321,8 +324,9 @@ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brv github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de h1:XDCSythtg8aWSRSO29uwhgh7b127fWr+m5SemqjSUL8= github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de/go.mod h1:xIwEieBHERyEvaeKF/TcHh1Hu+lxPM+n2vT1+g9I4m4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 h1:kgvybwEeu0SXktbB2y3uLHX9lklLo+nzUwh59A3jzQc= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA= github.com/hashicorp/go-getter v1.4.1 h1:3A2Mh8smGFcf5M+gmcv898mZdrxpseik45IpcyISLsA= @@ -345,8 +349,9 @@ github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iP github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-oracle-terraform v0.0.0-20181016190316-007121241b79 h1:RKu7yAXZTaQsxj1K9GDsh+QVw0+Wu1SWHxtbFN0n+hE= github.com/hashicorp/go-oracle-terraform v0.0.0-20181016190316-007121241b79/go.mod h1:09jT3Y/OIsjTjQ2+3bkVNPDKqWcGIYYvjB2BEKVUdvc= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= @@ -378,8 +383,9 @@ github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.6.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= -github.com/hashicorp/hcl/v2 v2.8.0 h1:iHLEAsNDp3N2MtqroP1wf0nF/zB2+McHN5YCzwqIm80= github.com/hashicorp/hcl/v2 v2.8.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= +github.com/hashicorp/hcl/v2 v2.9.1 h1:eOy4gREY0/ZQHNItlfuEZqtcQbXIxzojlP301hDpnac= +github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= @@ -395,6 +401,12 @@ github.com/hashicorp/packer v1.6.7-0.20210126105722-aef4ced967ec/go.mod h1:2+Vo/ github.com/hashicorp/packer v1.6.7-0.20210208125835-f616955ebcb6/go.mod h1:7f5ZpTTRG53rQ58BcTADuTnpiBcB3wapuxl4sF2sGMM= github.com/hashicorp/packer v1.6.7-0.20210217093213-201869d627bf/go.mod h1:+EWPPcqee4h8S/y913Dnta1eJkgiqsGXBQgB75A2qV0= github.com/hashicorp/packer v1.7.0/go.mod h1:3KRJcwOctl2JaAGpQMI1bWQRArfWNWqcYjO6AOsVVGQ= +github.com/hashicorp/packer-plugin-amazon v0.0.0-20210322103904-ebc9f7a3cb33 h1:c8fxJJE9Ko8FXaTQexP22cHpvOmEZHk30WTWvo/BKFg= +github.com/hashicorp/packer-plugin-amazon v0.0.0-20210322103904-ebc9f7a3cb33/go.mod h1:12c9msibyHdId+Mk/pCbdRb1KaLIhaNyxeJ6n8bZt30= +github.com/hashicorp/packer-plugin-amazon v0.0.0-20210323151306-ff072d167737 h1:ZA8sQHjGIomiUz4SsccdxHwDk/ZI9CAmimUo7QKhMMs= +github.com/hashicorp/packer-plugin-amazon v0.0.0-20210323151306-ff072d167737/go.mod h1:12c9msibyHdId+Mk/pCbdRb1KaLIhaNyxeJ6n8bZt30= +github.com/hashicorp/packer-plugin-amazon v0.0.1 h1:EuyjNK9bL7WhQeIJzhBJxOx8nyc61ai5UbOsb1PIVwI= +github.com/hashicorp/packer-plugin-amazon v0.0.1/go.mod h1:12c9msibyHdId+Mk/pCbdRb1KaLIhaNyxeJ6n8bZt30= github.com/hashicorp/packer-plugin-docker v0.0.2 h1:j/hQTogaN2pZfZohlZTRu5YvNZg2/qtYYHkxPBxv2Oo= github.com/hashicorp/packer-plugin-docker v0.0.2/go.mod h1:A2p9qztS4n88KsNF+qBM7BWw2HndW636GpFIjNSvbKM= github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= @@ -405,6 +417,7 @@ github.com/hashicorp/packer-plugin-sdk v0.0.10-0.20210126105622-8e1648006d93/go. github.com/hashicorp/packer-plugin-sdk v0.0.11/go.mod h1:GNb0WNs7zibb8vzUZce1As64z2AW0FEMwhe2J7/NW5I= github.com/hashicorp/packer-plugin-sdk v0.0.12/go.mod h1:hs82OYeufirGG6KRENMpjBWomnIlte99X6wXAPThJ5I= github.com/hashicorp/packer-plugin-sdk v0.0.14/go.mod h1:tNb3XzJPnjMl3QuUdKmF47B5ImerdTakalHzUAvW0aw= +github.com/hashicorp/packer-plugin-sdk v0.1.0/go.mod h1:CFsC20uZjtER/EnTn/CSMKD0kEdkqOVev8mtOmfnZiI= github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 h1:nw4RqF7C4jUWGo5PGDG4dSclU+G/vXyVBHIu5j7akd4= github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0/go.mod h1:1d3nqB9LUsXMQaNUiL67Q+WYEtjsVcLNTX8ikVlpBrc= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= @@ -665,8 +678,11 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.4.0/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ= -github.com/zclconf/go-cty v1.7.0 h1:yMqLinUwNCYkmiHjEH+luio1yGl35cjqVzjvdRg2WlY= github.com/zclconf/go-cty v1.7.0/go.mod h1:VDR4+I79ubFBGm1uJac1226K5yANQFHeauxPBoP54+o= +github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.8.1 h1:SI0LqNeNxAgv2WWqWJMlG2/Ad/6aYJ7IVYYMigmfkuI= +github.com/zclconf/go-cty v1.8.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -839,8 +855,9 @@ golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d h1:jbzgAvDZn8aEnytae+4ou0J0GwFZoHR0hOrTg4qH8GA= +golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= diff --git a/post-processor/amazon-import/version/version.go b/post-processor/amazon-import/version/version.go deleted file mode 100644 index 695b1d778..000000000 --- a/post-processor/amazon-import/version/version.go +++ /dev/null @@ -1,13 +0,0 @@ -package version - -import ( - "github.com/hashicorp/packer-plugin-sdk/version" - packerVersion "github.com/hashicorp/packer/version" -) - -var AmazonImportPluginVersion *version.PluginVersion - -func init() { - AmazonImportPluginVersion = version.InitializePluginVersion( - packerVersion.Version, packerVersion.VersionPrerelease) -} diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/emoji_table.rl b/vendor/github.com/apparentlymart/go-textseg/v12/textseg/emoji_table.rl deleted file mode 100644 index 1c0749c9c..000000000 --- a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/emoji_table.rl +++ /dev/null @@ -1,290 +0,0 @@ -# The following Ragel file was autogenerated with unicode2ragel.rb -# from: https://www.unicode.org/Public/emoji/12.0/emoji-data.txt -# -# It defines ["Extended_Pictographic"]. -# -# To use this, make sure that your alphtype is set to byte, -# and that your input is in utf8. - -%%{ - machine Emoji; - - Extended_Pictographic = - 0xC2 0xA9 #1.1 [1] (©️) copyright - | 0xC2 0xAE #1.1 [1] (®️) registered - | 0xE2 0x80 0xBC #1.1 [1] (‼️) double exclamation mark - | 0xE2 0x81 0x89 #3.0 [1] (⁉️) exclamation question mark - | 0xE2 0x84 0xA2 #1.1 [1] (™️) trade mark - | 0xE2 0x84 0xB9 #3.0 [1] (ℹ️) information - | 0xE2 0x86 0x94..0x99 #1.1 [6] (↔️..↙️) left-right arrow..down... - | 0xE2 0x86 0xA9..0xAA #1.1 [2] (↩️..↪️) right arrow curving le... - | 0xE2 0x8C 0x9A..0x9B #1.1 [2] (⌚..⌛) watch..hourglass done - | 0xE2 0x8C 0xA8 #1.1 [1] (⌨️) keyboard - | 0xE2 0x8E 0x88 #3.0 [1] (⎈) HELM SYMBOL - | 0xE2 0x8F 0x8F #4.0 [1] (⏏️) eject button - | 0xE2 0x8F 0xA9..0xB3 #6.0 [11] (⏩..⏳) fast-forward button..hou... - | 0xE2 0x8F 0xB8..0xBA #7.0 [3] (⏸️..⏺️) pause button..record b... - | 0xE2 0x93 0x82 #1.1 [1] (Ⓜ️) circled M - | 0xE2 0x96 0xAA..0xAB #1.1 [2] (▪️..▫️) black small square..wh... - | 0xE2 0x96 0xB6 #1.1 [1] (▶️) play button - | 0xE2 0x97 0x80 #1.1 [1] (◀️) reverse button - | 0xE2 0x97 0xBB..0xBE #3.2 [4] (◻️..◾) white medium square..bl... - | 0xE2 0x98 0x80..0x85 #1.1 [6] (☀️..★) sun..BLACK STAR - | 0xE2 0x98 0x87..0x92 #1.1 [12] (☇..☒) LIGHTNING..BALLOT BOX WI... - | 0xE2 0x98 0x94..0x95 #4.0 [2] (☔..☕) umbrella with rain drops... - | 0xE2 0x98 0x96..0x97 #3.2 [2] (☖..☗) WHITE SHOGI PIECE..BLACK... - | 0xE2 0x98 0x98 #4.1 [1] (☘️) shamrock - | 0xE2 0x98 0x99 #3.0 [1] (☙) REVERSED ROTATED FLORAL ... - | 0xE2 0x98 0x9A..0xFF #1.1 [86] (☚..♯) BLACK LEFT POINTING INDE... - | 0xE2 0x99 0x00..0xAF # - | 0xE2 0x99 0xB0..0xB1 #3.0 [2] (♰..♱) WEST SYRIAC CROSS..EAST ... - | 0xE2 0x99 0xB2..0xBD #3.2 [12] (♲..♽) UNIVERSAL RECYCLING SYMB... - | 0xE2 0x99 0xBE..0xBF #4.1 [2] (♾️..♿) infinity..wheelchair sy... - | 0xE2 0x9A 0x80..0x85 #3.2 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 - | 0xE2 0x9A 0x90..0x91 #4.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG - | 0xE2 0x9A 0x92..0x9C #4.1 [11] (⚒️..⚜️) hammer and pick..fleur... - | 0xE2 0x9A 0x9D #5.1 [1] (⚝) OUTLINED WHITE STAR - | 0xE2 0x9A 0x9E..0x9F #5.2 [2] (⚞..⚟) THREE LINES CONVERGING R... - | 0xE2 0x9A 0xA0..0xA1 #4.0 [2] (⚠️..⚡) warning..high voltage - | 0xE2 0x9A 0xA2..0xB1 #4.1 [16] (⚢..⚱️) DOUBLED FEMALE SIGN..fu... - | 0xE2 0x9A 0xB2 #5.0 [1] (⚲) NEUTER - | 0xE2 0x9A 0xB3..0xBC #5.1 [10] (⚳..⚼) CERES..SESQUIQUADRATE - | 0xE2 0x9A 0xBD..0xBF #5.2 [3] (⚽..⚿) soccer ball..SQUARED KEY - | 0xE2 0x9B 0x80..0x83 #5.1 [4] (⛀..⛃) WHITE DRAUGHTS MAN..BLAC... - | 0xE2 0x9B 0x84..0x8D #5.2 [10] (⛄..⛍) snowman without snow..DI... - | 0xE2 0x9B 0x8E #6.0 [1] (⛎) Ophiuchus - | 0xE2 0x9B 0x8F..0xA1 #5.2 [19] (⛏️..⛡) pick..RESTRICTED LEFT E... - | 0xE2 0x9B 0xA2 #6.0 [1] (⛢) ASTRONOMICAL SYMBOL FOR ... - | 0xE2 0x9B 0xA3 #5.2 [1] (⛣) HEAVY CIRCLE WITH STROKE... - | 0xE2 0x9B 0xA4..0xA7 #6.0 [4] (⛤..⛧) PENTAGRAM..INVERTED PENT... - | 0xE2 0x9B 0xA8..0xBF #5.2 [24] (⛨..⛿) BLACK CROSS ON SHIELD..W... - | 0xE2 0x9C 0x80 #7.0 [1] (✀) BLACK SAFETY SCISSORS - | 0xE2 0x9C 0x81..0x84 #1.1 [4] (✁..✄) UPPER BLADE SCISSORS..WH... - | 0xE2 0x9C 0x85 #6.0 [1] (✅) check mark button - | 0xE2 0x9C 0x88..0x89 #1.1 [2] (✈️..✉️) airplane..envelope - | 0xE2 0x9C 0x8A..0x8B #6.0 [2] (✊..✋) raised fist..raised hand - | 0xE2 0x9C 0x8C..0x92 #1.1 [7] (✌️..✒️) victory hand..black nib - | 0xE2 0x9C 0x94 #1.1 [1] (✔️) check mark - | 0xE2 0x9C 0x96 #1.1 [1] (✖️) multiplication sign - | 0xE2 0x9C 0x9D #1.1 [1] (✝️) latin cross - | 0xE2 0x9C 0xA1 #1.1 [1] (✡️) star of David - | 0xE2 0x9C 0xA8 #6.0 [1] (✨) sparkles - | 0xE2 0x9C 0xB3..0xB4 #1.1 [2] (✳️..✴️) eight-spoked asterisk.... - | 0xE2 0x9D 0x84 #1.1 [1] (❄️) snowflake - | 0xE2 0x9D 0x87 #1.1 [1] (❇️) sparkle - | 0xE2 0x9D 0x8C #6.0 [1] (❌) cross mark - | 0xE2 0x9D 0x8E #6.0 [1] (❎) cross mark button - | 0xE2 0x9D 0x93..0x95 #6.0 [3] (❓..❕) question mark..white exc... - | 0xE2 0x9D 0x97 #5.2 [1] (❗) exclamation mark - | 0xE2 0x9D 0xA3..0xA7 #1.1 [5] (❣️..❧) heart exclamation..ROTA... - | 0xE2 0x9E 0x95..0x97 #6.0 [3] (➕..➗) plus sign..division sign - | 0xE2 0x9E 0xA1 #1.1 [1] (➡️) right arrow - | 0xE2 0x9E 0xB0 #6.0 [1] (➰) curly loop - | 0xE2 0x9E 0xBF #6.0 [1] (➿) double curly loop - | 0xE2 0xA4 0xB4..0xB5 #3.2 [2] (⤴️..⤵️) right arrow curving up... - | 0xE2 0xAC 0x85..0x87 #4.0 [3] (⬅️..⬇️) left arrow..down arrow - | 0xE2 0xAC 0x9B..0x9C #5.1 [2] (⬛..⬜) black large square..whit... - | 0xE2 0xAD 0x90 #5.1 [1] (⭐) star - | 0xE2 0xAD 0x95 #5.2 [1] (⭕) hollow red circle - | 0xE3 0x80 0xB0 #1.1 [1] (〰️) wavy dash - | 0xE3 0x80 0xBD #3.2 [1] (〽️) part alternation mark - | 0xE3 0x8A 0x97 #1.1 [1] (㊗️) Japanese “congratulatio... - | 0xE3 0x8A 0x99 #1.1 [1] (㊙️) Japanese “secret” button - | 0xF0 0x9F 0x80 0x80..0xAB #5.1 [44] (🀀..🀫) MAHJONG TILE EAST WIN... - | 0xF0 0x9F 0x80 0xAC..0xAF #NA [4] (🀬..🀯) ...... - | 0xF0 0x9F 0x83 0x81..0x8F #6.0 [15] (🃁..🃏) PLAYING CARD ACE OF D... - | 0xF0 0x9F 0x83 0x90 #NA [1] (🃐) - | 0xF0 0x9F 0x83 0x91..0x9F #6.0 [15] (🃑..🃟) PLAYING CARD ACE OF C... - | 0xF0 0x9F 0x83 0xA0..0xB5 #7.0 [22] (🃠..🃵) PLAYING CARD FOOL..PL... - | 0xF0 0x9F 0x83 0xB6..0xBF #NA [10] (🃶..🃿) ................... - | 0xF0 0x9F 0x8A..0x8A 0x00..0xFF # - | 0xF0 0x9F 0x8B 0x00..0xBF # - | 0xF0 0x9F 0x8C 0x80..0xA0 #6.0 [33] (🌀..🌠) cyclone..shooting star - | 0xF0 0x9F 0x8C 0xA1..0xAC #7.0 [12] (🌡️..🌬️) thermometer..wind face - | 0xF0 0x9F 0x8C 0xAD..0xAF #8.0 [3] (🌭..🌯) hot dog..burrito - | 0xF0 0x9F 0x8C 0xB0..0xB5 #6.0 [6] (🌰..🌵) chestnut..cactus - | 0xF0 0x9F 0x8C 0xB6 #7.0 [1] (🌶️) hot pepper - | 0xF0 0x9F 0x8C 0xB7..0xFF #6.0 [70] (🌷..🍼) tulip..baby bottle - | 0xF0 0x9F 0x8D 0x00..0xBC # - | 0xF0 0x9F 0x8D 0xBD #7.0 [1] (🍽️) fork and knife with plate - | 0xF0 0x9F 0x8D 0xBE..0xBF #8.0 [2] (🍾..🍿) bottle with popping c... - | 0xF0 0x9F 0x8E 0x80..0x93 #6.0 [20] (🎀..🎓) ribbon..graduation cap - | 0xF0 0x9F 0x8E 0x94..0x9F #7.0 [12] (🎔..🎟️) HEART WITH TIP ON TH... - | 0xF0 0x9F 0x8E 0xA0..0xFF #6.0 [37] (🎠..🏄) carousel horse..perso... - | 0xF0 0x9F 0x8F 0x00..0x84 # - | 0xF0 0x9F 0x8F 0x85 #7.0 [1] (🏅) sports medal - | 0xF0 0x9F 0x8F 0x86..0x8A #6.0 [5] (🏆..🏊) trophy..person swimming - | 0xF0 0x9F 0x8F 0x8B..0x8E #7.0 [4] (🏋️..🏎️) person lifting weig... - | 0xF0 0x9F 0x8F 0x8F..0x93 #8.0 [5] (🏏..🏓) cricket game..ping pong - | 0xF0 0x9F 0x8F 0x94..0x9F #7.0 [12] (🏔️..🏟️) snow-capped mountai... - | 0xF0 0x9F 0x8F 0xA0..0xB0 #6.0 [17] (🏠..🏰) house..castle - | 0xF0 0x9F 0x8F 0xB1..0xB7 #7.0 [7] (🏱..🏷️) WHITE PENNANT..label - | 0xF0 0x9F 0x8F 0xB8..0xBA #8.0 [3] (🏸..🏺) badminton..amphora - | 0xF0 0x9F 0x90 0x80..0xBE #6.0 [63] (🐀..🐾) rat..paw prints - | 0xF0 0x9F 0x90 0xBF #7.0 [1] (🐿️) chipmunk - | 0xF0 0x9F 0x91 0x80 #6.0 [1] (👀) eyes - | 0xF0 0x9F 0x91 0x81 #7.0 [1] (👁️) eye - | 0xF0 0x9F 0x91 0x82..0xFF #6.0[182] (👂..📷) ear..camera - | 0xF0 0x9F 0x92..0x92 0x00..0xFF # - | 0xF0 0x9F 0x93 0x00..0xB7 # - | 0xF0 0x9F 0x93 0xB8 #7.0 [1] (📸) camera with flash - | 0xF0 0x9F 0x93 0xB9..0xBC #6.0 [4] (📹..📼) video camera..videoca... - | 0xF0 0x9F 0x93 0xBD..0xBE #7.0 [2] (📽️..📾) film projector..PORT... - | 0xF0 0x9F 0x93 0xBF #8.0 [1] (📿) prayer beads - | 0xF0 0x9F 0x94 0x80..0xBD #6.0 [62] (🔀..🔽) shuffle tracks button... - | 0xF0 0x9F 0x95 0x86..0x8A #7.0 [5] (🕆..🕊️) WHITE LATIN CROSS..dove - | 0xF0 0x9F 0x95 0x8B..0x8F #8.0 [5] (🕋..🕏) kaaba..BOWL OF HYGIEIA - | 0xF0 0x9F 0x95 0x90..0xA7 #6.0 [24] (🕐..🕧) one o’clock..twelve-t... - | 0xF0 0x9F 0x95 0xA8..0xB9 #7.0 [18] (🕨..🕹️) RIGHT SPEAKER..joystick - | 0xF0 0x9F 0x95 0xBA #9.0 [1] (🕺) man dancing - | 0xF0 0x9F 0x95 0xBB..0xFF #7.0 [41] (🕻..🖣) LEFT HAND TELEPHONE R... - | 0xF0 0x9F 0x96 0x00..0xA3 # - | 0xF0 0x9F 0x96 0xA4 #9.0 [1] (🖤) black heart - | 0xF0 0x9F 0x96 0xA5..0xFF #7.0 [86] (🖥️..🗺️) desktop computer..w... - | 0xF0 0x9F 0x97 0x00..0xBA # - | 0xF0 0x9F 0x97 0xBB..0xBF #6.0 [5] (🗻..🗿) mount fuji..moai - | 0xF0 0x9F 0x98 0x80 #6.1 [1] (😀) grinning face - | 0xF0 0x9F 0x98 0x81..0x90 #6.0 [16] (😁..😐) beaming face with smi... - | 0xF0 0x9F 0x98 0x91 #6.1 [1] (😑) expressionless face - | 0xF0 0x9F 0x98 0x92..0x94 #6.0 [3] (😒..😔) unamused face..pensiv... - | 0xF0 0x9F 0x98 0x95 #6.1 [1] (😕) confused face - | 0xF0 0x9F 0x98 0x96 #6.0 [1] (😖) confounded face - | 0xF0 0x9F 0x98 0x97 #6.1 [1] (😗) kissing face - | 0xF0 0x9F 0x98 0x98 #6.0 [1] (😘) face blowing a kiss - | 0xF0 0x9F 0x98 0x99 #6.1 [1] (😙) kissing face with smilin... - | 0xF0 0x9F 0x98 0x9A #6.0 [1] (😚) kissing face with closed... - | 0xF0 0x9F 0x98 0x9B #6.1 [1] (😛) face with tongue - | 0xF0 0x9F 0x98 0x9C..0x9E #6.0 [3] (😜..😞) winking face with ton... - | 0xF0 0x9F 0x98 0x9F #6.1 [1] (😟) worried face - | 0xF0 0x9F 0x98 0xA0..0xA5 #6.0 [6] (😠..😥) angry face..sad but r... - | 0xF0 0x9F 0x98 0xA6..0xA7 #6.1 [2] (😦..😧) frowning face with op... - | 0xF0 0x9F 0x98 0xA8..0xAB #6.0 [4] (😨..😫) fearful face..tired face - | 0xF0 0x9F 0x98 0xAC #6.1 [1] (😬) grimacing face - | 0xF0 0x9F 0x98 0xAD #6.0 [1] (😭) loudly crying face - | 0xF0 0x9F 0x98 0xAE..0xAF #6.1 [2] (😮..😯) face with open mouth.... - | 0xF0 0x9F 0x98 0xB0..0xB3 #6.0 [4] (😰..😳) anxious face with swe... - | 0xF0 0x9F 0x98 0xB4 #6.1 [1] (😴) sleeping face - | 0xF0 0x9F 0x98 0xB5..0xFF #6.0 [12] (😵..🙀) dizzy face..weary cat - | 0xF0 0x9F 0x99 0x00..0x80 # - | 0xF0 0x9F 0x99 0x81..0x82 #7.0 [2] (🙁..🙂) slightly frowning fac... - | 0xF0 0x9F 0x99 0x83..0x84 #8.0 [2] (🙃..🙄) upside-down face..fac... - | 0xF0 0x9F 0x99 0x85..0x8F #6.0 [11] (🙅..🙏) person gesturing NO..... - | 0xF0 0x9F 0x9A 0x80..0xFF #6.0 [70] (🚀..🛅) rocket..left luggage - | 0xF0 0x9F 0x9B 0x00..0x85 # - | 0xF0 0x9F 0x9B 0x86..0x8F #7.0 [10] (🛆..🛏️) TRIANGLE WITH ROUNDE... - | 0xF0 0x9F 0x9B 0x90 #8.0 [1] (🛐) place of worship - | 0xF0 0x9F 0x9B 0x91..0x92 #9.0 [2] (🛑..🛒) stop sign..shopping cart - | 0xF0 0x9F 0x9B 0x93..0x94 #10.0 [2] (🛓..🛔) STUPA..PAGODA - | 0xF0 0x9F 0x9B 0x95 #12.0 [1] (🛕) hindu temple - | 0xF0 0x9F 0x9B 0x96..0x9F #NA [10] (🛖..🛟) ...................... - | 0xF0 0x9F 0xA4 0x8D..0x8F #12.0 [3] (🤍..🤏) white heart..pinchin... - | 0xF0 0x9F 0xA4 0x90..0x98 #8.0 [9] (🤐..🤘) zipper-mouth face..si... - | 0xF0 0x9F 0xA4 0x99..0x9E #9.0 [6] (🤙..🤞) call me hand..crossed... - | 0xF0 0x9F 0xA4 0x9F #10.0 [1] (🤟) love-you gesture - | 0xF0 0x9F 0xA4 0xA0..0xA7 #9.0 [8] (🤠..🤧) cowboy hat face..snee... - | 0xF0 0x9F 0xA4 0xA8..0xAF #10.0 [8] (🤨..🤯) face with raised eye... - | 0xF0 0x9F 0xA4 0xB0 #9.0 [1] (🤰) pregnant woman - | 0xF0 0x9F 0xA4 0xB1..0xB2 #10.0 [2] (🤱..🤲) breast-feeding..palm... - | 0xF0 0x9F 0xA4 0xB3..0xBA #9.0 [8] (🤳..🤺) selfie..person fencing - | 0xF0 0x9F 0xA4 0xBC..0xBE #9.0 [3] (🤼..🤾) people wrestling..per... - | 0xF0 0x9F 0xA4 0xBF #12.0 [1] (🤿) diving mask - | 0xF0 0x9F 0xA5 0x80..0x85 #9.0 [6] (🥀..🥅) wilted flower..goal net - | 0xF0 0x9F 0xA5 0x87..0x8B #9.0 [5] (🥇..🥋) 1st place medal..mart... - | 0xF0 0x9F 0xA5 0x8C #10.0 [1] (🥌) curling stone - | 0xF0 0x9F 0xA5 0x8D..0x8F #11.0 [3] (🥍..🥏) lacrosse..flying disc - | 0xF0 0x9F 0xA5 0x90..0x9E #9.0 [15] (🥐..🥞) croissant..pancakes - | 0xF0 0x9F 0xA5 0x9F..0xAB #10.0 [13] (🥟..🥫) dumpling..canned food - | 0xF0 0x9F 0xA5 0xAC..0xB0 #11.0 [5] (🥬..🥰) leafy green..smiling... - | 0xF0 0x9F 0xA5 0xB1 #12.0 [1] (🥱) yawning face - | 0xF0 0x9F 0xA5 0xB2 #NA [1] (🥲) - | 0xF0 0x9F 0xA5 0xB3..0xB6 #11.0 [4] (🥳..🥶) partying face..cold ... - | 0xF0 0x9F 0xA5 0xB7..0xB9 #NA [3] (🥷..🥹) ..................... - | 0xF0 0x9F 0xAB..0xBE 0x00..0xFF # - | 0xF0 0x9F 0xBF 0x00..0xBD # - ; - -}%% diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters.go b/vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters.go deleted file mode 100644 index c389827fe..000000000 --- a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters.go +++ /dev/null @@ -1,4078 +0,0 @@ -//line grapheme_clusters.rl:1 -package textseg - -import ( - "errors" - "unicode/utf8" -) - -// Generated from grapheme_clusters.rl. DO NOT EDIT - -//line grapheme_clusters.go:13 -var _graphclust_actions []byte = []byte{ - 0, 1, 0, 1, 4, 1, 10, 1, 11, - 1, 12, 1, 13, 1, 14, 1, 15, - 1, 16, 1, 17, 1, 18, 1, 19, - 1, 20, 1, 21, 1, 22, 2, 1, - 8, 2, 1, 9, 2, 2, 3, 2, - 5, 1, 3, 0, 1, 9, 3, 5, - 0, 1, 3, 5, 1, 6, 3, 5, - 1, 7, -} - -var _graphclust_key_offsets []int16 = []int16{ - 0, 0, 1, 3, 5, 7, 10, 15, - 17, 20, 28, 31, 33, 35, 38, 68, - 76, 78, 82, 85, 90, 95, 107, 119, - 127, 132, 142, 145, 152, 156, 164, 174, - 180, 188, 190, 198, 201, 203, 206, 208, - 215, 217, 225, 226, 247, 251, 257, 262, - 264, 268, 272, 274, 278, 280, 283, 287, - 289, 296, 298, 302, 306, 310, 312, 314, - 322, 326, 331, 333, 335, 337, 338, 340, - 342, 344, 346, 361, 365, 367, 369, 374, - 378, 384, 386, 388, 392, 396, 398, 402, - 409, 414, 418, 421, 422, 426, 433, 440, - 441, 442, 444, 453, 455, 457, 459, 491, - 495, 497, 501, 505, 508, 512, 516, 519, - 521, 527, 540, 542, 545, 547, 549, 553, - 557, 559, 561, 563, 565, 570, 576, 579, - 581, 585, 589, 596, 599, 605, 607, 611, - 613, 615, 618, 622, 623, 625, 631, 637, - 643, 645, 649, 653, 658, 663, 673, 675, - 677, 679, 680, 682, 683, 689, 691, 693, - 693, 695, 702, 704, 706, 708, 711, 716, - 718, 721, 729, 732, 734, 736, 739, 769, - 777, 779, 783, 786, 791, 796, 808, 820, - 828, 833, 843, 846, 853, 857, 865, 875, - 881, 889, 891, 899, 902, 904, 907, 909, - 916, 918, 926, 927, 948, 952, 958, 963, - 965, 969, 973, 975, 979, 981, 984, 988, - 990, 997, 999, 1003, 1007, 1011, 1013, 1015, - 1023, 1027, 1032, 1034, 1036, 1060, 1063, 1064, - 1066, 1068, 1072, 1075, 1076, 1081, 1082, 1085, - 1088, 1094, 1096, 1100, 1102, 1113, 1122, 1127, - 1129, 1133, 1135, 1137, 1138, 1140, 1143, 1146, - 1148, 1150, 1165, 1169, 1171, 1173, 1178, 1182, - 1188, 1190, 1192, 1196, 1200, 1202, 1206, 1213, - 1218, 1222, 1225, 1226, 1230, 1237, 1244, 1245, - 1246, 1248, 1257, 1259, 1261, 1263, 1295, 1299, - 1301, 1305, 1309, 1312, 1316, 1320, 1323, 1325, - 1331, 1344, 1346, 1349, 1351, 1353, 1357, 1361, - 1363, 1365, 1367, 1369, 1374, 1380, 1383, 1385, - 1389, 1393, 1400, 1403, 1409, 1411, 1415, 1417, - 1419, 1422, 1426, 1427, 1429, 1435, 1441, 1447, - 1449, 1453, 1457, 1462, 1467, 1477, 1479, 1481, - 1483, 1523, 1523, 1526, 1530, 1535, 1537, 1545, - 1547, 1549, 1551, 1553, 1555, 1557, 1559, 1563, - 1567, 1571, 1575, 1577, 1578, 1584, 1586, 1588, - 1590, 1597, 1598, 1600, 1605, 1607, 1609, 1611, - 1614, 1619, 1621, 1624, 1632, 1635, 1637, 1639, - 1642, 1672, 1680, 1682, 1686, 1689, 1694, 1699, - 1711, 1723, 1731, 1736, 1746, 1749, 1756, 1760, - 1768, 1778, 1784, 1792, 1794, 1802, 1805, 1807, - 1810, 1812, 1819, 1821, 1829, 1830, 1851, 1855, - 1861, 1866, 1868, 1872, 1876, 1878, 1882, 1884, - 1887, 1891, 1893, 1900, 1902, 1906, 1910, 1914, - 1916, 1918, 1926, 1930, 1935, 1937, 1939, 1941, - 1942, 1944, 1946, 1948, 1950, 1965, 1969, 1971, - 1973, 1978, 1982, 1988, 1990, 1992, 1996, 2000, - 2002, 2006, 2013, 2018, 2022, 2025, 2026, 2030, - 2037, 2044, 2045, 2046, 2048, 2057, 2059, 2061, - 2063, 2095, 2099, 2101, 2105, 2109, 2112, 2116, - 2120, 2123, 2125, 2131, 2144, 2146, 2149, 2151, - 2153, 2157, 2161, 2163, 2165, 2167, 2169, 2174, - 2180, 2183, 2185, 2189, 2193, 2200, 2203, 2209, - 2211, 2215, 2217, 2219, 2222, 2226, 2227, 2229, - 2235, 2241, 2247, 2249, 2253, 2257, 2262, 2267, - 2277, 2279, 2281, 2283, 2284, 2286, 2287, 2293, - 2295, 2297, 2297, 2299, 2305, 2307, 2309, 2311, - 2314, 2319, 2321, 2324, 2332, 2335, 2337, 2339, - 2342, 2372, 2380, 2382, 2386, 2389, 2394, 2399, - 2411, 2423, 2431, 2436, 2446, 2449, 2456, 2460, - 2468, 2478, 2484, 2492, 2494, 2502, 2505, 2507, - 2510, 2512, 2519, 2521, 2529, 2530, 2551, 2555, - 2561, 2566, 2568, 2572, 2576, 2578, 2582, 2584, - 2587, 2591, 2593, 2600, 2602, 2606, 2610, 2614, - 2616, 2618, 2626, 2630, 2635, 2637, 2639, 2663, - 2666, 2667, 2669, 2671, 2675, 2678, 2679, 2684, - 2685, 2688, 2691, 2697, 2699, 2703, 2705, 2716, - 2725, 2730, 2732, 2736, 2738, 2740, 2741, 2743, - 2746, 2749, 2751, 2753, 2768, 2772, 2774, 2776, - 2781, 2785, 2791, 2793, 2795, 2799, 2803, 2805, - 2809, 2816, 2821, 2825, 2828, 2829, 2833, 2840, - 2847, 2848, 2849, 2851, 2860, 2862, 2864, 2866, - 2898, 2902, 2904, 2908, 2912, 2915, 2919, 2923, - 2926, 2928, 2934, 2947, 2949, 2952, 2954, 2956, - 2960, 2964, 2966, 2968, 2970, 2972, 2977, 2983, - 2986, 2988, 2992, 2996, 3003, 3006, 3012, 3014, - 3018, 3020, 3022, 3025, 3029, 3030, 3032, 3038, - 3044, 3050, 3052, 3056, 3060, 3065, 3070, 3080, - 3082, 3084, 3086, 3126, 3126, 3129, 3133, 3138, - 3140, 3148, 3150, 3152, 3154, 3156, 3158, 3160, - 3162, 3166, 3170, 3174, 3178, 3180, 3181, 3187, - 3189, 3191, 3193, 3200, 3201, 3203, 3209, 3212, - 3215, 3219, 3222, 3225, 3232, 3234, 3258, 3260, - 3284, 3286, 3288, 3311, 3313, 3315, 3316, 3318, - 3320, 3322, 3328, 3330, 3362, 3366, 3371, 3394, - 3396, 3398, 3400, 3402, 3405, 3407, 3409, 3413, - 3413, 3469, 3525, 3556, 3561, 3565, 3587, 3596, - 3601, 3605, 3615, 3622, 3625, 3636, 3639, 3646, - 3652, 3656, 3662, 3679, 3694, 3703, 3709, 3719, - 3723, 3727, 3731, 3735, 3737, 3757, 3763, 3768, - 3770, 3772, 3775, 3777, 3779, 3783, 3839, 3895, - 3928, 3933, 3941, 3945, 3947, 3952, 3959, 3967, - 3970, 3973, 3979, 3982, 3988, 3991, 3994, 3998, - 4001, 4005, 4008, 4012, 4054, 4061, 4069, 4078, - 4082, 4089, 4091, 4093, 4103, 4107, 4111, 4115, - 4119, 4123, 4127, 4131, 4137, 4147, 4155, 4160, - 4163, 4167, 4169, 4172, 4177, 4179, 4182, 4185, - 4189, 4192, 4195, 4202, 4204, 4206, 4208, 4210, - 4213, 4218, 4220, 4223, 4231, 4234, 4236, 4238, - 4241, 4271, 4279, 4281, 4285, 4288, 4293, 4298, - 4310, 4322, 4330, 4335, 4345, 4348, 4355, 4359, - 4367, 4377, 4383, 4391, 4393, 4401, 4404, 4406, - 4409, 4411, 4418, 4420, 4428, 4429, 4450, 4454, - 4460, 4465, 4467, 4471, 4475, 4477, 4481, 4483, - 4486, 4490, 4492, 4499, 4501, 4505, 4509, 4513, - 4515, 4517, 4525, 4529, 4534, 4536, 4538, 4562, - 4565, 4566, 4568, 4570, 4574, 4577, 4578, 4583, - 4584, 4587, 4590, 4596, 4598, 4602, 4604, 4615, - 4624, 4629, 4631, 4635, 4637, 4639, 4640, 4642, - 4645, 4648, 4650, 4652, 4667, 4671, 4673, 4675, - 4680, 4684, 4690, 4692, 4694, 4698, 4702, 4704, - 4708, 4715, 4720, 4724, 4727, 4728, 4732, 4739, - 4746, 4747, 4748, 4750, 4759, 4761, 4763, 4765, - 4797, 4801, 4803, 4807, 4811, 4814, 4818, 4822, - 4825, 4827, 4833, 4846, 4848, 4851, 4853, 4855, - 4859, 4863, 4865, 4867, 4869, 4871, 4876, 4882, - 4885, 4887, 4891, 4895, 4902, 4905, 4911, 4913, - 4917, 4919, 4921, 4924, 4928, 4929, 4931, 4937, - 4943, 4949, 4951, 4955, 4959, 4964, 4969, 4979, - 4981, 4983, 4985, 5025, 5025, 5028, 5032, 5037, - 5039, 5047, 5049, 5051, 5053, 5055, 5057, 5059, - 5061, 5065, 5069, 5073, 5077, 5079, 5080, 5086, - 5088, 5090, 5092, 5099, 5100, 5102, 5126, 5128, - 5152, 5154, 5156, 5179, 5181, 5183, 5184, 5186, - 5188, 5190, 5196, 5198, 5230, 5234, 5239, 5262, - 5264, 5266, 5268, 5270, 5273, 5275, 5277, 5281, - 5281, 5337, 5393, 5424, 5429, 5432, 5454, 5467, - 5469, 5471, 5473, 5476, 5481, 5483, 5486, 5494, - 5497, 5499, 5501, 5504, 5534, 5542, 5544, 5548, - 5551, 5556, 5561, 5573, 5585, 5593, 5598, 5608, - 5611, 5618, 5622, 5630, 5640, 5646, 5654, 5656, - 5664, 5667, 5669, 5672, 5674, 5681, 5683, 5691, - 5692, 5713, 5717, 5723, 5728, 5730, 5734, 5738, - 5740, 5744, 5746, 5749, 5753, 5755, 5762, 5764, - 5768, 5772, 5776, 5778, 5780, 5788, 5792, 5797, - 5799, 5801, 5803, 5804, 5806, 5808, 5810, 5812, - 5827, 5831, 5833, 5835, 5840, 5844, 5850, 5852, - 5854, 5858, 5862, 5864, 5868, 5875, 5880, 5884, - 5887, 5888, 5892, 5899, 5906, 5907, 5908, 5910, - 5919, 5921, 5923, 5925, 5957, 5961, 5963, 5967, - 5971, 5974, 5978, 5982, 5985, 5987, 5993, 6006, - 6008, 6011, 6013, 6015, 6019, 6023, 6025, 6027, - 6029, 6031, 6036, 6042, 6045, 6047, 6051, 6055, - 6062, 6065, 6071, 6073, 6077, 6079, 6081, 6084, - 6088, 6089, 6091, 6097, 6103, 6109, 6111, 6115, - 6119, 6124, 6129, 6139, 6141, 6143, 6145, 6146, - 6148, 6149, 6155, 6157, 6159, 6159, 6166, 6170, - 6180, 6187, 6190, 6201, 6204, 6211, 6217, 6221, - 6227, 6244, 6259, 6268, 6274, 6284, 6288, 6292, - 6296, 6300, 6302, 6322, 6328, 6333, 6335, 6337, - 6340, 6342, 6344, 6348, 6404, 6460, 6493, 6498, - 6506, 6510, 6513, 6520, 6527, 6535, 6538, 6541, - 6547, 6550, 6556, 6559, 6562, 6568, 6571, 6577, - 6580, 6586, 6628, 6635, 6643, 6652, 6656, 6658, - 6660, 6662, 6665, 6670, 6672, 6675, 6683, 6686, - 6688, 6690, 6693, 6723, 6731, 6733, 6737, 6740, - 6745, 6750, 6762, 6774, 6782, 6787, 6797, 6800, - 6807, 6811, 6819, 6829, 6835, 6843, 6845, 6853, - 6856, 6858, 6861, 6863, 6870, 6872, 6880, 6881, - 6902, 6906, 6912, 6917, 6919, 6923, 6927, 6929, - 6933, 6935, 6938, 6942, 6944, 6951, 6953, 6957, - 6961, 6965, 6967, 6969, 6977, 6981, 6986, 6988, - 6990, 7014, 7017, 7018, 7020, 7022, 7026, 7029, - 7030, 7035, 7036, 7039, 7042, 7048, 7050, 7054, - 7056, 7067, 7076, 7081, 7083, 7087, 7089, 7091, - 7092, 7094, 7097, 7100, 7102, 7104, 7119, 7123, - 7125, 7127, 7132, 7136, 7142, 7144, 7146, 7150, - 7154, 7156, 7160, 7167, 7172, 7176, 7179, 7180, - 7184, 7191, 7198, 7199, 7200, 7202, 7211, 7213, - 7215, 7217, 7249, 7253, 7255, 7259, 7263, 7266, - 7270, 7274, 7277, 7279, 7285, 7298, 7300, 7303, - 7305, 7307, 7311, 7315, 7317, 7319, 7321, 7323, - 7328, 7334, 7337, 7339, 7343, 7347, 7354, 7357, - 7363, 7365, 7369, 7371, 7373, 7376, 7380, 7381, - 7383, 7389, 7395, 7401, 7403, 7407, 7411, 7416, - 7421, 7431, 7433, 7435, 7437, 7477, 7477, 7480, - 7484, 7489, 7491, 7499, 7501, 7503, 7505, 7507, - 7509, 7511, 7513, 7517, 7521, 7525, 7529, 7531, - 7532, 7538, 7540, 7542, 7544, 7551, 7552, 7554, - 7561, 7563, 7565, 7575, 7579, 7583, 7587, 7591, - 7595, 7599, 7603, 7609, 7619, 7627, 7632, 7635, - 7639, 7641, 7644, 7653, 7657, 7659, 7661, 7665, - 7665, 7695, 7715, 7735, 7756, 7779, 7799, 7819, - 7840, 7863, 7884, 7905, 7926, 7946, 7969, 7989, - 8010, 8031, 8052, 8073, 8093, 8113, 8133, -} - -var _graphclust_trans_keys []byte = []byte{ - 10, 0, 127, 176, 255, 131, 137, 191, - 145, 189, 135, 129, 130, 132, 133, 144, - 154, 176, 139, 159, 150, 156, 159, 164, - 167, 168, 170, 173, 145, 176, 255, 139, - 255, 166, 176, 189, 171, 179, 160, 161, - 163, 164, 165, 167, 169, 171, 173, 174, - 175, 176, 177, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, - 166, 170, 172, 178, 150, 153, 155, 163, - 165, 167, 169, 173, 153, 155, 147, 161, - 163, 255, 189, 132, 185, 144, 152, 161, - 164, 255, 188, 129, 131, 190, 255, 133, - 134, 137, 138, 142, 150, 152, 161, 164, - 189, 191, 255, 131, 134, 137, 138, 142, - 144, 146, 175, 178, 180, 182, 255, 134, - 138, 142, 161, 164, 185, 192, 255, 188, - 129, 131, 190, 191, 128, 132, 135, 136, - 139, 141, 150, 151, 162, 163, 130, 190, - 191, 151, 128, 130, 134, 136, 138, 141, - 128, 132, 190, 255, 133, 137, 142, 148, - 151, 161, 164, 255, 128, 132, 134, 136, - 138, 141, 149, 150, 162, 163, 128, 131, - 187, 188, 190, 255, 133, 137, 142, 150, - 152, 161, 164, 255, 130, 131, 138, 150, - 143, 148, 152, 159, 178, 179, 177, 179, - 186, 135, 142, 177, 179, 188, 136, 141, - 181, 183, 185, 152, 153, 190, 191, 177, - 191, 128, 132, 134, 135, 141, 151, 153, - 188, 134, 128, 129, 130, 141, 156, 157, - 158, 159, 160, 162, 164, 168, 169, 170, - 172, 173, 174, 175, 176, 179, 183, 173, - 183, 185, 190, 150, 153, 158, 160, 177, - 180, 130, 141, 157, 132, 134, 157, 159, - 146, 148, 178, 180, 146, 147, 178, 179, - 180, 255, 148, 156, 158, 255, 139, 141, - 169, 133, 134, 160, 171, 176, 187, 151, - 155, 160, 162, 191, 149, 158, 165, 188, - 176, 190, 128, 132, 180, 255, 133, 170, - 180, 255, 128, 130, 161, 173, 166, 179, - 164, 183, 173, 180, 144, 146, 148, 168, - 183, 185, 128, 185, 187, 191, 128, 131, - 179, 181, 183, 140, 141, 144, 176, 175, - 177, 191, 160, 191, 128, 130, 170, 175, - 153, 154, 153, 154, 155, 160, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, - 175, 175, 178, 180, 189, 158, 159, 176, - 177, 130, 134, 139, 163, 167, 128, 129, - 180, 255, 134, 159, 178, 190, 192, 255, - 166, 173, 135, 147, 128, 131, 179, 255, - 129, 164, 166, 255, 169, 182, 131, 188, - 140, 141, 176, 178, 180, 183, 184, 190, - 191, 129, 171, 175, 181, 182, 163, 170, - 172, 173, 172, 184, 190, 158, 128, 143, - 160, 175, 144, 145, 150, 155, 157, 158, - 159, 135, 139, 141, 168, 171, 180, 189, - 189, 160, 182, 186, 191, 129, 131, 133, - 134, 140, 143, 184, 186, 165, 166, 164, - 167, 134, 144, 128, 129, 130, 132, 133, - 134, 135, 136, 139, 140, 141, 144, 145, - 146, 147, 150, 151, 152, 153, 154, 156, - 160, 167, 168, 169, 170, 176, 178, 180, - 181, 182, 187, 128, 130, 184, 255, 135, - 190, 131, 175, 187, 255, 128, 130, 167, - 180, 179, 133, 134, 128, 130, 179, 255, - 129, 136, 141, 255, 190, 172, 183, 159, - 170, 128, 131, 187, 188, 190, 191, 151, - 128, 132, 135, 136, 139, 141, 162, 163, - 166, 172, 176, 180, 181, 191, 158, 128, - 134, 176, 255, 132, 255, 175, 181, 184, - 255, 129, 155, 158, 255, 129, 255, 171, - 183, 157, 171, 172, 186, 164, 145, 151, - 154, 160, 129, 138, 179, 185, 187, 190, - 135, 145, 155, 138, 153, 175, 182, 184, - 191, 146, 167, 169, 182, 186, 177, 182, - 188, 189, 191, 255, 134, 136, 255, 138, - 142, 144, 145, 147, 151, 179, 182, 171, - 172, 189, 190, 176, 180, 176, 182, 143, - 145, 255, 136, 142, 147, 255, 178, 157, - 158, 133, 134, 137, 168, 169, 170, 165, - 169, 173, 178, 187, 255, 131, 132, 140, - 169, 174, 255, 130, 132, 128, 182, 187, - 255, 173, 180, 182, 255, 132, 155, 159, - 161, 175, 128, 132, 139, 163, 165, 128, - 134, 136, 152, 155, 161, 163, 164, 166, - 170, 172, 175, 144, 150, 132, 138, 143, - 187, 191, 160, 128, 129, 132, 135, 133, - 134, 160, 255, 192, 255, 128, 191, 169, - 173, 174, 128, 159, 160, 191, 128, 255, - 176, 255, 131, 137, 191, 145, 189, 135, - 129, 130, 132, 133, 144, 154, 176, 139, - 159, 150, 156, 159, 164, 167, 168, 170, - 173, 145, 176, 255, 139, 255, 166, 176, - 189, 171, 179, 160, 161, 163, 164, 165, - 167, 169, 171, 173, 174, 175, 176, 177, - 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 166, 170, 172, - 178, 150, 153, 155, 163, 165, 167, 169, - 173, 153, 155, 147, 161, 163, 255, 189, - 132, 185, 144, 152, 161, 164, 255, 188, - 129, 131, 190, 255, 133, 134, 137, 138, - 142, 150, 152, 161, 164, 189, 191, 255, - 131, 134, 137, 138, 142, 144, 146, 175, - 178, 180, 182, 255, 134, 138, 142, 161, - 164, 185, 192, 255, 188, 129, 131, 190, - 191, 128, 132, 135, 136, 139, 141, 150, - 151, 162, 163, 130, 190, 191, 151, 128, - 130, 134, 136, 138, 141, 128, 132, 190, - 255, 133, 137, 142, 148, 151, 161, 164, - 255, 128, 132, 134, 136, 138, 141, 149, - 150, 162, 163, 128, 131, 187, 188, 190, - 255, 133, 137, 142, 150, 152, 161, 164, - 255, 130, 131, 138, 150, 143, 148, 152, - 159, 178, 179, 177, 179, 186, 135, 142, - 177, 179, 188, 136, 141, 181, 183, 185, - 152, 153, 190, 191, 177, 191, 128, 132, - 134, 135, 141, 151, 153, 188, 134, 128, - 129, 130, 141, 156, 157, 158, 159, 160, - 162, 164, 168, 169, 170, 172, 173, 174, - 175, 176, 179, 183, 173, 183, 185, 190, - 150, 153, 158, 160, 177, 180, 130, 141, - 157, 132, 134, 157, 159, 146, 148, 178, - 180, 146, 147, 178, 179, 180, 255, 148, - 156, 158, 255, 139, 141, 169, 133, 134, - 160, 171, 176, 187, 151, 155, 160, 162, - 191, 149, 158, 165, 188, 176, 190, 128, - 132, 180, 255, 133, 170, 180, 255, 128, - 130, 161, 173, 166, 179, 164, 183, 173, - 180, 144, 146, 148, 168, 183, 185, 128, - 185, 187, 191, 128, 131, 179, 181, 183, - 140, 141, 169, 174, 128, 129, 131, 132, - 134, 140, 142, 143, 147, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 164, 172, - 173, 179, 181, 183, 140, 141, 188, 137, - 144, 176, 162, 185, 148, 153, 169, 170, - 168, 154, 155, 136, 143, 169, 179, 184, - 186, 130, 182, 170, 171, 128, 187, 190, - 128, 133, 135, 146, 148, 255, 192, 255, - 128, 133, 144, 191, 128, 191, 148, 150, - 157, 161, 168, 128, 133, 136, 146, 179, - 180, 132, 135, 140, 142, 151, 147, 149, - 163, 167, 161, 176, 191, 149, 151, 180, - 181, 133, 135, 155, 156, 144, 149, 175, - 177, 191, 160, 191, 128, 130, 138, 189, - 170, 176, 153, 154, 151, 153, 153, 154, - 155, 160, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 175, 175, 178, 180, - 189, 158, 159, 176, 177, 130, 134, 139, - 163, 167, 128, 129, 180, 255, 134, 159, - 178, 190, 192, 255, 166, 173, 135, 147, - 128, 131, 179, 255, 129, 164, 166, 255, - 169, 182, 131, 188, 140, 141, 176, 178, - 180, 183, 184, 190, 191, 129, 171, 175, - 181, 182, 163, 170, 172, 173, 172, 184, - 190, 158, 128, 143, 160, 175, 144, 145, - 150, 155, 157, 158, 159, 135, 139, 141, - 168, 171, 180, 189, 189, 160, 182, 186, - 191, 129, 131, 133, 134, 140, 143, 184, - 186, 165, 166, 164, 167, 134, 144, 128, - 129, 130, 132, 133, 134, 135, 136, 139, - 140, 141, 144, 145, 146, 147, 150, 151, - 152, 153, 154, 156, 160, 167, 168, 169, - 170, 176, 178, 180, 181, 182, 187, 128, - 130, 184, 255, 135, 190, 131, 175, 187, - 255, 128, 130, 167, 180, 179, 133, 134, - 128, 130, 179, 255, 129, 136, 141, 255, - 190, 172, 183, 159, 170, 128, 131, 187, - 188, 190, 191, 151, 128, 132, 135, 136, - 139, 141, 162, 163, 166, 172, 176, 180, - 181, 191, 158, 128, 134, 176, 255, 132, - 255, 175, 181, 184, 255, 129, 155, 158, - 255, 129, 255, 171, 183, 157, 171, 172, - 186, 164, 145, 151, 154, 160, 129, 138, - 179, 185, 187, 190, 135, 145, 155, 138, - 153, 175, 182, 184, 191, 146, 167, 169, - 182, 186, 177, 182, 188, 189, 191, 255, - 134, 136, 255, 138, 142, 144, 145, 147, - 151, 179, 182, 171, 172, 189, 190, 176, - 180, 176, 182, 143, 145, 255, 136, 142, - 147, 255, 178, 157, 158, 133, 134, 137, - 168, 169, 170, 165, 169, 173, 178, 187, - 255, 131, 132, 140, 169, 174, 255, 130, - 132, 128, 182, 187, 255, 173, 180, 182, - 255, 132, 155, 159, 161, 175, 128, 132, - 139, 163, 165, 128, 134, 136, 152, 155, - 161, 163, 164, 166, 170, 172, 175, 144, - 150, 132, 138, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 141, 143, - 144, 146, 147, 148, 149, 150, 151, 153, - 155, 157, 159, 160, 161, 162, 163, 164, - 165, 169, 191, 128, 154, 166, 167, 168, - 170, 171, 190, 175, 141, 143, 172, 177, - 190, 191, 142, 145, 154, 173, 255, 166, - 255, 154, 175, 129, 143, 178, 186, 188, - 191, 137, 255, 128, 189, 134, 255, 144, - 255, 180, 191, 149, 191, 140, 143, 136, - 143, 154, 159, 136, 143, 174, 255, 140, - 186, 188, 191, 128, 133, 135, 191, 190, - 255, 160, 128, 129, 132, 135, 133, 134, - 160, 255, 128, 130, 170, 175, 144, 145, - 150, 155, 157, 158, 159, 143, 187, 191, - 156, 128, 133, 134, 191, 128, 255, 176, - 255, 131, 137, 191, 145, 189, 135, 129, - 130, 132, 133, 144, 154, 176, 139, 159, - 150, 156, 159, 164, 167, 168, 170, 173, - 145, 176, 255, 139, 255, 166, 176, 189, - 171, 179, 160, 161, 163, 164, 165, 167, - 169, 171, 173, 174, 175, 176, 177, 179, - 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 166, 170, 172, 178, - 150, 153, 155, 163, 165, 167, 169, 173, - 153, 155, 147, 161, 163, 255, 189, 132, - 185, 144, 152, 161, 164, 255, 188, 129, - 131, 190, 255, 133, 134, 137, 138, 142, - 150, 152, 161, 164, 189, 191, 255, 131, - 134, 137, 138, 142, 144, 146, 175, 178, - 180, 182, 255, 134, 138, 142, 161, 164, - 185, 192, 255, 188, 129, 131, 190, 191, - 128, 132, 135, 136, 139, 141, 150, 151, - 162, 163, 130, 190, 191, 151, 128, 130, - 134, 136, 138, 141, 128, 132, 190, 255, - 133, 137, 142, 148, 151, 161, 164, 255, - 128, 132, 134, 136, 138, 141, 149, 150, - 162, 163, 128, 131, 187, 188, 190, 255, - 133, 137, 142, 150, 152, 161, 164, 255, - 130, 131, 138, 150, 143, 148, 152, 159, - 178, 179, 177, 179, 186, 135, 142, 177, - 179, 188, 136, 141, 181, 183, 185, 152, - 153, 190, 191, 177, 191, 128, 132, 134, - 135, 141, 151, 153, 188, 134, 128, 129, - 130, 141, 156, 157, 158, 159, 160, 162, - 164, 168, 169, 170, 172, 173, 174, 175, - 176, 179, 183, 173, 183, 185, 190, 150, - 153, 158, 160, 177, 180, 130, 141, 157, - 132, 134, 157, 159, 146, 148, 178, 180, - 146, 147, 178, 179, 180, 255, 148, 156, - 158, 255, 139, 141, 169, 133, 134, 160, - 171, 176, 187, 151, 155, 160, 162, 191, - 149, 158, 165, 188, 176, 190, 128, 132, - 180, 255, 133, 170, 180, 255, 128, 130, - 161, 173, 166, 179, 164, 183, 173, 180, - 144, 146, 148, 168, 183, 185, 128, 185, - 187, 191, 128, 131, 179, 181, 183, 140, - 141, 144, 176, 175, 177, 191, 160, 191, - 128, 130, 170, 175, 153, 154, 153, 154, - 155, 160, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 175, 175, 178, 180, - 189, 158, 159, 176, 177, 130, 134, 139, - 163, 167, 128, 129, 180, 255, 134, 159, - 178, 190, 192, 255, 166, 173, 135, 147, - 128, 131, 179, 255, 129, 164, 166, 255, - 169, 182, 131, 188, 140, 141, 176, 178, - 180, 183, 184, 190, 191, 129, 171, 175, - 181, 182, 163, 170, 172, 173, 172, 184, - 190, 158, 128, 143, 160, 175, 144, 145, - 150, 155, 157, 158, 159, 135, 139, 141, - 168, 171, 180, 189, 189, 160, 182, 186, - 191, 129, 131, 133, 134, 140, 143, 184, - 186, 165, 166, 164, 167, 134, 144, 128, - 129, 130, 132, 133, 134, 135, 136, 139, - 140, 141, 144, 145, 146, 147, 150, 151, - 152, 153, 154, 156, 160, 167, 168, 169, - 170, 176, 178, 180, 181, 182, 187, 128, - 130, 184, 255, 135, 190, 131, 175, 187, - 255, 128, 130, 167, 180, 179, 133, 134, - 128, 130, 179, 255, 129, 136, 141, 255, - 190, 172, 183, 159, 170, 128, 131, 187, - 188, 190, 191, 151, 128, 132, 135, 136, - 139, 141, 162, 163, 166, 172, 176, 180, - 181, 191, 158, 128, 134, 176, 255, 132, - 255, 175, 181, 184, 255, 129, 155, 158, - 255, 129, 255, 171, 183, 157, 171, 172, - 186, 164, 145, 151, 154, 160, 129, 138, - 179, 185, 187, 190, 135, 145, 155, 138, - 153, 175, 182, 184, 191, 146, 167, 169, - 182, 186, 177, 182, 188, 189, 191, 255, - 134, 136, 255, 138, 142, 144, 145, 147, - 151, 179, 182, 171, 172, 189, 190, 176, - 180, 176, 182, 143, 145, 255, 136, 142, - 147, 255, 178, 157, 158, 133, 134, 137, - 168, 169, 170, 165, 169, 173, 178, 187, - 255, 131, 132, 140, 169, 174, 255, 130, - 132, 128, 182, 187, 255, 173, 180, 182, - 255, 132, 155, 159, 161, 175, 128, 132, - 139, 163, 165, 128, 134, 136, 152, 155, - 161, 163, 164, 166, 170, 172, 175, 144, - 150, 132, 138, 143, 187, 191, 160, 128, - 129, 132, 135, 133, 134, 160, 255, 192, - 255, 128, 191, 169, 174, 160, 172, 175, - 191, 128, 255, 176, 255, 131, 137, 191, - 145, 189, 135, 129, 130, 132, 133, 144, - 154, 176, 139, 159, 150, 156, 159, 164, - 167, 168, 170, 173, 145, 176, 255, 139, - 255, 166, 176, 189, 171, 179, 160, 161, - 163, 164, 165, 167, 169, 171, 173, 174, - 175, 176, 177, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, - 166, 170, 172, 178, 150, 153, 155, 163, - 165, 167, 169, 173, 153, 155, 147, 161, - 163, 255, 189, 132, 185, 144, 152, 161, - 164, 255, 188, 129, 131, 190, 255, 133, - 134, 137, 138, 142, 150, 152, 161, 164, - 189, 191, 255, 131, 134, 137, 138, 142, - 144, 146, 175, 178, 180, 182, 255, 134, - 138, 142, 161, 164, 185, 192, 255, 188, - 129, 131, 190, 191, 128, 132, 135, 136, - 139, 141, 150, 151, 162, 163, 130, 190, - 191, 151, 128, 130, 134, 136, 138, 141, - 128, 132, 190, 255, 133, 137, 142, 148, - 151, 161, 164, 255, 128, 132, 134, 136, - 138, 141, 149, 150, 162, 163, 128, 131, - 187, 188, 190, 255, 133, 137, 142, 150, - 152, 161, 164, 255, 130, 131, 138, 150, - 143, 148, 152, 159, 178, 179, 177, 179, - 186, 135, 142, 177, 179, 188, 136, 141, - 181, 183, 185, 152, 153, 190, 191, 177, - 191, 128, 132, 134, 135, 141, 151, 153, - 188, 134, 128, 129, 130, 141, 156, 157, - 158, 159, 160, 162, 164, 168, 169, 170, - 172, 173, 174, 175, 176, 179, 183, 173, - 183, 185, 190, 150, 153, 158, 160, 177, - 180, 130, 141, 157, 132, 134, 157, 159, - 146, 148, 178, 180, 146, 147, 178, 179, - 180, 255, 148, 156, 158, 255, 139, 141, - 169, 133, 134, 160, 171, 176, 187, 151, - 155, 160, 162, 191, 149, 158, 165, 188, - 176, 190, 128, 132, 180, 255, 133, 170, - 180, 255, 128, 130, 161, 173, 166, 179, - 164, 183, 173, 180, 144, 146, 148, 168, - 183, 185, 128, 185, 187, 191, 128, 131, - 179, 181, 183, 140, 141, 169, 174, 128, - 129, 131, 132, 134, 140, 142, 143, 147, - 150, 151, 152, 153, 154, 155, 156, 157, - 158, 164, 172, 173, 179, 181, 183, 140, - 141, 188, 137, 144, 176, 162, 185, 148, - 153, 169, 170, 168, 154, 155, 136, 143, - 169, 179, 184, 186, 130, 182, 170, 171, - 128, 187, 190, 128, 133, 135, 146, 148, - 255, 192, 255, 128, 133, 144, 191, 128, - 191, 148, 150, 157, 161, 168, 128, 133, - 136, 146, 179, 180, 132, 135, 140, 142, - 151, 147, 149, 163, 167, 161, 176, 191, - 149, 151, 180, 181, 133, 135, 155, 156, - 144, 149, 175, 177, 191, 160, 191, 128, - 130, 138, 189, 170, 176, 153, 154, 151, - 153, 153, 154, 155, 160, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 175, - 175, 178, 180, 189, 158, 159, 176, 177, - 130, 134, 139, 163, 167, 128, 129, 180, - 255, 134, 159, 178, 190, 192, 255, 166, - 173, 135, 147, 128, 131, 179, 255, 129, - 164, 166, 255, 169, 182, 131, 188, 140, - 141, 176, 178, 180, 183, 184, 190, 191, - 129, 171, 175, 181, 182, 163, 170, 172, - 173, 172, 184, 190, 158, 128, 143, 160, - 175, 144, 145, 150, 155, 157, 158, 159, - 135, 139, 141, 168, 171, 180, 189, 189, - 160, 182, 186, 191, 129, 131, 133, 134, - 140, 143, 184, 186, 165, 166, 164, 167, - 134, 144, 128, 129, 130, 132, 133, 134, - 135, 136, 139, 140, 141, 144, 145, 146, - 147, 150, 151, 152, 153, 154, 156, 160, - 167, 168, 169, 170, 176, 178, 180, 181, - 182, 187, 128, 130, 184, 255, 135, 190, - 131, 175, 187, 255, 128, 130, 167, 180, - 179, 133, 134, 128, 130, 179, 255, 129, - 136, 141, 255, 190, 172, 183, 159, 170, - 128, 131, 187, 188, 190, 191, 151, 128, - 132, 135, 136, 139, 141, 162, 163, 166, - 172, 176, 180, 181, 191, 158, 128, 134, - 176, 255, 132, 255, 175, 181, 184, 255, - 129, 155, 158, 255, 129, 255, 171, 183, - 157, 171, 172, 186, 164, 145, 151, 154, - 160, 129, 138, 179, 185, 187, 190, 135, - 145, 155, 138, 153, 175, 182, 184, 191, - 146, 167, 169, 182, 186, 177, 182, 188, - 189, 191, 255, 134, 136, 255, 138, 142, - 144, 145, 147, 151, 179, 182, 171, 172, - 189, 190, 176, 180, 176, 182, 143, 145, - 255, 136, 142, 147, 255, 178, 157, 158, - 133, 134, 137, 168, 169, 170, 165, 169, - 173, 178, 187, 255, 131, 132, 140, 169, - 174, 255, 130, 132, 128, 182, 187, 255, - 173, 180, 182, 255, 132, 155, 159, 161, - 175, 128, 132, 139, 163, 165, 128, 134, - 136, 152, 155, 161, 163, 164, 166, 170, - 172, 175, 144, 150, 132, 138, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, - 139, 141, 143, 144, 146, 147, 148, 149, - 150, 151, 153, 155, 157, 159, 160, 161, - 162, 163, 164, 165, 169, 191, 128, 154, - 166, 167, 168, 170, 171, 190, 175, 141, - 143, 172, 177, 190, 191, 142, 145, 154, - 173, 255, 166, 255, 154, 175, 129, 143, - 178, 186, 188, 191, 137, 255, 128, 189, - 134, 255, 144, 255, 180, 191, 149, 191, - 140, 143, 136, 143, 154, 159, 136, 143, - 174, 255, 140, 186, 188, 191, 128, 133, - 135, 191, 190, 255, 160, 128, 129, 132, - 135, 133, 134, 160, 255, 128, 130, 170, - 175, 144, 145, 150, 155, 157, 158, 159, - 143, 187, 191, 128, 133, 134, 155, 157, - 191, 157, 128, 191, 143, 128, 191, 163, - 181, 128, 191, 162, 128, 191, 142, 128, - 191, 132, 133, 134, 135, 160, 128, 191, - 128, 255, 128, 129, 130, 132, 133, 134, - 141, 156, 157, 158, 159, 160, 162, 164, - 168, 169, 170, 172, 173, 174, 175, 176, - 179, 183, 160, 255, 128, 129, 130, 133, - 134, 135, 141, 156, 157, 158, 159, 160, - 162, 164, 168, 169, 170, 172, 173, 174, - 175, 176, 179, 183, 160, 255, 168, 255, - 128, 129, 130, 134, 135, 141, 156, 157, - 158, 159, 160, 162, 164, 168, 169, 170, - 172, 173, 174, 175, 176, 179, 183, 168, - 255, 192, 255, 159, 139, 187, 158, 159, - 176, 255, 135, 138, 139, 187, 188, 255, - 168, 255, 153, 154, 155, 160, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, - 175, 177, 178, 179, 180, 181, 182, 184, - 185, 186, 187, 188, 189, 191, 176, 190, - 192, 255, 135, 147, 160, 188, 128, 156, - 184, 129, 255, 128, 129, 130, 133, 134, - 141, 156, 157, 158, 159, 160, 162, 164, - 168, 169, 170, 172, 173, 174, 175, 176, - 179, 183, 158, 159, 135, 255, 148, 176, - 140, 168, 132, 160, 188, 152, 180, 144, - 172, 136, 164, 192, 255, 129, 130, 131, - 132, 133, 134, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 150, - 151, 152, 153, 154, 155, 157, 158, 159, - 160, 161, 162, 164, 165, 166, 167, 168, - 169, 171, 172, 173, 174, 175, 176, 178, - 179, 180, 181, 182, 183, 185, 186, 187, - 188, 189, 190, 128, 191, 129, 130, 131, - 132, 133, 134, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 150, - 151, 152, 153, 154, 155, 157, 158, 159, - 160, 161, 162, 164, 165, 166, 167, 168, - 169, 171, 172, 173, 174, 175, 176, 178, - 179, 180, 181, 182, 183, 185, 186, 187, - 188, 189, 190, 128, 191, 129, 130, 131, - 132, 133, 134, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 150, - 151, 152, 153, 154, 155, 157, 158, 159, - 128, 156, 160, 255, 136, 164, 175, 176, - 255, 128, 141, 143, 191, 128, 129, 132, - 134, 140, 142, 143, 147, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 164, 172, - 173, 130, 191, 188, 128, 138, 140, 141, - 144, 167, 175, 191, 137, 128, 159, 176, - 191, 162, 185, 128, 191, 128, 147, 148, - 153, 154, 168, 169, 170, 171, 191, 168, - 128, 153, 154, 155, 156, 191, 136, 128, - 191, 143, 128, 168, 169, 179, 180, 183, - 184, 186, 187, 191, 130, 128, 191, 182, - 128, 169, 170, 171, 172, 191, 128, 191, - 129, 186, 187, 190, 134, 147, 128, 255, - 128, 133, 134, 143, 144, 191, 147, 149, - 157, 161, 168, 128, 133, 134, 135, 136, - 150, 151, 178, 179, 180, 181, 191, 132, - 135, 140, 142, 150, 128, 146, 147, 151, - 152, 162, 163, 167, 168, 191, 161, 176, - 191, 128, 148, 149, 151, 152, 190, 128, - 179, 180, 181, 182, 191, 128, 132, 133, - 135, 136, 154, 155, 156, 157, 191, 144, - 149, 128, 191, 128, 138, 129, 191, 176, - 189, 128, 191, 151, 153, 128, 191, 128, - 191, 165, 177, 178, 179, 180, 181, 182, - 184, 185, 186, 187, 188, 189, 191, 128, - 175, 176, 190, 192, 255, 128, 159, 160, - 188, 189, 191, 128, 156, 184, 129, 255, - 148, 176, 140, 168, 132, 160, 188, 152, - 180, 144, 172, 136, 164, 192, 255, 129, - 130, 131, 132, 133, 134, 136, 137, 138, - 139, 140, 141, 143, 144, 145, 146, 147, - 148, 150, 151, 152, 153, 154, 155, 157, - 158, 159, 160, 161, 162, 164, 165, 166, - 167, 168, 169, 171, 172, 173, 174, 175, - 176, 178, 179, 180, 181, 182, 183, 185, - 186, 187, 188, 189, 190, 128, 191, 129, - 130, 131, 132, 133, 134, 136, 137, 138, - 139, 140, 141, 143, 144, 145, 146, 147, - 148, 150, 151, 152, 153, 154, 155, 157, - 158, 159, 160, 161, 162, 164, 165, 166, - 167, 168, 169, 171, 172, 173, 174, 175, - 176, 178, 179, 180, 181, 182, 183, 185, - 186, 187, 188, 189, 190, 128, 191, 129, - 130, 131, 132, 133, 134, 136, 137, 138, - 139, 140, 141, 143, 144, 145, 146, 147, - 148, 150, 151, 152, 153, 154, 155, 157, - 158, 159, 128, 156, 160, 191, 192, 255, - 136, 164, 175, 176, 255, 135, 138, 139, - 187, 188, 191, 192, 255, 187, 191, 128, - 190, 128, 190, 188, 128, 175, 190, 191, - 145, 147, 155, 157, 159, 128, 191, 130, - 131, 135, 168, 170, 181, 128, 191, 189, - 128, 191, 141, 128, 191, 128, 129, 130, - 131, 132, 191, 186, 128, 191, 128, 131, - 132, 137, 138, 191, 134, 128, 191, 144, - 128, 191, 128, 175, 185, 191, 178, 128, - 191, 128, 159, 164, 191, 133, 128, 191, - 128, 178, 187, 191, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 141, - 143, 144, 146, 147, 148, 149, 150, 151, - 153, 156, 157, 158, 159, 160, 161, 162, - 164, 165, 169, 191, 128, 154, 155, 163, - 166, 167, 168, 170, 171, 190, 175, 128, - 140, 141, 143, 144, 191, 128, 171, 172, - 177, 178, 189, 190, 191, 142, 128, 144, - 145, 154, 155, 172, 173, 255, 166, 191, - 192, 255, 144, 145, 150, 155, 157, 158, - 159, 135, 143, 166, 191, 128, 154, 175, - 187, 129, 143, 144, 177, 178, 191, 128, - 136, 137, 255, 187, 191, 192, 255, 128, - 189, 190, 191, 128, 133, 134, 255, 144, - 191, 192, 255, 128, 179, 180, 191, 128, - 148, 149, 191, 128, 139, 140, 143, 144, - 191, 128, 135, 136, 143, 144, 153, 154, - 159, 160, 191, 128, 135, 136, 143, 144, - 173, 174, 255, 187, 128, 139, 140, 191, - 134, 128, 191, 190, 191, 192, 255, 128, - 191, 160, 128, 191, 128, 129, 135, 132, - 134, 128, 175, 157, 128, 191, 143, 128, - 191, 163, 181, 128, 191, 162, 128, 191, - 142, 128, 191, 132, 133, 134, 135, 160, - 128, 191, 128, 255, 0, 127, 176, 255, - 131, 137, 191, 145, 189, 135, 129, 130, - 132, 133, 144, 154, 176, 139, 159, 150, - 156, 159, 164, 167, 168, 170, 173, 145, - 176, 255, 139, 255, 166, 176, 189, 171, - 179, 160, 161, 163, 164, 165, 167, 169, - 171, 173, 174, 175, 176, 177, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 166, 170, 172, 178, 150, - 153, 155, 163, 165, 167, 169, 173, 153, - 155, 147, 161, 163, 255, 189, 132, 185, - 144, 152, 161, 164, 255, 188, 129, 131, - 190, 255, 133, 134, 137, 138, 142, 150, - 152, 161, 164, 189, 191, 255, 131, 134, - 137, 138, 142, 144, 146, 175, 178, 180, - 182, 255, 134, 138, 142, 161, 164, 185, - 192, 255, 188, 129, 131, 190, 191, 128, - 132, 135, 136, 139, 141, 150, 151, 162, - 163, 130, 190, 191, 151, 128, 130, 134, - 136, 138, 141, 128, 132, 190, 255, 133, - 137, 142, 148, 151, 161, 164, 255, 128, - 132, 134, 136, 138, 141, 149, 150, 162, - 163, 128, 131, 187, 188, 190, 255, 133, - 137, 142, 150, 152, 161, 164, 255, 130, - 131, 138, 150, 143, 148, 152, 159, 178, - 179, 177, 179, 186, 135, 142, 177, 179, - 188, 136, 141, 181, 183, 185, 152, 153, - 190, 191, 177, 191, 128, 132, 134, 135, - 141, 151, 153, 188, 134, 128, 129, 130, - 141, 156, 157, 158, 159, 160, 162, 164, - 168, 169, 170, 172, 173, 174, 175, 176, - 179, 183, 173, 183, 185, 190, 150, 153, - 158, 160, 177, 180, 130, 141, 157, 132, - 134, 157, 159, 146, 148, 178, 180, 146, - 147, 178, 179, 180, 255, 148, 156, 158, - 255, 139, 141, 169, 133, 134, 160, 171, - 176, 187, 151, 155, 160, 162, 191, 149, - 158, 165, 188, 176, 190, 128, 132, 180, - 255, 133, 170, 180, 255, 128, 130, 161, - 173, 166, 179, 164, 183, 173, 180, 144, - 146, 148, 168, 183, 185, 128, 185, 187, - 191, 128, 131, 179, 181, 183, 140, 141, - 169, 174, 128, 129, 131, 132, 134, 140, - 142, 143, 147, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 164, 172, 173, 179, - 181, 183, 140, 141, 188, 137, 144, 176, - 162, 185, 148, 153, 169, 170, 168, 154, - 155, 136, 143, 169, 179, 184, 186, 130, - 182, 170, 171, 128, 187, 190, 128, 133, - 135, 146, 148, 255, 192, 255, 128, 133, - 144, 191, 128, 191, 148, 150, 157, 161, - 168, 128, 133, 136, 146, 179, 180, 132, - 135, 140, 142, 151, 147, 149, 163, 167, - 161, 176, 191, 149, 151, 180, 181, 133, - 135, 155, 156, 144, 149, 175, 177, 191, - 160, 191, 128, 130, 138, 189, 170, 176, - 153, 154, 151, 153, 153, 154, 155, 160, - 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 175, 175, 178, 180, 189, 158, - 159, 176, 177, 130, 134, 139, 163, 167, - 128, 129, 180, 255, 134, 159, 178, 190, - 192, 255, 166, 173, 135, 147, 128, 131, - 179, 255, 129, 164, 166, 255, 169, 182, - 131, 188, 140, 141, 176, 178, 180, 183, - 184, 190, 191, 129, 171, 175, 181, 182, - 163, 170, 172, 173, 172, 184, 190, 158, - 128, 143, 160, 175, 144, 145, 150, 155, - 157, 158, 159, 135, 139, 141, 168, 171, - 180, 189, 189, 160, 182, 186, 191, 129, - 131, 133, 134, 140, 143, 184, 186, 165, - 166, 164, 167, 134, 144, 128, 129, 130, - 132, 133, 134, 135, 136, 139, 140, 141, - 144, 145, 146, 147, 150, 151, 152, 153, - 154, 156, 160, 167, 168, 169, 170, 176, - 178, 180, 181, 182, 187, 128, 130, 184, - 255, 135, 190, 131, 175, 187, 255, 128, - 130, 167, 180, 179, 133, 134, 128, 130, - 179, 255, 129, 136, 141, 255, 190, 172, - 183, 159, 170, 128, 131, 187, 188, 190, - 191, 151, 128, 132, 135, 136, 139, 141, - 162, 163, 166, 172, 176, 180, 181, 191, - 158, 128, 134, 176, 255, 132, 255, 175, - 181, 184, 255, 129, 155, 158, 255, 129, - 255, 171, 183, 157, 171, 172, 186, 164, - 145, 151, 154, 160, 129, 138, 179, 185, - 187, 190, 135, 145, 155, 138, 153, 175, - 182, 184, 191, 146, 167, 169, 182, 186, - 177, 182, 188, 189, 191, 255, 134, 136, - 255, 138, 142, 144, 145, 147, 151, 179, - 182, 171, 172, 189, 190, 176, 180, 176, - 182, 143, 145, 255, 136, 142, 147, 255, - 178, 157, 158, 133, 134, 137, 168, 169, - 170, 165, 169, 173, 178, 187, 255, 131, - 132, 140, 169, 174, 255, 130, 132, 128, - 182, 187, 255, 173, 180, 182, 255, 132, - 155, 159, 161, 175, 128, 132, 139, 163, - 165, 128, 134, 136, 152, 155, 161, 163, - 164, 166, 170, 172, 175, 144, 150, 132, - 138, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 141, 143, 144, 146, - 147, 148, 149, 150, 151, 153, 155, 157, - 159, 160, 161, 162, 163, 164, 165, 169, - 191, 128, 154, 166, 167, 168, 170, 171, - 190, 175, 141, 143, 172, 177, 190, 191, - 142, 145, 154, 173, 255, 166, 255, 154, - 175, 129, 143, 178, 186, 188, 191, 137, - 255, 128, 189, 134, 255, 144, 255, 180, - 191, 149, 191, 140, 143, 136, 143, 154, - 159, 136, 143, 174, 255, 140, 186, 188, - 191, 128, 133, 135, 191, 190, 255, 160, - 128, 129, 132, 135, 133, 134, 160, 255, - 128, 130, 170, 175, 144, 145, 150, 155, - 157, 158, 159, 143, 187, 191, 128, 129, - 130, 132, 133, 134, 141, 156, 157, 158, - 159, 160, 162, 164, 168, 169, 170, 172, - 173, 174, 175, 176, 179, 183, 160, 255, - 128, 129, 130, 133, 134, 135, 141, 156, - 157, 158, 159, 160, 162, 164, 168, 169, - 170, 172, 173, 174, 175, 176, 179, 183, - 160, 255, 168, 255, 128, 129, 130, 134, - 135, 141, 156, 157, 158, 159, 160, 162, - 164, 168, 169, 170, 172, 173, 174, 175, - 176, 179, 183, 168, 255, 192, 255, 159, - 139, 187, 158, 159, 176, 255, 135, 138, - 139, 187, 188, 255, 168, 255, 153, 154, - 155, 160, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 175, 177, 178, 179, - 180, 181, 182, 184, 185, 186, 187, 188, - 189, 191, 176, 190, 192, 255, 135, 147, - 160, 188, 128, 156, 184, 129, 255, 128, - 129, 130, 133, 134, 141, 156, 157, 158, - 159, 160, 162, 164, 168, 169, 170, 172, - 173, 174, 175, 176, 179, 183, 158, 159, - 135, 255, 148, 176, 140, 168, 132, 160, - 188, 152, 180, 144, 172, 136, 164, 192, - 255, 129, 130, 131, 132, 133, 134, 136, - 137, 138, 139, 140, 141, 143, 144, 145, - 146, 147, 148, 150, 151, 152, 153, 154, - 155, 157, 158, 159, 160, 161, 162, 164, - 165, 166, 167, 168, 169, 171, 172, 173, - 174, 175, 176, 178, 179, 180, 181, 182, - 183, 185, 186, 187, 188, 189, 190, 128, - 191, 129, 130, 131, 132, 133, 134, 136, - 137, 138, 139, 140, 141, 143, 144, 145, - 146, 147, 148, 150, 151, 152, 153, 154, - 155, 157, 158, 159, 160, 161, 162, 164, - 165, 166, 167, 168, 169, 171, 172, 173, - 174, 175, 176, 178, 179, 180, 181, 182, - 183, 185, 186, 187, 188, 189, 190, 128, - 191, 129, 130, 131, 132, 133, 134, 136, - 137, 138, 139, 140, 141, 143, 144, 145, - 146, 147, 148, 150, 151, 152, 153, 154, - 155, 157, 158, 159, 128, 156, 160, 255, - 136, 164, 175, 176, 255, 142, 128, 191, - 128, 129, 132, 134, 140, 142, 143, 147, - 150, 151, 152, 153, 154, 155, 156, 157, - 158, 164, 172, 173, 130, 191, 139, 141, - 188, 128, 140, 142, 143, 144, 167, 168, - 174, 175, 191, 128, 255, 176, 255, 131, - 137, 191, 145, 189, 135, 129, 130, 132, - 133, 144, 154, 176, 139, 159, 150, 156, - 159, 164, 167, 168, 170, 173, 145, 176, - 255, 139, 255, 166, 176, 189, 171, 179, - 160, 161, 163, 164, 165, 167, 169, 171, - 173, 174, 175, 176, 177, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 166, 170, 172, 178, 150, 153, - 155, 163, 165, 167, 169, 173, 153, 155, - 147, 161, 163, 255, 189, 132, 185, 144, - 152, 161, 164, 255, 188, 129, 131, 190, - 255, 133, 134, 137, 138, 142, 150, 152, - 161, 164, 189, 191, 255, 131, 134, 137, - 138, 142, 144, 146, 175, 178, 180, 182, - 255, 134, 138, 142, 161, 164, 185, 192, - 255, 188, 129, 131, 190, 191, 128, 132, - 135, 136, 139, 141, 150, 151, 162, 163, - 130, 190, 191, 151, 128, 130, 134, 136, - 138, 141, 128, 132, 190, 255, 133, 137, - 142, 148, 151, 161, 164, 255, 128, 132, - 134, 136, 138, 141, 149, 150, 162, 163, - 128, 131, 187, 188, 190, 255, 133, 137, - 142, 150, 152, 161, 164, 255, 130, 131, - 138, 150, 143, 148, 152, 159, 178, 179, - 177, 179, 186, 135, 142, 177, 179, 188, - 136, 141, 181, 183, 185, 152, 153, 190, - 191, 177, 191, 128, 132, 134, 135, 141, - 151, 153, 188, 134, 128, 129, 130, 141, - 156, 157, 158, 159, 160, 162, 164, 168, - 169, 170, 172, 173, 174, 175, 176, 179, - 183, 173, 183, 185, 190, 150, 153, 158, - 160, 177, 180, 130, 141, 157, 132, 134, - 157, 159, 146, 148, 178, 180, 146, 147, - 178, 179, 180, 255, 148, 156, 158, 255, - 139, 141, 169, 133, 134, 160, 171, 176, - 187, 151, 155, 160, 162, 191, 149, 158, - 165, 188, 176, 190, 128, 132, 180, 255, - 133, 170, 180, 255, 128, 130, 161, 173, - 166, 179, 164, 183, 173, 180, 144, 146, - 148, 168, 183, 185, 128, 185, 187, 191, - 128, 131, 179, 181, 183, 140, 141, 144, - 176, 175, 177, 191, 160, 191, 128, 130, - 170, 175, 153, 154, 153, 154, 155, 160, - 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 175, 175, 178, 180, 189, 158, - 159, 176, 177, 130, 134, 139, 163, 167, - 128, 129, 180, 255, 134, 159, 178, 190, - 192, 255, 166, 173, 135, 147, 128, 131, - 179, 255, 129, 164, 166, 255, 169, 182, - 131, 188, 140, 141, 176, 178, 180, 183, - 184, 190, 191, 129, 171, 175, 181, 182, - 163, 170, 172, 173, 172, 184, 190, 158, - 128, 143, 160, 175, 144, 145, 150, 155, - 157, 158, 159, 135, 139, 141, 168, 171, - 180, 189, 189, 160, 182, 186, 191, 129, - 131, 133, 134, 140, 143, 184, 186, 165, - 166, 164, 167, 134, 144, 128, 129, 130, - 132, 133, 134, 135, 136, 139, 140, 141, - 144, 145, 146, 147, 150, 151, 152, 153, - 154, 156, 160, 167, 168, 169, 170, 176, - 178, 180, 181, 182, 187, 128, 130, 184, - 255, 135, 190, 131, 175, 187, 255, 128, - 130, 167, 180, 179, 133, 134, 128, 130, - 179, 255, 129, 136, 141, 255, 190, 172, - 183, 159, 170, 128, 131, 187, 188, 190, - 191, 151, 128, 132, 135, 136, 139, 141, - 162, 163, 166, 172, 176, 180, 181, 191, - 158, 128, 134, 176, 255, 132, 255, 175, - 181, 184, 255, 129, 155, 158, 255, 129, - 255, 171, 183, 157, 171, 172, 186, 164, - 145, 151, 154, 160, 129, 138, 179, 185, - 187, 190, 135, 145, 155, 138, 153, 175, - 182, 184, 191, 146, 167, 169, 182, 186, - 177, 182, 188, 189, 191, 255, 134, 136, - 255, 138, 142, 144, 145, 147, 151, 179, - 182, 171, 172, 189, 190, 176, 180, 176, - 182, 143, 145, 255, 136, 142, 147, 255, - 178, 157, 158, 133, 134, 137, 168, 169, - 170, 165, 169, 173, 178, 187, 255, 131, - 132, 140, 169, 174, 255, 130, 132, 128, - 182, 187, 255, 173, 180, 182, 255, 132, - 155, 159, 161, 175, 128, 132, 139, 163, - 165, 128, 134, 136, 152, 155, 161, 163, - 164, 166, 170, 172, 175, 144, 150, 132, - 138, 143, 187, 191, 160, 128, 129, 132, - 135, 133, 134, 160, 255, 192, 255, 137, - 128, 159, 160, 175, 176, 191, 162, 185, - 128, 191, 128, 147, 148, 153, 154, 168, - 169, 170, 171, 191, 168, 128, 153, 154, - 155, 156, 191, 136, 128, 191, 143, 128, - 168, 169, 179, 180, 183, 184, 186, 187, - 191, 130, 128, 191, 182, 128, 169, 170, - 171, 172, 191, 128, 191, 129, 186, 187, - 190, 134, 147, 128, 255, 128, 133, 134, - 143, 144, 191, 147, 149, 157, 161, 168, - 128, 133, 134, 135, 136, 150, 151, 178, - 179, 180, 181, 191, 132, 135, 140, 142, - 150, 128, 146, 147, 151, 152, 162, 163, - 167, 168, 191, 161, 176, 191, 128, 148, - 149, 151, 152, 190, 128, 179, 180, 181, - 182, 191, 128, 132, 133, 135, 136, 154, - 155, 156, 157, 191, 144, 149, 128, 191, - 128, 138, 129, 191, 176, 189, 128, 191, - 151, 153, 128, 191, 128, 191, 165, 177, - 178, 179, 180, 181, 182, 184, 185, 186, - 187, 188, 189, 191, 128, 175, 176, 190, - 192, 255, 128, 159, 160, 188, 189, 191, - 128, 156, 184, 129, 255, 148, 176, 140, - 168, 132, 160, 188, 152, 180, 144, 172, - 136, 164, 192, 255, 129, 130, 131, 132, - 133, 134, 136, 137, 138, 139, 140, 141, - 143, 144, 145, 146, 147, 148, 150, 151, - 152, 153, 154, 155, 157, 158, 159, 160, - 161, 162, 164, 165, 166, 167, 168, 169, - 171, 172, 173, 174, 175, 176, 178, 179, - 180, 181, 182, 183, 185, 186, 187, 188, - 189, 190, 128, 191, 129, 130, 131, 132, - 133, 134, 136, 137, 138, 139, 140, 141, - 143, 144, 145, 146, 147, 148, 150, 151, - 152, 153, 154, 155, 157, 158, 159, 160, - 161, 162, 164, 165, 166, 167, 168, 169, - 171, 172, 173, 174, 175, 176, 178, 179, - 180, 181, 182, 183, 185, 186, 187, 188, - 189, 190, 128, 191, 129, 130, 131, 132, - 133, 134, 136, 137, 138, 139, 140, 141, - 143, 144, 145, 146, 147, 148, 150, 151, - 152, 153, 154, 155, 157, 158, 159, 128, - 156, 160, 191, 192, 255, 136, 164, 175, - 176, 255, 135, 138, 139, 187, 188, 191, - 192, 255, 187, 191, 128, 190, 191, 128, - 190, 188, 128, 175, 176, 189, 190, 191, - 145, 147, 155, 157, 159, 128, 191, 130, - 131, 135, 168, 170, 181, 128, 191, 189, - 128, 191, 141, 128, 191, 128, 129, 130, - 131, 132, 191, 186, 128, 191, 128, 131, - 132, 137, 138, 191, 134, 128, 191, 144, - 128, 191, 128, 175, 176, 184, 185, 191, - 178, 128, 191, 128, 159, 160, 163, 164, - 191, 133, 128, 191, 128, 178, 179, 186, - 187, 191, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 141, 143, 144, - 146, 147, 148, 149, 150, 151, 153, 156, - 157, 158, 159, 160, 161, 162, 164, 165, - 169, 191, 128, 154, 155, 163, 166, 167, - 168, 170, 171, 190, 175, 128, 140, 141, - 143, 144, 191, 128, 171, 172, 177, 178, - 189, 190, 191, 142, 128, 144, 145, 154, - 155, 172, 173, 255, 166, 191, 192, 255, - 0, 127, 176, 255, 131, 137, 191, 145, - 189, 135, 129, 130, 132, 133, 144, 154, - 176, 139, 159, 150, 156, 159, 164, 167, - 168, 170, 173, 145, 176, 255, 139, 255, - 166, 176, 189, 171, 179, 160, 161, 163, - 164, 165, 167, 169, 171, 173, 174, 175, - 176, 177, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 166, - 170, 172, 178, 150, 153, 155, 163, 165, - 167, 169, 173, 153, 155, 147, 161, 163, - 255, 189, 132, 185, 144, 152, 161, 164, - 255, 188, 129, 131, 190, 255, 133, 134, - 137, 138, 142, 150, 152, 161, 164, 189, - 191, 255, 131, 134, 137, 138, 142, 144, - 146, 175, 178, 180, 182, 255, 134, 138, - 142, 161, 164, 185, 192, 255, 188, 129, - 131, 190, 191, 128, 132, 135, 136, 139, - 141, 150, 151, 162, 163, 130, 190, 191, - 151, 128, 130, 134, 136, 138, 141, 128, - 132, 190, 255, 133, 137, 142, 148, 151, - 161, 164, 255, 128, 132, 134, 136, 138, - 141, 149, 150, 162, 163, 128, 131, 187, - 188, 190, 255, 133, 137, 142, 150, 152, - 161, 164, 255, 130, 131, 138, 150, 143, - 148, 152, 159, 178, 179, 177, 179, 186, - 135, 142, 177, 179, 188, 136, 141, 181, - 183, 185, 152, 153, 190, 191, 177, 191, - 128, 132, 134, 135, 141, 151, 153, 188, - 134, 128, 129, 130, 141, 156, 157, 158, - 159, 160, 162, 164, 168, 169, 170, 172, - 173, 174, 175, 176, 179, 183, 173, 183, - 185, 190, 150, 153, 158, 160, 177, 180, - 130, 141, 157, 132, 134, 157, 159, 146, - 148, 178, 180, 146, 147, 178, 179, 180, - 255, 148, 156, 158, 255, 139, 141, 169, - 133, 134, 160, 171, 176, 187, 151, 155, - 160, 162, 191, 149, 158, 165, 188, 176, - 190, 128, 132, 180, 255, 133, 170, 180, - 255, 128, 130, 161, 173, 166, 179, 164, - 183, 173, 180, 144, 146, 148, 168, 183, - 185, 128, 185, 187, 191, 128, 131, 179, - 181, 183, 140, 141, 169, 174, 128, 129, - 131, 132, 134, 140, 142, 143, 147, 150, - 151, 152, 153, 154, 155, 156, 157, 158, - 164, 172, 173, 179, 181, 183, 140, 141, - 188, 137, 144, 176, 162, 185, 148, 153, - 169, 170, 168, 154, 155, 136, 143, 169, - 179, 184, 186, 130, 182, 170, 171, 128, - 187, 190, 128, 133, 135, 146, 148, 255, - 192, 255, 128, 133, 144, 191, 128, 191, - 148, 150, 157, 161, 168, 128, 133, 136, - 146, 179, 180, 132, 135, 140, 142, 151, - 147, 149, 163, 167, 161, 176, 191, 149, - 151, 180, 181, 133, 135, 155, 156, 144, - 149, 175, 177, 191, 160, 191, 128, 130, - 138, 189, 170, 176, 153, 154, 151, 153, - 153, 154, 155, 160, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 175, 175, - 178, 180, 189, 158, 159, 176, 177, 130, - 134, 139, 163, 167, 128, 129, 180, 255, - 134, 159, 178, 190, 192, 255, 166, 173, - 135, 147, 128, 131, 179, 255, 129, 164, - 166, 255, 169, 182, 131, 188, 140, 141, - 176, 178, 180, 183, 184, 190, 191, 129, - 171, 175, 181, 182, 163, 170, 172, 173, - 172, 184, 190, 158, 128, 143, 160, 175, - 144, 145, 150, 155, 157, 158, 159, 135, - 139, 141, 168, 171, 180, 189, 189, 160, - 182, 186, 191, 129, 131, 133, 134, 140, - 143, 184, 186, 165, 166, 164, 167, 134, - 144, 128, 129, 130, 132, 133, 134, 135, - 136, 139, 140, 141, 144, 145, 146, 147, - 150, 151, 152, 153, 154, 156, 160, 167, - 168, 169, 170, 176, 178, 180, 181, 182, - 187, 128, 130, 184, 255, 135, 190, 131, - 175, 187, 255, 128, 130, 167, 180, 179, - 133, 134, 128, 130, 179, 255, 129, 136, - 141, 255, 190, 172, 183, 159, 170, 128, - 131, 187, 188, 190, 191, 151, 128, 132, - 135, 136, 139, 141, 162, 163, 166, 172, - 176, 180, 181, 191, 158, 128, 134, 176, - 255, 132, 255, 175, 181, 184, 255, 129, - 155, 158, 255, 129, 255, 171, 183, 157, - 171, 172, 186, 164, 145, 151, 154, 160, - 129, 138, 179, 185, 187, 190, 135, 145, - 155, 138, 153, 175, 182, 184, 191, 146, - 167, 169, 182, 186, 177, 182, 188, 189, - 191, 255, 134, 136, 255, 138, 142, 144, - 145, 147, 151, 179, 182, 171, 172, 189, - 190, 176, 180, 176, 182, 143, 145, 255, - 136, 142, 147, 255, 178, 157, 158, 133, - 134, 137, 168, 169, 170, 165, 169, 173, - 178, 187, 255, 131, 132, 140, 169, 174, - 255, 130, 132, 128, 182, 187, 255, 173, - 180, 182, 255, 132, 155, 159, 161, 175, - 128, 132, 139, 163, 165, 128, 134, 136, - 152, 155, 161, 163, 164, 166, 170, 172, - 175, 144, 150, 132, 138, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, - 141, 143, 144, 146, 147, 148, 149, 150, - 151, 153, 155, 157, 159, 160, 161, 162, - 163, 164, 165, 169, 191, 128, 154, 166, - 167, 168, 170, 171, 190, 175, 141, 143, - 172, 177, 190, 191, 142, 145, 154, 173, - 255, 166, 255, 154, 175, 129, 143, 178, - 186, 188, 191, 137, 255, 128, 189, 134, - 255, 144, 255, 180, 191, 149, 191, 140, - 143, 136, 143, 154, 159, 136, 143, 174, - 255, 140, 186, 188, 191, 128, 133, 135, - 191, 190, 255, 160, 128, 129, 132, 135, - 133, 134, 160, 255, 128, 130, 170, 175, - 144, 145, 150, 155, 157, 158, 159, 143, - 187, 191, 144, 145, 150, 155, 157, 158, - 159, 135, 143, 166, 191, 128, 154, 175, - 187, 129, 143, 144, 177, 178, 191, 128, - 136, 137, 255, 187, 191, 192, 255, 128, - 189, 190, 191, 128, 133, 134, 255, 144, - 191, 192, 255, 128, 179, 180, 191, 128, - 148, 149, 191, 128, 139, 140, 143, 144, - 191, 128, 135, 136, 143, 144, 153, 154, - 159, 160, 191, 128, 135, 136, 143, 144, - 173, 174, 255, 187, 128, 139, 140, 191, - 134, 128, 191, 190, 191, 192, 255, 128, - 191, 160, 128, 191, 128, 130, 131, 135, - 191, 129, 134, 136, 190, 128, 159, 160, - 191, 0, 127, 192, 255, 128, 175, 176, - 255, 10, 13, 127, 194, 216, 219, 220, - 224, 225, 226, 227, 234, 235, 236, 237, - 239, 240, 243, 0, 31, 128, 191, 192, - 223, 228, 238, 241, 247, 248, 255, 204, - 205, 210, 214, 215, 216, 217, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 234, - 239, 240, 243, 204, 205, 210, 214, 215, - 216, 217, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 234, 239, 240, 243, 194, - 204, 205, 210, 214, 215, 216, 217, 219, - 220, 221, 222, 223, 224, 225, 226, 227, - 234, 239, 240, 243, 194, 216, 219, 220, - 224, 225, 226, 227, 234, 235, 236, 237, - 239, 240, 243, 32, 126, 192, 223, 228, - 238, 241, 247, 204, 205, 210, 214, 215, - 216, 217, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 234, 239, 240, 243, 204, - 205, 210, 214, 215, 216, 217, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 234, - 239, 240, 243, 194, 204, 205, 210, 214, - 215, 216, 217, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 234, 239, 240, 243, - 204, 205, 210, 214, 215, 216, 217, 219, - 220, 221, 222, 223, 224, 225, 226, 227, - 234, 235, 236, 237, 239, 240, 243, 204, - 205, 210, 214, 215, 216, 217, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 234, - 237, 239, 240, 243, 204, 205, 210, 214, - 215, 216, 217, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 234, 237, 239, 240, - 243, 204, 205, 210, 214, 215, 216, 217, - 219, 220, 221, 222, 223, 224, 225, 226, - 227, 234, 237, 239, 240, 243, 204, 205, - 210, 214, 215, 216, 217, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 234, 239, - 240, 243, 204, 205, 210, 214, 215, 216, - 217, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 234, 235, 236, 237, 239, 240, - 243, 204, 205, 210, 214, 215, 216, 217, - 219, 220, 221, 222, 223, 224, 225, 226, - 227, 234, 239, 240, 243, 194, 204, 205, - 210, 214, 215, 216, 217, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 234, 239, - 240, 243, 204, 205, 210, 214, 215, 216, - 217, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 234, 237, 239, 240, 243, 204, - 205, 210, 214, 215, 216, 217, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 234, - 237, 239, 240, 243, 204, 205, 210, 214, - 215, 216, 217, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 234, 237, 239, 240, - 243, 204, 205, 210, 214, 215, 216, 217, - 219, 220, 221, 222, 223, 224, 225, 226, - 227, 234, 239, 240, 243, 204, 205, 210, - 214, 215, 216, 217, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 234, 239, 240, - 243, 204, 205, 210, 214, 215, 216, 217, - 219, 220, 221, 222, 223, 224, 225, 226, - 227, 234, 239, 240, 243, 194, 204, 205, - 210, 214, 215, 216, 217, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 234, 239, - 240, 243, -} - -var _graphclust_single_lengths []byte = []byte{ - 0, 1, 0, 0, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 1, 26, 0, - 0, 0, 1, 1, 1, 0, 0, 2, - 1, 0, 1, 1, 0, 2, 0, 0, - 2, 0, 2, 1, 0, 1, 0, 3, - 0, 0, 1, 21, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 1, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 2, - 0, 5, 0, 0, 0, 1, 0, 2, - 0, 0, 15, 0, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 0, 2, 1, - 1, 0, 3, 1, 0, 7, 7, 1, - 1, 0, 1, 0, 0, 0, 32, 0, - 0, 0, 0, 1, 0, 0, 1, 0, - 0, 1, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 1, 1, 0, 0, 4, 0, - 0, 1, 0, 1, 0, 6, 0, 0, - 0, 0, 0, 1, 5, 0, 0, 0, - 0, 1, 0, 1, 4, 0, 0, 0, - 0, 3, 0, 0, 0, 1, 1, 0, - 1, 0, 1, 0, 0, 1, 26, 0, - 0, 0, 1, 1, 1, 0, 0, 2, - 1, 0, 1, 1, 0, 2, 0, 0, - 2, 0, 2, 1, 0, 1, 0, 3, - 0, 0, 1, 21, 0, 0, 3, 0, - 0, 0, 0, 0, 0, 1, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 2, - 0, 5, 2, 2, 24, 3, 1, 0, - 2, 0, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 5, 5, 3, 0, - 0, 2, 0, 1, 0, 3, 1, 0, - 2, 15, 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 2, 1, 1, - 0, 3, 1, 0, 7, 7, 1, 1, - 0, 1, 0, 0, 0, 32, 0, 0, - 0, 0, 1, 0, 0, 1, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 1, 0, 0, - 0, 1, 1, 0, 0, 4, 0, 0, - 1, 0, 1, 0, 6, 0, 0, 0, - 0, 0, 1, 5, 0, 0, 0, 0, - 32, 0, 1, 0, 1, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 4, 0, 2, 0, - 7, 1, 0, 1, 0, 0, 0, 1, - 1, 0, 1, 0, 1, 0, 0, 1, - 26, 0, 0, 0, 1, 1, 1, 0, - 0, 2, 1, 0, 1, 1, 0, 2, - 0, 0, 2, 0, 2, 1, 0, 1, - 0, 3, 0, 0, 1, 21, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 3, 0, 0, 0, 0, 0, - 0, 2, 0, 5, 0, 0, 0, 1, - 0, 2, 0, 0, 15, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, - 2, 1, 1, 0, 3, 1, 0, 7, - 7, 1, 1, 0, 1, 0, 0, 0, - 32, 0, 0, 0, 0, 1, 0, 0, - 1, 0, 0, 1, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 1, 1, 0, 0, - 4, 0, 0, 1, 0, 1, 0, 6, - 0, 0, 0, 0, 0, 1, 5, 0, - 0, 0, 0, 1, 0, 1, 4, 0, - 0, 0, 0, 2, 0, 0, 0, 1, - 1, 0, 1, 0, 1, 0, 0, 1, - 26, 0, 0, 0, 1, 1, 1, 0, - 0, 2, 1, 0, 1, 1, 0, 2, - 0, 0, 2, 0, 2, 1, 0, 1, - 0, 3, 0, 0, 1, 21, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 3, 0, 0, 0, 0, 0, - 0, 2, 0, 5, 2, 2, 24, 3, - 1, 0, 2, 0, 1, 1, 1, 1, - 1, 1, 0, 0, 0, 0, 5, 5, - 3, 0, 0, 2, 0, 1, 0, 3, - 1, 0, 2, 15, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 2, - 1, 1, 0, 3, 1, 0, 7, 7, - 1, 1, 0, 1, 0, 0, 0, 32, - 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 1, 0, 0, 4, - 0, 0, 1, 0, 1, 0, 6, 0, - 0, 0, 0, 0, 1, 5, 0, 0, - 0, 0, 32, 0, 1, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 4, 0, - 2, 0, 7, 1, 0, 0, 1, 1, - 2, 1, 1, 5, 0, 24, 0, 24, - 0, 0, 23, 0, 0, 1, 0, 2, - 0, 0, 0, 28, 0, 3, 23, 2, - 0, 2, 2, 3, 2, 2, 2, 0, - 54, 54, 27, 1, 0, 20, 1, 1, - 2, 0, 1, 1, 1, 1, 1, 2, - 2, 0, 5, 5, 3, 0, 0, 2, - 2, 2, 2, 0, 14, 0, 3, 2, - 2, 3, 2, 2, 2, 54, 54, 27, - 1, 0, 2, 0, 1, 5, 6, 1, - 1, 0, 1, 0, 1, 1, 0, 1, - 0, 1, 0, 32, 1, 0, 1, 0, - 7, 2, 0, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, - 0, 0, 1, 3, 0, 1, 1, 2, - 1, 1, 5, 0, 0, 0, 0, 1, - 1, 0, 1, 0, 1, 0, 0, 1, - 26, 0, 0, 0, 1, 1, 1, 0, - 0, 2, 1, 0, 1, 1, 0, 2, - 0, 0, 2, 0, 2, 1, 0, 1, - 0, 3, 0, 0, 1, 21, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 3, 0, 0, 0, 0, 0, - 0, 2, 0, 5, 2, 2, 24, 3, - 1, 0, 2, 0, 1, 1, 1, 1, - 1, 1, 0, 0, 0, 0, 5, 5, - 3, 0, 0, 2, 0, 1, 0, 3, - 1, 0, 2, 15, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 2, - 1, 1, 0, 3, 1, 0, 7, 7, - 1, 1, 0, 1, 0, 0, 0, 32, - 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 1, 0, 0, 4, - 0, 0, 1, 0, 1, 0, 6, 0, - 0, 0, 0, 0, 1, 5, 0, 0, - 0, 0, 32, 0, 1, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 4, 0, - 2, 0, 7, 1, 0, 24, 0, 24, - 0, 0, 23, 0, 0, 1, 0, 2, - 0, 0, 0, 28, 0, 3, 23, 2, - 0, 2, 2, 3, 2, 2, 2, 0, - 54, 54, 27, 1, 1, 20, 3, 0, - 0, 0, 1, 1, 0, 1, 0, 1, - 0, 0, 1, 26, 0, 0, 0, 1, - 1, 1, 0, 0, 2, 1, 0, 1, - 1, 0, 2, 0, 0, 2, 0, 2, - 1, 0, 1, 0, 3, 0, 0, 1, - 21, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 2, 0, 5, 0, - 0, 0, 1, 0, 2, 0, 0, 15, - 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 2, 1, 1, 0, 3, - 1, 0, 7, 7, 1, 1, 0, 1, - 0, 0, 0, 32, 0, 0, 0, 0, - 1, 0, 0, 1, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 0, 0, 0, 1, - 1, 0, 0, 4, 0, 0, 1, 0, - 1, 0, 6, 0, 0, 0, 0, 0, - 1, 5, 0, 0, 0, 0, 1, 0, - 1, 4, 0, 0, 0, 1, 2, 0, - 1, 1, 1, 1, 1, 2, 2, 0, - 5, 5, 3, 0, 0, 2, 2, 2, - 2, 0, 14, 0, 3, 2, 2, 3, - 2, 2, 2, 54, 54, 27, 1, 0, - 2, 1, 1, 5, 6, 1, 1, 0, - 1, 0, 1, 1, 0, 1, 0, 1, - 0, 32, 1, 0, 1, 0, 0, 0, - 0, 1, 1, 0, 1, 0, 1, 0, - 0, 1, 26, 0, 0, 0, 1, 1, - 1, 0, 0, 2, 1, 0, 1, 1, - 0, 2, 0, 0, 2, 0, 2, 1, - 0, 1, 0, 3, 0, 0, 1, 21, - 0, 0, 3, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 2, 0, 5, 2, 2, - 24, 3, 1, 0, 2, 0, 1, 1, - 1, 1, 1, 1, 0, 0, 0, 0, - 5, 5, 3, 0, 0, 2, 0, 1, - 0, 3, 1, 0, 2, 15, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, - 0, 2, 1, 1, 0, 3, 1, 0, - 7, 7, 1, 1, 0, 1, 0, 0, - 0, 32, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 0, 1, 0, 0, 0, 1, 1, 0, - 0, 4, 0, 0, 1, 0, 1, 0, - 6, 0, 0, 0, 0, 0, 1, 5, - 0, 0, 0, 0, 32, 0, 1, 0, - 1, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 4, 0, 2, 0, 7, 1, 0, 7, - 2, 0, 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 0, - 0, 1, 5, 0, 0, 0, 0, 0, - 18, 20, 20, 21, 15, 20, 20, 21, - 23, 21, 21, 21, 20, 23, 20, 21, - 21, 21, 21, 20, 20, 20, 21, -} - -var _graphclust_range_lengths []byte = []byte{ - 0, 0, 1, 1, 1, 1, 2, 1, - 1, 4, 1, 1, 1, 1, 2, 4, - 1, 2, 1, 2, 2, 6, 6, 3, - 2, 5, 1, 3, 2, 3, 5, 3, - 3, 1, 3, 1, 1, 1, 1, 2, - 1, 4, 0, 0, 2, 3, 1, 1, - 2, 2, 1, 2, 1, 1, 2, 1, - 2, 1, 2, 2, 2, 1, 1, 3, - 2, 0, 1, 1, 1, 0, 1, 0, - 1, 1, 0, 2, 1, 1, 1, 2, - 3, 1, 1, 2, 2, 1, 1, 3, - 2, 2, 0, 0, 2, 0, 0, 0, - 0, 1, 4, 1, 1, 1, 0, 2, - 1, 2, 2, 1, 2, 2, 1, 1, - 3, 6, 1, 1, 1, 1, 2, 2, - 1, 1, 1, 1, 2, 3, 1, 1, - 2, 2, 3, 1, 3, 1, 0, 1, - 1, 1, 2, 0, 1, 0, 3, 3, - 1, 2, 2, 2, 0, 5, 1, 1, - 1, 0, 1, 0, 1, 1, 1, 0, - 1, 2, 1, 1, 1, 1, 2, 1, - 1, 4, 1, 1, 1, 1, 2, 4, - 1, 2, 1, 2, 2, 6, 6, 3, - 2, 5, 1, 3, 2, 3, 5, 3, - 3, 1, 3, 1, 1, 1, 1, 2, - 1, 4, 0, 0, 2, 3, 1, 1, - 2, 2, 1, 2, 1, 1, 2, 1, - 2, 1, 2, 2, 2, 1, 1, 3, - 2, 0, 0, 0, 0, 0, 0, 1, - 0, 2, 1, 0, 2, 0, 1, 1, - 3, 1, 2, 1, 3, 2, 1, 1, - 2, 0, 1, 0, 1, 0, 1, 1, - 0, 0, 2, 1, 1, 1, 2, 3, - 1, 1, 2, 2, 1, 1, 3, 2, - 2, 0, 0, 2, 0, 0, 0, 0, - 1, 4, 1, 1, 1, 0, 2, 1, - 2, 2, 1, 2, 2, 1, 1, 3, - 6, 1, 1, 1, 1, 2, 2, 1, - 1, 1, 1, 2, 3, 1, 1, 2, - 2, 3, 1, 3, 1, 0, 1, 1, - 1, 2, 0, 1, 0, 3, 3, 1, - 2, 2, 2, 0, 5, 1, 1, 1, - 4, 0, 1, 2, 2, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 1, 0, 1, 1, 0, 1, - 0, 0, 1, 2, 1, 1, 1, 1, - 2, 1, 1, 4, 1, 1, 1, 1, - 2, 4, 1, 2, 1, 2, 2, 6, - 6, 3, 2, 5, 1, 3, 2, 3, - 5, 3, 3, 1, 3, 1, 1, 1, - 1, 2, 1, 4, 0, 0, 2, 3, - 1, 1, 2, 2, 1, 2, 1, 1, - 2, 1, 2, 1, 2, 2, 2, 1, - 1, 3, 2, 0, 1, 1, 1, 0, - 1, 0, 1, 1, 0, 2, 1, 1, - 1, 2, 3, 1, 1, 2, 2, 1, - 1, 3, 2, 2, 0, 0, 2, 0, - 0, 0, 0, 1, 4, 1, 1, 1, - 0, 2, 1, 2, 2, 1, 2, 2, - 1, 1, 3, 6, 1, 1, 1, 1, - 2, 2, 1, 1, 1, 1, 2, 3, - 1, 1, 2, 2, 3, 1, 3, 1, - 0, 1, 1, 1, 2, 0, 1, 0, - 3, 3, 1, 2, 2, 2, 0, 5, - 1, 1, 1, 0, 1, 0, 1, 1, - 1, 0, 1, 2, 1, 1, 1, 1, - 2, 1, 1, 4, 1, 1, 1, 1, - 2, 4, 1, 2, 1, 2, 2, 6, - 6, 3, 2, 5, 1, 3, 2, 3, - 5, 3, 3, 1, 3, 1, 1, 1, - 1, 2, 1, 4, 0, 0, 2, 3, - 1, 1, 2, 2, 1, 2, 1, 1, - 2, 1, 2, 1, 2, 2, 2, 1, - 1, 3, 2, 0, 0, 0, 0, 0, - 0, 1, 0, 2, 1, 0, 2, 0, - 1, 1, 3, 1, 2, 1, 3, 2, - 1, 1, 2, 0, 1, 0, 1, 0, - 1, 1, 0, 0, 2, 1, 1, 1, - 2, 3, 1, 1, 2, 2, 1, 1, - 3, 2, 2, 0, 0, 2, 0, 0, - 0, 0, 1, 4, 1, 1, 1, 0, - 2, 1, 2, 2, 1, 2, 2, 1, - 1, 3, 6, 1, 1, 1, 1, 2, - 2, 1, 1, 1, 1, 2, 3, 1, - 1, 2, 2, 3, 1, 3, 1, 0, - 1, 1, 1, 2, 0, 1, 0, 3, - 3, 1, 2, 2, 2, 0, 5, 1, - 1, 1, 4, 0, 1, 2, 2, 1, - 3, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 1, 0, 1, 1, - 0, 1, 0, 0, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 0, - 1, 1, 0, 1, 1, 0, 1, 0, - 1, 3, 1, 2, 2, 1, 0, 0, - 1, 0, 0, 0, 0, 0, 1, 0, - 1, 1, 2, 2, 2, 1, 4, 2, - 1, 5, 3, 1, 5, 1, 3, 2, - 1, 3, 6, 5, 3, 3, 5, 1, - 1, 1, 1, 1, 3, 3, 1, 0, - 0, 0, 0, 0, 1, 1, 1, 3, - 2, 4, 1, 1, 2, 1, 1, 1, - 1, 3, 1, 3, 1, 1, 2, 1, - 2, 1, 2, 5, 3, 4, 4, 2, - 0, 0, 1, 3, 2, 2, 2, 2, - 2, 2, 2, 3, 5, 4, 2, 1, - 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 4, 1, 1, 1, 1, - 2, 4, 1, 2, 1, 2, 2, 6, - 6, 3, 2, 5, 1, 3, 2, 3, - 5, 3, 3, 1, 3, 1, 1, 1, - 1, 2, 1, 4, 0, 0, 2, 3, - 1, 1, 2, 2, 1, 2, 1, 1, - 2, 1, 2, 1, 2, 2, 2, 1, - 1, 3, 2, 0, 0, 0, 0, 0, - 0, 1, 0, 2, 1, 0, 2, 0, - 1, 1, 3, 1, 2, 1, 3, 2, - 1, 1, 2, 0, 1, 0, 1, 0, - 1, 1, 0, 0, 2, 1, 1, 1, - 2, 3, 1, 1, 2, 2, 1, 1, - 3, 2, 2, 0, 0, 2, 0, 0, - 0, 0, 1, 4, 1, 1, 1, 0, - 2, 1, 2, 2, 1, 2, 2, 1, - 1, 3, 6, 1, 1, 1, 1, 2, - 2, 1, 1, 1, 1, 2, 3, 1, - 1, 2, 2, 3, 1, 3, 1, 0, - 1, 1, 1, 2, 0, 1, 0, 3, - 3, 1, 2, 2, 2, 0, 5, 1, - 1, 1, 4, 0, 1, 2, 2, 1, - 3, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 1, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 1, 0, - 1, 1, 0, 1, 1, 0, 1, 0, - 1, 3, 1, 2, 2, 1, 0, 0, - 1, 0, 0, 0, 0, 0, 1, 0, - 1, 1, 2, 2, 1, 1, 5, 1, - 1, 1, 1, 2, 1, 1, 4, 1, - 1, 1, 1, 2, 4, 1, 2, 1, - 2, 2, 6, 6, 3, 2, 5, 1, - 3, 2, 3, 5, 3, 3, 1, 3, - 1, 1, 1, 1, 2, 1, 4, 0, - 0, 2, 3, 1, 1, 2, 2, 1, - 2, 1, 1, 2, 1, 2, 1, 2, - 2, 2, 1, 1, 3, 2, 0, 1, - 1, 1, 0, 1, 0, 1, 1, 0, - 2, 1, 1, 1, 2, 3, 1, 1, - 2, 2, 1, 1, 3, 2, 2, 0, - 0, 2, 0, 0, 0, 0, 1, 4, - 1, 1, 1, 0, 2, 1, 2, 2, - 1, 2, 2, 1, 1, 3, 6, 1, - 1, 1, 1, 2, 2, 1, 1, 1, - 1, 2, 3, 1, 1, 2, 2, 3, - 1, 3, 1, 0, 1, 1, 1, 2, - 0, 1, 0, 3, 3, 1, 2, 2, - 2, 0, 5, 1, 1, 1, 0, 1, - 0, 1, 1, 1, 0, 3, 1, 5, - 3, 1, 5, 1, 3, 2, 1, 3, - 6, 5, 3, 3, 5, 1, 1, 1, - 1, 1, 3, 3, 1, 0, 0, 0, - 0, 0, 1, 1, 1, 3, 2, 4, - 1, 1, 3, 1, 1, 1, 1, 3, - 1, 3, 1, 1, 3, 1, 3, 1, - 3, 5, 3, 4, 4, 2, 1, 1, - 1, 1, 2, 1, 1, 4, 1, 1, - 1, 1, 2, 4, 1, 2, 1, 2, - 2, 6, 6, 3, 2, 5, 1, 3, - 2, 3, 5, 3, 3, 1, 3, 1, - 1, 1, 1, 2, 1, 4, 0, 0, - 2, 3, 1, 1, 2, 2, 1, 2, - 1, 1, 2, 1, 2, 1, 2, 2, - 2, 1, 1, 3, 2, 0, 0, 0, - 0, 0, 0, 1, 0, 2, 1, 0, - 2, 0, 1, 1, 3, 1, 2, 1, - 3, 2, 1, 1, 2, 0, 1, 0, - 1, 0, 1, 1, 0, 0, 2, 1, - 1, 1, 2, 3, 1, 1, 2, 2, - 1, 1, 3, 2, 2, 0, 0, 2, - 0, 0, 0, 0, 1, 4, 1, 1, - 1, 0, 2, 1, 2, 2, 1, 2, - 2, 1, 1, 3, 6, 1, 1, 1, - 1, 2, 2, 1, 1, 1, 1, 2, - 3, 1, 1, 2, 2, 3, 1, 3, - 1, 0, 1, 1, 1, 2, 0, 1, - 0, 3, 3, 1, 2, 2, 2, 0, - 5, 1, 1, 1, 4, 0, 1, 2, - 2, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 1, 0, - 1, 1, 0, 1, 0, 0, 1, 0, - 0, 1, 3, 2, 2, 2, 2, 2, - 2, 2, 3, 5, 4, 2, 1, 2, - 1, 1, 2, 2, 1, 1, 2, 0, - 6, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -} - -var _graphclust_index_offsets []int16 = []int16{ - 0, 0, 2, 4, 6, 8, 11, 15, - 17, 20, 25, 28, 30, 32, 35, 64, - 69, 71, 74, 77, 81, 85, 92, 99, - 105, 109, 115, 118, 123, 126, 132, 138, - 142, 148, 150, 156, 159, 161, 164, 166, - 172, 174, 179, 181, 203, 206, 210, 215, - 217, 220, 223, 225, 228, 230, 233, 236, - 238, 244, 246, 249, 252, 255, 257, 259, - 265, 268, 274, 276, 278, 280, 282, 284, - 287, 289, 291, 307, 310, 312, 314, 319, - 322, 326, 328, 330, 333, 336, 338, 342, - 347, 351, 354, 358, 360, 363, 371, 379, - 381, 383, 385, 391, 393, 395, 397, 430, - 433, 435, 438, 441, 444, 447, 450, 453, - 455, 459, 467, 469, 472, 474, 476, 479, - 482, 484, 486, 488, 490, 494, 498, 501, - 503, 506, 509, 514, 517, 521, 523, 528, - 530, 532, 535, 538, 540, 542, 549, 553, - 557, 559, 562, 565, 569, 575, 581, 583, - 585, 587, 589, 591, 593, 599, 601, 603, - 604, 606, 612, 614, 616, 618, 621, 625, - 627, 630, 635, 638, 640, 642, 645, 674, - 679, 681, 684, 687, 691, 695, 702, 709, - 715, 719, 725, 728, 733, 736, 742, 748, - 752, 758, 760, 766, 769, 771, 774, 776, - 782, 784, 789, 791, 813, 816, 820, 825, - 827, 830, 833, 835, 838, 840, 843, 846, - 848, 854, 856, 859, 862, 865, 867, 869, - 875, 878, 884, 887, 890, 915, 919, 921, - 923, 926, 929, 932, 934, 938, 940, 943, - 946, 950, 952, 955, 957, 966, 974, 979, - 981, 984, 987, 989, 991, 993, 997, 1000, - 1002, 1005, 1021, 1024, 1026, 1028, 1033, 1036, - 1040, 1042, 1044, 1047, 1050, 1052, 1056, 1061, - 1065, 1068, 1072, 1074, 1077, 1085, 1093, 1095, - 1097, 1099, 1105, 1107, 1109, 1111, 1144, 1147, - 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1169, - 1173, 1181, 1183, 1186, 1188, 1190, 1193, 1196, - 1198, 1200, 1202, 1204, 1208, 1212, 1215, 1217, - 1220, 1223, 1228, 1231, 1235, 1237, 1242, 1244, - 1246, 1249, 1252, 1254, 1256, 1263, 1267, 1271, - 1273, 1276, 1279, 1283, 1289, 1295, 1297, 1299, - 1301, 1338, 1339, 1342, 1345, 1349, 1351, 1357, - 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1374, - 1377, 1380, 1383, 1385, 1387, 1393, 1395, 1398, - 1400, 1408, 1410, 1412, 1416, 1418, 1420, 1422, - 1425, 1429, 1431, 1434, 1439, 1442, 1444, 1446, - 1449, 1478, 1483, 1485, 1488, 1491, 1495, 1499, - 1506, 1513, 1519, 1523, 1529, 1532, 1537, 1540, - 1546, 1552, 1556, 1562, 1564, 1570, 1573, 1575, - 1578, 1580, 1586, 1588, 1593, 1595, 1617, 1620, - 1624, 1629, 1631, 1634, 1637, 1639, 1642, 1644, - 1647, 1650, 1652, 1658, 1660, 1663, 1666, 1669, - 1671, 1673, 1679, 1682, 1688, 1690, 1692, 1694, - 1696, 1698, 1701, 1703, 1705, 1721, 1724, 1726, - 1728, 1733, 1736, 1740, 1742, 1744, 1747, 1750, - 1752, 1756, 1761, 1765, 1768, 1772, 1774, 1777, - 1785, 1793, 1795, 1797, 1799, 1805, 1807, 1809, - 1811, 1844, 1847, 1849, 1852, 1855, 1858, 1861, - 1864, 1867, 1869, 1873, 1881, 1883, 1886, 1888, - 1890, 1893, 1896, 1898, 1900, 1902, 1904, 1908, - 1912, 1915, 1917, 1920, 1923, 1928, 1931, 1935, - 1937, 1942, 1944, 1946, 1949, 1952, 1954, 1956, - 1963, 1967, 1971, 1973, 1976, 1979, 1983, 1989, - 1995, 1997, 1999, 2001, 2003, 2005, 2007, 2013, - 2015, 2017, 2018, 2020, 2025, 2027, 2029, 2031, - 2034, 2038, 2040, 2043, 2048, 2051, 2053, 2055, - 2058, 2087, 2092, 2094, 2097, 2100, 2104, 2108, - 2115, 2122, 2128, 2132, 2138, 2141, 2146, 2149, - 2155, 2161, 2165, 2171, 2173, 2179, 2182, 2184, - 2187, 2189, 2195, 2197, 2202, 2204, 2226, 2229, - 2233, 2238, 2240, 2243, 2246, 2248, 2251, 2253, - 2256, 2259, 2261, 2267, 2269, 2272, 2275, 2278, - 2280, 2282, 2288, 2291, 2297, 2300, 2303, 2328, - 2332, 2334, 2336, 2339, 2342, 2345, 2347, 2351, - 2353, 2356, 2359, 2363, 2365, 2368, 2370, 2379, - 2387, 2392, 2394, 2397, 2400, 2402, 2404, 2406, - 2410, 2413, 2415, 2418, 2434, 2437, 2439, 2441, - 2446, 2449, 2453, 2455, 2457, 2460, 2463, 2465, - 2469, 2474, 2478, 2481, 2485, 2487, 2490, 2498, - 2506, 2508, 2510, 2512, 2518, 2520, 2522, 2524, - 2557, 2560, 2562, 2565, 2568, 2571, 2574, 2577, - 2580, 2582, 2586, 2594, 2596, 2599, 2601, 2603, - 2606, 2609, 2611, 2613, 2615, 2617, 2621, 2625, - 2628, 2630, 2633, 2636, 2641, 2644, 2648, 2650, - 2655, 2657, 2659, 2662, 2665, 2667, 2669, 2676, - 2680, 2684, 2686, 2689, 2692, 2696, 2702, 2708, - 2710, 2712, 2714, 2751, 2752, 2755, 2758, 2762, - 2764, 2770, 2772, 2774, 2776, 2778, 2780, 2782, - 2784, 2787, 2790, 2793, 2796, 2798, 2800, 2806, - 2808, 2811, 2813, 2821, 2823, 2825, 2829, 2832, - 2835, 2839, 2842, 2845, 2852, 2854, 2879, 2881, - 2906, 2908, 2910, 2934, 2936, 2938, 2940, 2942, - 2945, 2947, 2951, 2953, 2984, 2987, 2992, 3016, - 3019, 3021, 3024, 3027, 3031, 3034, 3037, 3041, - 3042, 3098, 3154, 3184, 3188, 3191, 3213, 3219, - 3223, 3227, 3233, 3238, 3241, 3248, 3251, 3256, - 3261, 3265, 3269, 3281, 3292, 3299, 3303, 3309, - 3313, 3317, 3321, 3325, 3327, 3345, 3349, 3354, - 3357, 3360, 3364, 3367, 3370, 3374, 3430, 3486, - 3517, 3521, 3526, 3530, 3532, 3536, 3543, 3551, - 3554, 3557, 3561, 3564, 3568, 3571, 3574, 3577, - 3580, 3583, 3586, 3589, 3627, 3632, 3637, 3643, - 3646, 3654, 3657, 3659, 3667, 3670, 3673, 3676, - 3679, 3682, 3685, 3688, 3692, 3698, 3703, 3707, - 3710, 3713, 3715, 3718, 3723, 3725, 3728, 3731, - 3735, 3738, 3741, 3748, 3750, 3752, 3754, 3756, - 3759, 3763, 3765, 3768, 3773, 3776, 3778, 3780, - 3783, 3812, 3817, 3819, 3822, 3825, 3829, 3833, - 3840, 3847, 3853, 3857, 3863, 3866, 3871, 3874, - 3880, 3886, 3890, 3896, 3898, 3904, 3907, 3909, - 3912, 3914, 3920, 3922, 3927, 3929, 3951, 3954, - 3958, 3963, 3965, 3968, 3971, 3973, 3976, 3978, - 3981, 3984, 3986, 3992, 3994, 3997, 4000, 4003, - 4005, 4007, 4013, 4016, 4022, 4025, 4028, 4053, - 4057, 4059, 4061, 4064, 4067, 4070, 4072, 4076, - 4078, 4081, 4084, 4088, 4090, 4093, 4095, 4104, - 4112, 4117, 4119, 4122, 4125, 4127, 4129, 4131, - 4135, 4138, 4140, 4143, 4159, 4162, 4164, 4166, - 4171, 4174, 4178, 4180, 4182, 4185, 4188, 4190, - 4194, 4199, 4203, 4206, 4210, 4212, 4215, 4223, - 4231, 4233, 4235, 4237, 4243, 4245, 4247, 4249, - 4282, 4285, 4287, 4290, 4293, 4296, 4299, 4302, - 4305, 4307, 4311, 4319, 4321, 4324, 4326, 4328, - 4331, 4334, 4336, 4338, 4340, 4342, 4346, 4350, - 4353, 4355, 4358, 4361, 4366, 4369, 4373, 4375, - 4380, 4382, 4384, 4387, 4390, 4392, 4394, 4401, - 4405, 4409, 4411, 4414, 4417, 4421, 4427, 4433, - 4435, 4437, 4439, 4476, 4477, 4480, 4483, 4487, - 4489, 4495, 4497, 4499, 4501, 4503, 4505, 4507, - 4509, 4512, 4515, 4518, 4521, 4523, 4525, 4531, - 4533, 4536, 4538, 4546, 4548, 4550, 4575, 4577, - 4602, 4604, 4606, 4630, 4632, 4634, 4636, 4638, - 4641, 4643, 4647, 4649, 4680, 4683, 4688, 4712, - 4715, 4717, 4720, 4723, 4727, 4730, 4733, 4737, - 4738, 4794, 4850, 4880, 4884, 4887, 4909, 4918, - 4920, 4922, 4924, 4927, 4931, 4933, 4936, 4941, - 4944, 4946, 4948, 4951, 4980, 4985, 4987, 4990, - 4993, 4997, 5001, 5008, 5015, 5021, 5025, 5031, - 5034, 5039, 5042, 5048, 5054, 5058, 5064, 5066, - 5072, 5075, 5077, 5080, 5082, 5088, 5090, 5095, - 5097, 5119, 5122, 5126, 5131, 5133, 5136, 5139, - 5141, 5144, 5146, 5149, 5152, 5154, 5160, 5162, - 5165, 5168, 5171, 5173, 5175, 5181, 5184, 5190, - 5192, 5194, 5196, 5198, 5200, 5203, 5205, 5207, - 5223, 5226, 5228, 5230, 5235, 5238, 5242, 5244, - 5246, 5249, 5252, 5254, 5258, 5263, 5267, 5270, - 5274, 5276, 5279, 5287, 5295, 5297, 5299, 5301, - 5307, 5309, 5311, 5313, 5346, 5349, 5351, 5354, - 5357, 5360, 5363, 5366, 5369, 5371, 5375, 5383, - 5385, 5388, 5390, 5392, 5395, 5398, 5400, 5402, - 5404, 5406, 5410, 5414, 5417, 5419, 5422, 5425, - 5430, 5433, 5437, 5439, 5444, 5446, 5448, 5451, - 5454, 5456, 5458, 5465, 5469, 5473, 5475, 5478, - 5481, 5485, 5491, 5497, 5499, 5501, 5503, 5505, - 5507, 5509, 5515, 5517, 5519, 5520, 5525, 5529, - 5535, 5540, 5543, 5550, 5553, 5558, 5563, 5567, - 5571, 5583, 5594, 5601, 5605, 5611, 5615, 5619, - 5623, 5627, 5629, 5647, 5651, 5656, 5659, 5662, - 5666, 5669, 5672, 5676, 5732, 5788, 5819, 5823, - 5828, 5832, 5835, 5840, 5847, 5855, 5858, 5861, - 5865, 5868, 5872, 5875, 5878, 5882, 5885, 5889, - 5892, 5896, 5934, 5939, 5944, 5950, 5953, 5955, - 5957, 5959, 5962, 5966, 5968, 5971, 5976, 5979, - 5981, 5983, 5986, 6015, 6020, 6022, 6025, 6028, - 6032, 6036, 6043, 6050, 6056, 6060, 6066, 6069, - 6074, 6077, 6083, 6089, 6093, 6099, 6101, 6107, - 6110, 6112, 6115, 6117, 6123, 6125, 6130, 6132, - 6154, 6157, 6161, 6166, 6168, 6171, 6174, 6176, - 6179, 6181, 6184, 6187, 6189, 6195, 6197, 6200, - 6203, 6206, 6208, 6210, 6216, 6219, 6225, 6228, - 6231, 6256, 6260, 6262, 6264, 6267, 6270, 6273, - 6275, 6279, 6281, 6284, 6287, 6291, 6293, 6296, - 6298, 6307, 6315, 6320, 6322, 6325, 6328, 6330, - 6332, 6334, 6338, 6341, 6343, 6346, 6362, 6365, - 6367, 6369, 6374, 6377, 6381, 6383, 6385, 6388, - 6391, 6393, 6397, 6402, 6406, 6409, 6413, 6415, - 6418, 6426, 6434, 6436, 6438, 6440, 6446, 6448, - 6450, 6452, 6485, 6488, 6490, 6493, 6496, 6499, - 6502, 6505, 6508, 6510, 6514, 6522, 6524, 6527, - 6529, 6531, 6534, 6537, 6539, 6541, 6543, 6545, - 6549, 6553, 6556, 6558, 6561, 6564, 6569, 6572, - 6576, 6578, 6583, 6585, 6587, 6590, 6593, 6595, - 6597, 6604, 6608, 6612, 6614, 6617, 6620, 6624, - 6630, 6636, 6638, 6640, 6642, 6679, 6680, 6683, - 6686, 6690, 6692, 6698, 6700, 6702, 6704, 6706, - 6708, 6710, 6712, 6715, 6718, 6721, 6724, 6726, - 6728, 6734, 6736, 6739, 6741, 6749, 6751, 6753, - 6761, 6764, 6766, 6774, 6777, 6780, 6783, 6786, - 6789, 6792, 6795, 6799, 6805, 6810, 6814, 6817, - 6820, 6822, 6825, 6833, 6836, 6838, 6840, 6843, - 6844, 6869, 6890, 6911, 6933, 6953, 6974, 6995, - 7017, 7041, 7063, 7085, 7107, 7128, 7152, 7173, - 7195, 7217, 7239, 7261, 7282, 7303, 7324, -} - -var _graphclust_indicies []int16 = []int16{ - 0, 1, 2, 3, 2, 3, 3, 2, - 3, 3, 2, 3, 3, 3, 2, 3, - 2, 3, 3, 2, 3, 3, 3, 3, - 2, 3, 3, 2, 2, 3, 3, 2, - 3, 3, 2, 4, 5, 6, 7, 8, - 10, 11, 12, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 9, 13, 2, - 3, 3, 3, 3, 2, 3, 2, 3, - 3, 2, 2, 2, 3, 2, 2, 2, - 3, 3, 3, 3, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, - 3, 3, 3, 3, 2, 3, 3, 3, - 3, 3, 2, 3, 3, 2, 3, 3, - 3, 3, 2, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 3, 3, 3, 3, - 3, 2, 3, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 3, 2, 3, 3, - 3, 3, 3, 2, 3, 3, 2, 3, - 2, 3, 3, 2, 3, 2, 3, 3, - 3, 3, 3, 2, 3, 2, 3, 3, - 3, 3, 2, 3, 2, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 2, 3, 3, 2, 3, 3, - 3, 2, 3, 3, 3, 3, 2, 3, - 2, 3, 3, 2, 3, 3, 2, 3, - 2, 2, 2, 3, 3, 2, 3, 3, - 2, 3, 3, 2, 3, 2, 3, 3, - 3, 3, 3, 2, 3, 2, 3, 3, - 2, 2, 2, 3, 3, 3, 2, 3, - 2, 3, 2, 3, 3, 3, 3, 3, - 2, 3, 3, 2, 53, 54, 55, 56, - 57, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 58, 59, 2, 3, - 2, 3, 2, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 2, 3, 3, 2, 3, 2, - 3, 2, 3, 3, 3, 3, 2, 3, - 3, 2, 2, 2, 2, 3, 3, 2, - 3, 2, 3, 3, 2, 2, 2, 3, - 3, 2, 3, 3, 3, 2, 3, 3, - 3, 3, 2, 3, 3, 3, 2, 3, - 3, 2, 75, 76, 61, 2, 3, 2, - 3, 3, 2, 77, 78, 79, 80, 81, - 82, 83, 2, 84, 85, 86, 87, 88, - 89, 90, 2, 3, 2, 3, 2, 3, - 2, 3, 3, 3, 3, 3, 2, 3, - 2, 3, 2, 3, 2, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 104, 108, - 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 2, 3, 3, - 2, 2, 3, 2, 2, 3, 3, 3, - 2, 3, 3, 2, 3, 3, 2, 2, - 2, 3, 3, 3, 2, 3, 2, 3, - 3, 3, 2, 3, 3, 3, 3, 3, - 3, 3, 2, 3, 2, 3, 3, 2, - 3, 2, 2, 3, 3, 3, 2, 2, - 2, 3, 2, 3, 3, 2, 3, 2, - 3, 2, 3, 3, 3, 2, 3, 3, - 3, 2, 3, 3, 2, 3, 2, 3, - 3, 2, 3, 3, 2, 3, 3, 3, - 3, 2, 2, 2, 3, 3, 3, 3, - 2, 3, 2, 122, 123, 124, 125, 2, - 3, 2, 3, 2, 3, 3, 2, 2, - 2, 3, 126, 2, 3, 2, 127, 128, - 129, 130, 131, 132, 2, 3, 3, 3, - 2, 2, 2, 2, 3, 3, 2, 3, - 3, 2, 2, 2, 3, 3, 3, 3, - 2, 133, 123, 134, 135, 136, 2, 3, - 3, 3, 3, 3, 2, 3, 2, 3, - 2, 3, 2, 137, 2, 3, 2, 138, - 2, 139, 140, 141, 143, 142, 2, 3, - 2, 2, 3, 3, 3, 1, 145, 144, - 145, 144, 3, 1, 145, 146, 147, 145, - 145, 147, 145, 145, 147, 145, 145, 145, - 147, 145, 147, 145, 145, 147, 145, 145, - 145, 145, 147, 145, 145, 147, 147, 145, - 145, 147, 145, 145, 147, 148, 149, 150, - 151, 152, 154, 155, 156, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 153, - 157, 147, 145, 145, 145, 145, 147, 145, - 147, 145, 145, 147, 147, 147, 145, 147, - 147, 147, 145, 145, 145, 145, 147, 147, - 147, 147, 147, 147, 147, 145, 147, 147, - 147, 147, 147, 147, 145, 147, 147, 147, - 147, 147, 145, 145, 145, 145, 147, 145, - 145, 145, 145, 145, 147, 145, 145, 147, - 145, 145, 145, 145, 147, 145, 145, 147, - 147, 147, 147, 147, 147, 145, 145, 145, - 145, 145, 145, 147, 145, 145, 145, 147, - 147, 147, 147, 147, 147, 145, 145, 147, - 145, 145, 145, 145, 145, 147, 145, 145, - 147, 145, 147, 145, 145, 147, 145, 147, - 145, 145, 145, 145, 145, 147, 145, 147, - 145, 145, 145, 145, 147, 145, 147, 176, - 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 147, 145, 145, 147, - 145, 145, 145, 147, 145, 145, 145, 145, - 147, 145, 147, 145, 145, 147, 145, 145, - 147, 145, 147, 147, 147, 145, 145, 147, - 145, 145, 147, 145, 145, 147, 145, 147, - 145, 145, 145, 145, 145, 147, 145, 147, - 145, 145, 147, 147, 147, 145, 145, 145, - 147, 145, 147, 145, 147, 145, 145, 145, - 145, 145, 147, 145, 145, 147, 197, 198, - 199, 200, 201, 147, 145, 202, 147, 145, - 145, 147, 203, 204, 198, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 199, - 200, 201, 147, 145, 202, 145, 147, 145, - 147, 145, 147, 145, 145, 147, 145, 145, - 147, 145, 145, 147, 145, 147, 145, 145, - 145, 147, 145, 147, 145, 145, 147, 145, - 145, 147, 145, 145, 145, 147, 146, 145, - 145, 145, 147, 145, 146, 145, 145, 145, - 145, 145, 145, 145, 145, 147, 145, 145, - 145, 145, 145, 145, 145, 147, 145, 145, - 145, 145, 147, 145, 147, 145, 145, 147, - 145, 145, 147, 145, 147, 145, 147, 145, - 147, 223, 224, 225, 147, 145, 145, 147, - 145, 147, 145, 145, 147, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 147, 145, 145, 147, - 145, 147, 145, 147, 145, 145, 145, 145, - 147, 145, 145, 147, 147, 147, 147, 145, - 145, 147, 145, 147, 145, 145, 147, 147, - 147, 145, 145, 147, 145, 145, 145, 147, - 145, 145, 145, 145, 147, 145, 145, 145, - 147, 145, 145, 147, 241, 242, 227, 147, - 145, 147, 145, 145, 147, 243, 244, 245, - 246, 247, 248, 249, 147, 250, 251, 252, - 253, 254, 255, 256, 147, 145, 147, 145, - 147, 145, 147, 145, 145, 145, 145, 145, - 147, 145, 147, 145, 147, 145, 147, 257, - 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, - 270, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 147, - 145, 145, 147, 147, 145, 147, 147, 145, - 145, 145, 147, 145, 145, 147, 145, 145, - 147, 147, 147, 145, 145, 145, 147, 145, - 147, 145, 145, 145, 147, 145, 145, 145, - 145, 145, 145, 145, 147, 145, 147, 145, - 145, 147, 145, 147, 147, 145, 145, 145, - 147, 147, 147, 145, 147, 145, 145, 147, - 145, 147, 145, 147, 145, 145, 145, 147, - 145, 145, 145, 147, 145, 145, 147, 145, - 147, 145, 145, 147, 145, 145, 147, 145, - 145, 145, 145, 147, 147, 147, 145, 145, - 145, 145, 147, 145, 147, 288, 289, 290, - 291, 147, 145, 147, 145, 147, 145, 145, - 147, 147, 147, 145, 292, 147, 145, 147, - 293, 294, 295, 296, 297, 298, 147, 145, - 145, 145, 147, 147, 147, 147, 145, 145, - 147, 145, 145, 147, 147, 147, 145, 145, - 145, 145, 147, 299, 289, 300, 301, 302, - 147, 145, 145, 145, 145, 145, 147, 145, - 147, 145, 147, 145, 147, 304, 214, 216, - 305, 306, 307, 308, 309, 310, 304, 214, - 214, 214, 216, 304, 214, 311, 312, 304, - 214, 313, 214, 314, 315, 316, 317, 318, - 214, 319, 320, 214, 321, 303, 216, 303, - 304, 147, 145, 145, 145, 147, 145, 145, - 147, 145, 145, 145, 147, 147, 145, 145, - 145, 145, 145, 145, 147, 145, 147, 145, - 147, 145, 147, 147, 145, 145, 147, 145, - 147, 145, 147, 145, 145, 147, 145, 145, - 147, 145, 145, 147, 145, 145, 147, 147, - 145, 322, 147, 323, 214, 303, 324, 304, - 147, 145, 147, 325, 224, 147, 145, 147, - 243, 244, 245, 246, 247, 248, 326, 147, - 327, 147, 145, 147, 144, 328, 3, 1, - 330, 329, 329, 330, 330, 329, 330, 330, - 329, 330, 330, 330, 329, 330, 329, 330, - 330, 329, 330, 330, 330, 330, 329, 330, - 330, 329, 329, 330, 330, 329, 330, 330, - 329, 331, 332, 333, 334, 335, 337, 338, - 339, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 336, 340, 329, 330, 330, - 330, 330, 329, 330, 329, 330, 330, 329, - 329, 329, 330, 329, 329, 329, 330, 330, - 330, 330, 329, 329, 329, 329, 329, 329, - 329, 330, 329, 329, 329, 329, 329, 329, - 330, 329, 329, 329, 329, 329, 330, 330, - 330, 330, 329, 330, 330, 330, 330, 330, - 329, 330, 330, 329, 330, 330, 330, 330, - 329, 330, 330, 329, 329, 329, 329, 329, - 329, 330, 330, 330, 330, 330, 330, 329, - 330, 330, 330, 329, 329, 329, 329, 329, - 329, 330, 330, 329, 330, 330, 330, 330, - 330, 329, 330, 330, 329, 330, 329, 330, - 330, 329, 330, 329, 330, 330, 330, 330, - 330, 329, 330, 329, 330, 330, 330, 330, - 329, 330, 329, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, - 329, 330, 330, 329, 330, 330, 330, 329, - 330, 330, 330, 330, 329, 330, 329, 330, - 330, 329, 330, 330, 329, 330, 329, 329, - 329, 330, 330, 329, 330, 330, 329, 330, - 330, 329, 330, 329, 330, 330, 330, 330, - 330, 329, 330, 329, 330, 330, 329, 329, - 329, 330, 330, 330, 329, 330, 329, 330, - 329, 330, 330, 330, 330, 330, 329, 330, - 330, 329, 380, 381, 382, 383, 384, 329, - 330, 329, 330, 329, 330, 329, 330, 329, - 330, 329, 385, 386, 329, 330, 329, 330, - 329, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, - 329, 330, 330, 329, 330, 329, 330, 329, - 330, 330, 330, 330, 329, 330, 330, 329, - 329, 329, 329, 330, 330, 329, 330, 329, - 330, 330, 329, 329, 329, 330, 330, 329, - 330, 330, 330, 329, 330, 330, 330, 330, - 329, 330, 330, 330, 329, 330, 330, 329, - 402, 403, 388, 329, 330, 329, 330, 330, - 329, 404, 405, 406, 407, 408, 409, 410, - 329, 411, 412, 413, 414, 415, 416, 417, - 329, 330, 329, 330, 329, 330, 329, 330, - 330, 330, 330, 330, 329, 330, 329, 330, - 329, 330, 329, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 431, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 329, 330, 330, 329, 329, - 330, 329, 329, 330, 330, 330, 329, 330, - 330, 329, 330, 330, 329, 329, 329, 330, - 330, 330, 329, 330, 329, 330, 330, 330, - 329, 330, 330, 330, 330, 330, 330, 330, - 329, 330, 329, 330, 330, 329, 330, 329, - 329, 330, 330, 330, 329, 329, 329, 330, - 329, 330, 330, 329, 330, 329, 330, 329, - 330, 330, 330, 329, 330, 330, 330, 329, - 330, 330, 329, 330, 329, 330, 330, 329, - 330, 330, 329, 330, 330, 330, 330, 329, - 329, 329, 330, 330, 330, 330, 329, 330, - 329, 449, 450, 451, 452, 329, 330, 329, - 330, 329, 330, 330, 329, 329, 329, 330, - 453, 329, 330, 329, 454, 455, 456, 457, - 458, 459, 329, 330, 330, 330, 329, 329, - 329, 329, 330, 330, 329, 330, 330, 329, - 329, 329, 330, 330, 330, 330, 329, 460, - 450, 461, 462, 463, 329, 330, 330, 330, - 330, 330, 329, 330, 329, 330, 329, 330, - 329, 464, 329, 330, 329, 465, 329, 466, - 467, 468, 470, 469, 329, 330, 329, 329, - 330, 330, 330, 329, 471, 471, 330, 330, - 329, 471, 329, 329, 471, 471, 329, 471, - 471, 329, 471, 471, 471, 329, 471, 329, - 471, 471, 329, 471, 471, 471, 471, 329, - 471, 471, 329, 329, 471, 471, 329, 471, - 471, 329, 472, 473, 474, 475, 476, 478, - 479, 480, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 477, 481, 329, 471, - 471, 471, 471, 329, 471, 329, 471, 471, - 329, 329, 329, 471, 329, 329, 329, 471, - 471, 471, 471, 329, 329, 329, 329, 329, - 329, 329, 471, 329, 329, 329, 329, 329, - 329, 471, 329, 329, 329, 329, 329, 471, - 471, 471, 471, 329, 471, 471, 471, 471, - 471, 329, 471, 471, 329, 471, 471, 471, - 471, 329, 471, 471, 329, 329, 329, 329, - 329, 329, 471, 471, 471, 471, 471, 471, - 329, 471, 471, 471, 329, 329, 329, 329, - 329, 329, 471, 471, 329, 471, 471, 471, - 471, 471, 329, 471, 471, 329, 471, 329, - 471, 471, 329, 471, 329, 471, 471, 471, - 471, 471, 329, 471, 329, 471, 471, 471, - 471, 329, 471, 329, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, - 520, 329, 471, 471, 329, 471, 471, 471, - 329, 471, 471, 471, 471, 329, 471, 329, - 471, 471, 329, 471, 471, 329, 471, 329, - 329, 329, 471, 471, 329, 471, 471, 329, - 471, 471, 329, 471, 329, 471, 471, 471, - 471, 471, 329, 471, 329, 471, 471, 329, - 329, 329, 471, 471, 471, 329, 471, 329, - 471, 329, 471, 471, 471, 471, 471, 329, - 471, 471, 329, 521, 522, 523, 524, 525, - 329, 471, 526, 329, 471, 471, 329, 527, - 528, 522, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 523, 524, 525, 329, - 471, 526, 471, 329, 471, 329, 471, 329, - 471, 471, 329, 471, 471, 329, 471, 471, - 329, 471, 329, 471, 471, 471, 329, 471, - 329, 471, 471, 329, 471, 471, 329, 471, - 471, 471, 329, 329, 471, 471, 471, 329, - 471, 329, 471, 471, 471, 471, 471, 471, - 471, 471, 329, 471, 471, 471, 471, 471, - 471, 471, 329, 471, 471, 471, 471, 329, - 471, 329, 471, 471, 329, 471, 471, 329, - 471, 329, 471, 329, 471, 329, 547, 548, - 549, 329, 471, 471, 329, 471, 329, 471, - 471, 329, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, - 564, 329, 471, 471, 329, 471, 329, 471, - 329, 471, 471, 471, 471, 329, 471, 471, - 329, 329, 329, 329, 471, 471, 329, 471, - 329, 471, 471, 329, 329, 329, 471, 471, - 329, 471, 471, 471, 329, 471, 471, 471, - 471, 329, 471, 471, 471, 329, 471, 471, - 329, 565, 566, 551, 329, 471, 329, 471, - 471, 329, 567, 568, 569, 570, 571, 572, - 573, 329, 574, 575, 576, 577, 578, 579, - 580, 329, 471, 329, 471, 329, 471, 329, - 471, 471, 471, 471, 471, 329, 471, 329, - 471, 329, 471, 329, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 594, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 329, 471, 471, 329, - 329, 471, 329, 329, 471, 471, 471, 329, - 471, 471, 329, 471, 471, 329, 329, 329, - 471, 471, 471, 329, 471, 329, 471, 471, - 471, 329, 471, 471, 471, 471, 471, 471, - 471, 329, 471, 329, 471, 471, 329, 471, - 329, 329, 471, 471, 471, 329, 329, 329, - 471, 329, 471, 471, 329, 471, 329, 471, - 329, 471, 471, 471, 329, 471, 471, 471, - 329, 471, 471, 329, 471, 329, 471, 471, - 329, 471, 471, 329, 471, 471, 471, 471, - 329, 329, 329, 471, 471, 471, 471, 329, - 471, 329, 612, 613, 614, 615, 329, 471, - 329, 471, 329, 471, 471, 329, 329, 329, - 471, 616, 329, 471, 329, 617, 618, 619, - 620, 621, 622, 329, 471, 471, 471, 329, - 329, 329, 329, 471, 471, 329, 471, 471, - 329, 329, 329, 471, 471, 471, 471, 329, - 623, 613, 624, 625, 626, 329, 471, 471, - 471, 471, 471, 329, 471, 329, 471, 329, - 471, 329, 628, 538, 540, 629, 630, 631, - 632, 633, 634, 628, 538, 538, 538, 540, - 628, 538, 635, 636, 628, 538, 637, 538, - 638, 639, 640, 641, 642, 538, 643, 644, - 538, 645, 627, 540, 627, 628, 329, 471, - 471, 471, 329, 471, 471, 329, 471, 471, - 471, 329, 329, 471, 471, 471, 471, 471, - 471, 329, 471, 329, 471, 329, 471, 329, - 329, 471, 471, 329, 471, 329, 471, 329, - 471, 471, 329, 471, 471, 329, 471, 471, - 329, 471, 471, 329, 329, 471, 646, 329, - 647, 538, 627, 648, 628, 329, 471, 329, - 649, 548, 329, 471, 329, 567, 568, 569, - 570, 571, 572, 650, 329, 651, 329, 471, - 329, 328, 330, 330, 329, 328, 330, 329, - 328, 330, 329, 653, 654, 652, 329, 328, - 330, 329, 328, 330, 329, 655, 656, 657, - 658, 659, 652, 329, 660, 329, 500, 501, - 502, 655, 656, 661, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 329, 662, - 660, 500, 501, 502, 663, 657, 658, 503, - 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, - 520, 329, 662, 329, 664, 662, 500, 501, - 502, 665, 658, 503, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 329, 664, 329, - 329, 664, 666, 329, 664, 329, 667, 668, - 329, 662, 329, 329, 664, 329, 662, 329, - 662, 550, 551, 552, 553, 554, 555, 556, - 669, 558, 559, 560, 561, 562, 563, 564, - 671, 672, 673, 674, 675, 676, 671, 672, - 673, 674, 675, 676, 671, 670, 677, 329, - 471, 660, 329, 678, 678, 678, 664, 329, - 500, 501, 502, 663, 661, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 329, - 667, 679, 329, 329, 662, 678, 678, 664, - 678, 678, 664, 678, 678, 678, 664, 678, - 678, 664, 678, 678, 664, 678, 678, 329, - 664, 664, 673, 674, 675, 676, 670, 671, - 673, 674, 675, 676, 670, 671, 673, 674, - 675, 676, 670, 671, 673, 674, 675, 676, - 670, 671, 673, 674, 675, 676, 670, 671, - 673, 674, 675, 676, 670, 671, 673, 674, - 675, 676, 670, 671, 673, 674, 675, 676, - 670, 671, 673, 674, 675, 676, 670, 671, - 672, 677, 674, 675, 676, 670, 671, 672, - 674, 675, 676, 670, 671, 672, 674, 675, - 676, 670, 671, 672, 674, 675, 676, 670, - 671, 672, 674, 675, 676, 670, 671, 672, - 674, 675, 676, 670, 671, 672, 674, 675, - 676, 670, 671, 672, 674, 675, 676, 670, - 671, 672, 674, 675, 676, 670, 671, 672, - 673, 677, 675, 676, 670, 671, 672, 673, - 675, 676, 670, 671, 672, 673, 675, 676, - 670, 671, 672, 673, 675, 676, 670, 671, - 672, 673, 675, 680, 679, 674, 329, 677, - 678, 329, 662, 664, 330, 330, 329, 681, - 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 538, 692, 540, 693, 694, 695, - 696, 697, 698, 652, 329, 471, 330, 330, - 330, 330, 329, 471, 330, 330, 329, 471, - 471, 330, 329, 330, 471, 330, 471, 330, - 329, 471, 330, 471, 330, 329, 471, 330, - 329, 471, 330, 471, 330, 471, 330, 329, - 471, 330, 329, 471, 330, 471, 330, 329, - 471, 330, 330, 471, 329, 330, 330, 471, - 329, 471, 330, 471, 329, 330, 330, 471, - 471, 471, 471, 330, 471, 330, 471, 330, - 329, 471, 471, 471, 471, 330, 330, 471, - 330, 471, 330, 329, 471, 471, 471, 330, - 471, 330, 329, 330, 471, 330, 329, 330, - 471, 330, 471, 330, 329, 471, 471, 330, - 329, 699, 700, 652, 329, 471, 471, 330, - 329, 471, 471, 330, 329, 652, 329, 701, - 703, 704, 705, 706, 707, 708, 703, 704, - 705, 706, 707, 708, 703, 652, 702, 677, - 329, 330, 660, 330, 329, 662, 662, 662, - 664, 329, 662, 662, 664, 662, 662, 664, - 662, 662, 662, 664, 662, 662, 664, 662, - 662, 664, 662, 662, 329, 664, 705, 706, - 707, 708, 702, 703, 705, 706, 707, 708, - 702, 703, 705, 706, 707, 708, 702, 703, - 705, 706, 707, 708, 702, 703, 705, 706, - 707, 708, 702, 703, 705, 706, 707, 708, - 702, 703, 705, 706, 707, 708, 702, 703, - 705, 706, 707, 708, 702, 703, 705, 706, - 707, 708, 702, 703, 704, 677, 706, 707, - 708, 702, 703, 704, 706, 707, 708, 702, - 703, 704, 706, 707, 708, 702, 703, 704, - 706, 707, 708, 702, 703, 704, 706, 707, - 708, 702, 703, 704, 706, 707, 708, 702, - 703, 704, 706, 707, 708, 702, 703, 704, - 706, 707, 708, 702, 703, 704, 706, 707, - 708, 702, 703, 704, 705, 677, 707, 708, - 702, 703, 704, 705, 707, 708, 702, 703, - 704, 705, 707, 708, 702, 703, 704, 705, - 707, 708, 702, 703, 704, 705, 707, 709, - 710, 706, 652, 329, 677, 662, 330, 662, - 664, 330, 664, 330, 329, 662, 711, 712, - 652, 329, 330, 329, 330, 330, 330, 329, - 714, 715, 716, 717, 718, 713, 329, 719, - 720, 721, 722, 723, 724, 652, 329, 328, - 330, 329, 328, 330, 329, 330, 328, 330, - 329, 328, 330, 329, 330, 328, 330, 329, - 328, 330, 329, 725, 652, 329, 330, 330, - 329, 726, 652, 329, 330, 330, 329, 727, - 652, 329, 330, 330, 329, 628, 538, 540, - 728, 729, 730, 731, 732, 733, 628, 538, - 538, 734, 540, 628, 538, 735, 736, 628, - 538, 737, 652, 738, 652, 739, 740, 741, - 742, 743, 744, 538, 745, 627, 538, 540, - 627, 628, 329, 471, 330, 471, 330, 329, - 330, 471, 330, 471, 329, 471, 330, 471, - 330, 471, 329, 746, 329, 471, 567, 568, - 569, 570, 571, 572, 747, 329, 748, 651, - 329, 471, 329, 330, 471, 471, 330, 471, - 330, 471, 329, 330, 471, 329, 330, 329, - 471, 471, 330, 329, 330, 471, 329, 330, - 329, 471, 330, 471, 329, 330, 471, 329, - 330, 471, 330, 329, 330, 471, 330, 471, - 330, 329, 330, 471, 330, 471, 329, 330, - 330, 471, 329, 330, 471, 329, 330, 329, - 471, 713, 329, 749, 713, 329, 384, 652, - 750, 652, 329, 330, 329, 328, 3, 1, - 328, 3, 1, 752, 753, 751, 1, 328, - 3, 1, 328, 3, 1, 754, 755, 756, - 757, 758, 751, 1, 759, 146, 760, 761, - 760, 761, 761, 760, 761, 761, 760, 761, - 761, 761, 760, 761, 760, 761, 761, 760, - 761, 761, 761, 761, 760, 761, 761, 760, - 760, 761, 761, 760, 761, 761, 760, 762, - 763, 764, 765, 766, 768, 769, 770, 772, - 773, 774, 775, 776, 777, 778, 779, 780, - 781, 782, 783, 784, 785, 786, 787, 788, - 789, 767, 771, 760, 761, 761, 761, 761, - 760, 761, 760, 761, 761, 760, 760, 760, - 761, 760, 760, 760, 761, 761, 761, 761, - 760, 760, 760, 760, 760, 760, 760, 761, - 760, 760, 760, 760, 760, 760, 761, 760, - 760, 760, 760, 760, 761, 761, 761, 761, - 760, 761, 761, 761, 761, 761, 760, 761, - 761, 760, 761, 761, 761, 761, 760, 761, - 761, 760, 760, 760, 760, 760, 760, 761, - 761, 761, 761, 761, 761, 760, 761, 761, - 761, 760, 760, 760, 760, 760, 760, 761, - 761, 760, 761, 761, 761, 761, 761, 760, - 761, 761, 760, 761, 760, 761, 761, 760, - 761, 760, 761, 761, 761, 761, 761, 760, - 761, 760, 761, 761, 761, 761, 760, 761, - 760, 790, 791, 792, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 802, 803, 804, - 805, 806, 807, 808, 809, 810, 760, 761, - 761, 760, 761, 761, 761, 760, 761, 761, - 761, 761, 760, 761, 760, 761, 761, 760, - 761, 761, 760, 761, 760, 760, 760, 761, - 761, 760, 761, 761, 760, 761, 761, 760, - 761, 760, 761, 761, 761, 761, 761, 760, - 761, 760, 761, 761, 760, 760, 760, 761, - 761, 761, 760, 761, 760, 761, 760, 761, - 761, 761, 761, 761, 760, 761, 761, 760, - 811, 812, 813, 814, 815, 760, 761, 816, - 760, 761, 761, 760, 817, 818, 812, 819, - 820, 821, 822, 823, 824, 825, 826, 827, - 828, 829, 830, 831, 832, 833, 834, 835, - 836, 813, 814, 815, 760, 761, 816, 761, - 760, 761, 760, 761, 760, 761, 761, 760, - 761, 761, 760, 761, 761, 760, 761, 760, - 761, 761, 761, 760, 761, 760, 761, 761, - 760, 761, 761, 760, 761, 761, 761, 760, - 760, 761, 761, 761, 760, 761, 760, 761, - 761, 761, 761, 761, 761, 761, 761, 760, - 761, 761, 761, 761, 761, 761, 761, 760, - 761, 761, 761, 761, 760, 761, 760, 761, - 761, 760, 761, 761, 760, 761, 760, 761, - 760, 761, 760, 837, 838, 839, 760, 761, - 761, 760, 761, 760, 761, 761, 760, 840, - 841, 842, 843, 844, 845, 846, 847, 848, - 849, 850, 851, 852, 853, 854, 760, 761, - 761, 760, 761, 760, 761, 760, 761, 761, - 761, 761, 760, 761, 761, 760, 760, 760, - 760, 761, 761, 760, 761, 760, 761, 761, - 760, 760, 760, 761, 761, 760, 761, 761, - 761, 760, 761, 761, 761, 761, 760, 761, - 761, 761, 760, 761, 761, 760, 855, 856, - 841, 760, 761, 760, 761, 761, 760, 857, - 858, 859, 860, 861, 862, 863, 760, 864, - 865, 866, 867, 868, 869, 870, 760, 761, - 760, 761, 760, 761, 760, 761, 761, 761, - 761, 761, 760, 761, 760, 761, 760, 761, - 760, 871, 872, 873, 874, 875, 876, 877, - 878, 879, 880, 881, 882, 883, 884, 885, - 886, 887, 884, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, - 901, 760, 761, 761, 760, 760, 761, 760, - 760, 761, 761, 761, 760, 761, 761, 760, - 761, 761, 760, 760, 760, 761, 761, 761, - 760, 761, 760, 761, 761, 761, 760, 761, - 761, 761, 761, 761, 761, 761, 760, 761, - 760, 761, 761, 760, 761, 760, 760, 761, - 761, 761, 760, 760, 760, 761, 760, 761, - 761, 760, 761, 760, 761, 760, 761, 761, - 761, 760, 761, 761, 761, 760, 761, 761, - 760, 761, 760, 761, 761, 760, 761, 761, - 760, 761, 761, 761, 761, 760, 760, 760, - 761, 761, 761, 761, 760, 761, 760, 902, - 903, 904, 905, 760, 761, 760, 761, 760, - 761, 761, 760, 760, 760, 761, 906, 760, - 761, 760, 907, 908, 909, 910, 911, 912, - 760, 761, 761, 761, 760, 760, 760, 760, - 761, 761, 760, 761, 761, 760, 760, 760, - 761, 761, 761, 761, 760, 913, 903, 914, - 915, 916, 760, 761, 761, 761, 761, 761, - 760, 761, 760, 761, 760, 761, 760, 918, - 828, 830, 919, 920, 921, 922, 923, 924, - 918, 828, 828, 828, 830, 918, 828, 925, - 926, 918, 828, 927, 828, 928, 929, 930, - 931, 932, 828, 933, 934, 828, 935, 917, - 830, 917, 918, 760, 761, 761, 761, 760, - 761, 761, 760, 761, 761, 761, 760, 760, - 761, 761, 761, 761, 761, 761, 760, 761, - 760, 761, 760, 761, 760, 760, 761, 761, - 760, 761, 760, 761, 760, 761, 761, 760, - 761, 761, 760, 761, 761, 760, 761, 761, - 760, 760, 761, 936, 760, 937, 828, 917, - 938, 918, 760, 761, 760, 939, 838, 760, - 761, 760, 857, 858, 859, 860, 861, 862, - 940, 760, 941, 760, 761, 760, 790, 791, - 792, 754, 755, 942, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 802, 803, 804, - 805, 806, 807, 808, 809, 810, 760, 943, - 759, 790, 791, 792, 944, 756, 757, 793, - 794, 795, 796, 797, 798, 799, 800, 801, - 802, 803, 804, 805, 806, 807, 808, 809, - 810, 760, 943, 760, 945, 943, 790, 791, - 792, 946, 757, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 760, 945, 760, - 146, 945, 947, 760, 945, 760, 948, 949, - 760, 943, 760, 760, 945, 760, 943, 760, - 943, 840, 841, 842, 843, 844, 845, 846, - 950, 848, 849, 850, 851, 852, 853, 854, - 952, 953, 954, 955, 956, 957, 952, 953, - 954, 955, 956, 957, 952, 951, 958, 760, - 761, 759, 760, 959, 959, 959, 945, 760, - 790, 791, 792, 944, 942, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 808, 809, 810, 760, - 948, 960, 760, 760, 943, 959, 959, 945, - 959, 959, 945, 959, 959, 959, 945, 959, - 959, 945, 959, 959, 945, 959, 959, 760, - 945, 945, 954, 955, 956, 957, 951, 952, - 954, 955, 956, 957, 951, 952, 954, 955, - 956, 957, 951, 952, 954, 955, 956, 957, - 951, 952, 954, 955, 956, 957, 951, 952, - 954, 955, 956, 957, 951, 952, 954, 955, - 956, 957, 951, 952, 954, 955, 956, 957, - 951, 952, 954, 955, 956, 957, 951, 952, - 953, 958, 955, 956, 957, 951, 952, 953, - 955, 956, 957, 951, 952, 953, 955, 956, - 957, 951, 952, 953, 955, 956, 957, 951, - 952, 953, 955, 956, 957, 951, 952, 953, - 955, 956, 957, 951, 952, 953, 955, 956, - 957, 951, 952, 953, 955, 956, 957, 951, - 952, 953, 955, 956, 957, 951, 952, 953, - 954, 958, 956, 957, 951, 952, 953, 954, - 956, 957, 951, 952, 953, 954, 956, 957, - 951, 952, 953, 954, 956, 957, 951, 952, - 953, 954, 956, 961, 960, 955, 760, 958, - 959, 760, 943, 945, 144, 3, 1, 962, - 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 214, 973, 216, 974, 975, 976, - 977, 978, 979, 751, 1, 144, 980, 145, - 3, 144, 3, 144, 3, 1, 980, 981, - 981, 980, 980, 981, 980, 980, 981, 980, - 980, 980, 981, 980, 981, 980, 980, 981, - 980, 980, 980, 980, 981, 980, 980, 981, - 981, 980, 980, 981, 980, 980, 981, 982, - 983, 984, 985, 986, 988, 989, 990, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 987, 991, 981, 980, 980, 980, 980, - 981, 980, 981, 980, 980, 981, 981, 981, - 980, 981, 981, 981, 980, 980, 980, 980, - 981, 981, 981, 981, 981, 981, 981, 980, - 981, 981, 981, 981, 981, 981, 980, 981, - 981, 981, 981, 981, 980, 980, 980, 980, - 981, 980, 980, 980, 980, 980, 981, 980, - 980, 981, 980, 980, 980, 980, 981, 980, - 980, 981, 981, 981, 981, 981, 981, 980, - 980, 980, 980, 980, 980, 981, 980, 980, - 980, 981, 981, 981, 981, 981, 981, 980, - 980, 981, 980, 980, 980, 980, 980, 981, - 980, 980, 981, 980, 981, 980, 980, 981, - 980, 981, 980, 980, 980, 980, 980, 981, - 980, 981, 980, 980, 980, 980, 981, 980, - 981, 1010, 1011, 1012, 1013, 1014, 1015, 1016, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1028, 1029, 1030, 981, 980, - 980, 981, 980, 980, 980, 981, 980, 980, - 980, 980, 981, 980, 981, 980, 980, 981, - 980, 980, 981, 980, 981, 981, 981, 980, - 980, 981, 980, 980, 981, 980, 980, 981, - 980, 981, 980, 980, 980, 980, 980, 981, - 980, 981, 980, 980, 981, 981, 981, 980, - 980, 980, 981, 980, 981, 980, 981, 980, - 980, 980, 980, 980, 981, 980, 980, 981, - 1031, 1032, 1033, 1034, 1035, 981, 980, 981, - 980, 981, 980, 981, 980, 981, 980, 981, - 1036, 1037, 981, 980, 981, 980, 981, 1038, - 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, - 1047, 1048, 1049, 1050, 1051, 1052, 981, 980, - 980, 981, 980, 981, 980, 981, 980, 980, - 980, 980, 981, 980, 980, 981, 981, 981, - 981, 980, 980, 981, 980, 981, 980, 980, - 981, 981, 981, 980, 980, 981, 980, 980, - 980, 981, 980, 980, 980, 980, 981, 980, - 980, 980, 981, 980, 980, 981, 1053, 1054, - 1039, 981, 980, 981, 980, 980, 981, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 981, 1062, - 1063, 1064, 1065, 1066, 1067, 1068, 981, 980, - 981, 980, 981, 980, 981, 980, 980, 980, - 980, 980, 981, 980, 981, 980, 981, 980, - 981, 1069, 1070, 1071, 1072, 1073, 1074, 1075, - 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, - 1084, 1085, 1082, 1086, 1087, 1088, 1089, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, - 1099, 981, 980, 980, 981, 981, 980, 981, - 981, 980, 980, 980, 981, 980, 980, 981, - 980, 980, 981, 981, 981, 980, 980, 980, - 981, 980, 981, 980, 980, 980, 981, 980, - 980, 980, 980, 980, 980, 980, 981, 980, - 981, 980, 980, 981, 980, 981, 981, 980, - 980, 980, 981, 981, 981, 980, 981, 980, - 980, 981, 980, 981, 980, 981, 980, 980, - 980, 981, 980, 980, 980, 981, 980, 980, - 981, 980, 981, 980, 980, 981, 980, 980, - 981, 980, 980, 980, 980, 981, 981, 981, - 980, 980, 980, 980, 981, 980, 981, 1100, - 1101, 1102, 1103, 981, 980, 981, 980, 981, - 980, 980, 981, 981, 981, 980, 1104, 981, - 980, 981, 1105, 1106, 1107, 1108, 1109, 1110, - 981, 980, 980, 980, 981, 981, 981, 981, - 980, 980, 981, 980, 980, 981, 981, 981, - 980, 980, 980, 980, 981, 1111, 1101, 1112, - 1113, 1114, 981, 980, 980, 980, 980, 980, - 981, 980, 981, 980, 981, 980, 981, 1115, - 981, 980, 981, 1116, 981, 1117, 1118, 1119, - 1121, 1120, 981, 980, 981, 981, 980, 980, - 145, 3, 144, 3, 1, 145, 145, 3, - 1, 3, 145, 3, 145, 3, 1, 145, - 3, 145, 3, 1, 145, 3, 1, 145, - 3, 145, 3, 145, 3, 1, 145, 3, - 1, 145, 3, 145, 3, 1, 145, 3, - 3, 145, 1, 3, 3, 145, 1, 145, - 3, 145, 1, 3, 3, 145, 145, 145, - 145, 3, 145, 3, 145, 3, 1, 145, - 145, 145, 145, 3, 3, 145, 3, 145, - 3, 1, 145, 145, 145, 3, 145, 3, - 1, 3, 145, 3, 1, 3, 145, 3, - 145, 3, 1, 145, 145, 3, 1, 1122, - 1123, 751, 1, 145, 145, 3, 1, 145, - 145, 3, 1, 751, 1, 1124, 1126, 1127, - 1128, 1129, 1130, 1131, 1126, 1127, 1128, 1129, - 1130, 1131, 1126, 751, 1125, 958, 1, 3, - 759, 3, 1, 943, 943, 943, 945, 1, - 943, 943, 945, 943, 943, 945, 943, 943, - 943, 945, 943, 943, 945, 943, 943, 945, - 943, 943, 1, 945, 1128, 1129, 1130, 1131, - 1125, 1126, 1128, 1129, 1130, 1131, 1125, 1126, - 1128, 1129, 1130, 1131, 1125, 1126, 1128, 1129, - 1130, 1131, 1125, 1126, 1128, 1129, 1130, 1131, - 1125, 1126, 1128, 1129, 1130, 1131, 1125, 1126, - 1128, 1129, 1130, 1131, 1125, 1126, 1128, 1129, - 1130, 1131, 1125, 1126, 1128, 1129, 1130, 1131, - 1125, 1126, 1127, 958, 1129, 1130, 1131, 1125, - 1126, 1127, 1129, 1130, 1131, 1125, 1126, 1127, - 1129, 1130, 1131, 1125, 1126, 1127, 1129, 1130, - 1131, 1125, 1126, 1127, 1129, 1130, 1131, 1125, - 1126, 1127, 1129, 1130, 1131, 1125, 1126, 1127, - 1129, 1130, 1131, 1125, 1126, 1127, 1129, 1130, - 1131, 1125, 1126, 1127, 1129, 1130, 1131, 1125, - 1126, 1127, 1128, 958, 1130, 1131, 1125, 1126, - 1127, 1128, 1130, 1131, 1125, 1126, 1127, 1128, - 1130, 1131, 1125, 1126, 1127, 1128, 1130, 1131, - 1125, 1126, 1127, 1128, 1130, 1132, 1133, 1129, - 751, 1, 958, 943, 3, 943, 945, 3, - 945, 3, 1, 943, 1134, 1135, 751, 1, - 144, 3, 1, 3, 3, 144, 3, 1, - 1137, 1138, 1139, 1140, 1141, 1136, 1, 1142, - 1143, 1144, 1145, 1146, 1147, 751, 1, 328, - 3, 1, 328, 3, 1, 3, 328, 3, - 1, 328, 3, 1, 3, 328, 3, 1, - 328, 3, 1, 1148, 751, 1, 3, 144, - 3, 1, 1149, 751, 1, 3, 144, 3, - 1, 1150, 751, 1, 3, 144, 3, 1, - 304, 214, 216, 1151, 1152, 1153, 1154, 1155, - 1156, 304, 214, 214, 1157, 216, 304, 214, - 1158, 1159, 304, 214, 1160, 751, 1161, 751, - 1162, 1163, 1164, 1165, 1166, 1167, 214, 1168, - 303, 214, 216, 303, 304, 1, 145, 3, - 145, 3, 1, 3, 145, 3, 145, 1, - 145, 3, 145, 3, 145, 1, 1169, 1, - 145, 1170, 1171, 1170, 1171, 1171, 1170, 1171, - 1171, 1170, 1171, 1171, 1171, 1170, 1171, 1170, - 1171, 1171, 1170, 1171, 1171, 1171, 1171, 1170, - 1171, 1171, 1170, 1170, 1171, 1171, 1170, 1171, - 1171, 1170, 1172, 1173, 1174, 1175, 1176, 1178, - 1179, 1180, 1182, 1183, 1184, 1185, 1186, 1187, - 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1177, 1181, 1170, 1171, - 1171, 1171, 1171, 1170, 1171, 1170, 1171, 1171, - 1170, 1170, 1170, 1171, 1170, 1170, 1170, 1171, - 1171, 1171, 1171, 1170, 1170, 1170, 1170, 1170, - 1170, 1170, 1171, 1170, 1170, 1170, 1170, 1170, - 1170, 1171, 1170, 1170, 1170, 1170, 1170, 1171, - 1171, 1171, 1171, 1170, 1171, 1171, 1171, 1171, - 1171, 1170, 1171, 1171, 1170, 1171, 1171, 1171, - 1171, 1170, 1171, 1171, 1170, 1170, 1170, 1170, - 1170, 1170, 1171, 1171, 1171, 1171, 1171, 1171, - 1170, 1171, 1171, 1171, 1170, 1170, 1170, 1170, - 1170, 1170, 1171, 1171, 1170, 1171, 1171, 1171, - 1171, 1171, 1170, 1171, 1171, 1170, 1171, 1170, - 1171, 1171, 1170, 1171, 1170, 1171, 1171, 1171, - 1171, 1171, 1170, 1171, 1170, 1171, 1171, 1171, - 1171, 1170, 1171, 1170, 1200, 1201, 1202, 1203, - 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, - 1220, 1170, 1171, 1171, 1170, 1171, 1171, 1171, - 1170, 1171, 1171, 1171, 1171, 1170, 1171, 1170, - 1171, 1171, 1170, 1171, 1171, 1170, 1171, 1170, - 1170, 1170, 1171, 1171, 1170, 1171, 1171, 1170, - 1171, 1171, 1170, 1171, 1170, 1171, 1171, 1171, - 1171, 1171, 1170, 1171, 1170, 1171, 1171, 1170, - 1170, 1170, 1171, 1171, 1171, 1170, 1171, 1170, - 1171, 1170, 1171, 1171, 1171, 1171, 1171, 1170, - 1171, 1171, 1170, 1221, 1222, 1223, 1224, 1225, - 1170, 1171, 1226, 1170, 1171, 1171, 1170, 1227, - 1228, 1222, 1229, 1230, 1231, 1232, 1233, 1234, - 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, - 1243, 1244, 1245, 1246, 1223, 1224, 1225, 1170, - 1171, 1226, 1171, 1170, 1171, 1170, 1171, 1170, - 1171, 1171, 1170, 1171, 1171, 1170, 1171, 1171, - 1170, 1171, 1170, 1171, 1171, 1171, 1170, 1171, - 1170, 1171, 1171, 1170, 1171, 1171, 1170, 1171, - 1171, 1171, 1170, 1170, 1171, 1171, 1171, 1170, - 1171, 1170, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1170, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1170, 1171, 1171, 1171, 1171, 1170, - 1171, 1170, 1171, 1171, 1170, 1171, 1171, 1170, - 1171, 1170, 1171, 1170, 1171, 1170, 1247, 1248, - 1249, 1170, 1171, 1171, 1170, 1171, 1170, 1171, - 1171, 1170, 1250, 1251, 1252, 1253, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, - 1264, 1170, 1171, 1171, 1170, 1171, 1170, 1171, - 1170, 1171, 1171, 1171, 1171, 1170, 1171, 1171, - 1170, 1170, 1170, 1170, 1171, 1171, 1170, 1171, - 1170, 1171, 1171, 1170, 1170, 1170, 1171, 1171, - 1170, 1171, 1171, 1171, 1170, 1171, 1171, 1171, - 1171, 1170, 1171, 1171, 1171, 1170, 1171, 1171, - 1170, 1265, 1266, 1251, 1170, 1171, 1170, 1171, - 1171, 1170, 1267, 1268, 1269, 1270, 1271, 1272, - 1273, 1170, 1274, 1275, 1276, 1277, 1278, 1279, - 1280, 1170, 1171, 1170, 1171, 1170, 1171, 1170, - 1171, 1171, 1171, 1171, 1171, 1170, 1171, 1170, - 1171, 1170, 1171, 1170, 1281, 1282, 1283, 1284, - 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1297, 1294, 1298, 1299, - 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, - 1308, 1309, 1310, 1311, 1170, 1171, 1171, 1170, - 1170, 1171, 1170, 1170, 1171, 1171, 1171, 1170, - 1171, 1171, 1170, 1171, 1171, 1170, 1170, 1170, - 1171, 1171, 1171, 1170, 1171, 1170, 1171, 1171, - 1171, 1170, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1170, 1171, 1170, 1171, 1171, 1170, 1171, - 1170, 1170, 1171, 1171, 1171, 1170, 1170, 1170, - 1171, 1170, 1171, 1171, 1170, 1171, 1170, 1171, - 1170, 1171, 1171, 1171, 1170, 1171, 1171, 1171, - 1170, 1171, 1171, 1170, 1171, 1170, 1171, 1171, - 1170, 1171, 1171, 1170, 1171, 1171, 1171, 1171, - 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1170, - 1171, 1170, 1312, 1313, 1314, 1315, 1170, 1171, - 1170, 1171, 1170, 1171, 1171, 1170, 1170, 1170, - 1171, 1316, 1170, 1171, 1170, 1317, 1318, 1319, - 1320, 1321, 1322, 1170, 1171, 1171, 1171, 1170, - 1170, 1170, 1170, 1171, 1171, 1170, 1171, 1171, - 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1170, - 1323, 1313, 1324, 1325, 1326, 1170, 1171, 1171, - 1171, 1171, 1171, 1170, 1171, 1170, 1171, 1170, - 1171, 1170, 1328, 1238, 1240, 1329, 1330, 1331, - 1332, 1333, 1334, 1328, 1238, 1238, 1238, 1240, - 1328, 1238, 1335, 1336, 1328, 1238, 1337, 1238, - 1338, 1339, 1340, 1341, 1342, 1238, 1343, 1344, - 1238, 1345, 1327, 1240, 1327, 1328, 1170, 1171, - 1171, 1171, 1170, 1171, 1171, 1170, 1171, 1171, - 1171, 1170, 1170, 1171, 1171, 1171, 1171, 1171, - 1171, 1170, 1171, 1170, 1171, 1170, 1171, 1170, - 1170, 1171, 1171, 1170, 1171, 1170, 1171, 1170, - 1171, 1171, 1170, 1171, 1171, 1170, 1171, 1171, - 1170, 1171, 1171, 1170, 1170, 1171, 1346, 1170, - 1347, 1238, 1327, 1348, 1328, 1170, 1171, 1170, - 1349, 1248, 1170, 1171, 1170, 1267, 1268, 1269, - 1270, 1271, 1272, 1350, 1170, 1351, 1170, 1171, - 1170, 1267, 1268, 1269, 1270, 1271, 1272, 1352, - 1170, 1353, 1351, 1170, 1171, 1170, 3, 145, - 145, 3, 145, 3, 145, 1, 3, 145, - 1, 3, 1, 145, 145, 3, 1, 3, - 145, 1, 3, 1, 145, 3, 145, 1, - 3, 145, 1, 3, 145, 3, 1, 3, - 145, 3, 145, 3, 1, 3, 145, 3, - 145, 1, 3, 3, 145, 1, 3, 145, - 1, 3, 1, 145, 1136, 1, 1354, 1136, - 1, 1355, 1356, 1357, 1358, 1357, 751, 1359, - 1, 144, 3, 1, 1, 144, 1, 144, - 3, 144, 1, 144, 1, 1361, 1360, 1364, - 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1373, - 1374, 1375, 1376, 1377, 1378, 1380, 1360, 1, - 1363, 1372, 1379, 1, 1362, 141, 143, 1382, - 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, - 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1381, 303, 324, 1401, 1402, 1403, 1404, - 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, - 1413, 1414, 1415, 1416, 1417, 1418, 1400, 1419, - 303, 324, 1401, 1402, 1403, 1404, 1405, 1406, - 1407, 1408, 1409, 1410, 1411, 1412, 1420, 1421, - 1415, 1416, 1422, 1418, 1400, 1424, 1425, 1426, - 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, - 1435, 1436, 1437, 1439, 330, 652, 713, 1438, - 1423, 468, 470, 1440, 1441, 1442, 1443, 1444, - 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, - 1453, 1454, 1455, 1456, 1457, 1423, 627, 648, - 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, - 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, - 1474, 1475, 1423, 1476, 627, 648, 1458, 1459, - 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, - 1468, 1469, 1477, 1478, 1472, 1473, 1479, 1475, - 1423, 627, 648, 1458, 1459, 1460, 1461, 1462, - 1463, 1464, 1465, 1466, 1467, 1468, 1480, 1470, - 1471, 1481, 1482, 1483, 1484, 1473, 1474, 1475, - 1423, 627, 648, 1458, 1459, 1460, 1461, 1462, - 1463, 1464, 1465, 1466, 1467, 1468, 1485, 1470, - 1471, 1472, 1486, 1473, 1474, 1475, 1423, 627, - 648, 1458, 1459, 1460, 1461, 1462, 1463, 1464, - 1465, 1466, 1467, 1468, 1487, 1470, 1471, 1472, - 1488, 1473, 1474, 1475, 1423, 627, 648, 1458, - 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, - 1467, 1468, 1489, 1470, 1471, 1472, 1490, 1473, - 1474, 1475, 1423, 627, 648, 1458, 1459, 1460, - 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, - 1469, 1470, 1471, 1472, 1473, 1491, 1475, 1423, - 917, 938, 1493, 1494, 1495, 1496, 1497, 1498, - 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, - 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1492, - 917, 938, 1493, 1494, 1495, 1496, 1497, 1498, - 1499, 1500, 1501, 1502, 1503, 1514, 1505, 1506, - 1515, 1511, 1512, 1513, 1492, 1516, 917, 938, - 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, - 1501, 1502, 1503, 1514, 1517, 1518, 1515, 1511, - 1519, 1513, 1492, 917, 938, 1493, 1494, 1495, - 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, - 1520, 1505, 1506, 1515, 1521, 1511, 1512, 1513, - 1492, 917, 938, 1493, 1494, 1495, 1496, 1497, - 1498, 1499, 1500, 1501, 1502, 1503, 1522, 1505, - 1506, 1515, 1523, 1511, 1512, 1513, 1492, 917, - 938, 1493, 1494, 1495, 1496, 1497, 1498, 1499, - 1500, 1501, 1502, 1503, 1524, 1505, 1506, 1515, - 1525, 1511, 1512, 1513, 1492, 1119, 1121, 1527, - 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, - 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, - 1544, 1526, 1327, 1348, 1546, 1547, 1548, 1549, - 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, - 1558, 1559, 1560, 1561, 1562, 1563, 1545, 1327, - 1348, 1546, 1547, 1548, 1549, 1550, 1551, 1552, - 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, - 1561, 1564, 1563, 1545, 1565, 1327, 1348, 1546, - 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, - 1555, 1556, 1557, 1566, 1567, 1560, 1561, 1568, - 1563, 1545, -} - -var _graphclust_trans_targs []int16 = []int16{ - 1528, 0, 1528, 1529, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, - 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 66, 67, 68, - 69, 70, 72, 73, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 91, 92, 94, 102, 134, - 139, 141, 148, 153, 95, 96, 97, 98, - 99, 100, 101, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 135, 136, 137, 138, 140, 142, - 143, 144, 145, 146, 147, 149, 150, 151, - 152, 154, 156, 157, 158, 2, 159, 3, - 1528, 1530, 1528, 1528, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, - 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 226, 231, 250, - 251, 252, 1531, 229, 230, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 254, - 255, 256, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, - 272, 274, 275, 277, 285, 317, 322, 324, - 331, 336, 278, 279, 280, 281, 282, 283, - 284, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, - 318, 319, 320, 321, 323, 325, 326, 327, - 328, 329, 330, 332, 333, 334, 335, 162, - 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 356, 357, 163, 359, 361, 362, - 1532, 1528, 1533, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 406, - 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 428, 429, 430, 431, - 432, 434, 435, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 453, 454, 456, 464, 496, 501, - 503, 510, 515, 457, 458, 459, 460, 461, - 462, 463, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, - 495, 497, 498, 499, 500, 502, 504, 505, - 506, 507, 508, 509, 511, 512, 513, 514, - 516, 518, 519, 520, 364, 521, 365, 1534, - 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, - 586, 588, 593, 612, 613, 614, 1535, 591, - 592, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 616, 617, 618, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, - 630, 631, 632, 633, 634, 636, 637, 639, - 647, 679, 684, 686, 693, 698, 640, 641, - 642, 643, 644, 645, 646, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 680, 681, 682, 683, - 685, 687, 688, 689, 690, 691, 692, 694, - 695, 696, 697, 524, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 718, 719, - 525, 721, 723, 724, 522, 729, 730, 732, - 734, 737, 740, 764, 1536, 746, 1537, 736, - 1538, 739, 742, 744, 745, 748, 749, 753, - 754, 755, 756, 757, 758, 759, 1539, 752, - 763, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 780, - 781, 782, 783, 785, 786, 789, 790, 791, - 792, 793, 794, 795, 796, 800, 801, 803, - 804, 787, 806, 813, 815, 817, 819, 807, - 808, 809, 810, 811, 812, 814, 816, 818, - 820, 821, 822, 823, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, - 839, 840, 1540, 825, 826, 843, 844, 160, - 848, 849, 851, 1054, 1057, 1060, 1084, 1541, - 1528, 1542, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, - 887, 888, 889, 890, 891, 892, 894, 895, - 896, 897, 898, 899, 900, 901, 902, 903, - 904, 905, 906, 907, 908, 909, 910, 911, - 912, 913, 914, 916, 921, 940, 941, 942, - 1543, 919, 920, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 944, 945, 946, - 948, 949, 950, 951, 952, 953, 954, 955, - 956, 957, 958, 959, 960, 961, 962, 964, - 965, 967, 975, 1007, 1012, 1014, 1021, 1026, - 968, 969, 970, 971, 972, 973, 974, 976, - 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1008, 1009, - 1010, 1011, 1013, 1015, 1016, 1017, 1018, 1019, - 1020, 1022, 1023, 1024, 1025, 852, 1027, 1028, - 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, - 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, - 1046, 1047, 853, 1049, 1051, 1052, 1066, 1544, - 1056, 1545, 1059, 1062, 1064, 1065, 1068, 1069, - 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1546, - 1072, 1083, 1086, 1245, 1246, 1247, 1248, 1249, - 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, - 1258, 1259, 1260, 1261, 1547, 1528, 1100, 1101, - 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, - 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, - 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, - 1126, 1127, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1151, - 1152, 1153, 1154, 1155, 1157, 1158, 1160, 1161, - 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, - 1170, 1171, 1172, 1173, 1174, 1176, 1177, 1179, - 1187, 1219, 1224, 1226, 1233, 1238, 1180, 1181, - 1182, 1183, 1184, 1185, 1186, 1188, 1189, 1190, - 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, - 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, - 1215, 1216, 1217, 1218, 1220, 1221, 1222, 1223, - 1225, 1227, 1228, 1229, 1230, 1231, 1232, 1234, - 1235, 1236, 1237, 1239, 1241, 1242, 1243, 1087, - 1244, 1088, 1263, 1264, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1278, 1279, 1281, 1282, - 1265, 1284, 1291, 1293, 1295, 1297, 1285, 1286, - 1287, 1288, 1289, 1290, 1292, 1294, 1296, 1298, - 1299, 1300, 1301, 1506, 1507, 1508, 1509, 1510, - 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, - 1519, 1548, 1528, 1549, 1315, 1316, 1317, 1318, - 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, - 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, - 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, - 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, - 1360, 1361, 1362, 1363, 1364, 1366, 1371, 1390, - 1391, 1392, 1550, 1369, 1370, 1372, 1373, 1374, - 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, - 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1394, - 1395, 1396, 1398, 1399, 1400, 1401, 1402, 1403, - 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, - 1412, 1414, 1415, 1417, 1425, 1457, 1462, 1464, - 1471, 1476, 1418, 1419, 1420, 1421, 1422, 1423, - 1424, 1426, 1427, 1428, 1429, 1430, 1431, 1432, - 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, - 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, - 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, - 1458, 1459, 1460, 1461, 1463, 1465, 1466, 1467, - 1468, 1469, 1470, 1472, 1473, 1474, 1475, 1302, - 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, - 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, - 1493, 1494, 1496, 1497, 1303, 1499, 1501, 1502, - 1504, 1505, 1522, 1523, 1524, 1525, 1526, 1527, - 1528, 1, 1529, 160, 161, 363, 845, 846, - 847, 850, 1085, 1262, 1265, 1266, 1275, 1276, - 1277, 1280, 1283, 1520, 1521, 1528, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, - 14, 43, 65, 71, 74, 90, 93, 155, - 1528, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 203, 225, 358, 257, - 273, 360, 355, 227, 228, 253, 276, 1528, - 523, 725, 726, 727, 728, 731, 765, 784, - 788, 797, 798, 799, 802, 805, 841, 842, - 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 405, 427, 433, 436, 452, - 455, 517, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 565, 587, 720, - 619, 635, 722, 717, 589, 590, 615, 638, - 733, 747, 760, 761, 762, 735, 743, 738, - 741, 750, 751, 824, 1528, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 863, 864, - 1053, 915, 1048, 1067, 1080, 1081, 1082, 963, - 1050, 1045, 893, 947, 917, 918, 943, 966, - 1055, 1063, 1058, 1061, 1070, 1071, 1528, 1089, - 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, - 1098, 1099, 1128, 1150, 1156, 1159, 1175, 1178, - 1240, 1528, 1304, 1305, 1306, 1307, 1308, 1309, - 1310, 1311, 1312, 1313, 1314, 1343, 1365, 1498, - 1397, 1413, 1503, 1495, 1500, 1367, 1368, 1393, - 1416, -} - -var _graphclust_trans_actions []byte = []byte{ - 31, 0, 27, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 34, 55, 29, 19, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 40, 25, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 40, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 0, 40, 0, - 40, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, - 17, 40, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 40, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, - 0, 51, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 40, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 40, 23, 40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 43, 1, 47, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, -} - -var _graphclust_to_state_actions []byte = []byte{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -} - -var _graphclust_from_state_actions []byte = []byte{ - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -} - -var _graphclust_eof_trans []int16 = []int16{ - 0, 0, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, - 0, 0, 147, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 147, 148, 147, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 147, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 0, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 0, 0, 0, - 0, 0, 0, 147, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 147, 761, - 761, 147, 761, 761, 147, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 147, - 761, 761, 761, 761, 0, 0, 0, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1171, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1382, 1401, 1401, 1424, 1424, 1424, 1424, - 1424, 1424, 1424, 1424, 1424, 1493, 1493, 1493, - 1493, 1493, 1493, 1527, 1546, 1546, 1546, -} - -const graphclust_start int = 1528 -const graphclust_first_final int = 1528 -const graphclust_error int = 0 - -const graphclust_en_main int = 1528 - -//line grapheme_clusters.rl:14 - -var Error = errors.New("invalid UTF8 text") - -// ScanGraphemeClusters is a split function for bufio.Scanner that splits -// on grapheme cluster boundaries. -func ScanGraphemeClusters(data []byte, atEOF bool) (int, []byte, error) { - if len(data) == 0 { - return 0, nil, nil - } - - // Ragel state - cs := 0 // Current State - p := 0 // "Pointer" into data - pe := len(data) // End-of-data "pointer" - ts := 0 - te := 0 - act := 0 - eof := pe - - // Make Go compiler happy - _ = ts - _ = te - _ = act - _ = eof - - startPos := 0 - endPos := 0 - -//line grapheme_clusters.go:3787 - { - cs = graphclust_start - ts = 0 - te = 0 - act = 0 - } - -//line grapheme_clusters.go:3795 - { - var _klen int - var _trans int - var _acts int - var _nacts uint - var _keys int - if p == pe { - goto _test_eof - } - if cs == 0 { - goto _out - } - _resume: - _acts = int(_graphclust_from_state_actions[cs]) - _nacts = uint(_graphclust_actions[_acts]) - _acts++ - for ; _nacts > 0; _nacts-- { - _acts++ - switch _graphclust_actions[_acts-1] { - case 4: -//line NONE:1 - ts = p - -//line grapheme_clusters.go:3818 - } - } - - _keys = int(_graphclust_key_offsets[cs]) - _trans = int(_graphclust_index_offsets[cs]) - - _klen = int(_graphclust_single_lengths[cs]) - if _klen > 0 { - _lower := int(_keys) - var _mid int - _upper := int(_keys + _klen - 1) - for { - if _upper < _lower { - break - } - - _mid = _lower + ((_upper - _lower) >> 1) - switch { - case data[p] < _graphclust_trans_keys[_mid]: - _upper = _mid - 1 - case data[p] > _graphclust_trans_keys[_mid]: - _lower = _mid + 1 - default: - _trans += int(_mid - int(_keys)) - goto _match - } - } - _keys += _klen - _trans += _klen - } - - _klen = int(_graphclust_range_lengths[cs]) - if _klen > 0 { - _lower := int(_keys) - var _mid int - _upper := int(_keys + (_klen << 1) - 2) - for { - if _upper < _lower { - break - } - - _mid = _lower + (((_upper - _lower) >> 1) & ^1) - switch { - case data[p] < _graphclust_trans_keys[_mid]: - _upper = _mid - 2 - case data[p] > _graphclust_trans_keys[_mid+1]: - _lower = _mid + 2 - default: - _trans += int((_mid - int(_keys)) >> 1) - goto _match - } - } - _trans += _klen - } - - _match: - _trans = int(_graphclust_indicies[_trans]) - _eof_trans: - cs = int(_graphclust_trans_targs[_trans]) - - if _graphclust_trans_actions[_trans] == 0 { - goto _again - } - - _acts = int(_graphclust_trans_actions[_trans]) - _nacts = uint(_graphclust_actions[_acts]) - _acts++ - for ; _nacts > 0; _nacts-- { - _acts++ - switch _graphclust_actions[_acts-1] { - case 0: -//line grapheme_clusters.rl:47 - - startPos = p - - case 1: -//line grapheme_clusters.rl:51 - - endPos = p - - case 5: -//line NONE:1 - te = p + 1 - - case 6: -//line grapheme_clusters.rl:55 - act = 3 - case 7: -//line grapheme_clusters.rl:55 - act = 4 - case 8: -//line grapheme_clusters.rl:55 - te = p + 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 9: -//line grapheme_clusters.rl:55 - te = p + 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 10: -//line grapheme_clusters.rl:55 - te = p - p-- - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 11: -//line grapheme_clusters.rl:55 - te = p - p-- - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 12: -//line grapheme_clusters.rl:55 - te = p - p-- - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 13: -//line grapheme_clusters.rl:55 - te = p - p-- - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 14: -//line grapheme_clusters.rl:55 - te = p - p-- - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 15: -//line grapheme_clusters.rl:55 - te = p - p-- - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 16: -//line grapheme_clusters.rl:55 - p = (te) - 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 17: -//line grapheme_clusters.rl:55 - p = (te) - 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 18: -//line grapheme_clusters.rl:55 - p = (te) - 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 19: -//line grapheme_clusters.rl:55 - p = (te) - 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 20: -//line grapheme_clusters.rl:55 - p = (te) - 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 21: -//line grapheme_clusters.rl:55 - p = (te) - 1 - { - return endPos + 1, data[startPos : endPos+1], nil - } - case 22: -//line NONE:1 - switch act { - case 0: - { - cs = 0 - goto _again - } - case 3: - { - p = (te) - 1 - - return endPos + 1, data[startPos : endPos+1], nil - } - case 4: - { - p = (te) - 1 - - return endPos + 1, data[startPos : endPos+1], nil - } - } - -//line grapheme_clusters.go:4017 - } - } - - _again: - _acts = int(_graphclust_to_state_actions[cs]) - _nacts = uint(_graphclust_actions[_acts]) - _acts++ - for ; _nacts > 0; _nacts-- { - _acts++ - switch _graphclust_actions[_acts-1] { - case 2: -//line NONE:1 - ts = 0 - - case 3: -//line NONE:1 - act = 0 - -//line grapheme_clusters.go:4035 - } - } - - if cs == 0 { - goto _out - } - p++ - if p != pe { - goto _resume - } - _test_eof: - { - } - if p == eof { - if _graphclust_eof_trans[cs] > 0 { - _trans = int(_graphclust_eof_trans[cs] - 1) - goto _eof_trans - } - } - - _out: - { - } - } - -//line grapheme_clusters.rl:117 - - // If we fall out here then we were unable to complete a sequence. - // If we weren't able to complete a sequence then either we've - // reached the end of a partial buffer (so there's more data to come) - // or we have an isolated symbol that would normally be part of a - // grapheme cluster but has appeared in isolation here. - - if !atEOF { - // Request more - return 0, nil, nil - } - - // Just take the first UTF-8 sequence and return that. - _, seqLen := utf8.DecodeRune(data) - return seqLen, data[:seqLen], nil -} diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/LICENSE b/vendor/github.com/apparentlymart/go-textseg/v13/LICENSE similarity index 100% rename from vendor/github.com/apparentlymart/go-textseg/v12/LICENSE rename to vendor/github.com/apparentlymart/go-textseg/v13/LICENSE diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/all_tokens.go b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/all_tokens.go similarity index 100% rename from vendor/github.com/apparentlymart/go-textseg/v12/textseg/all_tokens.go rename to vendor/github.com/apparentlymart/go-textseg/v13/textseg/all_tokens.go diff --git a/vendor/github.com/apparentlymart/go-textseg/v13/textseg/emoji_table.rl b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/emoji_table.rl new file mode 100644 index 000000000..f2cb484a3 --- /dev/null +++ b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/emoji_table.rl @@ -0,0 +1,525 @@ +# The following Ragel file was autogenerated with unicode2ragel.rb +# from: https://www.unicode.org/Public/13.0.0/ucd/emoji/emoji-data.txt +# +# It defines ["Extended_Pictographic"]. +# +# To use this, make sure that your alphtype is set to byte, +# and that your input is in utf8. + +%%{ + machine Emoji; + + Extended_Pictographic = + 0xC2 0xA9 #E0.6 [1] (©️) copyright + | 0xC2 0xAE #E0.6 [1] (®️) registered + | 0xE2 0x80 0xBC #E0.6 [1] (‼️) double exclamation mark + | 0xE2 0x81 0x89 #E0.6 [1] (⁉️) exclamation question ... + | 0xE2 0x84 0xA2 #E0.6 [1] (™️) trade mark + | 0xE2 0x84 0xB9 #E0.6 [1] (ℹ️) information + | 0xE2 0x86 0x94..0x99 #E0.6 [6] (↔️..↙️) left-right arrow..do... + | 0xE2 0x86 0xA9..0xAA #E0.6 [2] (↩️..↪️) right arrow curving ... + | 0xE2 0x8C 0x9A..0x9B #E0.6 [2] (⌚..⌛) watch..hourglass done + | 0xE2 0x8C 0xA8 #E1.0 [1] (⌨️) keyboard + | 0xE2 0x8E 0x88 #E0.0 [1] (⎈) HELM SYMBOL + | 0xE2 0x8F 0x8F #E1.0 [1] (⏏️) eject button + | 0xE2 0x8F 0xA9..0xAC #E0.6 [4] (⏩..⏬) fast-forward button..f... + | 0xE2 0x8F 0xAD..0xAE #E0.7 [2] (⏭️..⏮️) next track button..l... + | 0xE2 0x8F 0xAF #E1.0 [1] (⏯️) play or pause button + | 0xE2 0x8F 0xB0 #E0.6 [1] (⏰) alarm clock + | 0xE2 0x8F 0xB1..0xB2 #E1.0 [2] (⏱️..⏲️) stopwatch..timer clock + | 0xE2 0x8F 0xB3 #E0.6 [1] (⏳) hourglass not done + | 0xE2 0x8F 0xB8..0xBA #E0.7 [3] (⏸️..⏺️) pause button..record... + | 0xE2 0x93 0x82 #E0.6 [1] (Ⓜ️) circled M + | 0xE2 0x96 0xAA..0xAB #E0.6 [2] (▪️..▫️) black small square..... + | 0xE2 0x96 0xB6 #E0.6 [1] (▶️) play button + | 0xE2 0x97 0x80 #E0.6 [1] (◀️) reverse button + | 0xE2 0x97 0xBB..0xBE #E0.6 [4] (◻️..◾) white medium square..... + | 0xE2 0x98 0x80..0x81 #E0.6 [2] (☀️..☁️) sun..cloud + | 0xE2 0x98 0x82..0x83 #E0.7 [2] (☂️..☃️) umbrella..snowman + | 0xE2 0x98 0x84 #E1.0 [1] (☄️) comet + | 0xE2 0x98 0x85 #E0.0 [1] (★) BLACK STAR + | 0xE2 0x98 0x87..0x8D #E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION + | 0xE2 0x98 0x8E #E0.6 [1] (☎️) telephone + | 0xE2 0x98 0x8F..0x90 #E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLO... + | 0xE2 0x98 0x91 #E0.6 [1] (☑️) check box with check + | 0xE2 0x98 0x92 #E0.0 [1] (☒) BALLOT BOX WITH X + | 0xE2 0x98 0x94..0x95 #E0.6 [2] (☔..☕) umbrella with rain dro... + | 0xE2 0x98 0x96..0x97 #E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLA... + | 0xE2 0x98 0x98 #E1.0 [1] (☘️) shamrock + | 0xE2 0x98 0x99..0x9C #E0.0 [4] (☙..☜) REVERSED ROTATED FLORA... + | 0xE2 0x98 0x9D #E0.6 [1] (☝️) index pointing up + | 0xE2 0x98 0x9E..0x9F #E0.0 [2] (☞..☟) WHITE RIGHT POINTING I... + | 0xE2 0x98 0xA0 #E1.0 [1] (☠️) skull and crossbones + | 0xE2 0x98 0xA1 #E0.0 [1] (☡) CAUTION SIGN + | 0xE2 0x98 0xA2..0xA3 #E1.0 [2] (☢️..☣️) radioactive..biohazard + | 0xE2 0x98 0xA4..0xA5 #E0.0 [2] (☤..☥) CADUCEUS..ANKH + | 0xE2 0x98 0xA6 #E1.0 [1] (☦️) orthodox cross + | 0xE2 0x98 0xA7..0xA9 #E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERU... + | 0xE2 0x98 0xAA #E0.7 [1] (☪️) star and crescent + | 0xE2 0x98 0xAB..0xAD #E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER A... + | 0xE2 0x98 0xAE #E1.0 [1] (☮️) peace symbol + | 0xE2 0x98 0xAF #E0.7 [1] (☯️) yin yang + | 0xE2 0x98 0xB0..0xB7 #E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TR... + | 0xE2 0x98 0xB8..0xB9 #E0.7 [2] (☸️..☹️) wheel of dharma..fro... + | 0xE2 0x98 0xBA #E0.6 [1] (☺️) smiling face + | 0xE2 0x98 0xBB..0xBF #E0.0 [5] (☻..☿) BLACK SMILING FACE..ME... + | 0xE2 0x99 0x80 #E4.0 [1] (♀️) female sign + | 0xE2 0x99 0x81 #E0.0 [1] (♁) EARTH + | 0xE2 0x99 0x82 #E4.0 [1] (♂️) male sign + | 0xE2 0x99 0x83..0x87 #E0.0 [5] (♃..♇) JUPITER..PLUTO + | 0xE2 0x99 0x88..0x93 #E0.6 [12] (♈..♓) Aries..Pisces + | 0xE2 0x99 0x94..0x9E #E0.0 [11] (♔..♞) WHITE CHESS KING..BLAC... + | 0xE2 0x99 0x9F #E11.0 [1] (♟️) chess pawn + | 0xE2 0x99 0xA0 #E0.6 [1] (♠️) spade suit + | 0xE2 0x99 0xA1..0xA2 #E0.0 [2] (♡..♢) WHITE HEART SUIT..WHIT... + | 0xE2 0x99 0xA3 #E0.6 [1] (♣️) club suit + | 0xE2 0x99 0xA4 #E0.0 [1] (♤) WHITE SPADE SUIT + | 0xE2 0x99 0xA5..0xA6 #E0.6 [2] (♥️..♦️) heart suit..diamond ... + | 0xE2 0x99 0xA7 #E0.0 [1] (♧) WHITE CLUB SUIT + | 0xE2 0x99 0xA8 #E0.6 [1] (♨️) hot springs + | 0xE2 0x99 0xA9..0xBA #E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLIN... + | 0xE2 0x99 0xBB #E0.6 [1] (♻️) recycling symbol + | 0xE2 0x99 0xBC..0xBD #E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL.... + | 0xE2 0x99 0xBE #E11.0 [1] (♾️) infinity + | 0xE2 0x99 0xBF #E0.6 [1] (♿) wheelchair symbol + | 0xE2 0x9A 0x80..0x85 #E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 + | 0xE2 0x9A 0x90..0x91 #E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG + | 0xE2 0x9A 0x92 #E1.0 [1] (⚒️) hammer and pick + | 0xE2 0x9A 0x93 #E0.6 [1] (⚓) anchor + | 0xE2 0x9A 0x94 #E1.0 [1] (⚔️) crossed swords + | 0xE2 0x9A 0x95 #E4.0 [1] (⚕️) medical symbol + | 0xE2 0x9A 0x96..0x97 #E1.0 [2] (⚖️..⚗️) balance scale..alembic + | 0xE2 0x9A 0x98 #E0.0 [1] (⚘) FLOWER + | 0xE2 0x9A 0x99 #E1.0 [1] (⚙️) gear + | 0xE2 0x9A 0x9A #E0.0 [1] (⚚) STAFF OF HERMES + | 0xE2 0x9A 0x9B..0x9C #E1.0 [2] (⚛️..⚜️) atom symbol..fleur-d... + | 0xE2 0x9A 0x9D..0x9F #E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..T... + | 0xE2 0x9A 0xA0..0xA1 #E0.6 [2] (⚠️..⚡) warning..high voltage + | 0xE2 0x9A 0xA2..0xA6 #E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..M... + | 0xE2 0x9A 0xA7 #E13.0 [1] (⚧️) transgender symbol + | 0xE2 0x9A 0xA8..0xA9 #E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STR... + | 0xE2 0x9A 0xAA..0xAB #E0.6 [2] (⚪..⚫) white circle..black ci... + | 0xE2 0x9A 0xAC..0xAF #E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIR... + | 0xE2 0x9A 0xB0..0xB1 #E1.0 [2] (⚰️..⚱️) coffin..funeral urn + | 0xE2 0x9A 0xB2..0xBC #E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE + | 0xE2 0x9A 0xBD..0xBE #E0.6 [2] (⚽..⚾) soccer ball..baseball + | 0xE2 0x9A 0xBF..0xFF #E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRA... + | 0xE2 0x9B 0x00..0x83 # + | 0xE2 0x9B 0x84..0x85 #E0.6 [2] (⛄..⛅) snowman without snow..... + | 0xE2 0x9B 0x86..0x87 #E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN + | 0xE2 0x9B 0x88 #E0.7 [1] (⛈️) cloud with lightning ... + | 0xE2 0x9B 0x89..0x8D #E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIE... + | 0xE2 0x9B 0x8E #E0.6 [1] (⛎) Ophiuchus + | 0xE2 0x9B 0x8F #E0.7 [1] (⛏️) pick + | 0xE2 0x9B 0x90 #E0.0 [1] (⛐) CAR SLIDING + | 0xE2 0x9B 0x91 #E0.7 [1] (⛑️) rescue worker’s helmet + | 0xE2 0x9B 0x92 #E0.0 [1] (⛒) CIRCLED CROSSING LANES + | 0xE2 0x9B 0x93 #E0.7 [1] (⛓️) chains + | 0xE2 0x9B 0x94 #E0.6 [1] (⛔) no entry + | 0xE2 0x9B 0x95..0xA8 #E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT... + | 0xE2 0x9B 0xA9 #E0.7 [1] (⛩️) shinto shrine + | 0xE2 0x9B 0xAA #E0.6 [1] (⛪) church + | 0xE2 0x9B 0xAB..0xAF #E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR... + | 0xE2 0x9B 0xB0..0xB1 #E0.7 [2] (⛰️..⛱️) mountain..umbrella o... + | 0xE2 0x9B 0xB2..0xB3 #E0.6 [2] (⛲..⛳) fountain..flag in hole + | 0xE2 0x9B 0xB4 #E0.7 [1] (⛴️) ferry + | 0xE2 0x9B 0xB5 #E0.6 [1] (⛵) sailboat + | 0xE2 0x9B 0xB6 #E0.0 [1] (⛶) SQUARE FOUR CORNERS + | 0xE2 0x9B 0xB7..0xB9 #E0.7 [3] (⛷️..⛹️) skier..person bounci... + | 0xE2 0x9B 0xBA #E0.6 [1] (⛺) tent + | 0xE2 0x9B 0xBB..0xBC #E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..... + | 0xE2 0x9B 0xBD #E0.6 [1] (⛽) fuel pump + | 0xE2 0x9B 0xBE..0xFF #E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..U... + | 0xE2 0x9C 0x00..0x81 # + | 0xE2 0x9C 0x82 #E0.6 [1] (✂️) scissors + | 0xE2 0x9C 0x83..0x84 #E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..... + | 0xE2 0x9C 0x85 #E0.6 [1] (✅) check mark button + | 0xE2 0x9C 0x88..0x8C #E0.6 [5] (✈️..✌️) airplane..victory hand + | 0xE2 0x9C 0x8D #E0.7 [1] (✍️) writing hand + | 0xE2 0x9C 0x8E #E0.0 [1] (✎) LOWER RIGHT PENCIL + | 0xE2 0x9C 0x8F #E0.6 [1] (✏️) pencil + | 0xE2 0x9C 0x90..0x91 #E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WH... + | 0xE2 0x9C 0x92 #E0.6 [1] (✒️) black nib + | 0xE2 0x9C 0x94 #E0.6 [1] (✔️) check mark + | 0xE2 0x9C 0x96 #E0.6 [1] (✖️) multiply + | 0xE2 0x9C 0x9D #E0.7 [1] (✝️) latin cross + | 0xE2 0x9C 0xA1 #E0.7 [1] (✡️) star of David + | 0xE2 0x9C 0xA8 #E0.6 [1] (✨) sparkles + | 0xE2 0x9C 0xB3..0xB4 #E0.6 [2] (✳️..✴️) eight-spoked asteris... + | 0xE2 0x9D 0x84 #E0.6 [1] (❄️) snowflake + | 0xE2 0x9D 0x87 #E0.6 [1] (❇️) sparkle + | 0xE2 0x9D 0x8C #E0.6 [1] (❌) cross mark + | 0xE2 0x9D 0x8E #E0.6 [1] (❎) cross mark button + | 0xE2 0x9D 0x93..0x95 #E0.6 [3] (❓..❕) question mark..white e... + | 0xE2 0x9D 0x97 #E0.6 [1] (❗) exclamation mark + | 0xE2 0x9D 0xA3 #E1.0 [1] (❣️) heart exclamation + | 0xE2 0x9D 0xA4 #E0.6 [1] (❤️) red heart + | 0xE2 0x9D 0xA5..0xA7 #E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HE... + | 0xE2 0x9E 0x95..0x97 #E0.6 [3] (➕..➗) plus..divide + | 0xE2 0x9E 0xA1 #E0.6 [1] (➡️) right arrow + | 0xE2 0x9E 0xB0 #E0.6 [1] (➰) curly loop + | 0xE2 0x9E 0xBF #E1.0 [1] (➿) double curly loop + | 0xE2 0xA4 0xB4..0xB5 #E0.6 [2] (⤴️..⤵️) right arrow curving ... + | 0xE2 0xAC 0x85..0x87 #E0.6 [3] (⬅️..⬇️) left arrow..down arrow + | 0xE2 0xAC 0x9B..0x9C #E0.6 [2] (⬛..⬜) black large square..wh... + | 0xE2 0xAD 0x90 #E0.6 [1] (⭐) star + | 0xE2 0xAD 0x95 #E0.6 [1] (⭕) hollow red circle + | 0xE3 0x80 0xB0 #E0.6 [1] (〰️) wavy dash + | 0xE3 0x80 0xBD #E0.6 [1] (〽️) part alternation mark + | 0xE3 0x8A 0x97 #E0.6 [1] (㊗️) Japanese “congratulat... + | 0xE3 0x8A 0x99 #E0.6 [1] (㊙️) Japanese “secret” button + | 0xF0 0x9F 0x80 0x80..0x83 #E0.0 [4] (🀀..🀃) MAHJONG TILE EAST W... + | 0xF0 0x9F 0x80 0x84 #E0.6 [1] (🀄) mahjong red dragon + | 0xF0 0x9F 0x80 0x85..0xFF #E0.0 [202] (🀅..🃎) MAHJONG TILE ... + | 0xF0 0x9F 0x81..0x82 0x00..0xFF # + | 0xF0 0x9F 0x83 0x00..0x8E # + | 0xF0 0x9F 0x83 0x8F #E0.6 [1] (🃏) joker + | 0xF0 0x9F 0x83 0x90..0xBF #E0.0 [48] (🃐..🃿) ..<... + | 0xF0 0x9F 0x84 0x8D..0x8F #E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH S... + | 0xF0 0x9F 0x84 0xAF #E0.0 [1] (🄯) COPYLEFT SYMBOL + | 0xF0 0x9F 0x85 0xAC..0xAF #E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIR... + | 0xF0 0x9F 0x85 0xB0..0xB1 #E0.6 [2] (🅰️..🅱️) A button (blood t... + | 0xF0 0x9F 0x85 0xBE..0xBF #E0.6 [2] (🅾️..🅿️) O button (blood t... + | 0xF0 0x9F 0x86 0x8E #E0.6 [1] (🆎) AB button (blood type) + | 0xF0 0x9F 0x86 0x91..0x9A #E0.6 [10] (🆑..🆚) CL button..VS button + | 0xF0 0x9F 0x86 0xAD..0xFF #E0.0 [57] (🆭..🇥) MASK WORK SYMBOL..<... + | 0xF0 0x9F 0x87 0x00..0xA5 # + | 0xF0 0x9F 0x88 0x81..0x82 #E0.6 [2] (🈁..🈂️) Japanese “here” bu... + | 0xF0 0x9F 0x88 0x83..0x8F #E0.0 [13] (🈃..🈏) ..<... + | 0xF0 0x9F 0x88 0x9A #E0.6 [1] (🈚) Japanese “free of char... + | 0xF0 0x9F 0x88 0xAF #E0.6 [1] (🈯) Japanese “reserved” bu... + | 0xF0 0x9F 0x88 0xB2..0xBA #E0.6 [9] (🈲..🈺) Japanese “prohibite... + | 0xF0 0x9F 0x88 0xBC..0xBF #E0.0 [4] (🈼..🈿) ..<... + | 0xF0 0x9F 0x89 0x89..0x8F #E0.0 [7] (🉉..🉏) ..<... + | 0xF0 0x9F 0x89 0x90..0x91 #E0.6 [2] (🉐..🉑) Japanese “bargain” ... + | 0xF0 0x9F 0x89 0x92..0xFF #E0.0 [174] (🉒..🋿) ..<... + | 0xF0 0x9F 0x9B 0xA0..0xA5 #E0.7 [6] (🛠️..🛥️) hammer and wrench... + | 0xF0 0x9F 0x9B 0xA6..0xA8 #E0.0 [3] (🛦..🛨) UP-POINTING MILITAR... + | 0xF0 0x9F 0x9B 0xA9 #E0.7 [1] (🛩️) small airplane + | 0xF0 0x9F 0x9B 0xAA #E0.0 [1] (🛪) NORTHEAST-POINTING AIR... + | 0xF0 0x9F 0x9B 0xAB..0xAC #E1.0 [2] (🛫..🛬) airplane departure.... + | 0xF0 0x9F 0x9B 0xAD..0xAF #E0.0 [3] (🛭..🛯) ..<... + | 0xF0 0x9F 0x9B 0xB0 #E0.7 [1] (🛰️) satellite + | 0xF0 0x9F 0x9B 0xB1..0xB2 #E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGIN... + | 0xF0 0x9F 0x9B 0xB3 #E0.7 [1] (🛳️) passenger ship + | 0xF0 0x9F 0x9B 0xB4..0xB6 #E3.0 [3] (🛴..🛶) kick scooter..canoe + | 0xF0 0x9F 0x9B 0xB7..0xB8 #E5.0 [2] (🛷..🛸) sled..flying saucer + | 0xF0 0x9F 0x9B 0xB9 #E11.0 [1] (🛹) skateboard + | 0xF0 0x9F 0x9B 0xBA #E12.0 [1] (🛺) auto rickshaw + | 0xF0 0x9F 0x9B 0xBB..0xBC #E13.0 [2] (🛻..🛼) pickup truck..rolle... + | 0xF0 0x9F 0x9B 0xBD..0xBF #E0.0 [3] (🛽..🛿) ..<... + | 0xF0 0x9F 0x9D 0xB4..0xBF #E0.0 [12] (🝴..🝿) ..<... + | 0xF0 0x9F 0x9F 0x95..0x9F #E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE..<... + | 0xF0 0x9F 0x9F 0xA0..0xAB #E12.0 [12] (🟠..🟫) orange circle..brow... + | 0xF0 0x9F 0x9F 0xAC..0xBF #E0.0 [20] (🟬..🟿) ..<... + | 0xF0 0x9F 0xA0 0x8C..0x8F #E0.0 [4] (🠌..🠏) ..<... + | 0xF0 0x9F 0xA1 0x88..0x8F #E0.0 [8] (🡈..🡏) ..<... + | 0xF0 0x9F 0xA1 0x9A..0x9F #E0.0 [6] (🡚..🡟) ..<... + | 0xF0 0x9F 0xA2 0x88..0x8F #E0.0 [8] (🢈..🢏) ..<... + | 0xF0 0x9F 0xA2 0xAE..0xFF #E0.0 [82] (🢮..🣿) ..<... + | 0xF0 0x9F 0xA3 0x00..0xBF # + | 0xF0 0x9F 0xA4 0x8C #E13.0 [1] (🤌) pinched fingers + | 0xF0 0x9F 0xA4 0x8D..0x8F #E12.0 [3] (🤍..🤏) white heart..pinchi... + | 0xF0 0x9F 0xA4 0x90..0x98 #E1.0 [9] (🤐..🤘) zipper-mouth face..... + | 0xF0 0x9F 0xA4 0x99..0x9E #E3.0 [6] (🤙..🤞) call me hand..cross... + | 0xF0 0x9F 0xA4 0x9F #E5.0 [1] (🤟) love-you gesture + | 0xF0 0x9F 0xA4 0xA0..0xA7 #E3.0 [8] (🤠..🤧) cowboy hat face..sn... + | 0xF0 0x9F 0xA4 0xA8..0xAF #E5.0 [8] (🤨..🤯) face with raised ey... + | 0xF0 0x9F 0xA4 0xB0 #E3.0 [1] (🤰) pregnant woman + | 0xF0 0x9F 0xA4 0xB1..0xB2 #E5.0 [2] (🤱..🤲) breast-feeding..pal... + | 0xF0 0x9F 0xA4 0xB3..0xBA #E3.0 [8] (🤳..🤺) selfie..person fencing + | 0xF0 0x9F 0xA4 0xBC..0xBE #E3.0 [3] (🤼..🤾) people wrestling..p... + | 0xF0 0x9F 0xA4 0xBF #E12.0 [1] (🤿) diving mask + | 0xF0 0x9F 0xA5 0x80..0x85 #E3.0 [6] (🥀..🥅) wilted flower..goal... + | 0xF0 0x9F 0xA5 0x87..0x8B #E3.0 [5] (🥇..🥋) 1st place medal..ma... + | 0xF0 0x9F 0xA5 0x8C #E5.0 [1] (🥌) curling stone + | 0xF0 0x9F 0xA5 0x8D..0x8F #E11.0 [3] (🥍..🥏) lacrosse..flying disc + | 0xF0 0x9F 0xA5 0x90..0x9E #E3.0 [15] (🥐..🥞) croissant..pancakes + | 0xF0 0x9F 0xA5 0x9F..0xAB #E5.0 [13] (🥟..🥫) dumpling..canned food + | 0xF0 0x9F 0xA5 0xAC..0xB0 #E11.0 [5] (🥬..🥰) leafy green..smilin... + | 0xF0 0x9F 0xA5 0xB1 #E12.0 [1] (🥱) yawning face + | 0xF0 0x9F 0xA5 0xB2 #E13.0 [1] (🥲) smiling face with tear + | 0xF0 0x9F 0xA5 0xB3..0xB6 #E11.0 [4] (🥳..🥶) partying face..cold... + | 0xF0 0x9F 0xA5 0xB7..0xB8 #E13.0 [2] (🥷..🥸) ninja..disguised face + | 0xF0 0x9F 0xA5 0xB9 #E0.0 [1] (🥹) + | 0xF0 0x9F 0xA5 0xBA #E11.0 [1] (🥺) pleading face + | 0xF0 0x9F 0xA5 0xBB #E12.0 [1] (🥻) sari + | 0xF0 0x9F 0xA5 0xBC..0xBF #E11.0 [4] (🥼..🥿) lab coat..flat shoe + | 0xF0 0x9F 0xA6 0x80..0x84 #E1.0 [5] (🦀..🦄) crab..unicorn + | 0xF0 0x9F 0xA6 0x85..0x91 #E3.0 [13] (🦅..🦑) eagle..squid + | 0xF0 0x9F 0xA6 0x92..0x97 #E5.0 [6] (🦒..🦗) giraffe..cricket + | 0xF0 0x9F 0xA6 0x98..0xA2 #E11.0 [11] (🦘..🦢) kangaroo..swan + | 0xF0 0x9F 0xA6 0xA3..0xA4 #E13.0 [2] (🦣..🦤) mammoth..dodo + | 0xF0 0x9F 0xA6 0xA5..0xAA #E12.0 [6] (🦥..🦪) sloth..oyster + | 0xF0 0x9F 0xA6 0xAB..0xAD #E13.0 [3] (🦫..🦭) beaver..seal + | 0xF0 0x9F 0xA6 0xAE..0xAF #E12.0 [2] (🦮..🦯) guide dog..white cane + | 0xF0 0x9F 0xA6 0xB0..0xB9 #E11.0 [10] (🦰..🦹) red hair..supervillain + | 0xF0 0x9F 0xA6 0xBA..0xBF #E12.0 [6] (🦺..🦿) safety vest..mechan... + | 0xF0 0x9F 0xA7 0x80 #E1.0 [1] (🧀) cheese wedge + | 0xF0 0x9F 0xA7 0x81..0x82 #E11.0 [2] (🧁..🧂) cupcake..salt + | 0xF0 0x9F 0xA7 0x83..0x8A #E12.0 [8] (🧃..🧊) beverage box..ice + | 0xF0 0x9F 0xA7 0x8B #E13.0 [1] (🧋) bubble tea + | 0xF0 0x9F 0xA7 0x8C #E0.0 [1] (🧌) + | 0xF0 0x9F 0xA7 0x8D..0x8F #E12.0 [3] (🧍..🧏) person standing..de... + | 0xF0 0x9F 0xA7 0x90..0xA6 #E5.0 [23] (🧐..🧦) face with monocle..... + | 0xF0 0x9F 0xA7 0xA7..0xBF #E11.0 [25] (🧧..🧿) red envelope..nazar... + | 0xF0 0x9F 0xA8 0x80..0xFF #E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING.... + | 0xF0 0x9F 0xA9 0x00..0xAF # + | 0xF0 0x9F 0xA9 0xB0..0xB3 #E12.0 [4] (🩰..🩳) ballet shoes..shorts + | 0xF0 0x9F 0xA9 0xB4 #E13.0 [1] (🩴) thong sandal + | 0xF0 0x9F 0xA9 0xB5..0xB7 #E0.0 [3] (🩵..🩷) ..<... + | 0xF0 0x9F 0xA9 0xB8..0xBA #E12.0 [3] (🩸..🩺) drop of blood..stet... + | 0xF0 0x9F 0xA9 0xBB..0xBF #E0.0 [5] (🩻..🩿) ..<... + | 0xF0 0x9F 0xAA 0x80..0x82 #E12.0 [3] (🪀..🪂) yo-yo..parachute + | 0xF0 0x9F 0xAA 0x83..0x86 #E13.0 [4] (🪃..🪆) boomerang..nesting ... + | 0xF0 0x9F 0xAA 0x87..0x8F #E0.0 [9] (🪇..🪏) ..<... + | 0xF0 0x9F 0xAA 0x90..0x95 #E12.0 [6] (🪐..🪕) ringed planet..banjo + | 0xF0 0x9F 0xAA 0x96..0xA8 #E13.0 [19] (🪖..🪨) military helmet..rock + | 0xF0 0x9F 0xAA 0xA9..0xAF #E0.0 [7] (🪩..🪯) ..<... + | 0xF0 0x9F 0xAA 0xB0..0xB6 #E13.0 [7] (🪰..🪶) fly..feather + | 0xF0 0x9F 0xAA 0xB7..0xBF #E0.0 [9] (🪷..🪿) ..<... + | 0xF0 0x9F 0xAB 0x80..0x82 #E13.0 [3] (🫀..🫂) anatomical heart..p... + | 0xF0 0x9F 0xAB 0x83..0x8F #E0.0 [13] (🫃..🫏) ..<... + | 0xF0 0x9F 0xAB 0x90..0x96 #E13.0 [7] (🫐..🫖) blueberries..teapot + | 0xF0 0x9F 0xAB 0x97..0xBF #E0.0 [41] (🫗..🫿) ..<... + | 0xF0 0x9F 0xB0 0x80..0xFF #E0.0[1022] (🰀..🿽) 0; _nacts-- { + _acts++ + switch _graphclust_actions[_acts-1] { + case 4: +//line NONE:1 + ts = p + +//line grapheme_clusters.go:3878 + } + } + + _keys = int(_graphclust_key_offsets[cs]) + _trans = int(_graphclust_index_offsets[cs]) + + _klen = int(_graphclust_single_lengths[cs]) + if _klen > 0 { + _lower := int(_keys) + var _mid int + _upper := int(_keys + _klen - 1) + for { + if _upper < _lower { + break + } + + _mid = _lower + ((_upper - _lower) >> 1) + switch { + case data[p] < _graphclust_trans_keys[_mid]: + _upper = _mid - 1 + case data[p] > _graphclust_trans_keys[_mid]: + _lower = _mid + 1 + default: + _trans += int(_mid - int(_keys)) + goto _match + } + } + _keys += _klen + _trans += _klen + } + + _klen = int(_graphclust_range_lengths[cs]) + if _klen > 0 { + _lower := int(_keys) + var _mid int + _upper := int(_keys + (_klen << 1) - 2) + for { + if _upper < _lower { + break + } + + _mid = _lower + (((_upper - _lower) >> 1) & ^1) + switch { + case data[p] < _graphclust_trans_keys[_mid]: + _upper = _mid - 2 + case data[p] > _graphclust_trans_keys[_mid+1]: + _lower = _mid + 2 + default: + _trans += int((_mid - int(_keys)) >> 1) + goto _match + } + } + _trans += _klen + } + + _match: + _trans = int(_graphclust_indicies[_trans]) + _eof_trans: + cs = int(_graphclust_trans_targs[_trans]) + + if _graphclust_trans_actions[_trans] == 0 { + goto _again + } + + _acts = int(_graphclust_trans_actions[_trans]) + _nacts = uint(_graphclust_actions[_acts]) + _acts++ + for ; _nacts > 0; _nacts-- { + _acts++ + switch _graphclust_actions[_acts-1] { + case 0: +//line grapheme_clusters.rl:47 + + startPos = p + + case 1: +//line grapheme_clusters.rl:51 + + endPos = p + + case 5: +//line NONE:1 + te = p + 1 + + case 6: +//line grapheme_clusters.rl:55 + act = 3 + case 7: +//line grapheme_clusters.rl:55 + act = 4 + case 8: +//line grapheme_clusters.rl:55 + te = p + 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 9: +//line grapheme_clusters.rl:55 + te = p + 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 10: +//line grapheme_clusters.rl:55 + te = p + p-- + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 11: +//line grapheme_clusters.rl:55 + te = p + p-- + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 12: +//line grapheme_clusters.rl:55 + te = p + p-- + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 13: +//line grapheme_clusters.rl:55 + te = p + p-- + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 14: +//line grapheme_clusters.rl:55 + te = p + p-- + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 15: +//line grapheme_clusters.rl:55 + te = p + p-- + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 16: +//line grapheme_clusters.rl:55 + p = (te) - 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 17: +//line grapheme_clusters.rl:55 + p = (te) - 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 18: +//line grapheme_clusters.rl:55 + p = (te) - 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 19: +//line grapheme_clusters.rl:55 + p = (te) - 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 20: +//line grapheme_clusters.rl:55 + p = (te) - 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 21: +//line grapheme_clusters.rl:55 + p = (te) - 1 + { + return endPos + 1, data[startPos : endPos+1], nil + } + case 22: +//line NONE:1 + switch act { + case 0: + { + cs = 0 + goto _again + } + case 3: + { + p = (te) - 1 + + return endPos + 1, data[startPos : endPos+1], nil + } + case 4: + { + p = (te) - 1 + + return endPos + 1, data[startPos : endPos+1], nil + } + } + +//line grapheme_clusters.go:4077 + } + } + + _again: + _acts = int(_graphclust_to_state_actions[cs]) + _nacts = uint(_graphclust_actions[_acts]) + _acts++ + for ; _nacts > 0; _nacts-- { + _acts++ + switch _graphclust_actions[_acts-1] { + case 2: +//line NONE:1 + ts = 0 + + case 3: +//line NONE:1 + act = 0 + +//line grapheme_clusters.go:4095 + } + } + + if cs == 0 { + goto _out + } + p++ + if p != pe { + goto _resume + } + _test_eof: + { + } + if p == eof { + if _graphclust_eof_trans[cs] > 0 { + _trans = int(_graphclust_eof_trans[cs] - 1) + goto _eof_trans + } + } + + _out: + { + } + } + +//line grapheme_clusters.rl:117 + + // If we fall out here then we were unable to complete a sequence. + // If we weren't able to complete a sequence then either we've + // reached the end of a partial buffer (so there's more data to come) + // or we have an isolated symbol that would normally be part of a + // grapheme cluster but has appeared in isolation here. + + if !atEOF { + // Request more + return 0, nil, nil + } + + // Just take the first UTF-8 sequence and return that. + _, seqLen := utf8.DecodeRune(data) + return seqLen, data[:seqLen], nil +} diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters.rl b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/grapheme_clusters.rl similarity index 100% rename from vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters.rl rename to vendor/github.com/apparentlymart/go-textseg/v13/textseg/grapheme_clusters.rl diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters_table.rl b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/grapheme_clusters_table.rl similarity index 98% rename from vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters_table.rl rename to vendor/github.com/apparentlymart/go-textseg/v13/textseg/grapheme_clusters_table.rl index 5e4b5881d..803dca19c 100644 --- a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/grapheme_clusters_table.rl +++ b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/grapheme_clusters_table.rl @@ -1,5 +1,5 @@ # The following Ragel file was autogenerated with unicode2ragel.rb -# from: https://www.unicode.org/Public/12.0.0/ucd/auxiliary/GraphemeBreakProperty.txt +# from: https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt # # It defines ["Prepend", "CR", "LF", "Control", "Extend", "Regional_Indicator", "SpacingMark", "L", "V", "T", "LV", "LVT", "ZWJ"]. # @@ -18,6 +18,8 @@ | 0xF0 0x91 0x82 0xBD #Cf KAITHI NUMBER SIGN | 0xF0 0x91 0x83 0x8D #Cf KAITHI NUMBER SIGN ABOVE | 0xF0 0x91 0x87 0x82..0x83 #Lo [2] SHARADA SIGN JIHVAMULIYA..SHARA... + | 0xF0 0x91 0xA4 0xBF #Lo DIVES AKURU PREFIXED NASAL SIGN + | 0xF0 0x91 0xA5 0x81 #Lo DIVES AKURU INITIAL RA | 0xF0 0x91 0xA8 0xBA #Lo ZANABAZAR SQUARE CLUSTER-INITIAL L... | 0xF0 0x91 0xAA 0x84..0x89 #Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOM... | 0xF0 0x91 0xB5 0x86 #Lo MASARAM GONDI REPHA @@ -130,7 +132,7 @@ | 0xE0 0xAC 0xBF #Mn ORIYA VOWEL SIGN I | 0xE0 0xAD 0x81..0x84 #Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SI... | 0xE0 0xAD 0x8D #Mn ORIYA SIGN VIRAMA - | 0xE0 0xAD 0x96 #Mn ORIYA AI LENGTH MARK + | 0xE0 0xAD 0x95..0x96 #Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENG... | 0xE0 0xAD 0x97 #Mc ORIYA AU LENGTH MARK | 0xE0 0xAD 0xA2..0xA3 #Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA ... | 0xE0 0xAE 0x82 #Mn TAMIL SIGN ANUSVARA @@ -161,6 +163,7 @@ | 0xE0 0xB5 0x8D #Mn MALAYALAM SIGN VIRAMA | 0xE0 0xB5 0x97 #Mc MALAYALAM AU LENGTH MARK | 0xE0 0xB5 0xA2..0xA3 #Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MA... + | 0xE0 0xB6 0x81 #Mn SINHALA SIGN CANDRABINDU | 0xE0 0xB7 0x8A #Mn SINHALA SIGN AL-LAKUNA | 0xE0 0xB7 0x8F #Mc SINHALA VOWEL SIGN AELA-PILLA | 0xE0 0xB7 0x92..0x94 #Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA.... @@ -221,6 +224,8 @@ | 0xE1 0xA9 0xBF #Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT | 0xE1 0xAA 0xB0..0xBD #Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCEN... | 0xE1 0xAA 0xBE #Me COMBINING PARENTHESES OVERLAY + | 0xE1 0xAA 0xBF..0xFF #Mn [2] COMBINING LATIN SMALL LETTER W BEL... + | 0xE1 0xAB 0x00..0x80 # | 0xE1 0xAC 0x80..0x83 #Mn [4] BALINESE SIGN ULU RICEM..BALINESE ... | 0xE1 0xAC 0xB4 #Mn BALINESE SIGN REREKAN | 0xE1 0xAC 0xB5 #Mc BALINESE VOWEL SIGN TEDUNG @@ -267,6 +272,7 @@ | 0xEA 0xA0 0x86 #Mn SYLOTI NAGRI SIGN HASANTA | 0xEA 0xA0 0x8B #Mn SYLOTI NAGRI SIGN ANUSVARA | 0xEA 0xA0 0xA5..0xA6 #Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI ... + | 0xEA 0xA0 0xAC #Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA | 0xEA 0xA3 0x84..0x85 #Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA... | 0xEA 0xA3 0xA0..0xB1 #Mn [18] COMBINING DEVANAGARI DIGIT ZERO..C... | 0xEA 0xA3 0xBF #Mn DEVANAGARI VOWEL SIGN AY @@ -307,6 +313,7 @@ | 0xF0 0x90 0xA8 0xBF #Mn KHAROSHTHI VIRAMA | 0xF0 0x90 0xAB 0xA5..0xA6 #Mn [2] MANICHAEAN ABBREVIATION MARK AB... | 0xF0 0x90 0xB4 0xA4..0xA7 #Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..... + | 0xF0 0x90 0xBA 0xAB..0xAC #Mn [2] YEZIDI COMBINING HAMZA MARK..YE... | 0xF0 0x90 0xBD 0x86..0x90 #Mn [11] SOGDIAN COMBINING DOT BELOW..SO... | 0xF0 0x91 0x80 0x81 #Mn BRAHMI SIGN ANUSVARA | 0xF0 0x91 0x80 0xB8..0xFF #Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VI... @@ -322,6 +329,7 @@ | 0xF0 0x91 0x86 0x80..0x81 #Mn [2] SHARADA SIGN CANDRABINDU..SHARA... | 0xF0 0x91 0x86 0xB6..0xBE #Mn [9] SHARADA VOWEL SIGN U..SHARADA V... | 0xF0 0x91 0x87 0x89..0x8C #Mn [4] SHARADA SANDHI MARK..SHARADA EX... + | 0xF0 0x91 0x87 0x8F #Mn SHARADA SIGN INVERTED CANDRABINDU | 0xF0 0x91 0x88 0xAF..0xB1 #Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOW... | 0xF0 0x91 0x88 0xB4 #Mn KHOJKI SIGN ANUSVARA | 0xF0 0x91 0x88 0xB6..0xB7 #Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN ... @@ -365,6 +373,10 @@ | 0xF0 0x91 0x9C 0xA7..0xAB #Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN K... | 0xF0 0x91 0xA0 0xAF..0xB7 #Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ... | 0xF0 0x91 0xA0 0xB9..0xBA #Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN N... + | 0xF0 0x91 0xA4 0xB0 #Mc DIVES AKURU VOWEL SIGN AA + | 0xF0 0x91 0xA4 0xBB..0xBC #Mn [2] DIVES AKURU SIGN ANUSVARA..DIVE... + | 0xF0 0x91 0xA4 0xBE #Mn DIVES AKURU VIRAMA + | 0xF0 0x91 0xA5 0x83 #Mn DIVES AKURU SIGN NUKTA | 0xF0 0x91 0xA7 0x94..0x97 #Mn [4] NANDINAGARI VOWEL SIGN U..NANDI... | 0xF0 0x91 0xA7 0x9A..0x9B #Mn [2] NANDINAGARI VOWEL SIGN E..NANDI... | 0xF0 0x91 0xA7 0xA0 #Mn NANDINAGARI SIGN VIRAMA @@ -397,6 +409,7 @@ | 0xF0 0x96 0xAC 0xB0..0xB6 #Mn [7] PAHAWH HMONG MARK CIM TUB..PAHA... | 0xF0 0x96 0xBD 0x8F #Mn MIAO SIGN CONSONANT MODIFIER BAR | 0xF0 0x96 0xBE 0x8F..0x92 #Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW + | 0xF0 0x96 0xBF 0xA4 #Mn KHITAN SMALL SCRIPT FILLER | 0xF0 0x9B 0xB2 0x9D..0x9E #Mn [2] DUPLOYAN THICK LETTER SELECTOR.... | 0xF0 0x9D 0x85 0xA5 #Mc MUSICAL SYMBOL COMBINING STEM | 0xF0 0x9D 0x85 0xA7..0xA9 #Mn [3] MUSICAL SYMBOL COMBINING TREMOL... @@ -548,6 +561,7 @@ | 0xF0 0x91 0x86 0xB3..0xB5 #Mc [3] SHARADA VOWEL SIGN AA..SHARADA ... | 0xF0 0x91 0x86 0xBF..0xFF #Mc [2] SHARADA VOWEL SIGN AU..SHARADA ... | 0xF0 0x91 0x87 0x00..0x80 # + | 0xF0 0x91 0x87 0x8E #Mc SHARADA VOWEL SIGN PRISHTHAMATRA E | 0xF0 0x91 0x88 0xAC..0xAE #Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VO... | 0xF0 0x91 0x88 0xB2..0xB3 #Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOW... | 0xF0 0x91 0x88 0xB5 #Mc KHOJKI SIGN VIRAMA @@ -579,6 +593,11 @@ | 0xF0 0x91 0x9C 0xA6 #Mc AHOM VOWEL SIGN E | 0xF0 0x91 0xA0 0xAC..0xAE #Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWE... | 0xF0 0x91 0xA0 0xB8 #Mc DOGRA SIGN VISARGA + | 0xF0 0x91 0xA4 0xB1..0xB5 #Mc [5] DIVES AKURU VOWEL SIGN I..DIVES... + | 0xF0 0x91 0xA4 0xB7..0xB8 #Mc [2] DIVES AKURU VOWEL SIGN AI..DIVE... + | 0xF0 0x91 0xA4 0xBD #Mc DIVES AKURU SIGN HALANTA + | 0xF0 0x91 0xA5 0x80 #Mc DIVES AKURU MEDIAL YA + | 0xF0 0x91 0xA5 0x82 #Mc DIVES AKURU MEDIAL RA | 0xF0 0x91 0xA7 0x91..0x93 #Mc [3] NANDINAGARI VOWEL SIGN AA..NAND... | 0xF0 0x91 0xA7 0x9C..0x9F #Mc [4] NANDINAGARI VOWEL SIGN O..NANDI... | 0xF0 0x91 0xA7 0xA4 #Mc NANDINAGARI VOWEL SIGN PRISHTHAMAT... @@ -596,6 +615,7 @@ | 0xF0 0x91 0xBB 0xB5..0xB6 #Mc [2] MAKASAR VOWEL SIGN E..MAKASAR V... | 0xF0 0x96 0xBD 0x91..0xFF #Mc [55] MIAO SIGN ASPIRATION..MIAO VOWE... | 0xF0 0x96 0xBE 0x00..0x87 # + | 0xF0 0x96 0xBF 0xB0..0xB1 #Mc [2] VIETNAMESE ALTERNATE READING MA... | 0xF0 0x9D 0x85 0xA6 #Mc MUSICAL SYMBOL COMBINING SPRECHGES... | 0xF0 0x9D 0x85 0xAD #Mc MUSICAL SYMBOL COMBINING AUGMENTAT... ; diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/tables.go b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/tables.go similarity index 100% rename from vendor/github.com/apparentlymart/go-textseg/v12/textseg/tables.go rename to vendor/github.com/apparentlymart/go-textseg/v13/textseg/tables.go diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/unicode2ragel.rb b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/unicode2ragel.rb similarity index 99% rename from vendor/github.com/apparentlymart/go-textseg/v12/textseg/unicode2ragel.rb rename to vendor/github.com/apparentlymart/go-textseg/v13/textseg/unicode2ragel.rb index bfb7b7268..e164a96b0 100644 --- a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/unicode2ragel.rb +++ b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/unicode2ragel.rb @@ -79,7 +79,7 @@ end # range and description. def each_alpha( url, property ) - open( url ) do |file| + URI.open( url ) do |file| file.each_line do |line| next if line =~ /^#/; next if line !~ /; #{property} *#/; diff --git a/vendor/github.com/apparentlymart/go-textseg/v12/textseg/utf8_seqs.go b/vendor/github.com/apparentlymart/go-textseg/v13/textseg/utf8_seqs.go similarity index 100% rename from vendor/github.com/apparentlymart/go-textseg/v12/textseg/utf8_seqs.go rename to vendor/github.com/apparentlymart/go-textseg/v13/textseg/utf8_seqs.go diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 50a3c1c92..05cbff629 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -21,6 +21,7 @@ const ( ApEast1RegionID = "ap-east-1" // Asia Pacific (Hong Kong). ApNortheast1RegionID = "ap-northeast-1" // Asia Pacific (Tokyo). ApNortheast2RegionID = "ap-northeast-2" // Asia Pacific (Seoul). + ApNortheast3RegionID = "ap-northeast-3" // Asia Pacific (Osaka). ApSouth1RegionID = "ap-south-1" // Asia Pacific (Mumbai). ApSoutheast1RegionID = "ap-southeast-1" // Asia Pacific (Singapore). ApSoutheast2RegionID = "ap-southeast-2" // Asia Pacific (Sydney). @@ -121,6 +122,9 @@ var awsPartition = partition{ "ap-northeast-2": region{ Description: "Asia Pacific (Seoul)", }, + "ap-northeast-3": region{ + Description: "Asia Pacific (Osaka)", + }, "ap-south-1": region{ Description: "Asia Pacific (Mumbai)", }, @@ -184,6 +188,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -239,6 +244,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -361,12 +367,13 @@ var awsPartition = partition{ "amplifybackend": service{ Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, "eu-central-1": endpoint{}, - "eu-south-1": endpoint{}, "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "us-east-1": endpoint{}, @@ -452,6 +459,12 @@ var awsPartition = partition{ Region: "ap-northeast-2", }, }, + "ap-northeast-3": endpoint{ + Hostname: "api.ecr.ap-northeast-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-3", + }, + }, "ap-south-1": endpoint{ Hostname: "api.ecr.ap-south-1.amazonaws.com", CredentialScope: credentialScope{ @@ -706,6 +719,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -765,6 +779,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -915,6 +930,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -988,9 +1004,11 @@ var awsPartition = partition{ "batch": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -1120,6 +1138,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -1385,6 +1404,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -1708,6 +1728,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -1765,7 +1786,10 @@ var awsPartition = partition{ "contact-lens": service{ Endpoints: endpoints{ + "ap-northeast-1": endpoint{}, "ap-southeast-2": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-2": endpoint{}, "us-east-1": endpoint{}, "us-west-2": endpoint{}, }, @@ -1902,6 +1926,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -1963,6 +1988,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2140,6 +2166,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2202,6 +2229,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2259,6 +2287,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2325,6 +2354,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2376,6 +2406,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2425,6 +2456,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2456,6 +2488,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2505,6 +2538,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2539,6 +2573,12 @@ var awsPartition = partition{ Region: "ap-northeast-2", }, }, + "fips-ap-northeast-3": endpoint{ + Hostname: "elasticfilesystem-fips.ap-northeast-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-3", + }, + }, "fips-ap-south-1": endpoint{ Hostname: "elasticfilesystem-fips.ap-south-1.amazonaws.com", CredentialScope: credentialScope{ @@ -2652,6 +2692,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2704,6 +2745,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2783,9 +2825,19 @@ var awsPartition = partition{ "emr-containers": service{ Endpoints: endpoints{ - "eu-west-1": endpoint{}, - "us-east-1": endpoint{}, - "us-west-2": endpoint{}, + "ap-northeast-1": endpoint{}, + "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, + "ap-southeast-1": endpoint{}, + "ap-southeast-2": endpoint{}, + "ca-central-1": endpoint{}, + "eu-central-1": endpoint{}, + "eu-west-1": endpoint{}, + "eu-west-2": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "entitlement.marketplace": service{ @@ -2805,6 +2857,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2836,6 +2889,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -2885,6 +2939,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -3181,6 +3236,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -3236,6 +3292,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -3696,6 +3753,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -3789,6 +3847,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -3847,11 +3906,12 @@ var awsPartition = partition{ Region: "us-west-2", }, }, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "lambda": service{ @@ -3861,6 +3921,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -3977,6 +4038,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -4276,6 +4338,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -4350,6 +4413,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -4957,12 +5021,42 @@ var awsPartition = partition{ "eu-west-1": endpoint{}, "eu-west-2": endpoint{}, "eu-west-3": endpoint{}, - "me-south-1": endpoint{}, - "sa-east-1": endpoint{}, - "us-east-1": endpoint{}, - "us-east-2": endpoint{}, - "us-west-1": endpoint{}, - "us-west-2": endpoint{}, + "fips-ca-central-1": endpoint{ + Hostname: "ram-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + "fips-us-east-1": endpoint{ + Hostname: "ram-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + "fips-us-east-2": endpoint{ + Hostname: "ram-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + "fips-us-west-1": endpoint{ + Hostname: "ram-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + "fips-us-west-2": endpoint{ + Hostname: "ram-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + "me-south-1": endpoint{}, + "sa-east-1": endpoint{}, + "us-east-1": endpoint{}, + "us-east-2": endpoint{}, + "us-west-1": endpoint{}, + "us-west-2": endpoint{}, }, }, "rds": service{ @@ -4972,6 +5066,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -5029,6 +5124,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -5132,6 +5228,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -5334,6 +5431,7 @@ var awsPartition = partition{ SignatureVersions: []string{"s3", "s3v4"}, }, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{ Hostname: "s3.ap-southeast-1.amazonaws.com", @@ -5410,6 +5508,13 @@ var awsPartition = partition{ Region: "ap-northeast-2", }, }, + "ap-northeast-3": endpoint{ + Hostname: "s3-control.ap-northeast-3.amazonaws.com", + SignatureVersions: []string{"s3v4"}, + CredentialScope: credentialScope{ + Region: "ap-northeast-3", + }, + }, "ap-south-1": endpoint{ Hostname: "s3-control.ap-south-1.amazonaws.com", SignatureVersions: []string{"s3v4"}, @@ -5605,6 +5710,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -5846,6 +5952,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -5956,6 +6063,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6078,6 +6186,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6130,6 +6239,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6181,6 +6291,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6236,6 +6347,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6381,6 +6493,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6448,6 +6561,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6497,6 +6611,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -6582,6 +6697,7 @@ var awsPartition = partition{ "transfer": service{ Endpoints: endpoints{ + "af-south-1": endpoint{}, "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, @@ -6975,6 +7091,7 @@ var awsPartition = partition{ Endpoints: endpoints{ "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, "ca-central-1": endpoint{}, @@ -7005,6 +7122,7 @@ var awsPartition = partition{ "ap-east-1": endpoint{}, "ap-northeast-1": endpoint{}, "ap-northeast-2": endpoint{}, + "ap-northeast-3": endpoint{}, "ap-south-1": endpoint{}, "ap-southeast-1": endpoint{}, "ap-southeast-2": endpoint{}, @@ -9128,8 +9246,18 @@ var awsusgovPartition = partition{ "ram": service{ Endpoints: endpoints{ - "us-gov-east-1": endpoint{}, - "us-gov-west-1": endpoint{}, + "us-gov-east-1": endpoint{ + Hostname: "ram.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + "us-gov-west-1": endpoint{ + Hostname: "ram.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, }, }, "rds": service{ @@ -10383,6 +10511,19 @@ var awsisobPartition = partition{ "us-isob-east-1": endpoint{}, }, }, + "route53": service{ + PartitionEndpoint: "aws-iso-b-global", + IsRegionalized: boxedFalse, + + Endpoints: endpoints{ + "aws-iso-b-global": endpoint{ + Hostname: "route53.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + }, + }, + }, "s3": service{ Defaults: endpoint{ Protocols: []string{"http", "https"}, diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go index d71f7b3f4..1737c2686 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go @@ -689,9 +689,12 @@ func (ctx *signingCtx) buildBodyDigest() error { if hash == "" { includeSHA256Header := ctx.unsignedPayload || ctx.ServiceName == "s3" || + ctx.ServiceName == "s3-object-lambda" || ctx.ServiceName == "glacier" - s3Presign := ctx.isPresign && ctx.ServiceName == "s3" + s3Presign := ctx.isPresign && + (ctx.ServiceName == "s3" || + ctx.ServiceName == "s3-object-lambda") if ctx.unsignedPayload || s3Presign { hash = "UNSIGNED-PAYLOAD" diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index fe73428eb..937f765df 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.37.15" +const SDKVersion = "1.38.0" diff --git a/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/arn.go b/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/arn.go index 7a8e46fbd..3079e4ab0 100644 --- a/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/arn.go +++ b/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/arn.go @@ -7,6 +7,21 @@ import ( "github.com/aws/aws-sdk-go/aws/arn" ) +var supportedServiceARN = []string{ + "s3", + "s3-outposts", + "s3-object-lambda", +} + +func isSupportedServiceARN(service string) bool { + for _, name := range supportedServiceARN { + if name == service { + return true + } + } + return false +} + // Resource provides the interfaces abstracting ARNs of specific resource // types. type Resource interface { @@ -29,9 +44,10 @@ func ParseResource(s string, resParser ResourceParser) (resARN Resource, err err return nil, InvalidARNError{ARN: a, Reason: "partition not set"} } - if a.Service != "s3" && a.Service != "s3-outposts" { + if !isSupportedServiceARN(a.Service) { return nil, InvalidARNError{ARN: a, Reason: "service is not supported"} } + if len(a.Resource) == 0 { return nil, InvalidARNError{ARN: a, Reason: "resource not set"} } diff --git a/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/s3_object_lambda_arn.go b/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/s3_object_lambda_arn.go new file mode 100644 index 000000000..513154cc0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/internal/s3shared/arn/s3_object_lambda_arn.go @@ -0,0 +1,15 @@ +package arn + +// S3ObjectLambdaARN represents an ARN for the s3-object-lambda service +type S3ObjectLambdaARN interface { + Resource + + isS3ObjectLambdasARN() +} + +// S3ObjectLambdaAccessPointARN is an S3ObjectLambdaARN for the Access Point resource type +type S3ObjectLambdaAccessPointARN struct { + AccessPointARN +} + +func (s S3ObjectLambdaAccessPointARN) isS3ObjectLambdasARN() {} diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go index e380fb0e9..c9525219c 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go @@ -65874,9 +65874,9 @@ type DescribeImageAttributeInput struct { // The AMI attribute. // - // Note: Depending on your account privileges, the blockDeviceMapping attribute - // may return a Client.AuthFailure error. If this happens, use DescribeImages - // to get information about the block device mapping for the AMI. + // Note: The blockDeviceMapping attribute is deprecated. Using this attribute + // returns the Client.AuthFailure error. To get information about the block + // device mappings for an AMI, use the DescribeImages action. // // Attribute is a required field Attribute *string `type:"string" required:"true" enum:"ImageAttributeName"` @@ -82374,12 +82374,21 @@ type FleetLaunchTemplateOverrides struct { // The location where the instance launched, if applicable. Placement *PlacementResponse `locationName:"placement" type:"structure"` - // The priority for the launch template override. If AllocationStrategy is set - // to prioritized, EC2 Fleet uses priority to determine which launch template - // override to use first in fulfilling On-Demand capacity. The highest priority - // is launched first. Valid values are whole numbers starting at 0. The lower - // the number, the higher the priority. If no number is set, the override has - // the lowest priority. + // The priority for the launch template override. The highest priority is launched + // first. + // + // If the On-Demand AllocationStrategy is set to prioritized, EC2 Fleet uses + // priority to determine which launch template override to use first in fulfilling + // On-Demand capacity. + // + // If the Spot AllocationStrategy is set to capacity-optimized-prioritized, + // EC2 Fleet uses priority on a best-effort basis to determine which launch + // template override to use first in fulfilling Spot capacity, but optimizes + // for capacity first. + // + // Valid values are whole numbers starting at 0. The lower the number, the higher + // the priority. If no number is set, the override has the lowest priority. + // You can set the same priority for different launch template overrides. Priority *float64 `locationName:"priority" type:"double"` // The ID of the subnet in which to launch the instances. @@ -82457,12 +82466,21 @@ type FleetLaunchTemplateOverridesRequest struct { // The location where the instance launched, if applicable. Placement *Placement `type:"structure"` - // The priority for the launch template override. If AllocationStrategy is set - // to prioritized, EC2 Fleet uses priority to determine which launch template - // override to use first in fulfilling On-Demand capacity. The highest priority - // is launched first. Valid values are whole numbers starting at 0. The lower - // the number, the higher the priority. If no number is set, the launch template - // override has the lowest priority. + // The priority for the launch template override. The highest priority is launched + // first. + // + // If the On-Demand AllocationStrategy is set to prioritized, EC2 Fleet uses + // priority to determine which launch template override to use first in fulfilling + // On-Demand capacity. + // + // If the Spot AllocationStrategy is set to capacity-optimized-prioritized, + // EC2 Fleet uses priority on a best-effort basis to determine which launch + // template override to use first in fulfilling Spot capacity, but optimizes + // for capacity first. + // + // Valid values are whole numbers starting at 0. The lower the number, the higher + // the priority. If no number is set, the launch template override has the lowest + // priority. You can set the same priority for different launch template overrides. Priority *float64 `type:"double"` // The IDs of the subnets in which to launch the instances. Separate multiple @@ -92954,12 +92972,21 @@ type LaunchTemplateOverrides struct { // The instance type. InstanceType *string `locationName:"instanceType" type:"string" enum:"InstanceType"` - // The priority for the launch template override. If OnDemandAllocationStrategy - // is set to prioritized, Spot Fleet uses priority to determine which launch - // template override to use first in fulfilling On-Demand capacity. The highest - // priority is launched first. Valid values are whole numbers starting at 0. - // The lower the number, the higher the priority. If no number is set, the launch - // template override has the lowest priority. + // The priority for the launch template override. The highest priority is launched + // first. + // + // If OnDemandAllocationStrategy is set to prioritized, Spot Fleet uses priority + // to determine which launch template override to use first in fulfilling On-Demand + // capacity. + // + // If the Spot AllocationStrategy is set to capacityOptimizedPrioritized, Spot + // Fleet uses priority on a best-effort basis to determine which launch template + // override to use first in fulfilling Spot capacity, but optimizes for capacity + // first. + // + // Valid values are whole numbers starting at 0. The lower the number, the higher + // the priority. If no number is set, the launch template override has the lowest + // priority. You can set the same priority for different launch template overrides. Priority *float64 `locationName:"priority" type:"double"` // The maximum price per unit hour that you are willing to pay for a Spot Instance. @@ -113148,9 +113175,16 @@ type SpotFleetRequestConfigData struct { // If the allocation strategy is diversified, Spot Fleet launches instances // from all the Spot Instance pools that you specify. // - // If the allocation strategy is capacityOptimized, Spot Fleet launches instances - // from Spot Instance pools with optimal capacity for the number of instances - // that are launching. + // If the allocation strategy is capacityOptimized (recommended), Spot Fleet + // launches instances from Spot Instance pools with optimal capacity for the + // number of instances that are launching. To give certain instance types a + // higher chance of launching first, use capacityOptimizedPrioritized. Set a + // priority for each instance type by using the Priority parameter for LaunchTemplateOverrides. + // You can assign the same priority to different LaunchTemplateOverrides. EC2 + // implements the priorities on a best-effort basis, but optimizes for capacity + // first. capacityOptimizedPrioritized is supported only if your Spot Fleet + // uses a launch template. Note that if the OnDemandAllocationStrategy is set + // to prioritized, the same priority is applied when fulfilling On-Demand capacity. AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"AllocationStrategy"` // A unique, case-sensitive identifier that you provide to ensure the idempotency @@ -113926,9 +113960,16 @@ type SpotOptions struct { // If the allocation strategy is diversified, EC2 Fleet launches instances from // all of the Spot Instance pools that you specify. // - // If the allocation strategy is capacity-optimized, EC2 Fleet launches instances - // from Spot Instance pools with optimal capacity for the number of instances - // that are launching. + // If the allocation strategy is capacity-optimized (recommended), EC2 Fleet + // launches instances from Spot Instance pools with optimal capacity for the + // number of instances that are launching. To give certain instance types a + // higher chance of launching first, use capacity-optimized-prioritized. Set + // a priority for each instance type by using the Priority parameter for LaunchTemplateOverrides. + // You can assign the same priority to different LaunchTemplateOverrides. EC2 + // implements the priorities on a best-effort basis, but optimizes for capacity + // first. capacity-optimized-prioritized is supported only if your fleet uses + // a launch template. Note that if the On-Demand AllocationStrategy is set to + // prioritized, the same priority is applied when fulfilling On-Demand capacity. AllocationStrategy *string `locationName:"allocationStrategy" type:"string" enum:"SpotAllocationStrategy"` // The behavior when a Spot Instance is interrupted. The default is terminate. @@ -114032,9 +114073,16 @@ type SpotOptionsRequest struct { // If the allocation strategy is diversified, EC2 Fleet launches instances from // all of the Spot Instance pools that you specify. // - // If the allocation strategy is capacity-optimized, EC2 Fleet launches instances - // from Spot Instance pools with optimal capacity for the number of instances - // that are launching. + // If the allocation strategy is capacity-optimized (recommended), EC2 Fleet + // launches instances from Spot Instance pools with optimal capacity for the + // number of instances that are launching. To give certain instance types a + // higher chance of launching first, use capacity-optimized-prioritized. Set + // a priority for each instance type by using the Priority parameter for LaunchTemplateOverrides. + // You can assign the same priority to different LaunchTemplateOverrides. EC2 + // implements the priorities on a best-effort basis, but optimizes for capacity + // first. capacity-optimized-prioritized is supported only if your fleet uses + // a launch template. Note that if the On-Demand AllocationStrategy is set to + // prioritized, the same priority is applied when fulfilling On-Demand capacity. AllocationStrategy *string `type:"string" enum:"SpotAllocationStrategy"` // The behavior when a Spot Instance is interrupted. The default is terminate. @@ -121992,6 +122040,9 @@ const ( // AllocationStrategyCapacityOptimized is a AllocationStrategy enum value AllocationStrategyCapacityOptimized = "capacityOptimized" + + // AllocationStrategyCapacityOptimizedPrioritized is a AllocationStrategy enum value + AllocationStrategyCapacityOptimizedPrioritized = "capacityOptimizedPrioritized" ) // AllocationStrategy_Values returns all elements of the AllocationStrategy enum @@ -122000,6 +122051,7 @@ func AllocationStrategy_Values() []string { AllocationStrategyLowestPrice, AllocationStrategyDiversified, AllocationStrategyCapacityOptimized, + AllocationStrategyCapacityOptimizedPrioritized, } } @@ -126940,6 +126992,9 @@ const ( // SpotAllocationStrategyCapacityOptimized is a SpotAllocationStrategy enum value SpotAllocationStrategyCapacityOptimized = "capacity-optimized" + + // SpotAllocationStrategyCapacityOptimizedPrioritized is a SpotAllocationStrategy enum value + SpotAllocationStrategyCapacityOptimizedPrioritized = "capacity-optimized-prioritized" ) // SpotAllocationStrategy_Values returns all elements of the SpotAllocationStrategy enum @@ -126948,6 +127003,7 @@ func SpotAllocationStrategy_Values() []string { SpotAllocationStrategyLowestPrice, SpotAllocationStrategyDiversified, SpotAllocationStrategyCapacityOptimized, + SpotAllocationStrategyCapacityOptimizedPrioritized, } } diff --git a/vendor/github.com/aws/aws-sdk-go/service/iam/api.go b/vendor/github.com/aws/aws-sdk-go/service/iam/api.go index 72e374e2b..c00f7dc67 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/iam/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/iam/api.go @@ -362,6 +362,10 @@ func (c *IAM) AttachGroupPolicyRequest(input *AttachGroupPolicyInput) (req *requ // You use this operation to attach a managed policy to a group. To embed an // inline policy in a group, use PutGroupPolicy. // +// As a best practice, you can validate your IAM policies. To learn more, see +// Validating IAM policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) +// in the IAM User Guide. +// // For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. @@ -474,6 +478,10 @@ func (c *IAM) AttachRolePolicyRequest(input *AttachRolePolicyInput) (req *reques // see Managed policies and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. // +// As a best practice, you can validate your IAM policies. To learn more, see +// Validating IAM policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) +// in the IAM User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -580,6 +588,10 @@ func (c *IAM) AttachUserPolicyRequest(input *AttachUserPolicyInput) (req *reques // You use this operation to attach a managed policy to a user. To embed an // inline policy in a user, use PutUserPolicy. // +// As a best practice, you can validate your IAM policies. To learn more, see +// Validating IAM policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) +// in the IAM User Guide. +// // For more information about policies, see Managed policies and inline policies // (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. @@ -1414,6 +1426,10 @@ func (c *IAM) CreatePolicyRequest(input *CreatePolicyInput) (req *request.Reques // versions, see Versioning for managed policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-versions.html) // in the IAM User Guide. // +// As a best practice, you can validate your IAM policies. To learn more, see +// Validating IAM policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) +// in the IAM User Guide. +// // For more information about managed policies in general, see Managed policies // and inline policies (https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-managed-vs-inline.html) // in the IAM User Guide. diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go index 89a0a29af..6cc91dd2c 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/api.go @@ -14,6 +14,7 @@ import ( "github.com/aws/aws-sdk-go/aws/awsutil" "github.com/aws/aws-sdk-go/aws/client" "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/aws/signer/v4" "github.com/aws/aws-sdk-go/internal/s3shared/arn" "github.com/aws/aws-sdk-go/private/checksum" "github.com/aws/aws-sdk-go/private/protocol" @@ -67,7 +68,7 @@ func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) (req // AbortMultipartUpload API operation for Amazon Simple Storage Service. // -// This operation aborts a multipart upload. After a multipart upload is aborted, +// This action aborts a multipart upload. After a multipart upload is aborted, // no additional parts can be uploaded using that upload ID. The storage consumed // by any previously uploaded parts will be freed. However, if any part uploads // are currently in progress, those part uploads might or might not succeed. @@ -76,10 +77,10 @@ func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) (req // // To verify that all parts have been removed, so you don't get charged for // the part storage, you should call the ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) -// operation and ensure that the parts list is empty. +// action and ensure that the parts list is empty. // -// For information about permissions required to use the multipart upload API, -// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// For information about permissions required to use the multipart upload, see +// Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). // // The following operations are related to AbortMultipartUpload: // @@ -175,10 +176,10 @@ func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) // You first initiate the multipart upload and then upload all parts using the // UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) // operation. After successfully uploading all relevant parts of an upload, -// you call this operation to complete the upload. Upon receiving this request, +// you call this action to complete the upload. Upon receiving this request, // Amazon S3 concatenates all the parts in ascending order by part number to // create a new object. In the Complete Multipart Upload request, you must provide -// the parts list. You must ensure that the parts list is complete. This operation +// the parts list. You must ensure that the parts list is complete. This action // concatenates the parts that you provide in the list. For each part in the // list, you must provide the part number and the ETag value, returned after // that part was uploaded. @@ -199,7 +200,7 @@ func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) // Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). // // For information about permissions required to use the multipart upload API, -// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). // // CompleteMultipartUpload has the following special errors: // @@ -306,10 +307,10 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou // Creates a copy of an object that is already stored in Amazon S3. // // You can store individual objects of up to 5 TB in Amazon S3. You create a -// copy of your object up to 5 GB in size in a single atomic operation using -// this API. However, to copy an object greater than 5 GB, you must use the -// multipart upload Upload Part - Copy API. For more information, see Copy Object -// Using the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html). +// copy of your object up to 5 GB in size in a single atomic action using this +// API. However, to copy an object greater than 5 GB, you must use the multipart +// upload Upload Part - Copy API. For more information, see Copy Object Using +// the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html). // // All copy requests must be authenticated. Additionally, you must have read // access to the source object and write access to the destination bucket. For @@ -319,7 +320,7 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou // // A copy request might return an error when Amazon S3 receives the copy request // or while Amazon S3 is copying the files. If the error occurs before the copy -// operation starts, you receive a standard Amazon S3 error. If the error occurs +// action starts, you receive a standard Amazon S3 error. If the error occurs // during the copy operation, the error response is embedded in the 200 OK response. // This means that a 200 OK response can contain either a success or an error. // Design your application to parse the contents of the response and handle @@ -334,7 +335,7 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou // // The copy request charge is based on the storage class and Region that you // specify for the destination object. For pricing information, see Amazon S3 -// pricing (https://aws.amazon.com/s3/pricing/). +// pricing (http://aws.amazon.com/s3/pricing/). // // Amazon S3 transfer acceleration does not support cross-Region copies. If // you request a cross-Region copy using a transfer acceleration endpoint, you @@ -404,7 +405,7 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou // // If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the // object. For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Access Control List (ACL)-Specific Request Headers // @@ -418,7 +419,7 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou // // Storage Class Options // -// You can use the CopyObject operation to change the storage class of an object +// You can use the CopyObject action to change the storage class of an object // that is already stored in Amazon S3 using the StorageClass parameter. For // more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) // in the Amazon S3 Service Developer Guide. @@ -459,8 +460,8 @@ func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, ou // // Returned Error Codes: // * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError" -// The source object of the COPY operation is not in the active tier and is -// only stored in Amazon S3 Glacier. +// The source object of the COPY action is not in the active tier and is only +// stored in Amazon S3 Glacier. // // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) { @@ -678,10 +679,10 @@ func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (re // CreateMultipartUpload API operation for Amazon Simple Storage Service. // -// This operation initiates a multipart upload and returns an upload ID. This -// upload ID is used to associate all of the parts in the specific multipart -// upload. You specify this upload ID in each of your subsequent upload part -// requests (see UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)). +// This action initiates a multipart upload and returns an upload ID. This upload +// ID is used to associate all of the parts in the specific multipart upload. +// You specify this upload ID in each of your subsequent upload part requests +// (see UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)). // You also include this upload ID in the final request to either complete or // abort the multipart upload request. // @@ -691,12 +692,12 @@ func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (re // If you have configured a lifecycle rule to abort incomplete multipart uploads, // the upload must complete within the number of days specified in the bucket // lifecycle configuration. Otherwise, the incomplete multipart upload becomes -// eligible for an abort operation and Amazon S3 aborts the multipart upload. -// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket +// eligible for an abort action and Amazon S3 aborts the multipart upload. For +// more information, see Aborting Incomplete Multipart Uploads Using a Bucket // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config). // // For information about the permissions required to use the multipart upload -// API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). // // For request signing, multipart upload is just a series of regular requests. // You initiate a multipart upload, send one or more requests to upload parts, @@ -716,7 +717,7 @@ func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (re // and decrypts it when you access it. You can provide your own encryption key, // or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or // Amazon S3-managed encryption keys. If you choose to provide your own encryption -// key, the request headers you provide in UploadPart (AmazonS3/latest/API/API_UploadPart.html) +// key, the request headers you provide in UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) // and UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) // requests must match the headers you used in the request to initiate the upload // by using CreateMultipartUpload. @@ -989,8 +990,8 @@ func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyt // To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about the Amazon S3 analytics feature, see Amazon S3 Analytics // – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html). @@ -1083,7 +1084,7 @@ func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request // permission to others. // // For information about cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Related Resources: // @@ -1164,17 +1165,17 @@ func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) ( // DeleteBucketEncryption API operation for Amazon Simple Storage Service. // -// This implementation of the DELETE operation removes default encryption from +// This implementation of the DELETE action removes default encryption from // the bucket. For information about the Amazon S3 default encryption feature, // see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // Related Resources // @@ -1361,8 +1362,8 @@ func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInvent // To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about the Amazon S3 inventory feature, see Amazon S3 Inventory // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html). @@ -1550,8 +1551,8 @@ func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsC // To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about CloudWatch request metrics for Amazon S3, see Monitoring // Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). @@ -1725,9 +1726,9 @@ func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *req // DeleteBucketPolicy API operation for Amazon Simple Storage Service. // -// This implementation of the DELETE operation uses the policy subresource to -// delete the policy of a specified bucket. If you are using an identity other -// than the root user of the AWS account that owns the bucket, the calling identity +// This implementation of the DELETE action uses the policy subresource to delete +// the policy of a specified bucket. If you are using an identity other than +// the root user of the AWS account that owns the bucket, the calling identity // must have the DeleteBucketPolicy permissions on the specified bucket and // belong to the bucket owner's account to use this operation. // @@ -1827,8 +1828,8 @@ func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) // To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration // action. The bucket owner has these permissions by default and can grant it // to others. For more information about permissions, see Permissions Related -// to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // It can take a while for the deletion of a replication configuration to fully // propagate. @@ -2000,15 +2001,15 @@ func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *r // DeleteBucketWebsite API operation for Amazon Simple Storage Service. // -// This operation removes the website configuration for a bucket. Amazon S3 -// returns a 200 OK response upon successfully deleting a website configuration -// on the specified bucket. You will get a 200 OK response if the website configuration +// This action removes the website configuration for a bucket. Amazon S3 returns +// a 200 OK response upon successfully deleting a website configuration on the +// specified bucket. You will get a 200 OK response if the website configuration // you are trying to delete does not exist on the bucket. Amazon S3 returns // a 404 response if the bucket specified in the request does not exist. // -// This DELETE operation requires the S3:DeleteBucketWebsite permission. By -// default, only the bucket owner can delete the website configuration attached -// to a bucket. However, bucket owners can grant other users permission to delete +// This DELETE action requires the S3:DeleteBucketWebsite permission. By default, +// only the bucket owner can delete the website configuration attached to a +// bucket. However, bucket owners can grant other users permission to delete // the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite // permission. // @@ -2110,14 +2111,14 @@ func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request // For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html). // To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete). // -// You can delete objects by explicitly calling the DELETE Object API or configure -// its lifecycle (PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)) +// You can delete objects by explicitly calling DELETE Object or configure its +// lifecycle (PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)) // to enable Amazon S3 to remove them for you. If you want to block users or // accounts from removing or deleting objects from your bucket, you must deny // them the s3:DeleteObject, s3:DeleteObjectVersion, and s3:PutLifeCycleConfiguration // actions. // -// The following operation is related to DeleteObject: +// The following action is related to DeleteObject: // // * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) // @@ -2285,27 +2286,27 @@ func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Reque // DeleteObjects API operation for Amazon Simple Storage Service. // -// This operation enables you to delete multiple objects from a bucket using -// a single HTTP request. If you know the object keys that you want to delete, -// then this operation provides a suitable alternative to sending individual -// delete requests, reducing per-request overhead. +// This action enables you to delete multiple objects from a bucket using a +// single HTTP request. If you know the object keys that you want to delete, +// then this action provides a suitable alternative to sending individual delete +// requests, reducing per-request overhead. // // The request contains a list of up to 1000 keys that you want to delete. In // the XML, you provide the object key names, and optionally, version IDs if // you want to delete a specific version of the object from a versioning-enabled -// bucket. For each key, Amazon S3 performs a delete operation and returns the +// bucket. For each key, Amazon S3 performs a delete action and returns the // result of that delete, success, or failure, in the response. Note that if // the object specified in the request is not found, Amazon S3 returns the result // as deleted. // -// The operation supports two modes for the response: verbose and quiet. By -// default, the operation uses verbose mode in which the response includes the -// result of deletion of each key in your request. In quiet mode the response -// includes only keys where the delete operation encountered an error. For a -// successful deletion, the operation does not return any information about -// the delete in the response body. +// The action supports two modes for the response: verbose and quiet. By default, +// the action uses verbose mode in which the response includes the result of +// deletion of each key in your request. In quiet mode the response includes +// only keys where the delete action encountered an error. For a successful +// deletion, the action does not return any information about the delete in +// the response body. // -// When performing this operation on an MFA Delete enabled bucket, that attempts +// When performing this action on an MFA Delete enabled bucket, that attempts // to delete any versioned objects, you must include an MFA token. If you do // not provide one, the entire request will fail, even if there are non-versioned // objects you are trying to delete. If you provide an invalid token, whether @@ -2404,8 +2405,8 @@ func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) // Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use // this operation, you must have the s3:PutBucketPublicAccessBlock permission. // For more information about permissions, see Permissions Related to Bucket -// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // The following operations are related to DeletePublicAccessBlock: // @@ -2489,17 +2490,17 @@ func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateC // GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service. // -// This implementation of the GET operation uses the accelerate subresource -// to return the Transfer Acceleration state of a bucket, which is either Enabled +// This implementation of the GET action uses the accelerate subresource to +// return the Transfer Acceleration state of a bucket, which is either Enabled // or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that // enables you to perform faster data transfers to and from Amazon S3. // // To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // You set the Transfer Acceleration state of an existing bucket to Enabled // or Suspended by using the PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html) @@ -2511,7 +2512,7 @@ func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateC // // For more information about transfer acceleration, see Transfer Acceleration // (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Related Resources // @@ -2589,7 +2590,7 @@ func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request // GetBucketAcl API operation for Amazon Simple Storage Service. // -// This implementation of the GET operation uses the acl subresource to return +// This implementation of the GET action uses the acl subresource to return // the access control list (ACL) of a bucket. To use GET to return the ACL of // the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission // is granted to the anonymous user, you can return the ACL of the bucket without @@ -2671,19 +2672,19 @@ func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsCon // GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service. // -// This implementation of the GET operation returns an analytics configuration +// This implementation of the GET action returns an analytics configuration // (identified by the analytics configuration ID) from the bucket. // // To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // For information about Amazon S3 analytics feature, see Amazon S3 Analytics // – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Related Resources // @@ -2852,15 +2853,18 @@ func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *r // GetBucketEncryption API operation for Amazon Simple Storage Service. // -// Returns the default encryption configuration for an Amazon S3 bucket. For -// information about the Amazon S3 default encryption feature, see Amazon S3 -// Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). +// Returns the default encryption configuration for an Amazon S3 bucket. If +// the bucket does not have a default encryption configuration, GetBucketEncryption +// returns ServerSideEncryptionConfigurationNotFoundError. +// +// For information about the Amazon S3 default encryption feature, see Amazon +// S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). // // To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // The following operations are related to GetBucketEncryption: // @@ -3045,8 +3049,8 @@ func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryCon // To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration // action. The bucket owner has this permission by default and can grant this // permission to others. For more information about permissions, see Permissions -// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about the Amazon S3 inventory feature, see Amazon S3 Inventory // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html). @@ -3148,8 +3152,8 @@ func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *req // To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // GetBucketLifecycle has the following special error: // @@ -3247,8 +3251,8 @@ func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleCon // Accordingly, this section describes the latest API. The response describes // the new filter element that you can use to specify a filter to select a subset // of objects to which the rule applies. If you are using a previous version -// of the lifecycle configuration, it still works. For the earlier API description, -// see GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html). +// of the lifecycle configuration, it still works. For the earlier action, see +// GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html). // // Returns the lifecycle configuration information set on the bucket. For information // about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). @@ -3256,8 +3260,8 @@ func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleCon // To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration // action. The bucket owner has this permission, by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // GetBucketLifecycleConfiguration has the following special error: // @@ -3516,8 +3520,8 @@ func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigu // To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about CloudWatch request metrics for Amazon S3, see Monitoring // Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). @@ -3689,8 +3693,8 @@ func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificat // // Returns the notification configuration of a bucket. // -// If notifications are not enabled on the bucket, the operation returns an -// empty NotificationConfiguration element. +// If notifications are not enabled on the bucket, the action returns an empty +// NotificationConfiguration element. // // By default, you must be the bucket owner to read the notification configuration // of a bucket. However, the bucket owner can use a bucket policy to grant permission @@ -3701,7 +3705,7 @@ func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificat // on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). // For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). // -// The following operation is related to GetBucketNotification: +// The following action is related to GetBucketNotification: // // * PutBucketNotification (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html) // @@ -3879,7 +3883,7 @@ func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.R // For more information about bucket policies, see Using Bucket Policies and // User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). // -// The following operation is related to GetBucketPolicy: +// The following action is related to GetBucketPolicy: // // * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) // @@ -4052,11 +4056,11 @@ func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req // can return a wrong result. // // For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // -// This operation requires permissions for the s3:GetReplicationConfiguration -// action. For more information about permissions, see Using Bucket Policies -// and User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). +// This action requires permissions for the s3:GetReplicationConfiguration action. +// For more information about permissions, see Using Bucket Policies and User +// Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). // // If you include the Filter element in a replication configuration, you must // also include the DeleteMarkerReplication and Priority elements. The response @@ -4405,7 +4409,7 @@ func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request // For more information about hosting websites, see Hosting Websites on Amazon // S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). // -// This GET operation requires the S3:GetBucketWebsite permission. By default, +// This GET action requires the S3:GetBucketWebsite permission. By default, // only the bucket owner can read the bucket website configuration. However, // bucket owners can allow other users to read the website configuration by // writing a bucket policy granting them the S3:GetBucketWebsite permission. @@ -4515,7 +4519,7 @@ func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, outp // Deep Archive storage class, or S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering // Deep Archive tiers, before you can retrieve the object you must first restore // a copy using RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html). -// Otherwise, this operation returns an InvalidObjectStateError error. For information +// Otherwise, this action returns an InvalidObjectStateError error. For information // about restoring archived objects, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html). // // Encryption request headers, like x-amz-server-side-encryption, should not @@ -4558,8 +4562,8 @@ func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, outp // // Versioning // -// By default, the GET operation returns the current version of an object. To -// return a different version, use the versionId subresource. +// By default, the GET action returns the current version of an object. To return +// a different version, use the versionId subresource. // // If the current version of the object is a delete marker, Amazon S3 behaves // as if the object was deleted and includes x-amz-delete-marker: true in the @@ -5026,7 +5030,7 @@ func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request // subresource associated with the object. // // To use this operation, you must have permission to perform the s3:GetObjectTagging -// action. By default, the GET operation returns information about current version +// action. By default, the GET action returns information about current version // of an object. For a versioned bucket, you can have multiple versions of an // object in your bucket. To retrieve tags of any other version, use the versionId // query parameter. You also need permission for the s3:GetObjectVersionTagging @@ -5038,10 +5042,12 @@ func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request // For information about the Amazon S3 object tagging feature, see Object Tagging // (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). // -// The following operation is related to GetObjectTagging: +// The following action is related to GetObjectTagging: // // * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) // +// * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -5126,7 +5132,7 @@ func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request // // This action is not supported by Amazon S3 on Outposts. // -// The following operation is related to GetObjectTorrent: +// The following action is related to GetObjectTorrent: // // * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) // @@ -5300,16 +5306,20 @@ func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, ou // HeadBucket API operation for Amazon Simple Storage Service. // -// This operation is useful to determine if a bucket exists and you have permission -// to access it. The operation returns a 200 OK if the bucket exists and you -// have permission to access it. Otherwise, the operation might return responses -// such as 404 Not Found and 403 Forbidden. +// This action is useful to determine if a bucket exists and you have permission +// to access it. The action returns a 200 OK if the bucket exists and you have +// permission to access it. +// +// If the bucket does not exist or you do not have permission to access it, +// the HEAD request returns a generic 404 Not Found or 403 Forbidden code. A +// message body is not included, so you cannot determine the exception beyond +// these error codes. // // To use this operation, you must have permissions to perform the s3:ListBucket // action. The bucket owner has this permission by default and can grant this // permission to others. For more information about permissions, see Permissions -// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -5388,13 +5398,15 @@ func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, ou // HeadObject API operation for Amazon Simple Storage Service. // -// The HEAD operation retrieves metadata from an object without returning the -// object itself. This operation is useful if you're only interested in an object's -// metadata. To use HEAD, you must have READ access to the object. +// The HEAD action retrieves metadata from an object without returning the object +// itself. This action is useful if you're only interested in an object's metadata. +// To use HEAD, you must have READ access to the object. // -// A HEAD request has the same options as a GET operation on an object. The -// response is identical to the GET response except that there is no response -// body. +// A HEAD request has the same options as a GET action on an object. The response +// is identical to the GET response except that there is no response body. Because +// of this, if the HEAD request generates an error, it returns a generic 404 +// Not Found or 403 Forbidden code. It is not possible to retrieve the exact +// exception beyond these error codes. // // If you encrypt an object by using server-side encryption with customer-provided // encryption keys (SSE-C) when you store the object in Amazon S3, then when @@ -5409,11 +5421,14 @@ func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, ou // For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided // Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html). // -// Encryption request headers, like x-amz-server-side-encryption, should not -// be sent for GET requests if your object uses server-side encryption with -// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed -// encryption keys (SSE-S3). If your object does use these types of keys, you’ll -// get an HTTP 400 BadRequest error. +// * Encryption request headers, like x-amz-server-side-encryption, should +// not be sent for GET requests if your object uses server-side encryption +// with CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon +// S3–managed encryption keys (SSE-S3). If your object does use these types +// of keys, you’ll get an HTTP 400 BadRequest error. +// +// * The last modified property in this case is the creation date of the +// object. // // Request headers are limited to 8 KB in size. For more information, see Common // Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html). @@ -5445,7 +5460,7 @@ func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, ou // * If you don’t have the s3:ListBucket permission, Amazon S3 returns // an HTTP status code 403 ("access denied") error. // -// The following operation is related to HeadObject: +// The following action is related to HeadObject: // // * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) // @@ -5527,19 +5542,19 @@ func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalytics // Lists the analytics configurations for the bucket. You can have up to 1,000 // analytics configurations per bucket. // -// This operation supports list pagination and does not return more than 100 -// configurations at a time. You should always check the IsTruncated element -// in the response. If there are no more configurations to list, IsTruncated -// is set to false. If there are more configurations to list, IsTruncated is -// set to true, and there will be a value in NextContinuationToken. You use -// the NextContinuationToken value to continue the pagination of the list by -// passing the value in continuation-token in the request to GET the next page. +// This action supports list pagination and does not return more than 100 configurations +// at a time. You should always check the IsTruncated element in the response. +// If there are no more configurations to list, IsTruncated is set to false. +// If there are more configurations to list, IsTruncated is set to true, and +// there will be a value in NextContinuationToken. You use the NextContinuationToken +// value to continue the pagination of the list by passing the value in continuation-token +// in the request to GET the next page. // // To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about Amazon S3 analytics feature, see Amazon S3 Analytics // – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html). @@ -5726,19 +5741,19 @@ func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventory // Returns a list of inventory configurations for the bucket. You can have up // to 1,000 analytics configurations per bucket. // -// This operation supports list pagination and does not return more than 100 -// configurations at a time. Always check the IsTruncated element in the response. -// If there are no more configurations to list, IsTruncated is set to false. -// If there are more configurations to list, IsTruncated is set to true, and -// there is a value in NextContinuationToken. You use the NextContinuationToken -// value to continue the pagination of the list by passing the value in continuation-token +// This action supports list pagination and does not return more than 100 configurations +// at a time. Always check the IsTruncated element in the response. If there +// are no more configurations to list, IsTruncated is set to false. If there +// are more configurations to list, IsTruncated is set to true, and there is +// a value in NextContinuationToken. You use the NextContinuationToken value +// to continue the pagination of the list by passing the value in continuation-token // in the request to GET the next page. // // To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about the Amazon S3 inventory feature, see Amazon S3 Inventory // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html) @@ -5827,19 +5842,19 @@ func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConf // are only for the request metrics of the bucket and do not provide information // on daily storage metrics. You can have up to 1,000 configurations per bucket. // -// This operation supports list pagination and does not return more than 100 -// configurations at a time. Always check the IsTruncated element in the response. -// If there are no more configurations to list, IsTruncated is set to false. -// If there are more configurations to list, IsTruncated is set to true, and -// there is a value in NextContinuationToken. You use the NextContinuationToken -// value to continue the pagination of the list by passing the value in continuation-token +// This action supports list pagination and does not return more than 100 configurations +// at a time. Always check the IsTruncated element in the response. If there +// are no more configurations to list, IsTruncated is set to false. If there +// are more configurations to list, IsTruncated is set to true, and there is +// a value in NextContinuationToken. You use the NextContinuationToken value +// to continue the pagination of the list by passing the value in continuation-token // in the request to GET the next page. // // To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For more information about metrics configurations and CloudWatch request // metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). @@ -6004,11 +6019,11 @@ func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req // ListMultipartUploads API operation for Amazon Simple Storage Service. // -// This operation lists in-progress multipart uploads. An in-progress multipart +// This action lists in-progress multipart uploads. An in-progress multipart // upload is a multipart upload that has been initiated using the Initiate Multipart // Upload request, but has not yet been completed or aborted. // -// This operation returns at most 1,000 multipart uploads in the response. 1,000 +// This action returns at most 1,000 multipart uploads in the response. 1,000 // multipart uploads is the maximum number of uploads a response can include, // which is also the default value. You can further limit the number of uploads // in a response by specifying the max-uploads parameter in the response. If @@ -6025,7 +6040,7 @@ func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req // Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). // // For information on permissions required to use the multipart upload API, -// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). // // The following operations are related to ListMultipartUploads: // @@ -6326,8 +6341,8 @@ func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, // to design your application to parse the contents of the response and handle // it appropriately. // -// This API has been revised. We recommend that you use the newer version, ListObjectsV2 -// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), +// This action has been revised. We recommend that you use the newer version, +// ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), // when developing applications. For backward compatibility, Amazon S3 continues // to support ListObjects. // @@ -6482,18 +6497,19 @@ func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Reque // the request parameters as selection criteria to return a subset of the objects // in a bucket. A 200 OK response can contain valid or invalid XML. Make sure // to design your application to parse the contents of the response and handle -// it appropriately. +// it appropriately. Objects are returned sorted in an ascending order of the +// respective key names in the list. // // To use this operation, you must have READ access to the bucket. // -// To use this operation in an AWS Identity and Access Management (IAM) policy, +// To use this action in an AWS Identity and Access Management (IAM) policy, // you must have permissions to perform the s3:ListBucket action. The bucket // owner has this permission by default and can grant this permission to others. // For more information about permissions, see Permissions Related to Bucket -// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // -// This section describes the latest revision of the API. We recommend that +// This section describes the latest revision of this action. We recommend that // you use this revised API for application development. For backward compatibility, // Amazon S3 continues to support the prior version of this API, ListObjects // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html). @@ -6658,7 +6674,7 @@ func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, outp // Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). // // For information on permissions required to use the multipart upload API, -// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). +// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). // // The following operations are related to ListParts: // @@ -6804,8 +6820,8 @@ func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateC // To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // The Transfer Acceleration state of a bucket can be set to one of the following // two values: @@ -6815,7 +6831,7 @@ func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateC // * Suspended – Disables accelerated data transfers to the bucket. // // The GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html) -// operation returns the transfer acceleration state of a bucket. +// action returns the transfer acceleration state of a bucket. // // After setting the Transfer Acceleration state of a bucket to Enabled, it // might take up to thirty minutes before the data transfer rates to the bucket @@ -7092,8 +7108,8 @@ func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsCon // To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // Special Errors // @@ -7227,7 +7243,7 @@ func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Reque // // For more information about CORS, go to Enabling Cross-Origin Resource Sharing // (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon -// Simple Storage Service Developer Guide. +// S3 User Guide. // // Related Resources // @@ -7314,7 +7330,7 @@ func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *r // PutBucketEncryption API operation for Amazon Simple Storage Service. // -// This operation uses the encryption subresource to configure default encryption +// This action uses the encryption subresource to configure default encryption // and Amazon S3 Bucket Key for an existing bucket. // // Default encryption for a bucket can use server-side encryption with Amazon @@ -7322,19 +7338,19 @@ func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *r // specify default encryption using SSE-KMS, you can also configure Amazon S3 // Bucket Key. For information about default encryption, see Amazon S3 default // bucket encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) -// in the Amazon Simple Storage Service Developer Guide. For more information -// about S3 Bucket Keys, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. For more information about S3 Bucket Keys, see +// Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) +// in the Amazon S3 User Guide. // -// This operation requires AWS Signature Version 4. For more information, see -// Authenticating Requests (AWS Signature Version 4) (sig-v4-authenticating-requests.html). +// This action requires AWS Signature Version 4. For more information, see Authenticating +// Requests (AWS Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html). // // To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // Related Resources // @@ -7415,7 +7431,8 @@ func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketInt // PutBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service. // -// Puts a S3 Intelligent-Tiering configuration to the specified bucket. +// Puts a S3 Intelligent-Tiering configuration to the specified bucket. You +// can have up to 1,000 S3 Intelligent-Tiering configurations per bucket. // // The S3 Intelligent-Tiering storage class is designed to optimize storage // costs by automatically moving data to the most cost-effective storage access @@ -7442,6 +7459,22 @@ func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketInt // // * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html) // +// You only need S3 Intelligent-Tiering enabled on a bucket if you want to automatically +// move objects stored in the S3 Intelligent-Tiering storage class to the Archive +// Access or Deep Archive Access tier. +// +// Special Errors +// +// * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument +// +// * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are +// attempting to create a new configuration but have already reached the +// 1,000-configuration limit. +// +// * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner +// of the specified bucket, or you do not have the s3:PutIntelligentTieringConfiguration +// bucket permission to set the configuration on the bucket. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -7515,9 +7548,9 @@ func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryCon // PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service. // -// This implementation of the PUT operation adds an inventory configuration -// (identified by the inventory ID) to the bucket. You can have up to 1,000 -// inventory configurations per bucket. +// This implementation of the PUT action adds an inventory configuration (identified +// by the inventory ID) to the bucket. You can have up to 1,000 inventory configurations +// per bucket. // // Amazon S3 inventory generates inventories of the objects in the bucket on // a daily or weekly basis, and the results are published to a flat file. The @@ -7530,7 +7563,7 @@ func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryCon // the inventory daily or weekly. You can also configure what object metadata // to include and whether to inventory all object versions or only current versions. // For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // You must create a bucket policy on the destination bucket to grant permissions // to Amazon S3 to write objects to the bucket in the defined location. For @@ -7540,9 +7573,9 @@ func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryCon // To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration // action. The bucket owner has this permission by default and can grant this // permission to others. For more information about permissions, see Permissions -// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // Special Errors // @@ -7654,7 +7687,7 @@ func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *req // Creates a new lifecycle configuration for the bucket or replaces an existing // lifecycle configuration. For information about lifecycle configuration, see // Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // By default, all Amazon S3 resources, including buckets, objects, and related // subresources (for example, lifecycle configuration and website configuration) @@ -7675,8 +7708,8 @@ func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *req // * s3:PutLifecycleConfiguration // // For more information about permissions, see Managing Access Permissions to -// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // For more examples of transitioning objects to storage classes such as STANDARD_IA // or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#lifecycle-configuration-examples). @@ -7692,9 +7725,9 @@ func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *req // * By default, a resource owner—in this case, a bucket owner, which is // the AWS account that created the bucket—can perform any of the operations. // A resource owner can also grant others permission to perform the operation. -// For more information, see the following topics in the Amazon Simple Storage -// Service Developer Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) -// Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) +// For more information, see the following topics in the Amazon S3 User Guide: +// Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) +// Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -7779,7 +7812,7 @@ func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleCon // // Creates a new lifecycle configuration for the bucket or replaces an existing // lifecycle configuration. For information about lifecycle configuration, see -// Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // Bucket lifecycle configuration now supports specifying a lifecycle rule using // an object key name prefix, one or more object tags, or a combination of both. @@ -7831,7 +7864,7 @@ func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleCon // * s3:PutLifecycleConfiguration // // For more information about permissions, see Managing Access Permissions to -// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // The following are related to PutBucketLifecycleConfiguration: // @@ -8048,8 +8081,8 @@ func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigu // To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration // action. The bucket owner has this permission by default. The bucket owner // can grant this permission to others. For more information about permissions, -// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // For information about CloudWatch request metrics for Amazon S3, see Monitoring // Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html). @@ -8245,8 +8278,8 @@ func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificat // // // -// This operation replaces the existing notification configuration with the -// configuration you include in the request body. +// This action replaces the existing notification configuration with the configuration +// you include in the request body. // // After Amazon S3 receives this request, it first verifies that any Amazon // Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon @@ -8266,8 +8299,8 @@ func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificat // The PUT notification is an atomic operation. For example, suppose your notification // configuration includes SNS topic, SQS queue, and Lambda function configurations. // When you send a PUT request with this configuration, Amazon S3 sends test -// messages to your SNS topic. If the message fails, the entire PUT operation -// will fail, and Amazon S3 will not add the configuration to your bucket. +// messages to your SNS topic. If the message fails, the entire PUT action will +// fail, and Amazon S3 will not add the configuration to your bucket. // // Responses // @@ -8276,7 +8309,7 @@ func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificat // will also include the x-amz-sns-test-message-id header containing the message // ID of the test notification sent to the topic. // -// The following operation is related to PutBucketNotificationConfiguration: +// The following action is related to PutBucketNotificationConfiguration: // // * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html) // @@ -8552,8 +8585,8 @@ func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req // information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) // in the Amazon S3 Developer Guide. // -// To perform this operation, the user or role performing the operation must -// have the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) +// To perform this operation, the user or role performing the action must have +// the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) // permission. // // Specify the replication configuration in the request body. In the replication @@ -8583,7 +8616,7 @@ func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req // bucket, can perform this operation. The resource owner can also grant others // permissions to perform the operation. For more information about permissions, // see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // Handling Replication of Encrypted Objects // @@ -8786,8 +8819,8 @@ func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request // To use this operation, you must have permissions to perform the s3:PutBucketTagging // action. The bucket owner has this permission by default and can grant this // permission to others. For more information about permissions, see Permissions -// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html). +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html). // // PutBucketTagging has the following special errors: // @@ -8801,7 +8834,7 @@ func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request // match the schema. // // * Error code: OperationAbortedError Description: A conflicting conditional -// operation is currently in progress against this resource. Please try again. +// action is currently in progress against this resource. Please try again. // // * Error code: InternalError Description: The service was unable to apply // the provided tag to the bucket. @@ -9008,7 +9041,7 @@ func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request // document and any redirect rules. For more information, see Hosting Websites // on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). // -// This PUT operation requires the S3:PutBucketWebsite permission. By default, +// This PUT action requires the S3:PutBucketWebsite permission. By default, // only the bucket owner can configure the website attached to a bucket; however, // bucket owners can allow other users to set the website configuration by writing // a bucket policy that grants them the S3:PutBucketWebsite permission. @@ -9067,7 +9100,7 @@ func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request // Amazon S3 has a limitation of 50 routing rules per website configuration. // If you require more than 50 routing rules, you can use object redirect. For // more information, see Configuring an Object Redirect (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -9174,7 +9207,7 @@ func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, outp // If you request server-side encryption using AWS Key Management Service (SSE-KMS), // you can enable an S3 Bucket Key at the object-level. For more information, // see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Access Control List (ACL)-Specific Request Headers // @@ -9293,7 +9326,7 @@ func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request // for a new or existing object in an S3 bucket. You must have WRITE_ACP permission // to set the ACL of an object. For more information, see What permissions can // I grant? (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#permissions) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // This action is not supported by Amazon S3 on Outposts. // @@ -9741,7 +9774,7 @@ func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request // // * Code: MalformedXMLError Cause: The XML provided does not match the schema. // -// * Code: OperationAbortedError Cause: A conflicting conditional operation +// * Code: OperationAbortedError Cause: A conflicting conditional action // is currently in progress against this resource. Please try again. // // * Code: InternalError Cause: The service was unable to apply the provided @@ -9751,6 +9784,8 @@ func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request // // * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) // +// * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -9938,9 +9973,9 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // To use this operation, you must have permissions to perform the s3:RestoreObject // action. The bucket owner has this permission by default and can grant this // permission to others. For more information about permissions, see Permissions -// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) -// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) -// in the Amazon Simple Storage Service Developer Guide. +// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources) +// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) +// in the Amazon S3 User Guide. // // Querying Archives with Select Requests // @@ -9950,7 +9985,7 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // queries and custom analytics on your archived data without having to restore // your data to a hotter Amazon S3 tier. For an overview about select requests, // see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // When making a select request, do the following: // @@ -9961,13 +9996,12 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // the storage class and encryption for the output objects stored in the // bucket. For more information about output, see Querying Archived Objects // (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html) -// in the Amazon Simple Storage Service Developer Guide. For more information -// about the S3 structure in the request body, see the following: PutObject -// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) Managing -// Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html) -// in the Amazon Simple Storage Service Developer Guide Protecting Data Using -// Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) -// in the Amazon Simple Storage Service Developer Guide +// in the Amazon S3 User Guide. For more information about the S3 structure +// in the request body, see the following: PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) +// Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html) +// in the Amazon S3 User Guide Protecting Data Using Server-Side Encryption +// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) +// in the Amazon S3 User Guide // // * Define the SQL expression for the SELECT type of restoration for your // query in the request body's SelectParameters structure. You can use expressions @@ -9983,7 +10017,7 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // // For more information about using SQL with S3 Glacier Select restore, see // SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // When making a select request, you can also do the following: // @@ -10054,19 +10088,19 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // // For more information about archive retrieval options and provisioned capacity // for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // You can use Amazon S3 restore speed upgrade to change the restore speed to // a faster speed while it is in progress. For more information, see Upgrading // the speed of an in-progress restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // To get the status of object restoration, you can send a HEAD request. Operations // return the x-amz-restore header, which provides information about the restoration // status, in the response. You can use Amazon S3 event notifications to notify // you when a restore is initiated or completed. For more information, see Configuring // Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // After restoring an archived object, you can update the restoration period // by reissuing the request with a new period. Amazon S3 updates the restoration @@ -10081,11 +10115,11 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // the object in 3 days. For more information about lifecycle configuration, // see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) // and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) -// in Amazon Simple Storage Service Developer Guide. +// in Amazon S3 User Guide. // // Responses // -// A successful operation returns either the 200 OK or 202 Accepted status code. +// A successful action returns either the 200 OK or 202 Accepted status code. // // * If the object is not previously restored, then Amazon S3 returns 202 // Accepted in the response. @@ -10112,7 +10146,7 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html) // // * SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html) -// in the Amazon Simple Storage Service Developer Guide +// in the Amazon S3 User Guide // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -10123,7 +10157,7 @@ func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Reque // // Returned Error Codes: // * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError" -// This operation is not allowed against this storage tier. +// This action is not allowed against this storage tier. // // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) { @@ -10200,7 +10234,7 @@ func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *r // SelectObjectContent API operation for Amazon Simple Storage Service. // -// This operation filters the contents of an Amazon S3 object based on a simple +// This action filters the contents of an Amazon S3 object based on a simple // structured query language (SQL) statement. In the request, along with the // SQL expression, you must also specify a data serialization format (JSON, // CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse @@ -10212,18 +10246,18 @@ func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *r // // For more information about Amazon S3 Select, see Selecting Content from Objects // (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // For more information about using SQL with Amazon S3 Select, see SQL Reference // for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Permissions // // You must have s3:GetObject permission for this operation. Amazon S3 Select // does not support anonymous access. For more information about permissions, // see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Object Data Formats // @@ -10246,13 +10280,13 @@ func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *r // you must use the headers that are documented in the GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). // For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided // Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html) -// in the Amazon Simple Storage Service Developer Guide. For objects that -// are encrypted with Amazon S3 managed encryption keys (SSE-S3) and customer -// master keys (CMKs) stored in AWS Key Management Service (SSE-KMS), server-side -// encryption is handled transparently, so you don't need to specify anything. -// For more information about server-side encryption, including SSE-S3 and -// SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. For objects that are encrypted with Amazon +// S3 managed encryption keys (SSE-S3) and customer master keys (CMKs) stored +// in AWS Key Management Service (SSE-KMS), server-side encryption is handled +// transparently, so you don't need to specify anything. For more information +// about server-side encryption, including SSE-S3 and SSE-KMS, see Protecting +// Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) +// in the Amazon S3 User Guide. // // Working with the Response Body // @@ -10263,8 +10297,8 @@ func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *r // // GetObject Support // -// The SelectObjectContent operation does not support the following GetObject -// functionality. For more information, see GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). +// The SelectObjectContent action does not support the following GetObject functionality. +// For more information, see GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). // // * Range: Although you can specify a scan range for an Amazon S3 Select // request (see SelectObjectContentRequest - ScanRange (https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange) @@ -10274,7 +10308,7 @@ func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *r // * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot // specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes. // For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Special Errors // @@ -10567,11 +10601,11 @@ func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, ou // // For more information on multipart uploads, go to Multipart Upload Overview // (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the -// Amazon Simple Storage Service Developer Guide . +// Amazon S3 User Guide . // // For information on the permissions required to use the multipart upload API, -// go to Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) -// in the Amazon Simple Storage Service Developer Guide. +// go to Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) +// in the Amazon S3 User Guide. // // You can optionally request server-side encryption where Amazon S3 encrypts // your data as it writes it to disks in its data centers and decrypts it for @@ -10581,7 +10615,7 @@ func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, ou // match the headers you used in the request to initiate the upload by using // CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html). // For more information, go to Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Server-side encryption is supported by the S3 Multipart Upload actions. Unless // you are using a customer-provided encryption key, you don't need to specify @@ -10697,10 +10731,10 @@ func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Req // // The minimum allowable part size for a multipart upload is 5 MB. For more // information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // Instead of using an existing object as part data, you might use the UploadPart -// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) operation +// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) action // and provide data in your request. // // You must initiate a multipart upload before you can upload any part. In response @@ -10711,15 +10745,15 @@ func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Req // // * For conceptual information about multipart uploads, see Uploading Objects // Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. // // * For information about permissions required to use the multipart upload -// API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) -// in the Amazon Simple Storage Service Developer Guide. +// API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) +// in the Amazon S3 User Guide. // -// * For information about copying objects using a single atomic operation -// vs. the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html) -// in the Amazon Simple Storage Service Developer Guide. +// * For information about copying objects using a single atomic action vs. +// the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html) +// in the Amazon S3 User Guide. // // * For information about using server-side encryption with customer-provided // encryption keys with the UploadPartCopy operation, see CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) @@ -10808,6 +10842,97 @@ func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInp return out, req.Send() } +const opWriteGetObjectResponse = "WriteGetObjectResponse" + +// WriteGetObjectResponseRequest generates a "aws/request.Request" representing the +// client's request for the WriteGetObjectResponse operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See WriteGetObjectResponse for more information on using the WriteGetObjectResponse +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the WriteGetObjectResponseRequest method. +// req, resp := client.WriteGetObjectResponseRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse +func (c *S3) WriteGetObjectResponseRequest(input *WriteGetObjectResponseInput) (req *request.Request, output *WriteGetObjectResponseOutput) { + op := &request.Operation{ + Name: opWriteGetObjectResponse, + HTTPMethod: "POST", + HTTPPath: "/WriteGetObjectResponse", + } + + if input == nil { + input = &WriteGetObjectResponseInput{} + } + + output = &WriteGetObjectResponseOutput{} + req = c.newRequest(op, input, output) + req.Handlers.Sign.Remove(v4.SignRequestHandler) + handler := v4.BuildNamedHandler("v4.CustomSignerHandler", v4.WithUnsignedPayload) + req.Handlers.Sign.PushFrontNamed(handler) + req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) + req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("{RequestRoute}.", input.hostLabels)) + req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler) + return +} + +// WriteGetObjectResponse API operation for Amazon Simple Storage Service. +// +// Passes transformed objects to a GetObject operation when using Object Lambda +// Access Points. For information about Object Lambda Access Points, see Transforming +// objects with Object Lambda Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html) +// in the Amazon S3 User Guide. +// +// This operation supports metadata that can be returned by GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), +// in addition to RequestRoute, RequestToken, StatusCode, ErrorCode, and ErrorMessage. +// The GetObject response metadata is supported so that the WriteGetObjectResponse +// caller, typically an AWS Lambda function, can provide the same metadata when +// it internally invokes GetObject. When WriteGetObjectResponse is called by +// a customer-owned Lambda function, the metadata returned to the end user GetObject +// call might differ from what Amazon S3 would normally return. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for Amazon Simple Storage Service's +// API operation WriteGetObjectResponse for usage and error information. +// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse +func (c *S3) WriteGetObjectResponse(input *WriteGetObjectResponseInput) (*WriteGetObjectResponseOutput, error) { + req, out := c.WriteGetObjectResponseRequest(input) + return out, req.Send() +} + +// WriteGetObjectResponseWithContext is the same as WriteGetObjectResponse with the addition of +// the ability to pass a context and additional request options. +// +// See WriteGetObjectResponse for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *S3) WriteGetObjectResponseWithContext(ctx aws.Context, input *WriteGetObjectResponseInput, opts ...request.Option) (*WriteGetObjectResponseOutput, error) { + req, out := c.WriteGetObjectResponseRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + // Specifies the days since the initiation of an incomplete multipart upload // that Amazon S3 will wait before permanently removing all parts of the upload. // For more information, see Aborting Incomplete Multipart Uploads Using a Bucket @@ -10842,25 +10967,25 @@ type AbortMultipartUploadInput struct { // The bucket name to which the upload was taking place. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -11656,6 +11781,9 @@ type CORSRule struct { // object). ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"` + // Unique identifier for the rule. The value cannot be longer than 255 characters. + ID *string `type:"string"` + // The time in seconds that your browser is to cache the preflight response // for the specified resource. MaxAgeSeconds *int64 `type:"integer"` @@ -11711,6 +11839,12 @@ func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule { return s } +// SetID sets the ID field's value. +func (s *CORSRule) SetID(v string) *CORSRule { + s.ID = &v + return s +} + // SetMaxAgeSeconds sets the MaxAgeSeconds field's value. func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule { s.MaxAgeSeconds = &v @@ -11991,7 +12125,7 @@ type CompleteMultipartUploadInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -12127,19 +12261,19 @@ type CompleteMultipartUploadOutput struct { // The name of the bucket that contains the newly created object. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. Bucket *string `type:"string"` @@ -12341,6 +12475,10 @@ type Condition struct { // the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals // is not specified. If both conditions are specified, both must be true for // the redirect to be applied. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). KeyPrefixEquals *string `type:"string"` } @@ -12409,19 +12547,19 @@ type CopyObjectInput struct { // The name of the destination bucket. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -12432,8 +12570,8 @@ type CopyObjectInput struct { // to true causes Amazon S3 to use an S3 Bucket Key for object encryption with // SSE-KMS. // - // Specifying this header with a COPY operation doesn’t affect bucket-level - // settings for S3 Bucket Key. + // Specifying this header with a COPY action doesn’t affect bucket-level settings + // for S3 Bucket Key. BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"` // Specifies caching behavior along the request/reply chain. @@ -12455,7 +12593,7 @@ type CopyObjectInput struct { // Specifies the source object for the copy operation. You specify the value // in one of two formats, depending on whether you want to access the source - // object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html): + // object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html): // // * For objects not accessed through an access point, specify the name of // the source bucket and the key of the source object, separated by a slash @@ -12513,12 +12651,12 @@ type CopyObjectInput struct { // encryption key was transmitted without error. CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"` - // The account id of the expected destination bucket owner. If the destination + // The account ID of the expected destination bucket owner. If the destination // bucket is owned by a different account, the request will fail with an HTTP // 403 (Access Denied) error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` - // The account id of the expected source bucket owner. If the source bucket + // The account ID of the expected source bucket owner. If the source bucket // is owned by a different account, the request will fail with an HTTP 403 (Access // Denied) error. ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"` @@ -13083,10 +13221,10 @@ type CopyObjectResult struct { // Returns the ETag of the new object. The ETag reflects only changes to the // contents of an object, not its metadata. The source and destination ETag - // is identical for a successfully copied object. + // is identical for a successfully copied non-multipart object. ETag *string `type:"string"` - // Returns the date that the object was last modified. + // Creation date of the object. LastModified *time.Time `type:"timestamp"` } @@ -13326,19 +13464,19 @@ type CreateMultipartUploadInput struct { // The name of the bucket to which to initiate the upload // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -13349,7 +13487,7 @@ type CreateMultipartUploadInput struct { // to true causes Amazon S3 to use an S3 Bucket Key for object encryption with // SSE-KMS. // - // Specifying this header with an object operation doesn’t affect bucket-level + // Specifying this header with an object action doesn’t affect bucket-level // settings for S3 Bucket Key. BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"` @@ -13370,7 +13508,7 @@ type CreateMultipartUploadInput struct { // A standard MIME type describing the format of the object data. ContentType *string `location:"header" locationName:"Content-Type" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -13447,7 +13585,7 @@ type CreateMultipartUploadInput struct { // object encryption. All GET and PUT requests for an object protected by AWS // KMS will fail if not made via SSL or using SigV4. For information about configuring // using any of the officially supported AWS SDKs and AWS CLI, see Specifying - // the Signature Version in Request Authentication (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version) + // the Signature Version in Request Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version) // in the Amazon S3 Developer Guide. SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` @@ -13740,19 +13878,19 @@ type CreateMultipartUploadOutput struct { // The name of the bucket to which the multipart upload was initiated. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. Bucket *string `locationName:"Bucket" type:"string"` @@ -13995,7 +14133,7 @@ type DeleteBucketAnalyticsConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14109,7 +14247,7 @@ type DeleteBucketCorsInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14210,7 +14348,7 @@ type DeleteBucketEncryptionInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14310,7 +14448,7 @@ type DeleteBucketInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14500,7 +14638,7 @@ type DeleteBucketInventoryConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14614,7 +14752,7 @@ type DeleteBucketLifecycleInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14714,7 +14852,7 @@ type DeleteBucketMetricsConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14842,7 +14980,7 @@ type DeleteBucketOwnershipControlsInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -14942,7 +15080,7 @@ type DeleteBucketPolicyInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -15042,7 +15180,7 @@ type DeleteBucketReplicationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -15142,7 +15280,7 @@ type DeleteBucketTaggingInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -15242,7 +15380,7 @@ type DeleteBucketWebsiteInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -15438,19 +15576,19 @@ type DeleteObjectInput struct { // The bucket name of the bucket containing the object. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -15460,7 +15598,7 @@ type DeleteObjectInput struct { // to process this operation. BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -15644,30 +15782,31 @@ type DeleteObjectTaggingInput struct { // The bucket name containing the objects from which to remove the tags. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` - // Name of the object key. + // The key that identifies the object in the bucket from which to remove all + // tags. // // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` @@ -15794,19 +15933,19 @@ type DeleteObjectsInput struct { // The bucket name containing the objects to delete. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -15822,7 +15961,7 @@ type DeleteObjectsInput struct { // Delete is a required field Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -15952,7 +16091,7 @@ type DeleteObjectsOutput struct { // was successfully deleted. Deleted []*DeletedObject `type:"list" flattened:"true"` - // Container for a failed delete operation that describes the object that Amazon + // Container for a failed delete action that describes the object that Amazon // S3 attempted to delete and the error it encountered. Errors []*Error `locationName:"Error" type:"list" flattened:"true"` @@ -15997,7 +16136,7 @@ type DeletePublicAccessBlockInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -16423,9 +16562,9 @@ type Error struct { // Forbidden SOAP Fault Code Prefix: Client // // * Code: AccountProblem Description: There is a problem with your AWS account - // that prevents the operation from completing successfully. Contact AWS - // Support for further assistance. HTTP Status Code: 403 Forbidden SOAP Fault - // Code Prefix: Client + // that prevents the action from completing successfully. Contact AWS Support + // for further assistance. HTTP Status Code: 403 Forbidden SOAP Fault Code + // Prefix: Client // // * Code: AllAccessDisabled Description: All access to this Amazon S3 resource // has been disabled. Contact AWS Support for further assistance. HTTP Status @@ -16528,9 +16667,9 @@ type Error struct { // Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro). // HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client // - // * Code: InvalidObjectState Description: The operation is not valid for - // the current state of the object. HTTP Status Code: 403 Forbidden SOAP - // Fault Code Prefix: Client + // * Code: InvalidObjectState Description: The action is not valid for the + // current state of the object. HTTP Status Code: 403 Forbidden SOAP Fault + // Code Prefix: Client // // * Code: InvalidPart Description: One or more of the specified parts could // not be found. The part might not have been uploaded, or the specified @@ -16695,7 +16834,7 @@ type Error struct { // can sign up at the following URL: https://aws.amazon.com/s3 HTTP Status // Code: 403 Forbidden SOAP Fault Code Prefix: Client // - // * Code: OperationAborted Description: A conflicting conditional operation + // * Code: OperationAborted Description: A conflicting conditional action // is currently in progress against this resource. Try again. HTTP Status // Code: 409 Conflict SOAP Fault Code Prefix: Client // @@ -16821,6 +16960,10 @@ type ErrorDocument struct { // The object key name to use when a 4XX class error occurs. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Key is a required field Key *string `min:"1" type:"string" required:"true"` } @@ -16942,7 +17085,7 @@ type GetBucketAccelerateConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17051,7 +17194,7 @@ type GetBucketAclInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17169,7 +17312,7 @@ type GetBucketAnalyticsConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17292,7 +17435,7 @@ type GetBucketCorsInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17403,7 +17546,7 @@ type GetBucketEncryptionInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17625,7 +17768,7 @@ type GetBucketInventoryConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17748,7 +17891,7 @@ type GetBucketLifecycleConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17857,7 +18000,7 @@ type GetBucketLifecycleInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -17966,7 +18109,7 @@ type GetBucketLocationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18077,7 +18220,7 @@ type GetBucketLoggingInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18189,7 +18332,7 @@ type GetBucketMetricsConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18312,7 +18455,7 @@ type GetBucketNotificationConfigurationRequest struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18398,7 +18541,7 @@ type GetBucketOwnershipControlsInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18508,7 +18651,7 @@ type GetBucketPolicyInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18617,7 +18760,7 @@ type GetBucketPolicyStatusInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18726,7 +18869,7 @@ type GetBucketReplicationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18836,7 +18979,7 @@ type GetBucketRequestPaymentInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -18945,7 +19088,7 @@ type GetBucketTaggingInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -19056,7 +19199,7 @@ type GetBucketVersioningInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -19176,7 +19319,7 @@ type GetBucketWebsiteInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -19310,17 +19453,17 @@ type GetObjectAclInput struct { // The bucket name that contains the object for which to get the ACL information. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -19484,25 +19627,25 @@ type GetObjectInput struct { // The bucket name containing the object. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -19565,14 +19708,14 @@ type GetObjectInput struct { // Sets the Expires header of the response. ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"` - // Specifies the algorithm to use to when encrypting the object (for example, + // Specifies the algorithm to use to when decrypting the object (for example, // AES256). SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"` - // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting - // data. This value is used to store the object and then it is discarded; Amazon - // S3 does not store the encryption key. The key must be appropriate for use - // with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm + // Specifies the customer-provided encryption key for Amazon S3 used to encrypt + // the data. This value is used to decrypt the object when recovering it and + // must match the one used when storing the data. The key must be appropriate + // for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm // header. SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"` @@ -19784,17 +19927,17 @@ type GetObjectLegalHoldInput struct { // The bucket name containing the object whose Legal Hold status you want to // retrieve. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -19939,17 +20082,17 @@ type GetObjectLockConfigurationInput struct { // The bucket whose Object Lock configuration you want to retrieve. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -20103,7 +20246,7 @@ type GetObjectOutput struct { // The date and time at which the object is no longer cacheable. Expires *string `location:"header" locationName:"Expires" type:"string"` - // Last modified date of the object + // Creation date of the object. LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"` // A map of metadata to store with the object in S3. @@ -20140,7 +20283,7 @@ type GetObjectOutput struct { // request. RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"` - // Provides information about object restoration operation and expiration time + // Provides information about object restoration action and expiration time // of the restored object copy. Restore *string `location:"header" locationName:"x-amz-restore" type:"string"` @@ -20387,17 +20530,17 @@ type GetObjectRetentionInput struct { // The bucket name containing the object whose retention settings you want to // retrieve. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -20542,25 +20685,25 @@ type GetObjectTaggingInput struct { // The bucket name containing the object for which to get the tagging information. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -20570,6 +20713,13 @@ type GetObjectTaggingInput struct { // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + // Confirms that the requester knows that they will be charged for the request. + // Bucket owners need not specify this parameter in their requests. For information + // about downloading objects from requester pays buckets, see Downloading Objects + // in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) + // in the Amazon S3 Developer Guide. + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + // The versionId of the object for which to get the tagging information. VersionId *string `location:"querystring" locationName:"versionId" type:"string"` } @@ -20631,6 +20781,12 @@ func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput { return s } +// SetRequestPayer sets the RequestPayer field's value. +func (s *GetObjectTaggingInput) SetRequestPayer(v string) *GetObjectTaggingInput { + s.RequestPayer = &v + return s +} + // SetVersionId sets the VersionId field's value. func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput { s.VersionId = &v @@ -20707,7 +20863,7 @@ type GetObjectTorrentInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -20857,7 +21013,7 @@ type GetPublicAccessBlockInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -21149,25 +21305,25 @@ type HeadBucketInput struct { // The bucket name. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -21264,25 +21420,25 @@ type HeadObjectInput struct { // The name of the bucket containing the object. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -21555,7 +21711,7 @@ type HeadObjectOutput struct { // The date and time at which the object is no longer cacheable. Expires *string `location:"header" locationName:"Expires" type:"string"` - // Last modified date of the object + // Creation date of the object. LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"` // A map of metadata to store with the object in S3. @@ -21881,6 +22037,10 @@ type IndexDocument struct { // with the key name images/index.html) The suffix must not be empty and must // not include a slash character. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Suffix is a required field Suffix *string `type:"string" required:"true"` } @@ -22164,6 +22324,10 @@ type IntelligentTieringFilter struct { // An object key name prefix that identifies the subset of objects to which // the rule applies. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). Prefix *string `type:"string"` // A container of a key value name pair. @@ -22911,6 +23075,10 @@ type LifecycleRule struct { // Prefix identifying one or more objects to which the rule applies. This is // No longer used; use Filter instead. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Deprecated: Prefix has been deprecated Prefix *string `deprecated:"true" type:"string"` @@ -23073,6 +23241,10 @@ type LifecycleRuleFilter struct { And *LifecycleRuleAndOperator `type:"structure"` // Prefix identifying one or more objects to which the rule applies. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). Prefix *string `type:"string"` // This tag must exist in the object's tag set in order for the rule to apply. @@ -23139,7 +23311,7 @@ type ListBucketAnalyticsConfigurationsInput struct { // should begin. ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -23433,7 +23605,7 @@ type ListBucketInventoryConfigurationsInput struct { // that Amazon S3 understands. ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -23586,7 +23758,7 @@ type ListBucketMetricsConfigurationsInput struct { // value that Amazon S3 understands. ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -23777,19 +23949,19 @@ type ListMultipartUploadsInput struct { // The name of the bucket to which the multipart upload was initiated. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -23813,7 +23985,7 @@ type ListMultipartUploadsInput struct { // keys in the response. EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -24125,7 +24297,7 @@ type ListObjectVersionsInput struct { // keys in the response. EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -24134,7 +24306,7 @@ type ListObjectVersionsInput struct { KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"` // Sets the maximum number of keys returned in the response. By default the - // API returns up to 1,000 key names. The response might contain fewer keys + // action returns up to 1,000 key names. The response might contain fewer keys // but will never contain more. If additional keys satisfy the search criteria, // but were not returned because max-keys was exceeded, the response contains // true. To return the additional keys, see key-marker @@ -24417,19 +24589,19 @@ type ListObjectsInput struct { // The name of the bucket containing the objects. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -24446,7 +24618,7 @@ type ListObjectsInput struct { // keys in the response. EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -24455,7 +24627,7 @@ type ListObjectsInput struct { Marker *string `location:"querystring" locationName:"marker" type:"string"` // Sets the maximum number of keys returned in the response. By default the - // API returns up to 1,000 key names. The response might contain fewer keys + // action returns up to 1,000 key names. The response might contain fewer keys // but will never contain more. MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"` @@ -24579,8 +24751,8 @@ func (s ListObjectsInput) updateArnableField(v string) (interface{}, error) { type ListObjectsOutput struct { _ struct{} `type:"structure"` - // All of the keys rolled up in a common prefix count as a single return when - // calculating the number of returns. + // All of the keys (up to 1,000) rolled up in a common prefix count as a single + // return when calculating the number of returns. // // A response can contain CommonPrefixes only if you specify a delimiter. // @@ -24711,19 +24883,19 @@ type ListObjectsV2Input struct { // Bucket name to list. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -24740,7 +24912,7 @@ type ListObjectsV2Input struct { // Encoding type used by Amazon S3 to encode object keys in the response. EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -24751,7 +24923,7 @@ type ListObjectsV2Input struct { FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"` // Sets the maximum number of keys returned in the response. By default the - // API returns up to 1,000 key names. The response might contain fewer keys + // action returns up to 1,000 key names. The response might contain fewer keys // but will never contain more. MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"` @@ -24891,8 +25063,8 @@ func (s ListObjectsV2Input) updateArnableField(v string) (interface{}, error) { type ListObjectsV2Output struct { _ struct{} `type:"structure"` - // All of the keys rolled up into a common prefix count as a single return when - // calculating the number of returns. + // All of the keys (up to 1,000) rolled up into a common prefix count as a single + // return when calculating the number of returns. // // A response can contain CommonPrefixes only if you specify a delimiter. // @@ -24936,30 +25108,30 @@ type ListObjectsV2Output struct { IsTruncated *bool `type:"boolean"` // KeyCount is the number of keys returned with this request. KeyCount will - // always be less than equals to MaxKeys field. Say you ask for 50 keys, your - // result will include less than equals 50 keys + // always be less than or equals to MaxKeys field. Say you ask for 50 keys, + // your result will include less than equals 50 keys KeyCount *int64 `type:"integer"` // Sets the maximum number of keys returned in the response. By default the - // API returns up to 1,000 key names. The response might contain fewer keys + // action returns up to 1,000 key names. The response might contain fewer keys // but will never contain more. MaxKeys *int64 `type:"integer"` // The bucket name. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. Name *string `type:"string"` @@ -25063,25 +25235,25 @@ type ListPartsInput struct { // The name of the bucket to which the parts are being uploaded. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -26195,7 +26367,7 @@ type Object struct { // the object. Key *string `min:"1" type:"string"` - // The date the Object was Last Modified + // Creation date of the object. LastModified *time.Time `type:"timestamp"` // The owner of the object @@ -26258,7 +26430,11 @@ func (s *Object) SetStorageClass(v string) *Object { type ObjectIdentifier struct { _ struct{} `type:"structure"` - // Key name of the object to delete. + // Key name of the object. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). // // Key is a required field Key *string `min:"1" type:"string" required:"true"` @@ -26899,7 +27075,7 @@ func (s *ProgressEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstr // S3 bucket. You can enable the configuration options in any combination. For // more information about when Amazon S3 considers a bucket or object public, // see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. type PublicAccessBlockConfiguration struct { _ struct{} `type:"structure"` @@ -26990,7 +27166,7 @@ type PutBucketAccelerateConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -27105,7 +27281,7 @@ type PutBucketAclInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -27273,7 +27449,7 @@ type PutBucketAnalyticsConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -27404,12 +27580,12 @@ type PutBucketCorsInput struct { // Describes the cross-origin access configuration for objects in an Amazon // S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing // (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon - // Simple Storage Service Developer Guide. + // S3 User Guide. // // CORSConfiguration is a required field CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -27527,7 +27703,7 @@ type PutBucketEncryptionInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -27769,7 +27945,7 @@ type PutBucketInventoryConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -27902,7 +28078,7 @@ type PutBucketLifecycleConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28014,7 +28190,7 @@ type PutBucketLifecycleInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28133,7 +28309,7 @@ type PutBucketLoggingInput struct { // BucketLoggingStatus is a required field BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28247,7 +28423,7 @@ type PutBucketMetricsConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28380,7 +28556,7 @@ type PutBucketNotificationConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28500,7 +28676,7 @@ type PutBucketNotificationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28614,7 +28790,7 @@ type PutBucketOwnershipControlsInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28738,7 +28914,7 @@ type PutBucketPolicyInput struct { // to change this bucket policy in the future. ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28858,7 +29034,7 @@ type PutBucketReplicationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -28987,7 +29163,7 @@ type PutBucketRequestPaymentInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -29106,7 +29282,7 @@ type PutBucketTaggingInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -29225,7 +29401,7 @@ type PutBucketVersioningInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -29349,7 +29525,7 @@ type PutBucketWebsiteInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -29473,17 +29649,17 @@ type PutObjectAclInput struct { // The bucket name that contains the object to which you want to attach the // ACL. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -29512,21 +29688,21 @@ type PutObjectAclInput struct { // This action is not supported by Amazon S3 on Outposts. GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` - // Key for which the PUT operation was initiated. + // Key for which the PUT action was initiated. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Key is a required field @@ -29722,21 +29898,21 @@ type PutObjectInput struct { // Object data. Body io.ReadSeeker `type:"blob"` - // The bucket name to which the PUT operation was initiated. + // The bucket name to which the PUT action was initiated. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -29747,8 +29923,8 @@ type PutObjectInput struct { // to true causes Amazon S3 to use an S3 Bucket Key for object encryption with // SSE-KMS. // - // Specifying this header with a PUT operation doesn’t affect bucket-level - // settings for S3 Bucket Key. + // Specifying this header with a PUT action doesn’t affect bucket-level settings + // for S3 Bucket Key. BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"` // Can be used to specify caching behavior along the request/reply chain. For @@ -29786,7 +29962,7 @@ type PutObjectInput struct { // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). ContentType *string `location:"header" locationName:"Content-Type" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -29815,7 +29991,7 @@ type PutObjectInput struct { // This action is not supported by Amazon S3 on Outposts. GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` - // Object key for which the PUT operation was initiated. + // Object key for which the PUT action was initiated. // // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` @@ -30181,17 +30357,17 @@ type PutObjectLegalHoldInput struct { // The bucket name containing the object that you want to place a Legal Hold // on. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -30350,7 +30526,7 @@ type PutObjectLockConfigurationInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -30611,20 +30787,20 @@ type PutObjectRetentionInput struct { // The bucket name that contains the object you want to apply this Object Retention // configuration to. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // Indicates whether this operation should bypass Governance-mode restrictions. + // Indicates whether this action should bypass Governance-mode restrictions. BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -30787,25 +30963,25 @@ type PutObjectTaggingInput struct { // The bucket name containing the object. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -30815,6 +30991,13 @@ type PutObjectTaggingInput struct { // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` + // Confirms that the requester knows that they will be charged for the request. + // Bucket owners need not specify this parameter in their requests. For information + // about downloading objects from requester pays buckets, see Downloading Objects + // in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) + // in the Amazon S3 Developer Guide. + RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"` + // Container for the TagSet and Tag elements // // Tagging is a required field @@ -30889,6 +31072,12 @@ func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput { return s } +// SetRequestPayer sets the RequestPayer field's value. +func (s *PutObjectTaggingInput) SetRequestPayer(v string) *PutObjectTaggingInput { + s.RequestPayer = &v + return s +} + // SetTagging sets the Tagging field's value. func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput { s.Tagging = v @@ -30960,7 +31149,7 @@ type PutPublicAccessBlockInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -31158,7 +31347,7 @@ type QueueConfigurationDeprecated struct { // Deprecated: Event has been deprecated Event *string `deprecated:"true" type:"string" enum:"Event"` - // A collection of bucket events for which to send notifications + // A collection of bucket events for which to send notifications. Events []*string `locationName:"Event" type:"list" flattened:"true"` // An optional unique identifier for configurations in a notification configuration. @@ -31275,11 +31464,19 @@ type Redirect struct { // and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required // if one of the siblings is present. Can be present only if ReplaceKeyWith // is not provided. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). ReplaceKeyPrefixWith *string `type:"string"` // The specific object key to use in the redirect request. For example, redirect // request to error.html. Not required if one of the siblings is present. Can // be present only if ReplaceKeyPrefixWith is not provided. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). ReplaceKeyWith *string `type:"string"` } @@ -31529,6 +31726,10 @@ type ReplicationRule struct { // the rule applies. The maximum prefix length is 1,024 characters. To include // all objects in a bucket, specify an empty string. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Deprecated: Prefix has been deprecated Prefix *string `deprecated:"true" type:"string"` @@ -31665,7 +31866,7 @@ func (s *ReplicationRule) SetStatus(v string) *ReplicationRule { // an And tag. // // * If you specify a filter based on multiple tags, wrap the Tag elements -// in an And tag +// in an And tag. type ReplicationRuleAndOperator struct { _ struct{} `type:"structure"` @@ -31737,6 +31938,10 @@ type ReplicationRuleFilter struct { // An object key name prefix that identifies the subset of objects to which // the rule applies. + // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). Prefix *string `type:"string"` // A container for specifying a tag key and value. @@ -31946,30 +32151,30 @@ type RestoreObjectInput struct { // The bucket name containing the object to restore. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` - // Object key for which the operation was initiated. + // Object key for which the action was initiated. // // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` @@ -32240,7 +32445,7 @@ func (s *RestoreRequest) SetType(v string) *RestoreRequest { // Specifies the redirect behavior and when a redirect is applied. For more // information about routing rules, see Configuring advanced conditional redirects // (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. type RoutingRule struct { _ struct{} `type:"structure"` @@ -32296,7 +32501,7 @@ func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule { // Specifies lifecycle rules for an Amazon S3 bucket. For more information, // see Put Bucket Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html) // in the Amazon Simple Storage Service API Reference. For examples, see Put -// Bucket Lifecycle Configuration Examples (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples) +// Bucket Lifecycle Configuration Examples (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples). type Rule struct { _ struct{} `type:"structure"` @@ -32332,6 +32537,10 @@ type Rule struct { // Object key prefix that identifies one or more objects to which this rule // applies. // + // Replacement must be made for object keys containing special characters (such + // as carriage returns) when using XML requests. For more information, see XML + // related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints). + // // Prefix is a required field Prefix *string `type:"string" required:"true"` @@ -32344,7 +32553,7 @@ type Rule struct { // Specifies when an object transitions to a specified storage class. For more // information about Amazon S3 lifecycle configuration rules, see Transitioning // Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html) - // in the Amazon Simple Storage Service Developer Guide. + // in the Amazon S3 User Guide. Transition *Transition `type:"structure"` } @@ -32703,7 +32912,7 @@ type SelectObjectContentInput struct { // Bucket is a required field Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -33168,7 +33377,7 @@ type ServerSideEncryptionRule struct { // S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled. // // For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) - // in the Amazon Simple Storage Service Developer Guide. + // in the Amazon S3 User Guide. BucketKeyEnabled *bool `type:"boolean"` } @@ -33735,7 +33944,7 @@ type TopicConfiguration struct { // The Amazon S3 bucket event about which to send notifications. For more information, // see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) - // in the Amazon Simple Storage Service Developer Guide. + // in the Amazon S3 User Guide. // // Events is a required field Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"` @@ -33868,7 +34077,7 @@ func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDep // Specifies when an object transitions to a specified storage class. For more // information about Amazon S3 lifecycle configuration rules, see Transitioning // Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html) -// in the Amazon Simple Storage Service Developer Guide. +// in the Amazon S3 User Guide. type Transition struct { _ struct{} `type:"structure"` @@ -33917,19 +34126,19 @@ type UploadPartCopyInput struct { // The bucket name. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -33937,7 +34146,7 @@ type UploadPartCopyInput struct { // Specifies the source object for the copy operation. You specify the value // in one of two formats, depending on whether you want to access the source - // object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points.html): + // object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html): // // * For objects not accessed through an access point, specify the name of // the source bucket and key of the source object, separated by a slash (/). @@ -34001,12 +34210,12 @@ type UploadPartCopyInput struct { // encryption key was transmitted without error. CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"` - // The account id of the expected destination bucket owner. If the destination + // The account ID of the expected destination bucket owner. If the destination // bucket is owned by a different account, the request will fail with an HTTP // 403 (Access Denied) error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` - // The account id of the expected source bucket owner. If the source bucket + // The account ID of the expected source bucket owner. If the source bucket // is owned by a different account, the request will fail with an HTTP 403 (Access // Denied) error. ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"` @@ -34359,19 +34568,19 @@ type UploadPartInput struct { // The name of the bucket to which the multipart upload was initiated. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -34386,7 +34595,7 @@ type UploadPartInput struct { // if object lock parameters are specified. ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -34793,6 +35002,451 @@ func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfigu return s } +type WriteGetObjectResponseInput struct { + _ struct{} `locationName:"WriteGetObjectResponseRequest" type:"structure" payload:"Body"` + + // Indicates that a range of bytes was specified. + AcceptRanges *string `location:"header" locationName:"x-amz-fwd-header-accept-ranges" type:"string"` + + // The object data. + // + // To use an non-seekable io.Reader for this request wrap the io.Reader with + // "aws.ReadSeekCloser". The SDK will not retry request errors for non-seekable + // readers. This will allow the SDK to send the reader's payload as chunked + // transfer encoding. + Body io.ReadSeeker `type:"blob"` + + // Indicates whether the object stored in Amazon S3 uses an S3 bucket key for + // server-side encryption with AWS KMS (SSE-KMS). + BucketKeyEnabled *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"` + + // Specifies caching behavior along the request/reply chain. + CacheControl *string `location:"header" locationName:"x-amz-fwd-header-Cache-Control" type:"string"` + + // Specifies presentational information for the object. + ContentDisposition *string `location:"header" locationName:"x-amz-fwd-header-Content-Disposition" type:"string"` + + // Specifies what content encodings have been applied to the object and thus + // what decoding mechanisms must be applied to obtain the media-type referenced + // by the Content-Type header field. + ContentEncoding *string `location:"header" locationName:"x-amz-fwd-header-Content-Encoding" type:"string"` + + // The language the content is in. + ContentLanguage *string `location:"header" locationName:"x-amz-fwd-header-Content-Language" type:"string"` + + // The size of the content body in bytes. + ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"` + + // The portion of the object returned in the response. + ContentRange *string `location:"header" locationName:"x-amz-fwd-header-Content-Range" type:"string"` + + // A standard MIME type describing the format of the object data. + ContentType *string `location:"header" locationName:"x-amz-fwd-header-Content-Type" type:"string"` + + // Specifies whether an object stored in Amazon S3 is (true) or is not (false) + // a delete marker. + DeleteMarker *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-delete-marker" type:"boolean"` + + // An opaque identifier assigned by a web server to a specific version of a + // resource found at a URL. + ETag *string `location:"header" locationName:"x-amz-fwd-header-ETag" type:"string"` + + // A string that uniquely identifies an error condition. Returned in the + // tag of the error XML response for a corresponding GetObject call. Cannot + // be used with a successful StatusCode header or when the transformed object + // is provided in the body. + ErrorCode *string `location:"header" locationName:"x-amz-fwd-error-code" type:"string"` + + // Contains a generic description of the error condition. Returned in the + // tag of the error XML response for a corresponding GetObject call. Cannot + // be used with a successful StatusCode header or when the transformed object + // is provided in body. + ErrorMessage *string `location:"header" locationName:"x-amz-fwd-error-message" type:"string"` + + // If object stored in Amazon S3 expiration is configured (see PUT Bucket lifecycle) + // it includes expiry-date and rule-id key-value pairs providing object expiration + // information. The value of the rule-id is URL encoded. + Expiration *string `location:"header" locationName:"x-amz-fwd-header-x-amz-expiration" type:"string"` + + // The date and time at which the object is no longer cacheable. + Expires *time.Time `location:"header" locationName:"x-amz-fwd-header-Expires" type:"timestamp"` + + // The date and time that the object was last modified. + LastModified *time.Time `location:"header" locationName:"x-amz-fwd-header-Last-Modified" type:"timestamp"` + + // A map of metadata to store with the object in S3. + Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"` + + // Set to the number of metadata entries not returned in x-amz-meta headers. + // This can happen if you create metadata using an API like SOAP that supports + // more flexible metadata than the REST API. For example, using SOAP, you can + // create metadata whose values are not legal HTTP headers. + MissingMeta *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-missing-meta" type:"integer"` + + // Indicates whether an object stored in Amazon S3 has an active legal hold. + ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"` + + // Indicates whether an object stored in Amazon S3 has Object Lock enabled. + // For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html). + ObjectLockMode *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"` + + // The date and time when Object Lock is configured to expire. + ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"` + + // The count of parts this object has. + PartsCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-mp-parts-count" type:"integer"` + + // Indicates if request involves bucket that is either a source or destination + // in a Replication rule. For more information about S3 Replication, see Replication + // (https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html). + ReplicationStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-replication-status" type:"string" enum:"ReplicationStatus"` + + // If present, indicates that the requester was successfully charged for the + // request. + RequestCharged *string `location:"header" locationName:"x-amz-fwd-header-x-amz-request-charged" type:"string" enum:"RequestCharged"` + + // Route prefix to the HTTP URL generated. + // + // RequestRoute is a required field + RequestRoute *string `location:"header" locationName:"x-amz-request-route" type:"string" required:"true"` + + // A single use encrypted token that maps WriteGetObjectResponse to the end + // user GetObject request. + // + // RequestToken is a required field + RequestToken *string `location:"header" locationName:"x-amz-request-token" type:"string" required:"true"` + + // Provides information about object restoration operation and expiration time + // of the restored object copy. + Restore *string `location:"header" locationName:"x-amz-fwd-header-x-amz-restore" type:"string"` + + // Encryption algorithm used if server-side encryption with a customer-provided + // encryption key was specified for object stored in Amazon S3. + SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm" type:"string"` + + // 128-bit MD5 digest of customer-provided encryption key used in Amazon S3 + // to encrypt data stored in S3. For more information, see Protecting data using + // server-side encryption with customer-provided encryption keys (SSE-C) (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html). + SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5" type:"string"` + + // If present, specifies the ID of the AWS Key Management Service (AWS KMS) + // symmetric customer managed customer master key (CMK) that was used for stored + // in Amazon S3 object. + SSEKMSKeyId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"` + + // The server-side encryption algorithm used when storing requested object in + // Amazon S3 (for example, AES256, aws:kms). + ServerSideEncryption *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"` + + // The integer status code for an HTTP response of a corresponding GetObject + // request. + // + // Status Codes + // + // * 200 - OK + // + // * 206 - Partial Content + // + // * 304 - Not Modified + // + // * 400 - Bad Request + // + // * 401 - Unauthorized + // + // * 403 - Forbidden + // + // * 404 - Not Found + // + // * 405 - Method Not Allowed + // + // * 409 - Conflict + // + // * 411 - Length Required + // + // * 412 - Precondition Failed + // + // * 416 - Range Not Satisfiable + // + // * 500 - Internal Server Error + // + // * 503 - Service Unavailable + StatusCode *int64 `location:"header" locationName:"x-amz-fwd-status" type:"integer"` + + // The class of storage used to store object in Amazon S3. + StorageClass *string `location:"header" locationName:"x-amz-fwd-header-x-amz-storage-class" type:"string" enum:"StorageClass"` + + // The number of tags, if any, on the object. + TagCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-tagging-count" type:"integer"` + + // An ID used to reference a specific version of the object. + VersionId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-version-id" type:"string"` +} + +// String returns the string representation +func (s WriteGetObjectResponseInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s WriteGetObjectResponseInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *WriteGetObjectResponseInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "WriteGetObjectResponseInput"} + if s.RequestRoute == nil { + invalidParams.Add(request.NewErrParamRequired("RequestRoute")) + } + if s.RequestRoute != nil && len(*s.RequestRoute) < 1 { + invalidParams.Add(request.NewErrParamMinLen("RequestRoute", 1)) + } + if s.RequestToken == nil { + invalidParams.Add(request.NewErrParamRequired("RequestToken")) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAcceptRanges sets the AcceptRanges field's value. +func (s *WriteGetObjectResponseInput) SetAcceptRanges(v string) *WriteGetObjectResponseInput { + s.AcceptRanges = &v + return s +} + +// SetBody sets the Body field's value. +func (s *WriteGetObjectResponseInput) SetBody(v io.ReadSeeker) *WriteGetObjectResponseInput { + s.Body = v + return s +} + +// SetBucketKeyEnabled sets the BucketKeyEnabled field's value. +func (s *WriteGetObjectResponseInput) SetBucketKeyEnabled(v bool) *WriteGetObjectResponseInput { + s.BucketKeyEnabled = &v + return s +} + +// SetCacheControl sets the CacheControl field's value. +func (s *WriteGetObjectResponseInput) SetCacheControl(v string) *WriteGetObjectResponseInput { + s.CacheControl = &v + return s +} + +// SetContentDisposition sets the ContentDisposition field's value. +func (s *WriteGetObjectResponseInput) SetContentDisposition(v string) *WriteGetObjectResponseInput { + s.ContentDisposition = &v + return s +} + +// SetContentEncoding sets the ContentEncoding field's value. +func (s *WriteGetObjectResponseInput) SetContentEncoding(v string) *WriteGetObjectResponseInput { + s.ContentEncoding = &v + return s +} + +// SetContentLanguage sets the ContentLanguage field's value. +func (s *WriteGetObjectResponseInput) SetContentLanguage(v string) *WriteGetObjectResponseInput { + s.ContentLanguage = &v + return s +} + +// SetContentLength sets the ContentLength field's value. +func (s *WriteGetObjectResponseInput) SetContentLength(v int64) *WriteGetObjectResponseInput { + s.ContentLength = &v + return s +} + +// SetContentRange sets the ContentRange field's value. +func (s *WriteGetObjectResponseInput) SetContentRange(v string) *WriteGetObjectResponseInput { + s.ContentRange = &v + return s +} + +// SetContentType sets the ContentType field's value. +func (s *WriteGetObjectResponseInput) SetContentType(v string) *WriteGetObjectResponseInput { + s.ContentType = &v + return s +} + +// SetDeleteMarker sets the DeleteMarker field's value. +func (s *WriteGetObjectResponseInput) SetDeleteMarker(v bool) *WriteGetObjectResponseInput { + s.DeleteMarker = &v + return s +} + +// SetETag sets the ETag field's value. +func (s *WriteGetObjectResponseInput) SetETag(v string) *WriteGetObjectResponseInput { + s.ETag = &v + return s +} + +// SetErrorCode sets the ErrorCode field's value. +func (s *WriteGetObjectResponseInput) SetErrorCode(v string) *WriteGetObjectResponseInput { + s.ErrorCode = &v + return s +} + +// SetErrorMessage sets the ErrorMessage field's value. +func (s *WriteGetObjectResponseInput) SetErrorMessage(v string) *WriteGetObjectResponseInput { + s.ErrorMessage = &v + return s +} + +// SetExpiration sets the Expiration field's value. +func (s *WriteGetObjectResponseInput) SetExpiration(v string) *WriteGetObjectResponseInput { + s.Expiration = &v + return s +} + +// SetExpires sets the Expires field's value. +func (s *WriteGetObjectResponseInput) SetExpires(v time.Time) *WriteGetObjectResponseInput { + s.Expires = &v + return s +} + +// SetLastModified sets the LastModified field's value. +func (s *WriteGetObjectResponseInput) SetLastModified(v time.Time) *WriteGetObjectResponseInput { + s.LastModified = &v + return s +} + +// SetMetadata sets the Metadata field's value. +func (s *WriteGetObjectResponseInput) SetMetadata(v map[string]*string) *WriteGetObjectResponseInput { + s.Metadata = v + return s +} + +// SetMissingMeta sets the MissingMeta field's value. +func (s *WriteGetObjectResponseInput) SetMissingMeta(v int64) *WriteGetObjectResponseInput { + s.MissingMeta = &v + return s +} + +// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value. +func (s *WriteGetObjectResponseInput) SetObjectLockLegalHoldStatus(v string) *WriteGetObjectResponseInput { + s.ObjectLockLegalHoldStatus = &v + return s +} + +// SetObjectLockMode sets the ObjectLockMode field's value. +func (s *WriteGetObjectResponseInput) SetObjectLockMode(v string) *WriteGetObjectResponseInput { + s.ObjectLockMode = &v + return s +} + +// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value. +func (s *WriteGetObjectResponseInput) SetObjectLockRetainUntilDate(v time.Time) *WriteGetObjectResponseInput { + s.ObjectLockRetainUntilDate = &v + return s +} + +// SetPartsCount sets the PartsCount field's value. +func (s *WriteGetObjectResponseInput) SetPartsCount(v int64) *WriteGetObjectResponseInput { + s.PartsCount = &v + return s +} + +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *WriteGetObjectResponseInput) SetReplicationStatus(v string) *WriteGetObjectResponseInput { + s.ReplicationStatus = &v + return s +} + +// SetRequestCharged sets the RequestCharged field's value. +func (s *WriteGetObjectResponseInput) SetRequestCharged(v string) *WriteGetObjectResponseInput { + s.RequestCharged = &v + return s +} + +// SetRequestRoute sets the RequestRoute field's value. +func (s *WriteGetObjectResponseInput) SetRequestRoute(v string) *WriteGetObjectResponseInput { + s.RequestRoute = &v + return s +} + +// SetRequestToken sets the RequestToken field's value. +func (s *WriteGetObjectResponseInput) SetRequestToken(v string) *WriteGetObjectResponseInput { + s.RequestToken = &v + return s +} + +// SetRestore sets the Restore field's value. +func (s *WriteGetObjectResponseInput) SetRestore(v string) *WriteGetObjectResponseInput { + s.Restore = &v + return s +} + +// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value. +func (s *WriteGetObjectResponseInput) SetSSECustomerAlgorithm(v string) *WriteGetObjectResponseInput { + s.SSECustomerAlgorithm = &v + return s +} + +// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value. +func (s *WriteGetObjectResponseInput) SetSSECustomerKeyMD5(v string) *WriteGetObjectResponseInput { + s.SSECustomerKeyMD5 = &v + return s +} + +// SetSSEKMSKeyId sets the SSEKMSKeyId field's value. +func (s *WriteGetObjectResponseInput) SetSSEKMSKeyId(v string) *WriteGetObjectResponseInput { + s.SSEKMSKeyId = &v + return s +} + +// SetServerSideEncryption sets the ServerSideEncryption field's value. +func (s *WriteGetObjectResponseInput) SetServerSideEncryption(v string) *WriteGetObjectResponseInput { + s.ServerSideEncryption = &v + return s +} + +// SetStatusCode sets the StatusCode field's value. +func (s *WriteGetObjectResponseInput) SetStatusCode(v int64) *WriteGetObjectResponseInput { + s.StatusCode = &v + return s +} + +// SetStorageClass sets the StorageClass field's value. +func (s *WriteGetObjectResponseInput) SetStorageClass(v string) *WriteGetObjectResponseInput { + s.StorageClass = &v + return s +} + +// SetTagCount sets the TagCount field's value. +func (s *WriteGetObjectResponseInput) SetTagCount(v int64) *WriteGetObjectResponseInput { + s.TagCount = &v + return s +} + +// SetVersionId sets the VersionId field's value. +func (s *WriteGetObjectResponseInput) SetVersionId(v string) *WriteGetObjectResponseInput { + s.VersionId = &v + return s +} + +func (s *WriteGetObjectResponseInput) hostLabels() map[string]string { + return map[string]string{ + "RequestRoute": aws.StringValue(s.RequestRoute), + } +} + +type WriteGetObjectResponseOutput struct { + _ struct{} `type:"structure"` +} + +// String returns the string representation +func (s WriteGetObjectResponseOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s WriteGetObjectResponseOutput) GoString() string { + return s.String() +} + const ( // AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value AnalyticsS3ExportFileFormatCsv = "CSV" diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go b/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go index f1959b03a..ce87ab320 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go @@ -48,6 +48,8 @@ func defaultInitRequestFn(r *request.Request) { // case opGetObject: // r.Handlers.Build.PushBack(askForTxEncodingAppendMD5) // r.Handlers.Unmarshal.PushBack(useMD5ValidationReader) + case opWriteGetObjectResponse: + r.Handlers.Build.PushFront(buildWriteGetObjectResponseEndpoint) } } diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go index 6346b9279..9fc2105fd 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint.go @@ -1,6 +1,8 @@ package s3 import ( + "fmt" + "github.com/aws/aws-sdk-go/aws/awserr" "net/url" "strings" @@ -11,6 +13,13 @@ import ( "github.com/aws/aws-sdk-go/internal/s3shared/arn" ) +const ( + s3Namespace = "s3" + s3AccessPointNamespace = "s3-accesspoint" + s3ObjectsLambdaNamespace = "s3-object-lambda" + s3OutpostsNamespace = "s3-outposts" +) + // Used by shapes with members decorated as endpoint ARN. func parseEndpointARN(v string) (arn.Resource, error) { return arn.ParseResource(v, accessPointResourceParser) @@ -20,10 +29,14 @@ func accessPointResourceParser(a awsarn.ARN) (arn.Resource, error) { resParts := arn.SplitResource(a.Resource) switch resParts[0] { case "accesspoint": - if a.Service != "s3" { - return arn.AccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "service is not s3"} + switch a.Service { + case s3Namespace: + return arn.ParseAccessPointResource(a, resParts[1:]) + case s3ObjectsLambdaNamespace: + return parseS3ObjectLambdaAccessPointResource(a, resParts) + default: + return arn.AccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: fmt.Sprintf("service is not %s or %s", s3Namespace, s3ObjectsLambdaNamespace)} } - return arn.ParseAccessPointResource(a, resParts[1:]) case "outpost": if a.Service != "s3-outposts" { return arn.OutpostAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: "service is not s3-outposts"} @@ -80,6 +93,25 @@ func parseOutpostAccessPointResource(a awsarn.ARN, resParts []string) (arn.Outpo return outpostAccessPointARN, nil } +func parseS3ObjectLambdaAccessPointResource(a awsarn.ARN, resParts []string) (arn.S3ObjectLambdaAccessPointARN, error) { + if a.Service != s3ObjectsLambdaNamespace { + return arn.S3ObjectLambdaAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: fmt.Sprintf("service is not %s", s3ObjectsLambdaNamespace)} + } + + accessPointARN, err := arn.ParseAccessPointResource(a, resParts[1:]) + if err != nil { + return arn.S3ObjectLambdaAccessPointARN{}, err + } + + if len(accessPointARN.Region) == 0 { + return arn.S3ObjectLambdaAccessPointARN{}, arn.InvalidARNError{ARN: a, Reason: fmt.Sprintf("%s region not set", s3ObjectsLambdaNamespace)} + } + + return arn.S3ObjectLambdaAccessPointARN{ + AccessPointARN: accessPointARN, + }, nil +} + func endpointHandler(req *request.Request) { endpoint, ok := req.Params.(endpointARNGetter) if !ok || !endpoint.hasEndpointARN() { @@ -116,6 +148,11 @@ func endpointHandler(req *request.Request) { if err != nil { req.Error = err } + case arn.S3ObjectLambdaAccessPointARN: + err = updateRequestS3ObjectLambdaAccessPointEndpoint(req, tv) + if err != nil { + req.Error = err + } case arn.OutpostAccessPointARN: // outposts does not support FIPS regions if resReq.ResourceConfiguredForFIPS() { @@ -162,6 +199,31 @@ func updateRequestAccessPointEndpoint(req *request.Request, accessPoint arn.Acce return nil } +func updateRequestS3ObjectLambdaAccessPointEndpoint(req *request.Request, accessPoint arn.S3ObjectLambdaAccessPointARN) error { + // DualStack not supported + if aws.BoolValue(req.Config.UseDualStack) { + return s3shared.NewClientConfiguredForDualStackError(accessPoint, + req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil) + } + + // Accelerate not supported + if aws.BoolValue(req.Config.S3UseAccelerate) { + return s3shared.NewClientConfiguredForAccelerateError(accessPoint, + req.ClientInfo.PartitionID, aws.StringValue(req.Config.Region), nil) + } + + // Ignore the disable host prefix for access points + req.Config.DisableEndpointHostPrefix = aws.Bool(false) + + if err := s3ObjectLambdaAccessPointEndpointBuilder(accessPoint).build(req); err != nil { + return err + } + + removeBucketFromPath(req.HTTPRequest.URL) + + return nil +} + func updateRequestOutpostAccessPointEndpoint(req *request.Request, accessPoint arn.OutpostAccessPointARN) error { // Accelerate not supported if aws.BoolValue(req.Config.S3UseAccelerate) { @@ -192,3 +254,37 @@ func removeBucketFromPath(u *url.URL) { u.Path = "/" } } + +func buildWriteGetObjectResponseEndpoint(req *request.Request) { + // DualStack not supported + if aws.BoolValue(req.Config.UseDualStack) { + req.Error = awserr.New("ConfigurationError", "client configured for dualstack but not supported for operation", nil) + return + } + + // Accelerate not supported + if aws.BoolValue(req.Config.S3UseAccelerate) { + req.Error = awserr.New("ConfigurationError", "client configured for accelerate but not supported for operation", nil) + return + } + + signingName := s3ObjectsLambdaNamespace + signingRegion := req.ClientInfo.SigningRegion + + if !hasCustomEndpoint(req) { + endpoint, err := resolveRegionalEndpoint(req, aws.StringValue(req.Config.Region), EndpointsID) + if err != nil { + req.Error = awserr.New(request.ErrCodeSerialization, "failed to resolve endpoint", err) + return + } + signingRegion = endpoint.SigningRegion + + if err = updateRequestEndpoint(req, endpoint.URL); err != nil { + req.Error = err + return + } + updateS3HostPrefixForS3ObjectLambda(req) + } + + redirectSigner(req, signingName, signingRegion) +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go index eb77d981e..71e9c9eff 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/endpoint_builder.go @@ -66,13 +66,9 @@ func (a accessPointEndpointBuilder) build(req *request.Request) error { if err = updateRequestEndpoint(req, endpoint.URL); err != nil { return err } - const serviceEndpointLabel = "s3-accesspoint" // dual stack provided by endpoint resolver - cfgHost := req.HTTPRequest.URL.Host - if strings.HasPrefix(cfgHost, "s3") { - req.HTTPRequest.URL.Host = serviceEndpointLabel + cfgHost[2:] - } + updateS3HostForS3AccessPoint(req) } protocol.HostPrefixBuilder{ @@ -98,6 +94,73 @@ func (a accessPointEndpointBuilder) hostPrefixLabelValues() map[string]string { } } +// s3ObjectLambdaAccessPointEndpointBuilder represents the endpoint builder for an s3 object lambda access point arn +type s3ObjectLambdaAccessPointEndpointBuilder arn.S3ObjectLambdaAccessPointARN + +// build builds the endpoint for corresponding access point arn +// +// For building an endpoint from access point arn, format used is: +// - Access point endpoint format : {accesspointName}-{accountId}.s3-object-lambda.{region}.{dnsSuffix} +// - example : myaccesspoint-012345678901.s3-object-lambda.us-west-2.amazonaws.com +// +// Access Point Endpoint requests are signed using "s3-object-lambda" as signing name. +// +func (a s3ObjectLambdaAccessPointEndpointBuilder) build(req *request.Request) error { + resolveRegion := arn.S3ObjectLambdaAccessPointARN(a).Region + cfgRegion := aws.StringValue(req.Config.Region) + + if s3shared.IsFIPS(cfgRegion) { + if aws.BoolValue(req.Config.S3UseARNRegion) && s3shared.IsCrossRegion(req, resolveRegion) { + // FIPS with cross region is not supported, the SDK must fail + // because there is no well defined method for SDK to construct a + // correct FIPS endpoint. + return s3shared.NewClientConfiguredForCrossRegionFIPSError(arn.S3ObjectLambdaAccessPointARN(a), + req.ClientInfo.PartitionID, cfgRegion, nil) + } + resolveRegion = cfgRegion + } + + endpoint, err := resolveRegionalEndpoint(req, resolveRegion, EndpointsID) + if err != nil { + return s3shared.NewFailedToResolveEndpointError(arn.S3ObjectLambdaAccessPointARN(a), + req.ClientInfo.PartitionID, cfgRegion, err) + } + + endpoint.URL = endpoints.AddScheme(endpoint.URL, aws.BoolValue(req.Config.DisableSSL)) + + endpoint.SigningName = s3ObjectsLambdaNamespace + + if !hasCustomEndpoint(req) { + if err = updateRequestEndpoint(req, endpoint.URL); err != nil { + return err + } + + updateS3HostPrefixForS3ObjectLambda(req) + } + + protocol.HostPrefixBuilder{ + Prefix: accessPointPrefixTemplate, + LabelsFn: a.hostPrefixLabelValues, + }.Build(req) + + // signer redirection + redirectSigner(req, endpoint.SigningName, endpoint.SigningRegion) + + err = protocol.ValidateEndpointHost(req.Operation.Name, req.HTTPRequest.URL.Host) + if err != nil { + return s3shared.NewInvalidARNError(arn.S3ObjectLambdaAccessPointARN(a), err) + } + + return nil +} + +func (a s3ObjectLambdaAccessPointEndpointBuilder) hostPrefixLabelValues() map[string]string { + return map[string]string{ + accessPointPrefixLabel: arn.S3ObjectLambdaAccessPointARN(a).AccessPointName, + accountIDPrefixLabel: arn.S3ObjectLambdaAccessPointARN(a).AccountID, + } +} + // outpostAccessPointEndpointBuilder represents the Endpoint builder for outpost access point arn. type outpostAccessPointEndpointBuilder arn.OutpostAccessPointARN @@ -114,7 +177,7 @@ func (o outpostAccessPointEndpointBuilder) build(req *request.Request) error { resolveService := o.Service endpointsID := resolveService - if resolveService == "s3-outposts" { + if resolveService == s3OutpostsNamespace { endpointsID = "s3" } @@ -130,11 +193,7 @@ func (o outpostAccessPointEndpointBuilder) build(req *request.Request) error { if err = updateRequestEndpoint(req, endpoint.URL); err != nil { return err } - // add url host as s3-outposts - cfgHost := req.HTTPRequest.URL.Host - if strings.HasPrefix(cfgHost, endpointsID) { - req.HTTPRequest.URL.Host = resolveService + cfgHost[len(endpointsID):] - } + updateHostPrefix(req, endpointsID, resolveService) } protocol.HostPrefixBuilder{ @@ -170,7 +229,6 @@ func resolveRegionalEndpoint(r *request.Request, region string, endpointsID stri } func updateRequestEndpoint(r *request.Request, endpoint string) (err error) { - r.HTTPRequest.URL, err = url.Parse(endpoint + r.Operation.HTTPPath) if err != nil { return awserr.New(request.ErrCodeSerialization, @@ -185,3 +243,19 @@ func redirectSigner(req *request.Request, signingName string, signingRegion stri req.ClientInfo.SigningName = signingName req.ClientInfo.SigningRegion = signingRegion } + +func updateS3HostForS3AccessPoint(req *request.Request) { + updateHostPrefix(req, "s3", s3AccessPointNamespace) +} + +func updateS3HostPrefixForS3ObjectLambda(req *request.Request) { + updateHostPrefix(req, "s3", s3ObjectsLambdaNamespace) +} + +func updateHostPrefix(req *request.Request, oldEndpointPrefix, newEndpointPrefix string) { + host := req.HTTPRequest.URL.Host + if strings.HasPrefix(host, oldEndpointPrefix) { + // replace service hostlabel oldEndpointPrefix to newEndpointPrefix + req.HTTPRequest.URL.Host = newEndpointPrefix + host[len(oldEndpointPrefix):] + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go b/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go index f64b55135..6d3e726cf 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/errors.go @@ -48,13 +48,13 @@ const ( // ErrCodeObjectAlreadyInActiveTierError for service response error code // "ObjectAlreadyInActiveTierError". // - // This operation is not allowed against this storage tier. + // This action is not allowed against this storage tier. ErrCodeObjectAlreadyInActiveTierError = "ObjectAlreadyInActiveTierError" // ErrCodeObjectNotInActiveTierError for service response error code // "ObjectNotInActiveTierError". // - // The source object of the COPY operation is not in the active tier and is - // only stored in Amazon S3 Glacier. + // The source object of the COPY action is not in the active tier and is only + // stored in Amazon S3 Glacier. ErrCodeObjectNotInActiveTierError = "ObjectNotInActiveTierError" ) diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go index 7c6221878..1e32fb94d 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go @@ -455,6 +455,10 @@ type S3API interface { UploadPartCopyWithContext(aws.Context, *s3.UploadPartCopyInput, ...request.Option) (*s3.UploadPartCopyOutput, error) UploadPartCopyRequest(*s3.UploadPartCopyInput) (*request.Request, *s3.UploadPartCopyOutput) + WriteGetObjectResponse(*s3.WriteGetObjectResponseInput) (*s3.WriteGetObjectResponseOutput, error) + WriteGetObjectResponseWithContext(aws.Context, *s3.WriteGetObjectResponseInput, ...request.Option) (*s3.WriteGetObjectResponseOutput, error) + WriteGetObjectResponseRequest(*s3.WriteGetObjectResponseInput) (*request.Request, *s3.WriteGetObjectResponseOutput) + WaitUntilBucketExists(*s3.HeadBucketInput) error WaitUntilBucketExistsWithContext(aws.Context, *s3.HeadBucketInput, ...request.WaiterOption) error diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/arn.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/arn.go new file mode 100644 index 000000000..f0a7f9bfc --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/arn.go @@ -0,0 +1,23 @@ +package s3manager + +import ( + "fmt" + "github.com/aws/aws-sdk-go/aws/arn" +) + +func validateSupportedARNType(bucket string) error { + if !arn.IsARN(bucket) { + return nil + } + + parsedARN, err := arn.Parse(bucket) + if err != nil { + return err + } + + if parsedARN.Service == "s3-object-lambda" { + return fmt.Errorf("manager does not support s3-object-lambda service ARNs") + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go index 4b54b7c03..bbf3595a4 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/download.go @@ -192,6 +192,10 @@ func (d Downloader) Download(w io.WriterAt, input *s3.GetObjectInput, options .. // to perform a single GetObjectInput request for that object's range. This will // caused the part size, and concurrency configurations to be ignored. func (d Downloader) DownloadWithContext(ctx aws.Context, w io.WriterAt, input *s3.GetObjectInput, options ...func(*Downloader)) (n int64, err error) { + if err := validateSupportedARNType(aws.StringValue(input.Bucket)); err != nil { + return 0, err + } + impl := downloader{w: w, in: input, cfg: d, ctx: ctx} for _, option := range options { diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go index 7dba8347b..9fa98fa2f 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go @@ -391,6 +391,10 @@ func (u *uploader) upload() (*UploadOutput, error) { // init will initialize all default options. func (u *uploader) init() error { + if err := validateSupportedARNType(aws.StringValue(u.in.Bucket)); err != nil { + return err + } + if u.cfg.Concurrency == 0 { u.cfg.Concurrency = DefaultUploadConcurrency } diff --git a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go index 6cac26fa8..31c0ee317 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go +++ b/vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go @@ -23,21 +23,21 @@ type UploadInput struct { // The readable body payload to send to S3. Body io.Reader - // The bucket name to which the PUT operation was initiated. + // The bucket name to which the PUT action was initiated. // - // When using this API with an access point, you must direct requests to the - // access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. - // When using this operation with an access point through the AWS SDKs, you - // provide the access point ARN in place of the bucket name. For more information - // about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) + // When using this action with an access point, you must direct requests to + // the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + // When using this action with an access point through the AWS SDKs, you provide + // the access point ARN in place of the bucket name. For more information about + // access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html) // in the Amazon Simple Storage Service Developer Guide. // - // When using this API with Amazon S3 on Outposts, you must direct requests + // When using this action with Amazon S3 on Outposts, you must direct requests // to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form // AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When - // using this operation using S3 on Outposts through the AWS SDKs, you provide + // using this action using S3 on Outposts through the AWS SDKs, you provide // the Outposts bucket ARN in place of the bucket name. For more information - // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html) + // about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html) // in the Amazon Simple Storage Service Developer Guide. // // Bucket is a required field @@ -48,8 +48,8 @@ type UploadInput struct { // to true causes Amazon S3 to use an S3 Bucket Key for object encryption with // SSE-KMS. // - // Specifying this header with a PUT operation doesn’t affect bucket-level - // settings for S3 Bucket Key. + // Specifying this header with a PUT action doesn’t affect bucket-level settings + // for S3 Bucket Key. BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"` // Can be used to specify caching behavior along the request/reply chain. For @@ -82,7 +82,7 @@ type UploadInput struct { // see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17). ContentType *string `location:"header" locationName:"Content-Type" type:"string"` - // The account id of the expected bucket owner. If the bucket is owned by a + // The account ID of the expected bucket owner. If the bucket is owned by a // different account, the request will fail with an HTTP 403 (Access Denied) // error. ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"` @@ -111,7 +111,7 @@ type UploadInput struct { // This action is not supported by Amazon S3 on Outposts. GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"` - // Object key for which the PUT operation was initiated. + // Object key for which the PUT action was initiated. // // Key is a required field Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"` diff --git a/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/api.go b/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/api.go index b89f513d5..2f19442a2 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/api.go @@ -309,7 +309,7 @@ func (c *SecretsManager) CreateSecretRequest(input *CreateSecretInput) (req *req // We can't find the resource that you asked for. // // * MalformedPolicyDocumentException -// The policy document that you provided isn't valid. +// You provided a resource-based policy with syntax errors. // // * InternalServiceError // An error occurred on the server side. @@ -395,7 +395,7 @@ func (c *SecretsManager) DeleteResourcePolicyRequest(input *DeleteResourcePolicy // // * To attach a resource policy to a secret, use PutResourcePolicy. // -// * To retrieve the current resource-based policy that's attached to a secret, +// * To retrieve the current resource-based policy attached to a secret, // use GetResourcePolicy. // // * To list all of the currently available secrets, use ListSecrets. @@ -427,6 +427,9 @@ func (c *SecretsManager) DeleteResourcePolicyRequest(input *DeleteResourcePolicy // Lambda function ARN configured and you didn't include such an ARN as a // parameter in this call. // +// * InvalidParameterException +// You provided an invalid value for a parameter. +// // See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/DeleteResourcePolicy func (c *SecretsManager) DeleteResourcePolicy(input *DeleteResourcePolicyInput) (*DeleteResourcePolicyOutput, error) { req, out := c.DeleteResourcePolicyRequest(input) @@ -493,7 +496,7 @@ func (c *SecretsManager) DeleteSecretRequest(input *DeleteSecretInput) (req *req // DeleteSecret API operation for AWS Secrets Manager. // -// Deletes an entire secret and all of its versions. You can optionally include +// Deletes an entire secret and all of the versions. You can optionally include // a recovery window during which you can restore the secret. If you don't specify // a recovery window value, the operation defaults to 30 days. Secrets Manager // attaches a DeletionDate stamp to the secret that specifies the end of the @@ -503,15 +506,15 @@ func (c *SecretsManager) DeleteSecretRequest(input *DeleteSecretInput) (req *req // At any time before recovery window ends, you can use RestoreSecret to remove // the DeletionDate and cancel the deletion of the secret. // -// You cannot access the encrypted secret information in any secret that is -// scheduled for deletion. If you need to access that information, you must -// cancel the deletion with RestoreSecret and then retrieve the information. +// You cannot access the encrypted secret information in any secret scheduled +// for deletion. If you need to access that information, you must cancel the +// deletion with RestoreSecret and then retrieve the information. // // * There is no explicit operation to delete a version of a secret. Instead, // remove all staging labels from the VersionStage field of a version. That // marks the version as deprecated and allows Secrets Manager to delete it -// as needed. Versions that do not have any staging labels do not show up -// in ListSecretVersionIds unless you specify IncludeDeprecated. +// as needed. Versions without any staging labels do not show up in ListSecretVersionIds +// unless you specify IncludeDeprecated. // // * The permanent secret deletion at the end of the waiting period is performed // as a background task with low priority. There is no guarantee of a specific @@ -1408,8 +1411,7 @@ func (c *SecretsManager) PutResourcePolicyRequest(input *PutResourcePolicyInput) // // * To retrieve the resource policy attached to a secret, use GetResourcePolicy. // -// * To delete the resource-based policy that's attached to a secret, use -// DeleteResourcePolicy. +// * To delete the resource-based policy attached to a secret, use DeleteResourcePolicy. // // * To list all of the currently available secrets, use ListSecrets. // @@ -1422,7 +1424,7 @@ func (c *SecretsManager) PutResourcePolicyRequest(input *PutResourcePolicyInput) // // Returned Error Types: // * MalformedPolicyDocumentException -// The policy document that you provided isn't valid. +// You provided a resource-based policy with syntax errors. // // * ResourceNotFoundException // We can't find the resource that you asked for. @@ -1447,7 +1449,8 @@ func (c *SecretsManager) PutResourcePolicyRequest(input *PutResourcePolicyInput) // parameter in this call. // // * PublicPolicyException -// The resource policy did not prevent broad access to the secret. +// The BlockPublicPolicy parameter is set to true and the resource policy did +// not prevent broad access to the secret. // // See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/PutResourcePolicy func (c *SecretsManager) PutResourcePolicy(input *PutResourcePolicyInput) (*PutResourcePolicyOutput, error) { @@ -1528,14 +1531,12 @@ func (c *SecretsManager) PutSecretValueRequest(input *PutSecretValueInput) (req // Manager automatically attaches the staging label AWSCURRENT to the new // version. // -// * If another version of this secret already exists, then this operation -// does not automatically move any staging labels other than those that you -// explicitly specify in the VersionStages parameter. +// * If you do not specify a value for VersionStages then Secrets Manager +// automatically moves the staging label AWSCURRENT to this new version. // // * If this operation moves the staging label AWSCURRENT from another version -// to this version (because you included it in the StagingLabels parameter) -// then Secrets Manager also automatically moves the staging label AWSPREVIOUS -// to the version that AWSCURRENT was removed from. +// to this version, then Secrets Manager also automatically moves the staging +// label AWSPREVIOUS to the version that AWSCURRENT was removed from. // // * This operation is idempotent. If a version with a VersionId with the // same value as the ClientRequestToken parameter already exists and you @@ -1650,6 +1651,203 @@ func (c *SecretsManager) PutSecretValueWithContext(ctx aws.Context, input *PutSe return out, req.Send() } +const opRemoveRegionsFromReplication = "RemoveRegionsFromReplication" + +// RemoveRegionsFromReplicationRequest generates a "aws/request.Request" representing the +// client's request for the RemoveRegionsFromReplication operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See RemoveRegionsFromReplication for more information on using the RemoveRegionsFromReplication +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the RemoveRegionsFromReplicationRequest method. +// req, resp := client.RemoveRegionsFromReplicationRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/RemoveRegionsFromReplication +func (c *SecretsManager) RemoveRegionsFromReplicationRequest(input *RemoveRegionsFromReplicationInput) (req *request.Request, output *RemoveRegionsFromReplicationOutput) { + op := &request.Operation{ + Name: opRemoveRegionsFromReplication, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &RemoveRegionsFromReplicationInput{} + } + + output = &RemoveRegionsFromReplicationOutput{} + req = c.newRequest(op, input, output) + return +} + +// RemoveRegionsFromReplication API operation for AWS Secrets Manager. +// +// Remove regions from replication. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Secrets Manager's +// API operation RemoveRegionsFromReplication for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// We can't find the resource that you asked for. +// +// * InvalidRequestException +// You provided a parameter value that is not valid for the current state of +// the resource. +// +// Possible causes: +// +// * You tried to perform the operation on a secret that's currently marked +// deleted. +// +// * You tried to enable rotation on a secret that doesn't already have a +// Lambda function ARN configured and you didn't include such an ARN as a +// parameter in this call. +// +// * InvalidParameterException +// You provided an invalid value for a parameter. +// +// * InternalServiceError +// An error occurred on the server side. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/RemoveRegionsFromReplication +func (c *SecretsManager) RemoveRegionsFromReplication(input *RemoveRegionsFromReplicationInput) (*RemoveRegionsFromReplicationOutput, error) { + req, out := c.RemoveRegionsFromReplicationRequest(input) + return out, req.Send() +} + +// RemoveRegionsFromReplicationWithContext is the same as RemoveRegionsFromReplication with the addition of +// the ability to pass a context and additional request options. +// +// See RemoveRegionsFromReplication for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SecretsManager) RemoveRegionsFromReplicationWithContext(ctx aws.Context, input *RemoveRegionsFromReplicationInput, opts ...request.Option) (*RemoveRegionsFromReplicationOutput, error) { + req, out := c.RemoveRegionsFromReplicationRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + +const opReplicateSecretToRegions = "ReplicateSecretToRegions" + +// ReplicateSecretToRegionsRequest generates a "aws/request.Request" representing the +// client's request for the ReplicateSecretToRegions operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ReplicateSecretToRegions for more information on using the ReplicateSecretToRegions +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ReplicateSecretToRegionsRequest method. +// req, resp := client.ReplicateSecretToRegionsRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/ReplicateSecretToRegions +func (c *SecretsManager) ReplicateSecretToRegionsRequest(input *ReplicateSecretToRegionsInput) (req *request.Request, output *ReplicateSecretToRegionsOutput) { + op := &request.Operation{ + Name: opReplicateSecretToRegions, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &ReplicateSecretToRegionsInput{} + } + + output = &ReplicateSecretToRegionsOutput{} + req = c.newRequest(op, input, output) + return +} + +// ReplicateSecretToRegions API operation for AWS Secrets Manager. +// +// Converts an existing secret to a multi-Region secret and begins replication +// the secret to a list of new regions. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Secrets Manager's +// API operation ReplicateSecretToRegions for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// We can't find the resource that you asked for. +// +// * InvalidRequestException +// You provided a parameter value that is not valid for the current state of +// the resource. +// +// Possible causes: +// +// * You tried to perform the operation on a secret that's currently marked +// deleted. +// +// * You tried to enable rotation on a secret that doesn't already have a +// Lambda function ARN configured and you didn't include such an ARN as a +// parameter in this call. +// +// * InvalidParameterException +// You provided an invalid value for a parameter. +// +// * InternalServiceError +// An error occurred on the server side. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/ReplicateSecretToRegions +func (c *SecretsManager) ReplicateSecretToRegions(input *ReplicateSecretToRegionsInput) (*ReplicateSecretToRegionsOutput, error) { + req, out := c.ReplicateSecretToRegionsRequest(input) + return out, req.Send() +} + +// ReplicateSecretToRegionsWithContext is the same as ReplicateSecretToRegions with the addition of +// the ability to pass a context and additional request options. +// +// See ReplicateSecretToRegions for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SecretsManager) ReplicateSecretToRegionsWithContext(ctx aws.Context, input *ReplicateSecretToRegionsInput, opts ...request.Option) (*ReplicateSecretToRegionsOutput, error) { + req, out := c.ReplicateSecretToRegionsRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opRestoreSecret = "RestoreSecret" // RestoreSecretRequest generates a "aws/request.Request" representing the @@ -1911,6 +2109,105 @@ func (c *SecretsManager) RotateSecretWithContext(ctx aws.Context, input *RotateS return out, req.Send() } +const opStopReplicationToReplica = "StopReplicationToReplica" + +// StopReplicationToReplicaRequest generates a "aws/request.Request" representing the +// client's request for the StopReplicationToReplica operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See StopReplicationToReplica for more information on using the StopReplicationToReplica +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the StopReplicationToReplicaRequest method. +// req, resp := client.StopReplicationToReplicaRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/StopReplicationToReplica +func (c *SecretsManager) StopReplicationToReplicaRequest(input *StopReplicationToReplicaInput) (req *request.Request, output *StopReplicationToReplicaOutput) { + op := &request.Operation{ + Name: opStopReplicationToReplica, + HTTPMethod: "POST", + HTTPPath: "/", + } + + if input == nil { + input = &StopReplicationToReplicaInput{} + } + + output = &StopReplicationToReplicaOutput{} + req = c.newRequest(op, input, output) + return +} + +// StopReplicationToReplica API operation for AWS Secrets Manager. +// +// Removes the secret from replication and promotes the secret to a regional +// secret in the replica Region. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS Secrets Manager's +// API operation StopReplicationToReplica for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// We can't find the resource that you asked for. +// +// * InvalidRequestException +// You provided a parameter value that is not valid for the current state of +// the resource. +// +// Possible causes: +// +// * You tried to perform the operation on a secret that's currently marked +// deleted. +// +// * You tried to enable rotation on a secret that doesn't already have a +// Lambda function ARN configured and you didn't include such an ARN as a +// parameter in this call. +// +// * InvalidParameterException +// You provided an invalid value for a parameter. +// +// * InternalServiceError +// An error occurred on the server side. +// +// See also, https://docs.aws.amazon.com/goto/WebAPI/secretsmanager-2017-10-17/StopReplicationToReplica +func (c *SecretsManager) StopReplicationToReplica(input *StopReplicationToReplicaInput) (*StopReplicationToReplicaOutput, error) { + req, out := c.StopReplicationToReplicaRequest(input) + return out, req.Send() +} + +// StopReplicationToReplicaWithContext is the same as StopReplicationToReplica with the addition of +// the ability to pass a context and additional request options. +// +// See StopReplicationToReplica for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *SecretsManager) StopReplicationToReplicaWithContext(ctx aws.Context, input *StopReplicationToReplicaInput, opts ...request.Option) (*StopReplicationToReplicaOutput, error) { + req, out := c.StopReplicationToReplicaRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opTagResource = "TagResource" // TagResourceRequest generates a "aws/request.Request" representing the @@ -2321,7 +2618,7 @@ func (c *SecretsManager) UpdateSecretRequest(input *UpdateSecretInput) (req *req // We can't find the resource that you asked for. // // * MalformedPolicyDocumentException -// The policy document that you provided isn't valid. +// You provided a resource-based policy with syntax errors. // // * InternalServiceError // An error occurred on the server side. @@ -2529,10 +2826,29 @@ func (c *SecretsManager) ValidateResourcePolicyRequest(input *ValidateResourcePo // ValidateResourcePolicy API operation for AWS Secrets Manager. // -// Validates the JSON text of the resource-based policy document attached to -// the specified secret. The JSON request string input and response output displays -// formatted code with white space and line breaks for better readability. Submit -// your input as a single line JSON string. A resource-based policy is optional. +// Validates that the resource policy does not grant a wide range of IAM principals +// access to your secret. The JSON request string input and response output +// displays formatted code with white space and line breaks for better readability. +// Submit your input as a single line JSON string. A resource-based policy is +// optional for secrets. +// +// The API performs three checks when validating the secret: +// +// * Sends a call to Zelkova (https://aws.amazon.com/blogs/security/protect-sensitive-data-in-the-cloud-with-automated-reasoning-zelkova/), +// an automated reasoning engine, to ensure your Resource Policy does not +// allow broad access to your secret. +// +// * Checks for correct syntax in a policy. +// +// * Verifies the policy does not lock out a caller. +// +// Minimum Permissions +// +// You must have the permissions required to access the following APIs: +// +// * secretsmanager:PutResourcePolicy +// +// * secretsmanager:ValidateResourcePolicy // // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about @@ -2543,7 +2859,7 @@ func (c *SecretsManager) ValidateResourcePolicyRequest(input *ValidateResourcePo // // Returned Error Types: // * MalformedPolicyDocumentException -// The policy document that you provided isn't valid. +// You provided a resource-based policy with syntax errors. // // * ResourceNotFoundException // We can't find the resource that you asked for. @@ -2696,6 +3012,10 @@ func (s *CancelRotateSecretOutput) SetVersionId(v string) *CancelRotateSecretOut type CreateSecretInput struct { _ struct{} `type:"structure"` + // (Optional) Add a list of regions to replicate secrets. Secrets Manager replicates + // the KMSKeyID objects to the list of regions specified in the parameter. + AddReplicaRegions []*ReplicaRegionType `min:"1" type:"list"` + // (Optional) If you include SecretString or SecretBinary, then an initial version // is created as part of the secret, and this parameter specifies a unique identifier // for the new version. @@ -2720,8 +3040,8 @@ type CreateSecretInput struct { // request is ignored. // // * If a version with this value already exists and that version's SecretString - // and SecretBinary values are different from those in the request then the - // request fails because you cannot modify an existing version. Instead, + // and SecretBinary values are different from those in the request, then + // the request fails because you cannot modify an existing version. Instead, // use PutSecretValue to create a new version. // // This value becomes the VersionId of the new version. @@ -2730,6 +3050,10 @@ type CreateSecretInput struct { // (Optional) Specifies a user-provided description of the secret. Description *string `type:"string"` + // (Optional) If set, the replication overwrites a secret with the same name + // in the destination region. + ForceOverwriteReplicaSecret *bool `type:"boolean"` + // (Optional) Specifies the ARN, Key ID, or alias of the AWS KMS customer master // key (CMK) to be used to encrypt the SecretString or SecretBinary values in // the versions stored in this secret. @@ -2860,6 +3184,9 @@ func (s CreateSecretInput) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *CreateSecretInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "CreateSecretInput"} + if s.AddReplicaRegions != nil && len(s.AddReplicaRegions) < 1 { + invalidParams.Add(request.NewErrParamMinLen("AddReplicaRegions", 1)) + } if s.ClientRequestToken != nil && len(*s.ClientRequestToken) < 32 { invalidParams.Add(request.NewErrParamMinLen("ClientRequestToken", 32)) } @@ -2869,6 +3196,16 @@ func (s *CreateSecretInput) Validate() error { if s.Name != nil && len(*s.Name) < 1 { invalidParams.Add(request.NewErrParamMinLen("Name", 1)) } + if s.AddReplicaRegions != nil { + for i, v := range s.AddReplicaRegions { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AddReplicaRegions", i), err.(request.ErrInvalidParams)) + } + } + } if s.Tags != nil { for i, v := range s.Tags { if v == nil { @@ -2886,6 +3223,12 @@ func (s *CreateSecretInput) Validate() error { return nil } +// SetAddReplicaRegions sets the AddReplicaRegions field's value. +func (s *CreateSecretInput) SetAddReplicaRegions(v []*ReplicaRegionType) *CreateSecretInput { + s.AddReplicaRegions = v + return s +} + // SetClientRequestToken sets the ClientRequestToken field's value. func (s *CreateSecretInput) SetClientRequestToken(v string) *CreateSecretInput { s.ClientRequestToken = &v @@ -2898,6 +3241,12 @@ func (s *CreateSecretInput) SetDescription(v string) *CreateSecretInput { return s } +// SetForceOverwriteReplicaSecret sets the ForceOverwriteReplicaSecret field's value. +func (s *CreateSecretInput) SetForceOverwriteReplicaSecret(v bool) *CreateSecretInput { + s.ForceOverwriteReplicaSecret = &v + return s +} + // SetKmsKeyId sets the KmsKeyId field's value. func (s *CreateSecretInput) SetKmsKeyId(v string) *CreateSecretInput { s.KmsKeyId = &v @@ -2944,6 +3293,9 @@ type CreateSecretOutput struct { // The friendly name of the secret that you just created. Name *string `min:"1" type:"string"` + // Describes a list of replication status objects as InProgress, Failed or InSync. + ReplicationStatus []*ReplicationStatusType `type:"list"` + // The unique identifier associated with the version of the secret you just // created. VersionId *string `min:"32" type:"string"` @@ -2971,6 +3323,12 @@ func (s *CreateSecretOutput) SetName(v string) *CreateSecretOutput { return s } +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *CreateSecretOutput) SetReplicationStatus(v []*ReplicationStatusType) *CreateSecretOutput { + s.ReplicationStatus = v + return s +} + // SetVersionId sets the VersionId field's value. func (s *CreateSecretOutput) SetVersionId(v string) *CreateSecretOutput { s.VersionId = &v @@ -3143,18 +3501,22 @@ type DeleteSecretInput struct { // the normal waiting period before the permanent deletion that AWS would normally // impose with the RecoveryWindowInDays parameter. If you delete a secret with // the ForceDeleteWithouRecovery parameter, then you have no opportunity to - // recover the secret. It is permanently lost. + // recover the secret. You lose the secret permanently. + // + // If you use this parameter and include a previously deleted or nonexistent + // secret, the operation does not return the error ResourceNotFoundException + // in order to correctly handle retries. ForceDeleteWithoutRecovery *bool `type:"boolean"` // (Optional) Specifies the number of days that Secrets Manager waits before - // it can delete the secret. You can't use both this parameter and the ForceDeleteWithoutRecovery - // parameter in the same API call. + // Secrets Manager can delete the secret. You can't use both this parameter + // and the ForceDeleteWithoutRecovery parameter in the same API call. // - // This value can range from 7 to 30 days. The default value is 30. + // This value can range from 7 to 30 days with a default value of 30. RecoveryWindowInDays *int64 `type:"long"` - // Specifies the secret that you want to delete. You can specify either the - // Amazon Resource Name (ARN) or the friendly name of the secret. + // Specifies the secret to delete. You can specify either the Amazon Resource + // Name (ARN) or the friendly name of the secret. // // If you specify an ARN, we generally recommend that you specify a complete // ARN. You can specify a partial ARN too—for example, if you don’t include @@ -3232,7 +3594,7 @@ type DeleteSecretOutput struct { // request plus the number of days specified in RecoveryWindowInDays. DeletionDate *time.Time `type:"timestamp"` - // The friendly name of the secret that is now scheduled for deletion. + // The friendly name of the secret currently scheduled for deletion. Name *string `min:"1" type:"string"` } @@ -3330,7 +3692,7 @@ type DescribeSecretOutput struct { // The ARN of the secret. ARN *string `min:"20" type:"string"` - // The date that the secret was created. + // The date you created the secret. CreatedDate *time.Time `type:"timestamp"` // This value exists if the secret is scheduled for deletion. Some time after @@ -3359,8 +3721,10 @@ type DescribeSecretOutput struct { // The last date and time that this secret was modified in any way. LastChangedDate *time.Time `type:"timestamp"` - // The most recent date and time that the Secrets Manager rotation process was - // successfully completed. This value is null if the secret has never rotated. + // The last date and time that the rotation process for this secret was invoked. + // + // The most recent date and time that the Secrets Manager rotation process successfully + // completed. If the secret doesn't rotate, Secrets Manager returns a null value. LastRotatedDate *time.Time `type:"timestamp"` // The user-provided friendly name of the secret. @@ -3369,6 +3733,12 @@ type DescribeSecretOutput struct { // Returns the name of the service that created this secret. OwningService *string `min:"1" type:"string"` + // Specifies the primary region for secret replication. + PrimaryRegion *string `min:"1" type:"string"` + + // Describes a list of replication status objects as InProgress, Failed or InSync.P + ReplicationStatus []*ReplicationStatusType `type:"list"` + // Specifies whether automatic rotation is enabled for this secret. // // To enable rotation, use RotateSecret with AutomaticallyRotateAfterDays set @@ -3380,7 +3750,7 @@ type DescribeSecretOutput struct { // RotateSecret. RotationLambdaARN *string `type:"string"` - // A structure that contains the rotation configuration for this secret. + // A structure with the rotation configuration for this secret. RotationRules *RotationRulesType `type:"structure"` // The list of user-defined tags that are associated with the secret. To add @@ -3466,6 +3836,18 @@ func (s *DescribeSecretOutput) SetOwningService(v string) *DescribeSecretOutput return s } +// SetPrimaryRegion sets the PrimaryRegion field's value. +func (s *DescribeSecretOutput) SetPrimaryRegion(v string) *DescribeSecretOutput { + s.PrimaryRegion = &v + return s +} + +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *DescribeSecretOutput) SetReplicationStatus(v []*ReplicationStatusType) *DescribeSecretOutput { + s.ReplicationStatus = v + return s +} + // SetRotationEnabled sets the RotationEnabled field's value. func (s *DescribeSecretOutput) SetRotationEnabled(v bool) *DescribeSecretOutput { s.RotationEnabled = &v @@ -3555,7 +3937,7 @@ func (s *EncryptionFailure) RequestID() string { return s.RespMetadata.RequestID } -// Allows you to filter your list of secrets. +// Allows you to add filters when you use the search function in Secrets Manager. type Filter struct { _ struct{} `type:"structure"` @@ -3563,6 +3945,9 @@ type Filter struct { Key *string `type:"string" enum:"FilterNameStringType"` // Filters your list of secrets by a specific value. + // + // You can prefix your search value with an exclamation mark (!) in order to + // perform negation filters. Values []*string `min:"1" type:"list"` } @@ -3879,10 +4264,10 @@ type GetSecretValueInput struct { SecretId *string `min:"1" type:"string" required:"true"` // Specifies the unique identifier of the version of the secret that you want - // to retrieve. If you specify this parameter then don't specify VersionStage. - // If you don't specify either a VersionStage or VersionId then the default - // is to perform the operation on the version with the VersionStage value of - // AWSCURRENT. + // to retrieve. If you specify both this parameter and VersionStage, the two + // parameters must refer to the same secret version. If you don't specify either + // a VersionStage or VersionId then the default is to perform the operation + // on the version with the VersionStage value of AWSCURRENT. // // This value is typically a UUID-type (https://wikipedia.org/wiki/Universally_unique_identifier) // value with 32 hexadecimal digits. @@ -3892,9 +4277,10 @@ type GetSecretValueInput struct { // attached to the version. // // Staging labels are used to keep track of different versions during the rotation - // process. If you use this parameter then don't specify VersionId. If you don't - // specify either a VersionStage or VersionId, then the default is to perform - // the operation on the version with the VersionStage value of AWSCURRENT. + // process. If you specify both this parameter and VersionId, the two parameters + // must refer to the same secret version . If you don't specify either a VersionStage + // or VersionId, then the default is to perform the operation on the version + // with the VersionStage value of AWSCURRENT. VersionStage *string `min:"1" type:"string"` } @@ -4634,7 +5020,7 @@ func (s *ListSecretsOutput) SetSecretList(v []*SecretListEntry) *ListSecretsOutp return s } -// The policy document that you provided isn't valid. +// You provided a resource-based policy with syntax errors. type MalformedPolicyDocumentException struct { _ struct{} `type:"structure"` RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` @@ -4746,7 +5132,8 @@ func (s *PreconditionNotMetException) RequestID() string { return s.RespMetadata.RequestID } -// The resource policy did not prevent broad access to the secret. +// The BlockPublicPolicy parameter is set to true and the resource policy did +// not prevent broad access to the secret. type PublicPolicyException struct { _ struct{} `type:"structure"` RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` @@ -4805,22 +5192,22 @@ func (s *PublicPolicyException) RequestID() string { type PutResourcePolicyInput struct { _ struct{} `type:"structure"` - // Makes an optional API call to Zelkova to validate the Resource Policy to - // prevent broad access to your secret. + // (Optional) If you set the parameter, BlockPublicPolicy to true, then you + // block resource-based policies that allow broad access to the secret. BlockPublicPolicy *bool `type:"boolean"` - // A JSON-formatted string that's constructed according to the grammar and syntax - // for an AWS resource-based policy. The policy in the string identifies who - // can access or manage this secret and its versions. For information on how - // to format a JSON parameter for the various command line tool environments, - // see Using JSON for Parameters (http://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json) + // A JSON-formatted string constructed according to the grammar and syntax for + // an AWS resource-based policy. The policy in the string identifies who can + // access or manage this secret and its versions. For information on how to + // format a JSON parameter for the various command line tool environments, see + // Using JSON for Parameters (http://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json) // in the AWS CLI User Guide. // // ResourcePolicy is a required field ResourcePolicy *string `min:"1" type:"string" required:"true"` - // Specifies the secret that you want to attach the resource-based policy to. - // You can specify either the ARN or the friendly name of the secret. + // Specifies the secret that you want to attach the resource-based policy. You + // can specify either the ARN or the friendly name of the secret. // // If you specify an ARN, we generally recommend that you specify a complete // ARN. You can specify a partial ARN too—for example, if you don’t include @@ -4899,8 +5286,7 @@ type PutResourcePolicyOutput struct { // The ARN of the secret retrieved by the resource-based policy. ARN *string `min:"20" type:"string"` - // The friendly name of the secret that the retrieved by the resource-based - // policy. + // The friendly name of the secret retrieved by the resource-based policy. Name *string `min:"1" type:"string"` } @@ -5149,6 +5535,316 @@ func (s *PutSecretValueOutput) SetVersionStages(v []*string) *PutSecretValueOutp return s } +type RemoveRegionsFromReplicationInput struct { + _ struct{} `type:"structure"` + + // Remove replication from specific Regions. + // + // RemoveReplicaRegions is a required field + RemoveReplicaRegions []*string `min:"1" type:"list" required:"true"` + + // Remove a secret by SecretId from replica Regions. + // + // SecretId is a required field + SecretId *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s RemoveRegionsFromReplicationInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RemoveRegionsFromReplicationInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *RemoveRegionsFromReplicationInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "RemoveRegionsFromReplicationInput"} + if s.RemoveReplicaRegions == nil { + invalidParams.Add(request.NewErrParamRequired("RemoveReplicaRegions")) + } + if s.RemoveReplicaRegions != nil && len(s.RemoveReplicaRegions) < 1 { + invalidParams.Add(request.NewErrParamMinLen("RemoveReplicaRegions", 1)) + } + if s.SecretId == nil { + invalidParams.Add(request.NewErrParamRequired("SecretId")) + } + if s.SecretId != nil && len(*s.SecretId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("SecretId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetRemoveReplicaRegions sets the RemoveReplicaRegions field's value. +func (s *RemoveRegionsFromReplicationInput) SetRemoveReplicaRegions(v []*string) *RemoveRegionsFromReplicationInput { + s.RemoveReplicaRegions = v + return s +} + +// SetSecretId sets the SecretId field's value. +func (s *RemoveRegionsFromReplicationInput) SetSecretId(v string) *RemoveRegionsFromReplicationInput { + s.SecretId = &v + return s +} + +type RemoveRegionsFromReplicationOutput struct { + _ struct{} `type:"structure"` + + // The secret ARN removed from replication regions. + ARN *string `min:"20" type:"string"` + + // Describes the remaining replication status after you remove regions from + // the replication list. + ReplicationStatus []*ReplicationStatusType `type:"list"` +} + +// String returns the string representation +func (s RemoveRegionsFromReplicationOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s RemoveRegionsFromReplicationOutput) GoString() string { + return s.String() +} + +// SetARN sets the ARN field's value. +func (s *RemoveRegionsFromReplicationOutput) SetARN(v string) *RemoveRegionsFromReplicationOutput { + s.ARN = &v + return s +} + +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *RemoveRegionsFromReplicationOutput) SetReplicationStatus(v []*ReplicationStatusType) *RemoveRegionsFromReplicationOutput { + s.ReplicationStatus = v + return s +} + +// (Optional) Custom type consisting of a Region (required) and the KmsKeyId +// which can be an ARN, Key ID, or Alias. +type ReplicaRegionType struct { + _ struct{} `type:"structure"` + + // Can be an ARN, Key ID, or Alias. + KmsKeyId *string `type:"string"` + + // Describes a single instance of Region objects. + Region *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s ReplicaRegionType) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicaRegionType) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplicaRegionType) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplicaRegionType"} + if s.Region != nil && len(*s.Region) < 1 { + invalidParams.Add(request.NewErrParamMinLen("Region", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ReplicaRegionType) SetKmsKeyId(v string) *ReplicaRegionType { + s.KmsKeyId = &v + return s +} + +// SetRegion sets the Region field's value. +func (s *ReplicaRegionType) SetRegion(v string) *ReplicaRegionType { + s.Region = &v + return s +} + +type ReplicateSecretToRegionsInput struct { + _ struct{} `type:"structure"` + + // Add Regions to replicate the secret. + // + // AddReplicaRegions is a required field + AddReplicaRegions []*ReplicaRegionType `min:"1" type:"list" required:"true"` + + // (Optional) If set, Secrets Manager replication overwrites a secret with the + // same name in the destination region. + ForceOverwriteReplicaSecret *bool `type:"boolean"` + + // Use the Secret Id to replicate a secret to regions. + // + // SecretId is a required field + SecretId *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s ReplicateSecretToRegionsInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicateSecretToRegionsInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ReplicateSecretToRegionsInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ReplicateSecretToRegionsInput"} + if s.AddReplicaRegions == nil { + invalidParams.Add(request.NewErrParamRequired("AddReplicaRegions")) + } + if s.AddReplicaRegions != nil && len(s.AddReplicaRegions) < 1 { + invalidParams.Add(request.NewErrParamMinLen("AddReplicaRegions", 1)) + } + if s.SecretId == nil { + invalidParams.Add(request.NewErrParamRequired("SecretId")) + } + if s.SecretId != nil && len(*s.SecretId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("SecretId", 1)) + } + if s.AddReplicaRegions != nil { + for i, v := range s.AddReplicaRegions { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AddReplicaRegions", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetAddReplicaRegions sets the AddReplicaRegions field's value. +func (s *ReplicateSecretToRegionsInput) SetAddReplicaRegions(v []*ReplicaRegionType) *ReplicateSecretToRegionsInput { + s.AddReplicaRegions = v + return s +} + +// SetForceOverwriteReplicaSecret sets the ForceOverwriteReplicaSecret field's value. +func (s *ReplicateSecretToRegionsInput) SetForceOverwriteReplicaSecret(v bool) *ReplicateSecretToRegionsInput { + s.ForceOverwriteReplicaSecret = &v + return s +} + +// SetSecretId sets the SecretId field's value. +func (s *ReplicateSecretToRegionsInput) SetSecretId(v string) *ReplicateSecretToRegionsInput { + s.SecretId = &v + return s +} + +type ReplicateSecretToRegionsOutput struct { + _ struct{} `type:"structure"` + + // Replicate a secret based on the ReplicaRegionType> consisting of a Region(required) + // and a KMSKeyId (optional) which can be the ARN, KeyID, or Alias. + ARN *string `min:"20" type:"string"` + + // Describes the secret replication status as PENDING, SUCCESS or FAIL. + ReplicationStatus []*ReplicationStatusType `type:"list"` +} + +// String returns the string representation +func (s ReplicateSecretToRegionsOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicateSecretToRegionsOutput) GoString() string { + return s.String() +} + +// SetARN sets the ARN field's value. +func (s *ReplicateSecretToRegionsOutput) SetARN(v string) *ReplicateSecretToRegionsOutput { + s.ARN = &v + return s +} + +// SetReplicationStatus sets the ReplicationStatus field's value. +func (s *ReplicateSecretToRegionsOutput) SetReplicationStatus(v []*ReplicationStatusType) *ReplicateSecretToRegionsOutput { + s.ReplicationStatus = v + return s +} + +// A replication object consisting of a RegionReplicationStatus object and includes +// a Region, KMSKeyId, status, and status message. +type ReplicationStatusType struct { + _ struct{} `type:"structure"` + + // Can be an ARN, Key ID, or Alias. + KmsKeyId *string `type:"string"` + + // The date that you last accessed the secret in the Region. + LastAccessedDate *time.Time `type:"timestamp"` + + // The Region where replication occurs. + Region *string `min:"1" type:"string"` + + // The status can be InProgress, Failed, or InSync. + Status *string `type:"string" enum:"StatusType"` + + // Status message such as "Secret with this name already exists in this region". + StatusMessage *string `min:"1" type:"string"` +} + +// String returns the string representation +func (s ReplicationStatusType) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ReplicationStatusType) GoString() string { + return s.String() +} + +// SetKmsKeyId sets the KmsKeyId field's value. +func (s *ReplicationStatusType) SetKmsKeyId(v string) *ReplicationStatusType { + s.KmsKeyId = &v + return s +} + +// SetLastAccessedDate sets the LastAccessedDate field's value. +func (s *ReplicationStatusType) SetLastAccessedDate(v time.Time) *ReplicationStatusType { + s.LastAccessedDate = &v + return s +} + +// SetRegion sets the Region field's value. +func (s *ReplicationStatusType) SetRegion(v string) *ReplicationStatusType { + s.Region = &v + return s +} + +// SetStatus sets the Status field's value. +func (s *ReplicationStatusType) SetStatus(v string) *ReplicationStatusType { + s.Status = &v + return s +} + +// SetStatusMessage sets the StatusMessage field's value. +func (s *ReplicationStatusType) SetStatusMessage(v string) *ReplicationStatusType { + s.StatusMessage = &v + return s +} + // A resource with the ID you requested already exists. type ResourceExistsException struct { _ struct{} `type:"structure"` @@ -5590,7 +6286,8 @@ type SecretListEntry struct { // The last date and time that this secret was modified in any way. LastChangedDate *time.Time `type:"timestamp"` - // The last date and time that the rotation process for this secret was invoked. + // The most recent date and time that the Secrets Manager rotation process was + // successfully completed. This value is null if the secret hasn't ever rotated. LastRotatedDate *time.Time `type:"timestamp"` // The friendly name of the secret. You can use forward slashes in the name @@ -5602,6 +6299,9 @@ type SecretListEntry struct { // Returns the name of the service that created the secret. OwningService *string `min:"1" type:"string"` + // The Region where Secrets Manager originated the secret. + PrimaryRegion *string `min:"1" type:"string"` + // Indicates whether automatic, scheduled rotation is enabled for this secret. RotationEnabled *bool `type:"boolean"` @@ -5696,6 +6396,12 @@ func (s *SecretListEntry) SetOwningService(v string) *SecretListEntry { return s } +// SetPrimaryRegion sets the PrimaryRegion field's value. +func (s *SecretListEntry) SetPrimaryRegion(v string) *SecretListEntry { + s.PrimaryRegion = &v + return s +} + // SetRotationEnabled sets the RotationEnabled field's value. func (s *SecretListEntry) SetRotationEnabled(v bool) *SecretListEntry { s.RotationEnabled = &v @@ -5779,6 +6485,70 @@ func (s *SecretVersionsListEntry) SetVersionStages(v []*string) *SecretVersionsL return s } +type StopReplicationToReplicaInput struct { + _ struct{} `type:"structure"` + + // Response to StopReplicationToReplica of a secret, based on the SecretId. + // + // SecretId is a required field + SecretId *string `min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s StopReplicationToReplicaInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StopReplicationToReplicaInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *StopReplicationToReplicaInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "StopReplicationToReplicaInput"} + if s.SecretId == nil { + invalidParams.Add(request.NewErrParamRequired("SecretId")) + } + if s.SecretId != nil && len(*s.SecretId) < 1 { + invalidParams.Add(request.NewErrParamMinLen("SecretId", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetSecretId sets the SecretId field's value. +func (s *StopReplicationToReplicaInput) SetSecretId(v string) *StopReplicationToReplicaInput { + s.SecretId = &v + return s +} + +type StopReplicationToReplicaOutput struct { + _ struct{} `type:"structure"` + + // Response StopReplicationToReplica of a secret, based on the ARN,. + ARN *string `min:"20" type:"string"` +} + +// String returns the string representation +func (s StopReplicationToReplicaOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s StopReplicationToReplicaOutput) GoString() string { + return s.String() +} + +// SetARN sets the ARN field's value. +func (s *StopReplicationToReplicaOutput) SetARN(v string) *StopReplicationToReplicaOutput { + s.ARN = &v + return s +} + // A structure that contains information about a tag. type Tag struct { _ struct{} `type:"structure"` @@ -5858,7 +6628,7 @@ type TagResourceInput struct { // on how to format a JSON parameter for the various command line tool environments, // see Using JSON for Parameters (https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json) // in the AWS CLI User Guide. For the AWS CLI, you can also use the syntax: - // --Tags Key="Key1",Value="Value1",Key="Key2",Value="Value2"[,…] + // --Tags Key="Key1",Value="Value1" Key="Key2",Value="Value2"[,…] // // Tags is a required field Tags []*Tag `type:"list" required:"true"` @@ -6397,14 +7167,19 @@ func (s *UpdateSecretVersionStageOutput) SetName(v string) *UpdateSecretVersionS type ValidateResourcePolicyInput struct { _ struct{} `type:"structure"` - // Identifies the Resource Policy attached to the secret. + // A JSON-formatted string constructed according to the grammar and syntax for + // an AWS resource-based policy. The policy in the string identifies who can + // access or manage this secret and its versions. For information on how to + // format a JSON parameter for the various command line tool environments, see + // Using JSON for Parameters (http://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-json) + // in the AWS CLI User Guide.publi // // ResourcePolicy is a required field ResourcePolicy *string `min:"1" type:"string" required:"true"` - // The identifier for the secret that you want to validate a resource policy. - // You can specify either the Amazon Resource Name (ARN) or the friendly name - // of the secret. + // (Optional) The identifier of the secret with the resource-based policy you + // want to validate. You can specify either the Amazon Resource Name (ARN) or + // the friendly name of the secret. // // If you specify an ARN, we generally recommend that you specify a complete // ARN. You can specify a partial ARN too—for example, if you don’t include @@ -6545,6 +7320,9 @@ const ( // FilterNameStringTypeTagValue is a FilterNameStringType enum value FilterNameStringTypeTagValue = "tag-value" + // FilterNameStringTypePrimaryRegion is a FilterNameStringType enum value + FilterNameStringTypePrimaryRegion = "primary-region" + // FilterNameStringTypeAll is a FilterNameStringType enum value FilterNameStringTypeAll = "all" ) @@ -6556,6 +7334,7 @@ func FilterNameStringType_Values() []string { FilterNameStringTypeName, FilterNameStringTypeTagKey, FilterNameStringTypeTagValue, + FilterNameStringTypePrimaryRegion, FilterNameStringTypeAll, } } @@ -6575,3 +7354,23 @@ func SortOrderType_Values() []string { SortOrderTypeDesc, } } + +const ( + // StatusTypeInSync is a StatusType enum value + StatusTypeInSync = "InSync" + + // StatusTypeFailed is a StatusType enum value + StatusTypeFailed = "Failed" + + // StatusTypeInProgress is a StatusType enum value + StatusTypeInProgress = "InProgress" +) + +// StatusType_Values returns all elements of the StatusType enum +func StatusType_Values() []string { + return []string{ + StatusTypeInSync, + StatusTypeFailed, + StatusTypeInProgress, + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/errors.go b/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/errors.go index ab90196bb..7c7b1fc87 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/errors.go +++ b/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/errors.go @@ -68,7 +68,7 @@ const ( // ErrCodeMalformedPolicyDocumentException for service response error code // "MalformedPolicyDocumentException". // - // The policy document that you provided isn't valid. + // You provided a resource-based policy with syntax errors. ErrCodeMalformedPolicyDocumentException = "MalformedPolicyDocumentException" // ErrCodePreconditionNotMetException for service response error code @@ -80,7 +80,8 @@ const ( // ErrCodePublicPolicyException for service response error code // "PublicPolicyException". // - // The resource policy did not prevent broad access to the secret. + // The BlockPublicPolicy parameter is set to true and the resource policy did + // not prevent broad access to the secret. ErrCodePublicPolicyException = "PublicPolicyException" // ErrCodeResourceExistsException for service response error code diff --git a/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface/interface.go b/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface/interface.go index fe386bd58..9b54dd636 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface/interface.go +++ b/vendor/github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface/interface.go @@ -114,6 +114,14 @@ type SecretsManagerAPI interface { PutSecretValueWithContext(aws.Context, *secretsmanager.PutSecretValueInput, ...request.Option) (*secretsmanager.PutSecretValueOutput, error) PutSecretValueRequest(*secretsmanager.PutSecretValueInput) (*request.Request, *secretsmanager.PutSecretValueOutput) + RemoveRegionsFromReplication(*secretsmanager.RemoveRegionsFromReplicationInput) (*secretsmanager.RemoveRegionsFromReplicationOutput, error) + RemoveRegionsFromReplicationWithContext(aws.Context, *secretsmanager.RemoveRegionsFromReplicationInput, ...request.Option) (*secretsmanager.RemoveRegionsFromReplicationOutput, error) + RemoveRegionsFromReplicationRequest(*secretsmanager.RemoveRegionsFromReplicationInput) (*request.Request, *secretsmanager.RemoveRegionsFromReplicationOutput) + + ReplicateSecretToRegions(*secretsmanager.ReplicateSecretToRegionsInput) (*secretsmanager.ReplicateSecretToRegionsOutput, error) + ReplicateSecretToRegionsWithContext(aws.Context, *secretsmanager.ReplicateSecretToRegionsInput, ...request.Option) (*secretsmanager.ReplicateSecretToRegionsOutput, error) + ReplicateSecretToRegionsRequest(*secretsmanager.ReplicateSecretToRegionsInput) (*request.Request, *secretsmanager.ReplicateSecretToRegionsOutput) + RestoreSecret(*secretsmanager.RestoreSecretInput) (*secretsmanager.RestoreSecretOutput, error) RestoreSecretWithContext(aws.Context, *secretsmanager.RestoreSecretInput, ...request.Option) (*secretsmanager.RestoreSecretOutput, error) RestoreSecretRequest(*secretsmanager.RestoreSecretInput) (*request.Request, *secretsmanager.RestoreSecretOutput) @@ -122,6 +130,10 @@ type SecretsManagerAPI interface { RotateSecretWithContext(aws.Context, *secretsmanager.RotateSecretInput, ...request.Option) (*secretsmanager.RotateSecretOutput, error) RotateSecretRequest(*secretsmanager.RotateSecretInput) (*request.Request, *secretsmanager.RotateSecretOutput) + StopReplicationToReplica(*secretsmanager.StopReplicationToReplicaInput) (*secretsmanager.StopReplicationToReplicaOutput, error) + StopReplicationToReplicaWithContext(aws.Context, *secretsmanager.StopReplicationToReplicaInput, ...request.Option) (*secretsmanager.StopReplicationToReplicaOutput, error) + StopReplicationToReplicaRequest(*secretsmanager.StopReplicationToReplicaInput) (*request.Request, *secretsmanager.StopReplicationToReplicaOutput) + TagResource(*secretsmanager.TagResourceInput) (*secretsmanager.TagResourceOutput, error) TagResourceWithContext(aws.Context, *secretsmanager.TagResourceInput, ...request.Option) (*secretsmanager.TagResourceOutput, error) TagResourceRequest(*secretsmanager.TagResourceInput) (*request.Request, *secretsmanager.TagResourceOutput) diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go b/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go index 537ba3dc4..34f5a49e6 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ssm/api.go @@ -15209,6 +15209,12 @@ type AddTagsToResourceInput struct { // // PatchBaseline: pb-012345abcde // + // OpsMetadata object: ResourceID for tagging is created from the Amazon Resource + // Name (ARN) for the object. Specifically, ResourceID is created from the strings + // that come after the word opsmetadata in the ARN. For example, an OpsMetadata + // object with an ARN of arn:aws:ssm:us-east-2:1234567890:opsmetadata/aws/ssm/MyGroup/appmanager + // has a ResourceID of either aws/ssm/MyGroup/appmanager or /aws/ssm/MyGroup/appmanager. + // // For the Document and Parameter values, use the name of the resource. // // The ManagedInstance type for this API action is only for on-premises managed @@ -17898,6 +17904,149 @@ func (s *AutomationStepNotFoundException) RequestID() string { return s.RespMetadata.RequestID } +// Defines the basic information about a patch baseline override. +type BaselineOverride struct { + _ struct{} `type:"structure"` + + // A set of rules defining the approval rules for a patch baseline. + ApprovalRules *PatchRuleGroup `type:"structure"` + + // A list of explicitly approved patches for the baseline. + // + // For information about accepted formats for lists of approved patches and + // rejected patches, see About package name formats for approved and rejected + // patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html) + // in the AWS Systems Manager User Guide. + ApprovedPatches []*string `type:"list"` + + // Defines the compliance level for approved patches. When an approved patch + // is reported as missing, this value describes the severity of the compliance + // violation. + ApprovedPatchesComplianceLevel *string `type:"string" enum:"PatchComplianceLevel"` + + // Indicates whether the list of approved patches includes non-security updates + // that should be applied to the instances. The default value is 'false'. Applies + // to Linux instances only. + ApprovedPatchesEnableNonSecurity *bool `type:"boolean"` + + // A set of patch filters, typically used for approval rules. + GlobalFilters *PatchFilterGroup `type:"structure"` + + // The operating system rule used by the patch baseline override. + OperatingSystem *string `type:"string" enum:"OperatingSystem"` + + // A list of explicitly rejected patches for the baseline. + // + // For information about accepted formats for lists of approved patches and + // rejected patches, see About package name formats for approved and rejected + // patch lists (https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html) + // in the AWS Systems Manager User Guide. + RejectedPatches []*string `type:"list"` + + // The action for Patch Manager to take on patches included in the RejectedPackages + // list. A patch can be allowed only if it is a dependency of another package, + // or blocked entirely along with packages that include it as a dependency. + RejectedPatchesAction *string `type:"string" enum:"PatchAction"` + + // Information about the patches to use to update the instances, including target + // operating systems and source repositories. Applies to Linux instances only. + Sources []*PatchSource `type:"list"` +} + +// String returns the string representation +func (s BaselineOverride) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s BaselineOverride) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *BaselineOverride) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "BaselineOverride"} + if s.ApprovalRules != nil { + if err := s.ApprovalRules.Validate(); err != nil { + invalidParams.AddNested("ApprovalRules", err.(request.ErrInvalidParams)) + } + } + if s.GlobalFilters != nil { + if err := s.GlobalFilters.Validate(); err != nil { + invalidParams.AddNested("GlobalFilters", err.(request.ErrInvalidParams)) + } + } + if s.Sources != nil { + for i, v := range s.Sources { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sources", i), err.(request.ErrInvalidParams)) + } + } + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetApprovalRules sets the ApprovalRules field's value. +func (s *BaselineOverride) SetApprovalRules(v *PatchRuleGroup) *BaselineOverride { + s.ApprovalRules = v + return s +} + +// SetApprovedPatches sets the ApprovedPatches field's value. +func (s *BaselineOverride) SetApprovedPatches(v []*string) *BaselineOverride { + s.ApprovedPatches = v + return s +} + +// SetApprovedPatchesComplianceLevel sets the ApprovedPatchesComplianceLevel field's value. +func (s *BaselineOverride) SetApprovedPatchesComplianceLevel(v string) *BaselineOverride { + s.ApprovedPatchesComplianceLevel = &v + return s +} + +// SetApprovedPatchesEnableNonSecurity sets the ApprovedPatchesEnableNonSecurity field's value. +func (s *BaselineOverride) SetApprovedPatchesEnableNonSecurity(v bool) *BaselineOverride { + s.ApprovedPatchesEnableNonSecurity = &v + return s +} + +// SetGlobalFilters sets the GlobalFilters field's value. +func (s *BaselineOverride) SetGlobalFilters(v *PatchFilterGroup) *BaselineOverride { + s.GlobalFilters = v + return s +} + +// SetOperatingSystem sets the OperatingSystem field's value. +func (s *BaselineOverride) SetOperatingSystem(v string) *BaselineOverride { + s.OperatingSystem = &v + return s +} + +// SetRejectedPatches sets the RejectedPatches field's value. +func (s *BaselineOverride) SetRejectedPatches(v []*string) *BaselineOverride { + s.RejectedPatches = v + return s +} + +// SetRejectedPatchesAction sets the RejectedPatchesAction field's value. +func (s *BaselineOverride) SetRejectedPatchesAction(v string) *BaselineOverride { + s.RejectedPatchesAction = &v + return s +} + +// SetSources sets the Sources field's value. +func (s *BaselineOverride) SetSources(v []*PatchSource) *BaselineOverride { + s.Sources = v + return s +} + type CancelCommandInput struct { _ struct{} `type:"structure"` @@ -20847,6 +20996,18 @@ type CreateOpsMetadataInput struct { // // ResourceId is a required field ResourceId *string `min:"1" type:"string" required:"true"` + + // Optional metadata that you assign to a resource. You can specify a maximum + // of five tags for an OpsMetadata object. Tags enable you to categorize a resource + // in different ways, such as by purpose, owner, or environment. For example, + // you might want to tag an OpsMetadata object to identify an environment or + // target AWS Region. In this case, you could specify the following key-value + // pairs: + // + // * Key=Environment,Value=Production + // + // * Key=Region,Value=us-east-2 + Tags []*Tag `type:"list"` } // String returns the string representation @@ -20881,6 +21042,16 @@ func (s *CreateOpsMetadataInput) Validate() error { } } } + if s.Tags != nil { + for i, v := range s.Tags { + if v == nil { + continue + } + if err := v.Validate(); err != nil { + invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams)) + } + } + } if invalidParams.Len() > 0 { return invalidParams @@ -20900,6 +21071,12 @@ func (s *CreateOpsMetadataInput) SetResourceId(v string) *CreateOpsMetadataInput return s } +// SetTags sets the Tags field's value. +func (s *CreateOpsMetadataInput) SetTags(v []*Tag) *CreateOpsMetadataInput { + s.Tags = v + return s +} + type CreateOpsMetadataOutput struct { _ struct{} `type:"structure"` @@ -20938,8 +21115,8 @@ type CreatePatchBaselineInput struct { // in the AWS Systems Manager User Guide. ApprovedPatches []*string `type:"list"` - // Defines the compliance level for approved patches. This means that if an - // approved patch is reported as missing, this is the severity of the compliance + // Defines the compliance level for approved patches. When an approved patch + // is reported as missing, this value describes the severity of the compliance // violation. The default value is UNSPECIFIED. ApprovedPatchesComplianceLevel *string `type:"string" enum:"PatchComplianceLevel"` @@ -27871,11 +28048,13 @@ type GetCommandInvocationInput struct { // InstanceId is a required field InstanceId *string `type:"string" required:"true"` - // (Optional) The name of the plugin for which you want detailed results. If - // the document contains only one plugin, the name can be omitted and the details - // will be returned. + // The name of the plugin for which you want detailed results. If the document + // contains only one plugin, you can omit the name and details for that plugin + // are returned. If the document contains more than one plugin, you must specify + // the name of the plugin for which you want to view details. // // Plugin names are also referred to as step names in Systems Manager documents. + // For example, aws:RunShellScript is a plugin. PluginName *string `min:"4" type:"string"` } @@ -27973,8 +28152,8 @@ type GetCommandInvocationOutput struct { // configured for Systems Manager. InstanceId *string `type:"string"` - // The name of the plugin for which you want detailed results. For example, - // aws:RunShellScript is a plugin. + // The name of the plugin, or step name, for which details are reported. For + // example, aws:RunShellScript is a plugin. PluginName *string `min:"4" type:"string"` // The error level response code for the plugin script. If the response code @@ -28297,6 +28476,9 @@ func (s *GetDefaultPatchBaselineOutput) SetOperatingSystem(v string) *GetDefault type GetDeployablePatchSnapshotForInstanceInput struct { _ struct{} `type:"structure"` + // Defines the basic information about a patch baseline override. + BaselineOverride *BaselineOverride `type:"structure"` + // The ID of the instance for which the appropriate patch snapshot should be // retrieved. // @@ -28331,6 +28513,11 @@ func (s *GetDeployablePatchSnapshotForInstanceInput) Validate() error { if s.SnapshotId != nil && len(*s.SnapshotId) < 36 { invalidParams.Add(request.NewErrParamMinLen("SnapshotId", 36)) } + if s.BaselineOverride != nil { + if err := s.BaselineOverride.Validate(); err != nil { + invalidParams.AddNested("BaselineOverride", err.(request.ErrInvalidParams)) + } + } if invalidParams.Len() > 0 { return invalidParams @@ -28338,6 +28525,12 @@ func (s *GetDeployablePatchSnapshotForInstanceInput) Validate() error { return nil } +// SetBaselineOverride sets the BaselineOverride field's value. +func (s *GetDeployablePatchSnapshotForInstanceInput) SetBaselineOverride(v *BaselineOverride) *GetDeployablePatchSnapshotForInstanceInput { + s.BaselineOverride = v + return s +} + // SetInstanceId sets the InstanceId field's value. func (s *GetDeployablePatchSnapshotForInstanceInput) SetInstanceId(v string) *GetDeployablePatchSnapshotForInstanceInput { s.InstanceId = &v @@ -30830,7 +31023,8 @@ func (s *GetPatchBaselineOutput) SetSources(v []*PatchSource) *GetPatchBaselineO type GetServiceSettingInput struct { _ struct{} `type:"structure"` - // The ID of the service setting to get. The setting ID can be /ssm/parameter-store/default-parameter-tier, + // The ID of the service setting to get. The setting ID can be /ssm/automation/customer-script-log-destination, + // /ssm/automation/customer-script-log-group-name, /ssm/parameter-store/default-parameter-tier, // /ssm/parameter-store/high-throughput-enabled, or /ssm/managed-instance/activation-tier. // // SettingId is a required field @@ -31215,6 +31409,10 @@ func (s *InstanceAssociation) SetInstanceId(v string) *InstanceAssociation { } // An S3 bucket where you want to store the results of this request. +// +// For the minimal permissions required to enable Amazon S3 output for an association, +// see Creating associations (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-state-assoc.html) +// in the Systems Manager User Guide. type InstanceAssociationOutputLocation struct { _ struct{} `type:"structure"` @@ -31677,6 +31875,10 @@ type InstanceInformationStringFilter struct { // "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus"|"Tag // Key" // + // Tag key is not a valid filter. You must specify either tag-key or tag:keyname + // and a string. Here are some valid examples: tag-key, tag:123, tag:al!, tag:Windows. + // Here are some invalid examples: tag-keys, Tag Key, tag:, tagKey, abc:keyname. + // // Key is a required field Key *string `min:"1" type:"string" required:"true"` @@ -42335,12 +42537,12 @@ type PatchRule struct { // The number of days after the release date of each patch matched by the rule // that the patch is marked as approved in the patch baseline. For example, // a value of 7 means that patches are approved seven days after they are released. - // Not supported on Ubuntu Server. + // Not supported on Debian Server or Ubuntu Server. ApproveAfterDays *int64 `type:"integer"` // The cutoff date for auto approval of released patches. Any patches released - // on or before this date are installed automatically. Not supported on Ubuntu - // Server. + // on or before this date are installed automatically. Not supported on Debian + // Server or Ubuntu Server. // // Enter dates in the format YYYY-MM-DD. For example, 2020-12-31. ApproveUntilDate *string `min:"1" type:"string"` @@ -43039,14 +43241,15 @@ type PutParameterInput struct { // * A parameter name can't be prefixed with "aws" or "ssm" (case-insensitive). // // * Parameter names can include only the following symbols and letters: - // a-zA-Z0-9_.-/ + // a-zA-Z0-9_.- In addition, the slash character ( / ) is used to delineate + // hierarchies in parameter names. For example: /Dev/Production/East/Project-ABC/MyParameter // // * A parameter name can't include spaces. // // * Parameter hierarchies are limited to a maximum depth of fifteen levels. // - // For additional information about valid values for parameter names, see About - // requirements and constraints for parameter names (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-parameter-name-constraints.html) + // For additional information about valid values for parameter names, see Creating + // Systems Manager parameters (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html) // in the AWS Systems Manager User Guide. // // The maximum length constraint listed below includes capacity for additional @@ -43515,6 +43718,11 @@ type RegisterTargetWithMaintenanceWindowInput struct { // The targets to register with the maintenance window. In other words, the // instances to run commands on when the maintenance window runs. // + // If a single maintenance window task is registered with multiple targets, + // its task invocations occur sequentially and not in parallel. If your task + // must run on multiple targets at the same time, register a task for each target + // individually and assign each task the same priority level. + // // You can specify targets using instance IDs, resource group names, or tags // that have been applied to instances. // @@ -44005,6 +44213,12 @@ type RemoveTagsFromResourceInput struct { // // PatchBaseline: pb-012345abcde // + // OpsMetadata object: ResourceID for tagging is created from the Amazon Resource + // Name (ARN) for the object. Specifically, ResourceID is created from the strings + // that come after the word opsmetadata in the ARN. For example, an OpsMetadata + // object with an ARN of arn:aws:ssm:us-east-2:1234567890:opsmetadata/aws/ssm/MyGroup/appmanager + // has a ResourceID of either aws/ssm/MyGroup/appmanager or /aws/ssm/MyGroup/appmanager. + // // For the Document and Parameter values, use the name of the resource. // // The ManagedInstance type for this API action is only for on-premises managed @@ -44095,7 +44309,8 @@ type ResetServiceSettingInput struct { _ struct{} `type:"structure"` // The Amazon Resource Name (ARN) of the service setting to reset. The setting - // ID can be /ssm/parameter-store/default-parameter-tier, /ssm/parameter-store/high-throughput-enabled, + // ID can be /ssm/automation/customer-script-log-destination, /ssm/automation/customer-script-log-group-name, + // /ssm/parameter-store/default-parameter-tier, /ssm/parameter-store/high-throughput-enabled, // or /ssm/managed-instance/activation-tier. For example, arn:aws:ssm:us-east-1:111122223333:servicesetting/ssm/parameter-store/high-throughput-enabled. // // SettingId is a required field @@ -51007,6 +51222,10 @@ type UpdateServiceSettingInput struct { // arn:aws:ssm:us-east-1:111122223333:servicesetting/ssm/parameter-store/high-throughput-enabled. // The setting ID can be one of the following. // + // * /ssm/automation/customer-script-log-destination + // + // * /ssm/automation/customer-script-log-group-name + // // * /ssm/parameter-store/default-parameter-tier // // * /ssm/parameter-store/high-throughput-enabled @@ -51028,6 +51247,12 @@ type UpdateServiceSettingInput struct { // For the /ssm/parameter-store/high-throughput-enabled, and /ssm/managed-instance/activation-tier // setting IDs, the setting value can be true or false. // + // For the /ssm/automation/customer-script-log-destination setting ID, the setting + // value can be CloudWatch. + // + // For the /ssm/automation/customer-script-log-group-name setting ID, the setting + // value can be the name of a CloudWatch Logs log group. + // // SettingValue is a required field SettingValue *string `min:"1" type:"string" required:"true"` } @@ -53026,6 +53251,9 @@ const ( // ResourceTypeForTaggingOpsItem is a ResourceTypeForTagging enum value ResourceTypeForTaggingOpsItem = "OpsItem" + + // ResourceTypeForTaggingOpsMetadata is a ResourceTypeForTagging enum value + ResourceTypeForTaggingOpsMetadata = "OpsMetadata" ) // ResourceTypeForTagging_Values returns all elements of the ResourceTypeForTagging enum @@ -53037,6 +53265,7 @@ func ResourceTypeForTagging_Values() []string { ResourceTypeForTaggingParameter, ResourceTypeForTaggingPatchBaseline, ResourceTypeForTaggingOpsItem, + ResourceTypeForTaggingOpsMetadata, } } diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go index 8667908cf..e4ffca838 100644 --- a/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. // Package cmpopts provides common options for the cmp package. package cmpopts @@ -11,7 +11,6 @@ import ( "time" "github.com/google/go-cmp/cmp" - "golang.org/x/xerrors" ) func equateAlways(_, _ interface{}) bool { return true } @@ -147,10 +146,3 @@ func areConcreteErrors(x, y interface{}) bool { _, ok2 := y.(error) return ok1 && ok2 } - -func compareErrors(x, y interface{}) bool { - xe := x.(error) - ye := y.(error) - // TODO(≥go1.13): Use standard definition of errors.Is. - return xerrors.Is(xe, ye) || xerrors.Is(ye, xe) -} diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/errors_go113.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/errors_go113.go new file mode 100644 index 000000000..26fe25d6a --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/errors_go113.go @@ -0,0 +1,15 @@ +// Copyright 2021, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.13 + +package cmpopts + +import "errors" + +func compareErrors(x, y interface{}) bool { + xe := x.(error) + ye := y.(error) + return errors.Is(xe, ye) || errors.Is(ye, xe) +} diff --git a/vendor/github.com/google/go-cmp/cmp/cmpopts/errors_xerrors.go b/vendor/github.com/google/go-cmp/cmp/cmpopts/errors_xerrors.go new file mode 100644 index 000000000..6eeb8d6e6 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/cmpopts/errors_xerrors.go @@ -0,0 +1,18 @@ +// Copyright 2021, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.13 + +// TODO(≥go1.13): For support on = r.NumDiff } -var randInt = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) +var randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0 // Difference reports whether two lists of lengths nx and ny are equal // given the definition of equality provided as f. @@ -168,17 +168,6 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { // A vertical edge is equivalent to inserting a symbol from list Y. // A diagonal edge is equivalent to a matching symbol between both X and Y. - // To ensure flexibility in changing the algorithm in the future, - // introduce some degree of deliberate instability. - // This is achieved by fiddling the zigzag iterator to start searching - // the graph starting from the bottom-right versus than the top-left. - // The result may differ depending on the starting search location, - // but still produces a valid edit script. - zigzagInit := randInt // either 0 or 1 - if flags.Deterministic { - zigzagInit = 0 - } - // Invariants: // • 0 ≤ fwdPath.X ≤ (fwdFrontier.X, revFrontier.X) ≤ revPath.X ≤ nx // • 0 ≤ fwdPath.Y ≤ (fwdFrontier.Y, revFrontier.Y) ≤ revPath.Y ≤ ny @@ -197,6 +186,11 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { // approximately the square-root of the search budget. searchBudget := 4 * (nx + ny) // O(n) + // Running the tests with the "cmp_debug" build tag prints a visualization + // of the algorithm running in real-time. This is educational for + // understanding how the algorithm works. See debug_enable.go. + f = debug.Begin(nx, ny, f, &fwdPath.es, &revPath.es) + // The algorithm below is a greedy, meet-in-the-middle algorithm for // computing sub-optimal edit-scripts between two lists. // @@ -214,22 +208,28 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { // frontier towards the opposite corner. // • This algorithm terminates when either the X coordinates or the // Y coordinates of the forward and reverse frontier points ever intersect. - // + // This algorithm is correct even if searching only in the forward direction // or in the reverse direction. We do both because it is commonly observed // that two lists commonly differ because elements were added to the front // or end of the other list. // - // Running the tests with the "cmp_debug" build tag prints a visualization - // of the algorithm running in real-time. This is educational for - // understanding how the algorithm works. See debug_enable.go. - f = debug.Begin(nx, ny, f, &fwdPath.es, &revPath.es) - for { + // Non-deterministically start with either the forward or reverse direction + // to introduce some deliberate instability so that we have the flexibility + // to change this algorithm in the future. + if flags.Deterministic || randBool { + goto forwardSearch + } else { + goto reverseSearch + } + +forwardSearch: + { // Forward search from the beginning. if fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 { - break + goto finishSearch } - for stop1, stop2, i := false, false, zigzagInit; !(stop1 && stop2) && searchBudget > 0; i++ { + for stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ { // Search in a diagonal pattern for a match. z := zigzag(i) p := point{fwdFrontier.X + z, fwdFrontier.Y - z} @@ -262,10 +262,14 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { } else { fwdFrontier.Y++ } + goto reverseSearch + } +reverseSearch: + { // Reverse search from the end. if fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 { - break + goto finishSearch } for stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ { // Search in a diagonal pattern for a match. @@ -300,8 +304,10 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { } else { revFrontier.Y-- } + goto forwardSearch } +finishSearch: // Join the forward and reverse paths and then append the reverse path. fwdPath.connect(revPath.point, f) for i := len(revPath.es) - 1; i >= 0; i-- { diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go index a9e7fc0b5..d8e459c9b 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package flags diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go index 01aed0a15..82d1d7fbf 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. // +build !go1.10 diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go index c0b667f58..8646f0529 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. // +build go1.10 diff --git a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go index ace1dbe86..d127d4362 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. // Package function provides functionality for identifying function types. package function diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/name.go b/vendor/github.com/google/go-cmp/cmp/internal/value/name.go index 8228e7d51..b6c12cefb 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/name.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/name.go @@ -1,6 +1,6 @@ // Copyright 2020, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package value diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go index e9e384a1c..44f4a5afd 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go @@ -1,6 +1,6 @@ // Copyright 2018, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. // +build purego diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go index b50c17ec7..a605953d4 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go @@ -1,6 +1,6 @@ // Copyright 2018, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. // +build !purego diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go index 24fbae6e3..98533b036 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package value diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go index 06a8ffd03..9147a2997 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package value diff --git a/vendor/github.com/google/go-cmp/cmp/options.go b/vendor/github.com/google/go-cmp/cmp/options.go index 4b0407a7f..e57b9eb53 100644 --- a/vendor/github.com/google/go-cmp/cmp/options.go +++ b/vendor/github.com/google/go-cmp/cmp/options.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp diff --git a/vendor/github.com/google/go-cmp/cmp/path.go b/vendor/github.com/google/go-cmp/cmp/path.go index 603dbb002..3d45c1a47 100644 --- a/vendor/github.com/google/go-cmp/cmp/path.go +++ b/vendor/github.com/google/go-cmp/cmp/path.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp diff --git a/vendor/github.com/google/go-cmp/cmp/report.go b/vendor/github.com/google/go-cmp/cmp/report.go index aafcb3635..f43cd12eb 100644 --- a/vendor/github.com/google/go-cmp/cmp/report.go +++ b/vendor/github.com/google/go-cmp/cmp/report.go @@ -1,6 +1,6 @@ // Copyright 2017, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp diff --git a/vendor/github.com/google/go-cmp/cmp/report_compare.go b/vendor/github.com/google/go-cmp/cmp/report_compare.go index 9e2180964..104bb3053 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_compare.go +++ b/vendor/github.com/google/go-cmp/cmp/report_compare.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp @@ -79,7 +79,7 @@ func (opts formatOptions) verbosity() uint { } } -const maxVerbosityPreset = 3 +const maxVerbosityPreset = 6 // verbosityPreset modifies the verbosity settings given an index // between 0 and maxVerbosityPreset, inclusive. @@ -100,7 +100,7 @@ func verbosityPreset(opts formatOptions, i int) formatOptions { func (opts formatOptions) FormatDiff(v *valueNode, ptrs *pointerReferences) (out textNode) { if opts.DiffMode == diffIdentical { opts = opts.WithVerbosity(1) - } else { + } else if opts.verbosity() < 3 { opts = opts.WithVerbosity(3) } diff --git a/vendor/github.com/google/go-cmp/cmp/report_references.go b/vendor/github.com/google/go-cmp/cmp/report_references.go index d620c2c20..be31b33a9 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_references.go +++ b/vendor/github.com/google/go-cmp/cmp/report_references.go @@ -1,6 +1,6 @@ // Copyright 2020, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp diff --git a/vendor/github.com/google/go-cmp/cmp/report_reflect.go b/vendor/github.com/google/go-cmp/cmp/report_reflect.go index 786f67126..33f03577f 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_reflect.go +++ b/vendor/github.com/google/go-cmp/cmp/report_reflect.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp @@ -351,6 +351,8 @@ func formatMapKey(v reflect.Value, disambiguate bool, ptrs *pointerReferences) s opts.PrintAddresses = disambiguate opts.AvoidStringer = disambiguate opts.QualifiedNames = disambiguate + opts.VerbosityLevel = maxVerbosityPreset + opts.LimitVerbosity = true s := opts.FormatValue(v, reflect.Map, ptrs).String() return strings.TrimSpace(s) } diff --git a/vendor/github.com/google/go-cmp/cmp/report_slices.go b/vendor/github.com/google/go-cmp/cmp/report_slices.go index 35315dad3..168f92f3c 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_slices.go +++ b/vendor/github.com/google/go-cmp/cmp/report_slices.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp @@ -26,8 +26,6 @@ func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { return false // No differences detected case !v.ValueX.IsValid() || !v.ValueY.IsValid(): return false // Both values must be valid - case v.Type.Kind() == reflect.Slice && (v.ValueX.Len() == 0 || v.ValueY.Len() == 0): - return false // Both slice values have to be non-empty case v.NumIgnored > 0: return false // Some ignore option was used case v.NumTransformed > 0: @@ -45,7 +43,16 @@ func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { return false } - switch t := v.Type; t.Kind() { + // Check whether this is an interface with the same concrete types. + t := v.Type + vx, vy := v.ValueX, v.ValueY + if t.Kind() == reflect.Interface && !vx.IsNil() && !vy.IsNil() && vx.Elem().Type() == vy.Elem().Type() { + vx, vy = vx.Elem(), vy.Elem() + t = vx.Type() + } + + // Check whether we provide specialized diffing for this type. + switch t.Kind() { case reflect.String: case reflect.Array, reflect.Slice: // Only slices of primitive types have specialized handling. @@ -57,6 +64,11 @@ func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { return false } + // Both slice values have to be non-empty. + if t.Kind() == reflect.Slice && (vx.Len() == 0 || vy.Len() == 0) { + return false + } + // If a sufficient number of elements already differ, // use specialized formatting even if length requirement is not met. if v.NumDiff > v.NumSame { @@ -68,7 +80,7 @@ func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { // Use specialized string diffing for longer slices or strings. const minLength = 64 - return v.ValueX.Len() >= minLength && v.ValueY.Len() >= minLength + return vx.Len() >= minLength && vy.Len() >= minLength } // FormatDiffSlice prints a diff for the slices (or strings) represented by v. @@ -77,6 +89,11 @@ func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { assert(opts.DiffMode == diffUnknown) t, vx, vy := v.Type, v.ValueX, v.ValueY + if t.Kind() == reflect.Interface { + vx, vy = vx.Elem(), vy.Elem() + t = vx.Type() + opts = opts.WithTypeMode(emitType) + } // Auto-detect the type of the data. var isLinedText, isText, isBinary bool diff --git a/vendor/github.com/google/go-cmp/cmp/report_text.go b/vendor/github.com/google/go-cmp/cmp/report_text.go index 8b12c05cd..0fd46d7ff 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_text.go +++ b/vendor/github.com/google/go-cmp/cmp/report_text.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp diff --git a/vendor/github.com/google/go-cmp/cmp/report_value.go b/vendor/github.com/google/go-cmp/cmp/report_value.go index 83031a7f5..668d470fd 100644 --- a/vendor/github.com/google/go-cmp/cmp/report_value.go +++ b/vendor/github.com/google/go-cmp/cmp/report_value.go @@ -1,6 +1,6 @@ // Copyright 2019, The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. +// license that can be found in the LICENSE file. package cmp diff --git a/vendor/github.com/hashicorp/aws-sdk-go-base/CHANGELOG.md b/vendor/github.com/hashicorp/aws-sdk-go-base/CHANGELOG.md index f6ff4cc32..4fbd63cc6 100644 --- a/vendor/github.com/hashicorp/aws-sdk-go-base/CHANGELOG.md +++ b/vendor/github.com/hashicorp/aws-sdk-go-base/CHANGELOG.md @@ -1,4 +1,10 @@ -# v0.6.0 (unreleased) +# v0.7.0 (Unreleased) + +ENHANCEMENTS + +* Optionally log the STS API calls when assuming a role #51 + +# v0.6.0 (August 18, 2020) BREAKING CHANGES @@ -7,6 +13,7 @@ BREAKING CHANGES ENHANCEMENTS * Additional AWS error checking function have been added to the `tfawserr` package - `ErrCodeEquals`, `ErrCodeContains` and `ErrStatusCodeEquals`. +* Support for appending data to User-Agent request header with the `TF_APPEND_USER_AGENT` environment variable. #47 # v0.5.0 (June 4, 2020) diff --git a/vendor/github.com/hashicorp/aws-sdk-go-base/awsauth.go b/vendor/github.com/hashicorp/aws-sdk-go-base/awsauth.go index 3b1763ecd..54aba3107 100644 --- a/vendor/github.com/hashicorp/aws-sdk-go-base/awsauth.go +++ b/vendor/github.com/hashicorp/aws-sdk-go-base/awsauth.go @@ -201,10 +201,10 @@ func GetCredentialsFromSession(c *Config) (*awsCredentials.Credentials, error) { return creds, nil } -// GetCredentials gets credentials from the environment, shared credentials, -// the session (which may include a credential process), or ECS/EC2 metadata endpoints. -// GetCredentials also validates the credentials and the ability to assume a role -// or will return an error if unsuccessful. +// GetCredentials gets credentials from environment, shared credentials file, +// environment AWS_SHARED_CREDENTIALS_FILE, the session (which may include a credential process), +// or ECS/EC2 metadata endpoints. GetCredentials also validates the credentials +// and the ability to assume a role or will return an error if unsuccessful. func GetCredentials(c *Config) (*awsCredentials.Credentials, error) { sharedCredentialsFilename, err := homedir.Expand(c.CredsFilename) @@ -260,6 +260,11 @@ func GetCredentials(c *Config) (*awsCredentials.Credentials, error) { HTTPClient: cleanhttp.DefaultClient(), } + if c.DebugLogging { + awsConfig.LogLevel = aws.LogLevel(aws.LogDebugWithHTTPBody | aws.LogDebugWithRequestRetries | aws.LogDebugWithRequestErrors) + awsConfig.Logger = DebugLogger{} + } + assumeRoleSession, err := session.NewSession(awsConfig) if err != nil { diff --git a/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go b/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go index 8d306bf51..fe28d15b6 100644 --- a/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +++ b/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go @@ -32,6 +32,7 @@ func DefaultPooledTransport() *http.Transport { IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, + ForceAttemptHTTP2: true, MaxIdleConnsPerHost: runtime.GOMAXPROCS(0) + 1, } return transport diff --git a/vendor/github.com/hashicorp/go-cleanhttp/go.mod b/vendor/github.com/hashicorp/go-cleanhttp/go.mod index 310f07569..005ccdef9 100644 --- a/vendor/github.com/hashicorp/go-cleanhttp/go.mod +++ b/vendor/github.com/hashicorp/go-cleanhttp/go.mod @@ -1 +1,3 @@ module github.com/hashicorp/go-cleanhttp + +go 1.13 diff --git a/vendor/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml deleted file mode 100644 index 24b80388f..000000000 --- a/vendor/github.com/hashicorp/go-multierror/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: - - 1.x - -branches: - only: - - master - -script: env GO111MODULE=on make test testrace diff --git a/vendor/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md index e92fa614c..71dd308ed 100644 --- a/vendor/github.com/hashicorp/go-multierror/README.md +++ b/vendor/github.com/hashicorp/go-multierror/README.md @@ -1,10 +1,11 @@ # go-multierror -[![Build Status](http://img.shields.io/travis/hashicorp/go-multierror.svg?style=flat-square)][travis] -[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs] +[![CircleCI](https://img.shields.io/circleci/build/github/hashicorp/go-multierror/master)](https://circleci.com/gh/hashicorp/go-multierror) +[![Go Reference](https://pkg.go.dev/badge/github.com/hashicorp/go-multierror.svg)](https://pkg.go.dev/github.com/hashicorp/go-multierror) +![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/hashicorp/go-multierror) -[travis]: https://travis-ci.org/hashicorp/go-multierror -[godocs]: https://godoc.org/github.com/hashicorp/go-multierror +[circleci]: https://app.circleci.com/pipelines/github/hashicorp/go-multierror +[godocs]: https://pkg.go.dev/github.com/hashicorp/go-multierror `go-multierror` is a package for Go that provides a mechanism for representing a list of `error` values as a single `error`. @@ -24,7 +25,25 @@ for introspecting on error values. Install using `go get github.com/hashicorp/go-multierror`. Full documentation is available at -http://godoc.org/github.com/hashicorp/go-multierror +https://pkg.go.dev/github.com/hashicorp/go-multierror + +### Requires go version 1.13 or newer + +`go-multierror` requires go version 1.13 or newer. Go 1.13 introduced +[error wrapping](https://golang.org/doc/go1.13#error_wrapping), which +this library takes advantage of. + +If you need to use an earlier version of go, you can use the +[v1.0.0](https://github.com/hashicorp/go-multierror/tree/v1.0.0) +tag, which doesn't rely on features in go 1.13. + +If you see compile errors that look like the below, it's likely that +you're on an older version of go: + +``` +/go/src/github.com/hashicorp/go-multierror/multierror.go:112:9: undefined: errors.As +/go/src/github.com/hashicorp/go-multierror/multierror.go:117:9: undefined: errors.Is +``` ## Usage diff --git a/vendor/github.com/hashicorp/go-multierror/append.go b/vendor/github.com/hashicorp/go-multierror/append.go index 775b6e753..3e2589bfd 100644 --- a/vendor/github.com/hashicorp/go-multierror/append.go +++ b/vendor/github.com/hashicorp/go-multierror/append.go @@ -6,6 +6,8 @@ package multierror // If err is not a multierror.Error, then it will be turned into // one. If any of the errs are multierr.Error, they will be flattened // one level into err. +// Any nil errors within errs will be ignored. If err is nil, a new +// *Error will be returned. func Append(err error, errs ...error) *Error { switch err := err.(type) { case *Error: diff --git a/vendor/github.com/hashicorp/go-multierror/go.mod b/vendor/github.com/hashicorp/go-multierror/go.mod index 0afe8e6f9..141cc4ccb 100644 --- a/vendor/github.com/hashicorp/go-multierror/go.mod +++ b/vendor/github.com/hashicorp/go-multierror/go.mod @@ -1,5 +1,5 @@ module github.com/hashicorp/go-multierror -go 1.14 +go 1.13 require github.com/hashicorp/errwrap v1.0.0 diff --git a/vendor/github.com/hashicorp/go-multierror/multierror.go b/vendor/github.com/hashicorp/go-multierror/multierror.go index d05dd9269..f54574326 100644 --- a/vendor/github.com/hashicorp/go-multierror/multierror.go +++ b/vendor/github.com/hashicorp/go-multierror/multierror.go @@ -40,14 +40,17 @@ func (e *Error) GoString() string { return fmt.Sprintf("*%#v", *e) } -// WrappedErrors returns the list of errors that this Error is wrapping. -// It is an implementation of the errwrap.Wrapper interface so that -// multierror.Error can be used with that library. +// WrappedErrors returns the list of errors that this Error is wrapping. It is +// an implementation of the errwrap.Wrapper interface so that multierror.Error +// can be used with that library. // -// This method is not safe to be called concurrently and is no different -// than accessing the Errors field directly. It is implemented only to -// satisfy the errwrap.Wrapper interface. +// This method is not safe to be called concurrently. Unlike accessing the +// Errors field directly, this function also checks if the multierror is nil to +// prevent a null-pointer panic. It satisfies the errwrap.Wrapper interface. func (e *Error) WrappedErrors() []error { + if e == nil { + return nil + } return e.Errors } diff --git a/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md b/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md index 3bc725e96..5e6655a2c 100644 --- a/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md +++ b/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md @@ -1,5 +1,34 @@ # HCL Changelog +## v2.9.1 (March 10, 2021) + +### Bugs Fixed + +* hclsyntax: Fix panic for marked index value. ([#451](https://github.com/hashicorp/hcl/pull/451)) + +## v2.9.0 (February 23, 2021) + +### Enhancements + +* HCL's native syntax and JSON scanners -- and thus all of the other parsing components that build on top of them -- are now using Unicode 13 rules for text segmentation when counting text characters for the purpose of reporting source location columns. Previously HCL was using Unicode 12. Unicode 13 still uses the same algorithm but includes some additions to the character tables the algorithm is defined in terms of, to properly categorize new characters defined in Unicode 13. + +## v2.8.2 (January 6, 2021) + +### Bugs Fixed + +* hclsyntax: Fix panic for marked collection splat. ([#436](https://github.com/hashicorp/hcl/pull/436)) +* hclsyntax: Fix panic for marked template loops. ([#437](https://github.com/hashicorp/hcl/pull/437)) +* hclsyntax: Fix `for` expression marked conditional. ([#438](https://github.com/hashicorp/hcl/pull/438)) +* hclsyntax: Mark objects with keys that are sensitive. ([#440](https://github.com/hashicorp/hcl/pull/440)) + +## v2.8.1 (December 17, 2020) + +### Bugs Fixed + +* hclsyntax: Fix panic when expanding marked function arguments. ([#429](https://github.com/hashicorp/hcl/pull/429)) +* hclsyntax: Error when attempting to use a marked value as an object key. ([#434](https://github.com/hashicorp/hcl/pull/434)) +* hclsyntax: Error when attempting to use a marked value as an object key in expressions. ([#433](https://github.com/hashicorp/hcl/pull/433)) + ## v2.8.0 (December 7, 2020) ### Enhancements diff --git a/vendor/github.com/hashicorp/hcl/v2/appveyor.yml b/vendor/github.com/hashicorp/hcl/v2/appveyor.yml deleted file mode 100644 index e382f8f57..000000000 --- a/vendor/github.com/hashicorp/hcl/v2/appveyor.yml +++ /dev/null @@ -1,13 +0,0 @@ -build: off - -clone_folder: c:\gopath\src\github.com\hashicorp\hcl - -environment: - GOPATH: c:\gopath - GO111MODULE: on - GOPROXY: https://goproxy.io - -stack: go 1.12 - -test_script: - - go test ./... diff --git a/vendor/github.com/hashicorp/hcl/v2/go.mod b/vendor/github.com/hashicorp/hcl/v2/go.mod index c8c289d9f..0529faa97 100644 --- a/vendor/github.com/hashicorp/hcl/v2/go.mod +++ b/vendor/github.com/hashicorp/hcl/v2/go.mod @@ -5,7 +5,7 @@ go 1.12 require ( github.com/agext/levenshtein v1.2.1 github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 - github.com/apparentlymart/go-textseg/v12 v12.0.0 + github.com/apparentlymart/go-textseg/v13 v13.0.0 github.com/davecgh/go-spew v1.1.1 github.com/go-test/deep v1.0.3 github.com/google/go-cmp v0.3.1 @@ -16,8 +16,8 @@ require ( github.com/sergi/go-diff v1.0.0 github.com/spf13/pflag v1.0.2 github.com/stretchr/testify v1.2.2 // indirect - github.com/zclconf/go-cty v1.2.0 + github.com/zclconf/go-cty v1.8.0 + github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 // indirect - golang.org/x/text v0.3.2 // indirect ) diff --git a/vendor/github.com/hashicorp/hcl/v2/go.sum b/vendor/github.com/hashicorp/hcl/v2/go.sum index 2a1073d11..6c1475673 100644 --- a/vendor/github.com/hashicorp/hcl/v2/go.sum +++ b/vendor/github.com/hashicorp/hcl/v2/go.sum @@ -4,13 +4,15 @@ github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhi github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0 h1:bNEQyAGak9tojivJNkoqWErVCQbjdL7GzRt3F8NvfJ0= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -31,23 +33,30 @@ github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/zclconf/go-cty v1.2.0 h1:sPHsy7ADcIZQP3vILvTjrh74ZA175TFP5vqiNK1UmlI= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.8.0 h1:s4AvqaeQzJIu3ndv4gVIhplVD0krU+bgrcLSVUnaWuA= +github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734 h1:p/H982KKEjUnLJkM3tt/LemDnOc1GiZL5FCVlORJ5zo= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 h1:vsphBvatvfbhlb4PO1BYSr9dzugGxJ/SQHoNufZJq1w= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression.go b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression.go index 3b167be0e..63f2e88ec 100644 --- a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression.go +++ b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression.go @@ -317,13 +317,17 @@ func (e *FunctionCallExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnosti return cty.DynamicVal, diags } + // When expanding arguments from a collection, we must first unmark + // the collection itself, and apply any marks directly to the + // elements. This ensures that marks propagate correctly. + expandVal, marks := expandVal.Unmark() newArgs := make([]Expression, 0, (len(args)-1)+expandVal.LengthInt()) newArgs = append(newArgs, args[:len(args)-1]...) it := expandVal.ElementIterator() for it.Next() { _, val := it.Element() newArgs = append(newArgs, &LiteralValueExpr{ - Val: val, + Val: val.WithMarks(marks), SrcRange: expandExpr.Range(), }) } @@ -784,6 +788,7 @@ func (e *ObjectConsExpr) walkChildNodes(w internalWalkFunc) { func (e *ObjectConsExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { var vals map[string]cty.Value var diags hcl.Diagnostics + var marks []cty.ValueMarks // This will get set to true if we fail to produce any of our keys, // either because they are actually unknown or if the evaluation produces @@ -821,6 +826,9 @@ func (e *ObjectConsExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics continue } + key, keyMarks := key.Unmark() + marks = append(marks, keyMarks) + var err error key, err = convert.Convert(key, cty.String) if err != nil { @@ -850,7 +858,7 @@ func (e *ObjectConsExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics return cty.DynamicVal, diags } - return cty.ObjectVal(vals), diags + return cty.ObjectVal(vals).WithMarks(marks...), diags } func (e *ObjectConsExpr) Range() hcl.Range { @@ -980,6 +988,7 @@ type ForExpr struct { func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { var diags hcl.Diagnostics + var marks []cty.ValueMarks collVal, collDiags := e.CollExpr.Value(ctx) diags = append(diags, collDiags...) @@ -1001,7 +1010,8 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { } // Unmark collection before checking for iterability, because marked // values cannot be iterated - collVal, marks := collVal.Unmark() + collVal, collMarks := collVal.Unmark() + marks = append(marks, collMarks) if !collVal.CanIterateElements() { diags = append(diags, &hcl.Diagnostic{ Severity: hcl.DiagError, @@ -1126,7 +1136,11 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { continue } - if include.False() { + // Extract and merge marks from the include expression into the + // main set of marks + includeUnmarked, includeMarks := include.Unmark() + marks = append(marks, includeMarks) + if includeUnmarked.False() { // Skip this element continue } @@ -1171,6 +1185,9 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { continue } + key, keyMarks := key.Unmark() + marks = append(marks, keyMarks) + val, valDiags := e.ValExpr.Value(childCtx) diags = append(diags, valDiags...) @@ -1209,7 +1226,7 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { } } - return cty.ObjectVal(vals).WithMarks(marks), diags + return cty.ObjectVal(vals).WithMarks(marks...), diags } else { // Producing a tuple @@ -1270,7 +1287,11 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { continue } - if include.False() { + // Extract and merge marks from the include expression into the + // main set of marks + includeUnmarked, includeMarks := include.Unmark() + marks = append(marks, includeMarks) + if includeUnmarked.False() { // Skip this element continue } @@ -1285,7 +1306,7 @@ func (e *ForExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { return cty.DynamicVal, diags } - return cty.TupleVal(vals).WithMarks(marks), diags + return cty.TupleVal(vals).WithMarks(marks...), diags } } @@ -1422,6 +1443,9 @@ func (e *SplatExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { return cty.UnknownVal(ty), diags } + // Unmark the collection, and save the marks to apply to the returned + // collection result + sourceVal, marks := sourceVal.Unmark() vals := make([]cty.Value, 0, sourceVal.LengthInt()) it := sourceVal.ElementIterator() if ctx == nil { @@ -1456,9 +1480,9 @@ func (e *SplatExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) { diags = append(diags, tyDiags...) return cty.ListValEmpty(ty.ElementType()), diags } - return cty.ListVal(vals), diags + return cty.ListVal(vals).WithMarks(marks), diags default: - return cty.TupleVal(vals), diags + return cty.TupleVal(vals).WithMarks(marks), diags } } diff --git a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression_template.go b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression_template.go index ff9a6e5c6..0b7e07a5b 100644 --- a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression_template.go +++ b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/expression_template.go @@ -152,6 +152,8 @@ func (e *TemplateJoinExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnosti return cty.UnknownVal(cty.String), diags } + tuple, marks := tuple.Unmark() + allMarks := []cty.ValueMarks{marks} buf := &bytes.Buffer{} it := tuple.ElementIterator() for it.Next() { @@ -171,7 +173,7 @@ func (e *TemplateJoinExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnosti continue } if val.Type() == cty.DynamicPseudoType { - return cty.UnknownVal(cty.String), diags + return cty.UnknownVal(cty.String).WithMarks(marks), diags } strVal, err := convert.Convert(val, cty.String) if err != nil { @@ -189,13 +191,17 @@ func (e *TemplateJoinExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnosti continue } if !val.IsKnown() { - return cty.UnknownVal(cty.String), diags + return cty.UnknownVal(cty.String).WithMarks(marks), diags } + strVal, strValMarks := strVal.Unmark() + if len(strValMarks) > 0 { + allMarks = append(allMarks, strValMarks) + } buf.WriteString(strVal.AsString()) } - return cty.StringVal(buf.String()), diags + return cty.StringVal(buf.String()).WithMarks(allMarks...), diags } func (e *TemplateJoinExpr) Range() hcl.Range { diff --git a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser.go b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser.go index 0998cc412..eef13aaf4 100644 --- a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser.go +++ b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser.go @@ -6,7 +6,7 @@ import ( "strconv" "unicode/utf8" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/hashicorp/hcl/v2" "github.com/zclconf/go-cty/cty" ) diff --git a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser_template.go b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser_template.go index bb8564610..6b7e6ca4b 100644 --- a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser_template.go +++ b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/parser_template.go @@ -5,7 +5,7 @@ import ( "strings" "unicode" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/hashicorp/hcl/v2" "github.com/zclconf/go-cty/cty" ) diff --git a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/token.go b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/token.go index 59f4c4347..f4c6c9342 100644 --- a/vendor/github.com/hashicorp/hcl/v2/hclsyntax/token.go +++ b/vendor/github.com/hashicorp/hcl/v2/hclsyntax/token.go @@ -4,7 +4,7 @@ import ( "bytes" "fmt" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/hashicorp/hcl/v2" ) diff --git a/vendor/github.com/hashicorp/hcl/v2/hclwrite/tokens.go b/vendor/github.com/hashicorp/hcl/v2/hclwrite/tokens.go index 7d21d09dd..edb6483de 100644 --- a/vendor/github.com/hashicorp/hcl/v2/hclwrite/tokens.go +++ b/vendor/github.com/hashicorp/hcl/v2/hclwrite/tokens.go @@ -4,7 +4,7 @@ import ( "bytes" "io" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hclsyntax" ) diff --git a/vendor/github.com/hashicorp/hcl/v2/json/scanner.go b/vendor/github.com/hashicorp/hcl/v2/json/scanner.go index ff78a9b58..b7111631b 100644 --- a/vendor/github.com/hashicorp/hcl/v2/json/scanner.go +++ b/vendor/github.com/hashicorp/hcl/v2/json/scanner.go @@ -3,7 +3,7 @@ package json import ( "fmt" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/hashicorp/hcl/v2" ) diff --git a/vendor/github.com/hashicorp/hcl/v2/ops.go b/vendor/github.com/hashicorp/hcl/v2/ops.go index f69de5b93..597571d52 100644 --- a/vendor/github.com/hashicorp/hcl/v2/ops.go +++ b/vendor/github.com/hashicorp/hcl/v2/ops.go @@ -95,6 +95,7 @@ func Index(collection, key cty.Value, srcRange *Range) (cty.Value, Diagnostics) // division rather than integer division. if (ty.IsListType() || ty.IsTupleType()) && key.Type().Equals(cty.Number) { if key.IsKnown() && !key.IsNull() { + key, _ := key.Unmark() bf := key.AsBigFloat() if _, acc := bf.Int(nil); acc != big.Exact { return cty.DynamicVal, Diagnostics{ @@ -143,6 +144,7 @@ func Index(collection, key cty.Value, srcRange *Range) (cty.Value, Diagnostics) return cty.DynamicVal, nil } + key, _ = key.Unmark() attrName := key.AsString() if !ty.HasAttribute(attrName) { diff --git a/vendor/github.com/hashicorp/hcl/v2/pos_scanner.go b/vendor/github.com/hashicorp/hcl/v2/pos_scanner.go index ef0aa1015..49077fc52 100644 --- a/vendor/github.com/hashicorp/hcl/v2/pos_scanner.go +++ b/vendor/github.com/hashicorp/hcl/v2/pos_scanner.go @@ -4,7 +4,7 @@ import ( "bufio" "bytes" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" ) // RangeScanner is a helper that will scan over a buffer using a bufio.SplitFunc diff --git a/vendor/github.com/hashicorp/packer-plugin-amazon/LICENSE b/vendor/github.com/hashicorp/packer-plugin-amazon/LICENSE new file mode 100644 index 000000000..a612ad981 --- /dev/null +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/builder/amazon/chroot/builder.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/builder.go similarity index 99% rename from builder/amazon/chroot/builder.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/builder.go index afae29446..a679dbaa8 100644 --- a/builder/amazon/chroot/builder.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/builder.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/chroot" "github.com/hashicorp/packer-plugin-sdk/common" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -23,7 +24,6 @@ import ( "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // The unique ID for this builder diff --git a/builder/amazon/chroot/builder.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/builder.hcl2spec.go similarity index 99% rename from builder/amazon/chroot/builder.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/builder.hcl2spec.go index f00c35e65..aaeaffb05 100644 --- a/builder/amazon/chroot/builder.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/builder.hcl2spec.go @@ -4,8 +4,8 @@ package chroot import ( "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer/builder/amazon/common" "github.com/zclconf/go-cty/cty" ) diff --git a/builder/amazon/chroot/copy_files.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/copy_files.go similarity index 100% rename from builder/amazon/chroot/copy_files.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/copy_files.go diff --git a/builder/amazon/chroot/device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/device.go similarity index 100% rename from builder/amazon/chroot/device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/device.go diff --git a/builder/amazon/chroot/lockfile.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/lockfile.go similarity index 100% rename from builder/amazon/chroot/lockfile.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/lockfile.go diff --git a/builder/amazon/chroot/lockfile_unix.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/lockfile_unix.go similarity index 100% rename from builder/amazon/chroot/lockfile_unix.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/lockfile_unix.go diff --git a/builder/amazon/chroot/step_attach_volume.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_attach_volume.go similarity index 97% rename from builder/amazon/chroot/step_attach_volume.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_attach_volume.go index 5c45251a9..cb0223efd 100644 --- a/builder/amazon/chroot/step_attach_volume.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_attach_volume.go @@ -7,9 +7,9 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // StepAttachVolume attaches the previously created volume to an diff --git a/builder/amazon/chroot/step_check_root_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_check_root_device.go similarity index 100% rename from builder/amazon/chroot/step_check_root_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_check_root_device.go diff --git a/builder/amazon/chroot/step_create_volume.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_create_volume.go similarity index 98% rename from builder/amazon/chroot/step_create_volume.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_create_volume.go index c7bb056a3..b99636c19 100644 --- a/builder/amazon/chroot/step_create_volume.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_create_volume.go @@ -8,11 +8,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // StepCreateVolume creates a new volume from the snapshot of the root diff --git a/builder/amazon/chroot/step_early_unflock.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_early_unflock.go similarity index 100% rename from builder/amazon/chroot/step_early_unflock.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_early_unflock.go diff --git a/builder/amazon/chroot/step_flock.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_flock.go similarity index 100% rename from builder/amazon/chroot/step_flock.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_flock.go diff --git a/builder/amazon/chroot/step_instance_info.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_instance_info.go similarity index 100% rename from builder/amazon/chroot/step_instance_info.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_instance_info.go diff --git a/builder/amazon/chroot/step_mount_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_mount_device.go similarity index 100% rename from builder/amazon/chroot/step_mount_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_mount_device.go diff --git a/builder/amazon/chroot/step_prepare_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_prepare_device.go similarity index 100% rename from builder/amazon/chroot/step_prepare_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_prepare_device.go diff --git a/builder/amazon/chroot/step_register_ami.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_register_ami.go similarity index 98% rename from builder/amazon/chroot/step_register_ami.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_register_ami.go index 5c1e9b019..686971d43 100644 --- a/builder/amazon/chroot/step_register_ami.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_register_ami.go @@ -6,11 +6,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/random" confighelper "github.com/hashicorp/packer-plugin-sdk/template/config" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // StepRegisterAMI creates the AMI. diff --git a/builder/amazon/chroot/step_snapshot.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_snapshot.go similarity index 96% rename from builder/amazon/chroot/step_snapshot.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_snapshot.go index 3492f5f02..4f39f2ffd 100644 --- a/builder/amazon/chroot/step_snapshot.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/chroot/step_snapshot.go @@ -6,9 +6,9 @@ import ( "time" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // StepSnapshot creates a snapshot of the created volume. diff --git a/builder/amazon/common/access_config.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/access_config.go similarity index 99% rename from builder/amazon/common/access_config.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/access_config.go index 9d6dfb459..1c5df701d 100644 --- a/builder/amazon/common/access_config.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/access_config.go @@ -17,7 +17,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2/ec2iface" awsbase "github.com/hashicorp/aws-sdk-go-base" cleanhttp "github.com/hashicorp/go-cleanhttp" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" vaultapi "github.com/hashicorp/vault/api" ) diff --git a/builder/amazon/common/access_config.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/access_config.hcl2spec.go similarity index 100% rename from builder/amazon/common/access_config.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/access_config.hcl2spec.go diff --git a/builder/amazon/common/ami_config.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ami_config.go similarity index 100% rename from builder/amazon/common/ami_config.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ami_config.go diff --git a/builder/amazon/common/ami_filter.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ami_filter.go similarity index 100% rename from builder/amazon/common/ami_filter.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ami_filter.go diff --git a/builder/amazon/common/artifact.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/artifact.go similarity index 100% rename from builder/amazon/common/artifact.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/artifact.go diff --git a/builder/amazon/common/awserrors/utils.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors/utils.go similarity index 100% rename from builder/amazon/common/awserrors/utils.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors/utils.go diff --git a/builder/amazon/common/block_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/block_device.go similarity index 100% rename from builder/amazon/common/block_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/block_device.go diff --git a/builder/amazon/common/block_device.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/block_device.hcl2spec.go similarity index 100% rename from builder/amazon/common/block_device.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/block_device.hcl2spec.go diff --git a/builder/amazon/common/build_filter.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/build_filter.go similarity index 100% rename from builder/amazon/common/build_filter.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/build_filter.go diff --git a/builder/amazon/common/errors.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/errors.go similarity index 100% rename from builder/amazon/common/errors.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/errors.go diff --git a/builder/amazon/common/helper_funcs.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/helper_funcs.go similarity index 96% rename from builder/amazon/common/helper_funcs.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/helper_funcs.go index 6bdaa2313..b80d67c5a 100644 --- a/builder/amazon/common/helper_funcs.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/helper_funcs.go @@ -8,8 +8,8 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/retry" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) // DestroyAMIs deregisters the AWS machine images in imageids from an active AWS account diff --git a/builder/amazon/common/interpolate_build_info.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/interpolate_build_info.go similarity index 100% rename from builder/amazon/common/interpolate_build_info.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/interpolate_build_info.go diff --git a/builder/amazon/common/regions.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/regions.go similarity index 100% rename from builder/amazon/common/regions.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/regions.go diff --git a/builder/amazon/common/run_config.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/run_config.go similarity index 100% rename from builder/amazon/common/run_config.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/run_config.go diff --git a/builder/amazon/common/run_config.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/run_config.hcl2spec.go similarity index 100% rename from builder/amazon/common/run_config.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/run_config.hcl2spec.go diff --git a/builder/amazon/common/snapshot_config.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/snapshot_config.go similarity index 100% rename from builder/amazon/common/snapshot_config.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/snapshot_config.go diff --git a/builder/amazon/common/ssh.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ssh.go similarity index 100% rename from builder/amazon/common/ssh.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ssh.go diff --git a/builder/amazon/common/ssm/session.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ssm/session.go similarity index 98% rename from builder/amazon/common/ssm/session.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ssm/session.go index 7eee759fb..146d54647 100644 --- a/builder/amazon/common/ssm/session.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/ssm/session.go @@ -12,10 +12,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ssm" "github.com/aws/aws-sdk-go/service/ssm/ssmiface" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/retry" "github.com/hashicorp/packer-plugin-sdk/shell-local/localexec" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) type Session struct { diff --git a/builder/amazon/common/state.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/state.go similarity index 100% rename from builder/amazon/common/state.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/state.go diff --git a/builder/amazon/common/state.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/state.hcl2spec.go similarity index 100% rename from builder/amazon/common/state.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/state.hcl2spec.go diff --git a/builder/amazon/common/step_ami_region_copy.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_ami_region_copy.go similarity index 100% rename from builder/amazon/common/step_ami_region_copy.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_ami_region_copy.go diff --git a/builder/amazon/common/step_cleanup_volumes.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_cleanup_volumes.go similarity index 100% rename from builder/amazon/common/step_cleanup_volumes.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_cleanup_volumes.go diff --git a/builder/amazon/common/step_create_ssm_tunnel.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_create_ssm_tunnel.go similarity index 97% rename from builder/amazon/common/step_create_ssm_tunnel.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_create_ssm_tunnel.go index eda61cb02..5022e1583 100644 --- a/builder/amazon/common/step_create_ssm_tunnel.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_create_ssm_tunnel.go @@ -9,10 +9,10 @@ import ( "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ssm" + pssm "github.com/hashicorp/packer-plugin-amazon/builder/common/ssm" "github.com/hashicorp/packer-plugin-sdk/multistep" "github.com/hashicorp/packer-plugin-sdk/net" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - pssm "github.com/hashicorp/packer/builder/amazon/common/ssm" ) type StepCreateSSMTunnel struct { diff --git a/builder/amazon/common/step_create_tags.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_create_tags.go similarity index 98% rename from builder/amazon/common/step_create_tags.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_create_tags.go index f04cc829a..ccb3a9352 100644 --- a/builder/amazon/common/step_create_tags.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_create_tags.go @@ -8,11 +8,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/retry" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) type StepCreateTags struct { diff --git a/builder/amazon/common/step_deregister_ami.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_deregister_ami.go similarity index 100% rename from builder/amazon/common/step_deregister_ami.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_deregister_ami.go diff --git a/builder/amazon/common/step_get_password.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_get_password.go similarity index 100% rename from builder/amazon/common/step_get_password.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_get_password.go diff --git a/builder/amazon/common/step_iam_instance_profile.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_iam_instance_profile.go similarity index 100% rename from builder/amazon/common/step_iam_instance_profile.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_iam_instance_profile.go diff --git a/builder/amazon/common/step_key_pair.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_key_pair.go similarity index 100% rename from builder/amazon/common/step_key_pair.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_key_pair.go diff --git a/builder/amazon/common/step_modify_ami_attributes.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_modify_ami_attributes.go similarity index 100% rename from builder/amazon/common/step_modify_ami_attributes.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_modify_ami_attributes.go diff --git a/builder/amazon/common/step_modify_ebs_instance.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_modify_ebs_instance.go similarity index 100% rename from builder/amazon/common/step_modify_ebs_instance.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_modify_ebs_instance.go diff --git a/builder/amazon/common/step_network_info.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_network_info.go similarity index 100% rename from builder/amazon/common/step_network_info.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_network_info.go diff --git a/builder/amazon/common/step_pre_validate.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_pre_validate.go similarity index 98% rename from builder/amazon/common/step_pre_validate.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_pre_validate.go index 97871bea8..a8a18089c 100644 --- a/builder/amazon/common/step_pre_validate.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_pre_validate.go @@ -9,10 +9,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/retry" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) // StepPreValidate provides an opportunity to pre-validate any configuration for diff --git a/builder/amazon/common/step_run_source_instance.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_run_source_instance.go similarity index 99% rename from builder/amazon/common/step_run_source_instance.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_run_source_instance.go index 3874217e5..98c014c79 100644 --- a/builder/amazon/common/step_run_source_instance.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_run_source_instance.go @@ -11,12 +11,12 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/retry" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) type StepRunSourceInstance struct { diff --git a/builder/amazon/common/step_run_spot_instance.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_run_spot_instance.go similarity index 99% rename from builder/amazon/common/step_run_spot_instance.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_run_spot_instance.go index 3d93f854a..bba59ad84 100644 --- a/builder/amazon/common/step_run_spot_instance.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_run_spot_instance.go @@ -12,13 +12,13 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/random" "github.com/hashicorp/packer-plugin-sdk/retry" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) type EC2BlockDeviceMappingsBuilder interface { diff --git a/builder/amazon/common/step_security_group.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_security_group.go similarity index 100% rename from builder/amazon/common/step_security_group.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_security_group.go diff --git a/builder/amazon/common/step_set_generated_data.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_set_generated_data.go similarity index 100% rename from builder/amazon/common/step_set_generated_data.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_set_generated_data.go diff --git a/builder/amazon/common/step_source_ami_info.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_source_ami_info.go similarity index 100% rename from builder/amazon/common/step_source_ami_info.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_source_ami_info.go diff --git a/builder/amazon/common/step_stop_ebs_instance.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_stop_ebs_instance.go similarity index 97% rename from builder/amazon/common/step_stop_ebs_instance.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_stop_ebs_instance.go index f907916b1..317ffce5b 100644 --- a/builder/amazon/common/step_stop_ebs_instance.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/step_stop_ebs_instance.go @@ -6,10 +6,10 @@ import ( "time" "github.com/aws/aws-sdk-go/service/ec2" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/retry" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) type StepStopEBSBackedInstance struct { diff --git a/builder/amazon/common/tags.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/tags.go similarity index 100% rename from builder/amazon/common/tags.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/tags.go diff --git a/builder/amazon/common/template_funcs.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/template_funcs.go similarity index 100% rename from builder/amazon/common/template_funcs.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/template_funcs.go diff --git a/builder/amazon/common/test_helper_funcs.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/test_helper_funcs.go similarity index 100% rename from builder/amazon/common/test_helper_funcs.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/common/test_helper_funcs.go diff --git a/builder/amazon/ebs/builder.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/builder.go similarity index 99% rename from builder/amazon/ebs/builder.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/builder.go index 1d895ffde..d7dcc0011 100644 --- a/builder/amazon/ebs/builder.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/builder.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/iam" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/common" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -23,7 +24,6 @@ import ( "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // The unique ID for this builder diff --git a/builder/amazon/ebs/builder.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/builder.hcl2spec.go similarity index 99% rename from builder/amazon/ebs/builder.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/builder.hcl2spec.go index 18a8a1ba2..669efcfaf 100644 --- a/builder/amazon/ebs/builder.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/builder.hcl2spec.go @@ -4,8 +4,8 @@ package ebs import ( "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer/builder/amazon/common" "github.com/zclconf/go-cty/cty" ) diff --git a/builder/amazon/ebs/step_create_ami.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/step_create_ami.go similarity index 97% rename from builder/amazon/ebs/step_create_ami.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/step_create_ami.go index 5a6f87f91..770016a79 100644 --- a/builder/amazon/ebs/step_create_ami.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebs/step_create_ami.go @@ -8,12 +8,12 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/random" "github.com/hashicorp/packer-plugin-sdk/retry" - awscommon "github.com/hashicorp/packer/builder/amazon/common" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" ) type stepCreateAMI struct { diff --git a/builder/amazon/ebssurrogate/block_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/block_device.go similarity index 95% rename from builder/amazon/ebssurrogate/block_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/block_device.go index b39510940..5f8e428e6 100644 --- a/builder/amazon/ebssurrogate/block_device.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/block_device.go @@ -4,8 +4,8 @@ package ebssurrogate import ( "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) type BlockDevice struct { diff --git a/builder/amazon/ebssurrogate/builder.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/builder.go similarity index 99% rename from builder/amazon/ebssurrogate/builder.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/builder.go index 356f14c50..0afa84e70 100644 --- a/builder/amazon/ebssurrogate/builder.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/builder.go @@ -13,6 +13,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/iam" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/common" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -21,7 +22,6 @@ import ( "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) const BuilderId = "mitchellh.amazon.ebssurrogate" diff --git a/builder/amazon/ebssurrogate/builder.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/builder.hcl2spec.go similarity index 99% rename from builder/amazon/ebssurrogate/builder.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/builder.hcl2spec.go index e837458c5..8ac906f22 100644 --- a/builder/amazon/ebssurrogate/builder.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/builder.hcl2spec.go @@ -4,8 +4,8 @@ package ebssurrogate import ( "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer/builder/amazon/common" "github.com/zclconf/go-cty/cty" ) diff --git a/builder/amazon/ebssurrogate/root_block_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/root_block_device.go similarity index 100% rename from builder/amazon/ebssurrogate/root_block_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/root_block_device.go diff --git a/builder/amazon/ebssurrogate/step_register_ami.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/step_register_ami.go similarity index 98% rename from builder/amazon/ebssurrogate/step_register_ami.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/step_register_ami.go index b3e0c2c83..72ad973dd 100644 --- a/builder/amazon/ebssurrogate/step_register_ami.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/step_register_ami.go @@ -6,11 +6,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/random" confighelper "github.com/hashicorp/packer-plugin-sdk/template/config" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // StepRegisterAMI creates the AMI. diff --git a/builder/amazon/ebssurrogate/step_snapshot_volumes.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/step_snapshot_volumes.go similarity index 98% rename from builder/amazon/ebssurrogate/step_snapshot_volumes.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/step_snapshot_volumes.go index 825e0bb8d..fba4ac444 100644 --- a/builder/amazon/ebssurrogate/step_snapshot_volumes.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate/step_snapshot_volumes.go @@ -9,10 +9,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" multierror "github.com/hashicorp/go-multierror" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // StepSnapshotVolumes creates snapshots of the created volumes. diff --git a/builder/amazon/ebsvolume/artifact.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/artifact.go similarity index 100% rename from builder/amazon/ebsvolume/artifact.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/artifact.go diff --git a/builder/amazon/ebsvolume/block_device.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/block_device.go similarity index 96% rename from builder/amazon/ebsvolume/block_device.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/block_device.go index 042af8cf7..19ebb4b4c 100644 --- a/builder/amazon/ebsvolume/block_device.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/block_device.go @@ -4,9 +4,9 @@ package ebsvolume import ( "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) type BlockDevice struct { diff --git a/builder/amazon/ebsvolume/builder.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/builder.go similarity index 99% rename from builder/amazon/ebsvolume/builder.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/builder.go index 25a24fb39..88c874a06 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/builder.go @@ -12,6 +12,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/iam" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/common" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -20,7 +21,6 @@ import ( "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) const BuilderId = "mitchellh.amazon.ebsvolume" diff --git a/builder/amazon/ebsvolume/builder.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/builder.hcl2spec.go similarity index 99% rename from builder/amazon/ebsvolume/builder.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/builder.hcl2spec.go index 7ff6a2a82..e11af8940 100644 --- a/builder/amazon/ebsvolume/builder.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/builder.hcl2spec.go @@ -4,8 +4,8 @@ package ebsvolume import ( "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer/builder/amazon/common" "github.com/zclconf/go-cty/cty" ) diff --git a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/step_snapshot_ebs_volumes.go similarity index 98% rename from builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/step_snapshot_ebs_volumes.go index 4b3408241..80810e573 100644 --- a/builder/amazon/ebsvolume/step_snapshot_ebs_volumes.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/step_snapshot_ebs_volumes.go @@ -7,10 +7,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) type stepSnapshotEBSVolumes struct { diff --git a/builder/amazon/ebsvolume/step_tag_ebs_volumes.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/step_tag_ebs_volumes.go similarity index 98% rename from builder/amazon/ebsvolume/step_tag_ebs_volumes.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/step_tag_ebs_volumes.go index 56770a303..a73f89286 100644 --- a/builder/amazon/ebsvolume/step_tag_ebs_volumes.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume/step_tag_ebs_volumes.go @@ -7,10 +7,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) type stepTagEBSVolumes struct { diff --git a/builder/amazon/instance/builder.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/builder.go similarity index 99% rename from builder/amazon/instance/builder.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/builder.go index 373051585..282681276 100644 --- a/builder/amazon/instance/builder.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/builder.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/iam" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/common" "github.com/hashicorp/packer-plugin-sdk/communicator" "github.com/hashicorp/packer-plugin-sdk/multistep" @@ -23,7 +24,6 @@ import ( "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) // The unique ID for this builder diff --git a/builder/amazon/instance/builder.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/builder.hcl2spec.go similarity index 99% rename from builder/amazon/instance/builder.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/builder.hcl2spec.go index cc23f639d..f0cac96c2 100644 --- a/builder/amazon/instance/builder.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/builder.hcl2spec.go @@ -4,8 +4,8 @@ package instance import ( "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/template/config" - "github.com/hashicorp/packer/builder/amazon/common" "github.com/zclconf/go-cty/cty" ) diff --git a/builder/amazon/instance/step_bundle_volume.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_bundle_volume.go similarity index 100% rename from builder/amazon/instance/step_bundle_volume.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_bundle_volume.go diff --git a/builder/amazon/instance/step_register_ami.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_register_ami.go similarity index 97% rename from builder/amazon/instance/step_register_ami.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_register_ami.go index 1d90ca0ea..dfce60607 100644 --- a/builder/amazon/instance/step_register_ami.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_register_ami.go @@ -6,11 +6,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/multistep" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/random" confighelper "github.com/hashicorp/packer-plugin-sdk/template/config" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) type StepRegisterAMI struct { diff --git a/builder/amazon/instance/step_upload_bundle.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_upload_bundle.go similarity index 100% rename from builder/amazon/instance/step_upload_bundle.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_upload_bundle.go diff --git a/builder/amazon/instance/step_upload_x509_cert.go b/vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_upload_x509_cert.go similarity index 100% rename from builder/amazon/instance/step_upload_x509_cert.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/builder/instance/step_upload_x509_cert.go diff --git a/datasource/amazon/ami/data.go b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/ami/data.go similarity index 97% rename from datasource/amazon/ami/data.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/datasource/ami/data.go index 11f7563b4..c4b2c280c 100644 --- a/datasource/amazon/ami/data.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/ami/data.go @@ -8,10 +8,10 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/hcl2helper" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" - awscommon "github.com/hashicorp/packer/builder/amazon/common" "github.com/zclconf/go-cty/cty" ) diff --git a/datasource/amazon/ami/data.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/ami/data.hcl2spec.go similarity index 99% rename from datasource/amazon/ami/data.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/datasource/ami/data.hcl2spec.go index 5560d2a66..525860bb6 100644 --- a/datasource/amazon/ami/data.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/ami/data.hcl2spec.go @@ -4,7 +4,7 @@ package ami import ( "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer/builder/amazon/common" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/zclconf/go-cty/cty" ) diff --git a/datasource/amazon/secretsmanager/data.go b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager/data.go similarity index 97% rename from datasource/amazon/secretsmanager/data.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager/data.go index e28ff4b8f..fd31e2a7b 100644 --- a/datasource/amazon/secretsmanager/data.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager/data.go @@ -10,11 +10,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/secretsmanager" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" + "github.com/hashicorp/packer-plugin-amazon/builder/common/awserrors" "github.com/hashicorp/packer-plugin-sdk/hcl2helper" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template/config" - awscommon "github.com/hashicorp/packer/builder/amazon/common" - "github.com/hashicorp/packer/builder/amazon/common/awserrors" "github.com/zclconf/go-cty/cty" ) diff --git a/datasource/amazon/secretsmanager/data.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager/data.hcl2spec.go similarity index 99% rename from datasource/amazon/secretsmanager/data.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager/data.hcl2spec.go index 6100a97bb..9aafdc283 100644 --- a/datasource/amazon/secretsmanager/data.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager/data.hcl2spec.go @@ -4,7 +4,7 @@ package secretsmanager import ( "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer/builder/amazon/common" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/zclconf/go-cty/cty" ) diff --git a/post-processor/amazon-import/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import/post-processor.go similarity index 99% rename from post-processor/amazon-import/post-processor.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import/post-processor.go index 30a8e1c90..139bd1547 100644 --- a/post-processor/amazon-import/post-processor.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import/post-processor.go @@ -15,12 +15,12 @@ import ( "github.com/aws/aws-sdk-go/service/s3" "github.com/aws/aws-sdk-go/service/s3/s3manager" "github.com/hashicorp/hcl/v2/hcldec" + awscommon "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/hashicorp/packer-plugin-sdk/common" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/retry" "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" - awscommon "github.com/hashicorp/packer/builder/amazon/common" ) const BuilderId = "packer.post-processor.amazon-import" diff --git a/post-processor/amazon-import/post-processor.hcl2spec.go b/vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import/post-processor.hcl2spec.go similarity index 99% rename from post-processor/amazon-import/post-processor.hcl2spec.go rename to vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import/post-processor.hcl2spec.go index f8ae6ad76..084da4ac4 100644 --- a/post-processor/amazon-import/post-processor.hcl2spec.go +++ b/vendor/github.com/hashicorp/packer-plugin-amazon/post-processor/import/post-processor.hcl2spec.go @@ -4,7 +4,7 @@ package amazonimport import ( "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/packer/builder/amazon/common" + "github.com/hashicorp/packer-plugin-amazon/builder/common" "github.com/zclconf/go-cty/cty" ) diff --git a/vendor/github.com/zclconf/go-cty/cty/convert/conversion.go b/vendor/github.com/zclconf/go-cty/cty/convert/conversion.go index 8d177f151..ededc5f37 100644 --- a/vendor/github.com/zclconf/go-cty/cty/convert/conversion.go +++ b/vendor/github.com/zclconf/go-cty/cty/convert/conversion.go @@ -33,14 +33,25 @@ func getConversion(in cty.Type, out cty.Type, unsafe bool) conversion { // Conversion to DynamicPseudoType always just passes through verbatim. return in, nil } - if !in.IsKnown() { - return cty.UnknownVal(out), nil - } - if in.IsNull() { - // We'll pass through nulls, albeit type converted, and let - // the caller deal with whatever handling they want to do in - // case null values are considered valid in some applications. - return cty.NullVal(out), nil + if isKnown, isNull := in.IsKnown(), in.IsNull(); !isKnown || isNull { + // Avoid constructing unknown or null values with types which + // include optional attributes. Known or non-null object values + // will be passed to a conversion function which drops the optional + // attributes from the type. Unknown and null pass through values + // must do the same to ensure that homogeneous collections have a + // single element type. + out = out.WithoutOptionalAttributesDeep() + + if !isKnown { + return cty.UnknownVal(out), nil + } + + if isNull { + // We'll pass through nulls, albeit type converted, and let + // the caller deal with whatever handling they want to do in + // case null values are considered valid in some applications. + return cty.NullVal(out), nil + } } return conv(in, path) diff --git a/vendor/github.com/zclconf/go-cty/cty/convert/conversion_collection.go b/vendor/github.com/zclconf/go-cty/cty/convert/conversion_collection.go index 2207df9e4..e70b0184c 100644 --- a/vendor/github.com/zclconf/go-cty/cty/convert/conversion_collection.go +++ b/vendor/github.com/zclconf/go-cty/cty/convert/conversion_collection.go @@ -45,12 +45,18 @@ func conversionCollectionToList(ety cty.Type, conv conversion) conversion { } if len(elems) == 0 { + // Prefer a concrete type over a dynamic type when returning an + // empty list if ety == cty.DynamicPseudoType { - ety = val.Type().ElementType() + return cty.ListValEmpty(val.Type().ElementType()), nil } return cty.ListValEmpty(ety), nil } + if !cty.CanListVal(elems) { + return cty.NilVal, path.NewErrorf("element types must all match for conversion to list") + } + return cty.ListVal(elems), nil } } @@ -91,11 +97,15 @@ func conversionCollectionToSet(ety cty.Type, conv conversion) conversion { // Prefer a concrete type over a dynamic type when returning an // empty set if ety == cty.DynamicPseudoType { - ety = val.Type().ElementType() + return cty.SetValEmpty(val.Type().ElementType()), nil } return cty.SetValEmpty(ety), nil } + if !cty.CanSetVal(elems) { + return cty.NilVal, path.NewErrorf("element types must all match for conversion to set") + } + return cty.SetVal(elems), nil } } @@ -140,7 +150,7 @@ func conversionCollectionToMap(ety cty.Type, conv conversion) conversion { // Prefer a concrete type over a dynamic type when returning an // empty map if ety == cty.DynamicPseudoType { - ety = val.Type().ElementType() + return cty.MapValEmpty(val.Type().ElementType()), nil } return cty.MapValEmpty(ety), nil } @@ -152,8 +162,8 @@ func conversionCollectionToMap(ety cty.Type, conv conversion) conversion { } } - if err := conversionCheckMapElementTypes(elems, path); err != nil { - return cty.NilVal, err + if !cty.CanMapVal(elems) { + return cty.NilVal, path.NewErrorf("element types must all match for conversion to map") } return cty.MapVal(elems), nil @@ -237,6 +247,10 @@ func conversionTupleToSet(tupleType cty.Type, setEty cty.Type, unsafe bool) conv i++ } + if !cty.CanSetVal(elems) { + return cty.NilVal, path.NewErrorf("element types must all match for conversion to set") + } + return cty.SetVal(elems), nil } } @@ -324,6 +338,11 @@ func conversionTupleToList(tupleType cty.Type, listEty cty.Type, unsafe bool) co if err != nil { return cty.NilVal, err } + + if !cty.CanListVal(elems) { + return cty.NilVal, path.NewErrorf("element types must all match for conversion to list") + } + return cty.ListVal(elems), nil } } @@ -402,8 +421,8 @@ func conversionObjectToMap(objectType cty.Type, mapEty cty.Type, unsafe bool) co } } - if err := conversionCheckMapElementTypes(elems, path); err != nil { - return cty.NilVal, err + if !cty.CanMapVal(elems) { + return cty.NilVal, path.NewErrorf("attribute types must all match for conversion to map") } return cty.MapVal(elems), nil @@ -487,7 +506,7 @@ func conversionUnifyCollectionElements(elems map[string]cty.Value, path cty.Path } unifiedType, _ := unify(elemTypes, unsafe) if unifiedType == cty.NilType { - return nil, path.NewErrorf("collection elements cannot be unified") + return nil, path.NewErrorf("cannot find a common base type for all elements") } unifiedElems := make(map[string]cty.Value) @@ -514,26 +533,6 @@ func conversionUnifyCollectionElements(elems map[string]cty.Value, path cty.Path return unifiedElems, nil } -func conversionCheckMapElementTypes(elems map[string]cty.Value, path cty.Path) error { - elementType := cty.NilType - elemPath := append(path.Copy(), nil) - - for name, elem := range elems { - if elementType == cty.NilType { - elementType = elem.Type() - continue - } - if !elementType.Equals(elem.Type()) { - elemPath[len(elemPath)-1] = cty.IndexStep{ - Key: cty.StringVal(name), - } - return elemPath.NewErrorf("%s is required", elementType.FriendlyName()) - } - } - - return nil -} - func conversionUnifyListElements(elems []cty.Value, path cty.Path, unsafe bool) ([]cty.Value, error) { elemTypes := make([]cty.Type, len(elems)) for i, elem := range elems { @@ -541,7 +540,7 @@ func conversionUnifyListElements(elems []cty.Value, path cty.Path, unsafe bool) } unifiedType, _ := unify(elemTypes, unsafe) if unifiedType == cty.NilType { - return nil, path.NewErrorf("collection elements cannot be unified") + return nil, path.NewErrorf("cannot find a common base type for all elements") } ret := make([]cty.Value, len(elems)) diff --git a/vendor/github.com/zclconf/go-cty/cty/convert/mismatch_msg.go b/vendor/github.com/zclconf/go-cty/cty/convert/mismatch_msg.go index 0bd0cffa1..5c1e114d9 100644 --- a/vendor/github.com/zclconf/go-cty/cty/convert/mismatch_msg.go +++ b/vendor/github.com/zclconf/go-cty/cty/convert/mismatch_msg.go @@ -84,6 +84,10 @@ func mismatchMessageObjects(got, want cty.Type) string { continue } + if gotAty.Equals(wantAty) { + continue // exact match, so no problem + } + // We'll now try to convert these attributes in isolation and // see if we have a nested conversion error to report. // We'll try an unsafe conversion first, and then fall back on diff --git a/vendor/github.com/zclconf/go-cty/cty/convert/unify.go b/vendor/github.com/zclconf/go-cty/cty/convert/unify.go index ee171d1ed..144acd851 100644 --- a/vendor/github.com/zclconf/go-cty/cty/convert/unify.go +++ b/vendor/github.com/zclconf/go-cty/cty/convert/unify.go @@ -29,6 +29,8 @@ func unify(types []cty.Type, unsafe bool) (cty.Type, []Conversion) { // unification purposes. { mapCt := 0 + listCt := 0 + setCt := 0 objectCt := 0 tupleCt := 0 dynamicCt := 0 @@ -36,6 +38,10 @@ func unify(types []cty.Type, unsafe bool) (cty.Type, []Conversion) { switch { case ty.IsMapType(): mapCt++ + case ty.IsListType(): + listCt++ + case ty.IsSetType(): + setCt++ case ty.IsObjectType(): objectCt++ case ty.IsTupleType(): @@ -48,7 +54,31 @@ func unify(types []cty.Type, unsafe bool) (cty.Type, []Conversion) { } switch { case mapCt > 0 && (mapCt+dynamicCt) == len(types): - return unifyMapTypes(types, unsafe, dynamicCt > 0) + return unifyCollectionTypes(cty.Map, types, unsafe, dynamicCt > 0) + + case mapCt > 0 && (mapCt+objectCt+dynamicCt) == len(types): + // Objects often contain map data, but are not directly typed as + // such due to language constructs or function types. Try to unify + // them as maps first before falling back to heterogeneous type + // conversion. + ty, convs := unifyObjectsAsMaps(types, unsafe) + // If we got a map back, we know the unification was successful. + if ty.IsMapType() { + return ty, convs + } + case listCt > 0 && (listCt+dynamicCt) == len(types): + return unifyCollectionTypes(cty.List, types, unsafe, dynamicCt > 0) + case listCt > 0 && (listCt+tupleCt+dynamicCt) == len(types): + // Tuples are often lists in disguise, and we may be able to + // unify them as such. + ty, convs := unifyTuplesAsList(types, unsafe) + // if we got a list back, we know the unification was successful. + // Otherwise we will fall back to the heterogeneous type codepath. + if ty.IsListType() { + return ty, convs + } + case setCt > 0 && (setCt+dynamicCt) == len(types): + return unifyCollectionTypes(cty.Set, types, unsafe, dynamicCt > 0) case objectCt > 0 && (objectCt+dynamicCt) == len(types): return unifyObjectTypes(types, unsafe, dynamicCt > 0) case tupleCt > 0 && (tupleCt+dynamicCt) == len(types): @@ -100,7 +130,121 @@ Preferences: return cty.NilType, nil } -func unifyMapTypes(types []cty.Type, unsafe bool, hasDynamic bool) (cty.Type, []Conversion) { +// unifyTuplesAsList attempts to first see if the tuples unify as lists, then +// re-unifies the given types with the list in place of the tuples. +func unifyTuplesAsList(types []cty.Type, unsafe bool) (cty.Type, []Conversion) { + var tuples []cty.Type + var tupleIdxs []int + for i, t := range types { + if t.IsTupleType() { + tuples = append(tuples, t) + tupleIdxs = append(tupleIdxs, i) + } + } + + ty, tupleConvs := unifyTupleTypesToList(tuples, unsafe) + if !ty.IsListType() { + return cty.NilType, nil + } + + // the tuples themselves unified as a list, get the overall + // unification with this list type instead of the tuple. + // make a copy of the types, so we can fallback to the standard + // codepath if something went wrong + listed := make([]cty.Type, len(types)) + copy(listed, types) + for _, idx := range tupleIdxs { + listed[idx] = ty + } + + newTy, convs := unify(listed, unsafe) + if !newTy.IsListType() { + return cty.NilType, nil + } + + // we have a good conversion, wrap the nested tuple conversions. + // We know the tuple conversion is not nil, because we went from tuple to + // list + for i, idx := range tupleIdxs { + listConv := convs[idx] + tupleConv := tupleConvs[i] + + if listConv == nil { + convs[idx] = tupleConv + continue + } + + convs[idx] = func(in cty.Value) (out cty.Value, err error) { + out, err = tupleConv(in) + if err != nil { + return out, err + } + + return listConv(in) + } + } + + return newTy, convs +} + +// unifyObjectsAsMaps attempts to first see if the objects unify as maps, then +// re-unifies the given types with the map in place of the objects. +func unifyObjectsAsMaps(types []cty.Type, unsafe bool) (cty.Type, []Conversion) { + var objs []cty.Type + var objIdxs []int + for i, t := range types { + if t.IsObjectType() { + objs = append(objs, t) + objIdxs = append(objIdxs, i) + } + } + + ty, objConvs := unifyObjectTypesToMap(objs, unsafe) + if !ty.IsMapType() { + return cty.NilType, nil + } + + // the objects themselves unified as a map, get the overall + // unification with this map type instead of the object. + // Make a copy of the types, so we can fallback to the standard codepath if + // something went wrong without changing the original types. + mapped := make([]cty.Type, len(types)) + copy(mapped, types) + for _, idx := range objIdxs { + mapped[idx] = ty + } + + newTy, convs := unify(mapped, unsafe) + if !newTy.IsMapType() { + return cty.NilType, nil + } + + // we have a good conversion, so wrap the nested object conversions. + // We know the object conversion is not nil, because we went from object to + // map. + for i, idx := range objIdxs { + mapConv := convs[idx] + objConv := objConvs[i] + + if mapConv == nil { + convs[idx] = objConv + continue + } + + convs[idx] = func(in cty.Value) (out cty.Value, err error) { + out, err = objConv(in) + if err != nil { + return out, err + } + + return mapConv(in) + } + } + + return newTy, convs +} + +func unifyCollectionTypes(collectionType func(cty.Type) cty.Type, types []cty.Type, unsafe bool, hasDynamic bool) (cty.Type, []Conversion) { // If we had any dynamic types in the input here then we can't predict // what path we'll take through here once these become known types, so // we'll conservatively produce DynamicVal for these. @@ -117,7 +261,7 @@ func unifyMapTypes(types []cty.Type, unsafe bool, hasDynamic bool) (cty.Type, [] return cty.NilType, nil } - retTy := cty.Map(retElemType) + retTy := collectionType(retElemType) conversions := make([]Conversion, len(types)) for i, ty := range types { diff --git a/vendor/github.com/zclconf/go-cty/cty/function/function.go b/vendor/github.com/zclconf/go-cty/cty/function/function.go index efc83ad76..c00a0e7f8 100644 --- a/vendor/github.com/zclconf/go-cty/cty/function/function.go +++ b/vendor/github.com/zclconf/go-cty/cty/function/function.go @@ -142,7 +142,7 @@ func (f Function) ReturnTypeForValues(args []cty.Value) (ty cty.Type, err error) for i, spec := range f.spec.Params { val := posArgs[i] - if val.IsMarked() && !spec.AllowMarked { + if val.ContainsMarked() && !spec.AllowMarked { // During type checking we just unmark values and discard their // marks, under the assumption that during actual execution of // the function we'll do similarly and then re-apply the marks @@ -150,7 +150,7 @@ func (f Function) ReturnTypeForValues(args []cty.Value) (ty cty.Type, err error) // inspects values (rather than just types) in its Type // implementation can potentially fail to take into account marks, // unless it specifically opts in to seeing them. - unmarked, _ := val.Unmark() + unmarked, _ := val.UnmarkDeep() newArgs := make([]cty.Value, len(args)) copy(newArgs, args) newArgs[i] = unmarked @@ -183,9 +183,9 @@ func (f Function) ReturnTypeForValues(args []cty.Value) (ty cty.Type, err error) for i, val := range varArgs { realI := i + len(posArgs) - if val.IsMarked() && !spec.AllowMarked { + if val.ContainsMarked() && !spec.AllowMarked { // See the similar block in the loop above for what's going on here. - unmarked, _ := val.Unmark() + unmarked, _ := val.UnmarkDeep() newArgs := make([]cty.Value, len(args)) copy(newArgs, args) newArgs[realI] = unmarked diff --git a/vendor/github.com/zclconf/go-cty/cty/function/stdlib/collection.go b/vendor/github.com/zclconf/go-cty/cty/function/stdlib/collection.go index bef53407d..230b03af5 100644 --- a/vendor/github.com/zclconf/go-cty/cty/function/stdlib/collection.go +++ b/vendor/github.com/zclconf/go-cty/cty/function/stdlib/collection.go @@ -251,6 +251,10 @@ var CoalesceListFunc = function.New(&function.Spec{ return cty.UnknownVal(retType), nil } + if arg.IsNull() { + continue + } + if arg.LengthInt() > 0 { return arg, nil } @@ -758,16 +762,10 @@ var MergeFunc = function.New(&function.Spec{ Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) { outputMap := make(map[string]cty.Value) - // if all inputs are null, return a null value rather than an object - // with null attributes - allNull := true for _, arg := range args { if arg.IsNull() { continue - } else { - allNull = false } - for it := arg.ElementIterator(); it.Next(); { k, v := it.Element() outputMap[k.AsString()] = v @@ -775,8 +773,6 @@ var MergeFunc = function.New(&function.Spec{ } switch { - case allNull: - return cty.NullVal(retType), nil case retType.IsMapType(): if len(outputMap) == 0 { return cty.MapValEmpty(retType.ElementType()), nil diff --git a/vendor/github.com/zclconf/go-cty/cty/function/stdlib/format.go b/vendor/github.com/zclconf/go-cty/cty/function/stdlib/format.go index b95c347f5..63881f585 100644 --- a/vendor/github.com/zclconf/go-cty/cty/function/stdlib/format.go +++ b/vendor/github.com/zclconf/go-cty/cty/function/stdlib/format.go @@ -6,7 +6,7 @@ import ( "math/big" "strings" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/convert" diff --git a/vendor/github.com/zclconf/go-cty/cty/function/stdlib/string.go b/vendor/github.com/zclconf/go-cty/cty/function/stdlib/string.go index 01ebc47fd..43182dd5a 100644 --- a/vendor/github.com/zclconf/go-cty/cty/function/stdlib/string.go +++ b/vendor/github.com/zclconf/go-cty/cty/function/stdlib/string.go @@ -6,7 +6,7 @@ import ( "sort" "strings" - "github.com/apparentlymart/go-textseg/v12/textseg" + "github.com/apparentlymart/go-textseg/v13/textseg" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/function" @@ -151,7 +151,6 @@ var SubstrFunc = function.New(&function.Spec{ return cty.StringVal(""), nil } - sub := in pos := 0 var i int diff --git a/vendor/github.com/zclconf/go-cty/cty/object_type.go b/vendor/github.com/zclconf/go-cty/cty/object_type.go index 0c67d4ecd..e6bbab4a8 100644 --- a/vendor/github.com/zclconf/go-cty/cty/object_type.go +++ b/vendor/github.com/zclconf/go-cty/cty/object_type.go @@ -112,7 +112,7 @@ func (t typeObject) GoString() string { return "cty.EmptyObject" } if len(t.AttrOptional) > 0 { - opt := make([]string, len(t.AttrOptional)) + var opt []string for k := range t.AttrOptional { opt = append(opt, k) } diff --git a/vendor/github.com/zclconf/go-cty/cty/type.go b/vendor/github.com/zclconf/go-cty/cty/type.go index 5f7813e83..440690853 100644 --- a/vendor/github.com/zclconf/go-cty/cty/type.go +++ b/vendor/github.com/zclconf/go-cty/cty/type.go @@ -36,6 +36,9 @@ func (t typeImplSigil) isTypeImpl() typeImplSigil { // Equals returns true if the other given Type exactly equals the receiver // type. func (t Type) Equals(other Type) bool { + if t == NilType || other == NilType { + return t == other + } return t.typeImpl.Equals(other) } @@ -112,6 +115,44 @@ func (t Type) HasDynamicTypes() bool { } } +// WithoutOptionalAttributesDeep returns a type equivalent to the receiver but +// with any objects with optional attributes converted into fully concrete +// object types. This operation is applied recursively. +func (t Type) WithoutOptionalAttributesDeep() Type { + switch { + case t == DynamicPseudoType, t.IsPrimitiveType(), t.IsCapsuleType(): + return t + case t.IsMapType(): + return Map(t.ElementType().WithoutOptionalAttributesDeep()) + case t.IsListType(): + return List(t.ElementType().WithoutOptionalAttributesDeep()) + case t.IsSetType(): + return Set(t.ElementType().WithoutOptionalAttributesDeep()) + case t.IsTupleType(): + originalElemTypes := t.TupleElementTypes() + elemTypes := make([]Type, len(originalElemTypes)) + for i, et := range originalElemTypes { + elemTypes[i] = et.WithoutOptionalAttributesDeep() + } + return Tuple(elemTypes) + case t.IsObjectType(): + originalAttrTypes := t.AttributeTypes() + attrTypes := make(map[string]Type, len(originalAttrTypes)) + for k, t := range originalAttrTypes { + attrTypes[k] = t.WithoutOptionalAttributesDeep() + } + + // This is the subtle line which does all the work of this function: by + // constructing a new Object type with these attribute types, we drop + // the list of optional attributes (if present). This results in a + // concrete Object type which requires all of the original attributes. + return Object(attrTypes) + default: + // Should never happen, since above should be exhaustive + panic("WithoutOptionalAttributesDeep does not support the given type") + } +} + type friendlyTypeNameMode rune const ( diff --git a/vendor/github.com/zclconf/go-cty/cty/value_init.go b/vendor/github.com/zclconf/go-cty/cty/value_init.go index fc2d7b6fb..25ee0b678 100644 --- a/vendor/github.com/zclconf/go-cty/cty/value_init.go +++ b/vendor/github.com/zclconf/go-cty/cty/value_init.go @@ -186,6 +186,20 @@ func ListValEmpty(element Type) Value { } } +// CanListVal returns false if the given Values can not be coalesced +// into a single List due to inconsistent element types. +func CanListVal(vals []Value) bool { + elementType := DynamicPseudoType + for _, val := range vals { + if elementType == DynamicPseudoType { + elementType = val.ty + } else if val.ty != DynamicPseudoType && !elementType.Equals(val.ty) { + return false + } + } + return true +} + // MapVal returns a Value of a map type whose element type is defined by // the types of the given values, which must be homogenous. // @@ -227,6 +241,20 @@ func MapValEmpty(element Type) Value { } } +// CanMapVal returns false if the given Values can not be coalesced into a +// single Map due to inconsistent element types. +func CanMapVal(vals map[string]Value) bool { + elementType := DynamicPseudoType + for _, val := range vals { + if elementType == DynamicPseudoType { + elementType = val.ty + } else if val.ty != DynamicPseudoType && !elementType.Equals(val.ty) { + return false + } + } + return true +} + // SetVal returns a Value of set type whose element type is defined by // the types of the given values, which must be homogenous. // @@ -267,6 +295,26 @@ func SetVal(vals []Value) Value { }.WithMarks(markSets...) } +// CanSetVal returns false if the given Values can not be coalesced +// into a single Set due to inconsistent element types. +func CanSetVal(vals []Value) bool { + elementType := DynamicPseudoType + var markSets []ValueMarks + + for _, val := range vals { + if unmarkedVal, marks := val.UnmarkDeep(); len(marks) > 0 { + val = unmarkedVal + markSets = append(markSets, marks) + } + if elementType == DynamicPseudoType { + elementType = val.ty + } else if val.ty != DynamicPseudoType && !elementType.Equals(val.ty) { + return false + } + } + return true +} + // SetValFromValueSet returns a Value of set type based on an already-constructed // ValueSet. // diff --git a/vendor/github.com/zclconf/go-cty/cty/value_ops.go b/vendor/github.com/zclconf/go-cty/cty/value_ops.go index 348fd227c..b33cc4f47 100644 --- a/vendor/github.com/zclconf/go-cty/cty/value_ops.go +++ b/vendor/github.com/zclconf/go-cty/cty/value_ops.go @@ -596,8 +596,25 @@ func (val Value) Multiply(other Value) Value { return *shortCircuit } - ret := new(big.Float) + // find the larger precision of the arguments + resPrec := val.v.(*big.Float).Prec() + otherPrec := other.v.(*big.Float).Prec() + if otherPrec > resPrec { + resPrec = otherPrec + } + + // make sure we have enough precision for the product + ret := new(big.Float).SetPrec(512) ret.Mul(val.v.(*big.Float), other.v.(*big.Float)) + + // now reduce the precision back to the greater argument, or the minimum + // required by the product. + minPrec := ret.MinPrec() + if minPrec > resPrec { + resPrec = minPrec + } + ret.SetPrec(resPrec) + return NumberVal(ret) } @@ -669,11 +686,14 @@ func (val Value) Modulo(other Value) Value { // FIXME: This is a bit clumsy. Should come back later and see if there's a // more straightforward way to do this. rat := val.Divide(other) - ratFloorInt := &big.Int{} - rat.v.(*big.Float).Int(ratFloorInt) - work := (&big.Float{}).SetInt(ratFloorInt) + ratFloorInt, _ := rat.v.(*big.Float).Int(nil) + + // start with a copy of the original larger value so that we do not lose + // precision. + v := val.v.(*big.Float) + work := new(big.Float).Copy(v).SetInt(ratFloorInt) work.Mul(other.v.(*big.Float), work) - work.Sub(val.v.(*big.Float), work) + work.Sub(v, work) return NumberVal(work) } diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix.go b/vendor/golang.org/x/sys/cpu/cpu_aix.go index 464a209cf..28b521643 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_aix.go +++ b/vendor/golang.org/x/sys/cpu/cpu_aix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix // +build aix package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go index 7f7f272a0..ccf542a73 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build gc // +build gc package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go index 75a955661..0af2f2484 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build gc // +build gc package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go index 4adb89cf9..fa7cdb9bc 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (386 || amd64 || amd64p32) && gc // +build 386 amd64 amd64p32 // +build gc diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go index 53ca8d65c..2aff31891 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build gccgo // +build gccgo package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go index aa986f778..4bfbda619 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build gccgo // +build gccgo package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go index ba49b91bd..8478a6d59 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (386 || amd64 || amd64p32) && gccgo // +build 386 amd64 amd64p32 // +build gccgo diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go index 6fc874f7f..159a686f6 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !386 && !amd64 && !amd64p32 && !arm64 // +build !386,!amd64,!amd64p32,!arm64 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go index 5a4189005..6000db4cd 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (mips64 || mips64le) // +build linux // +build mips64 mips64le diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go index 42b5d33cb..f4992b1a5 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x // +build linux,!arm,!arm64,!mips64,!mips64le,!ppc64,!ppc64le,!s390x package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go index 99f8a6399..021356d6d 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (ppc64 || ppc64le) // +build linux // +build ppc64 ppc64le diff --git a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go index 57b5b677d..f4063c664 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build mips64 || mips64le // +build mips64 mips64le package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go index cfc1946b7..07c4e36d8 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go +++ b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build mips || mipsle // +build mips mipsle package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm.go index b412efc1b..d7b4fb4cc 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm.go +++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !linux && arm // +build !linux,arm package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go index 16c1c4090..f8c484f58 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !linux,!netbsd -// +build arm64 +//go:build !linux && !netbsd && arm64 +// +build !linux,!netbsd,arm64 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go index f49fad677..0dafe9644 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !linux && (mips64 || mips64le) // +build !linux // +build mips64 mips64le diff --git a/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go index d28d675b5..4e8acd165 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go +++ b/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build ppc64 || ppc64le // +build ppc64 ppc64le package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go index 8b08de341..bd6c128af 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build riscv64 // +build riscv64 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/vendor/golang.org/x/sys/cpu/cpu_wasm.go index 5382f2a22..7747d888a 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_wasm.go +++ b/vendor/golang.org/x/sys/cpu/cpu_wasm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build wasm // +build wasm package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go index 48d429331..fd380c0a7 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 || amd64 || amd64p32 // +build 386 amd64 amd64p32 package cpu diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go b/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go index 76fbe40b7..a864f24d7 100644 --- a/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go +++ b/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go @@ -8,8 +8,8 @@ // Morever, this file will be used during the building of // gccgo's libgo and thus must not used a CGo method. -// +build aix -// +build gccgo +//go:build aix && gccgo +// +build aix,gccgo package cpu diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go index 5b427d67e..904be42ff 100644 --- a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go +++ b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go @@ -6,8 +6,8 @@ // system call on AIX without depending on x/sys/unix. // (See golang.org/issue/32102) -// +build aix,ppc64 -// +build gc +//go:build aix && ppc64 && gc +// +build aix,ppc64,gc package cpu diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go index 951fce4d0..abc89c104 100644 --- a/vendor/golang.org/x/sys/unix/aliases.go +++ b/vendor/golang.org/x/sys/unix/aliases.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9 +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // +build go1.9 package unix diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_386.s b/vendor/golang.org/x/sys/unix/asm_bsd_386.s similarity index 70% rename from vendor/golang.org/x/sys/unix/asm_freebsd_386.s rename to vendor/golang.org/x/sys/unix/asm_bsd_386.s index 49f0ac236..7f29275fa 100644 --- a/vendor/golang.org/x/sys/unix/asm_freebsd_386.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_386.s @@ -1,14 +1,14 @@ -// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin || freebsd || netbsd || openbsd) && gc +// +build darwin freebsd netbsd openbsd // +build gc #include "textflag.h" -// -// System call support for 386, FreeBSD -// +// System call support for 386 BSD // Just jump to package syscall's implementation for all these functions. // The runtime may know about them. @@ -22,7 +22,7 @@ TEXT ·Syscall6(SB),NOSPLIT,$0-40 TEXT ·Syscall9(SB),NOSPLIT,$0-52 JMP syscall·Syscall9(SB) -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 JMP syscall·RawSyscall(SB) TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s b/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s similarity index 72% rename from vendor/golang.org/x/sys/unix/asm_darwin_amd64.s rename to vendor/golang.org/x/sys/unix/asm_bsd_amd64.s index f2397fde5..2b99c349a 100644 --- a/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s @@ -1,14 +1,14 @@ -// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc +// +build darwin dragonfly freebsd netbsd openbsd // +build gc #include "textflag.h" -// -// System call support for AMD64, Darwin -// +// System call support for AMD64 BSD // Just jump to package syscall's implementation for all these functions. // The runtime may know about them. diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s b/vendor/golang.org/x/sys/unix/asm_bsd_arm.s similarity index 74% rename from vendor/golang.org/x/sys/unix/asm_freebsd_arm.s rename to vendor/golang.org/x/sys/unix/asm_bsd_arm.s index 6d740db2c..98ebfad9d 100644 --- a/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_arm.s @@ -1,14 +1,14 @@ -// Copyright 2012 The Go Authors. All rights reserved. +// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin || freebsd || netbsd || openbsd) && gc +// +build darwin freebsd netbsd openbsd // +build gc #include "textflag.h" -// -// System call support for ARM, FreeBSD -// +// System call support for ARM BSD // Just jump to package syscall's implementation for all these functions. // The runtime may know about them. diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s similarity index 75% rename from vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s rename to vendor/golang.org/x/sys/unix/asm_bsd_arm64.s index e57367c17..fe36a7391 100644 --- a/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s +++ b/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s @@ -1,14 +1,14 @@ -// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin || freebsd || netbsd || openbsd) && gc +// +build darwin freebsd netbsd openbsd // +build gc #include "textflag.h" -// -// System call support for AMD64, NetBSD -// +// System call support for ARM64 BSD // Just jump to package syscall's implementation for all these functions. // The runtime may know about them. diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_386.s b/vendor/golang.org/x/sys/unix/asm_darwin_386.s deleted file mode 100644 index 8a06b87d7..000000000 --- a/vendor/golang.org/x/sys/unix/asm_darwin_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for 386, Darwin -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-28 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-40 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-52 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm.s deleted file mode 100644 index c9e6b6fc8..000000000 --- a/vendor/golang.org/x/sys/unix/asm_darwin_arm.s +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc -// +build arm,darwin - -#include "textflag.h" - -// -// System call support for ARM, Darwin -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-28 - B syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-40 - B syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-52 - B syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - B syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s deleted file mode 100644 index 89843f8f4..000000000 --- a/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc -// +build arm64,darwin - -#include "textflag.h" - -// -// System call support for AMD64, Darwin -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - B syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - B syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - B syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - B syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s deleted file mode 100644 index 27674e1ca..000000000 --- a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for AMD64, DragonFly -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s deleted file mode 100644 index f2dfc57b8..000000000 --- a/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for AMD64, FreeBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s deleted file mode 100644 index a8f5a29b3..000000000 --- a/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for ARM64, FreeBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_386.s b/vendor/golang.org/x/sys/unix/asm_netbsd_386.s deleted file mode 100644 index ae7b498d5..000000000 --- a/vendor/golang.org/x/sys/unix/asm_netbsd_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for 386, NetBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-28 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-40 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-52 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s deleted file mode 100644 index d7da175e1..000000000 --- a/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for ARM, NetBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-28 - B syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-40 - B syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-52 - B syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - B syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s deleted file mode 100644 index e7cbe1904..000000000 --- a/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for ARM64, NetBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - B syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - B syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - B syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - B syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_386.s b/vendor/golang.org/x/sys/unix/asm_openbsd_386.s deleted file mode 100644 index 2f00b0310..000000000 --- a/vendor/golang.org/x/sys/unix/asm_openbsd_386.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for 386, OpenBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-28 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-40 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-52 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s deleted file mode 100644 index 07632c99c..000000000 --- a/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for AMD64, OpenBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s deleted file mode 100644 index 73e997320..000000000 --- a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for ARM, OpenBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-28 - B syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-40 - B syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-52 - B syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - B syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s deleted file mode 100644 index c47302aa4..000000000 --- a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gc - -#include "textflag.h" - -// -// System call support for arm64, OpenBSD -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-56 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-80 - JMP syscall·Syscall6(SB) - -TEXT ·Syscall9(SB),NOSPLIT,$0-104 - JMP syscall·Syscall9(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s new file mode 100644 index 000000000..3b54e1858 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s @@ -0,0 +1,426 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc +// +build zos +// +build s390x +// +build gc + +#include "textflag.h" + +#define PSALAA 1208(R0) +#define GTAB64(x) 80(x) +#define LCA64(x) 88(x) +#define CAA(x) 8(x) +#define EDCHPXV(x) 1016(x) // in the CAA +#define SAVSTACK_ASYNC(x) 336(x) // in the LCA + +// SS_*, where x=SAVSTACK_ASYNC +#define SS_LE(x) 0(x) +#define SS_GO(x) 8(x) +#define SS_ERRNO(x) 16(x) +#define SS_ERRNOJR(x) 20(x) + +#define LE_CALL BYTE $0x0D; BYTE $0x76; // BL R7, R6 + +TEXT ·clearErrno(SB),NOSPLIT,$0-0 + BL addrerrno<>(SB) + MOVD $0, 0(R3) + RET + +// Returns the address of errno in R3. +TEXT addrerrno<>(SB),NOSPLIT|NOFRAME,$0-0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get __errno FuncDesc. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + ADD $(0x156*16), R9 + LMG 0(R9), R5, R6 + + // Switch to saved LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call __errno function. + LE_CALL + NOPH + + // Switch back to Go stack. + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + RET + +TEXT ·syscall_syscall(SB),NOSPLIT,$0-56 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+32(FP) + MOVD R0, r2+40(FP) + MOVD R0, err+48(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) +done: + BL runtime·exitsyscall(SB) + RET + +TEXT ·syscall_rawsyscall(SB),NOSPLIT,$0-56 + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+32(FP) + MOVD R0, r2+40(FP) + MOVD R0, err+48(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) +done: + RET + +TEXT ·syscall_syscall6(SB),NOSPLIT,$0-80 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+56(FP) + MOVD R0, r2+64(FP) + MOVD R0, err+72(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+72(FP) +done: + BL runtime·exitsyscall(SB) + RET + +TEXT ·syscall_rawsyscall6(SB),NOSPLIT,$0-80 + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+56(FP) + MOVD R0, r2+64(FP) + MOVD R0, err+72(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL ·rrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+72(FP) +done: + RET + +TEXT ·syscall_syscall9(SB),NOSPLIT,$0 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + MOVD a7+56(FP), R12 + MOVD R12, (2176+48)(R4) + MOVD a8+64(FP), R12 + MOVD R12, (2176+56)(R4) + MOVD a9+72(FP), R12 + MOVD R12, (2176+64)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+80(FP) + MOVD R0, r2+88(FP) + MOVD R0, err+96(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+96(FP) +done: + BL runtime·exitsyscall(SB) + RET + +TEXT ·syscall_rawsyscall9(SB),NOSPLIT,$0 + MOVD a1+8(FP), R1 + MOVD a2+16(FP), R2 + MOVD a3+24(FP), R3 + + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get function. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + MOVD trap+0(FP), R5 + SLD $4, R5 + ADD R5, R9 + LMG 0(R9), R5, R6 + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Fill in parameter list. + MOVD a4+32(FP), R12 + MOVD R12, (2176+24)(R4) + MOVD a5+40(FP), R12 + MOVD R12, (2176+32)(R4) + MOVD a6+48(FP), R12 + MOVD R12, (2176+40)(R4) + MOVD a7+56(FP), R12 + MOVD R12, (2176+48)(R4) + MOVD a8+64(FP), R12 + MOVD R12, (2176+56)(R4) + MOVD a9+72(FP), R12 + MOVD R12, (2176+64)(R4) + + // Call function. + LE_CALL + NOPH + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + + MOVD R3, r1+80(FP) + MOVD R0, r2+88(FP) + MOVD R0, err+96(FP) + MOVW R3, R4 + CMP R4, $-1 + BNE done + BL addrerrno<>(SB) + MOVWZ 0(R3), R3 + MOVD R3, err+96(FP) +done: + RET + +// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +TEXT ·svcCall(SB),NOSPLIT,$0 + BL runtime·save_g(SB) // Save g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD R15, 0(R9) + + MOVD argv+8(FP), R1 // Move function arguments into registers + MOVD dsa+16(FP), g + MOVD fnptr+0(FP), R15 + + BYTE $0x0D // Branch to function + BYTE $0xEF + + BL runtime·load_g(SB) // Restore g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R15 + + RET + +// func svcLoad(name *byte) unsafe.Pointer +TEXT ·svcLoad(SB),NOSPLIT,$0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD $0x80000000, R1 + MOVD $0, R15 + BYTE $0x0A // SVC 08 LOAD + BYTE $0x08 + MOVW R15, R3 // Save return code from SVC + MOVD R2, R15 // Restore go stack pointer + CMP R3, $0 // Check SVC return code + BNE error + + MOVD $-2, R3 // Reset last bit of entry point to zero + AND R0, R3 + MOVD R3, addr+8(FP) // Return entry point returned by SVC + CMP R0, R3 // Check if last bit of entry point was set + BNE done + + MOVD R15, R2 // Save go stack pointer + MOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08) + BYTE $0x0A // SVC 09 DELETE + BYTE $0x09 + MOVD R2, R15 // Restore go stack pointer + +error: + MOVD $0, addr+8(FP) // Return 0 on failure +done: + XOR R0, R0 // Reset r0 to 0 + RET + +// func svcUnload(name *byte, fnptr unsafe.Pointer) int64 +TEXT ·svcUnload(SB),NOSPLIT,$0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD addr+8(FP), R15 + BYTE $0x0A // SVC 09 + BYTE $0x09 + XOR R0, R0 // Reset r0 to 0 + MOVD R15, R1 // Save SVC return code + MOVD R2, R15 // Restore go stack pointer + MOVD R1, rc+0(FP) // Return SVC return code + RET + +// func gettid() uint64 +TEXT ·gettid(SB), NOSPLIT, $0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get CEECAATHDID + MOVD CAA(R8), R9 + MOVD 0x3D0(R9), R9 + MOVD R9, ret+0(FP) + + RET diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go index df5204877..0b7c6adb8 100644 --- a/vendor/golang.org/x/sys/unix/cap_freebsd.go +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build freebsd // +build freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go index 3a6ac648d..394a3965b 100644 --- a/vendor/golang.org/x/sys/unix/constants.go +++ b/vendor/golang.org/x/sys/unix/constants.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go index 5e5fb4510..65a998508 100644 --- a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc +//go:build aix && ppc +// +build aix,ppc // Functions to access/create device major and minor numbers matching the // encoding used by AIX. diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go index 8b401244c..8fc08ad0a 100644 --- a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc64 +//go:build aix && ppc64 +// +build aix,ppc64 // Functions to access/create device major and minor numbers matching the // encoding used AIX. diff --git a/vendor/golang.org/x/sys/unix/dev_zos.go b/vendor/golang.org/x/sys/unix/dev_zos.go new file mode 100644 index 000000000..a388e59a0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_zos.go @@ -0,0 +1,29 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +// Functions to access/create device major and minor numbers matching the +// encoding used by z/OS. +// +// The information below is extracted and adapted from macros. + +package unix + +// Major returns the major component of a z/OS device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0x0000FFFF) +} + +// Minor returns the minor component of a z/OS device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0x0000FFFF) +} + +// Mkdev returns a z/OS device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 16) | uint64(minor) +} diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 304016b68..e74e5eaa3 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/endian_big.go b/vendor/golang.org/x/sys/unix/endian_big.go index 86781eac2..a52026557 100644 --- a/vendor/golang.org/x/sys/unix/endian_big.go +++ b/vendor/golang.org/x/sys/unix/endian_big.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 // +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go index 8822d8541..4362f47e2 100644 --- a/vendor/golang.org/x/sys/unix/endian_little.go +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh // +build 386 amd64 amd64p32 alpha arm arm64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh package unix diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go index 84178b0a1..29ccc4d13 100644 --- a/vendor/golang.org/x/sys/unix/env_unix.go +++ b/vendor/golang.org/x/sys/unix/env_unix.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Unix environment variables. diff --git a/vendor/golang.org/x/sys/unix/epoll_zos.go b/vendor/golang.org/x/sys/unix/epoll_zos.go new file mode 100644 index 000000000..cedaf7e02 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/epoll_zos.go @@ -0,0 +1,221 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "sync" +) + +// This file simulates epoll on z/OS using poll. + +// Analogous to epoll_event on Linux. +// TODO(neeilan): Pad is because the Linux kernel expects a 96-bit struct. We never pass this to the kernel; remove? +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + EPOLLERR = 0x8 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDNORM = 0x40 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + // The following constants are part of the epoll API, but represent + // currently unsupported functionality on z/OS. + // EPOLL_CLOEXEC = 0x80000 + // EPOLLET = 0x80000000 + // EPOLLONESHOT = 0x40000000 + // EPOLLRDHUP = 0x2000 // Typically used with edge-triggered notis + // EPOLLEXCLUSIVE = 0x10000000 // Exclusive wake-up mode + // EPOLLWAKEUP = 0x20000000 // Relies on Linux's BLOCK_SUSPEND capability +) + +// TODO(neeilan): We can eliminate these epToPoll / pToEpoll calls by using identical mask values for POLL/EPOLL +// constants where possible The lower 16 bits of epoll events (uint32) can fit any system poll event (int16). + +// epToPollEvt converts epoll event field to poll equivalent. +// In epoll, Events is a 32-bit field, while poll uses 16 bits. +func epToPollEvt(events uint32) int16 { + var ep2p = map[uint32]int16{ + EPOLLIN: POLLIN, + EPOLLOUT: POLLOUT, + EPOLLHUP: POLLHUP, + EPOLLPRI: POLLPRI, + EPOLLERR: POLLERR, + } + + var pollEvts int16 = 0 + for epEvt, pEvt := range ep2p { + if (events & epEvt) != 0 { + pollEvts |= pEvt + } + } + + return pollEvts +} + +// pToEpollEvt converts 16 bit poll event bitfields to 32-bit epoll event fields. +func pToEpollEvt(revents int16) uint32 { + var p2ep = map[int16]uint32{ + POLLIN: EPOLLIN, + POLLOUT: EPOLLOUT, + POLLHUP: EPOLLHUP, + POLLPRI: EPOLLPRI, + POLLERR: EPOLLERR, + } + + var epollEvts uint32 = 0 + for pEvt, epEvt := range p2ep { + if (revents & pEvt) != 0 { + epollEvts |= epEvt + } + } + + return epollEvts +} + +// Per-process epoll implementation. +type epollImpl struct { + mu sync.Mutex + epfd2ep map[int]*eventPoll + nextEpfd int +} + +// eventPoll holds a set of file descriptors being watched by the process. A process can have multiple epoll instances. +// On Linux, this is an in-kernel data structure accessed through a fd. +type eventPoll struct { + mu sync.Mutex + fds map[int]*EpollEvent +} + +// epoll impl for this process. +var impl epollImpl = epollImpl{ + epfd2ep: make(map[int]*eventPoll), + nextEpfd: 0, +} + +func (e *epollImpl) epollcreate(size int) (epfd int, err error) { + e.mu.Lock() + defer e.mu.Unlock() + epfd = e.nextEpfd + e.nextEpfd++ + + e.epfd2ep[epfd] = &eventPoll{ + fds: make(map[int]*EpollEvent), + } + return epfd, nil +} + +func (e *epollImpl) epollcreate1(flag int) (fd int, err error) { + return e.epollcreate(4) +} + +func (e *epollImpl) epollctl(epfd int, op int, fd int, event *EpollEvent) (err error) { + e.mu.Lock() + defer e.mu.Unlock() + + ep, ok := e.epfd2ep[epfd] + if !ok { + + return EBADF + } + + switch op { + case EPOLL_CTL_ADD: + // TODO(neeilan): When we make epfds and fds disjoint, detect epoll + // loops here (instances watching each other) and return ELOOP. + if _, ok := ep.fds[fd]; ok { + return EEXIST + } + ep.fds[fd] = event + case EPOLL_CTL_MOD: + if _, ok := ep.fds[fd]; !ok { + return ENOENT + } + ep.fds[fd] = event + case EPOLL_CTL_DEL: + if _, ok := ep.fds[fd]; !ok { + return ENOENT + } + delete(ep.fds, fd) + + } + return nil +} + +// Must be called while holding ep.mu +func (ep *eventPoll) getFds() []int { + fds := make([]int, len(ep.fds)) + for fd := range ep.fds { + fds = append(fds, fd) + } + return fds +} + +func (e *epollImpl) epollwait(epfd int, events []EpollEvent, msec int) (n int, err error) { + e.mu.Lock() // in [rare] case of concurrent epollcreate + epollwait + ep, ok := e.epfd2ep[epfd] + + if !ok { + e.mu.Unlock() + return 0, EBADF + } + + pollfds := make([]PollFd, 4) + for fd, epollevt := range ep.fds { + pollfds = append(pollfds, PollFd{Fd: int32(fd), Events: epToPollEvt(epollevt.Events)}) + } + e.mu.Unlock() + + n, err = Poll(pollfds, msec) + if err != nil { + return n, err + } + + i := 0 + for _, pFd := range pollfds { + if pFd.Revents != 0 { + events[i] = EpollEvent{Fd: pFd.Fd, Events: pToEpollEvt(pFd.Revents)} + i++ + } + + if i == n { + break + } + } + + return n, nil +} + +func EpollCreate(size int) (fd int, err error) { + return impl.epollcreate(size) +} + +func EpollCreate1(flag int) (fd int, err error) { + return impl.epollcreate1(flag) +} + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + return impl.epollctl(epfd, op, fd, event) +} + +// Because EpollWait mutates events, the caller is expected to coordinate +// concurrent access if calling with the same epfd from multiple goroutines. +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + return impl.epollwait(epfd, events, msec) +} diff --git a/vendor/golang.org/x/sys/unix/fcntl.go b/vendor/golang.org/x/sys/unix/fcntl.go index 4dc534864..e9b991258 100644 --- a/vendor/golang.org/x/sys/unix/fcntl.go +++ b/vendor/golang.org/x/sys/unix/fcntl.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build dragonfly || freebsd || linux || netbsd || openbsd // +build dragonfly freebsd linux netbsd openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go index 8db48e5e0..cb0dfbd09 100644 --- a/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +++ b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) // +build linux,386 linux,arm linux,mips linux,mipsle package unix diff --git a/vendor/golang.org/x/sys/unix/fdset.go b/vendor/golang.org/x/sys/unix/fdset.go index b27be0a01..b1e07b220 100644 --- a/vendor/golang.org/x/sys/unix/fdset.go +++ b/vendor/golang.org/x/sys/unix/fdset.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/fstatfs_zos.go b/vendor/golang.org/x/sys/unix/fstatfs_zos.go new file mode 100644 index 000000000..e377cc9f4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/fstatfs_zos.go @@ -0,0 +1,164 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "unsafe" +) + +// This file simulates fstatfs on z/OS using fstatvfs and w_getmntent. + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + var stat_v Statvfs_t + err = Fstatvfs(fd, &stat_v) + if err == nil { + // populate stat + stat.Type = 0 + stat.Bsize = stat_v.Bsize + stat.Blocks = stat_v.Blocks + stat.Bfree = stat_v.Bfree + stat.Bavail = stat_v.Bavail + stat.Files = stat_v.Files + stat.Ffree = stat_v.Ffree + stat.Fsid = stat_v.Fsid + stat.Namelen = stat_v.Namemax + stat.Frsize = stat_v.Frsize + stat.Flags = stat_v.Flag + for passn := 0; passn < 5; passn++ { + switch passn { + case 0: + err = tryGetmntent64(stat) + break + case 1: + err = tryGetmntent128(stat) + break + case 2: + err = tryGetmntent256(stat) + break + case 3: + err = tryGetmntent512(stat) + break + case 4: + err = tryGetmntent1024(stat) + break + default: + break + } + //proceed to return if: err is nil (found), err is nonnil but not ERANGE (another error occurred) + if err == nil || err != nil && err != ERANGE { + break + } + } + } + return err +} + +func tryGetmntent64(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [64]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent128(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [128]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent256(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [256]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent512(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [512]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} + +func tryGetmntent1024(stat *Statfs_t) (err error) { + var mnt_ent_buffer struct { + header W_Mnth + filesys_info [1024]W_Mntent + } + var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) + fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) + if err != nil { + return err + } + err = ERANGE //return ERANGE if no match is found in this batch + for i := 0; i < fs_count; i++ { + if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { + stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) + err = nil + break + } + } + return err +} diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go index 86032c11e..0dee23222 100644 --- a/vendor/golang.org/x/sys/unix/gccgo.go +++ b/vendor/golang.org/x/sys/unix/gccgo.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build gccgo -// +build !aix +//go:build gccgo && !aix +// +build gccgo,!aix package unix diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go index 251a977a8..e60e49a3d 100644 --- a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build gccgo && linux && amd64 // +build gccgo,linux,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go index 564167861..6c7ad052e 100644 --- a/vendor/golang.org/x/sys/unix/ioctl.go +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl_zos.go b/vendor/golang.org/x/sys/unix/ioctl_zos.go new file mode 100644 index 000000000..5384e7d91 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ioctl_zos.go @@ -0,0 +1,74 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "runtime" + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCSETS, TCSETSW, or TCSETSF +func IoctlSetTermios(fd int, req uint, value *Termios) error { + if (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) { + return ENOSYS + } + err := Tcsetattr(fd, int(req), value) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// IoctlGetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCGETS +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + if req != TCGETS { + return &value, ENOSYS + } + err := Tcgetattr(fd, &value) + return &value, err +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index d257fac50..d727cad19 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -199,7 +199,7 @@ illumos_amd64) mksyscall="go run mksyscall_solaris.go" mkerrors= mksysnum= - mktypes= + mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; *) echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index b8313e98a..87f9d1e35 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -65,6 +65,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -114,6 +115,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -213,6 +215,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -223,6 +226,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -299,6 +303,17 @@ struct ltchars { // Including linux/l2tp.h here causes conflicts between linux/in.h // and netinet/in.h included via net/route.h above. #define IPPROTO_L2TP 115 + +// Copied from linux/hid.h. +// Keep in sync with the size of the referenced fields. +#define _HIDIOCGRAWNAME_LEN 128 // sizeof_field(struct hid_device, name) +#define _HIDIOCGRAWPHYS_LEN 64 // sizeof_field(struct hid_device, phys) +#define _HIDIOCGRAWUNIQ_LEN 64 // sizeof_field(struct hid_device, uniq) + +#define _HIDIOCGRAWNAME HIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN) +#define _HIDIOCGRAWPHYS HIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN) +#define _HIDIOCGRAWUNIQ HIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN) + ' includes_NetBSD=' @@ -446,6 +461,8 @@ ccflags="$@" $2 !~ /^EPROC_/ && $2 !~ /^EQUIV_/ && $2 !~ /^EXPR_/ && + $2 !~ /^EVIOC/ && + $2 !~ /^EV_/ && $2 ~ /^E[A-Z0-9_]+$/ || $2 ~ /^B[0-9_]+$/ || $2 ~ /^(OLD|NEW)DEV$/ || @@ -480,7 +497,7 @@ ccflags="$@" $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || $2 ~ /^LO_(KEY|NAME)_SIZE$/ || $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL)_/ || $2 ~ /^TP_STATUS_/ || $2 ~ /^FALLOC_/ || $2 == "ICMPV6_FILTER" || @@ -570,6 +587,9 @@ ccflags="$@" $2 ~ /^W[A-Z0-9]+$/ || $2 ~/^PPPIOC/ || $2 ~ /^FAN_|FANOTIFY_/ || + $2 == "HID_MAX_DESCRIPTOR_SIZE" || + $2 ~ /^_?HIDIOC/ || + $2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ || $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} $2 ~ /^__WCOREFLAG$/ {next} $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} @@ -607,6 +627,7 @@ echo '#include ' | $CC -x c - -E -dM $ccflags | echo '// mkerrors.sh' "$@" echo '// Code generated by the command above; see README.md. DO NOT EDIT.' echo +echo "//go:build ${GOARCH} && ${GOOS}" echo "// +build ${GOARCH},${GOOS}" echo go tool cgo -godefs -- "$@" _const.go >_error.out diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go index bc2f3629a..53f1b4c5b 100644 --- a/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris // For Unix, get the pagesize from the runtime. diff --git a/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/vendor/golang.org/x/sys/unix/ptrace_darwin.go index fc568b540..463c3eff7 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_darwin.go +++ b/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && !ios // +build darwin,!ios package unix diff --git a/vendor/golang.org/x/sys/unix/ptrace_ios.go b/vendor/golang.org/x/sys/unix/ptrace_ios.go index 183441c9a..ed0509a01 100644 --- a/vendor/golang.org/x/sys/unix/ptrace_ios.go +++ b/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build ios // +build ios package unix diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go index 61712b51c..6f6c5fec5 100644 --- a/vendor/golang.org/x/sys/unix/race.go +++ b/vendor/golang.org/x/sys/unix/race.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin && race) || (linux && race) || (freebsd && race) // +build darwin,race linux,race freebsd,race package unix diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go index ad026678c..706e1322a 100644 --- a/vendor/golang.org/x/sys/unix/race0.go +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly +//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly zos package unix diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/vendor/golang.org/x/sys/unix/readdirent_getdents.go index 3a90aa6df..4d6257569 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdents.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdents.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd // +build aix dragonfly freebsd linux netbsd openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go index 5fdae40b3..2a4ba47c4 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin // +build darwin package unix diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go index 003916ed7..453a942c5 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Socket control messages diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go index 57a0021da..0840fe4a5 100644 --- a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin freebsd linux netbsd openbsd solaris +//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin freebsd linux netbsd openbsd solaris zos package unix @@ -36,6 +37,10 @@ func cmsgAlignOf(salen int) int { if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" { salign = 16 } + case "zos": + // z/OS socket macros use [32-bit] sizeof(int) alignment, + // not pointer width. + salign = SizeofInt } return (salen + salign - 1) & ^(salign - 1) diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go index 17fb69868..8ba89ed86 100644 --- a/vendor/golang.org/x/sys/unix/str.go +++ b/vendor/golang.org/x/sys/unix/str.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index ab75ef9cc..649fa8740 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos // Package unix contains an interface to the low-level operating system // primitives. OS details vary depending on the underlying system, and diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index 440815382..d8efb715f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix // +build aix // Aix system calls. @@ -251,7 +252,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { } } - bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] sa.Name = string(bytes) return sa, nil @@ -419,8 +420,8 @@ func (w WaitStatus) TrapCause() int { return -1 } //sys Mknod(path string, mode uint32, dev int) (err error) //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) -//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 -//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) //sys read(fd int, p []byte) (n int, err error) //sys Readlink(path string, buf []byte) (n int, err error) //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) @@ -439,8 +440,8 @@ func (w WaitStatus) TrapCause() int { return -1 } //sysnb Times(tms *Tms) (ticks uintptr, err error) //sysnb Umask(mask int) (oldmask int) //sysnb Uname(buf *Utsname) (err error) -//sys Unlink(path string) (err error) -//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Ustat(dev int, ubuf *Ustat_t) (err error) //sys write(fd int, p []byte) (n int, err error) //sys readlen(fd int, p *byte, np int) (n int, err error) = read @@ -514,7 +515,7 @@ func Munmap(b []byte) (err error) { //sys Munlock(b []byte) (err error) //sys Munlockall() (err error) -//sysnb pipe(p *[2]_C_int) (err error) +//sysnb pipe(p *[2]_C_int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go index b3c8e3301..e92a0be16 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc +//go:build aix && ppc +// +build aix,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go index 9a6e02417..16eed1709 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix -// +build ppc64 +//go:build aix && ppc64 +// +build aix,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index bc634a280..95ac3946b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin || dragonfly || freebsd || netbsd || openbsd // +build darwin dragonfly freebsd netbsd openbsd // BSD system call wrappers shared by *BSD based systems @@ -318,7 +319,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) { return anyToSockaddr(fd, &rsa) } -//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) // GetsockoptString returns the string value of the socket option opt for the // socket associated with fd at the given socket level. @@ -332,8 +333,8 @@ func GetsockoptString(fd, level, opt int) (string, error) { return string(buf[:vallen-1]), nil } -//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) -//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { @@ -626,7 +627,7 @@ func Futimes(fd int, tv []Timeval) error { return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } -//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) func Poll(fds []PollFd, timeout int) (n int, err error) { if len(fds) == 0 { diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go index b31ef0358..b0098607c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && go1.12 && !go1.13 // +build darwin,go1.12,!go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go index ee852f1ab..5fc3cda6f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && go1.13 // +build darwin,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 16f9c226b..1223d7aed 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -119,7 +119,7 @@ type attrList struct { Forkattr uint32 } -//sysnb pipe(p *[2]int32) (err error) +//sysnb pipe(p *[2]int32) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -272,7 +272,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { options) } -//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) +//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { // Darwin doesn't support SYS_UTIMENSAT @@ -320,7 +320,7 @@ func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { return err } -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} @@ -378,6 +378,15 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return } +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) /* @@ -472,8 +481,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) -//sys munmap(addr uintptr, length uintptr) (err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index ee065fcf2..647467712 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && darwin // +build 386,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index 7a1f64a7b..b37310ce9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && darwin // +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index 9f85fd404..d51ec9963 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && darwin // +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index f34c86c89..38bec3002 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin && go1.12 // +build darwin,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index a4f2944a2..5af108a50 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -95,7 +95,7 @@ func direntNamlen(buf []byte) (uint64, bool) { return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } -//sysnb pipe() (r int, w int, err error) +//sysnb pipe() (r int, w int, err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -105,16 +105,16 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (r int, w int, err error) -func Pipe2(p []int, flags int) error { +func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { return EINVAL } var pp [2]_C_int - err := pipe2(&pp, flags) - p[0] = int(pp[0]) - p[1] = int(pp[1]) + // pipe2 on dragonfly takes an fds array as an argument, but still + // returns the file descriptors. + p[0], p[1], err = pipe2(&pp, flags) return err } @@ -170,7 +170,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { err := sysctl(mib, old, oldlen, nil, 0) @@ -337,8 +337,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) -//sys munmap(addr uintptr, length uintptr) (err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go index a6b4830ac..4e2d32120 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && dragonfly // +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index acc00c2e6..18c392cf3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -126,6 +126,15 @@ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) } +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { var rsa RawSockaddrAny var len _Socklen = SizeofSockaddrAny @@ -188,9 +197,9 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { return ENOSYS } -//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} @@ -665,8 +674,8 @@ func PtraceSingleStep(pid int) (err error) { //sys Unlinkat(dirfd int, path string, flags int) (err error) //sys Unmount(path string, flags int) (err error) //sys write(fd int, p []byte) (n int, err error) -//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) -//sys munmap(addr uintptr, length uintptr) (err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) //sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ //sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE //sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 72a506ddc..342fc32b1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && freebsd // +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index d5e376aca..a32d5aa4a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && freebsd // +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 4ea45bce5..1e36d39ab 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && freebsd // +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index aa5326db1..a09a1537b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && freebsd // +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go index 7a2d4120f..c5c58806c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -4,11 +4,14 @@ // illumos system calls not present on Solaris. +//go:build amd64 && illumos // +build amd64,illumos package unix -import "unsafe" +import ( + "unsafe" +) func bytes2iovec(bs [][]byte) []Iovec { iovecs := make([]Iovec, len(bs)) @@ -75,3 +78,52 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { } return } + +//sys putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) + +func Putmsg(fd int, cl []byte, data []byte, flags int) (err error) { + var clp, datap *strbuf + if len(cl) > 0 { + clp = &strbuf{ + Len: int32(len(cl)), + Buf: (*int8)(unsafe.Pointer(&cl[0])), + } + } + if len(data) > 0 { + datap = &strbuf{ + Len: int32(len(data)), + Buf: (*int8)(unsafe.Pointer(&data[0])), + } + } + return putmsg(fd, clp, datap, flags) +} + +//sys getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) + +func Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) { + var clp, datap *strbuf + if len(cl) > 0 { + clp = &strbuf{ + Maxlen: int32(len(cl)), + Buf: (*int8)(unsafe.Pointer(&cl[0])), + } + } + if len(data) > 0 { + datap = &strbuf{ + Maxlen: int32(len(data)), + Buf: (*int8)(unsafe.Pointer(&data[0])), + } + } + + if err = getmsg(fd, clp, datap, &flags); err != nil { + return nil, nil, 0, err + } + + if len(cl) > 0 { + retCl = cl[:clp.Len] + } + if len(data) > 0 { + retData = data[:datap.Len] + } + return retCl, retData, flags, nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 28be1306e..44ea96e39 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -137,12 +137,61 @@ func IoctlFileClone(destFd, srcFd int) error { return ioctl(destFd, FICLONE, uintptr(srcFd)) } +type FileDedupeRange struct { + Src_offset uint64 + Src_length uint64 + Reserved1 uint16 + Reserved2 uint32 + Info []FileDedupeRangeInfo +} + +type FileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + // IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the -// range of data conveyed in value with the file associated with the file -// descriptor destFd. See the ioctl_fideduperange(2) man page for details. -func IoctlFileDedupeRange(destFd int, value *FileDedupeRange) error { - err := ioctl(destFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) +// range of data conveyed in value from the file associated with the file +// descriptor srcFd to the value.Info destinations. See the +// ioctl_fideduperange(2) man page for details. +func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { + buf := make([]byte, SizeofRawFileDedupeRange+ + len(value.Info)*SizeofRawFileDedupeRangeInfo) + rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0])) + rawrange.Src_offset = value.Src_offset + rawrange.Src_length = value.Src_length + rawrange.Dest_count = uint16(len(value.Info)) + rawrange.Reserved1 = value.Reserved1 + rawrange.Reserved2 = value.Reserved2 + + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + rawinfo.Dest_fd = value.Info[i].Dest_fd + rawinfo.Dest_offset = value.Info[i].Dest_offset + rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped + rawinfo.Status = value.Info[i].Status + rawinfo.Reserved = value.Info[i].Reserved + } + + err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0]))) + + // Output + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + value.Info[i].Dest_fd = rawinfo.Dest_fd + value.Info[i].Dest_offset = rawinfo.Dest_offset + value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped + value.Info[i].Status = rawinfo.Status + value.Info[i].Reserved = rawinfo.Reserved + } + return err } @@ -153,6 +202,36 @@ func IoctlWatchdogKeepalive(fd int) error { return ioctl(fd, WDIOC_KEEPALIVE, 0) } +func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { + err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { + var value HIDRawDevInfo + err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlHIDGetRawName(fd int) (string, error) { + var value [_HIDIOCGRAWNAME_LEN]byte + err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0]))) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawPhys(fd int) (string, error) { + var value [_HIDIOCGRAWPHYS_LEN]byte + err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0]))) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawUniq(fd int) (string, error) { + var value [_HIDIOCGRAWUNIQ_LEN]byte + err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0]))) + return ByteSliceToString(value[:]), err +} + //sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) func Link(oldpath string, newpath string) (err error) { @@ -1482,8 +1561,8 @@ func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) } -//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL -//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { var msg Msghdr @@ -1798,6 +1877,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys ClockGettime(clockid int32, time *Timespec) (err error) //sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) //sys Close(fd int) (err error) +//sys CloseRange(first uint, last uint, flags uint) (err error) //sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys DeleteModule(name string, flags int) (err error) //sys Dup(oldfd int) (fd int, err error) @@ -1860,8 +1940,8 @@ func Getpgrp() (pid int) { //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT -//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 -//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) //sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 //sys read(fd int, p []byte) (n int, err error) //sys Removexattr(path string, attr string) (err error) @@ -1934,9 +2014,9 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { //sys Syncfs(fd int) (err error) //sysnb Sysinfo(info *Sysinfo_t) (err error) //sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) -//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) -//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) -//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) +//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) +//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) +//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) //sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) //sysnb Times(tms *Tms) (ticks uintptr, err error) //sysnb Umask(mask int) (oldmask int) @@ -2196,8 +2276,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return EACCES } -//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT -//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT +//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT +//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT // fileHandle is the argument to nameToHandleAt and openByHandleAt. We // originally tried to generate it via unix/linux/types.go with "type diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index c97c2ee53..7b52e5d8a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && linux // +build 386,linux package unix @@ -31,7 +32,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { @@ -98,7 +99,7 @@ type rlimit32 struct { Max uint32 } -//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) @@ -129,7 +130,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { return } -//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, rlim, nil) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 72efe86ed..28b764115 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && linux // +build amd64,linux package unix @@ -138,7 +139,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go index baa771f8a..8b0f0f3aa 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build amd64,linux -// +build gc +//go:build amd64 && linux && gc +// +build amd64,linux,gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 496837b1e..68877728e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && linux // +build arm,linux package unix @@ -35,7 +36,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { @@ -129,8 +130,8 @@ func Utime(path string, buf *Utimbuf) error { //sys utimes(path string, times *[2]Timeval) (err error) -//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 -//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 @@ -177,7 +178,7 @@ type rlimit32 struct { Max uint32 } -//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) @@ -208,7 +209,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { return } -//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, rlim, nil) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index c6de6b913..7ed703476 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && linux // +build arm64,linux package unix @@ -155,7 +156,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go index 9edf3961b..2b1168d7d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gc // +build linux,gc package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go index 90e33d8cf..9843fb489 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gc && 386 // +build linux,gc,386 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go index 1a97baae7..a6008fccd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && gc && linux // +build arm,gc,linux package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go index 308eb7aec..7740af242 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gccgo && 386 // +build linux,gccgo,386 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go index aa7fc9e19..e16a12299 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && gccgo && arm // +build linux,gccgo,arm package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index f0287476c..06dec06fa 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (mips64 || mips64le) // +build linux // +build mips64 mips64le @@ -104,7 +105,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index c11328111..8f0d0a5b5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (mips || mipsle) // +build linux // +build mips mipsle @@ -112,7 +113,7 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: int32(sec), Usec: int32(usec)} } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { @@ -125,7 +126,7 @@ func Pipe2(p []int, flags int) (err error) { return } -//sysnb pipe() (p1 int, p2 int, err error) +//sysnb pipe() (p1 int, p2 int, err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -153,7 +154,7 @@ type rlimit32 struct { Max uint32 } -//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT func Getrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, nil, rlim) @@ -181,7 +182,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { return } -//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { err = prlimit(0, resource, rlim, nil) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 349374409..0b1f0d6da 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (ppc64 || ppc64le) // +build linux // +build ppc64 ppc64le @@ -99,7 +100,7 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -//sysnb pipe(p *[2]_C_int) (err error) +//sysnb pipe(p *[2]_C_int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -112,7 +113,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index b0b150556..ce9bcd317 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build riscv64 && linux // +build riscv64,linux package unix @@ -154,7 +155,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index 2363f7499..a1e45694b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build s390x && linux // +build s390x,linux package unix @@ -76,7 +77,7 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: sec, Usec: usec} } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -249,7 +250,7 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen } func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error { - args := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)} + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen} _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0) if err != 0 { return err diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index d389f1518..49055a3cf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build sparc64 && linux // +build sparc64,linux package unix @@ -115,7 +116,7 @@ func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } -//sysnb pipe(p *[2]_C_int) (err error) +//sysnb pipe(p *[2]_C_int) (err error) func Pipe(p []int) (err error) { if len(p) != 2 { @@ -128,7 +129,7 @@ func Pipe(p []int) (err error) { return } -//sysnb pipe2(p *[2]_C_int, flags int) (err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) func Pipe2(p []int, flags int) (err error) { if len(p) != 2 { diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index 1e6843b4c..853d5f0f4 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -110,7 +110,8 @@ func direntNamlen(buf []byte) (uint64, bool) { return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) } -//sysnb pipe() (fd1 int, fd2 int, err error) +//sysnb pipe() (fd1 int, fd2 int, err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return EINVAL @@ -119,7 +120,21 @@ func Pipe(p []int) (err error) { return } -//sys Getdents(fd int, buf []byte) (n int, err error) +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + +//sys Getdents(fd int, buf []byte) (n int, err error) + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { n, err = Getdents(fd, buf) if err != nil || basep == nil { @@ -159,7 +174,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { var value Ptmget diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go index 24da8b524..5199d282f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && netbsd // +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go index 25a0ac825..70a9c52e9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && netbsd // +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go index 21591ecd4..3eb5942f9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && netbsd // +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go index 804749635..fc6ccfd81 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && netbsd // +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 6a50b50bd..22b550385 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -92,7 +92,7 @@ func Pipe2(p []int, flags int) error { return err } -//sys Getdents(fd int, buf []byte) (n int, err error) +//sys Getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { n, err = Getdents(fd, buf) if err != nil || basep == nil { @@ -154,7 +154,7 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL //sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go index 42b5a0e51..6baabcdcb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index 6ea4b4883..bab25360e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go index 1c3d26fa2..8eed3c4d4 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go index a8c458cb0..483dde99d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 184786ed9..77fcde7c1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -565,7 +565,12 @@ func Minor(dev uint64) uint32 { * Expose the ioctl function */ -//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlRet(fd int, req uint, arg uintptr) (ret int, err error) = libc.ioctl + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, err = ioctlRet(fd, req, arg) + return err +} func IoctlSetTermio(fd int, req uint, value *Termio) error { err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) @@ -579,7 +584,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) { return &value, err } -//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) func Poll(fds []PollFd, timeout int) (n int, err error) { if len(fds) == 0 { @@ -682,6 +687,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Statvfs(path string, vfsstat *Statvfs_t) (err error) //sys Symlink(path string, link string) (err error) //sys Sync() (err error) +//sys Sysconf(which int) (n int64, err error) //sysnb Times(tms *Tms) (ticks uintptr, err error) //sys Truncate(path string, length int64) (err error) //sys Fsync(fd int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go index b22a34d7a..0bd25ef81 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build amd64 && solaris // +build amd64,solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 400ba9fbc..a7618ceb5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go index 87bd161ce..5898e9a52 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -2,8 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build (darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris) && gc && !ppc64le && !ppc64 // +build darwin dragonfly freebsd linux netbsd openbsd solaris -// +build gc,!ppc64le,!ppc64 +// +build gc +// +build !ppc64le +// +build !ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go index d36216c3c..f6f707acf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build linux && (ppc64le || ppc64) && gc // +build linux // +build ppc64le ppc64 // +build gc diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go new file mode 100644 index 000000000..13f58d2b2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -0,0 +1,1781 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "bytes" + "runtime" + "sort" + "sync" + "syscall" + "unsafe" +) + +const ( + O_CLOEXEC = 0 // Dummy value (not supported). + AF_LOCAL = AF_UNIX // AF_LOCAL is an alias for AF_UNIX +) + +func syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawsyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawsyscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) + +func copyStat(stat *Stat_t, statLE *Stat_LE_t) { + stat.Dev = uint64(statLE.Dev) + stat.Ino = uint64(statLE.Ino) + stat.Nlink = uint64(statLE.Nlink) + stat.Mode = uint32(statLE.Mode) + stat.Uid = uint32(statLE.Uid) + stat.Gid = uint32(statLE.Gid) + stat.Rdev = uint64(statLE.Rdev) + stat.Size = statLE.Size + stat.Atim.Sec = int64(statLE.Atim) + stat.Atim.Nsec = 0 //zos doesn't return nanoseconds + stat.Mtim.Sec = int64(statLE.Mtim) + stat.Mtim.Nsec = 0 //zos doesn't return nanoseconds + stat.Ctim.Sec = int64(statLE.Ctim) + stat.Ctim.Nsec = 0 //zos doesn't return nanoseconds + stat.Blksize = int64(statLE.Blksize) + stat.Blocks = statLE.Blocks +} + +func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +func svcLoad(name *byte) unsafe.Pointer +func svcUnload(name *byte, fnptr unsafe.Pointer) int64 + +func (d *Dirent) NameString() string { + if d == nil { + return "" + } + return string(d.Name[:d.Namlen]) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { + // TODO(neeilan): Implement use of first param (fd) + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // For z/OS, only replace NUL with @ when the + // length is not zero. + if pp.Len != 0 && pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // + // For z/OS, the length of the name is a field + // in the structure. To be on the safe side, we + // will still scan the name for a NUL but only + // to the length provided in the structure. + // + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < int(pp.Len) && pp.Path[n] != 0 { + n++ + } + bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = int32(length) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys write(fd int, p []byte) (n int, err error) + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP +//sys munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL + +//sys Access(path string, mode uint32) (err error) = SYS___ACCESS_A +//sys Chdir(path string) (err error) = SYS___CHDIR_A +//sys Chown(path string, uid int, gid int) (err error) = SYS___CHOWN_A +//sys Chmod(path string, mode uint32) (err error) = SYS___CHMOD_A +//sys Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A +//sys Dup(oldfd int) (fd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL +//sys fstat(fd int, stat *Stat_LE_t) (err error) + +func Fstat(fd int, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = fstat(fd, &statLE) + copyStat(stat, &statLE) + return +} + +//sys Fstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getpagesize() (pgsize int) = SYS_GETPAGESIZE +//sys Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT +//sys Msync(b []byte, flags int) (err error) = SYS_MSYNC +//sys Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL +//sys Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES +//sys W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT + +//sys Mount(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A +//sys Unmount(filesystem string, mtm int) (err error) = SYS___UMOUNT_A +//sys Chroot(path string) (err error) = SYS___CHROOT_A +//sysnb Uname(buf *Utsname) (err error) = SYS___UNAME_A + +func Ptsname(fd int) (name string, err error) { + r0, _, e1 := syscall_syscall(SYS___PTSNAME_A, uintptr(fd), 0, 0) + name = u2s(unsafe.Pointer(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func u2s(cstr unsafe.Pointer) string { + str := (*[1024]uint8)(cstr) + i := 0 + for str[i] != 0 { + i++ + } + return string(str[:i]) +} + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0) + for i := 0; e1 == EAGAIN && i < 10; i++ { + _, _, _ = syscall_syscall(SYS_USLEEP, uintptr(10), 0, 0) + _, _, e1 = syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0) + } + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +// Dummy function: there are no semantics for Madvise on z/OS +func Madvise(b []byte, advice int) (err error) { + return +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) = SYS_GETPGID + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getppid() (pid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT + +//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE + +func Getrusage(who int, rusage *Rusage) (err error) { + var ruz rusage_zos + err = getrusage(who, &ruz) + //Only the first two fields of Rusage are set + rusage.Utime.Sec = ruz.Utime.Sec + rusage.Utime.Usec = int64(ruz.Utime.Usec) + rusage.Stime.Sec = ruz.Stime.Sec + rusage.Stime.Usec = int64(ruz.Stime.Usec) + return +} + +//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID +//sysnb Getuid() (uid int) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A +//sys Link(path string, link string) (err error) = SYS___LINK_A +//sys Listen(s int, n int) (err error) +//sys lstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A + +func Lstat(path string, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = lstat(path, &statLE) + copyStat(stat, &statLE) + return +} + +//sys Mkdir(path string, mode uint32) (err error) = SYS___MKDIR_A +//sys Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A +//sys Mknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) = SYS___READLINK_A +//sys Rename(from string, to string) (err error) = SYS___RENAME_A +//sys Rmdir(path string) (err error) = SYS___RMDIR_A +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) = SYS_SETPGID +//sysnb Setrlimit(resource int, lim *Rlimit) (err error) +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID +//sysnb Setsid() (pid int, err error) = SYS_SETSID +//sys Setuid(uid int) (err error) = SYS_SETUID +//sys Setgid(uid int) (err error) = SYS_SETGID +//sys Shutdown(fd int, how int) (err error) +//sys stat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A + +func Stat(path string, sta *Stat_t) (err error) { + var statLE Stat_LE_t + err = stat(path, &statLE) + copyStat(sta, &statLE) + return +} + +//sys Symlink(path string, link string) (err error) = SYS___SYMLINK_A +//sys Sync() = SYS_SYNC +//sys Truncate(path string, length int64) (err error) = SYS___TRUNCATE_A +//sys Tcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR +//sys Tcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR +//sys Umask(mask int) (oldmask int) +//sys Unlink(path string) (err error) = SYS___UNLINK_A +//sys Utime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A + +//sys open(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return open(path, mode, perm) +} + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + wd, err := Getwd() + if err != nil { + return err + } + + if err := Fchdir(dirfd); err != nil { + return err + } + defer Chdir(wd) + + return Mkfifo(path, mode) +} + +//sys remove(path string) (err error) + +func Remove(path string) error { + return remove(path) +} + +const ImplementsGetwd = true + +func Getcwd(buf []byte) (n int, err error) { + var p unsafe.Pointer + if len(buf) > 0 { + p = unsafe.Pointer(&buf[0]) + } else { + p = unsafe.Pointer(&_zero) + } + _, _, e := syscall_syscall(SYS___GETCWD_A, uintptr(p), uintptr(len(buf)), 0) + n = clen(buf) + 1 + if e != 0 { + err = errnoErr(e) + } + return +} + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func gettid() uint64 + +func Gettid() (tid int) { + return int(gettid()) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w & mask) +} + +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + // TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want. + // At the moment rusage will not be touched. + var status _C_int + wpid, err = waitpid(pid, &status, options) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sysnb gettimeofday(tv *timeval_zos) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + var tvz timeval_zos + err = gettimeofday(&tvz) + tv.Sec = tvz.Sec + tv.Usec = int64(tvz.Usec) + return +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { //fix + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A + +func Utimes(path string, tv []Timeval) (err error) { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS ) + return anyToSockaddr(0, &rsa) +} + +const ( + // identifier constants + nwmHeaderIdentifier = 0xd5e6d4c8 + nwmFilterIdentifier = 0xd5e6d4c6 + nwmTCPConnIdentifier = 0xd5e6d4c3 + nwmRecHeaderIdentifier = 0xd5e6d4d9 + nwmIPStatsIdentifier = 0xd5e6d4c9d7e2e340 + nwmIPGStatsIdentifier = 0xd5e6d4c9d7c7e2e3 + nwmTCPStatsIdentifier = 0xd5e6d4e3c3d7e2e3 + nwmUDPStatsIdentifier = 0xd5e6d4e4c4d7e2e3 + nwmICMPGStatsEntry = 0xd5e6d4c9c3d4d7c7 + nwmICMPTStatsEntry = 0xd5e6d4c9c3d4d7e3 + + // nwmHeader constants + nwmVersion1 = 1 + nwmVersion2 = 2 + nwmCurrentVer = 2 + + nwmTCPConnType = 1 + nwmGlobalStatsType = 14 + + // nwmFilter constants + nwmFilterLclAddrMask = 0x20000000 // Local address + nwmFilterSrcAddrMask = 0x20000000 // Source address + nwmFilterLclPortMask = 0x10000000 // Local port + nwmFilterSrcPortMask = 0x10000000 // Source port + + // nwmConnEntry constants + nwmTCPStateClosed = 1 + nwmTCPStateListen = 2 + nwmTCPStateSynSent = 3 + nwmTCPStateSynRcvd = 4 + nwmTCPStateEstab = 5 + nwmTCPStateFinWait1 = 6 + nwmTCPStateFinWait2 = 7 + nwmTCPStateClosWait = 8 + nwmTCPStateLastAck = 9 + nwmTCPStateClosing = 10 + nwmTCPStateTimeWait = 11 + nwmTCPStateDeletTCB = 12 + + // Existing constants on linux + BPF_TCP_CLOSE = 1 + BPF_TCP_LISTEN = 2 + BPF_TCP_SYN_SENT = 3 + BPF_TCP_SYN_RECV = 4 + BPF_TCP_ESTABLISHED = 5 + BPF_TCP_FIN_WAIT1 = 6 + BPF_TCP_FIN_WAIT2 = 7 + BPF_TCP_CLOSE_WAIT = 8 + BPF_TCP_LAST_ACK = 9 + BPF_TCP_CLOSING = 10 + BPF_TCP_TIME_WAIT = 11 + BPF_TCP_NEW_SYN_RECV = -1 + BPF_TCP_MAX_STATES = -2 +) + +type nwmTriplet struct { + offset uint32 + length uint32 + number uint32 +} + +type nwmQuadruplet struct { + offset uint32 + length uint32 + number uint32 + match uint32 +} + +type nwmHeader struct { + ident uint32 + length uint32 + version uint16 + nwmType uint16 + bytesNeeded uint32 + options uint32 + _ [16]byte + inputDesc nwmTriplet + outputDesc nwmQuadruplet +} + +type nwmFilter struct { + ident uint32 + flags uint32 + resourceName [8]byte + resourceId uint32 + listenerId uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + _ uint16 + _ uint16 + asid uint16 + _ [2]byte + tnLuName [8]byte + tnMonGrp uint32 + tnAppl [8]byte + applData [40]byte + nInterface [16]byte + dVipa [16]byte + dVipaPfx uint16 + dVipaPort uint16 + dVipaFamily byte + _ [3]byte + destXCF [16]byte + destXCFPfx uint16 + destXCFFamily byte + _ [1]byte + targIP [16]byte + targIPPfx uint16 + targIPFamily byte + _ [1]byte + _ [20]byte +} + +type nwmRecHeader struct { + ident uint32 + length uint32 + number byte + _ [3]byte +} + +type nwmTCPStatsEntry struct { + ident uint64 + currEstab uint32 + activeOpened uint32 + passiveOpened uint32 + connClosed uint32 + estabResets uint32 + attemptFails uint32 + passiveDrops uint32 + timeWaitReused uint32 + inSegs uint64 + predictAck uint32 + predictData uint32 + inDupAck uint32 + inBadSum uint32 + inBadLen uint32 + inShort uint32 + inDiscOldTime uint32 + inAllBeforeWin uint32 + inSomeBeforeWin uint32 + inAllAfterWin uint32 + inSomeAfterWin uint32 + inOutOfOrder uint32 + inAfterClose uint32 + inWinProbes uint32 + inWinUpdates uint32 + outWinUpdates uint32 + outSegs uint64 + outDelayAcks uint32 + outRsts uint32 + retransSegs uint32 + retransTimeouts uint32 + retransDrops uint32 + pmtuRetrans uint32 + pmtuErrors uint32 + outWinProbes uint32 + probeDrops uint32 + keepAliveProbes uint32 + keepAliveDrops uint32 + finwait2Drops uint32 + acceptCount uint64 + inBulkQSegs uint64 + inDiscards uint64 + connFloods uint32 + connStalls uint32 + cfgEphemDef uint16 + ephemInUse uint16 + ephemHiWater uint16 + flags byte + _ [1]byte + ephemExhaust uint32 + smcRCurrEstabLnks uint32 + smcRLnkActTimeOut uint32 + smcRActLnkOpened uint32 + smcRPasLnkOpened uint32 + smcRLnksClosed uint32 + smcRCurrEstab uint32 + smcRActiveOpened uint32 + smcRPassiveOpened uint32 + smcRConnClosed uint32 + smcRInSegs uint64 + smcROutSegs uint64 + smcRInRsts uint32 + smcROutRsts uint32 + smcDCurrEstabLnks uint32 + smcDActLnkOpened uint32 + smcDPasLnkOpened uint32 + smcDLnksClosed uint32 + smcDCurrEstab uint32 + smcDActiveOpened uint32 + smcDPassiveOpened uint32 + smcDConnClosed uint32 + smcDInSegs uint64 + smcDOutSegs uint64 + smcDInRsts uint32 + smcDOutRsts uint32 +} + +type nwmConnEntry struct { + ident uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + startTime [8]byte // uint64, changed to prevent padding from being inserted + lastActivity [8]byte // uint64 + bytesIn [8]byte // uint64 + bytesOut [8]byte // uint64 + inSegs [8]byte // uint64 + outSegs [8]byte // uint64 + state uint16 + activeOpen byte + flag01 byte + outBuffered uint32 + inBuffered uint32 + maxSndWnd uint32 + reXmtCount uint32 + congestionWnd uint32 + ssThresh uint32 + roundTripTime uint32 + roundTripVar uint32 + sendMSS uint32 + sndWnd uint32 + rcvBufSize uint32 + sndBufSize uint32 + outOfOrderCount uint32 + lcl0WindowCount uint32 + rmt0WindowCount uint32 + dupacks uint32 + flag02 byte + sockOpt6Cont byte + asid uint16 + resourceName [8]byte + resourceId uint32 + subtask uint32 + sockOpt byte + sockOpt6 byte + clusterConnFlag byte + proto byte + targetAppl [8]byte + luName [8]byte + clientUserId [8]byte + logMode [8]byte + timeStamp uint32 + timeStampAge uint32 + serverResourceId uint32 + intfName [16]byte + ttlsStatPol byte + ttlsStatConn byte + ttlsSSLProt uint16 + ttlsNegCiph [2]byte + ttlsSecType byte + ttlsFIPS140Mode byte + ttlsUserID [8]byte + applData [40]byte + inOldestTime [8]byte // uint64 + outOldestTime [8]byte // uint64 + tcpTrustedPartner byte + _ [3]byte + bulkDataIntfName [16]byte + ttlsNegCiph4 [4]byte + smcReason uint32 + lclSMCLinkId uint32 + rmtSMCLinkId uint32 + smcStatus byte + smcFlags byte + _ [2]byte + rcvWnd uint32 + lclSMCBufSz uint32 + rmtSMCBufSz uint32 + ttlsSessID [32]byte + ttlsSessIDLen int16 + _ [1]byte + smcDStatus byte + smcDReason uint32 +} + +var svcNameTable [][]byte = [][]byte{ + []byte("\xc5\xe9\xc2\xd5\xd4\xc9\xc6\xf4"), // svc_EZBNMIF4 +} + +const ( + svc_EZBNMIF4 = 0 +) + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + jobname := []byte("\x5c\x40\x40\x40\x40\x40\x40\x40") // "*" + responseBuffer := [4096]byte{0} + var bufferAlet, reasonCode uint32 = 0, 0 + var bufferLen, returnValue, returnCode int32 = 4096, 0, 0 + + dsa := [18]uint64{0} + var argv [7]unsafe.Pointer + argv[0] = unsafe.Pointer(&jobname[0]) + argv[1] = unsafe.Pointer(&responseBuffer[0]) + argv[2] = unsafe.Pointer(&bufferAlet) + argv[3] = unsafe.Pointer(&bufferLen) + argv[4] = unsafe.Pointer(&returnValue) + argv[5] = unsafe.Pointer(&returnCode) + argv[6] = unsafe.Pointer(&reasonCode) + + request := (*struct { + header nwmHeader + filter nwmFilter + })(unsafe.Pointer(&responseBuffer[0])) + + EZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0]) + if EZBNMIF4 == nil { + return nil, errnoErr(EINVAL) + } + + // GetGlobalStats EZBNMIF4 call + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmGlobalStatsType + request.header.options = 0x80000000 + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmRecHeader + recHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if recHeader.ident != nwmRecHeaderIdentifier { + return nil, errnoErr(EINVAL) + } + + // Parse nwmTriplets to get offsets of returned entries + var sections []*uint64 + var sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0])) + for i := uint32(0); i < uint32(recHeader.number); i++ { + offset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc)) + sectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset])) + for j := uint32(0); j < sectionDesc.number; j++ { + offset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length + sections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset]))) + } + } + + // Find nwmTCPStatsEntry in returned entries + var tcpStats *nwmTCPStatsEntry = nil + for _, ptr := range sections { + switch *ptr { + case nwmTCPStatsIdentifier: + if tcpStats != nil { + return nil, errnoErr(EINVAL) + } + tcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr)) + case nwmIPStatsIdentifier: + case nwmIPGStatsIdentifier: + case nwmUDPStatsIdentifier: + case nwmICMPGStatsEntry: + case nwmICMPTStatsEntry: + default: + return nil, errnoErr(EINVAL) + } + } + if tcpStats == nil { + return nil, errnoErr(EINVAL) + } + + // GetConnectionDetail EZBNMIF4 call + responseBuffer = [4096]byte{0} + dsa = [18]uint64{0} + bufferAlet, reasonCode = 0, 0 + bufferLen, returnValue, returnCode = 4096, 0, 0 + nameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process + nameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12))) + argv[0] = unsafe.Pointer(uintptr(*nameptr)) + + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmTCPConnType + request.header.options = 0x80000000 + + request.filter.ident = nwmFilterIdentifier + + var localSockaddr RawSockaddrAny + socklen := _Socklen(SizeofSockaddrAny) + err := getsockname(fd, &localSockaddr, &socklen) + if err != nil { + return nil, errnoErr(EINVAL) + } + if localSockaddr.Addr.Family == AF_INET { + localSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET + var i int + for i = 0; i < 4; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 4 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 4; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } else if localSockaddr.Addr.Family == AF_INET6 { + localSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET6 + var i int + for i = 0; i < 16; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 16 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 16; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmConnEntry + conn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if conn.ident != nwmTCPConnIdentifier { + return nil, errnoErr(EINVAL) + } + + // Copy data from the returned data structures into tcpInfo + // Stats from nwmConnEntry are specific to that connection. + // Stats from nwmTCPStatsEntry are global (to the interface?) + // Fields may not be an exact match. Some fields have no equivalent. + var tcpinfo TCPInfo + tcpinfo.State = uint8(conn.state) + tcpinfo.Ca_state = 0 // dummy + tcpinfo.Retransmits = uint8(tcpStats.retransSegs) + tcpinfo.Probes = uint8(tcpStats.outWinProbes) + tcpinfo.Backoff = 0 // dummy + tcpinfo.Options = 0 // dummy + tcpinfo.Rto = tcpStats.retransTimeouts + tcpinfo.Ato = tcpStats.outDelayAcks + tcpinfo.Snd_mss = conn.sendMSS + tcpinfo.Rcv_mss = conn.sendMSS // dummy + tcpinfo.Unacked = 0 // dummy + tcpinfo.Sacked = 0 // dummy + tcpinfo.Lost = 0 // dummy + tcpinfo.Retrans = conn.reXmtCount + tcpinfo.Fackets = 0 // dummy + tcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0]))) + tcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0]))) + tcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate + tcpinfo.Rcv_ssthresh = conn.ssThresh + tcpinfo.Rtt = conn.roundTripTime + tcpinfo.Rttvar = conn.roundTripVar + tcpinfo.Snd_ssthresh = conn.ssThresh // dummy + tcpinfo.Snd_cwnd = conn.congestionWnd + tcpinfo.Advmss = conn.sendMSS // dummy + tcpinfo.Reordering = 0 // dummy + tcpinfo.Rcv_rtt = conn.roundTripTime // dummy + tcpinfo.Rcv_space = conn.sendMSS // dummy + tcpinfo.Total_retrans = conn.reXmtCount + + svcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4) + + return &tcpinfo, nil +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + + return string(buf[:vallen-1]), nil +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = SizeofSockaddrAny + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + // TODO(neeilan): Remove 0 arg added to get this compiling on z/OS + from, err = anyToSockaddr(0, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = int32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +func Opendir(name string) (uintptr, error) { + p, err := BytePtrFromString(name) + if err != nil { + return 0, err + } + dir, _, e := syscall_syscall(SYS___OPENDIR_A, uintptr(unsafe.Pointer(p)), 0, 0) + runtime.KeepAlive(unsafe.Pointer(p)) + if e != 0 { + err = errnoErr(e) + } + return dir, err +} + +// clearsyscall.Errno resets the errno value to 0. +func clearErrno() + +func Readdir(dir uintptr) (*Dirent, error) { + var ent Dirent + var res uintptr + // __readdir_r_a returns errno at the end of the directory stream, rather than 0. + // Therefore to avoid false positives we clear errno before calling it. + + // TODO(neeilan): Commented this out to get sys/unix compiling on z/OS. Uncomment and fix. Error: "undefined: clearsyscall" + //clearsyscall.Errno() // TODO(mundaym): check pre-emption rules. + + e, _, _ := syscall_syscall(SYS___READDIR_R_A, dir, uintptr(unsafe.Pointer(&ent)), uintptr(unsafe.Pointer(&res))) + var err error + if e != 0 { + err = errnoErr(Errno(e)) + } + if res == 0 { + return nil, err + } + return &ent, err +} + +func Closedir(dir uintptr) error { + _, _, e := syscall_syscall(SYS_CLOSEDIR, dir, 0, 0) + if e != 0 { + return errnoErr(e) + } + return nil +} + +func Seekdir(dir uintptr, pos int) { + _, _, _ = syscall_syscall(SYS_SEEKDIR, dir, uintptr(pos), 0) +} + +func Telldir(dir uintptr) (int, error) { + p, _, e := syscall_syscall(SYS_TELLDIR, dir, 0, 0) + pos := int(p) + if pos == -1 { + return pos, errnoErr(e) + } + return pos, nil +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + // struct flock is packed on z/OS. We can't emulate that in Go so + // instead we pack it here. + var flock [24]byte + *(*int16)(unsafe.Pointer(&flock[0])) = lk.Type + *(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence + *(*int64)(unsafe.Pointer(&flock[4])) = lk.Start + *(*int64)(unsafe.Pointer(&flock[12])) = lk.Len + *(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid + _, _, errno := syscall_syscall(SYS_FCNTL, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock))) + lk.Type = *(*int16)(unsafe.Pointer(&flock[0])) + lk.Whence = *(*int16)(unsafe.Pointer(&flock[2])) + lk.Start = *(*int64)(unsafe.Pointer(&flock[4])) + lk.Len = *(*int64)(unsafe.Pointer(&flock[12])) + lk.Pid = *(*int32)(unsafe.Pointer(&flock[20])) + if errno == 0 { + return nil + } + return errno +} + +func Flock(fd int, how int) error { + + var flock_type int16 + var fcntl_cmd int + + switch how { + case LOCK_SH | LOCK_NB: + flock_type = F_RDLCK + fcntl_cmd = F_SETLK + case LOCK_EX | LOCK_NB: + flock_type = F_WRLCK + fcntl_cmd = F_SETLK + case LOCK_EX: + flock_type = F_WRLCK + fcntl_cmd = F_SETLKW + case LOCK_UN: + flock_type = F_UNLCK + fcntl_cmd = F_SETLKW + default: + } + + flock := Flock_t{ + Type: int16(flock_type), + Whence: int16(0), + Start: int64(0), + Len: int64(0), + Pid: int32(Getppid()), + } + + err := FcntlFlock(uintptr(fd), fcntl_cmd, &flock) + return err +} + +func Mlock(b []byte) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Mlock2(b []byte, flags int) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Munlock(b []byte) (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func ClockGettime(clockid int32, ts *Timespec) error { + + var ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise + var nsec_per_sec int64 = 1000000000 + + if ts == nil { + return EFAULT + } + if clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC { + var nanotime int64 = runtime.Nanotime1() + ts.Sec = nanotime / nsec_per_sec + ts.Nsec = nanotime % nsec_per_sec + } else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID { + var tm Tms + _, err := Times(&tm) + if err != nil { + return EFAULT + } + ts.Sec = int64(tm.Utime / ticks_per_sec) + ts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec) + } else { + return EINVAL + } + return nil +} + +func Statfs(path string, stat *Statfs_t) (err error) { + fd, err := open(path, O_RDONLY, 0) + defer Close(fd) + if err != nil { + return err + } + return Fstatfs(fd, stat) +} + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal, len(signalList)) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go index 103604299..3d8930405 100644 --- a/vendor/golang.org/x/sys/unix/timestruct.go +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package unix diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go index 30c1d71f4..25df1e378 100644 --- a/vendor/golang.org/x/sys/unix/xattr_bsd.go +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build freebsd || netbsd // +build freebsd netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go index 104994bc6..ca9799b79 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -1,6 +1,7 @@ // mkerrors.sh -maix32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc && aix // +build ppc,aix // Created by cgo -godefs - DO NOT EDIT diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go index 4fc8d3064..200c8c26f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -1,6 +1,7 @@ // mkerrors.sh -maix64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && aix // +build ppc64,aix // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index ec376f51b..7ee196f7f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && darwin // +build 386,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index fea5dfaad..0100cb12f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && darwin // +build amd64,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -32,7 +33,7 @@ const ( AF_LAT = 0xe AF_LINK = 0x12 AF_LOCAL = 0x1 - AF_MAX = 0x28 + AF_MAX = 0x29 AF_NATM = 0x1f AF_NDRV = 0x1b AF_NETBIOS = 0x21 @@ -49,6 +50,7 @@ const ( AF_UNIX = 0x1 AF_UNSPEC = 0x0 AF_UTUN = 0x26 + AF_VSOCK = 0x28 ALTWERASE = 0x200 ATTR_BIT_MAP_COUNT = 0x5 ATTR_CMN_ACCESSMASK = 0x20000 @@ -83,7 +85,7 @@ const ( ATTR_CMN_PAROBJID = 0x80 ATTR_CMN_RETURNED_ATTRS = 0x80000000 ATTR_CMN_SCRIPT = 0x100 - ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_SETMASK = 0x51c7ff00 ATTR_CMN_USERACCESS = 0x200000 ATTR_CMN_UUID = 0x800000 ATTR_CMN_VALIDMASK = 0xffffffff @@ -357,7 +359,7 @@ const ( DLT_LINUX_SLL = 0x71 DLT_LOOP = 0x6c DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MAX = 0x10a DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -398,6 +400,7 @@ const ( DLT_SYMANTEC_FIREWALL = 0x63 DLT_TZSP = 0x80 DLT_USB = 0xba + DLT_USB_DARWIN = 0x10a DLT_USB_LINUX = 0xbd DLT_USB_LINUX_MMAPPED = 0xdc DLT_USER0 = 0x93 @@ -442,8 +445,8 @@ const ( EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xf - EVFILT_THREADMARKER = 0xf + EVFILT_SYSCOUNT = 0x11 + EVFILT_THREADMARKER = 0x11 EVFILT_TIMER = -0x7 EVFILT_USER = -0xa EVFILT_VM = -0xc @@ -481,9 +484,12 @@ const ( FSOPT_NOINMEMUPDATE = 0x2 FSOPT_PACK_INVAL_ATTRS = 0x8 FSOPT_REPORT_FULLSIZE = 0x4 + FSOPT_RETURN_REALDEV = 0x200 F_ADDFILESIGS = 0x3d F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 F_ADDSIGS = 0x3b F_ALLOCATEALL = 0x4 F_ALLOCATECONTIG = 0x2 @@ -505,8 +511,10 @@ const ( F_GETOWN = 0x5 F_GETPATH = 0x32 F_GETPATH_MTMINFO = 0x47 + F_GETPATH_NOFIRMLINK = 0x66 F_GETPROTECTIONCLASS = 0x3f F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 F_GLOBAL_NOCACHE = 0x37 F_LOG2PHYS = 0x31 F_LOG2PHYS_EXT = 0x41 @@ -531,6 +539,7 @@ const ( F_SETPROTECTIONCLASS = 0x40 F_SETSIZE = 0x2b F_SINGLE_WRITER = 0x4c + F_SPECULATIVE_READ = 0x65 F_THAW_FS = 0x36 F_TRANSCODEKEY = 0x4b F_TRIM_ACTIVE_FILE = 0x64 @@ -562,6 +571,7 @@ const ( IFF_UP = 0x1 IFNAMSIZ = 0x10 IFT_1822 = 0x2 + IFT_6LOWPAN = 0x40 IFT_AAL5 = 0x31 IFT_ARCNET = 0x23 IFT_ARCNETPLUS = 0x24 @@ -766,6 +776,9 @@ const ( IPV6_2292PKTINFO = 0x13 IPV6_2292PKTOPTIONS = 0x19 IPV6_2292RTHDR = 0x18 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 IPV6_BINDV6ONLY = 0x1b IPV6_BOUND_IF = 0x7d IPV6_CHECKSUM = 0x1a @@ -775,7 +788,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 - IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FLOW_ECN_MASK = 0x3000 IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f @@ -818,6 +831,7 @@ const ( IP_DEFAULT_MULTICAST_LOOP = 0x1 IP_DEFAULT_MULTICAST_TTL = 0x1 IP_DF = 0x4000 + IP_DONTFRAG = 0x1c IP_DROP_MEMBERSHIP = 0xd IP_DROP_SOURCE_MEMBERSHIP = 0x47 IP_DUMMYNET_CONFIGURE = 0x3c @@ -889,6 +903,12 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -904,6 +924,7 @@ const ( MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 MADV_ZERO_WIRED_PAGES = 0x6 + MAP_32BIT = 0x8000 MAP_ANON = 0x1000 MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 @@ -920,6 +941,17 @@ const ( MAP_RESILIENT_CODESIGN = 0x2000 MAP_RESILIENT_MEDIA = 0x4000 MAP_SHARED = 0x1 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MNT_ASYNC = 0x40 @@ -931,6 +963,7 @@ const ( MNT_DOVOLFS = 0x8000 MNT_DWAIT = 0x4 MNT_EXPORTED = 0x100 + MNT_EXT_ROOT_DATA_VOL = 0x1 MNT_FORCE = 0x80000 MNT_IGNORE_OWNERSHIP = 0x200000 MNT_JOURNALED = 0x800000 @@ -947,12 +980,15 @@ const ( MNT_QUOTA = 0x2000 MNT_RDONLY = 0x1 MNT_RELOAD = 0x40000 + MNT_REMOVABLE = 0x200 MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 MNT_SYNCHRONOUS = 0x2 MNT_UNION = 0x20 MNT_UNKNOWNPERMISSIONS = 0x200000 MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0x17f0f5ff + MNT_VISFLAGMASK = 0xd7f0f7ff MNT_WAIT = 0x1 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 @@ -963,6 +999,7 @@ const ( MSG_HAVEMORE = 0x2000 MSG_HOLD = 0x800 MSG_NEEDSA = 0x10000 + MSG_NOSIGNAL = 0x80000 MSG_OOB = 0x1 MSG_PEEK = 0x2 MSG_RCVMORE = 0x4000 @@ -979,9 +1016,10 @@ const ( NET_RT_DUMP = 0x1 NET_RT_DUMP2 = 0x7 NET_RT_FLAGS = 0x2 + NET_RT_FLAGS_PRIV = 0xa NET_RT_IFLIST = 0x3 NET_RT_IFLIST2 = 0x6 - NET_RT_MAXID = 0xa + NET_RT_MAXID = 0xb NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 NFDBITS = 0x20 @@ -1019,6 +1057,7 @@ const ( NOTE_LEEWAY = 0x10 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 + NOTE_MACHTIME = 0x100 NOTE_MACH_CONTINUOUS_TIME = 0x80 NOTE_NONE = 0x80 NOTE_NSECONDS = 0x4 @@ -1065,6 +1104,7 @@ const ( O_NDELAY = 0x4 O_NOCTTY = 0x20000 O_NOFOLLOW = 0x100 + O_NOFOLLOW_ANY = 0x20000000 O_NONBLOCK = 0x4 O_POPUP = 0x80000000 O_RDONLY = 0x0 @@ -1136,6 +1176,7 @@ const ( RTF_BROADCAST = 0x400000 RTF_CLONING = 0x100 RTF_CONDEMNED = 0x2000000 + RTF_DEAD = 0x20000000 RTF_DELCLONE = 0x80 RTF_DONE = 0x40 RTF_DYNAMIC = 0x10 @@ -1143,6 +1184,7 @@ const ( RTF_HOST = 0x4 RTF_IFREF = 0x4000000 RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 RTF_LLINFO = 0x400 RTF_LOCAL = 0x200000 RTF_MODIFIED = 0x20 @@ -1210,6 +1252,7 @@ const ( SIOCGDRVSPEC = 0xc028697b SIOCGETVLAN = 0xc020697f SIOCGHIWAT = 0x40047301 + SIOCGIF6LOWPAN = 0xc02069c5 SIOCGIFADDR = 0xc0206921 SIOCGIFALTMTU = 0xc0206948 SIOCGIFASYNCMAP = 0xc020697c @@ -1220,6 +1263,7 @@ const ( SIOCGIFDEVMTU = 0xc0206944 SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad SIOCGIFGENERIC = 0xc020693a SIOCGIFKPI = 0xc0206987 SIOCGIFMAC = 0xc0206982 @@ -1233,6 +1277,7 @@ const ( SIOCGIFSTATUS = 0xc331693d SIOCGIFVLAN = 0xc020697f SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGIFXMEDIA = 0xc02c6948 SIOCGLOWAT = 0x40047303 SIOCGPGRP = 0x40047309 SIOCIFCREATE = 0xc0206978 @@ -1243,6 +1288,7 @@ const ( SIOCSDRVSPEC = 0x8028697b SIOCSETVLAN = 0x8020697e SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 SIOCSIFADDR = 0x8020690c SIOCSIFALTMTU = 0x80206945 SIOCSIFASYNCMAP = 0x8020697d @@ -1270,6 +1316,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index 03feefbf8..e748cb110 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && darwin // +build arm,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index b40fb1f69..df26a1968 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && darwin // +build arm64,darwin // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -32,7 +33,7 @@ const ( AF_LAT = 0xe AF_LINK = 0x12 AF_LOCAL = 0x1 - AF_MAX = 0x28 + AF_MAX = 0x29 AF_NATM = 0x1f AF_NDRV = 0x1b AF_NETBIOS = 0x21 @@ -49,6 +50,7 @@ const ( AF_UNIX = 0x1 AF_UNSPEC = 0x0 AF_UTUN = 0x26 + AF_VSOCK = 0x28 ALTWERASE = 0x200 ATTR_BIT_MAP_COUNT = 0x5 ATTR_CMN_ACCESSMASK = 0x20000 @@ -83,7 +85,7 @@ const ( ATTR_CMN_PAROBJID = 0x80 ATTR_CMN_RETURNED_ATTRS = 0x80000000 ATTR_CMN_SCRIPT = 0x100 - ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_SETMASK = 0x51c7ff00 ATTR_CMN_USERACCESS = 0x200000 ATTR_CMN_UUID = 0x800000 ATTR_CMN_VALIDMASK = 0xffffffff @@ -357,7 +359,7 @@ const ( DLT_LINUX_SLL = 0x71 DLT_LOOP = 0x6c DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MAX = 0x10a DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -398,6 +400,7 @@ const ( DLT_SYMANTEC_FIREWALL = 0x63 DLT_TZSP = 0x80 DLT_USB = 0xba + DLT_USB_DARWIN = 0x10a DLT_USB_LINUX = 0xbd DLT_USB_LINUX_MMAPPED = 0xdc DLT_USER0 = 0x93 @@ -442,8 +445,8 @@ const ( EVFILT_PROC = -0x5 EVFILT_READ = -0x1 EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xf - EVFILT_THREADMARKER = 0xf + EVFILT_SYSCOUNT = 0x11 + EVFILT_THREADMARKER = 0x11 EVFILT_TIMER = -0x7 EVFILT_USER = -0xa EVFILT_VM = -0xc @@ -481,9 +484,12 @@ const ( FSOPT_NOINMEMUPDATE = 0x2 FSOPT_PACK_INVAL_ATTRS = 0x8 FSOPT_REPORT_FULLSIZE = 0x4 + FSOPT_RETURN_REALDEV = 0x200 F_ADDFILESIGS = 0x3d F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 F_ADDSIGS = 0x3b F_ALLOCATEALL = 0x4 F_ALLOCATECONTIG = 0x2 @@ -505,8 +511,10 @@ const ( F_GETOWN = 0x5 F_GETPATH = 0x32 F_GETPATH_MTMINFO = 0x47 + F_GETPATH_NOFIRMLINK = 0x66 F_GETPROTECTIONCLASS = 0x3f F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 F_GLOBAL_NOCACHE = 0x37 F_LOG2PHYS = 0x31 F_LOG2PHYS_EXT = 0x41 @@ -531,6 +539,7 @@ const ( F_SETPROTECTIONCLASS = 0x40 F_SETSIZE = 0x2b F_SINGLE_WRITER = 0x4c + F_SPECULATIVE_READ = 0x65 F_THAW_FS = 0x36 F_TRANSCODEKEY = 0x4b F_TRIM_ACTIVE_FILE = 0x64 @@ -562,6 +571,7 @@ const ( IFF_UP = 0x1 IFNAMSIZ = 0x10 IFT_1822 = 0x2 + IFT_6LOWPAN = 0x40 IFT_AAL5 = 0x31 IFT_ARCNET = 0x23 IFT_ARCNETPLUS = 0x24 @@ -766,6 +776,9 @@ const ( IPV6_2292PKTINFO = 0x13 IPV6_2292PKTOPTIONS = 0x19 IPV6_2292RTHDR = 0x18 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 IPV6_BINDV6ONLY = 0x1b IPV6_BOUND_IF = 0x7d IPV6_CHECKSUM = 0x1a @@ -775,7 +788,7 @@ const ( IPV6_FAITH = 0x1d IPV6_FLOWINFO_MASK = 0xffffff0f IPV6_FLOWLABEL_MASK = 0xffff0f00 - IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FLOW_ECN_MASK = 0x3000 IPV6_FRAGTTL = 0x3c IPV6_FW_ADD = 0x1e IPV6_FW_DEL = 0x1f @@ -818,6 +831,7 @@ const ( IP_DEFAULT_MULTICAST_LOOP = 0x1 IP_DEFAULT_MULTICAST_TTL = 0x1 IP_DF = 0x4000 + IP_DONTFRAG = 0x1c IP_DROP_MEMBERSHIP = 0xd IP_DROP_SOURCE_MEMBERSHIP = 0x47 IP_DUMMYNET_CONFIGURE = 0x3c @@ -889,6 +903,12 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -904,6 +924,7 @@ const ( MADV_SEQUENTIAL = 0x2 MADV_WILLNEED = 0x3 MADV_ZERO_WIRED_PAGES = 0x6 + MAP_32BIT = 0x8000 MAP_ANON = 0x1000 MAP_ANONYMOUS = 0x1000 MAP_COPY = 0x2 @@ -920,6 +941,17 @@ const ( MAP_RESILIENT_CODESIGN = 0x2000 MAP_RESILIENT_MEDIA = 0x4000 MAP_SHARED = 0x1 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MNT_ASYNC = 0x40 @@ -931,6 +963,7 @@ const ( MNT_DOVOLFS = 0x8000 MNT_DWAIT = 0x4 MNT_EXPORTED = 0x100 + MNT_EXT_ROOT_DATA_VOL = 0x1 MNT_FORCE = 0x80000 MNT_IGNORE_OWNERSHIP = 0x200000 MNT_JOURNALED = 0x800000 @@ -947,12 +980,15 @@ const ( MNT_QUOTA = 0x2000 MNT_RDONLY = 0x1 MNT_RELOAD = 0x40000 + MNT_REMOVABLE = 0x200 MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 MNT_SYNCHRONOUS = 0x2 MNT_UNION = 0x20 MNT_UNKNOWNPERMISSIONS = 0x200000 MNT_UPDATE = 0x10000 - MNT_VISFLAGMASK = 0x17f0f5ff + MNT_VISFLAGMASK = 0xd7f0f7ff MNT_WAIT = 0x1 MSG_CTRUNC = 0x20 MSG_DONTROUTE = 0x4 @@ -963,6 +999,7 @@ const ( MSG_HAVEMORE = 0x2000 MSG_HOLD = 0x800 MSG_NEEDSA = 0x10000 + MSG_NOSIGNAL = 0x80000 MSG_OOB = 0x1 MSG_PEEK = 0x2 MSG_RCVMORE = 0x4000 @@ -979,9 +1016,10 @@ const ( NET_RT_DUMP = 0x1 NET_RT_DUMP2 = 0x7 NET_RT_FLAGS = 0x2 + NET_RT_FLAGS_PRIV = 0xa NET_RT_IFLIST = 0x3 NET_RT_IFLIST2 = 0x6 - NET_RT_MAXID = 0xa + NET_RT_MAXID = 0xb NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 NFDBITS = 0x20 @@ -1019,6 +1057,7 @@ const ( NOTE_LEEWAY = 0x10 NOTE_LINK = 0x10 NOTE_LOWAT = 0x1 + NOTE_MACHTIME = 0x100 NOTE_MACH_CONTINUOUS_TIME = 0x80 NOTE_NONE = 0x80 NOTE_NSECONDS = 0x4 @@ -1065,6 +1104,7 @@ const ( O_NDELAY = 0x4 O_NOCTTY = 0x20000 O_NOFOLLOW = 0x100 + O_NOFOLLOW_ANY = 0x20000000 O_NONBLOCK = 0x4 O_POPUP = 0x80000000 O_RDONLY = 0x0 @@ -1136,6 +1176,7 @@ const ( RTF_BROADCAST = 0x400000 RTF_CLONING = 0x100 RTF_CONDEMNED = 0x2000000 + RTF_DEAD = 0x20000000 RTF_DELCLONE = 0x80 RTF_DONE = 0x40 RTF_DYNAMIC = 0x10 @@ -1143,6 +1184,7 @@ const ( RTF_HOST = 0x4 RTF_IFREF = 0x4000000 RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 RTF_LLINFO = 0x400 RTF_LOCAL = 0x200000 RTF_MODIFIED = 0x20 @@ -1210,6 +1252,7 @@ const ( SIOCGDRVSPEC = 0xc028697b SIOCGETVLAN = 0xc020697f SIOCGHIWAT = 0x40047301 + SIOCGIF6LOWPAN = 0xc02069c5 SIOCGIFADDR = 0xc0206921 SIOCGIFALTMTU = 0xc0206948 SIOCGIFASYNCMAP = 0xc020697c @@ -1220,6 +1263,7 @@ const ( SIOCGIFDEVMTU = 0xc0206944 SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad SIOCGIFGENERIC = 0xc020693a SIOCGIFKPI = 0xc0206987 SIOCGIFMAC = 0xc0206982 @@ -1233,6 +1277,7 @@ const ( SIOCGIFSTATUS = 0xc331693d SIOCGIFVLAN = 0xc020697f SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGIFXMEDIA = 0xc02c6948 SIOCGLOWAT = 0x40047303 SIOCGPGRP = 0x40047309 SIOCIFCREATE = 0xc0206978 @@ -1243,6 +1288,7 @@ const ( SIOCSDRVSPEC = 0x8028697b SIOCSETVLAN = 0x8020697e SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 SIOCSIFADDR = 0x8020690c SIOCSIFALTMTU = 0x80206945 SIOCSIFASYNCMAP = 0x8020697d @@ -1270,6 +1316,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index f5e91b7ab..17bba0e44 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && dragonfly // +build amd64,dragonfly // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 3689c8084..9c7c5e165 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && freebsd // +build 386,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -997,6 +998,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1375,6 +1381,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index b8f7c3c93..b265abb25 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && freebsd // +build amd64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -997,6 +998,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1376,6 +1382,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index be14bb1a4..0326a6b3a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && freebsd // +build arm,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -980,6 +981,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1341,6 +1347,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index 7ce9c0081..218d39906 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && freebsd // +build arm64,freebsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -997,6 +998,11 @@ const ( KERN_OSRELEASE = 0x2 KERN_OSTYPE = 0x1 KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 LOCK_NB = 0x4 LOCK_SH = 0x1 @@ -1376,6 +1382,7 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 SOL_SOCKET = 0xffff SOMAXCONN = 0x80 SO_ACCEPTCONN = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index b3463a8b5..504dd6cd2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -1,5 +1,6 @@ // Code generated by mkmerge.go; DO NOT EDIT. +//go:build linux // +build linux package unix @@ -244,6 +245,10 @@ const ( BS0 = 0x0 BTRFS_SUPER_MAGIC = 0x9123683e BTRFS_TEST_MAGIC = 0x73727279 + BUS_BLUETOOTH = 0x5 + BUS_HIL = 0x4 + BUS_USB = 0x3 + BUS_VIRTUAL = 0x6 CAN_BCM = 0x2 CAN_EFF_FLAG = 0x80000000 CAN_EFF_ID_BITS = 0x1d @@ -313,6 +318,7 @@ const ( CAN_J1939 = 0x7 CAN_MAX_DLC = 0x8 CAN_MAX_DLEN = 0x8 + CAN_MAX_RAW_DLC = 0xf CAN_MCNET = 0x5 CAN_MTU = 0x10 CAN_NPROTO = 0x8 @@ -664,6 +670,7 @@ const ( ETH_P_CAIF = 0xf7 ETH_P_CAN = 0xc ETH_P_CANFD = 0xd + ETH_P_CFM = 0x8902 ETH_P_CONTROL = 0x16 ETH_P_CUST = 0x6006 ETH_P_DDCMP = 0x6 @@ -834,7 +841,6 @@ const ( FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0 FSCRYPT_POLICY_FLAGS_PAD_8 = 0x1 FSCRYPT_POLICY_FLAGS_PAD_MASK = 0x3 - FSCRYPT_POLICY_FLAGS_VALID = 0x1f FSCRYPT_POLICY_FLAG_DIRECT_KEY = 0x4 FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 = 0x10 FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 = 0x8 @@ -865,7 +871,7 @@ const ( FS_POLICY_FLAGS_PAD_4 = 0x0 FS_POLICY_FLAGS_PAD_8 = 0x1 FS_POLICY_FLAGS_PAD_MASK = 0x3 - FS_POLICY_FLAGS_VALID = 0x1f + FS_POLICY_FLAGS_VALID = 0x7 FS_VERITY_FL = 0x100000 FS_VERITY_HASH_ALG_SHA256 = 0x1 FS_VERITY_HASH_ALG_SHA512 = 0x2 @@ -962,6 +968,7 @@ const ( HDIO_SET_XFER = 0x306 HDIO_TRISTATE_HWIF = 0x31b HDIO_UNREGISTER_HWIF = 0x32a + HID_MAX_DESCRIPTOR_SIZE = 0x1000 HOSTFS_SUPER_MAGIC = 0xc0ffee HPFS_SUPER_MAGIC = 0xf995e849 HUGETLBFS_MAGIC = 0x958458f6 @@ -1138,6 +1145,7 @@ const ( IPV6_PMTUDISC_WANT = 0x1 IPV6_RECVDSTOPTS = 0x3a IPV6_RECVERR = 0x19 + IPV6_RECVERR_RFC4884 = 0x1f IPV6_RECVFRAGSIZE = 0x4d IPV6_RECVHOPLIMIT = 0x33 IPV6_RECVHOPOPTS = 0x35 @@ -1202,6 +1210,7 @@ const ( IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb + IP_RECVERR_RFC4884 = 0x1a IP_RECVFRAGSIZE = 0x19 IP_RECVOPTS = 0x6 IP_RECVORIGDSTADDR = 0x14 @@ -1840,6 +1849,7 @@ const ( PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_SYSCALL_USER_DISPATCH = 0x3b PR_SET_TAGGED_ADDR_CTRL = 0x37 PR_SET_THP_DISABLE = 0x29 PR_SET_TIMERSLACK = 0x1d @@ -1859,6 +1869,8 @@ const ( PR_SVE_SET_VL_ONEXEC = 0x40000 PR_SVE_VL_INHERIT = 0x20000 PR_SVE_VL_LEN_MASK = 0xffff + PR_SYS_DISPATCH_OFF = 0x0 + PR_SYS_DISPATCH_ON = 0x1 PR_TAGGED_ADDR_ENABLE = 0x1 PR_TASK_PERF_EVENTS_DISABLE = 0x1f PR_TASK_PERF_EVENTS_ENABLE = 0x20 @@ -2104,12 +2116,13 @@ const ( RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 RTNH_ALIGNTO = 0x4 - RTNH_COMPARE_MASK = 0x19 + RTNH_COMPARE_MASK = 0x59 RTNH_F_DEAD = 0x1 RTNH_F_LINKDOWN = 0x10 RTNH_F_OFFLOAD = 0x8 RTNH_F_ONLINK = 0x4 RTNH_F_PERVASIVE = 0x2 + RTNH_F_TRAP = 0x40 RTNH_F_UNRESOLVED = 0x20 RTN_MAX = 0xb RTPROT_BABEL = 0x2a @@ -2580,6 +2593,7 @@ const ( VMADDR_CID_HOST = 0x2 VMADDR_CID_HYPERVISOR = 0x0 VMADDR_CID_LOCAL = 0x1 + VMADDR_FLAG_TO_HOST = 0x1 VMADDR_PORT_ANY = 0xffffffff VM_SOCKETS_INVALID_VERSION = 0xffffffff VQUIT = 0x1 @@ -2727,6 +2741,9 @@ const ( Z3FOLD_MAGIC = 0x33 ZONEFS_MAGIC = 0x5a4f4653 ZSMALLOC_MAGIC = 0x58295829 + _HIDIOCGRAWNAME_LEN = 0x80 + _HIDIOCGRAWPHYS_LEN = 0x40 + _HIDIOCGRAWUNIQ_LEN = 0x40 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 336e0b326..e91a1a957 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && linux // +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -93,6 +94,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x40087447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -481,6 +489,9 @@ const ( X86_FXSR_MAGIC = 0x0 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 961507e93..a9cbac644 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && linux // +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -93,6 +94,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_ARCH_PRCTL = 0x1e @@ -269,6 +275,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -291,6 +298,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -481,6 +489,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a65576db7..d74f3c15a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && linux // +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x40087447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETCRUNCHREGS = 0x19 @@ -275,6 +281,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -297,6 +304,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -487,6 +495,9 @@ const ( WORDSIZE = 0x20 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index cf075caa8..e1538995b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && linux // +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -95,6 +96,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -166,6 +170,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -193,8 +198,10 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PROT_BTI = 0x10 + PROT_MTE = 0x20 PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_PEEKMTETAGS = 0x21 PTRACE_POKEMTETAGS = 0x22 @@ -264,6 +271,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -286,6 +294,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -477,6 +486,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index efe90deea..5e8e71ff8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips && linux // +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80087447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x20 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 8b0e8911d..e670ee148 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && linux // +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index e9430cd1a..dd11eacb8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64le && linux // +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 61e4f5db6..a0a5b22ae 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mipsle && linux // +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x18 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x80087447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff PTRACE_GETFPREGS = 0xe @@ -268,6 +274,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -290,6 +297,7 @@ const ( SO_PEERCRED = 0x12 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 @@ -483,6 +491,9 @@ const ( WORDSIZE = 0x20 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 973ad9346..e60102f6a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && linux // +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff @@ -327,6 +333,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -349,6 +356,7 @@ const ( SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -543,6 +551,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4000 XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 70a7406ba..838ff4ea6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64le && linux // +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -165,6 +169,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -192,6 +197,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff @@ -327,6 +333,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -349,6 +356,7 @@ const ( SO_PEERCRED = 0x15 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -543,6 +551,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4000 XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index b1bf7997c..7cc98f09c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build riscv64 && linux // +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff RLIMIT_AS = 0x9 @@ -256,6 +262,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -278,6 +285,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -468,6 +476,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 7053d10ba..a508392d2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build s390x && linux // +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -92,6 +93,9 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -163,6 +167,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x2405 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 PPPIOCCONNECT = 0x4004743a PPPIOCDETACH = 0x4004743c PPPIOCDISCONN = 0x7439 @@ -190,6 +195,7 @@ const ( PPPIOCSPASS = 0x40107447 PPPIOCSRASYNCMAP = 0x40047454 PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_DISABLE_TE = 0x5010 @@ -329,6 +335,7 @@ const ( SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 @@ -351,6 +358,7 @@ const ( SO_PEERCRED = 0x11 SO_PEERGROUPS = 0x3b SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 SO_PROTOCOL = 0x26 SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 @@ -541,6 +549,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 ) // Errors diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 137cfe796..d5e2dc94f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -1,6 +1,7 @@ // mkerrors.sh -Wall -Werror -static -I/tmp/include // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build sparc64 && linux // +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. @@ -96,6 +97,9 @@ const ( F_SETOWN = 0x6 F_UNLCK = 0x3 F_WRLCK = 0x2 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -168,6 +172,7 @@ const ( PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 PPPIOCATTACH = 0x8004743d PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 PPPIOCCONNECT = 0x8004743a PPPIOCDETACH = 0x8004743c PPPIOCDISCONN = 0x20007439 @@ -195,6 +200,7 @@ const ( PPPIOCSPASS = 0x80107447 PPPIOCSRASYNCMAP = 0x80047454 PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff PTRACE_GETFPAREGS = 0x14 @@ -322,6 +328,7 @@ const ( SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0x400 SO_BUSY_POLL = 0x30 + SO_BUSY_POLL_BUDGET = 0x49 SO_CNX_ADVICE = 0x37 SO_COOKIE = 0x3b SO_DETACH_REUSEPORT_BPF = 0x47 @@ -344,6 +351,7 @@ const ( SO_PEERCRED = 0x40 SO_PEERGROUPS = 0x3d SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x48 SO_PROTOCOL = 0x1028 SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x100b @@ -531,6 +539,9 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 __TIOCFLUSH = 0x80047410 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index 20f3a5799..72f7420d2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && netbsd // +build 386,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 90b8fcd29..8d4eb0c08 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && netbsd // +build amd64,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index c5c03993b..9eef9749f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh -marm // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && netbsd // +build arm,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go index 14dd3c1d1..3b62ba192 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && netbsd // +build arm64,netbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index c865a10df..593cc0fef 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -1,6 +1,7 @@ // mkerrors.sh -m32 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index 9db6b2fb6..25cb60948 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 7072526a6..a4e4c2231 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1,6 +1,7 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go index ac5efbe5a..90de7dfc3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go index a74639a46..f1154ff56 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 5312c36cc..65fb2c5cd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -1,6 +1,7 @@ // mkerrors.sh -m64 // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && solaris // +build amd64,solaris // Code generated by cmd/cgo -godefs; DO NOT EDIT. diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go new file mode 100644 index 000000000..4117ce08a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -0,0 +1,831 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +// Hand edited based on zerrors_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + BRKINT = 0x0001 + CLOCK_MONOTONIC = 0x1 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x3 + CS8 = 0x0030 + CSIZE = 0x0030 + ECHO = 0x00000008 + ECHONL = 0x00000001 + FD_CLOEXEC = 0x01 + FD_CLOFORK = 0x02 + FNDELAY = 0x04 + F_CLOSFD = 9 + F_CONTROL_CVT = 13 + F_DUPFD = 0 + F_DUPFD2 = 8 + F_GETFD = 1 + F_GETFL = 259 + F_GETLK = 5 + F_GETOWN = 10 + F_OK = 0x0 + F_RDLCK = 1 + F_SETFD = 2 + F_SETFL = 4 + F_SETLK = 6 + F_SETLKW = 7 + F_SETOWN = 11 + F_SETTAG = 12 + F_UNLCK = 3 + F_WRLCK = 2 + FSTYPE_ZFS = 0xe9 //"Z" + FSTYPE_HFS = 0xc8 //"H" + FSTYPE_NFS = 0xd5 //"N" + FSTYPE_TFS = 0xe3 //"T" + FSTYPE_AUTOMOUNT = 0xc1 //"A" + IP6F_MORE_FRAG = 0x0001 + IP6F_OFF_MASK = 0xfff8 + IP6F_RESERVED_MASK = 0x0006 + IP6OPT_JUMBO = 0xc2 + IP6OPT_JUMBO_LEN = 6 + IP6OPT_MUTABLE = 0x20 + IP6OPT_NSAP_ADDR = 0xc3 + IP6OPT_PAD1 = 0x00 + IP6OPT_PADN = 0x01 + IP6OPT_ROUTER_ALERT = 0x05 + IP6OPT_TUNNEL_LIMIT = 0x04 + IP6OPT_TYPE_DISCARD = 0x40 + IP6OPT_TYPE_FORCEICMP = 0x80 + IP6OPT_TYPE_ICMP = 0xc0 + IP6OPT_TYPE_SKIP = 0x00 + IP6_ALERT_AN = 0x0002 + IP6_ALERT_MLD = 0x0000 + IP6_ALERT_RSVP = 0x0001 + IPPORT_RESERVED = 1024 + IPPORT_USERRESERVED = 5000 + IPPROTO_AH = 51 + IPPROTO_DSTOPTS = 60 + IPPROTO_EGP = 8 + IPPROTO_ESP = 50 + IPPROTO_FRAGMENT = 44 + IPPROTO_GGP = 2 + IPPROTO_HOPOPTS = 0 + IPPROTO_ICMP = 1 + IPPROTO_ICMPV6 = 58 + IPPROTO_IDP = 22 + IPPROTO_IP = 0 + IPPROTO_IPV6 = 41 + IPPROTO_MAX = 256 + IPPROTO_NONE = 59 + IPPROTO_PUP = 12 + IPPROTO_RAW = 255 + IPPROTO_ROUTING = 43 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + IPV6_ADDR_PREFERENCES = 32 + IPV6_CHECKSUM = 19 + IPV6_DONTFRAG = 29 + IPV6_DSTOPTS = 23 + IPV6_HOPLIMIT = 11 + IPV6_HOPOPTS = 22 + IPV6_JOIN_GROUP = 5 + IPV6_LEAVE_GROUP = 6 + IPV6_MULTICAST_HOPS = 9 + IPV6_MULTICAST_IF = 7 + IPV6_MULTICAST_LOOP = 4 + IPV6_NEXTHOP = 20 + IPV6_PATHMTU = 12 + IPV6_PKTINFO = 13 + IPV6_PREFER_SRC_CGA = 0x10 + IPV6_PREFER_SRC_COA = 0x02 + IPV6_PREFER_SRC_HOME = 0x01 + IPV6_PREFER_SRC_NONCGA = 0x20 + IPV6_PREFER_SRC_PUBLIC = 0x08 + IPV6_PREFER_SRC_TMP = 0x04 + IPV6_RECVDSTOPTS = 28 + IPV6_RECVHOPLIMIT = 14 + IPV6_RECVHOPOPTS = 26 + IPV6_RECVPATHMTU = 16 + IPV6_RECVPKTINFO = 15 + IPV6_RECVRTHDR = 25 + IPV6_RECVTCLASS = 31 + IPV6_RTHDR = 21 + IPV6_RTHDRDSTOPTS = 24 + IPV6_RTHDR_TYPE_0 = 0 + IPV6_TCLASS = 30 + IPV6_UNICAST_HOPS = 3 + IPV6_USE_MIN_MTU = 18 + IPV6_V6ONLY = 10 + IP_ADD_MEMBERSHIP = 5 + IP_ADD_SOURCE_MEMBERSHIP = 12 + IP_BLOCK_SOURCE = 10 + IP_DEFAULT_MULTICAST_LOOP = 1 + IP_DEFAULT_MULTICAST_TTL = 1 + IP_DROP_MEMBERSHIP = 6 + IP_DROP_SOURCE_MEMBERSHIP = 13 + IP_MAX_MEMBERSHIPS = 20 + IP_MULTICAST_IF = 7 + IP_MULTICAST_LOOP = 4 + IP_MULTICAST_TTL = 3 + IP_OPTIONS = 1 + IP_PKTINFO = 101 + IP_RECVPKTINFO = 102 + IP_TOS = 2 + IP_TTL = 3 + IP_UNBLOCK_SOURCE = 11 + ICANON = 0x0010 + ICRNL = 0x0002 + IEXTEN = 0x0020 + IGNBRK = 0x0004 + IGNCR = 0x0008 + INLCR = 0x0020 + ISIG = 0x0040 + ISTRIP = 0x0080 + IXON = 0x0200 + IXOFF = 0x0100 + LOCK_SH = 0x1 // Not exist on zOS + LOCK_EX = 0x2 // Not exist on zOS + LOCK_NB = 0x4 // Not exist on zOS + LOCK_UN = 0x8 // Not exist on zOS + POLLIN = 0x0003 + POLLOUT = 0x0004 + POLLPRI = 0x0010 + POLLERR = 0x0020 + POLLHUP = 0x0040 + POLLNVAL = 0x0080 + PROT_READ = 0x1 // mmap - page can be read + PROT_WRITE = 0x2 // page can be written + PROT_NONE = 0x4 // can't be accessed + PROT_EXEC = 0x8 // can be executed + MAP_PRIVATE = 0x1 // changes are private + MAP_SHARED = 0x2 // changes are shared + MAP_FIXED = 0x4 // place exactly + MS_SYNC = 0x1 // msync - synchronous writes + MS_ASYNC = 0x2 // asynchronous writes + MS_INVALIDATE = 0x4 // invalidate mappings + MTM_RDONLY = 0x80000000 + MTM_RDWR = 0x40000000 + MTM_UMOUNT = 0x10000000 + MTM_IMMED = 0x08000000 + MTM_FORCE = 0x04000000 + MTM_DRAIN = 0x02000000 + MTM_RESET = 0x01000000 + MTM_SAMEMODE = 0x00100000 + MTM_UNQSEFORCE = 0x00040000 + MTM_NOSUID = 0x00000400 + MTM_SYNCHONLY = 0x00000200 + MTM_REMOUNT = 0x00000100 + MTM_NOSECURITY = 0x00000080 + O_ACCMODE = 0x03 + O_APPEND = 0x08 + O_ASYNCSIG = 0x0200 + O_CREAT = 0x80 + O_EXCL = 0x40 + O_GETFL = 0x0F + O_LARGEFILE = 0x0400 + O_NONBLOCK = 0x04 + O_RDONLY = 0x02 + O_RDWR = 0x03 + O_SYNC = 0x0100 + O_TRUNC = 0x10 + O_WRONLY = 0x01 + O_NOCTTY = 0x20 + OPOST = 0x0001 + ONLCR = 0x0004 + PARENB = 0x0200 + PARMRK = 0x0400 + QUERYCVT = 3 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 // RUSAGE_THREAD unsupported on z/OS + SEEK_CUR = 1 + SEEK_END = 2 + SEEK_SET = 0 + SETAUTOCVTALL = 5 + SETAUTOCVTON = 2 + SETCVTALL = 4 + SETCVTOFF = 0 + SETCVTON = 1 + AF_APPLETALK = 16 + AF_CCITT = 10 + AF_CHAOS = 5 + AF_DATAKIT = 9 + AF_DLI = 13 + AF_ECMA = 8 + AF_HYLINK = 15 + AF_IMPLINK = 3 + AF_INET = 2 + AF_INET6 = 19 + AF_INTF = 20 + AF_IUCV = 17 + AF_LAT = 14 + AF_LINK = 18 + AF_MAX = 30 + AF_NBS = 7 + AF_NDD = 23 + AF_NETWARE = 22 + AF_NS = 6 + AF_PUP = 4 + AF_RIF = 21 + AF_ROUTE = 20 + AF_SNA = 11 + AF_UNIX = 1 + AF_UNSPEC = 0 + IBMTCP_IMAGE = 1 + MSG_ACK_EXPECTED = 0x10 + MSG_ACK_GEN = 0x40 + MSG_ACK_TIMEOUT = 0x20 + MSG_CONNTERM = 0x80 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOF = 0x8000 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 16 + MSG_NONBLOCK = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + PRIO_PROCESS = 1 + PRIO_PGRP = 2 + PRIO_USER = 3 + RLIMIT_CPU = 0 + RLIMIT_FSIZE = 1 + RLIMIT_DATA = 2 + RLIMIT_STACK = 3 + RLIMIT_CORE = 4 + RLIMIT_AS = 5 + RLIMIT_NOFILE = 6 + RLIMIT_MEMLIMIT = 7 + RLIM_INFINITY = 2147483647 + SCM_RIGHTS = 0x01 + SF_CLOSE = 0x00000002 + SF_REUSE = 0x00000001 + SHUT_RD = 0 + SHUT_RDWR = 2 + SHUT_WR = 1 + SOCK_CONN_DGRAM = 6 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_RDM = 4 + SOCK_SEQPACKET = 5 + SOCK_STREAM = 1 + SOL_SOCKET = 0xffff + SOMAXCONN = 10 + SO_ACCEPTCONN = 0x0002 + SO_ACCEPTECONNABORTED = 0x0006 + SO_ACKNOW = 0x7700 + SO_BROADCAST = 0x0020 + SO_BULKMODE = 0x8000 + SO_CKSUMRECV = 0x0800 + SO_CLOSE = 0x01 + SO_CLUSTERCONNTYPE = 0x00004001 + SO_CLUSTERCONNTYPE_INTERNAL = 8 + SO_CLUSTERCONNTYPE_NOCONN = 0 + SO_CLUSTERCONNTYPE_NONE = 1 + SO_CLUSTERCONNTYPE_SAME_CLUSTER = 2 + SO_CLUSTERCONNTYPE_SAME_IMAGE = 4 + SO_DEBUG = 0x0001 + SO_DONTROUTE = 0x0010 + SO_ERROR = 0x1007 + SO_IGNOREINCOMINGPUSH = 0x1 + SO_IGNORESOURCEVIPA = 0x0002 + SO_KEEPALIVE = 0x0008 + SO_LINGER = 0x0080 + SO_NONBLOCKLOCAL = 0x8001 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x0100 + SO_OPTACK = 0x8004 + SO_OPTMSS = 0x8003 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x0004 + SO_REUSEPORT = 0x0200 + SO_SECINFO = 0x00004002 + SO_SET = 0x0200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TYPE = 0x1008 + SO_UNSET = 0x0400 + SO_USELOOPBACK = 0x0040 + SO_USE_IFBUFS = 0x0400 + S_ISUID = 0x0800 + S_ISGID = 0x0400 + S_ISVTX = 0x0200 + S_IRUSR = 0x0100 + S_IWUSR = 0x0080 + S_IXUSR = 0x0040 + S_IRWXU = 0x01C0 + S_IRGRP = 0x0020 + S_IWGRP = 0x0010 + S_IXGRP = 0x0008 + S_IRWXG = 0x0038 + S_IROTH = 0x0004 + S_IWOTH = 0x0002 + S_IXOTH = 0x0001 + S_IRWXO = 0x0007 + S_IREAD = S_IRUSR + S_IWRITE = S_IWUSR + S_IEXEC = S_IXUSR + S_IFDIR = 0x01000000 + S_IFCHR = 0x02000000 + S_IFREG = 0x03000000 + S_IFFIFO = 0x04000000 + S_IFIFO = 0x04000000 + S_IFLNK = 0x05000000 + S_IFBLK = 0x06000000 + S_IFSOCK = 0x07000000 + S_IFVMEXTL = 0xFE000000 + S_IFVMEXTL_EXEC = 0x00010000 + S_IFVMEXTL_DATA = 0x00020000 + S_IFVMEXTL_MEL = 0x00030000 + S_IFEXTL = 0x00000001 + S_IFPROGCTL = 0x00000002 + S_IFAPFCTL = 0x00000004 + S_IFNOSHARE = 0x00000008 + S_IFSHARELIB = 0x00000010 + S_IFMT = 0xFF000000 + S_IFMST = 0x00FF0000 + TCP_KEEPALIVE = 0x8 + TCP_NODELAY = 0x1 + TIOCGWINSZ = 0x4008a368 + TIOCSWINSZ = 0x8008a367 + TIOCSBRK = 0x2000a77b + TIOCCBRK = 0x2000a77a + TIOCSTI = 0x8001a772 + TIOCGPGRP = 0x4004a777 // _IOR(167, 119, int) + TCSANOW = 0 + TCSETS = 0 // equivalent to TCSANOW for tcsetattr + TCSADRAIN = 1 + TCSETSW = 1 // equivalent to TCSADRAIN for tcsetattr + TCSAFLUSH = 2 + TCSETSF = 2 // equivalent to TCSAFLUSH for tcsetattr + TCGETS = 3 // not defined in ioctl.h -- zos golang only + TCIFLUSH = 0 + TCOFLUSH = 1 + TCIOFLUSH = 2 + TCOOFF = 0 + TCOON = 1 + TCIOFF = 2 + TCION = 3 + TIOCSPGRP = 0x8004a776 + TIOCNOTTY = 0x2000a771 + TIOCEXCL = 0x2000a70d + TIOCNXCL = 0x2000a70e + TIOCGETD = 0x4004a700 + TIOCSETD = 0x8004a701 + TIOCPKT = 0x8004a770 + TIOCSTOP = 0x2000a76f + TIOCSTART = 0x2000a76e + TIOCUCNTL = 0x8004a766 + TIOCREMOTE = 0x8004a769 + TIOCMGET = 0x4004a76a + TIOCMSET = 0x8004a76d + TIOCMBIC = 0x8004a76b + TIOCMBIS = 0x8004a76c + VINTR = 0 + VQUIT = 1 + VERASE = 2 + VKILL = 3 + VEOF = 4 + VEOL = 5 + VMIN = 6 + VSTART = 7 + VSTOP = 8 + VSUSP = 9 + VTIME = 10 + WCONTINUED = 0x4 + WNOHANG = 0x1 + WUNTRACED = 0x2 + _BPX_SWAP = 1 + _BPX_NONSWAP = 2 + MCL_CURRENT = 1 // for Linux compatibility -- no zos semantics + MCL_FUTURE = 2 // for Linux compatibility -- no zos semantics + MCL_ONFAULT = 3 // for Linux compatibility -- no zos semantics + MADV_NORMAL = 0 // for Linux compatibility -- no zos semantics + MADV_RANDOM = 1 // for Linux compatibility -- no zos semantics + MADV_SEQUENTIAL = 2 // for Linux compatibility -- no zos semantics + MADV_WILLNEED = 3 // for Linux compatibility -- no zos semantics + MADV_REMOVE = 4 // for Linux compatibility -- no zos semantics + MADV_DONTFORK = 5 // for Linux compatibility -- no zos semantics + MADV_DOFORK = 6 // for Linux compatibility -- no zos semantics + MADV_HWPOISON = 7 // for Linux compatibility -- no zos semantics + MADV_MERGEABLE = 8 // for Linux compatibility -- no zos semantics + MADV_UNMERGEABLE = 9 // for Linux compatibility -- no zos semantics + MADV_SOFT_OFFLINE = 10 // for Linux compatibility -- no zos semantics + MADV_HUGEPAGE = 11 // for Linux compatibility -- no zos semantics + MADV_NOHUGEPAGE = 12 // for Linux compatibility -- no zos semantics + MADV_DONTDUMP = 13 // for Linux compatibility -- no zos semantics + MADV_DODUMP = 14 // for Linux compatibility -- no zos semantics + MADV_FREE = 15 // for Linux compatibility -- no zos semantics + MADV_WIPEONFORK = 16 // for Linux compatibility -- no zos semantics + MADV_KEEPONFORK = 17 // for Linux compatibility -- no zos semantics + AT_SYMLINK_NOFOLLOW = 1 // for Unix compatibility -- no zos semantics + AT_FDCWD = 2 // for Unix compatibility -- no zos semantics +) + +const ( + EDOM = Errno(1) + ERANGE = Errno(2) + EACCES = Errno(111) + EAGAIN = Errno(112) + EBADF = Errno(113) + EBUSY = Errno(114) + ECHILD = Errno(115) + EDEADLK = Errno(116) + EEXIST = Errno(117) + EFAULT = Errno(118) + EFBIG = Errno(119) + EINTR = Errno(120) + EINVAL = Errno(121) + EIO = Errno(122) + EISDIR = Errno(123) + EMFILE = Errno(124) + EMLINK = Errno(125) + ENAMETOOLONG = Errno(126) + ENFILE = Errno(127) + ENODEV = Errno(128) + ENOENT = Errno(129) + ENOEXEC = Errno(130) + ENOLCK = Errno(131) + ENOMEM = Errno(132) + ENOSPC = Errno(133) + ENOSYS = Errno(134) + ENOTDIR = Errno(135) + ENOTEMPTY = Errno(136) + ENOTTY = Errno(137) + ENXIO = Errno(138) + EPERM = Errno(139) + EPIPE = Errno(140) + EROFS = Errno(141) + ESPIPE = Errno(142) + ESRCH = Errno(143) + EXDEV = Errno(144) + E2BIG = Errno(145) + ELOOP = Errno(146) + EILSEQ = Errno(147) + ENODATA = Errno(148) + EOVERFLOW = Errno(149) + EMVSNOTUP = Errno(150) + ECMSSTORAGE = Errno(151) + EMVSDYNALC = Errno(151) + EMVSCVAF = Errno(152) + EMVSCATLG = Errno(153) + ECMSINITIAL = Errno(156) + EMVSINITIAL = Errno(156) + ECMSERR = Errno(157) + EMVSERR = Errno(157) + EMVSPARM = Errno(158) + ECMSPFSFILE = Errno(159) + EMVSPFSFILE = Errno(159) + EMVSBADCHAR = Errno(160) + ECMSPFSPERM = Errno(162) + EMVSPFSPERM = Errno(162) + EMVSSAFEXTRERR = Errno(163) + EMVSSAF2ERR = Errno(164) + EMVSTODNOTSET = Errno(165) + EMVSPATHOPTS = Errno(166) + EMVSNORTL = Errno(167) + EMVSEXPIRE = Errno(168) + EMVSPASSWORD = Errno(169) + EMVSWLMERROR = Errno(170) + EMVSCPLERROR = Errno(171) + EMVSARMERROR = Errno(172) + ELENOFORK = Errno(200) + ELEMSGERR = Errno(201) + EFPMASKINV = Errno(202) + EFPMODEINV = Errno(203) + EBUFLEN = Errno(227) + EEXTLINK = Errno(228) + ENODD = Errno(229) + ECMSESMERR = Errno(230) + ECPERR = Errno(231) + ELEMULTITHREAD = Errno(232) + ELEFENCE = Errno(244) + EBADDATA = Errno(245) + EUNKNOWN = Errno(246) + ENOTSUP = Errno(247) + EBADNAME = Errno(248) + ENOTSAFE = Errno(249) + ELEMULTITHREADFORK = Errno(257) + ECUNNOENV = Errno(258) + ECUNNOCONV = Errno(259) + ECUNNOTALIGNED = Errno(260) + ECUNERR = Errno(262) + EIBMBADCALL = Errno(1000) + EIBMBADPARM = Errno(1001) + EIBMSOCKOUTOFRANGE = Errno(1002) + EIBMSOCKINUSE = Errno(1003) + EIBMIUCVERR = Errno(1004) + EOFFLOADboxERROR = Errno(1005) + EOFFLOADboxRESTART = Errno(1006) + EOFFLOADboxDOWN = Errno(1007) + EIBMCONFLICT = Errno(1008) + EIBMCANCELLED = Errno(1009) + EIBMBADTCPNAME = Errno(1011) + ENOTBLK = Errno(1100) + ETXTBSY = Errno(1101) + EWOULDBLOCK = Errno(1102) + EINPROGRESS = Errno(1103) + EALREADY = Errno(1104) + ENOTSOCK = Errno(1105) + EDESTADDRREQ = Errno(1106) + EMSGSIZE = Errno(1107) + EPROTOTYPE = Errno(1108) + ENOPROTOOPT = Errno(1109) + EPROTONOSUPPORT = Errno(1110) + ESOCKTNOSUPPORT = Errno(1111) + EOPNOTSUPP = Errno(1112) + EPFNOSUPPORT = Errno(1113) + EAFNOSUPPORT = Errno(1114) + EADDRINUSE = Errno(1115) + EADDRNOTAVAIL = Errno(1116) + ENETDOWN = Errno(1117) + ENETUNREACH = Errno(1118) + ENETRESET = Errno(1119) + ECONNABORTED = Errno(1120) + ECONNRESET = Errno(1121) + ENOBUFS = Errno(1122) + EISCONN = Errno(1123) + ENOTCONN = Errno(1124) + ESHUTDOWN = Errno(1125) + ETOOMANYREFS = Errno(1126) + ETIMEDOUT = Errno(1127) + ECONNREFUSED = Errno(1128) + EHOSTDOWN = Errno(1129) + EHOSTUNREACH = Errno(1130) + EPROCLIM = Errno(1131) + EUSERS = Errno(1132) + EDQUOT = Errno(1133) + ESTALE = Errno(1134) + EREMOTE = Errno(1135) + ENOSTR = Errno(1136) + ETIME = Errno(1137) + ENOSR = Errno(1138) + ENOMSG = Errno(1139) + EBADMSG = Errno(1140) + EIDRM = Errno(1141) + ENONET = Errno(1142) + ERREMOTE = Errno(1143) + ENOLINK = Errno(1144) + EADV = Errno(1145) + ESRMNT = Errno(1146) + ECOMM = Errno(1147) + EPROTO = Errno(1148) + EMULTIHOP = Errno(1149) + EDOTDOT = Errno(1150) + EREMCHG = Errno(1151) + ECANCELED = Errno(1152) + EINTRNODATA = Errno(1159) + ENOREUSE = Errno(1160) + ENOMOVE = Errno(1161) +) + +// Signals +const ( + SIGHUP = Signal(1) + SIGINT = Signal(2) + SIGABRT = Signal(3) + SIGILL = Signal(4) + SIGPOLL = Signal(5) + SIGURG = Signal(6) + SIGSTOP = Signal(7) + SIGFPE = Signal(8) + SIGKILL = Signal(9) + SIGBUS = Signal(10) + SIGSEGV = Signal(11) + SIGSYS = Signal(12) + SIGPIPE = Signal(13) + SIGALRM = Signal(14) + SIGTERM = Signal(15) + SIGUSR1 = Signal(16) + SIGUSR2 = Signal(17) + SIGABND = Signal(18) + SIGCONT = Signal(19) + SIGCHLD = Signal(20) + SIGTTIN = Signal(21) + SIGTTOU = Signal(22) + SIGIO = Signal(23) + SIGQUIT = Signal(24) + SIGTSTP = Signal(25) + SIGTRAP = Signal(26) + SIGIOERR = Signal(27) + SIGWINCH = Signal(28) + SIGXCPU = Signal(29) + SIGXFSZ = Signal(30) + SIGVTALRM = Signal(31) + SIGPROF = Signal(32) + SIGDANGER = Signal(33) + SIGTHSTOP = Signal(34) + SIGTHCONT = Signal(35) + SIGTRACE = Signal(37) + SIGDCE = Signal(38) + SIGDUMP = Signal(39) +) + +// Error table +var errorList = [...]struct { + num Errno + name string + desc string +}{ + {1, "EDC5001I", "A domain error occurred."}, + {2, "EDC5002I", "A range error occurred."}, + {111, "EDC5111I", "Permission denied."}, + {112, "EDC5112I", "Resource temporarily unavailable."}, + {113, "EDC5113I", "Bad file descriptor."}, + {114, "EDC5114I", "Resource busy."}, + {115, "EDC5115I", "No child processes."}, + {116, "EDC5116I", "Resource deadlock avoided."}, + {117, "EDC5117I", "File exists."}, + {118, "EDC5118I", "Incorrect address."}, + {119, "EDC5119I", "File too large."}, + {120, "EDC5120I", "Interrupted function call."}, + {121, "EDC5121I", "Invalid argument."}, + {122, "EDC5122I", "Input/output error."}, + {123, "EDC5123I", "Is a directory."}, + {124, "EDC5124I", "Too many open files."}, + {125, "EDC5125I", "Too many links."}, + {126, "EDC5126I", "Filename too long."}, + {127, "EDC5127I", "Too many open files in system."}, + {128, "EDC5128I", "No such device."}, + {129, "EDC5129I", "No such file or directory."}, + {130, "EDC5130I", "Exec format error."}, + {131, "EDC5131I", "No locks available."}, + {132, "EDC5132I", "Not enough memory."}, + {133, "EDC5133I", "No space left on device."}, + {134, "EDC5134I", "Function not implemented."}, + {135, "EDC5135I", "Not a directory."}, + {136, "EDC5136I", "Directory not empty."}, + {137, "EDC5137I", "Inappropriate I/O control operation."}, + {138, "EDC5138I", "No such device or address."}, + {139, "EDC5139I", "Operation not permitted."}, + {140, "EDC5140I", "Broken pipe."}, + {141, "EDC5141I", "Read-only file system."}, + {142, "EDC5142I", "Invalid seek."}, + {143, "EDC5143I", "No such process."}, + {144, "EDC5144I", "Improper link."}, + {145, "EDC5145I", "The parameter list is too long, or the message to receive was too large for the buffer."}, + {146, "EDC5146I", "Too many levels of symbolic links."}, + {147, "EDC5147I", "Illegal byte sequence."}, + {148, "", ""}, + {149, "EDC5149I", "Value Overflow Error."}, + {150, "EDC5150I", "UNIX System Services is not active."}, + {151, "EDC5151I", "Dynamic allocation error."}, + {152, "EDC5152I", "Common VTOC access facility (CVAF) error."}, + {153, "EDC5153I", "Catalog obtain error."}, + {156, "EDC5156I", "Process initialization error."}, + {157, "EDC5157I", "An internal error has occurred."}, + {158, "EDC5158I", "Bad parameters were passed to the service."}, + {159, "EDC5159I", "The Physical File System encountered a permanent file error."}, + {160, "EDC5160I", "Bad character in environment variable name."}, + {162, "EDC5162I", "The Physical File System encountered a system error."}, + {163, "EDC5163I", "SAF/RACF extract error."}, + {164, "EDC5164I", "SAF/RACF error."}, + {165, "EDC5165I", "System TOD clock not set."}, + {166, "EDC5166I", "Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement."}, + {167, "EDC5167I", "Access to the UNIX System Services version of the C RTL is denied."}, + {168, "EDC5168I", "Password has expired."}, + {169, "EDC5169I", "Password is invalid."}, + {170, "EDC5170I", "An error was encountered with WLM."}, + {171, "EDC5171I", "An error was encountered with CPL."}, + {172, "EDC5172I", "An error was encountered with Application Response Measurement (ARM) component."}, + {200, "EDC5200I", "The application contains a Language Environment member language that cannot tolerate a fork()."}, + {201, "EDC5201I", "The Language Environment message file was not found in the hierarchical file system."}, + {202, "EDC5202E", "DLL facilities are not supported under SPC environment."}, + {203, "EDC5203E", "DLL facilities are not supported under POSIX environment."}, + {227, "EDC5227I", "Buffer is not long enough to contain a path definition"}, + {228, "EDC5228I", "The file referred to is an external link"}, + {229, "EDC5229I", "No path definition for ddname in effect"}, + {230, "EDC5230I", "ESM error."}, + {231, "EDC5231I", "CP or the external security manager had an error"}, + {232, "EDC5232I", "The function failed because it was invoked from a multithread environment."}, + {244, "EDC5244I", "The program, module or DLL is not supported in this environment."}, + {245, "EDC5245I", "Data is not valid."}, + {246, "EDC5246I", "Unknown system state."}, + {247, "EDC5247I", "Operation not supported."}, + {248, "EDC5248I", "The object name specified is not correct."}, + {249, "EDC5249I", "The function is not allowed."}, + {257, "EDC5257I", "Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called."}, + {258, "EDC5258I", "A CUN_RS_NO_UNI_ENV error was issued by Unicode Services."}, + {259, "EDC5259I", "A CUN_RS_NO_CONVERSION error was issued by Unicode Services."}, + {260, "EDC5260I", "A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services."}, + {262, "EDC5262I", "An iconv() function encountered an unexpected error while using Unicode Services."}, + {1000, "EDC8000I", "A bad socket-call constant was found in the IUCV header."}, + {1001, "EDC8001I", "An error was found in the IUCV header."}, + {1002, "EDC8002I", "A socket descriptor is out of range."}, + {1003, "EDC8003I", "A socket descriptor is in use."}, + {1004, "EDC8004I", "Request failed because of an IUCV error."}, + {1005, "EDC8005I", "Offload box error."}, + {1006, "EDC8006I", "Offload box restarted."}, + {1007, "EDC8007I", "Offload box down."}, + {1008, "EDC8008I", "Already a conflicting call outstanding on socket."}, + {1009, "EDC8009I", "Request cancelled using a SOCKcallCANCEL request."}, + {1011, "EDC8011I", "A name of a PFS was specified that either is not configured or is not a Sockets PFS."}, + {1100, "EDC8100I", "Block device required."}, + {1101, "EDC8101I", "Text file busy."}, + {1102, "EDC8102I", "Operation would block."}, + {1103, "EDC8103I", "Operation now in progress."}, + {1104, "EDC8104I", "Connection already in progress."}, + {1105, "EDC8105I", "Socket operation on non-socket."}, + {1106, "EDC8106I", "Destination address required."}, + {1107, "EDC8107I", "Message too long."}, + {1108, "EDC8108I", "Protocol wrong type for socket."}, + {1109, "EDC8109I", "Protocol not available."}, + {1110, "EDC8110I", "Protocol not supported."}, + {1111, "EDC8111I", "Socket type not supported."}, + {1112, "EDC8112I", "Operation not supported on socket."}, + {1113, "EDC8113I", "Protocol family not supported."}, + {1114, "EDC8114I", "Address family not supported."}, + {1115, "EDC8115I", "Address already in use."}, + {1116, "EDC8116I", "Address not available."}, + {1117, "EDC8117I", "Network is down."}, + {1118, "EDC8118I", "Network is unreachable."}, + {1119, "EDC8119I", "Network dropped connection on reset."}, + {1120, "EDC8120I", "Connection ended abnormally."}, + {1121, "EDC8121I", "Connection reset."}, + {1122, "EDC8122I", "No buffer space available."}, + {1123, "EDC8123I", "Socket already connected."}, + {1124, "EDC8124I", "Socket not connected."}, + {1125, "EDC8125I", "Can't send after socket shutdown."}, + {1126, "EDC8126I", "Too many references; can't splice."}, + {1127, "EDC8127I", "Connection timed out."}, + {1128, "EDC8128I", "Connection refused."}, + {1129, "EDC8129I", "Host is not available."}, + {1130, "EDC8130I", "Host cannot be reached."}, + {1131, "EDC8131I", "Too many processes."}, + {1132, "EDC8132I", "Too many users."}, + {1133, "EDC8133I", "Disk quota exceeded."}, + {1134, "EDC8134I", "Stale file handle."}, + {1135, "", ""}, + {1136, "EDC8136I", "File is not a STREAM."}, + {1137, "EDC8137I", "STREAMS ioctl() timeout."}, + {1138, "EDC8138I", "No STREAMS resources."}, + {1139, "EDC8139I", "The message identified by set_id and msg_id is not in the message catalog."}, + {1140, "EDC8140I", "Bad message."}, + {1141, "EDC8141I", "Identifier removed."}, + {1142, "", ""}, + {1143, "", ""}, + {1144, "EDC8144I", "The link has been severed."}, + {1145, "", ""}, + {1146, "", ""}, + {1147, "", ""}, + {1148, "EDC8148I", "Protocol error."}, + {1149, "EDC8149I", "Multihop not allowed."}, + {1150, "", ""}, + {1151, "", ""}, + {1152, "EDC8152I", "The asynchronous I/O request has been canceled."}, + {1159, "EDC8159I", "Function call was interrupted before any data was received."}, + {1160, "EDC8160I", "Socket reuse is not supported."}, + {1161, "EDC8161I", "The file system cannot currently be moved."}, +} + +// Signal table +var signalList = [...]struct { + num Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGABT", "aborted"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGPOLL", "pollable event"}, + {6, "SIGURG", "urgent I/O condition"}, + {7, "SIGSTOP", "stop process"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad argument to routine"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGABND", "abend"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGQUIT", "quit"}, + {25, "SIGTSTP", "stopped"}, + {26, "SIGTRAP", "trace/breakpoint trap"}, + {27, "SIGIOER", "I/O error"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGXCPU", "CPU time limit exceeded"}, + {30, "SIGXFSZ", "file size limit exceeded"}, + {31, "SIGVTALRM", "virtual timer expired"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "danger"}, + {34, "SIGTHSTOP", "stop thread"}, + {35, "SIGTHCONT", "continue thread"}, + {37, "SIGTRACE", "trace"}, + {38, "", "DCE"}, + {39, "SIGDUMP", "dump"}, +} diff --git a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go index 89c5920e0..bd001a6e1 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT. +//go:build linux && (arm || arm64) // +build linux // +build arm arm64 diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go index 24b841eec..c34d0639b 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT. +//go:build linux && (mips || mips64) // +build linux // +build mips mips64 diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go index 47b048956..3ccf0c0c4 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT. +//go:build linux && (mipsle || mips64le) // +build linux // +build mipsle mips64le diff --git a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go index ea5d9cb53..7d6585700 100644 --- a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +++ b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go @@ -1,5 +1,6 @@ // Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT. +//go:build linux && (386 || amd64) // +build linux // +build 386 amd64 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go index ed657ff1b..91a23cc72 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -1,6 +1,7 @@ // go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build aix && ppc // +build aix,ppc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go index 664b293b4..33c2609b8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -1,6 +1,7 @@ // go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build aix && ppc64 // +build aix,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go index 0550da06d..8b737fa97 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -1,8 +1,8 @@ // go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go // Code generated by the command above; see README.md. DO NOT EDIT. -// +build aix,ppc64 -// +build gc +//go:build aix && ppc64 && gc +// +build aix,ppc64,gc package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go index cde4dbc5f..3c260917e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -1,8 +1,8 @@ // go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go // Code generated by the command above; see README.md. DO NOT EDIT. -// +build aix,ppc64 -// +build gccgo +//go:build aix && ppc64 && gccgo +// +build aix,ppc64,gccgo package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go index c8c142c59..48a62e390 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && 386 && go1.13 // +build darwin,386,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 387718348..a266636af 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && 386 && go1.12 // +build darwin,386,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go index 888262361..e36299ead 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && amd64 && go1.13 // +build darwin,amd64,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 508e5639b..f41116288 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && amd64 && go1.12 // +build darwin,amd64,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go index de4738fff..ed437f89a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm && go1.13 // +build darwin,arm,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index c0c771f40..7f88cb5ea 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm && go1.12 // +build darwin,arm,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go index 870eb37ab..d30ec4e29 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm64 && go1.13 // +build darwin,arm64,go1.13 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 9b01a79c4..a10df58d0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build darwin && arm64 && go1.12 // +build darwin,arm64,go1.12 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index 1aaccd361..1b6eedfa6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build dragonfly && amd64 // +build dragonfly,amd64 package unix @@ -362,8 +363,10 @@ func pipe() (r int, w int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) +func pipe2(p *[2]_C_int, flags int) (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + r = int(r0) + w = int(r1) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index 600f1d26d..3e9bddb7b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && 386 // +build freebsd,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index 064934b0d..c72a462b9 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && amd64 // +build freebsd,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 31d2c4616..530d5df90 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && arm // +build freebsd,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index 4adaaa561..71e7df9e8 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build freebsd && arm64 // +build freebsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go index 665dd9e4b..af5cb064e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build illumos && amd64 // +build illumos,amd64 package unix @@ -14,19 +15,25 @@ import ( //go:cgo_import_dynamic libc_writev writev "libc.so" //go:cgo_import_dynamic libc_pwritev pwritev "libc.so" //go:cgo_import_dynamic libc_accept4 accept4 "libsocket.so" +//go:cgo_import_dynamic libc_putmsg putmsg "libc.so" +//go:cgo_import_dynamic libc_getmsg getmsg "libc.so" //go:linkname procreadv libc_readv //go:linkname procpreadv libc_preadv //go:linkname procwritev libc_writev //go:linkname procpwritev libc_pwritev //go:linkname procaccept4 libc_accept4 +//go:linkname procputmsg libc_putmsg +//go:linkname procgetmsg libc_getmsg var ( procreadv, procpreadv, procwritev, procpwritev, - procaccept4 syscallFunc + procaccept4, + procputmsg, + procgetmsg syscallFunc ) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -99,3 +106,23 @@ func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 2fbbbe5a8..7305cc915 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -1,5 +1,6 @@ // Code generated by mkmerge.go; DO NOT EDIT. +//go:build linux // +build linux package unix @@ -531,6 +532,16 @@ func Close(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func CloseRange(first uint, last uint, flags uint) (err error) { + _, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 19ebd3ff7..e37096e4d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && 386 // +build linux,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 5c562182a..9919d8486 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && amd64 // +build linux,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index dc69d99c6..076754d48 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && arm // +build linux,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 1b897dee0..e893f987f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && arm64 // +build linux,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 49186843a..4703cf3c3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -1,6 +1,7 @@ // go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mips // +build linux,mips package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index 9171d3bd2..a134f9a4d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mips64 // +build linux,mips64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index 82286f04f..b1fff2d94 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mips64le // +build linux,mips64le package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index 15920621c..d13d6da01 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && mipsle // +build linux,mipsle package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 73a42e2cc..da8ec0396 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && ppc64 // +build linux,ppc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index 6b8559536..083f493bb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && ppc64le // +build linux,ppc64le package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index b76133447..63b393b80 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && riscv64 // +build linux,riscv64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index d7032ab1e..bb347407d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && s390x // +build linux,s390x package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index bcbbdd906..8edc517e1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build linux && sparc64 // +build linux,sparc64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 3bbd9e39c..4726ab30a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && 386 // +build netbsd,386 package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index d8cf5012c..fe71456db 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && amd64 // +build netbsd,amd64 package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 1153fe69b..0b5b2f014 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && arm // +build netbsd,arm package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 24b4ebb41..bfca28648 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build netbsd && arm64 // +build netbsd,arm64 package unix @@ -362,6 +363,16 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index b44b31aeb..8f80f4ade 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && 386 // +build openbsd,386 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 67f93ee76..3a47aca7b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && amd64 // +build openbsd,amd64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index d7c878b1d..883a9b45e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -1,6 +1,7 @@ // go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && arm // +build openbsd,arm package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index 8facd695d..aac7fdc95 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && arm64 // +build openbsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go index ec6bd5bb7..877618746 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -1,6 +1,7 @@ // go run mksyscall.go -openbsd -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build openbsd && mips64 // +build openbsd,mips64 package unix diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 6dbb83716..4e18d5c99 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -1,6 +1,7 @@ // go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build solaris && amd64 // +build solaris,amd64 package unix @@ -115,6 +116,7 @@ import ( //go:cgo_import_dynamic libc_statvfs statvfs "libc.so" //go:cgo_import_dynamic libc_symlink symlink "libc.so" //go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_sysconf sysconf "libc.so" //go:cgo_import_dynamic libc_times times "libc.so" //go:cgo_import_dynamic libc_truncate truncate "libc.so" //go:cgo_import_dynamic libc_fsync fsync "libc.so" @@ -245,6 +247,7 @@ import ( //go:linkname procStatvfs libc_statvfs //go:linkname procSymlink libc_symlink //go:linkname procSync libc_sync +//go:linkname procSysconf libc_sysconf //go:linkname procTimes libc_times //go:linkname procTruncate libc_truncate //go:linkname procFsync libc_fsync @@ -376,6 +379,7 @@ var ( procStatvfs, procSymlink, procSync, + procSysconf, procTimes, procTruncate, procFsync, @@ -615,8 +619,9 @@ func __minor(version int, dev uint64) (val uint) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) +func ioctlRet(fd int, req uint, arg uintptr) (ret int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + ret = int(r0) if e1 != 0 { err = e1 } @@ -1687,6 +1692,17 @@ func Sync() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Sysconf(which int) (n int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0) + n = int64(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Times(tms *Tms) (ticks uintptr, err error) { r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) ticks = uintptr(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go new file mode 100644 index 000000000..8285ab841 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -0,0 +1,1217 @@ +// go run mksyscall.go -tags zos,s390x syscall_zos_s390x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(SYS___ACCEPT_A, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(SYS___BIND_A, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(SYS___CONNECT_A, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawsyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawsyscall(SYS___GETPEERNAME_A, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawsyscall(SYS___GETSOCKNAME_A, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(SYS___RECVFROM_A, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(SYS___SENDTO_A, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(SYS___RECVMSG_A, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(SYS___SENDMSG_A, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___ACCESS_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHDIR_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHOWN_A, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHMOD_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(SYS___CREAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := syscall_syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := syscall_syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) { + r0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + retval = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_LE_t) (err error) { + _, _, e1 := syscall_syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, stat *Statvfs_t) (err error) { + _, _, e1 := syscall_syscall(SYS_FSTATVFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpagesize() (pgsize int) { + r0, _, _ := syscall_syscall(SYS_GETPAGESIZE, 0, 0, 0) + pgsize = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var _p0 unsafe.Pointer + if len(fds) > 0 { + _p0 = unsafe.Pointer(&fds[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS_POLL, uintptr(_p0), uintptr(len(fds)), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := syscall_syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent(buff *byte, size int) (lastsys int, err error) { + r0, _, e1 := syscall_syscall(SYS_W_GETMNTENT, uintptr(unsafe.Pointer(buff)), uintptr(size), 0) + lastsys = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(filesystem) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(parm) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(SYS___MOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(filesystem string, mtm int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(filesystem) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UMOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mtm), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___CHROOT_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := syscall_rawsyscall(SYS___UNAME_A, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gethostname(buf []byte) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(SYS___GETHOSTNAME_A, uintptr(_p0), uintptr(len(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (pid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETPPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrusage(who int, rusage *rusage_zos) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawsyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___LCHOWN_A, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___LINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := syscall_syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___LSTAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___MKDIR_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___MKFIFO_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___MKNOD_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(SYS___READLINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___RENAME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___RMDIR_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := syscall_syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawsyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_syscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, _, e1 := syscall_syscall(SYS_SETGID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statLE *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___STAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___SYMLINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + syscall_syscall(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___TRUNCATE_A, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcgetattr(fildes int, termptr *Termios) (err error) { + _, _, e1 := syscall_syscall(SYS_TCGETATTR, uintptr(fildes), uintptr(unsafe.Pointer(termptr)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcsetattr(fildes int, when int, termptr *Termios) (err error) { + _, _, e1 := syscall_syscall(SYS_TCSETATTR, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := syscall_syscall(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UNLINK_A, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, utim *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UTIME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(SYS___OPEN_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func remove(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) { + r0, _, e1 := syscall_syscall(SYS_WAITPID, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options)) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *timeval_zos) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := syscall_rawsyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(SYS___UTIMES_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index 102f1ab47..9e9d0b2a9 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index 4866fced8..adecd0966 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index d3801eb24..8ea52a4a1 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go index ba4304fd2..154b57ae3 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go index aca34b349..d96bb2ba4 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go @@ -1,6 +1,7 @@ // go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go index ad62324c7..1794ffc92 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && darwin // +build 386,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go index a2fc91d6a..f8298ff9b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && darwin // +build amd64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go index 20d7808ac..6dc736449 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && darwin // +build arm,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go index 527b9588c..5eb433bbf 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && darwin // +build arm64,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go index 9912c6ee3..703675c0c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && dragonfly // +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 9474974b6..59d5dfc20 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && freebsd // +build 386,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 48a7beae7..342d471d2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && freebsd // +build amd64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 4a6dfd4a7..e2e3d72c5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && freebsd // +build arm,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 3e51af8ed..61ad5ca3c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && freebsd // +build arm64,freebsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index f6742bdee..8e5359713 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && linux // +build 386,linux package unix @@ -436,4 +437,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index f7e525573..d7dceb769 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && linux // +build amd64,linux package unix @@ -358,4 +359,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 3f60977da..04093a69f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && linux // +build arm,linux package unix @@ -400,4 +401,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index dbedf4cba..48f94f135 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && linux // +build arm64,linux package unix @@ -303,4 +304,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index eeff7e1dc..499978c3e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips && linux // +build mips,linux package unix @@ -421,4 +422,5 @@ const ( SYS_PIDFD_GETFD = 4438 SYS_FACCESSAT2 = 4439 SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 73cfa535c..10d1db2be 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && linux // +build mips64,linux package unix @@ -351,4 +352,5 @@ const ( SYS_PIDFD_GETFD = 5438 SYS_FACCESSAT2 = 5439 SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index be74729e0..208d5dcd5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64le && linux // +build mips64le,linux package unix @@ -351,4 +352,5 @@ const ( SYS_PIDFD_GETFD = 5438 SYS_FACCESSAT2 = 5439 SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 2a1047c81..f8250602e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mipsle && linux // +build mipsle,linux package unix @@ -421,4 +422,5 @@ const ( SYS_PIDFD_GETFD = 4438 SYS_FACCESSAT2 = 4439 SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 32707428c..d5ed3ff51 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && linux // +build ppc64,linux package unix @@ -400,4 +401,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index a58572f78..e29b4424c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64le && linux // +build ppc64le,linux package unix @@ -400,4 +401,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 72a65b760..41deed6c3 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build riscv64 && linux // +build riscv64,linux package unix @@ -302,4 +303,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 1fb9ae5d4..8e53a9e8c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build s390x && linux // +build s390x,linux package unix @@ -365,4 +366,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 57636e09e..596e5bc7d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -1,6 +1,7 @@ // go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build sparc64 && linux // +build sparc64,linux package unix @@ -379,4 +380,5 @@ const ( SYS_PIDFD_GETFD = 438 SYS_FACCESSAT2 = 439 SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go index e66a8c9d3..3a6699eba 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && netbsd // +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go index 42c788f24..5677cd4f1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && netbsd // +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go index 0a0757179..e784cb6db 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && netbsd // +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go index 0291c0931..bd4952efa 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; DO NOT EDIT. +//go:build arm64 && netbsd // +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go index b0207d1c9..817edbf95 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go index f0dec6f0b..ea453614e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go index 33d1dc540..467971eed 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go index fe2b689b6..32eec5ed5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go index 5c08d573b..a37f77375 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go @@ -1,6 +1,7 @@ // go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go new file mode 100644 index 000000000..073daad43 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go @@ -0,0 +1,2670 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +package unix + +// TODO: auto-generate. + +const ( + SYS_ACOSD128 = 0xB80 + SYS_ACOSD32 = 0xB7E + SYS_ACOSD64 = 0xB7F + SYS_ACOSHD128 = 0xB83 + SYS_ACOSHD32 = 0xB81 + SYS_ACOSHD64 = 0xB82 + SYS_AIO_FSYNC = 0xC69 + SYS_ASCTIME = 0x0AE + SYS_ASCTIME64 = 0xCD7 + SYS_ASCTIME64_R = 0xCD8 + SYS_ASIND128 = 0xB86 + SYS_ASIND32 = 0xB84 + SYS_ASIND64 = 0xB85 + SYS_ASINHD128 = 0xB89 + SYS_ASINHD32 = 0xB87 + SYS_ASINHD64 = 0xB88 + SYS_ATAN2D128 = 0xB8F + SYS_ATAN2D32 = 0xB8D + SYS_ATAN2D64 = 0xB8E + SYS_ATAND128 = 0xB8C + SYS_ATAND32 = 0xB8A + SYS_ATAND64 = 0xB8B + SYS_ATANHD128 = 0xB92 + SYS_ATANHD32 = 0xB90 + SYS_ATANHD64 = 0xB91 + SYS_BIND2ADDRSEL = 0xD59 + SYS_C16RTOMB = 0xD40 + SYS_C32RTOMB = 0xD41 + SYS_CBRTD128 = 0xB95 + SYS_CBRTD32 = 0xB93 + SYS_CBRTD64 = 0xB94 + SYS_CEILD128 = 0xB98 + SYS_CEILD32 = 0xB96 + SYS_CEILD64 = 0xB97 + SYS_CLEARENV = 0x0C9 + SYS_CLEARERR_UNLOCKED = 0xCA1 + SYS_CLOCK = 0x0AA + SYS_CLOGL = 0xA00 + SYS_CLRMEMF = 0x0BD + SYS_CONJ = 0xA03 + SYS_CONJF = 0xA06 + SYS_CONJL = 0xA09 + SYS_COPYSIGND128 = 0xB9E + SYS_COPYSIGND32 = 0xB9C + SYS_COPYSIGND64 = 0xB9D + SYS_COSD128 = 0xBA1 + SYS_COSD32 = 0xB9F + SYS_COSD64 = 0xBA0 + SYS_COSHD128 = 0xBA4 + SYS_COSHD32 = 0xBA2 + SYS_COSHD64 = 0xBA3 + SYS_CPOW = 0xA0C + SYS_CPOWF = 0xA0F + SYS_CPOWL = 0xA12 + SYS_CPROJ = 0xA15 + SYS_CPROJF = 0xA18 + SYS_CPROJL = 0xA1B + SYS_CREAL = 0xA1E + SYS_CREALF = 0xA21 + SYS_CREALL = 0xA24 + SYS_CSIN = 0xA27 + SYS_CSINF = 0xA2A + SYS_CSINH = 0xA30 + SYS_CSINHF = 0xA33 + SYS_CSINHL = 0xA36 + SYS_CSINL = 0xA2D + SYS_CSNAP = 0x0C5 + SYS_CSQRT = 0xA39 + SYS_CSQRTF = 0xA3C + SYS_CSQRTL = 0xA3F + SYS_CTAN = 0xA42 + SYS_CTANF = 0xA45 + SYS_CTANH = 0xA4B + SYS_CTANHF = 0xA4E + SYS_CTANHL = 0xA51 + SYS_CTANL = 0xA48 + SYS_CTIME = 0x0AB + SYS_CTIME64 = 0xCD9 + SYS_CTIME64_R = 0xCDA + SYS_CTRACE = 0x0C6 + SYS_DIFFTIME = 0x0A7 + SYS_DIFFTIME64 = 0xCDB + SYS_DLADDR = 0xC82 + SYS_DYNALLOC = 0x0C3 + SYS_DYNFREE = 0x0C2 + SYS_ERFCD128 = 0xBAA + SYS_ERFCD32 = 0xBA8 + SYS_ERFCD64 = 0xBA9 + SYS_ERFD128 = 0xBA7 + SYS_ERFD32 = 0xBA5 + SYS_ERFD64 = 0xBA6 + SYS_EXP2D128 = 0xBB0 + SYS_EXP2D32 = 0xBAE + SYS_EXP2D64 = 0xBAF + SYS_EXPD128 = 0xBAD + SYS_EXPD32 = 0xBAB + SYS_EXPD64 = 0xBAC + SYS_EXPM1D128 = 0xBB3 + SYS_EXPM1D32 = 0xBB1 + SYS_EXPM1D64 = 0xBB2 + SYS_FABSD128 = 0xBB6 + SYS_FABSD32 = 0xBB4 + SYS_FABSD64 = 0xBB5 + SYS_FDELREC_UNLOCKED = 0xCA2 + SYS_FDIMD128 = 0xBB9 + SYS_FDIMD32 = 0xBB7 + SYS_FDIMD64 = 0xBB8 + SYS_FDOPEN_UNLOCKED = 0xCFC + SYS_FECLEAREXCEPT = 0xAEA + SYS_FEGETENV = 0xAEB + SYS_FEGETEXCEPTFLAG = 0xAEC + SYS_FEGETROUND = 0xAED + SYS_FEHOLDEXCEPT = 0xAEE + SYS_FEOF_UNLOCKED = 0xCA3 + SYS_FERAISEEXCEPT = 0xAEF + SYS_FERROR_UNLOCKED = 0xCA4 + SYS_FESETENV = 0xAF0 + SYS_FESETEXCEPTFLAG = 0xAF1 + SYS_FESETROUND = 0xAF2 + SYS_FETCHEP = 0x0BF + SYS_FETESTEXCEPT = 0xAF3 + SYS_FEUPDATEENV = 0xAF4 + SYS_FE_DEC_GETROUND = 0xBBA + SYS_FE_DEC_SETROUND = 0xBBB + SYS_FFLUSH_UNLOCKED = 0xCA5 + SYS_FGETC_UNLOCKED = 0xC80 + SYS_FGETPOS64 = 0xCEE + SYS_FGETPOS64_UNLOCKED = 0xCF4 + SYS_FGETPOS_UNLOCKED = 0xCA6 + SYS_FGETS_UNLOCKED = 0xC7C + SYS_FGETWC_UNLOCKED = 0xCA7 + SYS_FGETWS_UNLOCKED = 0xCA8 + SYS_FILENO_UNLOCKED = 0xCA9 + SYS_FLDATA = 0x0C1 + SYS_FLDATA_UNLOCKED = 0xCAA + SYS_FLOCATE_UNLOCKED = 0xCAB + SYS_FLOORD128 = 0xBBE + SYS_FLOORD32 = 0xBBC + SYS_FLOORD64 = 0xBBD + SYS_FMA = 0xA63 + SYS_FMAD128 = 0xBC1 + SYS_FMAD32 = 0xBBF + SYS_FMAD64 = 0xBC0 + SYS_FMAF = 0xA66 + SYS_FMAL = 0xA69 + SYS_FMAX = 0xA6C + SYS_FMAXD128 = 0xBC4 + SYS_FMAXD32 = 0xBC2 + SYS_FMAXD64 = 0xBC3 + SYS_FMAXF = 0xA6F + SYS_FMAXL = 0xA72 + SYS_FMIN = 0xA75 + SYS_FMIND128 = 0xBC7 + SYS_FMIND32 = 0xBC5 + SYS_FMIND64 = 0xBC6 + SYS_FMINF = 0xA78 + SYS_FMINL = 0xA7B + SYS_FMODD128 = 0xBCA + SYS_FMODD32 = 0xBC8 + SYS_FMODD64 = 0xBC9 + SYS_FOPEN64 = 0xD49 + SYS_FOPEN64_UNLOCKED = 0xD4A + SYS_FOPEN_UNLOCKED = 0xCFA + SYS_FPRINTF_UNLOCKED = 0xCAC + SYS_FPUTC_UNLOCKED = 0xC81 + SYS_FPUTS_UNLOCKED = 0xC7E + SYS_FPUTWC_UNLOCKED = 0xCAD + SYS_FPUTWS_UNLOCKED = 0xCAE + SYS_FREAD_NOUPDATE = 0xCEC + SYS_FREAD_NOUPDATE_UNLOCKED = 0xCED + SYS_FREAD_UNLOCKED = 0xC7B + SYS_FREEIFADDRS = 0xCE6 + SYS_FREOPEN64 = 0xD4B + SYS_FREOPEN64_UNLOCKED = 0xD4C + SYS_FREOPEN_UNLOCKED = 0xCFB + SYS_FREXPD128 = 0xBCE + SYS_FREXPD32 = 0xBCC + SYS_FREXPD64 = 0xBCD + SYS_FSCANF_UNLOCKED = 0xCAF + SYS_FSEEK64 = 0xCEF + SYS_FSEEK64_UNLOCKED = 0xCF5 + SYS_FSEEKO64 = 0xCF0 + SYS_FSEEKO64_UNLOCKED = 0xCF6 + SYS_FSEEKO_UNLOCKED = 0xCB1 + SYS_FSEEK_UNLOCKED = 0xCB0 + SYS_FSETPOS64 = 0xCF1 + SYS_FSETPOS64_UNLOCKED = 0xCF7 + SYS_FSETPOS_UNLOCKED = 0xCB3 + SYS_FTELL64 = 0xCF2 + SYS_FTELL64_UNLOCKED = 0xCF8 + SYS_FTELLO64 = 0xCF3 + SYS_FTELLO64_UNLOCKED = 0xCF9 + SYS_FTELLO_UNLOCKED = 0xCB5 + SYS_FTELL_UNLOCKED = 0xCB4 + SYS_FUPDATE = 0x0B5 + SYS_FUPDATE_UNLOCKED = 0xCB7 + SYS_FWIDE_UNLOCKED = 0xCB8 + SYS_FWPRINTF_UNLOCKED = 0xCB9 + SYS_FWRITE_UNLOCKED = 0xC7A + SYS_FWSCANF_UNLOCKED = 0xCBA + SYS_GETDATE64 = 0xD4F + SYS_GETIFADDRS = 0xCE7 + SYS_GETIPV4SOURCEFILTER = 0xC77 + SYS_GETSOURCEFILTER = 0xC79 + SYS_GETSYNTX = 0x0FD + SYS_GETS_UNLOCKED = 0xC7D + SYS_GETTIMEOFDAY64 = 0xD50 + SYS_GETWCHAR_UNLOCKED = 0xCBC + SYS_GETWC_UNLOCKED = 0xCBB + SYS_GMTIME = 0x0B0 + SYS_GMTIME64 = 0xCDC + SYS_GMTIME64_R = 0xCDD + SYS_HYPOTD128 = 0xBD1 + SYS_HYPOTD32 = 0xBCF + SYS_HYPOTD64 = 0xBD0 + SYS_ILOGBD128 = 0xBD4 + SYS_ILOGBD32 = 0xBD2 + SYS_ILOGBD64 = 0xBD3 + SYS_ILOGBF = 0xA7E + SYS_ILOGBL = 0xA81 + SYS_INET6_IS_SRCADDR = 0xD5A + SYS_ISBLANK = 0x0FE + SYS_ISWALNUM = 0x0FF + SYS_LDEXPD128 = 0xBD7 + SYS_LDEXPD32 = 0xBD5 + SYS_LDEXPD64 = 0xBD6 + SYS_LGAMMAD128 = 0xBDA + SYS_LGAMMAD32 = 0xBD8 + SYS_LGAMMAD64 = 0xBD9 + SYS_LIO_LISTIO = 0xC6A + SYS_LLRINT = 0xA84 + SYS_LLRINTD128 = 0xBDD + SYS_LLRINTD32 = 0xBDB + SYS_LLRINTD64 = 0xBDC + SYS_LLRINTF = 0xA87 + SYS_LLRINTL = 0xA8A + SYS_LLROUND = 0xA8D + SYS_LLROUNDD128 = 0xBE0 + SYS_LLROUNDD32 = 0xBDE + SYS_LLROUNDD64 = 0xBDF + SYS_LLROUNDF = 0xA90 + SYS_LLROUNDL = 0xA93 + SYS_LOCALTIM = 0x0B1 + SYS_LOCALTIME = 0x0B1 + SYS_LOCALTIME64 = 0xCDE + SYS_LOCALTIME64_R = 0xCDF + SYS_LOG10D128 = 0xBE6 + SYS_LOG10D32 = 0xBE4 + SYS_LOG10D64 = 0xBE5 + SYS_LOG1PD128 = 0xBE9 + SYS_LOG1PD32 = 0xBE7 + SYS_LOG1PD64 = 0xBE8 + SYS_LOG2D128 = 0xBEC + SYS_LOG2D32 = 0xBEA + SYS_LOG2D64 = 0xBEB + SYS_LOGBD128 = 0xBEF + SYS_LOGBD32 = 0xBED + SYS_LOGBD64 = 0xBEE + SYS_LOGBF = 0xA96 + SYS_LOGBL = 0xA99 + SYS_LOGD128 = 0xBE3 + SYS_LOGD32 = 0xBE1 + SYS_LOGD64 = 0xBE2 + SYS_LRINT = 0xA9C + SYS_LRINTD128 = 0xBF2 + SYS_LRINTD32 = 0xBF0 + SYS_LRINTD64 = 0xBF1 + SYS_LRINTF = 0xA9F + SYS_LRINTL = 0xAA2 + SYS_LROUNDD128 = 0xBF5 + SYS_LROUNDD32 = 0xBF3 + SYS_LROUNDD64 = 0xBF4 + SYS_LROUNDL = 0xAA5 + SYS_MBLEN = 0x0AF + SYS_MBRTOC16 = 0xD42 + SYS_MBRTOC32 = 0xD43 + SYS_MEMSET = 0x0A3 + SYS_MKTIME = 0x0AC + SYS_MKTIME64 = 0xCE0 + SYS_MODFD128 = 0xBF8 + SYS_MODFD32 = 0xBF6 + SYS_MODFD64 = 0xBF7 + SYS_NAN = 0xAA8 + SYS_NAND128 = 0xBFB + SYS_NAND32 = 0xBF9 + SYS_NAND64 = 0xBFA + SYS_NANF = 0xAAA + SYS_NANL = 0xAAC + SYS_NEARBYINT = 0xAAE + SYS_NEARBYINTD128 = 0xBFE + SYS_NEARBYINTD32 = 0xBFC + SYS_NEARBYINTD64 = 0xBFD + SYS_NEARBYINTF = 0xAB1 + SYS_NEARBYINTL = 0xAB4 + SYS_NEXTAFTERD128 = 0xC01 + SYS_NEXTAFTERD32 = 0xBFF + SYS_NEXTAFTERD64 = 0xC00 + SYS_NEXTAFTERF = 0xAB7 + SYS_NEXTAFTERL = 0xABA + SYS_NEXTTOWARD = 0xABD + SYS_NEXTTOWARDD128 = 0xC04 + SYS_NEXTTOWARDD32 = 0xC02 + SYS_NEXTTOWARDD64 = 0xC03 + SYS_NEXTTOWARDF = 0xAC0 + SYS_NEXTTOWARDL = 0xAC3 + SYS_NL_LANGINFO = 0x0FC + SYS_PERROR_UNLOCKED = 0xCBD + SYS_POSIX_FALLOCATE = 0xCE8 + SYS_POSIX_MEMALIGN = 0xCE9 + SYS_POSIX_OPENPT = 0xC66 + SYS_POWD128 = 0xC07 + SYS_POWD32 = 0xC05 + SYS_POWD64 = 0xC06 + SYS_PRINTF_UNLOCKED = 0xCBE + SYS_PSELECT = 0xC67 + SYS_PTHREAD_ATTR_GETSTACK = 0xB3E + SYS_PTHREAD_ATTR_SETSTACK = 0xB3F + SYS_PTHREAD_SECURITY_APPLID_NP = 0xCE4 + SYS_PUTS_UNLOCKED = 0xC7F + SYS_PUTWCHAR_UNLOCKED = 0xCC0 + SYS_PUTWC_UNLOCKED = 0xCBF + SYS_QUANTEXPD128 = 0xD46 + SYS_QUANTEXPD32 = 0xD44 + SYS_QUANTEXPD64 = 0xD45 + SYS_QUANTIZED128 = 0xC0A + SYS_QUANTIZED32 = 0xC08 + SYS_QUANTIZED64 = 0xC09 + SYS_REMAINDERD128 = 0xC0D + SYS_REMAINDERD32 = 0xC0B + SYS_REMAINDERD64 = 0xC0C + SYS_RESIZE_ALLOC = 0xCEB + SYS_REWIND_UNLOCKED = 0xCC1 + SYS_RINTD128 = 0xC13 + SYS_RINTD32 = 0xC11 + SYS_RINTD64 = 0xC12 + SYS_RINTF = 0xACB + SYS_RINTL = 0xACD + SYS_ROUND = 0xACF + SYS_ROUNDD128 = 0xC16 + SYS_ROUNDD32 = 0xC14 + SYS_ROUNDD64 = 0xC15 + SYS_ROUNDF = 0xAD2 + SYS_ROUNDL = 0xAD5 + SYS_SAMEQUANTUMD128 = 0xC19 + SYS_SAMEQUANTUMD32 = 0xC17 + SYS_SAMEQUANTUMD64 = 0xC18 + SYS_SCALBLN = 0xAD8 + SYS_SCALBLND128 = 0xC1C + SYS_SCALBLND32 = 0xC1A + SYS_SCALBLND64 = 0xC1B + SYS_SCALBLNF = 0xADB + SYS_SCALBLNL = 0xADE + SYS_SCALBND128 = 0xC1F + SYS_SCALBND32 = 0xC1D + SYS_SCALBND64 = 0xC1E + SYS_SCALBNF = 0xAE3 + SYS_SCALBNL = 0xAE6 + SYS_SCANF_UNLOCKED = 0xCC2 + SYS_SCHED_YIELD = 0xB32 + SYS_SETENV = 0x0C8 + SYS_SETIPV4SOURCEFILTER = 0xC76 + SYS_SETSOURCEFILTER = 0xC78 + SYS_SHM_OPEN = 0xC8C + SYS_SHM_UNLINK = 0xC8D + SYS_SIND128 = 0xC22 + SYS_SIND32 = 0xC20 + SYS_SIND64 = 0xC21 + SYS_SINHD128 = 0xC25 + SYS_SINHD32 = 0xC23 + SYS_SINHD64 = 0xC24 + SYS_SIZEOF_ALLOC = 0xCEA + SYS_SOCKATMARK = 0xC68 + SYS_SQRTD128 = 0xC28 + SYS_SQRTD32 = 0xC26 + SYS_SQRTD64 = 0xC27 + SYS_STRCHR = 0x0A0 + SYS_STRCSPN = 0x0A1 + SYS_STRERROR = 0x0A8 + SYS_STRERROR_R = 0xB33 + SYS_STRFTIME = 0x0B2 + SYS_STRLEN = 0x0A9 + SYS_STRPBRK = 0x0A2 + SYS_STRSPN = 0x0A4 + SYS_STRSTR = 0x0A5 + SYS_STRTOD128 = 0xC2B + SYS_STRTOD32 = 0xC29 + SYS_STRTOD64 = 0xC2A + SYS_STRTOK = 0x0A6 + SYS_TAND128 = 0xC2E + SYS_TAND32 = 0xC2C + SYS_TAND64 = 0xC2D + SYS_TANHD128 = 0xC31 + SYS_TANHD32 = 0xC2F + SYS_TANHD64 = 0xC30 + SYS_TGAMMAD128 = 0xC34 + SYS_TGAMMAD32 = 0xC32 + SYS_TGAMMAD64 = 0xC33 + SYS_TIME = 0x0AD + SYS_TIME64 = 0xCE1 + SYS_TMPFILE64 = 0xD4D + SYS_TMPFILE64_UNLOCKED = 0xD4E + SYS_TMPFILE_UNLOCKED = 0xCFD + SYS_TRUNCD128 = 0xC40 + SYS_TRUNCD32 = 0xC3E + SYS_TRUNCD64 = 0xC3F + SYS_UNGETC_UNLOCKED = 0xCC3 + SYS_UNGETWC_UNLOCKED = 0xCC4 + SYS_UNSETENV = 0xB34 + SYS_VFPRINTF_UNLOCKED = 0xCC5 + SYS_VFSCANF_UNLOCKED = 0xCC7 + SYS_VFWPRINTF_UNLOCKED = 0xCC9 + SYS_VFWSCANF_UNLOCKED = 0xCCB + SYS_VPRINTF_UNLOCKED = 0xCCD + SYS_VSCANF_UNLOCKED = 0xCCF + SYS_VWPRINTF_UNLOCKED = 0xCD1 + SYS_VWSCANF_UNLOCKED = 0xCD3 + SYS_WCSTOD128 = 0xC43 + SYS_WCSTOD32 = 0xC41 + SYS_WCSTOD64 = 0xC42 + SYS_WPRINTF_UNLOCKED = 0xCD5 + SYS_WSCANF_UNLOCKED = 0xCD6 + SYS__FLUSHLBF = 0xD68 + SYS__FLUSHLBF_UNLOCKED = 0xD6F + SYS___ACOSHF_H = 0xA54 + SYS___ACOSHL_H = 0xA55 + SYS___ASINHF_H = 0xA56 + SYS___ASINHL_H = 0xA57 + SYS___ATANPID128 = 0xC6D + SYS___ATANPID32 = 0xC6B + SYS___ATANPID64 = 0xC6C + SYS___CBRTF_H = 0xA58 + SYS___CBRTL_H = 0xA59 + SYS___CDUMP = 0x0C4 + SYS___CLASS = 0xAFA + SYS___CLASS2 = 0xB99 + SYS___CLASS2D128 = 0xC99 + SYS___CLASS2D32 = 0xC97 + SYS___CLASS2D64 = 0xC98 + SYS___CLASS2F = 0xC91 + SYS___CLASS2F_B = 0xC93 + SYS___CLASS2F_H = 0xC94 + SYS___CLASS2L = 0xC92 + SYS___CLASS2L_B = 0xC95 + SYS___CLASS2L_H = 0xC96 + SYS___CLASS2_B = 0xB9A + SYS___CLASS2_H = 0xB9B + SYS___CLASS_B = 0xAFB + SYS___CLASS_H = 0xAFC + SYS___CLOGL_B = 0xA01 + SYS___CLOGL_H = 0xA02 + SYS___CLRENV = 0x0C9 + SYS___CLRMF = 0x0BD + SYS___CODEPAGE_INFO = 0xC64 + SYS___CONJF_B = 0xA07 + SYS___CONJF_H = 0xA08 + SYS___CONJL_B = 0xA0A + SYS___CONJL_H = 0xA0B + SYS___CONJ_B = 0xA04 + SYS___CONJ_H = 0xA05 + SYS___COPYSIGN_B = 0xA5A + SYS___COPYSIGN_H = 0xAF5 + SYS___COSPID128 = 0xC70 + SYS___COSPID32 = 0xC6E + SYS___COSPID64 = 0xC6F + SYS___CPOWF_B = 0xA10 + SYS___CPOWF_H = 0xA11 + SYS___CPOWL_B = 0xA13 + SYS___CPOWL_H = 0xA14 + SYS___CPOW_B = 0xA0D + SYS___CPOW_H = 0xA0E + SYS___CPROJF_B = 0xA19 + SYS___CPROJF_H = 0xA1A + SYS___CPROJL_B = 0xA1C + SYS___CPROJL_H = 0xA1D + SYS___CPROJ_B = 0xA16 + SYS___CPROJ_H = 0xA17 + SYS___CREALF_B = 0xA22 + SYS___CREALF_H = 0xA23 + SYS___CREALL_B = 0xA25 + SYS___CREALL_H = 0xA26 + SYS___CREAL_B = 0xA1F + SYS___CREAL_H = 0xA20 + SYS___CSINF_B = 0xA2B + SYS___CSINF_H = 0xA2C + SYS___CSINHF_B = 0xA34 + SYS___CSINHF_H = 0xA35 + SYS___CSINHL_B = 0xA37 + SYS___CSINHL_H = 0xA38 + SYS___CSINH_B = 0xA31 + SYS___CSINH_H = 0xA32 + SYS___CSINL_B = 0xA2E + SYS___CSINL_H = 0xA2F + SYS___CSIN_B = 0xA28 + SYS___CSIN_H = 0xA29 + SYS___CSNAP = 0x0C5 + SYS___CSQRTF_B = 0xA3D + SYS___CSQRTF_H = 0xA3E + SYS___CSQRTL_B = 0xA40 + SYS___CSQRTL_H = 0xA41 + SYS___CSQRT_B = 0xA3A + SYS___CSQRT_H = 0xA3B + SYS___CTANF_B = 0xA46 + SYS___CTANF_H = 0xA47 + SYS___CTANHF_B = 0xA4F + SYS___CTANHF_H = 0xA50 + SYS___CTANHL_B = 0xA52 + SYS___CTANHL_H = 0xA53 + SYS___CTANH_B = 0xA4C + SYS___CTANH_H = 0xA4D + SYS___CTANL_B = 0xA49 + SYS___CTANL_H = 0xA4A + SYS___CTAN_B = 0xA43 + SYS___CTAN_H = 0xA44 + SYS___CTEST = 0x0C7 + SYS___CTRACE = 0x0C6 + SYS___D1TOP = 0xC9B + SYS___D2TOP = 0xC9C + SYS___D4TOP = 0xC9D + SYS___DYNALL = 0x0C3 + SYS___DYNFRE = 0x0C2 + SYS___EXP2F_H = 0xA5E + SYS___EXP2L_H = 0xA5F + SYS___EXP2_H = 0xA5D + SYS___EXPM1F_H = 0xA5B + SYS___EXPM1L_H = 0xA5C + SYS___FBUFSIZE = 0xD60 + SYS___FLBF = 0xD62 + SYS___FLDATA = 0x0C1 + SYS___FMAF_B = 0xA67 + SYS___FMAF_H = 0xA68 + SYS___FMAL_B = 0xA6A + SYS___FMAL_H = 0xA6B + SYS___FMAXF_B = 0xA70 + SYS___FMAXF_H = 0xA71 + SYS___FMAXL_B = 0xA73 + SYS___FMAXL_H = 0xA74 + SYS___FMAX_B = 0xA6D + SYS___FMAX_H = 0xA6E + SYS___FMA_B = 0xA64 + SYS___FMA_H = 0xA65 + SYS___FMINF_B = 0xA79 + SYS___FMINF_H = 0xA7A + SYS___FMINL_B = 0xA7C + SYS___FMINL_H = 0xA7D + SYS___FMIN_B = 0xA76 + SYS___FMIN_H = 0xA77 + SYS___FPENDING = 0xD61 + SYS___FPENDING_UNLOCKED = 0xD6C + SYS___FPURGE = 0xD69 + SYS___FPURGE_UNLOCKED = 0xD70 + SYS___FP_CAST_D = 0xBCB + SYS___FREADABLE = 0xD63 + SYS___FREADAHEAD = 0xD6A + SYS___FREADAHEAD_UNLOCKED = 0xD71 + SYS___FREADING = 0xD65 + SYS___FREADING_UNLOCKED = 0xD6D + SYS___FSEEK2 = 0xB3C + SYS___FSETERR = 0xD6B + SYS___FSETLOCKING = 0xD67 + SYS___FTCHEP = 0x0BF + SYS___FTELL2 = 0xB3B + SYS___FUPDT = 0x0B5 + SYS___FWRITABLE = 0xD64 + SYS___FWRITING = 0xD66 + SYS___FWRITING_UNLOCKED = 0xD6E + SYS___GETCB = 0x0B4 + SYS___GETGRGID1 = 0xD5B + SYS___GETGRNAM1 = 0xD5C + SYS___GETTHENT = 0xCE5 + SYS___GETTOD = 0xD3E + SYS___HYPOTF_H = 0xAF6 + SYS___HYPOTL_H = 0xAF7 + SYS___ILOGBF_B = 0xA7F + SYS___ILOGBF_H = 0xA80 + SYS___ILOGBL_B = 0xA82 + SYS___ILOGBL_H = 0xA83 + SYS___ISBLANK_A = 0xB2E + SYS___ISBLNK = 0x0FE + SYS___ISWBLANK_A = 0xB2F + SYS___LE_CEEGTJS = 0xD72 + SYS___LE_TRACEBACK = 0xB7A + SYS___LGAMMAL_H = 0xA62 + SYS___LGAMMA_B_C99 = 0xB39 + SYS___LGAMMA_H_C99 = 0xB38 + SYS___LGAMMA_R_C99 = 0xB3A + SYS___LLRINTF_B = 0xA88 + SYS___LLRINTF_H = 0xA89 + SYS___LLRINTL_B = 0xA8B + SYS___LLRINTL_H = 0xA8C + SYS___LLRINT_B = 0xA85 + SYS___LLRINT_H = 0xA86 + SYS___LLROUNDF_B = 0xA91 + SYS___LLROUNDF_H = 0xA92 + SYS___LLROUNDL_B = 0xA94 + SYS___LLROUNDL_H = 0xA95 + SYS___LLROUND_B = 0xA8E + SYS___LLROUND_H = 0xA8F + SYS___LOCALE_CTL = 0xD47 + SYS___LOG1PF_H = 0xA60 + SYS___LOG1PL_H = 0xA61 + SYS___LOGBF_B = 0xA97 + SYS___LOGBF_H = 0xA98 + SYS___LOGBL_B = 0xA9A + SYS___LOGBL_H = 0xA9B + SYS___LOGIN_APPLID = 0xCE2 + SYS___LRINTF_B = 0xAA0 + SYS___LRINTF_H = 0xAA1 + SYS___LRINTL_B = 0xAA3 + SYS___LRINTL_H = 0xAA4 + SYS___LRINT_B = 0xA9D + SYS___LRINT_H = 0xA9E + SYS___LROUNDF_FIXUP = 0xB31 + SYS___LROUNDL_B = 0xAA6 + SYS___LROUNDL_H = 0xAA7 + SYS___LROUND_FIXUP = 0xB30 + SYS___MOSERVICES = 0xD3D + SYS___MUST_STAY_CLEAN = 0xB7C + SYS___NANF_B = 0xAAB + SYS___NANL_B = 0xAAD + SYS___NAN_B = 0xAA9 + SYS___NEARBYINTF_B = 0xAB2 + SYS___NEARBYINTF_H = 0xAB3 + SYS___NEARBYINTL_B = 0xAB5 + SYS___NEARBYINTL_H = 0xAB6 + SYS___NEARBYINT_B = 0xAAF + SYS___NEARBYINT_H = 0xAB0 + SYS___NEXTAFTERF_B = 0xAB8 + SYS___NEXTAFTERF_H = 0xAB9 + SYS___NEXTAFTERL_B = 0xABB + SYS___NEXTAFTERL_H = 0xABC + SYS___NEXTTOWARDF_B = 0xAC1 + SYS___NEXTTOWARDF_H = 0xAC2 + SYS___NEXTTOWARDL_B = 0xAC4 + SYS___NEXTTOWARDL_H = 0xAC5 + SYS___NEXTTOWARD_B = 0xABE + SYS___NEXTTOWARD_H = 0xABF + SYS___O_ENV = 0xB7D + SYS___PASSWD_APPLID = 0xCE3 + SYS___PTOD1 = 0xC9E + SYS___PTOD2 = 0xC9F + SYS___PTOD4 = 0xCA0 + SYS___REGCOMP_STD = 0x0EA + SYS___REMAINDERF_H = 0xAC6 + SYS___REMAINDERL_H = 0xAC7 + SYS___REMQUOD128 = 0xC10 + SYS___REMQUOD32 = 0xC0E + SYS___REMQUOD64 = 0xC0F + SYS___REMQUOF_H = 0xAC9 + SYS___REMQUOL_H = 0xACA + SYS___REMQUO_H = 0xAC8 + SYS___RINTF_B = 0xACC + SYS___RINTL_B = 0xACE + SYS___ROUNDF_B = 0xAD3 + SYS___ROUNDF_H = 0xAD4 + SYS___ROUNDL_B = 0xAD6 + SYS___ROUNDL_H = 0xAD7 + SYS___ROUND_B = 0xAD0 + SYS___ROUND_H = 0xAD1 + SYS___SCALBLNF_B = 0xADC + SYS___SCALBLNF_H = 0xADD + SYS___SCALBLNL_B = 0xADF + SYS___SCALBLNL_H = 0xAE0 + SYS___SCALBLN_B = 0xAD9 + SYS___SCALBLN_H = 0xADA + SYS___SCALBNF_B = 0xAE4 + SYS___SCALBNF_H = 0xAE5 + SYS___SCALBNL_B = 0xAE7 + SYS___SCALBNL_H = 0xAE8 + SYS___SCALBN_B = 0xAE1 + SYS___SCALBN_H = 0xAE2 + SYS___SETENV = 0x0C8 + SYS___SINPID128 = 0xC73 + SYS___SINPID32 = 0xC71 + SYS___SINPID64 = 0xC72 + SYS___SMF_RECORD2 = 0xD48 + SYS___STATIC_REINIT = 0xB3D + SYS___TGAMMAF_H_C99 = 0xB79 + SYS___TGAMMAL_H = 0xAE9 + SYS___TGAMMA_H_C99 = 0xB78 + SYS___TOCSNAME2 = 0xC9A + SYS_CEIL = 0x01F + SYS_CHAUDIT = 0x1E0 + SYS_EXP = 0x01A + SYS_FCHAUDIT = 0x1E1 + SYS_FREXP = 0x01D + SYS_GETGROUPSBYNAME = 0x1E2 + SYS_GETPWUID = 0x1A0 + SYS_GETUID = 0x1A1 + SYS_ISATTY = 0x1A3 + SYS_KILL = 0x1A4 + SYS_LDEXP = 0x01E + SYS_LINK = 0x1A5 + SYS_LOG10 = 0x01C + SYS_LSEEK = 0x1A6 + SYS_LSTAT = 0x1A7 + SYS_MKDIR = 0x1A8 + SYS_MKFIFO = 0x1A9 + SYS_MKNOD = 0x1AA + SYS_MODF = 0x01B + SYS_MOUNT = 0x1AB + SYS_OPEN = 0x1AC + SYS_OPENDIR = 0x1AD + SYS_PATHCONF = 0x1AE + SYS_PAUSE = 0x1AF + SYS_PIPE = 0x1B0 + SYS_PTHREAD_ATTR_DESTROY = 0x1E7 + SYS_PTHREAD_ATTR_GETDETACHSTATE = 0x1EB + SYS_PTHREAD_ATTR_GETSTACKSIZE = 0x1E9 + SYS_PTHREAD_ATTR_GETWEIGHT_NP = 0x1ED + SYS_PTHREAD_ATTR_INIT = 0x1E6 + SYS_PTHREAD_ATTR_SETDETACHSTATE = 0x1EA + SYS_PTHREAD_ATTR_SETSTACKSIZE = 0x1E8 + SYS_PTHREAD_ATTR_SETWEIGHT_NP = 0x1EC + SYS_PTHREAD_CANCEL = 0x1EE + SYS_PTHREAD_CLEANUP_POP = 0x1F0 + SYS_PTHREAD_CLEANUP_PUSH = 0x1EF + SYS_PTHREAD_CONDATTR_DESTROY = 0x1F2 + SYS_PTHREAD_CONDATTR_INIT = 0x1F1 + SYS_PTHREAD_COND_BROADCAST = 0x1F6 + SYS_PTHREAD_COND_DESTROY = 0x1F4 + SYS_PTHREAD_COND_INIT = 0x1F3 + SYS_PTHREAD_COND_SIGNAL = 0x1F5 + SYS_PTHREAD_COND_TIMEDWAIT = 0x1F8 + SYS_PTHREAD_COND_WAIT = 0x1F7 + SYS_PTHREAD_CREATE = 0x1F9 + SYS_PTHREAD_DETACH = 0x1FA + SYS_PTHREAD_EQUAL = 0x1FB + SYS_PTHREAD_EXIT = 0x1E4 + SYS_PTHREAD_GETSPECIFIC = 0x1FC + SYS_PTHREAD_JOIN = 0x1FD + SYS_PTHREAD_KEY_CREATE = 0x1FE + SYS_PTHREAD_KILL = 0x1E5 + SYS_PTHREAD_MUTEXATTR_INIT = 0x1FF + SYS_READ = 0x1B2 + SYS_READDIR = 0x1B3 + SYS_READLINK = 0x1B4 + SYS_REWINDDIR = 0x1B5 + SYS_RMDIR = 0x1B6 + SYS_SETEGID = 0x1B7 + SYS_SETEUID = 0x1B8 + SYS_SETGID = 0x1B9 + SYS_SETPGID = 0x1BA + SYS_SETSID = 0x1BB + SYS_SETUID = 0x1BC + SYS_SIGACTION = 0x1BD + SYS_SIGADDSET = 0x1BE + SYS_SIGDELSET = 0x1BF + SYS_SIGEMPTYSET = 0x1C0 + SYS_SIGFILLSET = 0x1C1 + SYS_SIGISMEMBER = 0x1C2 + SYS_SIGLONGJMP = 0x1C3 + SYS_SIGPENDING = 0x1C4 + SYS_SIGPROCMASK = 0x1C5 + SYS_SIGSETJMP = 0x1C6 + SYS_SIGSUSPEND = 0x1C7 + SYS_SIGWAIT = 0x1E3 + SYS_SLEEP = 0x1C8 + SYS_STAT = 0x1C9 + SYS_SYMLINK = 0x1CB + SYS_SYSCONF = 0x1CC + SYS_TCDRAIN = 0x1CD + SYS_TCFLOW = 0x1CE + SYS_TCFLUSH = 0x1CF + SYS_TCGETATTR = 0x1D0 + SYS_TCGETPGRP = 0x1D1 + SYS_TCSENDBREAK = 0x1D2 + SYS_TCSETATTR = 0x1D3 + SYS_TCSETPGRP = 0x1D4 + SYS_TIMES = 0x1D5 + SYS_TTYNAME = 0x1D6 + SYS_TZSET = 0x1D7 + SYS_UMASK = 0x1D8 + SYS_UMOUNT = 0x1D9 + SYS_UNAME = 0x1DA + SYS_UNLINK = 0x1DB + SYS_UTIME = 0x1DC + SYS_WAIT = 0x1DD + SYS_WAITPID = 0x1DE + SYS_WRITE = 0x1DF + SYS_W_GETPSENT = 0x1B1 + SYS_W_IOCTL = 0x1A2 + SYS_W_STATFS = 0x1CA + SYS_A64L = 0x2EF + SYS_BCMP = 0x2B9 + SYS_BCOPY = 0x2BA + SYS_BZERO = 0x2BB + SYS_CATCLOSE = 0x2B6 + SYS_CATGETS = 0x2B7 + SYS_CATOPEN = 0x2B8 + SYS_CRYPT = 0x2AC + SYS_DBM_CLEARERR = 0x2F7 + SYS_DBM_CLOSE = 0x2F8 + SYS_DBM_DELETE = 0x2F9 + SYS_DBM_ERROR = 0x2FA + SYS_DBM_FETCH = 0x2FB + SYS_DBM_FIRSTKEY = 0x2FC + SYS_DBM_NEXTKEY = 0x2FD + SYS_DBM_OPEN = 0x2FE + SYS_DBM_STORE = 0x2FF + SYS_DRAND48 = 0x2B2 + SYS_ENCRYPT = 0x2AD + SYS_ENDUTXENT = 0x2E1 + SYS_ERAND48 = 0x2B3 + SYS_ERF = 0x02C + SYS_ERFC = 0x02D + SYS_FCHDIR = 0x2D9 + SYS_FFS = 0x2BC + SYS_FMTMSG = 0x2E5 + SYS_FSTATVFS = 0x2B4 + SYS_FTIME = 0x2F5 + SYS_GAMMA = 0x02E + SYS_GETDATE = 0x2A6 + SYS_GETPAGESIZE = 0x2D8 + SYS_GETTIMEOFDAY = 0x2F6 + SYS_GETUTXENT = 0x2E0 + SYS_GETUTXID = 0x2E2 + SYS_GETUTXLINE = 0x2E3 + SYS_HCREATE = 0x2C6 + SYS_HDESTROY = 0x2C7 + SYS_HSEARCH = 0x2C8 + SYS_HYPOT = 0x02B + SYS_INDEX = 0x2BD + SYS_INITSTATE = 0x2C2 + SYS_INSQUE = 0x2CF + SYS_ISASCII = 0x2ED + SYS_JRAND48 = 0x2E6 + SYS_L64A = 0x2F0 + SYS_LCONG48 = 0x2EA + SYS_LFIND = 0x2C9 + SYS_LRAND48 = 0x2E7 + SYS_LSEARCH = 0x2CA + SYS_MEMCCPY = 0x2D4 + SYS_MRAND48 = 0x2E8 + SYS_NRAND48 = 0x2E9 + SYS_PCLOSE = 0x2D2 + SYS_POPEN = 0x2D1 + SYS_PUTUTXLINE = 0x2E4 + SYS_RANDOM = 0x2C4 + SYS_REMQUE = 0x2D0 + SYS_RINDEX = 0x2BE + SYS_SEED48 = 0x2EC + SYS_SETKEY = 0x2AE + SYS_SETSTATE = 0x2C3 + SYS_SETUTXENT = 0x2DF + SYS_SRAND48 = 0x2EB + SYS_SRANDOM = 0x2C5 + SYS_STATVFS = 0x2B5 + SYS_STRCASECMP = 0x2BF + SYS_STRDUP = 0x2C0 + SYS_STRNCASECMP = 0x2C1 + SYS_SWAB = 0x2D3 + SYS_TDELETE = 0x2CB + SYS_TFIND = 0x2CC + SYS_TOASCII = 0x2EE + SYS_TSEARCH = 0x2CD + SYS_TWALK = 0x2CE + SYS_UALARM = 0x2F1 + SYS_USLEEP = 0x2F2 + SYS_WAIT3 = 0x2A7 + SYS_WAITID = 0x2A8 + SYS_Y1 = 0x02A + SYS___ATOE = 0x2DB + SYS___ATOE_L = 0x2DC + SYS___CATTRM = 0x2A9 + SYS___CNVBLK = 0x2AF + SYS___CRYTRM = 0x2B0 + SYS___DLGHT = 0x2A1 + SYS___ECRTRM = 0x2B1 + SYS___ETOA = 0x2DD + SYS___ETOA_L = 0x2DE + SYS___GDTRM = 0x2AA + SYS___OCLCK = 0x2DA + SYS___OPARGF = 0x2A2 + SYS___OPERRF = 0x2A5 + SYS___OPINDF = 0x2A4 + SYS___OPOPTF = 0x2A3 + SYS___RNDTRM = 0x2AB + SYS___SRCTRM = 0x2F4 + SYS___TZONE = 0x2A0 + SYS___UTXTRM = 0x2F3 + SYS_ASIN = 0x03E + SYS_ISXDIGIT = 0x03B + SYS_SETLOCAL = 0x03A + SYS_SETLOCALE = 0x03A + SYS_SIN = 0x03F + SYS_TOLOWER = 0x03C + SYS_TOUPPER = 0x03D + SYS_ACCEPT_AND_RECV = 0x4F7 + SYS_ATOL = 0x04E + SYS_CHECKSCH = 0x4BC + SYS_CHECKSCHENV = 0x4BC + SYS_CLEARERR = 0x04C + SYS_CONNECTS = 0x4B5 + SYS_CONNECTSERVER = 0x4B5 + SYS_CONNECTW = 0x4B4 + SYS_CONNECTWORKMGR = 0x4B4 + SYS_CONTINUE = 0x4B3 + SYS_CONTINUEWORKUNIT = 0x4B3 + SYS_COPYSIGN = 0x4C2 + SYS_CREATEWO = 0x4B2 + SYS_CREATEWORKUNIT = 0x4B2 + SYS_DELETEWO = 0x4B9 + SYS_DELETEWORKUNIT = 0x4B9 + SYS_DISCONNE = 0x4B6 + SYS_DISCONNECTSERVER = 0x4B6 + SYS_FEOF = 0x04D + SYS_FERROR = 0x04A + SYS_FINITE = 0x4C8 + SYS_GAMMA_R = 0x4E2 + SYS_JOINWORK = 0x4B7 + SYS_JOINWORKUNIT = 0x4B7 + SYS_LEAVEWOR = 0x4B8 + SYS_LEAVEWORKUNIT = 0x4B8 + SYS_LGAMMA_R = 0x4EB + SYS_MATHERR = 0x4D0 + SYS_PERROR = 0x04F + SYS_QUERYMET = 0x4BA + SYS_QUERYMETRICS = 0x4BA + SYS_QUERYSCH = 0x4BB + SYS_QUERYSCHENV = 0x4BB + SYS_REWIND = 0x04B + SYS_SCALBN = 0x4D4 + SYS_SIGNIFIC = 0x4D5 + SYS_SIGNIFICAND = 0x4D5 + SYS___ACOSH_B = 0x4DA + SYS___ACOS_B = 0x4D9 + SYS___ASINH_B = 0x4BE + SYS___ASIN_B = 0x4DB + SYS___ATAN2_B = 0x4DC + SYS___ATANH_B = 0x4DD + SYS___ATAN_B = 0x4BF + SYS___CBRT_B = 0x4C0 + SYS___CEIL_B = 0x4C1 + SYS___COSH_B = 0x4DE + SYS___COS_B = 0x4C3 + SYS___DGHT = 0x4A8 + SYS___ENVN = 0x4B0 + SYS___ERFC_B = 0x4C5 + SYS___ERF_B = 0x4C4 + SYS___EXPM1_B = 0x4C6 + SYS___EXP_B = 0x4DF + SYS___FABS_B = 0x4C7 + SYS___FLOOR_B = 0x4C9 + SYS___FMOD_B = 0x4E0 + SYS___FP_SETMODE = 0x4F8 + SYS___FREXP_B = 0x4CA + SYS___GAMMA_B = 0x4E1 + SYS___GDRR = 0x4A1 + SYS___HRRNO = 0x4A2 + SYS___HYPOT_B = 0x4E3 + SYS___ILOGB_B = 0x4CB + SYS___ISNAN_B = 0x4CC + SYS___J0_B = 0x4E4 + SYS___J1_B = 0x4E6 + SYS___JN_B = 0x4E8 + SYS___LDEXP_B = 0x4CD + SYS___LGAMMA_B = 0x4EA + SYS___LOG10_B = 0x4ED + SYS___LOG1P_B = 0x4CE + SYS___LOGB_B = 0x4CF + SYS___LOGIN = 0x4F5 + SYS___LOG_B = 0x4EC + SYS___MLOCKALL = 0x4B1 + SYS___MODF_B = 0x4D1 + SYS___NEXTAFTER_B = 0x4D2 + SYS___OPENDIR2 = 0x4F3 + SYS___OPEN_STAT = 0x4F6 + SYS___OPND = 0x4A5 + SYS___OPPT = 0x4A6 + SYS___OPRG = 0x4A3 + SYS___OPRR = 0x4A4 + SYS___PID_AFFINITY = 0x4BD + SYS___POW_B = 0x4EE + SYS___READDIR2 = 0x4F4 + SYS___REMAINDER_B = 0x4EF + SYS___RINT_B = 0x4D3 + SYS___SCALB_B = 0x4F0 + SYS___SIGACTIONSET = 0x4FB + SYS___SIGGM = 0x4A7 + SYS___SINH_B = 0x4F1 + SYS___SIN_B = 0x4D6 + SYS___SQRT_B = 0x4F2 + SYS___TANH_B = 0x4D8 + SYS___TAN_B = 0x4D7 + SYS___TRRNO = 0x4AF + SYS___TZNE = 0x4A9 + SYS___TZZN = 0x4AA + SYS___UCREATE = 0x4FC + SYS___UFREE = 0x4FE + SYS___UHEAPREPORT = 0x4FF + SYS___UMALLOC = 0x4FD + SYS___Y0_B = 0x4E5 + SYS___Y1_B = 0x4E7 + SYS___YN_B = 0x4E9 + SYS_ABORT = 0x05C + SYS_ASCTIME_R = 0x5E0 + SYS_ATEXIT = 0x05D + SYS_CONNECTE = 0x5AE + SYS_CONNECTEXPORTIMPORT = 0x5AE + SYS_CTIME_R = 0x5E1 + SYS_DN_COMP = 0x5DF + SYS_DN_EXPAND = 0x5DD + SYS_DN_SKIPNAME = 0x5DE + SYS_EXIT = 0x05A + SYS_EXPORTWO = 0x5A1 + SYS_EXPORTWORKUNIT = 0x5A1 + SYS_EXTRACTW = 0x5A5 + SYS_EXTRACTWORKUNIT = 0x5A5 + SYS_FSEEKO = 0x5C9 + SYS_FTELLO = 0x5C8 + SYS_GETGRGID_R = 0x5E7 + SYS_GETGRNAM_R = 0x5E8 + SYS_GETLOGIN_R = 0x5E9 + SYS_GETPWNAM_R = 0x5EA + SYS_GETPWUID_R = 0x5EB + SYS_GMTIME_R = 0x5E2 + SYS_IMPORTWO = 0x5A3 + SYS_IMPORTWORKUNIT = 0x5A3 + SYS_INET_NTOP = 0x5D3 + SYS_INET_PTON = 0x5D4 + SYS_LLABS = 0x5CE + SYS_LLDIV = 0x5CB + SYS_LOCALTIME_R = 0x5E3 + SYS_PTHREAD_ATFORK = 0x5ED + SYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB + SYS_PTHREAD_ATTR_GETGUARDSIZE = 0x5EE + SYS_PTHREAD_ATTR_GETSCHEDPARAM = 0x5F9 + SYS_PTHREAD_ATTR_GETSTACKADDR = 0x5EF + SYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC + SYS_PTHREAD_ATTR_SETGUARDSIZE = 0x5F0 + SYS_PTHREAD_ATTR_SETSCHEDPARAM = 0x5FA + SYS_PTHREAD_ATTR_SETSTACKADDR = 0x5F1 + SYS_PTHREAD_CONDATTR_GETPSHARED = 0x5F2 + SYS_PTHREAD_CONDATTR_SETPSHARED = 0x5F3 + SYS_PTHREAD_DETACH_U98 = 0x5FD + SYS_PTHREAD_GETCONCURRENCY = 0x5F4 + SYS_PTHREAD_GETSPECIFIC_U98 = 0x5FE + SYS_PTHREAD_KEY_DELETE = 0x5F5 + SYS_PTHREAD_SETCANCELSTATE = 0x5FF + SYS_PTHREAD_SETCONCURRENCY = 0x5F6 + SYS_PTHREAD_SIGMASK = 0x5F7 + SYS_QUERYENC = 0x5AD + SYS_QUERYWORKUNITCLASSIFICATION = 0x5AD + SYS_RAISE = 0x05E + SYS_RAND_R = 0x5E4 + SYS_READDIR_R = 0x5E6 + SYS_REALLOC = 0x05B + SYS_RES_INIT = 0x5D8 + SYS_RES_MKQUERY = 0x5D7 + SYS_RES_QUERY = 0x5D9 + SYS_RES_QUERYDOMAIN = 0x5DC + SYS_RES_SEARCH = 0x5DA + SYS_RES_SEND = 0x5DB + SYS_SETJMP = 0x05F + SYS_SIGQUEUE = 0x5A9 + SYS_STRTOK_R = 0x5E5 + SYS_STRTOLL = 0x5B0 + SYS_STRTOULL = 0x5B1 + SYS_TTYNAME_R = 0x5EC + SYS_UNDOEXPO = 0x5A2 + SYS_UNDOEXPORTWORKUNIT = 0x5A2 + SYS_UNDOIMPO = 0x5A4 + SYS_UNDOIMPORTWORKUNIT = 0x5A4 + SYS_WCSTOLL = 0x5CC + SYS_WCSTOULL = 0x5CD + SYS___ABORT = 0x05C + SYS___CONSOLE2 = 0x5D2 + SYS___CPL = 0x5A6 + SYS___DISCARDDATA = 0x5F8 + SYS___DSA_PREV = 0x5B2 + SYS___EP_FIND = 0x5B3 + SYS___FP_SWAPMODE = 0x5AF + SYS___GETUSERID = 0x5AB + SYS___GET_CPUID = 0x5B9 + SYS___GET_SYSTEM_SETTINGS = 0x5BA + SYS___IPDOMAINNAME = 0x5AC + SYS___MAP_INIT = 0x5A7 + SYS___MAP_SERVICE = 0x5A8 + SYS___MOUNT = 0x5AA + SYS___MSGRCV_TIMED = 0x5B7 + SYS___RES = 0x5D6 + SYS___SEMOP_TIMED = 0x5B8 + SYS___SERVER_THREADS_QUERY = 0x5B4 + SYS_FPRINTF = 0x06D + SYS_FSCANF = 0x06A + SYS_PRINTF = 0x06F + SYS_SETBUF = 0x06B + SYS_SETVBUF = 0x06C + SYS_SSCANF = 0x06E + SYS___CATGETS_A = 0x6C0 + SYS___CHAUDIT_A = 0x6F4 + SYS___CHMOD_A = 0x6E8 + SYS___COLLATE_INIT_A = 0x6AC + SYS___CREAT_A = 0x6F6 + SYS___CTYPE_INIT_A = 0x6AF + SYS___DLLLOAD_A = 0x6DF + SYS___DLLQUERYFN_A = 0x6E0 + SYS___DLLQUERYVAR_A = 0x6E1 + SYS___E2A_L = 0x6E3 + SYS___EXECLE_A = 0x6A0 + SYS___EXECLP_A = 0x6A4 + SYS___EXECVE_A = 0x6C1 + SYS___EXECVP_A = 0x6C2 + SYS___EXECV_A = 0x6B1 + SYS___FPRINTF_A = 0x6FA + SYS___GETADDRINFO_A = 0x6BF + SYS___GETNAMEINFO_A = 0x6C4 + SYS___GET_WCTYPE_STD_A = 0x6AE + SYS___ICONV_OPEN_A = 0x6DE + SYS___IF_INDEXTONAME_A = 0x6DC + SYS___IF_NAMETOINDEX_A = 0x6DB + SYS___ISWCTYPE_A = 0x6B0 + SYS___IS_WCTYPE_STD_A = 0x6B2 + SYS___LOCALECONV_A = 0x6B8 + SYS___LOCALECONV_STD_A = 0x6B9 + SYS___LOCALE_INIT_A = 0x6B7 + SYS___LSTAT_A = 0x6EE + SYS___LSTAT_O_A = 0x6EF + SYS___MKDIR_A = 0x6E9 + SYS___MKFIFO_A = 0x6EC + SYS___MKNOD_A = 0x6F0 + SYS___MONETARY_INIT_A = 0x6BC + SYS___MOUNT_A = 0x6F1 + SYS___NL_CSINFO_A = 0x6D6 + SYS___NL_LANGINFO_A = 0x6BA + SYS___NL_LNAGINFO_STD_A = 0x6BB + SYS___NL_MONINFO_A = 0x6D7 + SYS___NL_NUMINFO_A = 0x6D8 + SYS___NL_RESPINFO_A = 0x6D9 + SYS___NL_TIMINFO_A = 0x6DA + SYS___NUMERIC_INIT_A = 0x6C6 + SYS___OPEN_A = 0x6F7 + SYS___PRINTF_A = 0x6DD + SYS___RESP_INIT_A = 0x6C7 + SYS___RPMATCH_A = 0x6C8 + SYS___RPMATCH_C_A = 0x6C9 + SYS___RPMATCH_STD_A = 0x6CA + SYS___SETLOCALE_A = 0x6F9 + SYS___SPAWNP_A = 0x6C5 + SYS___SPAWN_A = 0x6C3 + SYS___SPRINTF_A = 0x6FB + SYS___STAT_A = 0x6EA + SYS___STAT_O_A = 0x6EB + SYS___STRCOLL_STD_A = 0x6A1 + SYS___STRFMON_A = 0x6BD + SYS___STRFMON_STD_A = 0x6BE + SYS___STRFTIME_A = 0x6CC + SYS___STRFTIME_STD_A = 0x6CD + SYS___STRPTIME_A = 0x6CE + SYS___STRPTIME_STD_A = 0x6CF + SYS___STRXFRM_A = 0x6A2 + SYS___STRXFRM_C_A = 0x6A3 + SYS___STRXFRM_STD_A = 0x6A5 + SYS___SYNTAX_INIT_A = 0x6D4 + SYS___TIME_INIT_A = 0x6CB + SYS___TOD_INIT_A = 0x6D5 + SYS___TOWLOWER_A = 0x6B3 + SYS___TOWLOWER_STD_A = 0x6B4 + SYS___TOWUPPER_A = 0x6B5 + SYS___TOWUPPER_STD_A = 0x6B6 + SYS___UMOUNT_A = 0x6F2 + SYS___VFPRINTF_A = 0x6FC + SYS___VPRINTF_A = 0x6FD + SYS___VSPRINTF_A = 0x6FE + SYS___VSWPRINTF_A = 0x6FF + SYS___WCSCOLL_A = 0x6A6 + SYS___WCSCOLL_C_A = 0x6A7 + SYS___WCSCOLL_STD_A = 0x6A8 + SYS___WCSFTIME_A = 0x6D0 + SYS___WCSFTIME_STD_A = 0x6D1 + SYS___WCSXFRM_A = 0x6A9 + SYS___WCSXFRM_C_A = 0x6AA + SYS___WCSXFRM_STD_A = 0x6AB + SYS___WCTYPE_A = 0x6AD + SYS___W_GETMNTENT_A = 0x6F5 + SYS_____CCSIDTYPE_A = 0x6E6 + SYS_____CHATTR_A = 0x6E2 + SYS_____CSNAMETYPE_A = 0x6E7 + SYS_____OPEN_STAT_A = 0x6ED + SYS_____SPAWN2_A = 0x6D2 + SYS_____SPAWNP2_A = 0x6D3 + SYS_____TOCCSID_A = 0x6E4 + SYS_____TOCSNAME_A = 0x6E5 + SYS_ACL_FREE = 0x7FF + SYS_ACL_INIT = 0x7FE + SYS_FWIDE = 0x7DF + SYS_FWPRINTF = 0x7D1 + SYS_FWRITE = 0x07E + SYS_FWSCANF = 0x7D5 + SYS_GETCHAR = 0x07B + SYS_GETS = 0x07C + SYS_M_CREATE_LAYOUT = 0x7C9 + SYS_M_DESTROY_LAYOUT = 0x7CA + SYS_M_GETVALUES_LAYOUT = 0x7CB + SYS_M_SETVALUES_LAYOUT = 0x7CC + SYS_M_TRANSFORM_LAYOUT = 0x7CD + SYS_M_WTRANSFORM_LAYOUT = 0x7CE + SYS_PREAD = 0x7C7 + SYS_PUTC = 0x07D + SYS_PUTCHAR = 0x07A + SYS_PUTS = 0x07F + SYS_PWRITE = 0x7C8 + SYS_TOWCTRAN = 0x7D8 + SYS_TOWCTRANS = 0x7D8 + SYS_UNATEXIT = 0x7B5 + SYS_VFWPRINT = 0x7D3 + SYS_VFWPRINTF = 0x7D3 + SYS_VWPRINTF = 0x7D4 + SYS_WCTRANS = 0x7D7 + SYS_WPRINTF = 0x7D2 + SYS_WSCANF = 0x7D6 + SYS___ASCTIME_R_A = 0x7A1 + SYS___BASENAME_A = 0x7DC + SYS___BTOWC_A = 0x7E4 + SYS___CDUMP_A = 0x7B7 + SYS___CEE3DMP_A = 0x7B6 + SYS___CEILF_H = 0x7F4 + SYS___CEILL_H = 0x7F5 + SYS___CEIL_H = 0x7EA + SYS___CRYPT_A = 0x7BE + SYS___CSNAP_A = 0x7B8 + SYS___CTEST_A = 0x7B9 + SYS___CTIME_R_A = 0x7A2 + SYS___CTRACE_A = 0x7BA + SYS___DBM_OPEN_A = 0x7E6 + SYS___DIRNAME_A = 0x7DD + SYS___FABSF_H = 0x7FA + SYS___FABSL_H = 0x7FB + SYS___FABS_H = 0x7ED + SYS___FGETWC_A = 0x7AA + SYS___FGETWS_A = 0x7AD + SYS___FLOORF_H = 0x7F6 + SYS___FLOORL_H = 0x7F7 + SYS___FLOOR_H = 0x7EB + SYS___FPUTWC_A = 0x7A5 + SYS___FPUTWS_A = 0x7A8 + SYS___GETTIMEOFDAY_A = 0x7AE + SYS___GETWCHAR_A = 0x7AC + SYS___GETWC_A = 0x7AB + SYS___GLOB_A = 0x7DE + SYS___GMTIME_A = 0x7AF + SYS___GMTIME_R_A = 0x7B0 + SYS___INET_PTON_A = 0x7BC + SYS___J0_H = 0x7EE + SYS___J1_H = 0x7EF + SYS___JN_H = 0x7F0 + SYS___LOCALTIME_A = 0x7B1 + SYS___LOCALTIME_R_A = 0x7B2 + SYS___MALLOC24 = 0x7FC + SYS___MALLOC31 = 0x7FD + SYS___MKTIME_A = 0x7B3 + SYS___MODFF_H = 0x7F8 + SYS___MODFL_H = 0x7F9 + SYS___MODF_H = 0x7EC + SYS___OPENDIR_A = 0x7C2 + SYS___OSNAME = 0x7E0 + SYS___PUTWCHAR_A = 0x7A7 + SYS___PUTWC_A = 0x7A6 + SYS___READDIR_A = 0x7C3 + SYS___STRTOLL_A = 0x7A3 + SYS___STRTOULL_A = 0x7A4 + SYS___SYSLOG_A = 0x7BD + SYS___TZZNA = 0x7B4 + SYS___UNGETWC_A = 0x7A9 + SYS___UTIME_A = 0x7A0 + SYS___VFPRINTF2_A = 0x7E7 + SYS___VPRINTF2_A = 0x7E8 + SYS___VSPRINTF2_A = 0x7E9 + SYS___VSWPRNTF2_A = 0x7BB + SYS___WCSTOD_A = 0x7D9 + SYS___WCSTOL_A = 0x7DA + SYS___WCSTOUL_A = 0x7DB + SYS___WCTOB_A = 0x7E5 + SYS___Y0_H = 0x7F1 + SYS___Y1_H = 0x7F2 + SYS___YN_H = 0x7F3 + SYS_____OPENDIR2_A = 0x7BF + SYS_____OSNAME_A = 0x7E1 + SYS_____READDIR2_A = 0x7C0 + SYS_DLCLOSE = 0x8DF + SYS_DLERROR = 0x8E0 + SYS_DLOPEN = 0x8DD + SYS_DLSYM = 0x8DE + SYS_FLOCKFILE = 0x8D3 + SYS_FTRYLOCKFILE = 0x8D4 + SYS_FUNLOCKFILE = 0x8D5 + SYS_GETCHAR_UNLOCKED = 0x8D7 + SYS_GETC_UNLOCKED = 0x8D6 + SYS_PUTCHAR_UNLOCKED = 0x8D9 + SYS_PUTC_UNLOCKED = 0x8D8 + SYS_SNPRINTF = 0x8DA + SYS_VSNPRINTF = 0x8DB + SYS_WCSCSPN = 0x08B + SYS_WCSLEN = 0x08C + SYS_WCSNCAT = 0x08D + SYS_WCSNCMP = 0x08A + SYS_WCSNCPY = 0x08F + SYS_WCSSPN = 0x08E + SYS___ABSF_H = 0x8E7 + SYS___ABSL_H = 0x8E8 + SYS___ABS_H = 0x8E6 + SYS___ACOSF_H = 0x8EA + SYS___ACOSH_H = 0x8EC + SYS___ACOSL_H = 0x8EB + SYS___ACOS_H = 0x8E9 + SYS___ASINF_H = 0x8EE + SYS___ASINH_H = 0x8F0 + SYS___ASINL_H = 0x8EF + SYS___ASIN_H = 0x8ED + SYS___ATAN2F_H = 0x8F8 + SYS___ATAN2L_H = 0x8F9 + SYS___ATAN2_H = 0x8F7 + SYS___ATANF_H = 0x8F2 + SYS___ATANHF_H = 0x8F5 + SYS___ATANHL_H = 0x8F6 + SYS___ATANH_H = 0x8F4 + SYS___ATANL_H = 0x8F3 + SYS___ATAN_H = 0x8F1 + SYS___CBRT_H = 0x8FA + SYS___COPYSIGNF_H = 0x8FB + SYS___COPYSIGNL_H = 0x8FC + SYS___COSF_H = 0x8FE + SYS___COSL_H = 0x8FF + SYS___COS_H = 0x8FD + SYS___DLERROR_A = 0x8D2 + SYS___DLOPEN_A = 0x8D0 + SYS___DLSYM_A = 0x8D1 + SYS___GETUTXENT_A = 0x8C6 + SYS___GETUTXID_A = 0x8C7 + SYS___GETUTXLINE_A = 0x8C8 + SYS___ITOA = 0x8AA + SYS___ITOA_A = 0x8B0 + SYS___LE_CONDITION_TOKEN_BUILD = 0x8A5 + SYS___LE_MSG_ADD_INSERT = 0x8A6 + SYS___LE_MSG_GET = 0x8A7 + SYS___LE_MSG_GET_AND_WRITE = 0x8A8 + SYS___LE_MSG_WRITE = 0x8A9 + SYS___LLTOA = 0x8AE + SYS___LLTOA_A = 0x8B4 + SYS___LTOA = 0x8AC + SYS___LTOA_A = 0x8B2 + SYS___PUTCHAR_UNLOCKED_A = 0x8CC + SYS___PUTC_UNLOCKED_A = 0x8CB + SYS___PUTUTXLINE_A = 0x8C9 + SYS___RESET_EXCEPTION_HANDLER = 0x8E3 + SYS___REXEC_A = 0x8C4 + SYS___REXEC_AF_A = 0x8C5 + SYS___SET_EXCEPTION_HANDLER = 0x8E2 + SYS___SNPRINTF_A = 0x8CD + SYS___SUPERKILL = 0x8A4 + SYS___TCGETATTR_A = 0x8A1 + SYS___TCSETATTR_A = 0x8A2 + SYS___ULLTOA = 0x8AF + SYS___ULLTOA_A = 0x8B5 + SYS___ULTOA = 0x8AD + SYS___ULTOA_A = 0x8B3 + SYS___UTOA = 0x8AB + SYS___UTOA_A = 0x8B1 + SYS___VHM_EVENT = 0x8E4 + SYS___VSNPRINTF_A = 0x8CE + SYS_____GETENV_A = 0x8C3 + SYS_____UTMPXNAME_A = 0x8CA + SYS_CACOSH = 0x9A0 + SYS_CACOSHF = 0x9A3 + SYS_CACOSHL = 0x9A6 + SYS_CARG = 0x9A9 + SYS_CARGF = 0x9AC + SYS_CARGL = 0x9AF + SYS_CASIN = 0x9B2 + SYS_CASINF = 0x9B5 + SYS_CASINH = 0x9BB + SYS_CASINHF = 0x9BE + SYS_CASINHL = 0x9C1 + SYS_CASINL = 0x9B8 + SYS_CATAN = 0x9C4 + SYS_CATANF = 0x9C7 + SYS_CATANH = 0x9CD + SYS_CATANHF = 0x9D0 + SYS_CATANHL = 0x9D3 + SYS_CATANL = 0x9CA + SYS_CCOS = 0x9D6 + SYS_CCOSF = 0x9D9 + SYS_CCOSH = 0x9DF + SYS_CCOSHF = 0x9E2 + SYS_CCOSHL = 0x9E5 + SYS_CCOSL = 0x9DC + SYS_CEXP = 0x9E8 + SYS_CEXPF = 0x9EB + SYS_CEXPL = 0x9EE + SYS_CIMAG = 0x9F1 + SYS_CIMAGF = 0x9F4 + SYS_CIMAGL = 0x9F7 + SYS_CLOGF = 0x9FD + SYS_MEMCHR = 0x09B + SYS_MEMCMP = 0x09A + SYS_STRCOLL = 0x09C + SYS_STRNCMP = 0x09D + SYS_STRRCHR = 0x09F + SYS_STRXFRM = 0x09E + SYS___CACOSHF_B = 0x9A4 + SYS___CACOSHF_H = 0x9A5 + SYS___CACOSHL_B = 0x9A7 + SYS___CACOSHL_H = 0x9A8 + SYS___CACOSH_B = 0x9A1 + SYS___CACOSH_H = 0x9A2 + SYS___CARGF_B = 0x9AD + SYS___CARGF_H = 0x9AE + SYS___CARGL_B = 0x9B0 + SYS___CARGL_H = 0x9B1 + SYS___CARG_B = 0x9AA + SYS___CARG_H = 0x9AB + SYS___CASINF_B = 0x9B6 + SYS___CASINF_H = 0x9B7 + SYS___CASINHF_B = 0x9BF + SYS___CASINHF_H = 0x9C0 + SYS___CASINHL_B = 0x9C2 + SYS___CASINHL_H = 0x9C3 + SYS___CASINH_B = 0x9BC + SYS___CASINH_H = 0x9BD + SYS___CASINL_B = 0x9B9 + SYS___CASINL_H = 0x9BA + SYS___CASIN_B = 0x9B3 + SYS___CASIN_H = 0x9B4 + SYS___CATANF_B = 0x9C8 + SYS___CATANF_H = 0x9C9 + SYS___CATANHF_B = 0x9D1 + SYS___CATANHF_H = 0x9D2 + SYS___CATANHL_B = 0x9D4 + SYS___CATANHL_H = 0x9D5 + SYS___CATANH_B = 0x9CE + SYS___CATANH_H = 0x9CF + SYS___CATANL_B = 0x9CB + SYS___CATANL_H = 0x9CC + SYS___CATAN_B = 0x9C5 + SYS___CATAN_H = 0x9C6 + SYS___CCOSF_B = 0x9DA + SYS___CCOSF_H = 0x9DB + SYS___CCOSHF_B = 0x9E3 + SYS___CCOSHF_H = 0x9E4 + SYS___CCOSHL_B = 0x9E6 + SYS___CCOSHL_H = 0x9E7 + SYS___CCOSH_B = 0x9E0 + SYS___CCOSH_H = 0x9E1 + SYS___CCOSL_B = 0x9DD + SYS___CCOSL_H = 0x9DE + SYS___CCOS_B = 0x9D7 + SYS___CCOS_H = 0x9D8 + SYS___CEXPF_B = 0x9EC + SYS___CEXPF_H = 0x9ED + SYS___CEXPL_B = 0x9EF + SYS___CEXPL_H = 0x9F0 + SYS___CEXP_B = 0x9E9 + SYS___CEXP_H = 0x9EA + SYS___CIMAGF_B = 0x9F5 + SYS___CIMAGF_H = 0x9F6 + SYS___CIMAGL_B = 0x9F8 + SYS___CIMAGL_H = 0x9F9 + SYS___CIMAG_B = 0x9F2 + SYS___CIMAG_H = 0x9F3 + SYS___CLOG = 0x9FA + SYS___CLOGF_B = 0x9FE + SYS___CLOGF_H = 0x9FF + SYS___CLOG_B = 0x9FB + SYS___CLOG_H = 0x9FC + SYS_ISWCTYPE = 0x10C + SYS_ISWXDIGI = 0x10A + SYS_ISWXDIGIT = 0x10A + SYS_MBSINIT = 0x10F + SYS_TOWLOWER = 0x10D + SYS_TOWUPPER = 0x10E + SYS_WCTYPE = 0x10B + SYS_WCSSTR = 0x11B + SYS___RPMTCH = 0x11A + SYS_WCSTOD = 0x12E + SYS_WCSTOK = 0x12C + SYS_WCSTOL = 0x12D + SYS_WCSTOUL = 0x12F + SYS_FGETWC = 0x13C + SYS_FGETWS = 0x13D + SYS_FPUTWC = 0x13E + SYS_FPUTWS = 0x13F + SYS_REGERROR = 0x13B + SYS_REGFREE = 0x13A + SYS_COLLEQUIV = 0x14F + SYS_COLLTOSTR = 0x14E + SYS_ISMCCOLLEL = 0x14C + SYS_STRTOCOLL = 0x14D + SYS_DLLFREE = 0x16F + SYS_DLLQUERYFN = 0x16D + SYS_DLLQUERYVAR = 0x16E + SYS_GETMCCOLL = 0x16A + SYS_GETWMCCOLL = 0x16B + SYS___ERR2AD = 0x16C + SYS_CFSETOSPEED = 0x17A + SYS_CHDIR = 0x17B + SYS_CHMOD = 0x17C + SYS_CHOWN = 0x17D + SYS_CLOSE = 0x17E + SYS_CLOSEDIR = 0x17F + SYS_LOG = 0x017 + SYS_COSH = 0x018 + SYS_FCHMOD = 0x18A + SYS_FCHOWN = 0x18B + SYS_FCNTL = 0x18C + SYS_FILENO = 0x18D + SYS_FORK = 0x18E + SYS_FPATHCONF = 0x18F + SYS_GETLOGIN = 0x19A + SYS_GETPGRP = 0x19C + SYS_GETPID = 0x19D + SYS_GETPPID = 0x19E + SYS_GETPWNAM = 0x19F + SYS_TANH = 0x019 + SYS_W_GETMNTENT = 0x19B + SYS_POW = 0x020 + SYS_PTHREAD_SELF = 0x20A + SYS_PTHREAD_SETINTR = 0x20B + SYS_PTHREAD_SETINTRTYPE = 0x20C + SYS_PTHREAD_SETSPECIFIC = 0x20D + SYS_PTHREAD_TESTINTR = 0x20E + SYS_PTHREAD_YIELD = 0x20F + SYS_SQRT = 0x021 + SYS_FLOOR = 0x022 + SYS_J1 = 0x023 + SYS_WCSPBRK = 0x23F + SYS_BSEARCH = 0x24C + SYS_FABS = 0x024 + SYS_GETENV = 0x24A + SYS_LDIV = 0x24D + SYS_SYSTEM = 0x24B + SYS_FMOD = 0x025 + SYS___RETHROW = 0x25F + SYS___THROW = 0x25E + SYS_J0 = 0x026 + SYS_PUTENV = 0x26A + SYS___GETENV = 0x26F + SYS_SEMCTL = 0x27A + SYS_SEMGET = 0x27B + SYS_SEMOP = 0x27C + SYS_SHMAT = 0x27D + SYS_SHMCTL = 0x27E + SYS_SHMDT = 0x27F + SYS_YN = 0x027 + SYS_JN = 0x028 + SYS_SIGALTSTACK = 0x28A + SYS_SIGHOLD = 0x28B + SYS_SIGIGNORE = 0x28C + SYS_SIGINTERRUPT = 0x28D + SYS_SIGPAUSE = 0x28E + SYS_SIGRELSE = 0x28F + SYS_GETOPT = 0x29A + SYS_GETSUBOPT = 0x29D + SYS_LCHOWN = 0x29B + SYS_SETPGRP = 0x29E + SYS_TRUNCATE = 0x29C + SYS_Y0 = 0x029 + SYS___GDERR = 0x29F + SYS_ISALPHA = 0x030 + SYS_VFORK = 0x30F + SYS__LONGJMP = 0x30D + SYS__SETJMP = 0x30E + SYS_GLOB = 0x31A + SYS_GLOBFREE = 0x31B + SYS_ISALNUM = 0x031 + SYS_PUTW = 0x31C + SYS_SEEKDIR = 0x31D + SYS_TELLDIR = 0x31E + SYS_TEMPNAM = 0x31F + SYS_GETTIMEOFDAY_R = 0x32E + SYS_ISLOWER = 0x032 + SYS_LGAMMA = 0x32C + SYS_REMAINDER = 0x32A + SYS_SCALB = 0x32B + SYS_SYNC = 0x32F + SYS_TTYSLOT = 0x32D + SYS_ENDPROTOENT = 0x33A + SYS_ENDSERVENT = 0x33B + SYS_GETHOSTBYADDR = 0x33D + SYS_GETHOSTBYADDR_R = 0x33C + SYS_GETHOSTBYNAME = 0x33F + SYS_GETHOSTBYNAME_R = 0x33E + SYS_ISCNTRL = 0x033 + SYS_GETSERVBYNAME = 0x34A + SYS_GETSERVBYPORT = 0x34B + SYS_GETSERVENT = 0x34C + SYS_GETSOCKNAME = 0x34D + SYS_GETSOCKOPT = 0x34E + SYS_INET_ADDR = 0x34F + SYS_ISDIGIT = 0x034 + SYS_ISGRAPH = 0x035 + SYS_SELECT = 0x35B + SYS_SELECTEX = 0x35C + SYS_SEND = 0x35D + SYS_SENDTO = 0x35F + SYS_CHROOT = 0x36A + SYS_ISNAN = 0x36D + SYS_ISUPPER = 0x036 + SYS_ULIMIT = 0x36C + SYS_UTIMES = 0x36E + SYS_W_STATVFS = 0x36B + SYS___H_ERRNO = 0x36F + SYS_GRANTPT = 0x37A + SYS_ISPRINT = 0x037 + SYS_TCGETSID = 0x37C + SYS_UNLOCKPT = 0x37B + SYS___TCGETCP = 0x37D + SYS___TCSETCP = 0x37E + SYS___TCSETTABLES = 0x37F + SYS_ISPUNCT = 0x038 + SYS_NLIST = 0x38C + SYS___IPDBCS = 0x38D + SYS___IPDSPX = 0x38E + SYS___IPMSGC = 0x38F + SYS___STHOSTENT = 0x38B + SYS___STSERVENT = 0x38A + SYS_ISSPACE = 0x039 + SYS_COS = 0x040 + SYS_T_ALLOC = 0x40A + SYS_T_BIND = 0x40B + SYS_T_CLOSE = 0x40C + SYS_T_CONNECT = 0x40D + SYS_T_ERROR = 0x40E + SYS_T_FREE = 0x40F + SYS_TAN = 0x041 + SYS_T_RCVREL = 0x41A + SYS_T_RCVUDATA = 0x41B + SYS_T_RCVUDERR = 0x41C + SYS_T_SND = 0x41D + SYS_T_SNDDIS = 0x41E + SYS_T_SNDREL = 0x41F + SYS_GETPMSG = 0x42A + SYS_ISASTREAM = 0x42B + SYS_PUTMSG = 0x42C + SYS_PUTPMSG = 0x42D + SYS_SINH = 0x042 + SYS___ISPOSIXON = 0x42E + SYS___OPENMVSREL = 0x42F + SYS_ACOS = 0x043 + SYS_ATAN = 0x044 + SYS_ATAN2 = 0x045 + SYS_FTELL = 0x046 + SYS_FGETPOS = 0x047 + SYS_SOCK_DEBUG = 0x47A + SYS_SOCK_DO_TESTSTOR = 0x47D + SYS_TAKESOCKET = 0x47E + SYS___SERVER_INIT = 0x47F + SYS_FSEEK = 0x048 + SYS___IPHOST = 0x48B + SYS___IPNODE = 0x48C + SYS___SERVER_CLASSIFY_CREATE = 0x48D + SYS___SERVER_CLASSIFY_DESTROY = 0x48E + SYS___SERVER_CLASSIFY_RESET = 0x48F + SYS___SMF_RECORD = 0x48A + SYS_FSETPOS = 0x049 + SYS___FNWSA = 0x49B + SYS___SPAWN2 = 0x49D + SYS___SPAWNP2 = 0x49E + SYS_ATOF = 0x050 + SYS_PTHREAD_MUTEXATTR_GETPSHARED = 0x50A + SYS_PTHREAD_MUTEXATTR_SETPSHARED = 0x50B + SYS_PTHREAD_RWLOCK_DESTROY = 0x50C + SYS_PTHREAD_RWLOCK_INIT = 0x50D + SYS_PTHREAD_RWLOCK_RDLOCK = 0x50E + SYS_PTHREAD_RWLOCK_TRYRDLOCK = 0x50F + SYS_ATOI = 0x051 + SYS___FP_CLASS = 0x51D + SYS___FP_CLR_FLAG = 0x51A + SYS___FP_FINITE = 0x51E + SYS___FP_ISNAN = 0x51F + SYS___FP_RAISE_XCP = 0x51C + SYS___FP_READ_FLAG = 0x51B + SYS_RAND = 0x052 + SYS_SIGTIMEDWAIT = 0x52D + SYS_SIGWAITINFO = 0x52E + SYS___CHKBFP = 0x52F + SYS___FPC_RS = 0x52C + SYS___FPC_RW = 0x52A + SYS___FPC_SM = 0x52B + SYS_STRTOD = 0x053 + SYS_STRTOL = 0x054 + SYS_STRTOUL = 0x055 + SYS_MALLOC = 0x056 + SYS_SRAND = 0x057 + SYS_CALLOC = 0x058 + SYS_FREE = 0x059 + SYS___OSENV = 0x59F + SYS___W_PIOCTL = 0x59E + SYS_LONGJMP = 0x060 + SYS___FLOORF_B = 0x60A + SYS___FLOORL_B = 0x60B + SYS___FREXPF_B = 0x60C + SYS___FREXPL_B = 0x60D + SYS___LDEXPF_B = 0x60E + SYS___LDEXPL_B = 0x60F + SYS_SIGNAL = 0x061 + SYS___ATAN2F_B = 0x61A + SYS___ATAN2L_B = 0x61B + SYS___COSHF_B = 0x61C + SYS___COSHL_B = 0x61D + SYS___EXPF_B = 0x61E + SYS___EXPL_B = 0x61F + SYS_TMPNAM = 0x062 + SYS___ABSF_B = 0x62A + SYS___ABSL_B = 0x62C + SYS___ABS_B = 0x62B + SYS___FMODF_B = 0x62D + SYS___FMODL_B = 0x62E + SYS___MODFF_B = 0x62F + SYS_ATANL = 0x63A + SYS_CEILF = 0x63B + SYS_CEILL = 0x63C + SYS_COSF = 0x63D + SYS_COSHF = 0x63F + SYS_COSL = 0x63E + SYS_REMOVE = 0x063 + SYS_POWL = 0x64A + SYS_RENAME = 0x064 + SYS_SINF = 0x64B + SYS_SINHF = 0x64F + SYS_SINL = 0x64C + SYS_SQRTF = 0x64D + SYS_SQRTL = 0x64E + SYS_BTOWC = 0x65F + SYS_FREXPL = 0x65A + SYS_LDEXPF = 0x65B + SYS_LDEXPL = 0x65C + SYS_MODFF = 0x65D + SYS_MODFL = 0x65E + SYS_TMPFILE = 0x065 + SYS_FREOPEN = 0x066 + SYS___CHARMAP_INIT_A = 0x66E + SYS___GETHOSTBYADDR_R_A = 0x66C + SYS___GETHOSTBYNAME_A = 0x66A + SYS___GETHOSTBYNAME_R_A = 0x66D + SYS___MBLEN_A = 0x66F + SYS___RES_INIT_A = 0x66B + SYS_FCLOSE = 0x067 + SYS___GETGRGID_R_A = 0x67D + SYS___WCSTOMBS_A = 0x67A + SYS___WCSTOMBS_STD_A = 0x67B + SYS___WCSWIDTH_A = 0x67C + SYS___WCSWIDTH_ASIA = 0x67F + SYS___WCSWIDTH_STD_A = 0x67E + SYS_FFLUSH = 0x068 + SYS___GETLOGIN_R_A = 0x68E + SYS___GETPWNAM_R_A = 0x68C + SYS___GETPWUID_R_A = 0x68D + SYS___TTYNAME_R_A = 0x68F + SYS___WCWIDTH_ASIA = 0x68B + SYS___WCWIDTH_STD_A = 0x68A + SYS_FOPEN = 0x069 + SYS___REGEXEC_A = 0x69A + SYS___REGEXEC_STD_A = 0x69B + SYS___REGFREE_A = 0x69C + SYS___REGFREE_STD_A = 0x69D + SYS___STRCOLL_A = 0x69E + SYS___STRCOLL_C_A = 0x69F + SYS_SCANF = 0x070 + SYS___A64L_A = 0x70C + SYS___ECVT_A = 0x70D + SYS___FCVT_A = 0x70E + SYS___GCVT_A = 0x70F + SYS___STRTOUL_A = 0x70A + SYS_____AE_CORRESTBL_QUERY_A = 0x70B + SYS_SPRINTF = 0x071 + SYS___ACCESS_A = 0x71F + SYS___CATOPEN_A = 0x71E + SYS___GETOPT_A = 0x71D + SYS___REALPATH_A = 0x71A + SYS___SETENV_A = 0x71B + SYS___SYSTEM_A = 0x71C + SYS_FGETC = 0x072 + SYS___GAI_STRERROR_A = 0x72F + SYS___RMDIR_A = 0x72A + SYS___STATVFS_A = 0x72B + SYS___SYMLINK_A = 0x72C + SYS___TRUNCATE_A = 0x72D + SYS___UNLINK_A = 0x72E + SYS_VFPRINTF = 0x073 + SYS___ISSPACE_A = 0x73A + SYS___ISUPPER_A = 0x73B + SYS___ISWALNUM_A = 0x73F + SYS___ISXDIGIT_A = 0x73C + SYS___TOLOWER_A = 0x73D + SYS___TOUPPER_A = 0x73E + SYS_VPRINTF = 0x074 + SYS___CONFSTR_A = 0x74B + SYS___FDOPEN_A = 0x74E + SYS___FLDATA_A = 0x74F + SYS___FTOK_A = 0x74C + SYS___ISWXDIGIT_A = 0x74A + SYS___MKTEMP_A = 0x74D + SYS_VSPRINTF = 0x075 + SYS___GETGRGID_A = 0x75A + SYS___GETGRNAM_A = 0x75B + SYS___GETGROUPSBYNAME_A = 0x75C + SYS___GETHOSTENT_A = 0x75D + SYS___GETHOSTNAME_A = 0x75E + SYS___GETLOGIN_A = 0x75F + SYS_GETC = 0x076 + SYS___CREATEWORKUNIT_A = 0x76A + SYS___CTERMID_A = 0x76B + SYS___FMTMSG_A = 0x76C + SYS___INITGROUPS_A = 0x76D + SYS___MSGRCV_A = 0x76F + SYS_____LOGIN_A = 0x76E + SYS_FGETS = 0x077 + SYS___STRCASECMP_A = 0x77B + SYS___STRNCASECMP_A = 0x77C + SYS___TTYNAME_A = 0x77D + SYS___UNAME_A = 0x77E + SYS___UTIMES_A = 0x77F + SYS_____SERVER_PWU_A = 0x77A + SYS_FPUTC = 0x078 + SYS___CREAT_O_A = 0x78E + SYS___ENVNA = 0x78F + SYS___FREAD_A = 0x78A + SYS___FWRITE_A = 0x78B + SYS___ISASCII = 0x78D + SYS___OPEN_O_A = 0x78C + SYS_FPUTS = 0x079 + SYS___ASCTIME_A = 0x79C + SYS___CTIME_A = 0x79D + SYS___GETDATE_A = 0x79E + SYS___GETSERVBYPORT_A = 0x79A + SYS___GETSERVENT_A = 0x79B + SYS___TZSET_A = 0x79F + SYS_ACL_FROM_TEXT = 0x80C + SYS_ACL_SET_FD = 0x80A + SYS_ACL_SET_FILE = 0x80B + SYS_ACL_SORT = 0x80E + SYS_ACL_TO_TEXT = 0x80D + SYS_UNGETC = 0x080 + SYS___SHUTDOWN_REGISTRATION = 0x80F + SYS_FREAD = 0x081 + SYS_FREEADDRINFO = 0x81A + SYS_GAI_STRERROR = 0x81B + SYS_REXEC_AF = 0x81C + SYS___DYNALLOC_A = 0x81F + SYS___POE = 0x81D + SYS_WCSTOMBS = 0x082 + SYS___INET_ADDR_A = 0x82F + SYS___NLIST_A = 0x82A + SYS_____TCGETCP_A = 0x82B + SYS_____TCSETCP_A = 0x82C + SYS_____W_PIOCTL_A = 0x82E + SYS_MBTOWC = 0x083 + SYS___CABEND = 0x83D + SYS___LE_CIB_GET = 0x83E + SYS___RECVMSG_A = 0x83B + SYS___SENDMSG_A = 0x83A + SYS___SET_LAA_FOR_JIT = 0x83F + SYS_____LCHATTR_A = 0x83C + SYS_WCTOMB = 0x084 + SYS___CBRTL_B = 0x84A + SYS___COPYSIGNF_B = 0x84B + SYS___COPYSIGNL_B = 0x84C + SYS___COTANF_B = 0x84D + SYS___COTANL_B = 0x84F + SYS___COTAN_B = 0x84E + SYS_MBSTOWCS = 0x085 + SYS___LOG1PL_B = 0x85A + SYS___LOG2F_B = 0x85B + SYS___LOG2L_B = 0x85D + SYS___LOG2_B = 0x85C + SYS___REMAINDERF_B = 0x85E + SYS___REMAINDERL_B = 0x85F + SYS_ACOSHF = 0x86E + SYS_ACOSHL = 0x86F + SYS_WCSCPY = 0x086 + SYS___ERFCF_B = 0x86D + SYS___ERFF_B = 0x86C + SYS___LROUNDF_B = 0x86A + SYS___LROUND_B = 0x86B + SYS_COTANL = 0x87A + SYS_EXP2F = 0x87B + SYS_EXP2L = 0x87C + SYS_EXPM1F = 0x87D + SYS_EXPM1L = 0x87E + SYS_FDIMF = 0x87F + SYS_WCSCAT = 0x087 + SYS___COTANL = 0x87A + SYS_REMAINDERF = 0x88A + SYS_REMAINDERL = 0x88B + SYS_REMAINDF = 0x88A + SYS_REMAINDL = 0x88B + SYS_REMQUO = 0x88D + SYS_REMQUOF = 0x88C + SYS_REMQUOL = 0x88E + SYS_TGAMMAF = 0x88F + SYS_WCSCHR = 0x088 + SYS_ERFCF = 0x89B + SYS_ERFCL = 0x89C + SYS_ERFL = 0x89A + SYS_EXP2 = 0x89E + SYS_WCSCMP = 0x089 + SYS___EXP2_B = 0x89D + SYS___FAR_JUMP = 0x89F + SYS_ABS = 0x090 + SYS___ERFCL_H = 0x90A + SYS___EXPF_H = 0x90C + SYS___EXPL_H = 0x90D + SYS___EXPM1_H = 0x90E + SYS___EXP_H = 0x90B + SYS___FDIM_H = 0x90F + SYS_DIV = 0x091 + SYS___LOG2F_H = 0x91F + SYS___LOG2_H = 0x91E + SYS___LOGB_H = 0x91D + SYS___LOGF_H = 0x91B + SYS___LOGL_H = 0x91C + SYS___LOG_H = 0x91A + SYS_LABS = 0x092 + SYS___POWL_H = 0x92A + SYS___REMAINDER_H = 0x92B + SYS___RINT_H = 0x92C + SYS___SCALB_H = 0x92D + SYS___SINF_H = 0x92F + SYS___SIN_H = 0x92E + SYS_STRNCPY = 0x093 + SYS___TANHF_H = 0x93B + SYS___TANHL_H = 0x93C + SYS___TANH_H = 0x93A + SYS___TGAMMAF_H = 0x93E + SYS___TGAMMA_H = 0x93D + SYS___TRUNC_H = 0x93F + SYS_MEMCPY = 0x094 + SYS_VFWSCANF = 0x94A + SYS_VSWSCANF = 0x94E + SYS_VWSCANF = 0x94C + SYS_INET6_RTH_ADD = 0x95D + SYS_INET6_RTH_INIT = 0x95C + SYS_INET6_RTH_REVERSE = 0x95E + SYS_INET6_RTH_SEGMENTS = 0x95F + SYS_INET6_RTH_SPACE = 0x95B + SYS_MEMMOVE = 0x095 + SYS_WCSTOLD = 0x95A + SYS_STRCPY = 0x096 + SYS_STRCMP = 0x097 + SYS_CABS = 0x98E + SYS_STRCAT = 0x098 + SYS___CABS_B = 0x98F + SYS___POW_II = 0x98A + SYS___POW_II_B = 0x98B + SYS___POW_II_H = 0x98C + SYS_CACOSF = 0x99A + SYS_CACOSL = 0x99D + SYS_STRNCAT = 0x099 + SYS___CACOSF_B = 0x99B + SYS___CACOSF_H = 0x99C + SYS___CACOSL_B = 0x99E + SYS___CACOSL_H = 0x99F + SYS_ISWALPHA = 0x100 + SYS_ISWBLANK = 0x101 + SYS___ISWBLK = 0x101 + SYS_ISWCNTRL = 0x102 + SYS_ISWDIGIT = 0x103 + SYS_ISWGRAPH = 0x104 + SYS_ISWLOWER = 0x105 + SYS_ISWPRINT = 0x106 + SYS_ISWPUNCT = 0x107 + SYS_ISWSPACE = 0x108 + SYS_ISWUPPER = 0x109 + SYS_WCTOB = 0x110 + SYS_MBRLEN = 0x111 + SYS_MBRTOWC = 0x112 + SYS_MBSRTOWC = 0x113 + SYS_MBSRTOWCS = 0x113 + SYS_WCRTOMB = 0x114 + SYS_WCSRTOMB = 0x115 + SYS_WCSRTOMBS = 0x115 + SYS___CSID = 0x116 + SYS___WCSID = 0x117 + SYS_STRPTIME = 0x118 + SYS___STRPTM = 0x118 + SYS_STRFMON = 0x119 + SYS_WCSCOLL = 0x130 + SYS_WCSXFRM = 0x131 + SYS_WCSWIDTH = 0x132 + SYS_WCWIDTH = 0x133 + SYS_WCSFTIME = 0x134 + SYS_SWPRINTF = 0x135 + SYS_VSWPRINT = 0x136 + SYS_VSWPRINTF = 0x136 + SYS_SWSCANF = 0x137 + SYS_REGCOMP = 0x138 + SYS_REGEXEC = 0x139 + SYS_GETWC = 0x140 + SYS_GETWCHAR = 0x141 + SYS_PUTWC = 0x142 + SYS_PUTWCHAR = 0x143 + SYS_UNGETWC = 0x144 + SYS_ICONV_OPEN = 0x145 + SYS_ICONV = 0x146 + SYS_ICONV_CLOSE = 0x147 + SYS_COLLRANGE = 0x150 + SYS_CCLASS = 0x151 + SYS_COLLORDER = 0x152 + SYS___DEMANGLE = 0x154 + SYS_FDOPEN = 0x155 + SYS___ERRNO = 0x156 + SYS___ERRNO2 = 0x157 + SYS___TERROR = 0x158 + SYS_MAXCOLL = 0x169 + SYS_DLLLOAD = 0x170 + SYS__EXIT = 0x174 + SYS_ACCESS = 0x175 + SYS_ALARM = 0x176 + SYS_CFGETISPEED = 0x177 + SYS_CFGETOSPEED = 0x178 + SYS_CFSETISPEED = 0x179 + SYS_CREAT = 0x180 + SYS_CTERMID = 0x181 + SYS_DUP = 0x182 + SYS_DUP2 = 0x183 + SYS_EXECL = 0x184 + SYS_EXECLE = 0x185 + SYS_EXECLP = 0x186 + SYS_EXECV = 0x187 + SYS_EXECVE = 0x188 + SYS_EXECVP = 0x189 + SYS_FSTAT = 0x190 + SYS_FSYNC = 0x191 + SYS_FTRUNCATE = 0x192 + SYS_GETCWD = 0x193 + SYS_GETEGID = 0x194 + SYS_GETEUID = 0x195 + SYS_GETGID = 0x196 + SYS_GETGRGID = 0x197 + SYS_GETGRNAM = 0x198 + SYS_GETGROUPS = 0x199 + SYS_PTHREAD_MUTEXATTR_DESTROY = 0x200 + SYS_PTHREAD_MUTEXATTR_SETKIND_NP = 0x201 + SYS_PTHREAD_MUTEXATTR_GETKIND_NP = 0x202 + SYS_PTHREAD_MUTEX_INIT = 0x203 + SYS_PTHREAD_MUTEX_DESTROY = 0x204 + SYS_PTHREAD_MUTEX_LOCK = 0x205 + SYS_PTHREAD_MUTEX_TRYLOCK = 0x206 + SYS_PTHREAD_MUTEX_UNLOCK = 0x207 + SYS_PTHREAD_ONCE = 0x209 + SYS_TW_OPEN = 0x210 + SYS_TW_FCNTL = 0x211 + SYS_PTHREAD_JOIN_D4_NP = 0x212 + SYS_PTHREAD_CONDATTR_SETKIND_NP = 0x213 + SYS_PTHREAD_CONDATTR_GETKIND_NP = 0x214 + SYS_EXTLINK_NP = 0x215 + SYS___PASSWD = 0x216 + SYS_SETGROUPS = 0x217 + SYS_INITGROUPS = 0x218 + SYS_WCSRCHR = 0x240 + SYS_SVC99 = 0x241 + SYS___SVC99 = 0x241 + SYS_WCSWCS = 0x242 + SYS_LOCALECO = 0x243 + SYS_LOCALECONV = 0x243 + SYS___LIBREL = 0x244 + SYS_RELEASE = 0x245 + SYS___RLSE = 0x245 + SYS_FLOCATE = 0x246 + SYS___FLOCT = 0x246 + SYS_FDELREC = 0x247 + SYS___FDLREC = 0x247 + SYS_FETCH = 0x248 + SYS___FETCH = 0x248 + SYS_QSORT = 0x249 + SYS___CLEANUPCATCH = 0x260 + SYS___CATCHMATCH = 0x261 + SYS___CLEAN2UPCATCH = 0x262 + SYS_GETPRIORITY = 0x270 + SYS_NICE = 0x271 + SYS_SETPRIORITY = 0x272 + SYS_GETITIMER = 0x273 + SYS_SETITIMER = 0x274 + SYS_MSGCTL = 0x275 + SYS_MSGGET = 0x276 + SYS_MSGRCV = 0x277 + SYS_MSGSND = 0x278 + SYS_MSGXRCV = 0x279 + SYS___MSGXR = 0x279 + SYS_SHMGET = 0x280 + SYS___GETIPC = 0x281 + SYS_SETGRENT = 0x282 + SYS_GETGRENT = 0x283 + SYS_ENDGRENT = 0x284 + SYS_SETPWENT = 0x285 + SYS_GETPWENT = 0x286 + SYS_ENDPWENT = 0x287 + SYS_BSD_SIGNAL = 0x288 + SYS_KILLPG = 0x289 + SYS_SIGSET = 0x290 + SYS_SIGSTACK = 0x291 + SYS_GETRLIMIT = 0x292 + SYS_SETRLIMIT = 0x293 + SYS_GETRUSAGE = 0x294 + SYS_MMAP = 0x295 + SYS_MPROTECT = 0x296 + SYS_MSYNC = 0x297 + SYS_MUNMAP = 0x298 + SYS_CONFSTR = 0x299 + SYS___NDMTRM = 0x300 + SYS_FTOK = 0x301 + SYS_BASENAME = 0x302 + SYS_DIRNAME = 0x303 + SYS_GETDTABLESIZE = 0x304 + SYS_MKSTEMP = 0x305 + SYS_MKTEMP = 0x306 + SYS_NFTW = 0x307 + SYS_GETWD = 0x308 + SYS_LOCKF = 0x309 + SYS_WORDEXP = 0x310 + SYS_WORDFREE = 0x311 + SYS_GETPGID = 0x312 + SYS_GETSID = 0x313 + SYS___UTMPXNAME = 0x314 + SYS_CUSERID = 0x315 + SYS_GETPASS = 0x316 + SYS_FNMATCH = 0x317 + SYS_FTW = 0x318 + SYS_GETW = 0x319 + SYS_ACOSH = 0x320 + SYS_ASINH = 0x321 + SYS_ATANH = 0x322 + SYS_CBRT = 0x323 + SYS_EXPM1 = 0x324 + SYS_ILOGB = 0x325 + SYS_LOGB = 0x326 + SYS_LOG1P = 0x327 + SYS_NEXTAFTER = 0x328 + SYS_RINT = 0x329 + SYS_SPAWN = 0x330 + SYS_SPAWNP = 0x331 + SYS_GETLOGIN_UU = 0x332 + SYS_ECVT = 0x333 + SYS_FCVT = 0x334 + SYS_GCVT = 0x335 + SYS_ACCEPT = 0x336 + SYS_BIND = 0x337 + SYS_CONNECT = 0x338 + SYS_ENDHOSTENT = 0x339 + SYS_GETHOSTENT = 0x340 + SYS_GETHOSTID = 0x341 + SYS_GETHOSTNAME = 0x342 + SYS_GETNETBYADDR = 0x343 + SYS_GETNETBYNAME = 0x344 + SYS_GETNETENT = 0x345 + SYS_GETPEERNAME = 0x346 + SYS_GETPROTOBYNAME = 0x347 + SYS_GETPROTOBYNUMBER = 0x348 + SYS_GETPROTOENT = 0x349 + SYS_INET_LNAOF = 0x350 + SYS_INET_MAKEADDR = 0x351 + SYS_INET_NETOF = 0x352 + SYS_INET_NETWORK = 0x353 + SYS_INET_NTOA = 0x354 + SYS_IOCTL = 0x355 + SYS_LISTEN = 0x356 + SYS_READV = 0x357 + SYS_RECV = 0x358 + SYS_RECVFROM = 0x359 + SYS_SETHOSTENT = 0x360 + SYS_SETNETENT = 0x361 + SYS_SETPEER = 0x362 + SYS_SETPROTOENT = 0x363 + SYS_SETSERVENT = 0x364 + SYS_SETSOCKOPT = 0x365 + SYS_SHUTDOWN = 0x366 + SYS_SOCKET = 0x367 + SYS_SOCKETPAIR = 0x368 + SYS_WRITEV = 0x369 + SYS_ENDNETENT = 0x370 + SYS_CLOSELOG = 0x371 + SYS_OPENLOG = 0x372 + SYS_SETLOGMASK = 0x373 + SYS_SYSLOG = 0x374 + SYS_PTSNAME = 0x375 + SYS_SETREUID = 0x376 + SYS_SETREGID = 0x377 + SYS_REALPATH = 0x378 + SYS___SIGNGAM = 0x379 + SYS_POLL = 0x380 + SYS_REXEC = 0x381 + SYS___ISASCII2 = 0x382 + SYS___TOASCII2 = 0x383 + SYS_CHPRIORITY = 0x384 + SYS_PTHREAD_ATTR_SETSYNCTYPE_NP = 0x385 + SYS_PTHREAD_ATTR_GETSYNCTYPE_NP = 0x386 + SYS_PTHREAD_SET_LIMIT_NP = 0x387 + SYS___STNETENT = 0x388 + SYS___STPROTOENT = 0x389 + SYS___SELECT1 = 0x390 + SYS_PTHREAD_SECURITY_NP = 0x391 + SYS___CHECK_RESOURCE_AUTH_NP = 0x392 + SYS___CONVERT_ID_NP = 0x393 + SYS___OPENVMREL = 0x394 + SYS_WMEMCHR = 0x395 + SYS_WMEMCMP = 0x396 + SYS_WMEMCPY = 0x397 + SYS_WMEMMOVE = 0x398 + SYS_WMEMSET = 0x399 + SYS___FPUTWC = 0x400 + SYS___PUTWC = 0x401 + SYS___PWCHAR = 0x402 + SYS___WCSFTM = 0x403 + SYS___WCSTOK = 0x404 + SYS___WCWDTH = 0x405 + SYS_T_ACCEPT = 0x409 + SYS_T_GETINFO = 0x410 + SYS_T_GETPROTADDR = 0x411 + SYS_T_GETSTATE = 0x412 + SYS_T_LISTEN = 0x413 + SYS_T_LOOK = 0x414 + SYS_T_OPEN = 0x415 + SYS_T_OPTMGMT = 0x416 + SYS_T_RCV = 0x417 + SYS_T_RCVCONNECT = 0x418 + SYS_T_RCVDIS = 0x419 + SYS_T_SNDUDATA = 0x420 + SYS_T_STRERROR = 0x421 + SYS_T_SYNC = 0x422 + SYS_T_UNBIND = 0x423 + SYS___T_ERRNO = 0x424 + SYS___RECVMSG2 = 0x425 + SYS___SENDMSG2 = 0x426 + SYS_FATTACH = 0x427 + SYS_FDETACH = 0x428 + SYS_GETMSG = 0x429 + SYS_GETCONTEXT = 0x430 + SYS_SETCONTEXT = 0x431 + SYS_MAKECONTEXT = 0x432 + SYS_SWAPCONTEXT = 0x433 + SYS_PTHREAD_GETSPECIFIC_D8_NP = 0x434 + SYS_GETCLIENTID = 0x470 + SYS___GETCLIENTID = 0x471 + SYS_GETSTABLESIZE = 0x472 + SYS_GETIBMOPT = 0x473 + SYS_GETIBMSOCKOPT = 0x474 + SYS_GIVESOCKET = 0x475 + SYS_IBMSFLUSH = 0x476 + SYS_MAXDESC = 0x477 + SYS_SETIBMOPT = 0x478 + SYS_SETIBMSOCKOPT = 0x479 + SYS___SERVER_PWU = 0x480 + SYS_PTHREAD_TAG_NP = 0x481 + SYS___CONSOLE = 0x482 + SYS___WSINIT = 0x483 + SYS___IPTCPN = 0x489 + SYS___SERVER_CLASSIFY = 0x490 + SYS___HEAPRPT = 0x496 + SYS___ISBFP = 0x500 + SYS___FP_CAST = 0x501 + SYS___CERTIFICATE = 0x502 + SYS_SEND_FILE = 0x503 + SYS_AIO_CANCEL = 0x504 + SYS_AIO_ERROR = 0x505 + SYS_AIO_READ = 0x506 + SYS_AIO_RETURN = 0x507 + SYS_AIO_SUSPEND = 0x508 + SYS_AIO_WRITE = 0x509 + SYS_PTHREAD_RWLOCK_TRYWRLOCK = 0x510 + SYS_PTHREAD_RWLOCK_UNLOCK = 0x511 + SYS_PTHREAD_RWLOCK_WRLOCK = 0x512 + SYS_PTHREAD_RWLOCKATTR_GETPSHARED = 0x513 + SYS_PTHREAD_RWLOCKATTR_SETPSHARED = 0x514 + SYS_PTHREAD_RWLOCKATTR_INIT = 0x515 + SYS_PTHREAD_RWLOCKATTR_DESTROY = 0x516 + SYS___CTTBL = 0x517 + SYS_PTHREAD_MUTEXATTR_SETTYPE = 0x518 + SYS_PTHREAD_MUTEXATTR_GETTYPE = 0x519 + SYS___FP_UNORDERED = 0x520 + SYS___FP_READ_RND = 0x521 + SYS___FP_READ_RND_B = 0x522 + SYS___FP_SWAP_RND = 0x523 + SYS___FP_SWAP_RND_B = 0x524 + SYS___FP_LEVEL = 0x525 + SYS___FP_BTOH = 0x526 + SYS___FP_HTOB = 0x527 + SYS___FPC_RD = 0x528 + SYS___FPC_WR = 0x529 + SYS_PTHREAD_SETCANCELTYPE = 0x600 + SYS_PTHREAD_TESTCANCEL = 0x601 + SYS___ATANF_B = 0x602 + SYS___ATANL_B = 0x603 + SYS___CEILF_B = 0x604 + SYS___CEILL_B = 0x605 + SYS___COSF_B = 0x606 + SYS___COSL_B = 0x607 + SYS___FABSF_B = 0x608 + SYS___FABSL_B = 0x609 + SYS___SINF_B = 0x610 + SYS___SINL_B = 0x611 + SYS___TANF_B = 0x612 + SYS___TANL_B = 0x613 + SYS___TANHF_B = 0x614 + SYS___TANHL_B = 0x615 + SYS___ACOSF_B = 0x616 + SYS___ACOSL_B = 0x617 + SYS___ASINF_B = 0x618 + SYS___ASINL_B = 0x619 + SYS___LOGF_B = 0x620 + SYS___LOGL_B = 0x621 + SYS___LOG10F_B = 0x622 + SYS___LOG10L_B = 0x623 + SYS___POWF_B = 0x624 + SYS___POWL_B = 0x625 + SYS___SINHF_B = 0x626 + SYS___SINHL_B = 0x627 + SYS___SQRTF_B = 0x628 + SYS___SQRTL_B = 0x629 + SYS___MODFL_B = 0x630 + SYS_ABSF = 0x631 + SYS_ABSL = 0x632 + SYS_ACOSF = 0x633 + SYS_ACOSL = 0x634 + SYS_ASINF = 0x635 + SYS_ASINL = 0x636 + SYS_ATAN2F = 0x637 + SYS_ATAN2L = 0x638 + SYS_ATANF = 0x639 + SYS_COSHL = 0x640 + SYS_EXPF = 0x641 + SYS_EXPL = 0x642 + SYS_TANHF = 0x643 + SYS_TANHL = 0x644 + SYS_LOG10F = 0x645 + SYS_LOG10L = 0x646 + SYS_LOGF = 0x647 + SYS_LOGL = 0x648 + SYS_POWF = 0x649 + SYS_SINHL = 0x650 + SYS_TANF = 0x651 + SYS_TANL = 0x652 + SYS_FABSF = 0x653 + SYS_FABSL = 0x654 + SYS_FLOORF = 0x655 + SYS_FLOORL = 0x656 + SYS_FMODF = 0x657 + SYS_FMODL = 0x658 + SYS_FREXPF = 0x659 + SYS___CHATTR = 0x660 + SYS___FCHATTR = 0x661 + SYS___TOCCSID = 0x662 + SYS___CSNAMETYPE = 0x663 + SYS___TOCSNAME = 0x664 + SYS___CCSIDTYPE = 0x665 + SYS___AE_CORRESTBL_QUERY = 0x666 + SYS___AE_AUTOCONVERT_STATE = 0x667 + SYS_DN_FIND = 0x668 + SYS___GETHOSTBYADDR_A = 0x669 + SYS___MBLEN_SB_A = 0x670 + SYS___MBLEN_STD_A = 0x671 + SYS___MBLEN_UTF = 0x672 + SYS___MBSTOWCS_A = 0x673 + SYS___MBSTOWCS_STD_A = 0x674 + SYS___MBTOWC_A = 0x675 + SYS___MBTOWC_ISO1 = 0x676 + SYS___MBTOWC_SBCS = 0x677 + SYS___MBTOWC_MBCS = 0x678 + SYS___MBTOWC_UTF = 0x679 + SYS___CSID_A = 0x680 + SYS___CSID_STD_A = 0x681 + SYS___WCSID_A = 0x682 + SYS___WCSID_STD_A = 0x683 + SYS___WCTOMB_A = 0x684 + SYS___WCTOMB_ISO1 = 0x685 + SYS___WCTOMB_STD_A = 0x686 + SYS___WCTOMB_UTF = 0x687 + SYS___WCWIDTH_A = 0x688 + SYS___GETGRNAM_R_A = 0x689 + SYS___READDIR_R_A = 0x690 + SYS___E2A_S = 0x691 + SYS___FNMATCH_A = 0x692 + SYS___FNMATCH_C_A = 0x693 + SYS___EXECL_A = 0x694 + SYS___FNMATCH_STD_A = 0x695 + SYS___REGCOMP_A = 0x696 + SYS___REGCOMP_STD_A = 0x697 + SYS___REGERROR_A = 0x698 + SYS___REGERROR_STD_A = 0x699 + SYS___SWPRINTF_A = 0x700 + SYS___FSCANF_A = 0x701 + SYS___SCANF_A = 0x702 + SYS___SSCANF_A = 0x703 + SYS___SWSCANF_A = 0x704 + SYS___ATOF_A = 0x705 + SYS___ATOI_A = 0x706 + SYS___ATOL_A = 0x707 + SYS___STRTOD_A = 0x708 + SYS___STRTOL_A = 0x709 + SYS___L64A_A = 0x710 + SYS___STRERROR_A = 0x711 + SYS___PERROR_A = 0x712 + SYS___FETCH_A = 0x713 + SYS___GETENV_A = 0x714 + SYS___MKSTEMP_A = 0x717 + SYS___PTSNAME_A = 0x718 + SYS___PUTENV_A = 0x719 + SYS___CHDIR_A = 0x720 + SYS___CHOWN_A = 0x721 + SYS___CHROOT_A = 0x722 + SYS___GETCWD_A = 0x723 + SYS___GETWD_A = 0x724 + SYS___LCHOWN_A = 0x725 + SYS___LINK_A = 0x726 + SYS___PATHCONF_A = 0x727 + SYS___IF_NAMEINDEX_A = 0x728 + SYS___READLINK_A = 0x729 + SYS___EXTLINK_NP_A = 0x730 + SYS___ISALNUM_A = 0x731 + SYS___ISALPHA_A = 0x732 + SYS___A2E_S = 0x733 + SYS___ISCNTRL_A = 0x734 + SYS___ISDIGIT_A = 0x735 + SYS___ISGRAPH_A = 0x736 + SYS___ISLOWER_A = 0x737 + SYS___ISPRINT_A = 0x738 + SYS___ISPUNCT_A = 0x739 + SYS___ISWALPHA_A = 0x740 + SYS___A2E_L = 0x741 + SYS___ISWCNTRL_A = 0x742 + SYS___ISWDIGIT_A = 0x743 + SYS___ISWGRAPH_A = 0x744 + SYS___ISWLOWER_A = 0x745 + SYS___ISWPRINT_A = 0x746 + SYS___ISWPUNCT_A = 0x747 + SYS___ISWSPACE_A = 0x748 + SYS___ISWUPPER_A = 0x749 + SYS___REMOVE_A = 0x750 + SYS___RENAME_A = 0x751 + SYS___TMPNAM_A = 0x752 + SYS___FOPEN_A = 0x753 + SYS___FREOPEN_A = 0x754 + SYS___CUSERID_A = 0x755 + SYS___POPEN_A = 0x756 + SYS___TEMPNAM_A = 0x757 + SYS___FTW_A = 0x758 + SYS___GETGRENT_A = 0x759 + SYS___INET_NTOP_A = 0x760 + SYS___GETPASS_A = 0x761 + SYS___GETPWENT_A = 0x762 + SYS___GETPWNAM_A = 0x763 + SYS___GETPWUID_A = 0x764 + SYS_____CHECK_RESOURCE_AUTH_NP_A = 0x765 + SYS___CHECKSCHENV_A = 0x766 + SYS___CONNECTSERVER_A = 0x767 + SYS___CONNECTWORKMGR_A = 0x768 + SYS_____CONSOLE_A = 0x769 + SYS___MSGSND_A = 0x770 + SYS___MSGXRCV_A = 0x771 + SYS___NFTW_A = 0x772 + SYS_____PASSWD_A = 0x773 + SYS___PTHREAD_SECURITY_NP_A = 0x774 + SYS___QUERYMETRICS_A = 0x775 + SYS___QUERYSCHENV = 0x776 + SYS___READV_A = 0x777 + SYS_____SERVER_CLASSIFY_A = 0x778 + SYS_____SERVER_INIT_A = 0x779 + SYS___W_GETPSENT_A = 0x780 + SYS___WRITEV_A = 0x781 + SYS___W_STATFS_A = 0x782 + SYS___W_STATVFS_A = 0x783 + SYS___FPUTC_A = 0x784 + SYS___PUTCHAR_A = 0x785 + SYS___PUTS_A = 0x786 + SYS___FGETS_A = 0x787 + SYS___GETS_A = 0x788 + SYS___FPUTS_A = 0x789 + SYS___PUTC_A = 0x790 + SYS___AE_THREAD_SETMODE = 0x791 + SYS___AE_THREAD_SWAPMODE = 0x792 + SYS___GETNETBYADDR_A = 0x793 + SYS___GETNETBYNAME_A = 0x794 + SYS___GETNETENT_A = 0x795 + SYS___GETPROTOBYNAME_A = 0x796 + SYS___GETPROTOBYNUMBER_A = 0x797 + SYS___GETPROTOENT_A = 0x798 + SYS___GETSERVBYNAME_A = 0x799 + SYS_ACL_FIRST_ENTRY = 0x800 + SYS_ACL_GET_ENTRY = 0x801 + SYS_ACL_VALID = 0x802 + SYS_ACL_CREATE_ENTRY = 0x803 + SYS_ACL_DELETE_ENTRY = 0x804 + SYS_ACL_UPDATE_ENTRY = 0x805 + SYS_ACL_DELETE_FD = 0x806 + SYS_ACL_DELETE_FILE = 0x807 + SYS_ACL_GET_FD = 0x808 + SYS_ACL_GET_FILE = 0x809 + SYS___ERFL_B = 0x810 + SYS___ERFCL_B = 0x811 + SYS___LGAMMAL_B = 0x812 + SYS___SETHOOKEVENTS = 0x813 + SYS_IF_NAMETOINDEX = 0x814 + SYS_IF_INDEXTONAME = 0x815 + SYS_IF_NAMEINDEX = 0x816 + SYS_IF_FREENAMEINDEX = 0x817 + SYS_GETADDRINFO = 0x818 + SYS_GETNAMEINFO = 0x819 + SYS___DYNFREE_A = 0x820 + SYS___RES_QUERY_A = 0x821 + SYS___RES_SEARCH_A = 0x822 + SYS___RES_QUERYDOMAIN_A = 0x823 + SYS___RES_MKQUERY_A = 0x824 + SYS___RES_SEND_A = 0x825 + SYS___DN_EXPAND_A = 0x826 + SYS___DN_SKIPNAME_A = 0x827 + SYS___DN_COMP_A = 0x828 + SYS___DN_FIND_A = 0x829 + SYS___INET_NTOA_A = 0x830 + SYS___INET_NETWORK_A = 0x831 + SYS___ACCEPT_A = 0x832 + SYS___ACCEPT_AND_RECV_A = 0x833 + SYS___BIND_A = 0x834 + SYS___CONNECT_A = 0x835 + SYS___GETPEERNAME_A = 0x836 + SYS___GETSOCKNAME_A = 0x837 + SYS___RECVFROM_A = 0x838 + SYS___SENDTO_A = 0x839 + SYS___LCHATTR = 0x840 + SYS___WRITEDOWN = 0x841 + SYS_PTHREAD_MUTEX_INIT2 = 0x842 + SYS___ACOSHF_B = 0x843 + SYS___ACOSHL_B = 0x844 + SYS___ASINHF_B = 0x845 + SYS___ASINHL_B = 0x846 + SYS___ATANHF_B = 0x847 + SYS___ATANHL_B = 0x848 + SYS___CBRTF_B = 0x849 + SYS___EXP2F_B = 0x850 + SYS___EXP2L_B = 0x851 + SYS___EXPM1F_B = 0x852 + SYS___EXPM1L_B = 0x853 + SYS___FDIMF_B = 0x854 + SYS___FDIM_B = 0x855 + SYS___FDIML_B = 0x856 + SYS___HYPOTF_B = 0x857 + SYS___HYPOTL_B = 0x858 + SYS___LOG1PF_B = 0x859 + SYS___REMQUOF_B = 0x860 + SYS___REMQUO_B = 0x861 + SYS___REMQUOL_B = 0x862 + SYS___TGAMMAF_B = 0x863 + SYS___TGAMMA_B = 0x864 + SYS___TGAMMAL_B = 0x865 + SYS___TRUNCF_B = 0x866 + SYS___TRUNC_B = 0x867 + SYS___TRUNCL_B = 0x868 + SYS___LGAMMAF_B = 0x869 + SYS_ASINHF = 0x870 + SYS_ASINHL = 0x871 + SYS_ATANHF = 0x872 + SYS_ATANHL = 0x873 + SYS_CBRTF = 0x874 + SYS_CBRTL = 0x875 + SYS_COPYSIGNF = 0x876 + SYS_CPYSIGNF = 0x876 + SYS_COPYSIGNL = 0x877 + SYS_CPYSIGNL = 0x877 + SYS_COTANF = 0x878 + SYS___COTANF = 0x878 + SYS_COTAN = 0x879 + SYS___COTAN = 0x879 + SYS_FDIM = 0x881 + SYS_FDIML = 0x882 + SYS_HYPOTF = 0x883 + SYS_HYPOTL = 0x884 + SYS_LOG1PF = 0x885 + SYS_LOG1PL = 0x886 + SYS_LOG2F = 0x887 + SYS_LOG2 = 0x888 + SYS_LOG2L = 0x889 + SYS_TGAMMA = 0x890 + SYS_TGAMMAL = 0x891 + SYS_TRUNCF = 0x892 + SYS_TRUNC = 0x893 + SYS_TRUNCL = 0x894 + SYS_LGAMMAF = 0x895 + SYS_LGAMMAL = 0x896 + SYS_LROUNDF = 0x897 + SYS_LROUND = 0x898 + SYS_ERFF = 0x899 + SYS___COSHF_H = 0x900 + SYS___COSHL_H = 0x901 + SYS___COTAN_H = 0x902 + SYS___COTANF_H = 0x903 + SYS___COTANL_H = 0x904 + SYS___ERF_H = 0x905 + SYS___ERFF_H = 0x906 + SYS___ERFL_H = 0x907 + SYS___ERFC_H = 0x908 + SYS___ERFCF_H = 0x909 + SYS___FDIMF_H = 0x910 + SYS___FDIML_H = 0x911 + SYS___FMOD_H = 0x912 + SYS___FMODF_H = 0x913 + SYS___FMODL_H = 0x914 + SYS___GAMMA_H = 0x915 + SYS___HYPOT_H = 0x916 + SYS___ILOGB_H = 0x917 + SYS___LGAMMA_H = 0x918 + SYS___LGAMMAF_H = 0x919 + SYS___LOG2L_H = 0x920 + SYS___LOG1P_H = 0x921 + SYS___LOG10_H = 0x922 + SYS___LOG10F_H = 0x923 + SYS___LOG10L_H = 0x924 + SYS___LROUND_H = 0x925 + SYS___LROUNDF_H = 0x926 + SYS___NEXTAFTER_H = 0x927 + SYS___POW_H = 0x928 + SYS___POWF_H = 0x929 + SYS___SINL_H = 0x930 + SYS___SINH_H = 0x931 + SYS___SINHF_H = 0x932 + SYS___SINHL_H = 0x933 + SYS___SQRT_H = 0x934 + SYS___SQRTF_H = 0x935 + SYS___SQRTL_H = 0x936 + SYS___TAN_H = 0x937 + SYS___TANF_H = 0x938 + SYS___TANL_H = 0x939 + SYS___TRUNCF_H = 0x940 + SYS___TRUNCL_H = 0x941 + SYS___COSH_H = 0x942 + SYS___LE_DEBUG_SET_RESUME_MCH = 0x943 + SYS_VFSCANF = 0x944 + SYS_VSCANF = 0x946 + SYS_VSSCANF = 0x948 + SYS_IMAXABS = 0x950 + SYS_IMAXDIV = 0x951 + SYS_STRTOIMAX = 0x952 + SYS_STRTOUMAX = 0x953 + SYS_WCSTOIMAX = 0x954 + SYS_WCSTOUMAX = 0x955 + SYS_ATOLL = 0x956 + SYS_STRTOF = 0x957 + SYS_STRTOLD = 0x958 + SYS_WCSTOF = 0x959 + SYS_INET6_RTH_GETADDR = 0x960 + SYS_INET6_OPT_INIT = 0x961 + SYS_INET6_OPT_APPEND = 0x962 + SYS_INET6_OPT_FINISH = 0x963 + SYS_INET6_OPT_SET_VAL = 0x964 + SYS_INET6_OPT_NEXT = 0x965 + SYS_INET6_OPT_FIND = 0x966 + SYS_INET6_OPT_GET_VAL = 0x967 + SYS___POW_I = 0x987 + SYS___POW_I_B = 0x988 + SYS___POW_I_H = 0x989 + SYS___CABS_H = 0x990 + SYS_CABSF = 0x991 + SYS___CABSF_B = 0x992 + SYS___CABSF_H = 0x993 + SYS_CABSL = 0x994 + SYS___CABSL_B = 0x995 + SYS___CABSL_H = 0x996 + SYS_CACOS = 0x997 + SYS___CACOS_B = 0x998 + SYS___CACOS_H = 0x999 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go index 295859c50..7a8161c1d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -1,6 +1,7 @@ // cgo -godefs types_aix.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc && aix // +build ppc,aix package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go index a9ee0ffd4..07ed733c5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -1,6 +1,7 @@ // cgo -godefs types_aix.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && aix // +build ppc64,aix package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index 725b4bee2..54db43335 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && darwin // +build 386,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 080ffce32..eb73e52fb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && darwin // +build amd64,darwin package unix @@ -210,6 +211,13 @@ type RawSockaddrCtl struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + type Linger struct { Onoff int32 Linger int32 @@ -273,6 +281,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 + SizeofXucred = 0x4c SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index f2a77bc4e..8606d654e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && darwin // +build arm,darwin package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index c9492428b..dcb51f840 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs types_darwin.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && darwin // +build arm64,darwin package unix @@ -210,6 +211,13 @@ type RawSockaddrCtl struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + type Linger struct { Onoff int32 Linger int32 @@ -273,6 +281,7 @@ const ( SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x14 SizeofSockaddrCtl = 0x20 + SizeofXucred = 0x4c SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 85506a05d..1d049d7a1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_dragonfly.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && dragonfly // +build amd64,dragonfly package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 3e9dad33e..c51bc88ff 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && freebsd // +build 386,freebsd package unix @@ -250,6 +251,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -312,6 +321,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index e00e61554..395b69187 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && freebsd // +build amd64,freebsd package unix @@ -246,6 +247,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -308,6 +317,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 5da13c871..d3f9d2541 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && freebsd // +build arm,freebsd package unix @@ -248,6 +249,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -310,6 +319,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 995ecf9d4..434d6e8e8 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && freebsd // +build arm64,freebsd package unix @@ -246,6 +247,14 @@ type RawSockaddrAny struct { type _Socklen uint32 +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + type Linger struct { Onoff int32 Linger int32 @@ -308,6 +317,7 @@ const ( SizeofSockaddrAny = 0x6c SizeofSockaddrUnix = 0x6a SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go new file mode 100644 index 000000000..1137a5a1f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_illumos_amd64.go @@ -0,0 +1,40 @@ +// cgo -godefs types_illumos.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && illumos +// +build amd64,illumos + +package unix + +const ( + TUNNEWPPA = 0x540001 + TUNSETPPA = 0x540002 + + I_STR = 0x5308 + I_POP = 0x5303 + I_PUSH = 0x5302 + I_PLINK = 0x5316 + I_PUNLINK = 0x5317 + + IF_UNITSEL = -0x7ffb8cca +) + +type strbuf struct { + Maxlen int32 + Len int32 + Buf *int8 +} + +type strioctl struct { + Cmd int32 + Timout int32 + Len int32 + Dp *int8 +} + +type lifreq struct { + Name [32]int8 + Lifru1 [4]byte + Type uint32 + Lifru [336]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 9f3b1a4e5..c769e73cd 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1,5 +1,6 @@ // Code generated by mkmerge.go; DO NOT EDIT. +//go:build linux // +build linux package unix @@ -83,7 +84,7 @@ type FileCloneRange struct { Dest_offset uint64 } -type FileDedupeRange struct { +type RawFileDedupeRange struct { Src_offset uint64 Src_length uint64 Dest_count uint16 @@ -91,6 +92,21 @@ type FileDedupeRange struct { Reserved2 uint32 } +type RawFileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + +const ( + SizeofRawFileDedupeRange = 0x18 + SizeofRawFileDedupeRangeInfo = 0x20 + FILE_DEDUPE_RANGE_SAME = 0x0 + FILE_DEDUPE_RANGE_DIFFERS = 0x1 +) + type FscryptPolicy struct { Version uint8 Contents_encryption_mode uint8 @@ -288,7 +304,8 @@ type RawSockaddrVM struct { Reserved1 uint16 Port uint32 Cid uint32 - Zero [4]uint8 + Flags uint8 + Zero [3]uint8 } type RawSockaddrXDP struct { @@ -999,7 +1016,7 @@ const ( PERF_SAMPLE_PHYS_ADDR = 0x80000 PERF_SAMPLE_AUX = 0x100000 PERF_SAMPLE_CGROUP = 0x200000 - PERF_SAMPLE_MAX = 0x400000 + PERF_SAMPLE_MAX = 0x1000000 PERF_SAMPLE_BRANCH_USER_SHIFT = 0x0 PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 0x1 PERF_SAMPLE_BRANCH_HV_SHIFT = 0x2 @@ -3680,3 +3697,26 @@ const ( ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 0x2 ETHTOOL_A_TUNNEL_INFO_MAX = 0x2 ) + +type ( + HIDRawReportDescriptor struct { + Size uint32 + Value [4096]uint8 + } + HIDRawDevInfo struct { + Bustype uint32 + Vendor int16 + Product int16 + } +) + +const ( + CLOSE_RANGE_UNSHARE = 0x2 + CLOSE_RANGE_CLOEXEC = 0x4 +) + +const ( + NLMSGERR_ATTR_MSG = 0x1 + NLMSGERR_ATTR_OFFS = 0x2 + NLMSGERR_ATTR_COOKIE = 0x3 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 088bd77e3..4d4d283de 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && linux // +build 386,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 078d958ec..8a2eed5ec 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && linux // +build amd64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 2d39122f4..94b34add6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && linux // +build arm,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 304cbd045..2143de4d5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && linux // +build arm64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 7d9d57006..a40216eee 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips && linux // +build mips,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index a1eb2577b..e834b069f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && linux // +build mips64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 2e5ce3b6a..e31083b04 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64le && linux // +build mips64le,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index bbaa1200b..42811f7fb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mipsle && linux // +build mipsle,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 0e6e8a774..2a3afbaef 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64 && linux // +build ppc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 7382f385f..c0de30a65 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build ppc64le && linux // +build ppc64le,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 28d552216..74faf2e91 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build riscv64 && linux // +build riscv64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index a91a7a44b..9a8f0c2c6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build s390x && linux // +build s390x,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index f824b2358..72cdda75b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build sparc64 && linux // +build sparc64,linux package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index 3f11f88e3..b10e73abf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && netbsd // +build 386,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 0bed83af5..28ed6d55a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && netbsd // +build amd64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index e4e3bf736..4ba196ebe 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && netbsd // +build arm,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index efac861bb..dd642bd9c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs types_netbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && netbsd // +build arm64,netbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 80fa295f1..1fdb0e5fa 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -1,6 +1,7 @@ // cgo -godefs types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build 386 && openbsd // +build 386,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 560dd6d08..e2fc93c7c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && openbsd // +build amd64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index 0c1700fa4..8d34b5a2f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm && openbsd // +build arm,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index 5b3e46633..ea8f1a0d9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build arm64 && openbsd // +build arm64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index 62bff1670..ec6e8bc3f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -1,6 +1,7 @@ // cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build mips64 && openbsd // +build mips64,openbsd package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index ca512aff7..85effef9c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -1,6 +1,7 @@ // cgo -godefs types_solaris.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. +//go:build amd64 && solaris // +build amd64,solaris package unix diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go new file mode 100644 index 000000000..8bffde78e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -0,0 +1,402 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x +// +build zos,s390x + +// Hand edited based on ztypes_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +const ( + SizeofSockaddrAny = 128 + SizeofCmsghdr = 12 + SizeofIPMreq = 8 + SizeofIPv6Mreq = 20 + SizeofICMPv6Filter = 32 + SizeofIPv6MTUInfo = 32 + SizeofLinger = 8 + SizeofSockaddrInet4 = 16 + SizeofSockaddrInet6 = 28 + SizeofTCPInfo = 0x68 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type timeval_zos struct { //correct (with padding and all) + Sec int64 + _ [4]byte // pad + Usec int32 +} + +type Tms struct { //clock_t is 4-byte unsigned int in zos + Utime uint32 + Stime uint32 + Cutime uint32 + Cstime uint32 +} + +type Time_t int64 + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [108]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + _ [112]uint8 // pad +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Iov *Iovec + Control *byte + Flags int32 + Namelen int32 + Iovlen int32 + Controllen int32 +} + +type Cmsghdr struct { + Len int32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Addr [4]byte /* in_addr */ + Ifindex uint32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type _Gid_t uint32 + +type rusage_zos struct { + Utime timeval_zos + Stime timeval_zos +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +// { int, short, short } in poll.h +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +type Stat_t struct { //Linux Definition + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type Stat_LE_t struct { + _ [4]byte // eye catcher + Length uint16 + Version uint16 + Mode int32 + Ino uint32 + Dev uint32 + Nlink int32 + Uid int32 + Gid int32 + Size int64 + Atim31 [4]byte + Mtim31 [4]byte + Ctim31 [4]byte + Rdev uint32 + Auditoraudit uint32 + Useraudit uint32 + Blksize int32 + Creatim31 [4]byte + AuditID [16]byte + _ [4]byte // rsrvd1 + File_tag struct { + Ccsid uint16 + Txtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14 + } + CharsetID [8]byte + Blocks int64 + Genvalue uint32 + Reftim31 [4]byte + Fid [8]byte + Filefmt byte + Fspflag2 byte + _ [2]byte // rsrvd2 + Ctimemsec int32 + Seclabel [8]byte + _ [4]byte // rsrvd3 + _ [4]byte // rsrvd4 + Atim Time_t + Mtim Time_t + Ctim Time_t + Creatim Time_t + Reftim Time_t + _ [24]byte // rsrvd5 +} + +type Statvfs_t struct { + ID [4]byte + Len int32 + Bsize uint64 + Blocks uint64 + Usedspace uint64 + Bavail uint64 + Flag uint64 + Maxfilesize int64 + _ [16]byte + Frsize uint64 + Bfree uint64 + Files uint32 + Ffree uint32 + Favail uint32 + Namemax31 uint32 + Invarsec uint32 + _ [4]byte + Fsid uint64 + Namemax uint64 +} + +type Statfs_t struct { + Type uint32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint32 + Ffree uint32 + Fsid uint64 + Namelen uint64 + Frsize uint64 + Flags uint64 +} + +type Dirent struct { + Reclen uint16 + Namlen uint16 + Ino uint32 + Extra uintptr + Name [256]byte +} + +// This struct is packed on z/OS so it can't be used directly. +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type Termios struct { + Cflag uint32 + Iflag uint32 + Lflag uint32 + Oflag uint32 + Cc [11]uint8 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type W_Mnth struct { + Hid [4]byte + Size int32 + Cur1 int32 //32bit pointer + Cur2 int32 //^ + Devno uint32 + _ [4]byte +} + +type W_Mntent struct { + Fstype uint32 + Mode uint32 + Dev uint32 + Parentdev uint32 + Rootino uint32 + Status byte + Ddname [9]byte + Fstname [9]byte + Fsname [45]byte + Pathlen uint32 + Mountpoint [1024]byte + Jobname [8]byte + PID int32 + Parmoffset int32 + Parmlen int16 + Owner [8]byte + Quiesceowner [8]byte + _ [38]byte +} diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go index 3606c3a8b..9eb1fb633 100644 --- a/vendor/golang.org/x/sys/windows/exec_windows.go +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -6,6 +6,11 @@ package windows +import ( + errorspkg "errors" + "unsafe" +) + // EscapeArg rewrites command line argument s as prescribed // in http://msdn.microsoft.com/en-us/library/ms880421. // This function returns "" (2 double quotes) if s is empty. @@ -95,3 +100,33 @@ func FullPath(name string) (path string, err error) { } } } + +// NewProcThreadAttributeList allocates a new ProcThreadAttributeList, with the requested maximum number of attributes. +func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, error) { + var size uintptr + err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size) + if err != ERROR_INSUFFICIENT_BUFFER { + if err == nil { + return nil, errorspkg.New("unable to query buffer size from InitializeProcThreadAttributeList") + } + return nil, err + } + const psize = unsafe.Sizeof(uintptr(0)) + // size is guaranteed to be ≥1 by InitializeProcThreadAttributeList. + al := (*ProcThreadAttributeList)(unsafe.Pointer(&make([]unsafe.Pointer, (size+psize-1)/psize)[0])) + err = initializeProcThreadAttributeList(al, maxAttrCount, 0, &size) + if err != nil { + return nil, err + } + return al, err +} + +// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute. +func (al *ProcThreadAttributeList) Update(attribute uintptr, flags uint32, value unsafe.Pointer, size uintptr, prevValue unsafe.Pointer, returnedSize *uintptr) error { + return updateProcThreadAttribute(al, flags, attribute, value, size, prevValue, returnedSize) +} + +// Delete frees ProcThreadAttributeList's resources. +func (al *ProcThreadAttributeList) Delete() { + deleteProcThreadAttributeList(al) +} diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash index 2163843a1..58e0188fb 100644 --- a/vendor/golang.org/x/sys/windows/mkerrors.bash +++ b/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -9,6 +9,8 @@ shopt -s nullglob winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" [[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } +ntstatus="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)" +[[ -n $ntstatus ]] || { echo "Unable to find ntstatus.h" >&2; exit 1; } declare -A errors @@ -59,5 +61,10 @@ declare -A errors echo "$key $vtype = $value" done < "$winerror" + while read -r line; do + [[ $line =~ ^#define\ (STATUS_[^\s]+)\ +\(\(NTSTATUS\)((0x)?[0-9a-fA-F]+)L?\) ]] || continue + echo "${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}" + done < "$ntstatus" + echo ")" } | gofmt > "zerrors_windows.go" diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 69eb462c5..0e428ecbb 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -908,6 +908,19 @@ type SECURITY_DESCRIPTOR struct { dacl *ACL } +type SECURITY_QUALITY_OF_SERVICE struct { + Length uint32 + ImpersonationLevel uint32 + ContextTrackingMode byte + EffectiveOnly byte +} + +// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE. +const ( + SECURITY_STATIC_TRACKING = 0 + SECURITY_DYNAMIC_TRACKING = 1 +) + type SecurityAttributes struct { Length uint32 SecurityDescriptor *SECURITY_DESCRIPTOR diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 0197df872..bb6aaf89e 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -8,6 +8,8 @@ package windows import ( errorspkg "errors" + "fmt" + "runtime" "sync" "syscall" "time" @@ -65,9 +67,8 @@ const ( LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 - // Return values of SleepEx and other APC functions - STATUS_USER_APC = 0x000000C0 - WAIT_IO_COMPLETION = STATUS_USER_APC + // Return value of SleepEx and other APC functions + WAIT_IO_COMPLETION = 0x000000C0 ) // StringToUTF16 is deprecated. Use UTF16FromString instead. @@ -180,6 +181,11 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process //sys IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2? //sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW +//sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) +//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) +//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW +//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState //sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) @@ -208,12 +214,15 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetSystemTimeAsFileTime(time *Filetime) //sys GetSystemTimePreciseAsFileTime(time *Filetime) //sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] -//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) -//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) -//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) +//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) +//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) +//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) //sys CancelIo(s Handle) (err error) //sys CancelIoEx(s Handle, o *Overlapped) (err error) //sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList +//sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList +//sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute //sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) //sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW //sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId @@ -248,13 +257,14 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW //sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW //sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] +//sys LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) //sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) //sys FlushFileBuffers(handle Handle) (err error) //sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW //sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW //sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW //sys GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW -//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW +//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW //sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) //sys UnmapViewOfFile(addr uintptr) (err error) //sys FlushViewOfFile(addr uintptr, length uintptr) (err error) @@ -283,6 +293,9 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy //sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW //sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension +//sys CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore +//sys CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore +//sys CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey //sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject //sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject //sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData @@ -312,14 +325,14 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW //sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW //sys GetCurrentThreadId() (id uint32) -//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW -//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateEventExW +//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW +//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW //sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW //sys SetEvent(event Handle) (err error) = kernel32.SetEvent //sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent //sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent -//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) = kernel32.CreateMutexW -//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateMutexExW +//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW +//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW //sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW //sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex //sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx @@ -334,10 +347,13 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) //sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) //sys GetProcessId(process Handle) (id uint32, err error) +//sys QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW //sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) //sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost //sys GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) //sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) +//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) // Volume Management Functions //sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW @@ -367,16 +383,36 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2 //sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid //sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree -//sys rtlGetVersion(info *OsVersionInfoEx) (ret error) = ntdll.RtlGetVersion -//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers +//sys CoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx +//sys CoUninitialize() = ole32.CoUninitialize +//sys CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject //sys getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages //sys getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages //sys getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages //sys getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages +//sys findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW +//sys SizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource +//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource +//sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource // Process Status API (PSAPI) //sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses +// NT Native APIs +//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb +//sys rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion +//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers +//sys RtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb +//sys RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString +//sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString +//sys NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile +//sys NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile +//sys RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus +//sys RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus +//sys RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl +//sys NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess +//sys NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess + // syscall interface implementation for other packages // GetCurrentProcess returns the handle for the current process. @@ -770,6 +806,7 @@ const socket_error = uintptr(^uint32(0)) //sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend //sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom //sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo +//sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW //sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname //sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname //sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs @@ -783,6 +820,7 @@ const socket_error = uintptr(^uint32(0)) //sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo //sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes //sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW +//sys WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult //sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses //sys GetACP() (acp uint32) = kernel32.GetACP //sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar @@ -1505,3 +1543,129 @@ func getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf func SetConsoleCursorPosition(console Handle, position Coord) error { return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position)))) } + +func (s NTStatus) Errno() syscall.Errno { + return rtlNtStatusToDosErrorNoTeb(s) +} + +func langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) } + +func (s NTStatus) Error() string { + b := make([]uint16, 300) + n, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil) + if err != nil { + return fmt.Sprintf("NTSTATUS 0x%08x", uint32(s)) + } + // trim terminating \r and \n + for ; n > 0 && (b[n-1] == '\n' || b[n-1] == '\r'); n-- { + } + return string(utf16.Decode(b[:n])) +} + +// NewNTUnicodeString returns a new NTUnicodeString structure for use with native +// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs +// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for +// the more common *uint16 string type. +func NewNTUnicodeString(s string) (*NTUnicodeString, error) { + var u NTUnicodeString + s16, err := UTF16PtrFromString(s) + if err != nil { + return nil, err + } + RtlInitUnicodeString(&u, s16) + return &u, nil +} + +// Slice returns a uint16 slice that aliases the data in the NTUnicodeString. +func (s *NTUnicodeString) Slice() []uint16 { + var slice []uint16 + hdr := (*unsafeheader.Slice)(unsafe.Pointer(&slice)) + hdr.Data = unsafe.Pointer(s.Buffer) + hdr.Len = int(s.Length) + hdr.Cap = int(s.MaximumLength) + return slice +} + +func (s *NTUnicodeString) String() string { + return UTF16ToString(s.Slice()) +} + +// NewNTString returns a new NTString structure for use with native +// NT APIs that work over the NTString type. Note that most Windows APIs +// do not use NTString, and instead UTF16PtrFromString should be used for +// the more common *uint16 string type. +func NewNTString(s string) (*NTString, error) { + var nts NTString + s8, err := BytePtrFromString(s) + if err != nil { + return nil, err + } + RtlInitString(&nts, s8) + return &nts, nil +} + +// Slice returns a byte slice that aliases the data in the NTString. +func (s *NTString) Slice() []byte { + var slice []byte + hdr := (*unsafeheader.Slice)(unsafe.Pointer(&slice)) + hdr.Data = unsafe.Pointer(s.Buffer) + hdr.Len = int(s.Length) + hdr.Cap = int(s.MaximumLength) + return slice +} + +func (s *NTString) String() string { + return ByteSliceToString(s.Slice()) +} + +// FindResource resolves a resource of the given name and resource type. +func FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) { + var namePtr, resTypePtr uintptr + var name16, resType16 *uint16 + var err error + resolvePtr := func(i interface{}, keep **uint16) (uintptr, error) { + switch v := i.(type) { + case string: + *keep, err = UTF16PtrFromString(v) + if err != nil { + return 0, err + } + return uintptr(unsafe.Pointer(*keep)), nil + case ResourceID: + return uintptr(v), nil + } + return 0, errorspkg.New("parameter must be a ResourceID or a string") + } + namePtr, err = resolvePtr(name, &name16) + if err != nil { + return 0, err + } + resTypePtr, err = resolvePtr(resType, &resType16) + if err != nil { + return 0, err + } + resInfo, err := findResource(module, namePtr, resTypePtr) + runtime.KeepAlive(name16) + runtime.KeepAlive(resType16) + return resInfo, err +} + +func LoadResourceData(module, resInfo Handle) (data []byte, err error) { + size, err := SizeofResource(module, resInfo) + if err != nil { + return + } + resData, err := LoadResource(module, resInfo) + if err != nil { + return + } + ptr, err := LockResource(resData) + if err != nil { + return + } + h := (*unsafeheader.Slice)(unsafe.Pointer(&data)) + h.Data = unsafe.Pointer(ptr) + h.Len = int(size) + h.Cap = int(size) + return +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index fd4260762..23fe18ece 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -10,6 +10,10 @@ import ( "unsafe" ) +// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and +// other native functions. +type NTStatus uint32 + const ( // Invented values to support what package os expects. O_RDONLY = 0x00000 @@ -215,6 +219,18 @@ const ( INHERIT_PARENT_AFFINITY = 0x00010000 ) +const ( + // attributes for ProcThreadAttributeList + PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000 + PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002 + PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003 + PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004 + PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005 + PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 + PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 + PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b +) + const ( // flags for CreateToolhelp32Snapshot TH32CS_SNAPHEAPLIST = 0x01 @@ -287,6 +303,23 @@ const ( PKCS12_NO_PERSIST_KEY = 0x00008000 PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 + /* Flags for CryptAcquireCertificatePrivateKey */ + CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001 + CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002 + CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004 + CRYPT_ACQUIRE_NO_HEALING = 0x00000008 + CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040 + CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080 + CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000 + CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000 + CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000 + CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000 + + /* pdwKeySpec for CryptAcquireCertificatePrivateKey */ + AT_KEYEXCHANGE = 1 + AT_SIGNATURE = 2 + CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF + /* Default usage match type is AND with value zero */ USAGE_MATCH_TYPE_AND = 0 USAGE_MATCH_TYPE_OR = 1 @@ -412,6 +445,89 @@ const ( CERT_TRUST_IS_CA_TRUSTED = 0x00004000 CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + /* Certificate Information Flags */ + CERT_INFO_VERSION_FLAG = 1 + CERT_INFO_SERIAL_NUMBER_FLAG = 2 + CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 + CERT_INFO_ISSUER_FLAG = 4 + CERT_INFO_NOT_BEFORE_FLAG = 5 + CERT_INFO_NOT_AFTER_FLAG = 6 + CERT_INFO_SUBJECT_FLAG = 7 + CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 + CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 + CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 + CERT_INFO_EXTENSION_FLAG = 11 + + /* dwFindType for CertFindCertificateInStore */ + CERT_COMPARE_MASK = 0xFFFF + CERT_COMPARE_SHIFT = 16 + CERT_COMPARE_ANY = 0 + CERT_COMPARE_SHA1_HASH = 1 + CERT_COMPARE_NAME = 2 + CERT_COMPARE_ATTR = 3 + CERT_COMPARE_MD5_HASH = 4 + CERT_COMPARE_PROPERTY = 5 + CERT_COMPARE_PUBLIC_KEY = 6 + CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH + CERT_COMPARE_NAME_STR_A = 7 + CERT_COMPARE_NAME_STR_W = 8 + CERT_COMPARE_KEY_SPEC = 9 + CERT_COMPARE_ENHKEY_USAGE = 10 + CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE + CERT_COMPARE_SUBJECT_CERT = 11 + CERT_COMPARE_ISSUER_OF = 12 + CERT_COMPARE_EXISTING = 13 + CERT_COMPARE_SIGNATURE_HASH = 14 + CERT_COMPARE_KEY_IDENTIFIER = 15 + CERT_COMPARE_CERT_ID = 16 + CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 + CERT_COMPARE_PUBKEY_MD5_HASH = 18 + CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 + CERT_COMPARE_HASH_STR = 20 + CERT_COMPARE_HAS_PRIVATE_KEY = 21 + CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) + CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) + CERT_FIND_HASH = CERT_FIND_SHA1_HASH + CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) + CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) + CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME< - The amazon-chroot Packer builder is able to create Amazon AMIs backed by an - EBS - - volume as the root device. For more information on the difference between - - instance storage and EBS-backed instances, storage for the root device section - - in the EC2 documentation. -page_title: Amazon chroot - Builders -sidebar_title: chroot ---- - -# AMI Builder (chroot) - -Type: `amazon-chroot` -Artifact BuilderId: `mitchellh.amazon.chroot` - -The `amazon-chroot` Packer builder is able to create Amazon AMIs backed by an -EBS volume as the root device. For more information on the difference between -instance storage and EBS-backed instances, see the ["storage for the root -device" section in the EC2 -documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device). - -The difference between this builder and the `amazon-ebs` builder is that this -builder is able to build an EBS-backed AMI without launching a new EC2 -instance. This can dramatically speed up AMI builds for organizations who need -the extra fast build. - -~> **This is an advanced builder** If you're just getting started with -Packer, we recommend starting with the [amazon-ebs -builder](/docs/builders/amazon-ebs), which is much easier to use. - -The builder does _not_ manage AMIs. Once it creates an AMI and stores it in -your account, it is up to you to use, delete, etc., the AMI. - -### How Does it Work? - -This builder works by creating a new EBS volume from an existing source AMI and -attaching it into an already-running EC2 instance. Once attached, a -[chroot](https://en.wikipedia.org/wiki/Chroot) is used to provision the system -within that volume. After provisioning, the volume is detached, snapshotted, -and an AMI is made. - -Using this process, minutes can be shaved off the AMI creation process because -a new EC2 instance doesn't need to be launched. - -There are some restrictions, however. The host EC2 instance where the volume is -attached to must be a similar system (generally the same OS version, kernel -versions, etc.) as the AMI being built. Additionally, this process is much more -expensive because the EC2 instance must be kept running persistently in order -to build AMIs, whereas the other AMI builders start instances on-demand to -build AMIs as needed. - -## Chroot Specific Configuration Reference - -There are many configuration options available for the builder. In addition to -the items listed here, you will want to look at the general configuration -references for [AMI](#ami-configuration), -[BlockDevices](#block-devices-configuration) and -[Access](#access-config-configuration) configuration references, which are -necessary for this build to succeed and can be found further down the page. - -#### Required: - -@include 'builder/amazon/chroot/Config-required.mdx' - -#### Optional: - -@include 'builder/amazon/chroot/Config-not-required.mdx' - -## General Common Configuration Reference - -Following will be a set of fields that are also settable for other aws -builders. - -### AMI Configuration - -#### Required: - -@include 'builder/amazon/common/AMIConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AMIConfig-not-required.mdx' - -@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' - -### Block Devices Configuration - -Block devices can be nested in the -[ami_block_device_mappings](#ami_block_device_mappings) array. - -@include 'builder/amazon/common/BlockDevice.mdx' - -#### Optional: - -@include 'builder/amazon/common/BlockDevice-not-required.mdx' - -### Access Config Configuration - -#### Required: - -@include 'builder/amazon/common/AccessConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AccessConfig-not-required.mdx' - -### Assume Role Configuration - -@include 'builder/amazon/common/AssumeRoleConfig.mdx' - -@include 'builder/amazon/common/AssumeRoleConfig-not-required.mdx' - -### Polling Configuration - -@include 'builder/amazon/common/AWSPollingConfig.mdx' - -@include 'builder/amazon/common/AWSPollingConfig-not-required.mdx' - -## Basic Example - -Here is a basic example. It is completely valid except for the access keys: - - - - -```hcl -// To make Packer read these variables from the environment into the var object, -// set the environment variables to have the same name as the declared -// variables, with the prefix PKR_VAR_. - -// There are other ways to [set variables](/docs/templates/hcl_templates/variables#assigning-values-to-build-variables), including from a var -// file or as a command argument. - -// export PKR_VAR_aws_access_key=$YOURKEY -variable "aws_access_key" { - type = string - // default = "hardcoded_key" // Not recommended ! -} - -// export PKR_VAR_aws_secret_key=$YOURSECRETKEY -variable "aws_secret_key" { - type = string - // default = "hardcoded_secret_key" // Not recommended ! -} - -source "amazon-chroot" "basic-example" { - access_key = var.aws_access_key - secret_key = var.aws_secret_key - ami_name = "example-chroot" - source_ami = "ami-e81d5881" -} - -build { - sources = [ - "source.amazon-chroot.basic-example" - ] -} -``` - - - - -```json -{ - "type": "amazon-chroot", - "access_key": "YOUR KEY HERE", - "secret_key": "YOUR SECRET KEY HERE", - "source_ami": "ami-e81d5881", - "ami_name": "packer-amazon-chroot {{timestamp}}" -} -``` - - - - -## Chroot Mounts - -The `chroot_mounts` configuration can be used to mount specific devices within -the chroot. By default, the following additional mounts are added into the -chroot by Packer: - -- `/proc` (proc) -- `/sys` (sysfs) -- `/dev` (bind to real `/dev`) -- `/dev/pts` (devpts) -- `/proc/sys/fs/binfmt_misc` (binfmt_misc) - -These default mounts are usually good enough for anyone and are reasonable -defaults. However, if you want to change or add the mount points, you may using -the `chroot_mounts` configuration. Here is an example configuration which only -mounts `/proc` and `/dev`: - - - - -```hcl -source "amazon-chroot" "basic-example" { - // ... other builder options - chroot_mounts = [ - ["proc", "proc", "/proc"], - ["bind", "/dev", "/dev"] - ] -} -``` - - - - -```json -... -"builders": [{ - "type": "amazon-chroot" - ... - "chroot_mounts": [ - ["proc", "proc", "/proc"], - ["bind", "/dev", "/dev"] - ] -}] -``` - - - - -`chroot_mounts` is a list of a 3-tuples of strings. The three components of the -3-tuple, in order, are: - -- The filesystem type. If this is "bind", then Packer will properly bind the - filesystem to another mount point. - -- The source device. - -- The mount directory. - -## Parallelism - -A quick note on parallelism: it is perfectly safe to run multiple _separate_ -Packer processes with the `amazon-chroot` builder on the same EC2 instance. In -fact, this is recommended as a way to push the most performance out of your AMI -builds. - -Packer properly obtains a process lock for the parallelism-sensitive parts of -its internals such as finding an available device. - -## Gotchas - -### Unmounting the Filesystem - -One of the difficulties with using the chroot builder is that your provisioning -scripts must not leave any processes running or packer will be unable to -unmount the filesystem. - -For debian based distributions you can setup a -[policy-rc.d](http://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt) -file which will prevent packages installed by your provisioners from starting -services: - - - - -```hcl -// ... -build { - sources = [ - "source.amazon-chroot.basic-example" - ] - - // Set policy - provisioner "shell" { - inline = [ - "echo '#!/bin/sh' > /usr/sbin/policy-rc.d", - "echo 'exit 101' >> /usr/sbin/policy-rc.d", - "chmod a+x /usr/sbin/policy-rc.d" - ] - } - - // Un-set policy - provisioner "shell" { - inline = ["rm -f /usr/sbin/policy-rc.d"] - } -} -``` - - - - -```json -"provisioners": [ - { - "type": "shell", - "inline": [ - "echo '#!/bin/sh' > /usr/sbin/policy-rc.d", - "echo 'exit 101' >> /usr/sbin/policy-rc.d", - "chmod a+x /usr/sbin/policy-rc.d" - ] - }, - { - "type": "shell", - "inline": ["rm -f /usr/sbin/policy-rc.d"] - } -] -``` - - - - -### Ansible provisioner - -Running ansible against `amazon-chroot` requires changing the Ansible -connection to chroot and running Ansible as root/sudo. - -### Using Instances with NVMe block devices. - -In C5, C5d, M5, and i3.metal instances, EBS volumes are exposed as NVMe block -devices -[reference](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html). -In order to correctly mount these devices, you have to do some extra legwork, -involving the `nvme_device_path` option above. Read that for more information. - -A working example for mounting an NVMe device is below: - - - - -```hcl -// export PKR_VAR_aws_access_key=$YOURKEY -variable "aws_access_key" { - type = string -} - -// export PKR_VAR_aws_secret_key=$YOURSECRETKEY -variable "aws_secret_key" { - type = string -} - -data "amazon-ami" "example" { - filters = { - virtualization-type = "hvm" - name = "amzn-ami-hvm-*" - root-device-type = "ebs" - } - owners = ["137112412989"] - most_recent = true - - # Access Configuration - region = "us-east-1" - access_key = var.aws_access_key - secret_key = var.aws_secret_key -} - -source "amazon-chroot" "basic-example" { - access_key = var.aws_access_key - secret_key = var.aws_secret_key - region = "us-east-1" - source_ami = data.amazon-ami.example.id - ena_support = true - ami_name = "amazon-chroot-test-{{timestamp}}" - nvme_device_path = "/dev/nvme1n1p" - device_path = "/dev/sdf" -} - -build { - sources = [ - "source.amazon-chroot.basic-example" - ] - - provisioner "shell" { - inline = ["echo Test > /tmp/test.txt"] - } -} -``` - - - - -```json -{ - "variables": { - "region": "us-east-2" - }, - "builders": [ - { - "type": "amazon-chroot", - "region": "{{user `region`}}", - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "amzn-ami-hvm-*", - "root-device-type": "ebs" - }, - "owners": ["137112412989"], - "most_recent": true - }, - "ena_support": true, - "ami_name": "amazon-chroot-test-{{timestamp}}", - "nvme_device_path": "/dev/nvme1n1p", - "device_path": "/dev/sdf" - } - ], - - "provisioners": [ - { - "type": "shell", - "inline": ["echo Test > /tmp/test.txt"] - } - ] -} -``` - - - - -Note that in the `nvme_device_path` you must end with the `p`; if you try to -define the partition in this path (e.g. `nvme_device_path`: `/dev/nvme1n1p1`) -and haven't also set the `"mount_partition": 0`, a `1` will be appended to the -`nvme_device_path` and Packer will fail. - -## Building From Scratch - -This example demonstrates the essentials of building an image from scratch. A -15G gp2 (SSD) device is created (overriding the default of standard/magnetic). -The device setup commands partition the device with one partition for use as an -HVM image and format it ext4. This builder block should be followed by -provisioning commands to install the os and bootloader. - - - - -```hcl -// This example assumes that AWS_SECRET_ACCESS_KEY and AWS_ACCESS_KEY_ID are -// set in your environment, or a ~/.aws/credentials file is configured. -source "amazon-chroot" "basic-example" { - region = "us-east-1" - ami_name = "packer-from-scratch {{timestamp}}" - from_scratch = true - ami_virtualization_type = "hvm" - pre_mount_commands = [ - "parted {{.Device}} mklabel msdos mkpart primary 1M 100% set 1 boot on print", - "mkfs.ext4 {{.Device}}1" - ] - root_volume_size = 15 - root_device_name = "xvda" - ami_block_device_mappings { - device_name = "xvda" - delete_on_termination = true - volume_type = "gp2" - } - -} - -build { - sources = [ - "source.amazon-chroot.basic-example" - ] - - provisioner "shell" { - inline = [ - "echo '#!/bin/sh' > /usr/sbin/policy-rc.d", - "echo 'exit 101' >> /usr/sbin/policy-rc.d", - "chmod a+x /usr/sbin/policy-rc.d" - ] - } - - provisioner "shell" { - inline = ["rm -f /usr/sbin/policy-rc.d"] - } -} -``` - - - - -```json -{ - "type": "amazon-chroot", - "ami_name": "packer-from-scratch {{timestamp}}", - "from_scratch": true, - "ami_virtualization_type": "hvm", - "pre_mount_commands": [ - "parted {{.Device}} mklabel msdos mkpart primary 1M 100% set 1 boot on print", - "mkfs.ext4 {{.Device}}1" - ], - "root_volume_size": 15, - "root_device_name": "xvda", - "ami_block_device_mappings": [ - { - "device_name": "xvda", - "delete_on_termination": true, - "volume_type": "gp2" - } - ] -} -``` - - - - -## Build template data - -In configuration directives marked as a template engine above, the following -variables are available: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). -- `SourceAMITags` - The source AMI Tags, as a `map[string]string` object. - -## Build Shared Information Variables - -This builder generates data that are shared with provisioner and post-processor via build function of [template engine](/docs/templates/legacy_json_templates/engine) for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - -The generated variables available for this builder are: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). -- `Device` - Root device path. -- `MountPath` - Device mounting path. - -Usage example: - - - - -```hcl -// When accessing one of these variables from inside the builder, you need to -// use the golang templating syntax. This is due to an architectural quirk that -// won't be easily resolvable until legacy json templates are deprecated: - -{ -source "amazon-ebs" "basic-example" { - tags = { - OS_Version = "Ubuntu" - Release = "Latest" - Base_AMI_ID = "{{ .SourceAMI }}" - Base_AMI_Name = "{{ .SourceAMIName }}" - } -} - -// when accessing one of the variables from a provisioner or post-processor, use -// hcl-syntax -post-processor "manifest" { - output = "manifest.json" - strip_path = true - custom_data = { - source_ami_name = "${build.SourceAMIName}" - device = "${build.Device}" - mount_path = "${build.MountPath}" - } -} -``` - - - - -```json -"post-processors": [ - { - "type": "manifest", - "output": "manifest.json", - "strip_path": true, - "custom_data": { - "source_ami_name": "{{ build `SourceAMIName` }}", - "device": "{{ build `Device` }}", - "mount_path": "{{ build `MountPath` }}" - } - } -] -``` - - - diff --git a/website/content/docs/builders/amazon/ebs.mdx b/website/content/docs/builders/amazon/ebs.mdx deleted file mode 100644 index e7034621f..000000000 --- a/website/content/docs/builders/amazon/ebs.mdx +++ /dev/null @@ -1,685 +0,0 @@ ---- -description: | - The amazon-ebs Packer builder is able to create Amazon AMIs backed by EBS - volumes for use in EC2. For more information on the difference between - EBS-backed instances and instance-store backed instances, see the storage for - the root device section in the EC2 documentation. -page_title: Amazon EBS - Builders -sidebar_title: EBS ---- - -# AMI Builder (EBS backed) - -Type: `amazon-ebs` -Artifact BuilderId: `mitchellh.amazonebs` - -The `amazon-ebs` Packer builder is able to create Amazon AMIs backed by EBS -volumes for use in [EC2](https://aws.amazon.com/ec2/). For more information on -the difference between EBS-backed instances and instance-store backed -instances, see the ["storage for the root device" section in the EC2 -documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device). - -This builder builds an AMI by launching an EC2 instance from a source AMI, -provisioning that running machine, and then creating an AMI from that machine. -This is all done in your own AWS account. The builder will create temporary -keypairs, security group rules, etc. that provide it temporary access to the -instance while the image is being created. This simplifies configuration quite -a bit. - -The builder does _not_ manage AMIs. Once it creates an AMI and stores it in -your account, it is up to you to use, delete, etc. the AMI. - --> **Note:** Temporary resources are, by default, all created with the -prefix `packer`. This can be useful if you want to restrict the security groups -and key pairs Packer is able to operate on. - -## EBS Specific Configuration Reference - -There are many configuration options available for the builder. In addition to -the items listed here, you will want to look at the general configuration -references for [AMI](#ami-configuration), -[BlockDevices](#block-devices-configuration), -[Access](#access-configuration), -[Run](#run-configuration) and -[Communicator](#communicator-configuration) -configuration references, which are -necessary for this build to succeed and can be found further down the page. - -#### Optional: - -@include 'builder/amazon/ebs/Config-not-required.mdx' - -### AMI Configuration - -#### Required: - -@include 'builder/amazon/common/AMIConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AMIConfig-not-required.mdx' - -@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' - -### Access Configuration - -#### Required: - -@include 'builder/amazon/common/AccessConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AccessConfig-not-required.mdx' - -### Assume Role Configuration - -@include 'builder/amazon/common/AssumeRoleConfig.mdx' - -@include 'builder/amazon/common/AssumeRoleConfig-not-required.mdx' - -### Polling Configuration - -@include 'builder/amazon/common/AWSPollingConfig.mdx' - -@include 'builder/amazon/common/AWSPollingConfig-not-required.mdx' - -### Run Configuration - -#### Required: - -@include 'builder/amazon/common/RunConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/RunConfig-not-required.mdx' - -#### Metadata Settings - -@include 'builder/amazon/common/MetadataOptions.mdx' - -@include 'builder/amazon/common/MetadataOptions-not-required.mdx' - -Usage Example - - - - -```hcl -source "amazon-ebs" "basic-example" { - region = "us-east-1" - source_ami = "ami-fce3c696" - instance_type = "t2.micro" - ssh_username = "ubuntu" - ami_name = "packer_AWS_example_{{timestamp}}" - metadata_options { - http_endpoint = "enabled" - http_tokens = "required" - http_put_response_hop_limit = 1 - } -} -``` - - - - -```json -{ - "variables": { - "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}", - "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "us-east-1", - "source_ami": "ami-fce3c696", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer_AWS {{timestamp}}", - "metadata_options": { - "http_endpoint": "enabled", - "http_tokens": "required", - "http_put_response_hop_limit": 1 - } - } - ] -} -``` - - - - -@include 'builders/aws-session-manager.mdx' - -### Block Devices Configuration - -Block devices can be nested in the -[ami_block_device_mappings](#ami_block_device_mappings) or the -[launch_block_device_mappings](#launch_block_device_mappings) array. - -@include 'builder/amazon/common/BlockDevice.mdx' - -#### Optional: - -@include 'builder/amazon/common/BlockDevice-not-required.mdx' - -### Communicator Configuration - -#### Optional: - -@include 'packer-plugin-sdk/communicator/Config-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Key-Pair-Name-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Agent-Auth-not-required.mdx' - -## Basic Example - -Here is a basic example. You will need to provide access keys, and may need to -change the AMI IDs according to what images exist at the time the template is -run: - - - - -```hcl -// To make Packer read these variables from the environment into the var object, -// set the environment variables to have the same name as the declared -// variables, with the prefix PKR_VAR_. - -// There are other ways to [set variables](/docs/templates/hcl_templates/variables#assigning-values-to-build-variables) -// including from a var file or as a command argument. - -// export PKR_VAR_aws_access_key=$YOURKEY -variable "aws_access_key" { - type = string - // default = "hardcoded_key" -} - -// export PKR_VAR_aws_secret_key=$YOURSECRETKEY -variable "aws_secret_key" { - type = string - // default = "hardcoded_secret_key" -} - -source "amazon-ebs" "basic-example" { - access_key = var.aws_access_key - secret_key = var.aws_secret_key - region = "us-east-1" - source_ami = "ami-fce3c696" - instance_type = "t2.micro" - ssh_username = "ubuntu" - ami_name = "packer_AWS {{timestamp}}" -} - -build { - sources = [ - "source.amazon-ebs.basic-example" - ] -} -``` - - - - -```json -{ - "variables": { - "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}", - "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}" -}, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "us-east-1", - "source_ami": "ami-fce3c696", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer_AWS {{timestamp}}" - } - ] -} -``` - - - - --> **Note:** Packer can also read the access key and secret access key directly -from environmental variables instead of being set as user variables. See the -configuration reference in the section above for more information on what -environmental variables Packer will look for. - -Further information on locating AMI IDs and their relationship to instance -types and regions can be found in the AWS EC2 Documentation [for -Linux](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) -or [for -Windows](http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/finding-an-ami.html). - -## Accessing the Instance to Debug - -If you need to access the instance to debug for some reason, run the builder -with the `-debug` flag. In debug mode, the Amazon builder will save the private -key in the current directory and will output the DNS or IP information as well. -You can use this information to access the instance as it is running. - -## AMI Block Device Mappings Example - -Here is an example using the optional AMI block device mappings. Our -configuration of `launch_block_device_mappings` will expand the root volume -(`/dev/sda`) to 40gb during the build (up from the default of 8gb). With -`ami_block_device_mappings` AWS will attach additional volumes `/dev/sdb` and -`/dev/sdc` when we boot a new instance of our AMI. - - - - -```hcl -source "amazon-ebs" "basic-example" { - region = "us-east-1" - source_ami = "ami-fce3c696" - instance_type = "t2.micro" - ssh_username = "ubuntu" - ami_name = "packer_AWS_example_{{timestamp}}" - launch_block_device_mappings { - device_name = "/dev/sda1" - volume_size = 40 - volume_type = "gp2" - delete_on_termination = true - } - // Notice that instead of providing a list of mappings, you are just providing - // multiple mappings in a row. This diverges from the JSON template format. - ami_block_device_mappings { - device_name = "/dev/sdb" - virtual_name = "ephemeral0" - } - ami_block_device_mappings { - device_name = "/dev/sdc" - virtual_name = "ephemeral1" - } -} - -build { - sources = [ - "source.amazon-ebs.basic-example" - ] -} -``` - - - - -```json -{ - "builders": [ - { - "type": "amazon-ebs", - "region": "us-east-1", - "source_ami": "ami-fce3c696", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer-quick-start {{timestamp}}", - "launch_block_device_mappings": [ - { - "device_name": "/dev/sda1", - "volume_size": 40, - "volume_type": "gp2", - "delete_on_termination": true - } - ], - "ami_block_device_mappings": [ - { - "device_name": "/dev/sdb", - "virtual_name": "ephemeral0" - }, - { - "device_name": "/dev/sdc", - "virtual_name": "ephemeral1" - } - ] - } - ] -} -``` - - - - -The above build template is functional assuming you have set the environment -variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. - --> **Note:** Packer uses pre-built AMIs as the source for building images. -These source AMIs may include volumes that are not flagged to be destroyed on -termination of the instance building the new image. Packer will attempt to -clean up all residual volumes that are not designated by the user to remain -after termination. If you need to preserve those source volumes, you can -overwrite the termination setting by setting `delete_on_termination` to `false` -in the `launch_block_device_mappings` block for the device. - -## Build template data - -In configuration directives marked as a template engine above, the following -variables are available: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). -- `SourceAMITags` - The source AMI Tags, as a `map[string]string` object. - -## Build Shared Information Variables - -This builder generates data that are shared with provisioner and post-processor via build function of [template engine](/docs/templates/legacy_json_templates/engine) for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - -The generated variables available for this builder are: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). - -Usage example: - - - - -```hcl -# When accessing one of these variables from inside the builder, you need to -# use the golang templating syntax. This is due to an architectural quirk that -# won't be easily resolvable until legacy json templates are deprecated: -build { - source "amazon-ebs" "basic-example" { - tags = { - OS_Version = "Ubuntu" - Release = "Latest" - Base_AMI_ID = "{{ .SourceAMI }}" - Base_AMI_Name = "{{ .SourceAMIName }}" - } - } - - // when accessing one of the variables from a provisioner or post-processor, use - // hcl-syntax - post-processor "manifest" { - output = "manifest.json" - strip_path = true - custom_data = { - source_ami_name = "${build.SourceAMIName}" - } -} -``` - - - - -```json -"post-processors": [ - { - "type": "manifest", - "output": "manifest.json", - "strip_path": true, - "custom_data": { - "source_ami_name": "{{ build `SourceAMIName` }}" - } - } -] -``` - - - - -## Tag Example - -Here is an example using the optional AMI tags. This will add the tags -`OS_Version` and `Release` to the finished AMI. As before, you will need to -provide your access keys, and may need to change the source AMI ID based on -what images exist when this template is run: - - - - -```hcl -source "amazon-ebs" "basic-example" { - region = "us-east-1" - source_ami = "ami-fce3c696" - instance_type = "t2.micro" - ssh_username = "ubuntu" - ami_name = "packer_tag_example {{timestamp}}" - tags = { - OS_Version = "Ubuntu" - Release = "Latest" - Base_AMI_Name = "{{ .SourceAMIName }}" - Extra = "{{ .SourceAMITags.TagName }}" - } -} - -build { - sources = [ - "source.amazon-ebs.basic-example" - ] -} -``` - - - - -```json -{ - "builders": [ - { - "type": "amazon-ebs", - "region": "us-east-1", - "source_ami": "ami-fce3c696", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer-tag-example {{timestamp}}", - "tags": { - "OS_Version": "Ubuntu", - "Release": "Latest", - "Base_AMI_Name": "{{ .SourceAMIName }}", - "Extra": "{{ .SourceAMITags.TagName }}" - } - } - ] -} -``` - - - - -## Connecting to Windows instances using WinRM - -If you want to launch a Windows instance and connect using WinRM, you will need -to configure WinRM on that instance. The following is a basic powershell script -that can be supplied to AWS using the "user_data_file" option. It enables -WinRM via HTTPS on port 5986, and creates a self-signed certificate to use to -connect. If you are using a certificate from a CA, rather than creating a -self-signed certificate, you can omit the "winrm_insecure" option mentioned -below. - -autogenerated_password_https_boostrap.txt - -```powershell - - -# MAKE SURE IN YOUR PACKER CONFIG TO SET: -# -# -# "winrm_username": "Administrator", -# "winrm_insecure": true, -# "winrm_use_ssl": true, -# -# - - -write-output "Running User Data Script" -write-host "(host) Running User Data Script" - -Set-ExecutionPolicy Unrestricted -Scope LocalMachine -Force -ErrorAction Ignore - -# Don't set this before Set-ExecutionPolicy as it throws an error -$ErrorActionPreference = "stop" - -# Remove HTTP listener -Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse - -# Create a self-signed certificate to let ssl work -$Cert = New-SelfSignedCertificate -CertstoreLocation Cert:\LocalMachine\My -DnsName "packer" -New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $Cert.Thumbprint -Force - -# WinRM -write-output "Setting up WinRM" -write-host "(host) setting up WinRM" - -cmd.exe /c winrm quickconfig -q -cmd.exe /c winrm set "winrm/config" '@{MaxTimeoutms="1800000"}' -cmd.exe /c winrm set "winrm/config/winrs" '@{MaxMemoryPerShellMB="1024"}' -cmd.exe /c winrm set "winrm/config/service" '@{AllowUnencrypted="true"}' -cmd.exe /c winrm set "winrm/config/client" '@{AllowUnencrypted="true"}' -cmd.exe /c winrm set "winrm/config/service/auth" '@{Basic="true"}' -cmd.exe /c winrm set "winrm/config/client/auth" '@{Basic="true"}' -cmd.exe /c winrm set "winrm/config/service/auth" '@{CredSSP="true"}' -cmd.exe /c winrm set "winrm/config/listener?Address=*+Transport=HTTPS" "@{Port=`"5986`";Hostname=`"packer`";CertificateThumbprint=`"$($Cert.Thumbprint)`"}" -cmd.exe /c netsh advfirewall firewall set rule group="remote administration" new enable=yes -cmd.exe /c netsh firewall add portopening TCP 5986 "Port 5986" -cmd.exe /c net stop winrm -cmd.exe /c sc config winrm start= auto -cmd.exe /c net start winrm - - -``` - -You'll notice that this config does not define a user or password; instead, -Packer will ask AWS to provide a random password that it generates -automatically. The following config will work with the above template: - - - - -```hcl -# This example uses a amazon-ami data source rather than a specific AMI. -# this allows us to use the same filter regardless of what region we're in, -# among other benefits. -data "amazon-ami" "example" { - filters = { - virtualization-type = "hvm" - name = "*Windows_Server-2012*English-64Bit-Base*" - root-device-type = "ebs" - } - owners = ["amazon"] - most_recent = true - # Access Region Configuration - region = "us-east-1" -} - -source "amazon-ebs" "winrm-example" { - region = "us-east-1" - source_ami = data.amazon-ami.example.id - instance_type = "t2.micro" - ami_name = "packer_winrm_example {{timestamp}}" - # This user data file sets up winrm and configures it so that the connection - # from Packer is allowed. Without this file being set, Packer will not - # connect to the instance. - user_data_file = "../boot_config/winrm_bootstrap.txt" - communicator = "winrm" - force_deregister = true - winrm_insecure = true - winrm_username = "Administrator" - winrm_use_ssl = true -} - -build { - sources = [ - "source.amazon-ebs.winrm-example" - ] -} -``` - - - - -```json -{ - "builders": [ - { - "type": "amazon-ebs", - "region": "us-east-1", - "instance_type": "t2.micro", - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "*Windows_Server-2012*English-64Bit-Base*", - "root-device-type": "ebs" - }, - "most_recent": true, - "owners": "amazon" - }, - "ami_name": "default-packer", - "user_data_file": "./boot_config/winrm_bootstrap.txt", - "communicator": "winrm", - "force_deregister": true, - "winrm_insecure": true, - "winrm_username": "Administrator", - "winrm_use_ssl": true - } - ] -} -``` - - - - -## Windows 2016 Sysprep Commands - For Amazon Windows AMIs Only - -For Amazon Windows 2016 AMIs it is necessary to run Sysprep commands which can -be easily added to the provisioner section. - - - - -```hcl -provisioner "powershell" { - inline = [ - "C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/InitializeInstance.ps1 -Schedule", - "C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/SysprepInstance.ps1 -NoShutdown" - ] -} -``` - - - - -```json -{ - "type": "powershell", - "inline": [ - "C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/InitializeInstance.ps1 -Schedule", - "C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/SysprepInstance.ps1 -NoShutdown" - ] -} -``` - - - - -@include 'builders/aws-ssh-differentiation-table.mdx' diff --git a/website/content/docs/builders/amazon/ebssurrogate.mdx b/website/content/docs/builders/amazon/ebssurrogate.mdx deleted file mode 100644 index a253fb507..000000000 --- a/website/content/docs/builders/amazon/ebssurrogate.mdx +++ /dev/null @@ -1,368 +0,0 @@ ---- -description: > - The amazon-ebssurrogate Packer builder is like the chroot builder, but does - not - - require running inside an EC2 instance. -page_title: Amazon EBS Surrogate - Builders -sidebar_title: EBS Surrogate ---- - -# EBS Surrogate Builder - -Type: `amazon-ebssurrogate` -Artifact BuilderId: `mitchellh.amazon.ebssurrogate` - -The `amazon-ebssurrogate` Packer builder is able to create Amazon AMIs by -running a source instance with an attached volume, provisioning the attached -volume in such a way that it can be used as the root volume for the AMI, and -then snapshotting and creating the AMI from that volume. - -This builder can therefore be used to bootstrap scratch-build images - for -example FreeBSD or Ubuntu using ZFS as the root file system. - -This is all done in your own AWS account. This builder will create temporary -key pairs, security group rules, etc., that provide it temporary access to the -instance while the image is being created. - -## Configuration Reference - -There are many configuration options available for the builder. In addition to -the items listed here, you will want to look at the general configuration -references for [AMI](#ami-configuration), -[BlockDevices](#block-devices-configuration), -[Access](#access-configuration), -[Run](#run-configuration) and -[Communicator](#communicator-configuration) -configuration references, which are -necessary for this build to succeed and can be found further down the page. - -### Required: - -@include 'builder/amazon/ebssurrogate/Config-required.mdx' - -### Optional: - -@include 'builder/amazon/ebssurrogate/Config-not-required.mdx' - -### AMI Configuration - -#### Required: - -@include 'builder/amazon/common/AMIConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AMIConfig-not-required.mdx' - -@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' - -### Access Configuration - -#### Required: - -@include 'builder/amazon/common/AccessConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AccessConfig-not-required.mdx' - -### Assume Role Configuration - -@include 'builder/amazon/common/AssumeRoleConfig.mdx' - -@include 'builder/amazon/common/AssumeRoleConfig-not-required.mdx' - -### Polling Configuration - -@include 'builder/amazon/common/AWSPollingConfig.mdx' - -@include 'builder/amazon/common/AWSPollingConfig-not-required.mdx' - -### Run Configuration - -#### Required: - -@include 'builder/amazon/common/RunConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/RunConfig-not-required.mdx' - -#### Metadata Settings - -@include 'builder/amazon/common/MetadataOptions.mdx' - -@include 'builder/amazon/common/MetadataOptions-not-required.mdx' - -Usage Example - - - - -```hcl -source "amazon-ebs" "basic-example" { - region = "us-east-1" - source_ami = "ami-fce3c696" - instance_type = "t2.micro" - ssh_username = "ubuntu" - ami_name = "packer_AWS_example_{{timestamp}}" - metadata_options { - http_endpoint = "enabled" - http_tokens = "required" - http_put_response_hop_limit = 1 - } -} -``` - - - - -```json -{ - "variables": { - "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}", - "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "us-east-1", - "source_ami": "ami-fce3c696", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer_AWS {{timestamp}}", - "metadata_options": { - "http_endpoint": "enabled", - "http_tokens": "required", - "http_put_response_hop_limit": 1 - } - } - ] -} -``` - - - - -@include 'builders/aws-session-manager.mdx' - -### Block Devices Configuration - -Block devices can be nested in the -[ami_block_device_mappings](#ami_block_device_mappings) array. - -@include 'builder/amazon/common/BlockDevice.mdx' - -#### Optional only for [launch_block_device_mappings](#launch_block_device_mappings) - -@include 'builder/amazon/ebssurrogate/BlockDevice-not-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/BlockDevice-not-required.mdx' - -### Communicator Configuration - -#### Optional: - -@include 'packer-plugin-sdk/communicator/Config-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Key-Pair-Name-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Agent-Auth-not-required.mdx' - -## Basic Example - - - - -```hcl -source "amazon-ebssurrogate" "basic-example" { - region = "us-east-1" - ssh_username = "ubuntu" - instance_type = "t2.medium" - source_ami = "ami-40d28157" - ami_name = "packer-test-ami" - ami_virtualization_type = "paravirtual" - - launch_block_device_mappings { - volume_type = "gp2" - device_name = "/dev/xvdf" - delete_on_termination = false - volume_size = 10 - } - - ami_root_device { - source_device_name = "/dev/xvdf" - device_name = "/dev/xvda" - delete_on_termination = true - volume_size = 16 - volume_type = "gp2" - } -} - -build { - sources = ["sources.amazon-ebssurrogate.basic-example"] - - provisioner "shell" { - inline = ["..."] - } -} -``` - - - - -```json -{ - "builders": [ - { - "type": "amazon-ebssurrogate", - "secret_key": "YOUR SECRET KEY HERE", - "access_key": "YOUR KEY HERE", - "ami_name": "packer-test-ami", - "ami_virtualization_type": "paravirtual", - "region": "us-east-1", - "ssh_username": "ubuntu", - "instance_type": "t2.medium", - "source_ami": "ami-40d28157", - "launch_block_device_mappings": [ - { - "volume_type": "gp2", - "device_name": "/dev/xvdf", - "delete_on_termination": false, - "volume_size": 10 - } - ], - "ami_root_device": { - "source_device_name": "/dev/xvdf", - "device_name": "/dev/xvda", - "delete_on_termination": true, - "volume_size": 16, - "volume_type": "gp2" - } - } - ] -} -``` - - - - - -> **Note:** Packer can also read the access key and secret access key from - environmental variables. See the configuration reference in the section above - for more information on what environmental variables Packer will look for. - - Further information on locating AMI IDs and their relationship to instance - types and regions can be found in the AWS EC2 Documentation [for - Linux](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) - or [for - Windows](http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/finding-an-ami.html). - - ## Accessing the Instance to Debug - - If you need to access the instance to debug for some reason, run this builder - with the `-debug` flag. In debug mode, the Amazon builder will save the private - key in the current directory and will output the DNS or IP information as well. - You can use this information to access the instance as it is running. - - ## Build template data - - In configuration directives marked as a template engine above, the following - variables are available: - - - `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. - - `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. - - `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). - - `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. - - `SourceAMIOwner` - The source AMI owner ID. - - `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). - - `SourceAMITags` - The source AMI Tags, as a `map[string]string` object. - - ## Build Shared Information Variables - - This builder generates data that are shared with provisioner and post-processor via build function of [template engine](/docs/templates/legacy_json_templates/engine) for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - - The generated variables available for this builder are: - - - `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. - - `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. - - `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). - - `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. - - `SourceAMIOwner` - The source AMI owner ID. - - `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). - - Usage example: - - - - -```hcl -// When accessing one of these variables from inside the builder, you need to -// use the golang templating syntax. This is due to an architectural quirk that -// won't be easily resolvable until legacy json templates are deprecated: - -build { - source "amazon-ebs" "basic-example" { - tags = { - OS_Version = "Ubuntu" - Release = "Latest" - Base_AMI_ID = "{{ .SourceAMI }}" - Base_AMI_Name = "{{ .SourceAMIName }}" - } - } - - // when accessing one of the variables from a provisioner or post-processor, use - // hcl-syntax - post-processor "manifest" { - output = "manifest.json" - strip_path = true - custom_data = { - source_ami_name = "${build.SourceAMIName}" - } -} -``` - - - - -```json -"post-processors": [ - { - "type": "manifest", - "output": "manifest.json", - "strip_path": true, - "custom_data": { - "source_ami_name": "{{ build `SourceAMIName` }}" - } - } -] -``` - - - - --> **Note:** Packer uses pre-built AMIs as the source for building images. -These source AMIs may include volumes that are not flagged to be destroyed on -termination of the instance building the new image. In addition to those -volumes created by this builder, any volumes in the source AMI which are not -marked for deletion on termination will remain in your account. - -@include 'builders/aws-ssh-differentiation-table.mdx' diff --git a/website/content/docs/builders/amazon/ebsvolume.mdx b/website/content/docs/builders/amazon/ebsvolume.mdx deleted file mode 100644 index 814449764..000000000 --- a/website/content/docs/builders/amazon/ebsvolume.mdx +++ /dev/null @@ -1,393 +0,0 @@ ---- -description: | - The amazon-ebsvolume Packer builder is like the EBS builder, but is - intended to create EBS volumes rather than a machine image. -page_title: Amazon EBS Volume - Builders -sidebar_title: EBS Volume ---- - -# EBS Volume Builder - -Type: `amazon-ebsvolume` -Artifact BuilderId: `mitchellh.amazon.ebsvolume` - -The `amazon-ebsvolume` Packer builder is able to create Amazon Elastic Block -Store volumes which are prepopulated with filesystems or data. - -This builder creates EBS volumes by launching an EC2 instance from a source -AMI. One or more EBS volumes are attached to the running instance, allowing -them to be provisioned into from the running machine. Once provisioning is -complete the source machine is destroyed. The provisioned volumes are kept -intact. - -This is all done in your own AWS account. The builder will create temporary key -pairs, security group rules, etc. that provide it temporary access to the -instance while the image is being created. - -The builder does _not_ manage EBS Volumes. Once it creates volumes and stores -it in your account, it is up to you to use, delete, etc. the volumes. - --> **Note:** Temporary resources are, by default, all created with the -prefix `packer`. This can be useful if you want to restrict the security groups -and key pairs Packer is able to operate on. - -## Configuration Reference - -There are many configuration options available for the builder. In addition to -the items listed here, you will want to look at the general configuration -references for [AMI](#ami-configuration), -[BlockDevices](#block-devices-configuration), -[Access](#access-configuration), -[Run](#run-configuration) and -[Communicator](#communicator-configuration) -configuration references, which are -necessary for this build to succeed and can be found further down the page. - -### Optional: - -@include 'builder/amazon/ebsvolume/Config-not-required.mdx' - -### Access Configuration - -#### Required: - -@include 'builder/amazon/common/AccessConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AccessConfig-not-required.mdx' - -### Assume Role Configuration - -@include 'builder/amazon/common/AssumeRoleConfig.mdx' - -@include 'builder/amazon/common/AssumeRoleConfig-not-required.mdx' - -### Polling Configuration - -@include 'builder/amazon/common/AWSPollingConfig.mdx' - -@include 'builder/amazon/common/AWSPollingConfig-not-required.mdx' - -### Block Devices Configuration - -Block devices can be nested in the -[ebs_volumes](#ebs_volumes) array. - -@include 'builder/amazon/common/BlockDevice.mdx' - -#### Optional: - -@include 'builder/amazon/common/BlockDevice-not-required.mdx' - -@include 'builder/amazon/ebsvolume/BlockDevice-not-required.mdx' - -@include 'builder/amazon/common/SnapshotConfig-not-required.mdx' - -### Run Configuration - -#### Required: - -@include 'builder/amazon/common/RunConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/RunConfig-not-required.mdx' - -#### Metadata Settings - -@include 'builder/amazon/common/MetadataOptions.mdx' - -@include 'builder/amazon/common/MetadataOptions-not-required.mdx' - -Usage Example - - - - -```hcl -source "amazon-ebs" "basic-example" { - region = "us-east-1" - source_ami = "ami-fce3c696" - instance_type = "t2.micro" - ssh_username = "ubuntu" - ami_name = "packer_AWS_example_{{timestamp}}" - metadata_options { - http_endpoint = "enabled" - http_tokens = "required" - http_put_response_hop_limit = 1 - } -} -``` - - - - -```json -{ - "variables": { - "aws_access_key": "{{env `AWS_ACCESS_KEY_ID`}}", - "aws_secret_key": "{{env `AWS_SECRET_ACCESS_KEY`}}" - }, - "builders": [ - { - "type": "amazon-ebs", - "access_key": "{{user `aws_access_key`}}", - "secret_key": "{{user `aws_secret_key`}}", - "region": "us-east-1", - "source_ami": "ami-fce3c696", - "instance_type": "t2.micro", - "ssh_username": "ubuntu", - "ami_name": "packer_AWS {{timestamp}}", - "metadata_options": { - "http_endpoint": "enabled", - "http_tokens": "required", - "http_put_response_hop_limit": 1 - } - } - ] -} -``` - - - - -@include 'builders/aws-session-manager.mdx' - -### Communicator Configuration - -#### Optional: - -@include 'packer-plugin-sdk/communicator/Config-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Key-Pair-Name-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Agent-Auth-not-required.mdx' - -## Basic Example - - - - -```hcl -source "amazon-ebsvolume" "basic-example" { - region = "us-east-1" - ssh_username = "ubuntu" - instance_type = "t2.medium" - source_ami = "ami-40d28157" - - ebs_volumes { - volume_type = "gp2" - device_name = "/dev/xvdf" - delete_on_termination = false - tags = { - zpool = "data" - Name = "Data1" - } - volume_size = 10 - } - - ebs_volumes { - volume_type = "gp2" - device_name = "/dev/xvdg" - tags = { - zpool = "data" - Name = "Data2" - } - delete_on_termination = false - volume_size = 10 - } - - ebs_volumes { - volume_size = 10 - tags = { - zpool = "data" - Name = "Data3" - } - delete_on_termination = false - device_name = "/dev/xvdh" - volume_type = "gp2" - } -} - -build { - sources = ["sources.amazon-ebsvolume.basic-example"] -} -``` - - - - -```json -{ - "builders": [ - { - "type": "amazon-ebsvolume", - "region": "us-east-1", - "ssh_username": "ubuntu", - "instance_type": "t2.medium", - "source_ami": "ami-40d28157", - "ebs_volumes": [ - { - "volume_type": "gp2", - "device_name": "/dev/xvdf", - "delete_on_termination": false, - "tags": { - "zpool": "data", - "Name": "Data1" - }, - "volume_size": 10 - }, - { - "volume_type": "gp2", - "device_name": "/dev/xvdg", - "tags": { - "zpool": "data", - "Name": "Data2" - }, - "delete_on_termination": false, - "volume_size": 10 - }, - { - "volume_size": 10, - "tags": { - "Name": "Data3", - "zpool": "data" - }, - "delete_on_termination": false, - "device_name": "/dev/xvdh", - "volume_type": "gp2" - } - ] - } - ] -} -``` - - - - --> **Note:** Packer can also read the access key and secret access key from -environmental variables. See the configuration reference in the section above -for more information on what environmental variables Packer will look for. - -Further information on locating AMI IDs and their relationship to instance -types and regions can be found in the AWS EC2 Documentation [for -Linux](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) -or [for -Windows](http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/finding-an-ami.html). - -## Accessing the Instance to Debug - -If you need to access the instance to debug for some reason, run the builder -with the `-debug` flag. In debug mode, the Amazon builder will save the private -key in the current directory and will output the DNS or IP information as well. -You can use this information to access the instance as it is running. - -## Build template data - -In configuration directives marked as a template engine above, the following -variables are available: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). -- `SourceAMITags` - The source AMI Tags, as a `map[string]string` object. - -## Build Shared Information Variables - -This builder generates data that are shared with provisioner and post-processor via build function of [template engine](/docs/templates/legacy_json_templates/engine) for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - -The generated variables available for this builder are: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). - --> **Note:** Packer uses pre-built AMIs as the source for building images. -These source AMIs may include volumes that are not flagged to be destroyed on -termination of the instance building the new image. In addition to those -volumes created by this builder, any volumes in the source AMI which are not -marked for deletion on termination will remain in your account. - -## Build Shared Information Variables - -This builder generates data that are shared with provisioner and post-processor via build function of [template engine](/docs/templates/legacy_json_templates/engine) for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - -The generated variables available for this builder are: - -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. - -Usage example: - - - - -```hcl -// When accessing one of these variables from inside the builder, you need to -// use the golang templating syntax. This is due to an architectural quirk that -// won't be easily resolvable until legacy json templates are deprecated: - -{ -source "amazon-ebs" "basic-example" { - tags = { - OS_Version = "Ubuntu" - Release = "Latest" - Base_AMI_ID = "{{ .SourceAMI }}" - Base_AMI_Name = "{{ .SourceAMIName }}" - } -} - -// when accessing one of the variables from a provisioner or post-processor, use -// hcl-syntax -post-processor "manifest" { - output = "manifest.json" - strip_path = true - custom_data = { - source_ami_name = "${build.SourceAMIName}" - } -} -``` - - - - -```json -"post-processors": [ - { - "type": "manifest", - "output": "manifest.json", - "strip_path": true, - "custom_data": { - "source_ami_name": "{{ build `SourceAMIName` }}" - } - } -] -``` - - - - -@include 'builders/aws-ssh-differentiation-table.mdx' diff --git a/website/content/docs/builders/amazon/index.mdx b/website/content/docs/builders/amazon/index.mdx deleted file mode 100644 index 011137154..000000000 --- a/website/content/docs/builders/amazon/index.mdx +++ /dev/null @@ -1,369 +0,0 @@ ---- -description: | - Packer is able to create Amazon AMIs. To achieve this, Packer comes with - multiple builders depending on the strategy you want to use to build the AMI. -page_title: Amazon AMI - Builders -sidebar_title: Amazon EC2 ---- - -# Amazon AMI Builder - -Packer is able to create Amazon AMIs. To achieve this, Packer comes with -multiple builders depending on the strategy you want to use to build the AMI. -Packer supports the following builders at the moment: - -- [amazon-ebs](/docs/builders/amazon/ebs) - Create EBS-backed AMIs by - launching a source AMI and re-packaging it into a new AMI after - provisioning. If in doubt, use this builder, which is the easiest to get - started with. - -- [amazon-instance](/docs/builders/amazon/instance) - Create - instance-store AMIs by launching and provisioning a source instance, then - rebundling it and uploading it to S3. - -- [amazon-chroot](/docs/builders/amazon/chroot) - Create EBS-backed AMIs - from an existing EC2 instance by mounting the root device and using a - [Chroot](https://en.wikipedia.org/wiki/Chroot) environment to provision - that device. This is an **advanced builder and should not be used by - newcomers**. However, it is also the fastest way to build an EBS-backed AMI - since no new EC2 instance needs to be launched. - -- [amazon-ebssurrogate](/docs/builders/amazon/ebssurrogate) - Create EBS - -backed AMIs from scratch. Works similarly to the `chroot` builder but does - not require running in AWS. This is an **advanced builder and should not be - used by newcomers**. - --> **Don't know which builder to use?** If in doubt, use the [amazon-ebs -builder](/docs/builders/amazon/ebs). It is much easier to use and Amazon -generally recommends EBS-backed images nowadays. - -# Amazon EBS Volume Builder - -Packer is able to create Amazon EBS Volumes which are preinitialized with a -filesystem and data. - -- [amazon-ebsvolume](/docs/builders/amazon/ebsvolume) - Create EBS - volumes by launching a source AMI with block devices mapped. Provision the - instance, then destroy it, retaining the EBS volumes and or Snapshot. - - - - - -## Authentication - -The AWS provider offers a flexible means of providing credentials for -authentication. The following methods are supported, in this order, and -explained below: - -- Static credentials -- Environment variables -- Shared credentials file -- EC2 Role - -### Static Credentials - -Static credentials can be provided in the form of an access key id and secret. -These look like: - - - - -```json -"builders": { - "type": "amazon-ebs", - "access_key": "AKIAIOSFODNN7EXAMPLE", - "secret_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "region": "us-east-1", -} -``` - - - - -```hcl -source "amazon-ebs" "basic-example" { - access_key = "AKIAIOSFODNN7EXAMPLE" - secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" - region = "us-east-1" -} -``` - - - - -If you would like, you may also assume a role using the assume_role -configuration option. You must still have one of the valid credential resources -explained above, and your user must have permission to assume the role in -question. This is a way of running Packer with a more restrictive set of -permissions than your user. - -@include 'builder/amazon/common/AssumeRoleConfig.mdx' - -@include 'builder/amazon/common/AssumeRoleConfig-not-required.mdx' - -### Environment variables - -You can provide your credentials via the `AWS_ACCESS_KEY_ID` and -`AWS_SECRET_ACCESS_KEY`, environment variables, representing your AWS Access -Key and AWS Secret Key, respectively. Note that setting your AWS credentials -using either these environment variables will override the use of -`AWS_SHARED_CREDENTIALS_FILE` and `AWS_PROFILE`. The `AWS_DEFAULT_REGION` and -`AWS_SESSION_TOKEN` environment variables are also used, if applicable: - -Usage: - - $ export AWS_ACCESS_KEY_ID="anaccesskey" - $ export AWS_SECRET_ACCESS_KEY="asecretkey" - $ export AWS_DEFAULT_REGION="us-west-2" - $ packer build template.pkr.hcl - -### Shared Credentials file - -You can use an AWS credentials file to specify your credentials. The default -location is `$HOME/.aws/credentials` on Linux and OS X, or -`%USERPROFILE%.aws\credentials` for Windows users. If we fail to detect -credentials inline, or in the environment, Packer will check this location. You -can optionally specify a different location in the configuration by setting the -environment with the `AWS_SHARED_CREDENTIALS_FILE` variable. - -The format for the credentials file is like so - - [default] - aws_access_key_id= - aws_secret_access_key= - -You may also configure the profile to use by setting the `profile` -configuration option, or setting the `AWS_PROFILE` environment variable: - - - - -```json -"builders": { - "type": "amazon-ebs" - "profile": "customprofile", - "region": "us-east-1", -} -``` - - - - -```hcl -source "amazon-ebs" "basic-example" { - profile = "customprofile" - region = "us-east-1" -} -``` - - - - -### IAM Task or Instance Role - -Finally, Packer will use credentials provided by the task's or instance's IAM -role, if it has one. - -This is a preferred approach over any other when running in EC2 as you can -avoid hard coding credentials. Instead these are leased on-the-fly by Packer, -which reduces the chance of leakage. - -The following policy document provides the minimal set permissions necessary -for Packer to work: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "ec2:AttachVolume", - "ec2:AuthorizeSecurityGroupIngress", - "ec2:CopyImage", - "ec2:CreateImage", - "ec2:CreateKeypair", - "ec2:CreateSecurityGroup", - "ec2:CreateSnapshot", - "ec2:CreateTags", - "ec2:CreateVolume", - "ec2:DeleteKeyPair", - "ec2:DeleteSecurityGroup", - "ec2:DeleteSnapshot", - "ec2:DeleteVolume", - "ec2:DeregisterImage", - "ec2:DescribeImageAttribute", - "ec2:DescribeImages", - "ec2:DescribeInstances", - "ec2:DescribeInstanceStatus", - "ec2:DescribeRegions", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSnapshots", - "ec2:DescribeSubnets", - "ec2:DescribeTags", - "ec2:DescribeVolumes", - "ec2:DetachVolume", - "ec2:GetPasswordData", - "ec2:ModifyImageAttribute", - "ec2:ModifyInstanceAttribute", - "ec2:ModifySnapshotAttribute", - "ec2:RegisterImage", - "ec2:RunInstances", - "ec2:StopInstances", - "ec2:TerminateInstances" - ], - "Resource": "*" - } - ] -} -``` - -Note that if you'd like to create a spot instance, you must also add: - - ec2:CreateLaunchTemplate, - ec2:DeleteLaunchTemplate, - ec2:CreateFleet - -If you have the `spot_price` parameter set to `auto`, you must also add: - - ec2:DescribeSpotPriceHistory - -If you are using the `vpc_filter` option, you must also add: - - ec2:DescribeVpcs - -## Troubleshooting - -### Attaching IAM Policies to Roles - -IAM policies can be associated with users or roles. If you use packer with IAM -roles, you may encounter an error like this one: - - ==> amazon-ebs: Error launching source instance: You are not authorized to perform this operation. - -You can read more about why this happens on the [Amazon Security -Blog](https://blogs.aws.amazon.com/security/post/Tx3M0IFB5XBOCQX/Granting-Permission-to-Launch-EC2-Instances-with-IAM-Roles-PassRole-Permission). -The example policy below may help packer work with IAM roles. Note that this -example provides more than the minimal set of permissions needed for packer to -work, but specifics will depend on your use-case. - -```json -{ - "Sid": "PackerIAMPassRole", - "Effect": "Allow", - "Action": ["iam:PassRole", "iam:GetInstanceProfile"], - "Resource": ["*"] -} -``` - -If using an existing instance profile with spot instances/spot pricing, the `iam:CreateServiceLinkedRole` action is also required: - -```json -{ - "Sid": "PackerIAMPassRole", - "Effect": "Allow", - "Action": ["iam:PassRole", "iam:GetInstanceProfile", "iam:CreateServiceLinkedRole"], - "Resource": ["*"] -} -``` - -In case when you're creating a temporary instance profile you will require to have following -IAM policies. - -```json -{ - "Sid": "PackerIAMCreateRole", - "Effect": "Allow", - "Action": [ - "iam:PassRole", - "iam:CreateInstanceProfile", - "iam:DeleteInstanceProfile", - "iam:GetRole", - "iam:GetInstanceProfile", - "iam:DeleteRolePolicy", - "iam:RemoveRoleFromInstanceProfile", - "iam:CreateRole", - "iam:DeleteRole", - "iam:PutRolePolicy", - "iam:AddRoleToInstanceProfile" - ], - "Resource": "*" -} -``` - -In cases where you are using a KMS key for encryption, your key will need the -following policies at a minimum: - -```json -{ - "Sid": "Allow use of the key", - "Effect": "Allow", - "Action": ["kms:ReEncrypt*", "kms:GenerateDataKey*"], - "Resource": "*" -} -``` - -If you are using a key provided by a different account than the one you are -using to run the Packer build, your key will also need - -```json -("kms:CreateGrant", "kms:DescribeKey") -``` - -### Checking that system time is current - -Amazon uses the current time as part of the [request signing -process](http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html). If -your system clock is too skewed from the current time, your requests might -fail. If that's the case, you might see an error like this: - - ==> amazon-ebs: Error querying AMI: AuthFailure: AWS was not able to validate the provided access credentials - -If you suspect your system's date is wrong, you can compare it against -`http://www.time.gov/`. On Linux/OS X, you can run the `date` command to get the current time. If you're -on Linux, you can try setting the time with ntp by running `sudo ntpd -q`. - -### ResourceNotReady Error - -This error generally appears as either `ResourceNotReady: exceeded wait attempts` or `ResourceNotReady: failed waiting for successful resource state`. - -This opaque error gets returned from AWS's API for a number of reasons, -generally during image copy/encryption. Possible reasons for the error include: - -- You aren't waiting long enough. This is where you'll see the `exceeded wait attempts` variety of this error message: - We use the AWS SDK's built-in waiters to wait for longer-running tasks to - complete. These waiters have default delays between queries and maximum - number of queries that don't always work for our users. - - If you find that you are being rate-limited or have exceeded your max wait - attempts, you can override the defaults by setting the following packer - environment variables (note that these will apply to all AWS tasks that we - have to wait for): - - - `AWS_MAX_ATTEMPTS` - This is how many times to re-send a status update - request. Excepting tasks that we know can take an extremely long time, this - defaults to 40 tries. - - - `AWS_POLL_DELAY_SECONDS` - How many seconds to wait in between status update - requests. Generally defaults to 2 or 5 seconds, depending on the task. - -- You are using short-lived credentials that expired during the build. If this - is the problem, you may also see `RequestExpired: Request has expired.` - errors displayed in the Packer output: - - - If you are using STS credentials, make sure that they expire only after the - build has completed - - - If you are chaining roles, make sure your build doesn't last more than an - hour, since when you chain roles the maximum length of time your credentials - will last is an hour: - https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html - -- Something is wrong with your KMS key. This is where you'll see the - `ResourceNotReady: failed waiting for successful resource state` variety of - this error message. Issues we've seen include: - - Your KMS key is invalid, possibly because of a typo - - Your KMS key is valid but does not have the necessary permissions (see - above for the necessary key permissions) - - Your KMS key is valid, but not in the region you've told us to use it in. diff --git a/website/content/docs/builders/amazon/instance.mdx b/website/content/docs/builders/amazon/instance.mdx deleted file mode 100644 index fce19e3f9..000000000 --- a/website/content/docs/builders/amazon/instance.mdx +++ /dev/null @@ -1,385 +0,0 @@ ---- -description: > - The amazon-instance Packer builder is able to create Amazon AMIs backed by - - instance storage as the root device. For more information on the difference - - between instance storage and EBS-backed instances, see the storage for the - root - - device section in the EC2 documentation. -page_title: Amazon instance-store - Builders -sidebar_title: Instance ---- - -# AMI Builder (instance-store) - -Type: `amazon-instance` -Artifact BuilderId: `mitchellh.amazon.instance` - -The `amazon-instance` Packer builder is able to create Amazon AMIs backed by -instance storage as the root device. For more information on the difference -between instance storage and EBS-backed instances, see the ["storage for the -root device" section in the EC2 -documentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device). - -This builder builds an AMI by launching an EC2 instance from an existing -instance-storage backed AMI, provisioning that running machine, and then -bundling and creating a new AMI from that machine. This is all done in your own -AWS account. This builder will create temporary key pairs, security group -rules, etc. that provide it temporary access to the instance while the image is -being created. This simplifies configuration quite a bit. - -This builder does _not_ manage AMIs. Once it creates an AMI and stores it in -your account, it is up to you to use, delete, etc. the AMI. - --> **Note:** Temporary resources are, by default, all created with the -prefix `packer`. This can be useful if you want to restrict the security groups -and key pairs packer is able to operate on. - --> **Note:** This builder requires that the [Amazon EC2 AMI -Tools](https://aws.amazon.com/developertools/368) are installed onto the -machine. This can be done within a provisioner, but must be done before the -builder finishes running. - -~> Instance builds are not supported for Windows. Use -[`amazon-ebs`](/docs/builders/amazon-ebs) instead. - -## Configuration Reference - -There are many configuration options available for the builder. In addition to -the items listed here, you will want to look at the general configuration -references for [AMI](#ami-configuration), -[BlockDevices](#block-devices-configuration), -[Access](#access-configuration), -[Run](#run-configuration) and -[Communicator](#communicator-configuration) -configuration references, which are -necessary for this build to succeed and can be found further down the page. - -### Required: - -@include 'builder/amazon/instance/Config-required.mdx' - -### Optional: - -@include 'builder/amazon/instance/Config-not-required.mdx' - -### AMI Configuration - -#### Required: - -@include 'builder/amazon/common/AMIConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AMIConfig-not-required.mdx' - -### Access Configuration - -#### Required: - -@include 'builder/amazon/common/AccessConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/AccessConfig-not-required.mdx' - -### Assume Role Configuration - -@include 'builder/amazon/common/AssumeRoleConfig.mdx' - -@include 'builder/amazon/common/AssumeRoleConfig-not-required.mdx' - -### Polling Configuration - -@include 'builder/amazon/common/AWSPollingConfig.mdx' - -@include 'builder/amazon/common/AWSPollingConfig-not-required.mdx' - -### Run Configuration - -#### Required: - -@include 'builder/amazon/common/RunConfig-required.mdx' - -#### Optional: - -@include 'builder/amazon/common/RunConfig-not-required.mdx' - -@include 'builders/aws-session-manager.mdx' - -### Block Devices Configuration - -Block devices can be nested in the -[ami_block_device_mappings](#ami_block_device_mappings) or the -[launch_block_device_mappings](#launch_block_device_mappings) array. - -@include 'builder/amazon/common/BlockDevice.mdx' - -#### Optional: - -@include 'builder/amazon/common/BlockDevice-not-required.mdx' - -### Communicator Configuration - -#### Optional: - -@include 'packer-plugin-sdk/communicator/Config-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Key-Pair-Name-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' - -@include 'packer-plugin-sdk/communicator/SSH-Agent-Auth-not-required.mdx' - -## Basic Example - -Here is a basic example. It is completely valid except for the access keys: - - - - -```hcl -source "amazon-instance" "basic-example" { - region = "us-east-1" - source_ami = "ami-d9d6a6b0" - instance_type = "m1.small" - ssh_username = "ubuntu" - - account_id = "0123-4567-0890" - s3_bucket = "packer-images" - x509_cert_path = "x509.cert" - x509_key_path = "x509.key" - x509_upload_path = "/tmp" -} - -build { - source "sources.amazon-instance.basic-example" { - ami_name = "packer-quick-start {{timestamp}}" - } -} -``` - - - - -```json -{ - "type": "amazon-instance", - "access_key": "YOUR KEY HERE", - "secret_key": "YOUR SECRET KEY HERE", - "region": "us-east-1", - "source_ami": "ami-d9d6a6b0", - "instance_type": "m1.small", - "ssh_username": "ubuntu", - - "account_id": "0123-4567-0890", - "s3_bucket": "packer-images", - "x509_cert_path": "x509.cert", - "x509_key_path": "x509.key", - "x509_upload_path": "/tmp", - - "ami_name": "packer-quick-start {{timestamp}}" -} -``` - - - - --> **Note:** Packer can also read the access key and secret access key from -environmental variables. See the configuration reference in the section above -for more information on what environmental variables Packer will look for. - -## Accessing the Instance to Debug - -If you need to access the instance to debug for some reason, run this builder -with the `-debug` flag. In debug mode, the Amazon builder will save the private -key in the current directory and will output the DNS or IP information as well. -You can use this information to access the instance as it is running. - -## Build template data - -In configuration directives marked as a template engine above, the following -variables are available: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). -- `SourceAMITags` - The source AMI Tags, as a `map[string]string` object. - -## Build Shared Information Variables - -This builder generates data that are shared with provisioner and post-processor via build function of [template engine](/docs/templates/legacy_json_templates/engine) for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2. - -The generated variables available for this builder are: - -- `BuildRegion` - The region (for example `eu-central-1`) where Packer is - building the AMI. -- `SourceAMI` - The source AMI ID (for example `ami-a2412fcd`) used to build - the AMI. -- `SourceAMICreationDate` - The source AMI creation date (for example `"2020-05-14T19:26:34.000Z"`). -- `SourceAMIName` - The source AMI Name (for example - `ubuntu/images/ebs-ssd/ubuntu-xenial-16.04-amd64-server-20180306`) used to - build the AMI. -- `SourceAMIOwner` - The source AMI owner ID. -- `SourceAMIOwnerName` - The source AMI owner alias/name (for example `amazon`). - -Usage example: - - - - -```hcl -// When accessing one of these variables from inside the builder, you need to -// use the golang templating syntax. This is due to an architectural quirk that -// won't be easily resolvable until legacy json templates are deprecated: - -{ -source "amazon-ebs" "basic-example" { - tags = { - OS_Version = "Ubuntu" - Release = "Latest" - Base_AMI_ID = "{{ .SourceAMI }}" - Base_AMI_Name = "{{ .SourceAMIName }}" - } -} - -// when accessing one of the variables from a provisioner or post-processor, use -// hcl-syntax -post-processor "manifest" { - output = "manifest.json" - strip_path = true - custom_data = { - source_ami_name = "${build.SourceAMIName}" - } -} -``` - - - - -```json -"post-processors": [ - { - "type": "manifest", - "output": "manifest.json", - "strip_path": true, - "custom_data": { - "source_ami_name": "{{ build `SourceAMIName` }}" - } - } -] -``` - - - - -## Custom Bundle Commands - -A lot of the process required for creating an instance-store backed AMI -involves commands being run on the actual source instance. Specifically, the -`ec2-bundle-vol` and `ec2-upload-bundle` commands must be used to bundle the -root filesystem and upload it, respectively. - -Each of these commands have a lot of available flags. Instead of exposing each -possible flag as a template configuration option, the instance-store AMI -builder for Packer lets you customize the entire command used to bundle and -upload the AMI. - -These are configured with `bundle_vol_command` and `bundle_upload_command`. -Both of these configurations are [configuration -templates](/docs/templates/legacy_json_templates/engine) and have support for their own set of -template variables. - -### Bundle Volume Command - -The default value for `bundle_vol_command` is shown below. It is split across -multiple lines for convenience of reading. The bundle volume command is -responsible for executing `ec2-bundle-vol` in order to store and image of the -root filesystem to use to create the AMI. - -```shell-session -$ sudo -i -n ec2-bundle-vol \ - -k {{.KeyPath}} \ - -u {{.AccountId}} \ - -c {{.CertPath}} \ - -r {{.Architecture}} \ - -e {{.PrivatePath}}/* \ - -d {{.Destination}} \ - -p {{.Prefix}} \ - --batch \ - --no-filter -``` - -The available template variables should be self-explanatory based on the -parameters they're used to satisfy the `ec2-bundle-vol` command. - -~> **Warning!** Some versions of ec2-bundle-vol silently ignore all .pem -and .gpg files during the bundling of the AMI, which can cause problems on some -systems, such as Ubuntu. You may want to customize the bundle volume command to -include those files (see the `--no-filter` option of `ec2-bundle-vol`). - -### Bundle Upload Command - -The default value for `bundle_upload_command` is shown below. It is split -across multiple lines for convenience of reading. Access key and secret key are -omitted if using instance profile. The bundle upload command is responsible for -taking the bundled volume and uploading it to S3. - -```shell-session -$ sudo -i -n ec2-upload-bundle \ - -b {{.BucketName}} \ - -m {{.ManifestPath}} \ - -a {{.AccessKey}} \ - -s {{.SecretKey}} \ - -d {{.BundleDirectory}} \ - --batch \ - --region {{.Region}} \ - --retry -``` - -The available template variables should be self-explanatory based on the -parameters they're used to satisfy the `ec2-upload-bundle` command. -Additionally, `{{.Token}}` is available when overriding this command. You must -create your own bundle command with the addition of `-t {{.Token}}` if you are -assuming a role. - -#### Bundle Upload Permissions - -The `ec2-upload-bundle` requires a policy document that looks something like -this: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "s3:PutObject", - "s3:GetObject", - "s3:ListBucket", - "s3:GetBucketLocation", - "s3:PutObjectAcl" - ], - "Resource": "*" - } - ] -} -``` - -You may wish to constrain the resource to a specific bucket. - -@include 'builders/aws-ssh-differentiation-table.mdx' diff --git a/website/content/docs/datasources/amazon/ami.mdx b/website/content/docs/datasources/amazon/ami.mdx deleted file mode 100644 index b8b1a2a63..000000000 --- a/website/content/docs/datasources/amazon/ami.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -description: | - The Amazon AMI data source provides information from an AMI that will be fetched based - on the filter options provided in the configuration. - -page_title: Amazon AMI - Data Source -sidebar_title: Amazon AMI ---- - -# Amazon AMI Data Source - -Type: `amazon-ami` - -The Amazon AMI data source will filter and fetch an Amazon AMI, and output all the AMI information that will -be then available to use in the [Amazon builders](/docs/builders/amazon/instance). - --> **Note:** Data sources is a feature exclusively to HCL2 templates. - -Basic example of usage: - -```hcl -data "amazon-ami" "basic-example" { - filters = { - virtualization-type = "hvm" - name = "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*" - root-device-type = "ebs" - } - owners = ["099720109477"] - most_recent = true -} -``` -This selects the most recent Ubuntu 16.04 HVM EBS AMI from Canonical. Note that the data source will fail unless -*exactly* one AMI is returned. In the above example, `most_recent` will cause this to succeed by selecting the newest image. - -## Configuration Reference - -@include 'builder/amazon/common/AmiFilterOptions-not-required.mdx' - -## Output Data - -@include 'datasource/amazon/ami/DatasourceOutput.mdx' diff --git a/website/content/docs/datasources/amazon/index.mdx b/website/content/docs/datasources/amazon/index.mdx deleted file mode 100644 index da4300a02..000000000 --- a/website/content/docs/datasources/amazon/index.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: | - Packer is able to fetch data from AWS. To achieve this, Packer comes with - data sources to retrieve AMI and secrets information. -page_title: Amazon - Data Sources -sidebar_title: Amazon ---- - -# Amazon Data Sources - -Packer is able to fetch data from AWS. To achieve this, Packer comes with data sources to retrieve AMI and secrets information. -Packer supports the following data sources at the moment: - -- [amazon-ami](/docs/datasources/amazon/ami) - Filter and fetch an Amazon AMI to output all the AMI information. - -- [amazon-secretsmanager](/docs/datasources/amazon/secretsmanager) - Retrieve information -about a Secrets Manager secret version, including its secret value. - - -## Authentication - -The Amazon Data Sources authentication works just like for the [Amazon Builders](/docs/builders/amazon). Both -have the same authentication options and you can refer to the [Amazon Builders authentication](/docs/builders/amazon#authentication) -to learn the options to authenticate for data sources. - --> **Note:** A data source will start and execute in your own authentication session. The authentication in the data source -doesn't relate with the authentication on Amazon Builders. - -Basic example of an Amazon data source authentication using `assume_role`: - -```hcl -data "amazon-secretsmanager" "basic-example" { - name = "packer_test_secret" - key = "packer_test_key" - - assume_role { - role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" - session_name = "SESSION_NAME" - external_id = "EXTERNAL_ID" - } -} -``` diff --git a/website/content/docs/datasources/amazon/secretsmanager.mdx b/website/content/docs/datasources/amazon/secretsmanager.mdx deleted file mode 100644 index 352cf8306..000000000 --- a/website/content/docs/datasources/amazon/secretsmanager.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -description: | - The Amazon Secrets Manager data source provides information about a Secrets Manager secret version, - including its secret value. - -page_title: Secrets Manager - Data Source -sidebar_title: Secrets Manager ---- - -# Amazon Secrets Manager Data Source - -The Secrets Manager data source provides information about a Secrets Manager secret version, -including its secret value. - --> **Note:** Data sources is a feature exclusively to HCL2 templates. - -Basic examples of usage: - -```hcl -data "amazon-secretsmanager" "basic-example" { - name = "packer_test_secret" - key = "packer_test_key" - version_stage = "example" -} - -# usage example of the data source output -locals { - value = data.amazon-secretsmanager.basic-example.value - secret_string = data.amazon-secretsmanager.basic-example.secret_string - version_id = data.amazon-secretsmanager.basic-example.version_id - secret_value = jsondecode(data.amazon-secretsmanager.basic-example.secret_string)["packer_test_key"] -} -``` - -Reading key-value pairs from JSON back into a native Packer map can be accomplished -with the [jsondecode() function](/docs/templates/hcl_templates/functions/encoding/jsondecode). - - -## Configuration Reference - -### Required - -@include 'datasource/amazon/secretsmanager/Config-required.mdx' - -### Optional - -@include 'datasource/amazon/secretsmanager/Config-not-required.mdx' - -## Output Data - -@include 'datasource/amazon/secretsmanager/DatasourceOutput.mdx' diff --git a/website/content/docs/plugins/creation/custom-datasources.mdx b/website/content/docs/plugins/creation/custom-datasources.mdx index b9f1055fd..238232b9f 100644 --- a/website/content/docs/plugins/creation/custom-datasources.mdx +++ b/website/content/docs/plugins/creation/custom-datasources.mdx @@ -10,7 +10,7 @@ sidebar_title: Custom Data Sources Packer Data Sources are the components of Packer that allow data to be fetched for use within the configuration. Use of data sources allows a build to use information defined outside of Packer. An example of -data source is the [amazon-ami data source](/docs/datasources/amazon/ami), which outputs the data of a fetched Amazon AMI. +data source is the [amazon-ami data source](/docs/datasources/amazon/ami.mdx), which outputs the data of a fetched Amazon AMI. Prior to reading this page, it is assumed you have read the page on [plugin development basics](/docs/plugins). diff --git a/website/content/docs/post-processors/amazon-import.mdx b/website/content/docs/post-processors/amazon-import.mdx deleted file mode 100644 index a497bda45..000000000 --- a/website/content/docs/post-processors/amazon-import.mdx +++ /dev/null @@ -1,257 +0,0 @@ ---- -description: | - The Packer Amazon Import post-processor takes an OVA artifact from various - builders and imports it to an AMI available to Amazon Web Services EC2. -page_title: Amazon Import - Post-Processors -sidebar_title: Amazon Import ---- - -# Amazon Import Post-Processor - -Type: `amazon-import` -Artifact BuilderId: `packer.post-processor.amazon-import` - -The Packer Amazon Import post-processor takes an OVA artifact from various -builders and imports it to an AMI available to Amazon Web Services EC2. - -~> This post-processor is for advanced users. It depends on specific IAM -roles inside AWS and is best used with images that operate with the EC2 -configuration model (eg, cloud-init for Linux systems). Please ensure you read -the [prerequisites for import](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html) -before using this post-processor. - -## How Does it Work? - -The import process operates making a temporary copy of the OVA to an S3 bucket, -and calling an import task in EC2 on the OVA file. Once completed, an AMI is -returned containing the converted virtual machine. The temporary OVA copy in S3 -can be discarded after the import is complete. - -The import process itself run by AWS includes modifications to the image -uploaded, to allow it to boot and operate in the AWS EC2 environment. However, -not all modifications required to make the machine run well in EC2 are -performed. Take care around console output from the machine, as debugging can -be very difficult without it. You may also want to include tools suitable for -instances in EC2 such as `cloud-init` for Linux. - -Further information about the import process can be found in AWS's [EC2 -Import/Export Instance -documentation](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instances_of_your_vm.html). - -## Configuration - -There are some configuration options available for the post-processor. They are -segmented below into two categories: required and optional parameters. Within -each category, the available configuration keys are alphabetized. - -Required: - -- `access_key` (string) - The access key used to communicate with AWS. [Learn - how to set this.](/docs/builders/amazon#specifying-amazon-credentials) - -- `region` (string) - The name of the region, such as `us-east-1` in which to - upload the OVA file to S3 and create the AMI. A list of valid regions can - be obtained with AWS CLI tools or by consulting the AWS website. - -- `s3_bucket_name` (string) - The name of the S3 bucket where the OVA file - will be copied to for import. This bucket must exist when the - post-processor is run. - -- `secret_key` (string) - The secret key used to communicate with AWS. [Learn - how to set this.](/docs/builders/amazon#specifying-amazon-credentials) - -Optional: - -- `ami_description` (string) - The description to set for the resulting - imported AMI. By default this description is generated by the AMI import - process. - -- `ami_encrypt` (boolean) - Encrypt the resulting AMI using KMS. This defaults - to `false`. - -- `ami_groups` (array of strings) - A list of groups that have access to - launch the imported AMI. By default no groups have permission to launch the - AMI. `all` will make the AMI publicly accessible. AWS currently doesn't - accept any value other than "all". - -- `ami_kms_key` (string) - The ID of the KMS key used to encrypt the AMI - if `ami_encrypt` is true. If set, the role specified in `role_name` must - be granted access to use this key. If not set, the account default KMS key - will be used. - -- `ami_name` (string) - The name of the ami within the console. If not - specified, this will default to something like `ami-import-sfwerwf`. Please - note, specifying this option will result in a slightly longer execution - time. - -- `ami_users` (array of strings) - A list of account IDs that have access to - launch the imported AMI. By default no additional users other than the user - importing the AMI has permission to launch it. - -- `custom_endpoint_ec2` (string) - This option is useful if you use a cloud - provider whose API is compatible with aws EC2. Specify another endpoint - like this `https://ec2.custom.endpoint.com`. - -- `format` (string) - One of: `ova`, `raw`, `vhd`, `vhdx`, or `vmdk`. This - specifies the format of the source virtual machine image. The resulting - artifact from the builder is assumed to have a file extension matching the - format. This defaults to `ova`. - -- `insecure_skip_tls_verify` (boolean) - This allows skipping TLS - verification of the AWS EC2 endpoint. The default is `false`. - -- `keep_input_artifact` (boolean) - if true, do not delete the source virtual - machine image after importing it to the cloud. Defaults to false. - -- `license_type` (string) - The license type to be used for the Amazon - Machine Image (AMI) after importing. Valid values: `AWS` or `BYOL` - (default). For more details regarding licensing, see - [Prerequisites](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html) - in the VM Import/Export User Guide. - -- `mfa_code` (string) - The MFA - [TOTP](https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) - code. This should probably be a user variable since it changes all the - time. - -- `profile` (string) - The profile to use in the shared credentials file for - AWS. See Amazon's documentation on [specifying - profiles](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-profiles) - for more details. - -- `role_name` (string) - The name of the role to use when not using the - default role, 'vmimport' - -- `s3_encryption` (string) - One of: `aws:kms`, or `AES256`. The algorithm - used to encrypt the artifact in S3. This **does not** encrypt the - resulting AMI, and is only used to encrypt the uploaded artifact before - it becomes an AMI. By default no encryption is used. - -- `s3_encryption_key` (string) - The KMS key ID to use when `aws:kms` is - specified in `s3_encryption`. This setting is ignored if AES is used - as Amazon does not currently support custom AES keys when using the VM - import service. If set, the role specified in `role_name` must be granted - access to use this key. If not set, and `s3_encryption` is set to `aws:kms`, - the account default KMS key will be used. - -- `s3_key_name` (string) - The name of the key in `s3_bucket_name` where the - OVA file will be copied to for import. If not specified, this will default - to "packer-import-{{timestamp}}.ova". This key (i.e., the uploaded OVA) - will be removed after import, unless `skip_clean` is `true`. This is - treated as a [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you - may use user variables and template functions in this field. - -- `skip_clean` (boolean) - Whether we should skip removing the OVA file - uploaded to S3 after the import process has completed. "true" means that we - should leave it in the S3 bucket, "false" means to clean it out. Defaults - to `false`. - -- `skip_region_validation` (boolean) - Set to true if you want to skip - validation of the region configuration option. Default `false`. - -- `tags` (object of key/value strings) - Tags applied to the created AMI and - relevant snapshots. - -- `token` (string) - The access token to use. This is different from the - access key and secret key. If you're not sure what this is, then you - probably don't need it. This will also be read from the `AWS_SESSION_TOKEN` - environmental variable. - -## Basic Example - -Here is a basic example. This assumes that the builder has produced an OVA -artifact for us to work with, and IAM roles for import exist in the AWS account -being imported into. - -```json -{ - "type": "amazon-import", - "access_key": "YOUR KEY HERE", - "secret_key": "YOUR SECRET KEY HERE", - "region": "us-east-1", - "s3_bucket_name": "importbucket", - "license_type": "BYOL", - "tags": { - "Description": "packer amazon-import {{timestamp}}" - } -} -``` - -## VMWare Example - -This is an example that uses `vmware-iso` builder and exports the `.ova` file -using ovftool. - -```json -"post-processors" : [ - [ - { - "type": "shell-local", - "inline": [ "/usr/bin/ovftool /.vmx /.ova" ] - }, - { - "files": [ - "/.ova" - ], - "type": "artifice" - }, - { - "type": "amazon-import", - "access_key": "YOUR KEY HERE", - "secret_key": "YOUR SECRET KEY HERE", - "region": "us-east-1", - "s3_bucket_name": "importbucket", - "license_type": "BYOL", - "tags": { - "Description": "packer amazon-import {{timestamp}}" - } - } - ] - ] -``` - -## Amazon Permissions - -You'll need at least the following permissions in the policy for your IAM user -in order to successfully upload an image via the amazon-import post-processor. - -```json -("ec2:CancelImportTask", -"ec2:CopyImage", -"ec2:CreateTags", -"ec2:DescribeImages", -"ec2:DescribeImportImageTasks", -"ec2:ImportImage", -"ec2:ModifyImageAttribute", -"ec2:DeregisterImage") -``` - -## Troubleshooting Timeouts - -The amazon-import feature can take a long time to upload and convert your OVAs -into AMIs; if you find that your build is failing because you have exceeded -your max retries or find yourself being rate limited, you can override the max -retries and the delay in between retries by setting the environment variables -`AWS_MAX_ATTEMPTS` and `AWS_POLL_DELAY_SECONDS` on the machine running the -Packer build. By default, the waiter that waits for your image to be imported -from s3 will retry for up to an hour: it retries up to 720 times with a 5 -second delay in between retries. - -This is dramatically higher than many of our other waiters, to account for how -long this process can take. - --> **Note:** Packer can also read the access key and secret access key from -environmental variables. See the configuration reference in the section above -for more information on what environmental variables Packer will look for. - -This will take the OVA generated by a builder and upload it to S3. In this -case, an existing bucket called `importbucket` in the `us-east-1` region will -be where the copy is placed. The key name of the copy will be a default name -generated by packer. - -Once uploaded, the import process will start, creating an AMI in the -"us-east-1" region with a "Description" tag applied to both the AMI and the -snapshots associated with it. Note: the import process does not allow you to -name the AMI, the name is automatically generated by AWS. - -After tagging is completed, the OVA uploaded to S3 will be removed. diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index 1bc7152c9..7bbfbc015 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -78,11 +78,11 @@ Example of using [upper](/docs/templates/hcl_templates/functions/string/upper) t For builder-specific builder variables, please also refer to the builder docs: -- Amazon EC2: [chroot](/docs/builders/amazon/chroot#build-shared-information-variables), - [EBS Volume](/docs/builders/amazon/ebsvolume#build-shared-information-variables), - [EBS](/docs/builders/amazon/ebs#build-shared-information-variables), - [EBS Surrogate](/docs/builders/amazon/ebssurrogate#build-shared-information-variables), - [Instance](/docs/builders/amazon/instance#build-shared-information-variables). +- Amazon EC2: [chroot](/docs/builders/amazon/chroot.mdx#build-shared-information-variables), + [EBS Volume](/docs/builders/amazon/ebsvolume.mdx#build-shared-information-variables), + [EBS](/docs/builders/amazon/ebs.mdx#build-shared-information-variables), + [EBS Surrogate](/docs/builders/amazon/ebssurrogate.mdx#build-shared-information-variables), + [Instance](/docs/builders/amazon/instance.mdx#build-shared-information-variables). The HCL2 Special Build Variables is in beta; please report any issues or requests on the Packer issue tracker on GitHub. diff --git a/website/content/docs/templates/legacy_json_templates/engine.mdx b/website/content/docs/templates/legacy_json_templates/engine.mdx index 0868f84a6..727ff2135 100644 --- a/website/content/docs/templates/legacy_json_templates/engine.mdx +++ b/website/content/docs/templates/legacy_json_templates/engine.mdx @@ -110,11 +110,11 @@ Here is a full list of the available functions for reference. For builder-specific builder variables, please also refer to the builder docs: - - Amazon EC2: [chroot](/docs/builders/amazon/chroot#build-shared-information-variables), - [EBS Volume](/docs/builders/amazon/ebsvolume#build-shared-information-variables), - [EBS](/docs/builders/amazon/ebs#build-shared-information-variables), - [EBS Surrogate](/docs/builders/amazon/ebssurrogate#build-shared-information-variables), - [Instance](/docs/builders/amazon/instance#build-shared-information-variables). + - Amazon EC2: [chroot](/docs/builders/amazon/chroot.mdx#build-shared-information-variables), + [EBS Volume](/docs/builders/amazon/ebsvolume.mdx#build-shared-information-variables), + [EBS](/docs/builders/amazon/ebs.mdx#build-shared-information-variables), + [EBS Surrogate](/docs/builders/amazon/ebssurrogate.mdx#build-shared-information-variables), + [Instance](/docs/builders/amazon/instance.mdx#build-shared-information-variables). This engine is in beta; please report any issues or requests on the Packer issue tracker on GitHub. diff --git a/website/content/guides/hcl/component-object-spec.mdx b/website/content/guides/hcl/component-object-spec.mdx index 4a9d31a3b..d05df574d 100644 --- a/website/content/guides/hcl/component-object-spec.mdx +++ b/website/content/guides/hcl/component-object-spec.mdx @@ -40,4 +40,4 @@ follow to make it HCL2 enabled: From now on every time you add or change a field of Config you will need to run the `go generate` command again. -A good example of this is the [Config struct of the amazon-ebs builder](https://github.com/hashicorp/packer/blob/master/builder/amazon/ebs/builder.go) +A good example of this is the [Config struct of the amazon-ebs builder](https://github.com/hashicorp/packer-plugin-amazon/blob/main/builder/ebs/builder.go) diff --git a/website/content/partials/builder/amazon/chroot/Config-not-required.mdx b/website/content/partials/builder/amazon/chroot/Config-not-required.mdx deleted file mode 100644 index 9952dafda..000000000 --- a/website/content/partials/builder/amazon/chroot/Config-not-required.mdx +++ /dev/null @@ -1,154 +0,0 @@ - - -- `ami_block_device_mappings` (awscommon.BlockDevices) - Add one or more [block device - mappings](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html) - to the AMI. If this field is populated, and you are building from an - existing source image, the block device mappings in the source image - will be overwritten. This means you must have a block device mapping - entry for your root volume, `root_volume_size` and `root_device_name`. - See the [BlockDevices](#block-devices-configuration) documentation for - fields. - -- `chroot_mounts` ([][]string) - This is a list of devices to mount into the chroot environment. This - configuration parameter requires some additional documentation which is - in the Chroot Mounts section. Please read that section for more - information on how to use this. - -- `command_wrapper` (string) - How to run shell commands. This defaults to `{{.Command}}`. This may be - useful to set if you want to set environmental variables or perhaps run - it with sudo or so on. This is a configuration template where the - .Command variable is replaced with the command to be run. Defaults to - `{{.Command}}`. - -- `copy_files` ([]string) - Paths to files on the running EC2 instance that will be copied into the - chroot environment prior to provisioning. Defaults to /etc/resolv.conf - so that DNS lookups work. Pass an empty list to skip copying - /etc/resolv.conf. You may need to do this if you're building an image - that uses systemd. - -- `device_path` (string) - The path to the device where the root volume of the source AMI will be - attached. This defaults to "" (empty string), which forces Packer to - find an open device automatically. - -- `nvme_device_path` (string) - When we call the mount command (by default mount -o device dir), the - string provided in nvme_mount_path will replace device in that command. - When this option is not set, device in that command will be something - like /dev/sdf1, mirroring the attached device name. This assumption - works for most instances but will fail with c5 and m5 instances. In - order to use the chroot builder with c5 and m5 instances, you must - manually set nvme_device_path and device_path. - -- `from_scratch` (bool) - Build a new volume instead of starting from an existing AMI root volume - snapshot. Default false. If true, source_ami/source_ami_filter are no - longer used and the following options become required: - ami_virtualization_type, pre_mount_commands and root_volume_size. - -- `mount_options` ([]string) - Options to supply the mount command when mounting devices. Each option - will be prefixed with -o and supplied to the mount command ran by - Packer. Because this command is ran in a shell, user discretion is - advised. See this manual page for the mount command for valid file - system specific options. - -- `mount_partition` (string) - The partition number containing the / partition. By default this is the - first partition of the volume, (for example, xvda1) but you can - designate the entire block device by setting "mount_partition": "0" in - your config, which will mount xvda instead. - -- `mount_path` (string) - The path where the volume will be mounted. This is where the chroot - environment will be. This defaults to - `/mnt/packer-amazon-chroot-volumes/{{.Device}}`. This is a configuration - template where the .Device variable is replaced with the name of the - device where the volume is attached. - -- `post_mount_commands` ([]string) - As pre_mount_commands, but the commands are executed after mounting the - root device and before the extra mount and copy steps. The device and - mount path are provided by `{{.Device}}` and `{{.MountPath}}`. - -- `pre_mount_commands` ([]string) - A series of commands to execute after attaching the root volume and - before mounting the chroot. This is not required unless using - from_scratch. If so, this should include any partitioning and filesystem - creation commands. The path to the device is provided by `{{.Device}}`. - -- `root_device_name` (string) - The root device name. For example, xvda. - -- `root_volume_size` (int64) - The size of the root volume in GB for the chroot environment and the - resulting AMI. Default size is the snapshot size of the source_ami - unless from_scratch is true, in which case this field must be defined. - -- `root_volume_type` (string) - The type of EBS volume for the chroot environment and resulting AMI. The - default value is the type of the source_ami, unless from_scratch is - true, in which case the default value is gp2. You can only specify io1 - if building based on top of a source_ami which is also io1. - -- `source_ami_filter` (awscommon.AmiFilterOptions) - Filters used to populate the source_ami field. Example: - - ```json - { - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", - "root-device-type": "ebs" - }, - "owners": ["099720109477"], - "most_recent": true - } - } - ``` - - This selects the most recent Ubuntu 16.04 HVM EBS AMI from Canonical. NOTE: - This will fail unless *exactly* one AMI is returned. In the above example, - `most_recent` will cause this to succeed by selecting the newest image. - - - `filters` (map of strings) - filters used to select a `source_ami`. - NOTE: This will fail unless *exactly* one AMI is returned. Any filter - described in the docs for - [DescribeImages](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) - is valid. - - - `owners` (array of strings) - Filters the images by their owner. You - may specify one or more AWS account IDs, "self" (which will use the - account whose credentials you are using to run Packer), or an AWS owner - alias: for example, "amazon", "aws-marketplace", or "microsoft". This - option is required for security reasons. - - - `most_recent` (boolean) - Selects the newest created image when true. - This is most useful for selecting a daily distro build. - - You may set this in place of `source_ami` or in conjunction with it. If you - set this in conjunction with `source_ami`, the `source_ami` will be added - to the filter. The provided `source_ami` must meet all of the filtering - criteria provided in `source_ami_filter`; this pins the AMI returned by the - filter, but will cause Packer to fail if the `source_ami` does not exist. - -- `root_volume_tags` (map[string]string) - Key/value pair tags to apply to the volumes that are *launched*. This is - a [template engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `root_volume_tag` ([]{key string, value string}) - Same as [`root_volume_tags`](#root_volume_tags) but defined as a - singular block containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `root_volume_encrypt_boot` (boolean) - Whether or not to encrypt the volumes that are *launched*. By default, Packer will keep - the encryption setting to what it was in the source image when set to `false`. Setting true will - always result in an encrypted one. - -- `root_volume_kms_key_id` (string) - ID, alias or ARN of the KMS key to use for *launched* volumes encryption. - - Set this value if you select `root_volume_encrypt_boot`, but don't want to use the - region's default KMS key. - - If you have a custom kms key you'd like to apply to the launch volume, - and are only building in one region, it is more efficient to set this - and `root_volume_encrypt_boot` to `true` and not use `encrypt_boot` and `kms_key_id`. This saves - potentially many minutes at the end of the build by preventing Packer - from having to copy and re-encrypt the image at the end of the build. - - For valid formats see *KmsKeyId* in the [AWS API docs - - CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html). - This field is validated by Packer, when using an alias, you will have to - prefix `kms_key_id` with `alias/`. - -- `ami_architecture` (string) - what architecture to use when registering the final AMI; valid options - are "x86_64" or "arm64". Defaults to "x86_64". diff --git a/website/content/partials/builder/amazon/chroot/Config-required.mdx b/website/content/partials/builder/amazon/chroot/Config-required.mdx deleted file mode 100644 index b0827d61f..000000000 --- a/website/content/partials/builder/amazon/chroot/Config-required.mdx +++ /dev/null @@ -1,6 +0,0 @@ - - -- `source_ami` (string) - The source AMI whose root volume will be copied and provisioned on the - currently running instance. This must be an EBS-backed AMI with a root - volume snapshot that you have access to. Note: this is not used when - from_scratch is set to true. diff --git a/website/content/partials/builder/amazon/chroot/Config.mdx b/website/content/partials/builder/amazon/chroot/Config.mdx deleted file mode 100644 index 7de2e8261..000000000 --- a/website/content/partials/builder/amazon/chroot/Config.mdx +++ /dev/null @@ -1,4 +0,0 @@ - - -Config is the configuration that is chained through the steps and settable -from the template. diff --git a/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx b/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx deleted file mode 100644 index c07f415c9..000000000 --- a/website/content/partials/builder/amazon/common/AMIConfig-not-required.mdx +++ /dev/null @@ -1,118 +0,0 @@ - - -- `ami_description` (string) - The description to set for the resulting - AMI(s). By default this description is empty. This is a - [template engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `ami_virtualization_type` (string) - The type of virtualization for the AMI - you are building. This option is required to register HVM images. Can be - paravirtual (default) or hvm. - -- `ami_users` ([]string) - A list of account IDs that have access to - launch the resulting AMI(s). By default no additional users other than the - user creating the AMI has permissions to launch it. - -- `ami_groups` ([]string) - A list of groups that have access to - launch the resulting AMI(s). By default no groups have permission to launch - the AMI. all will make the AMI publicly accessible. - -- `ami_product_codes` ([]string) - A list of product codes to - associate with the AMI. By default no product codes are associated with the - AMI. - -- `ami_regions` ([]string) - A list of regions to copy the AMI to. - Tags and attributes are copied along with the AMI. AMI copying takes time - depending on the size of the AMI, but will generally take many minutes. - -- `skip_region_validation` (bool) - Set to true if you want to skip - validation of the ami_regions configuration option. Default false. - -- `tags` (map[string]string) - Key/value pair tags applied to the AMI. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `tag` ([]{key string, value string}) - Same as [`tags`](#tags) but defined as a singular repeatable block - containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `ena_support` (boolean) - Enable enhanced networking (ENA but not SriovNetSupport) on - HVM-compatible AMIs. If set, add `ec2:ModifyInstanceAttribute` to your - AWS IAM policy. - - Note: you must make sure enhanced networking is enabled on your - instance. See [Amazon's documentation on enabling enhanced - networking](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html#enabling_enhanced_networking). - -- `sriov_support` (bool) - Enable enhanced networking (SriovNetSupport but not ENA) on - HVM-compatible AMIs. If true, add `ec2:ModifyInstanceAttribute` to your - AWS IAM policy. Note: you must make sure enhanced networking is enabled - on your instance. See [Amazon's documentation on enabling enhanced - networking](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html#enabling_enhanced_networking). - Default `false`. - -- `force_deregister` (bool) - Force Packer to first deregister an existing - AMI if one with the same name already exists. Default false. - -- `force_delete_snapshot` (bool) - Force Packer to delete snapshots - associated with AMIs, which have been deregistered by force_deregister. - Default false. - -- `encrypt_boot` (boolean) - Whether or not to encrypt the resulting AMI when - copying a provisioned instance to an AMI. By default, Packer will keep - the encryption setting to what it was in the source image. Setting false - will result in an unencrypted image, and true will result in an encrypted - one. - - If you have used the `launch_block_device_mappings` to set an encryption - key and that key is the same as the one you want the image encrypted with - at the end, then you don't need to set this field; leaving it empty will - prevent an unnecessary extra copy step and save you some time. - - Please note that if you are using an account with the global "Always - encrypt new EBS volumes" option set to `true`, Packer will be unable to - override this setting, and the final image will be encryoted whether - you set this value or not. - -- `kms_key_id` (string) - ID, alias or ARN of the KMS key to use for AMI encryption. This - only applies to the main `region` -- any regions the AMI gets copied to - copied will be encrypted by the default EBS KMS key for that region, - unless you set region-specific keys in AMIRegionKMSKeyIDs. - - Set this value if you select `encrypt_boot`, but don't want to use the - region's default KMS key. - - If you have a custom kms key you'd like to apply to the launch volume, - and are only building in one region, it is more efficient to leave this - and `encrypt_boot` empty and to instead set the key id in the - launch_block_device_mappings (you can find an example below). This saves - potentially many minutes at the end of the build by preventing Packer - from having to copy and re-encrypt the image at the end of the build. - - For valid formats see *KmsKeyId* in the [AWS API docs - - CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html). - This field is validated by Packer, when using an alias, you will have to - prefix `kms_key_id` with `alias/`. - -- `region_kms_key_ids` (map[string]string) - regions to copy the ami to, along with the custom kms key id (alias or - arn) to use for encryption for that region. Keys must match the regions - provided in `ami_regions`. If you just want to encrypt using a default - ID, you can stick with `kms_key_id` and `ami_regions`. If you want a - region to be encrypted with that region's default key ID, you can use an - empty string `""` instead of a key id in this map. (e.g. `"us-east-1": - ""`) However, you cannot use default key IDs if you are using this in - conjunction with `snapshot_users` -- in that situation you must use - custom keys. For valid formats see *KmsKeyId* in the [AWS API docs - - CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html). - - This option supercedes the `kms_key_id` option -- if you set both, and - they are different, Packer will respect the value in - `region_kms_key_ids` for your build region and silently disregard the - value provided in `kms_key_id`. - -- `skip_save_build_region` (bool) - If true, Packer will not check whether an AMI with the `ami_name` exists - in the region it is building in. It will use an intermediary AMI name, - which it will not convert to an AMI in the build region. It will copy - the intermediary AMI into any regions provided in `ami_regions`, then - delete the intermediary AMI. Default `false`. diff --git a/website/content/partials/builder/amazon/common/AMIConfig-required.mdx b/website/content/partials/builder/amazon/common/AMIConfig-required.mdx deleted file mode 100644 index b6c179c18..000000000 --- a/website/content/partials/builder/amazon/common/AMIConfig-required.mdx +++ /dev/null @@ -1,6 +0,0 @@ - - -- `ami_name` (string) - The name of the resulting AMI that will appear when managing AMIs in the - AWS console or via APIs. This must be unique. To help make this unique, - use a function like timestamp (see [template - engine](/docs/templates/legacy_json_templates/engine) for more info). diff --git a/website/content/partials/builder/amazon/common/AMIConfig.mdx b/website/content/partials/builder/amazon/common/AMIConfig.mdx deleted file mode 100644 index 0f65733bb..000000000 --- a/website/content/partials/builder/amazon/common/AMIConfig.mdx +++ /dev/null @@ -1,3 +0,0 @@ - - -AMIConfig is for common configuration related to creating AMIs. diff --git a/website/content/partials/builder/amazon/common/AWSPollingConfig-not-required.mdx b/website/content/partials/builder/amazon/common/AWSPollingConfig-not-required.mdx deleted file mode 100644 index 1462788e2..000000000 --- a/website/content/partials/builder/amazon/common/AWSPollingConfig-not-required.mdx +++ /dev/null @@ -1,11 +0,0 @@ - - -- `max_attempts` (int) - Specifies the maximum number of attempts the waiter will check for resource state. - This value can also be set via the AWS_MAX_ATTEMPTS. - If both option and environment variable are set, the max_attempts will be considered over the AWS_MAX_ATTEMPTS. - If none is set, defaults to AWS waiter default which is 40 max_attempts. - -- `delay_seconds` (int) - Specifies the delay in seconds between attempts to check the resource state. - This value can also be set via the AWS_POLL_DELAY_SECONDS. - If both option and environment variable are set, the delay_seconds will be considered over the AWS_POLL_DELAY_SECONDS. - If none is set, defaults to AWS waiter default which is 15 seconds. diff --git a/website/content/partials/builder/amazon/common/AWSPollingConfig.mdx b/website/content/partials/builder/amazon/common/AWSPollingConfig.mdx deleted file mode 100644 index e56f6ea93..000000000 --- a/website/content/partials/builder/amazon/common/AWSPollingConfig.mdx +++ /dev/null @@ -1,20 +0,0 @@ - - -Polling configuration for the AWS waiter. Configures the waiter for resources creation or actions like attaching -volumes or importing image. - -HCL2 example: -```hcl -aws_polling { - delay_seconds = 30 - max_attempts = 50 -} -``` - -JSON example: -```json -"aws_polling" : { - "delay_seconds": 30, - "max_attempts": 50 -} -``` diff --git a/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx b/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx deleted file mode 100644 index f002ac703..000000000 --- a/website/content/partials/builder/amazon/common/AccessConfig-not-required.mdx +++ /dev/null @@ -1,92 +0,0 @@ - - -- `assume_role` (AssumeRoleConfig) - If provided with a role ARN, Packer will attempt to assume this role - using the supplied credentials. See - [AssumeRoleConfig](#assume-role-configuration) below for more - details on all of the options available, and for a usage example. - -- `custom_endpoint_ec2` (string) - This option is useful if you use a cloud - provider whose API is compatible with aws EC2. Specify another endpoint - like this https://ec2.custom.endpoint.com. - -- `shared_credentials_file` (string) - Path to a credentials file to load credentials from - -- `decode_authorization_messages` (bool) - Enable automatic decoding of any encoded authorization (error) messages - using the `sts:DecodeAuthorizationMessage` API. Note: requires that the - effective user/role have permissions to `sts:DecodeAuthorizationMessage` - on resource `*`. Default `false`. - -- `insecure_skip_tls_verify` (bool) - This allows skipping TLS - verification of the AWS EC2 endpoint. The default is false. - -- `max_retries` (int) - This is the maximum number of times an API call is retried, in the case - where requests are being throttled or experiencing transient failures. - The delay between the subsequent API calls increases exponentially. - -- `mfa_code` (string) - The MFA - [TOTP](https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) - code. This should probably be a user variable since it changes all the - time. - -- `profile` (string) - The profile to use in the shared credentials file for - AWS. See Amazon's documentation on [specifying - profiles](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-profiles) - for more details. - -- `skip_metadata_api_check` (bool) - Skip Metadata Api Check - -- `skip_credential_validation` (bool) - Set to true if you want to skip validating AWS credentials before runtime. - -- `token` (string) - The access token to use. This is different from the - access key and secret key. If you're not sure what this is, then you - probably don't need it. This will also be read from the AWS_SESSION_TOKEN - environmental variable. - -- `vault_aws_engine` (VaultAWSEngineOptions) - Get credentials from HashiCorp Vault's aws secrets engine. You must - already have created a role to use. For more information about - generating credentials via the Vault engine, see the [Vault - docs.](https://www.vaultproject.io/api/secret/aws#generate-credentials) - If you set this flag, you must also set the below options: - - `name` (string) - Required. Specifies the name of the role to generate - credentials against. This is part of the request URL. - - `engine_name` (string) - The name of the aws secrets engine. In the - Vault docs, this is normally referred to as "aws", and Packer will - default to "aws" if `engine_name` is not set. - - `role_arn` (string)- The ARN of the role to assume if credential\_type - on the Vault role is assumed\_role. Must match one of the allowed role - ARNs in the Vault role. Optional if the Vault role only allows a single - AWS role ARN; required otherwise. - - `ttl` (string) - Specifies the TTL for the use of the STS token. This - is specified as a string with a duration suffix. Valid only when - credential\_type is assumed\_role or federation\_token. When not - specified, the default\_sts\_ttl set for the role will be used. If that - is also not set, then the default value of 3600s will be used. AWS - places limits on the maximum TTL allowed. See the AWS documentation on - the DurationSeconds parameter for AssumeRole (for assumed\_role - credential types) and GetFederationToken (for federation\_token - credential types) for more details. - - HCL2 example: - - ```hcl - vault_aws_engine { - name = "myrole" - role_arn = "myarn" - ttl = "3600s" - } - ``` - - JSON example: - - ```json - { - "vault_aws_engine": { - "name": "myrole", - "role_arn": "myarn", - "ttl": "3600s" - } - } - ``` - -- `aws_polling` (\*AWSPollingConfig) - [Polling configuration](#polling-configuration) for the AWS waiter. Configures the waiter that checks - resource state. diff --git a/website/content/partials/builder/amazon/common/AccessConfig-required.mdx b/website/content/partials/builder/amazon/common/AccessConfig-required.mdx deleted file mode 100644 index 23fb2db77..000000000 --- a/website/content/partials/builder/amazon/common/AccessConfig-required.mdx +++ /dev/null @@ -1,14 +0,0 @@ - - -- `access_key` (string) - The access key used to communicate with AWS. [Learn how to set this] - (/docs/builders/amazon#specifying-amazon-credentials). On EBS, this - is not required if you are using `use_vault_aws_engine` for - authentication instead. - -- `region` (string) - The name of the region, such as `us-east-1`, in which - to launch the EC2 instance to create the AMI. - When chroot building, this value is guessed from environment. - -- `secret_key` (string) - The secret key used to communicate with AWS. [Learn how to set - this](/docs/builders/amazon#specifying-amazon-credentials). This is not required - if you are using `use_vault_aws_engine` for authentication instead. diff --git a/website/content/partials/builder/amazon/common/AccessConfig.mdx b/website/content/partials/builder/amazon/common/AccessConfig.mdx deleted file mode 100644 index 198f9c266..000000000 --- a/website/content/partials/builder/amazon/common/AccessConfig.mdx +++ /dev/null @@ -1,3 +0,0 @@ - - -AccessConfig is for common configuration related to AWS access diff --git a/website/content/partials/builder/amazon/common/AmiFilterOptions-not-required.mdx b/website/content/partials/builder/amazon/common/AmiFilterOptions-not-required.mdx deleted file mode 100644 index bcd0f9bd2..000000000 --- a/website/content/partials/builder/amazon/common/AmiFilterOptions-not-required.mdx +++ /dev/null @@ -1,14 +0,0 @@ - - -- `filters` (map[string]string) - Filters used to select an AMI. Any filter described in the docs for - [DescribeImages](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) - is valid. - -- `owners` ([]string) - Filters the images by their owner. You - may specify one or more AWS account IDs, "self" (which will use the - account whose credentials you are using to run Packer), or an AWS owner - alias: for example, `amazon`, `aws-marketplace`, or `microsoft`. This - option is required for security reasons. - -- `most_recent` (bool) - Selects the newest created image when true. - This is most useful for selecting a daily distro build. diff --git a/website/content/partials/builder/amazon/common/AssumeRoleConfig-not-required.mdx b/website/content/partials/builder/amazon/common/AssumeRoleConfig-not-required.mdx deleted file mode 100644 index b330b6f09..000000000 --- a/website/content/partials/builder/amazon/common/AssumeRoleConfig-not-required.mdx +++ /dev/null @@ -1,20 +0,0 @@ - - -- `role_arn` (string) - Amazon Resource Name (ARN) of the IAM Role to assume. - -- `duration_seconds` (int) - Number of seconds to restrict the assume role session duration. - -- `external_id` (string) - The external ID to use when assuming the role. If omitted, no external - ID is passed to the AssumeRole call. - -- `policy` (string) - IAM Policy JSON describing further restricting permissions for the IAM - Role being assumed. - -- `policy_arns` ([]string) - Set of Amazon Resource Names (ARNs) of IAM Policies describing further - restricting permissions for the IAM Role being - -- `session_name` (string) - Session name to use when assuming the role. - -- `tags` (map[string]string) - Map of assume role session tags. - -- `transitive_tag_keys` ([]string) - Set of assume role session tag keys to pass to any subsequent sessions. diff --git a/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx b/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx deleted file mode 100644 index bacfe40a1..000000000 --- a/website/content/partials/builder/amazon/common/AssumeRoleConfig.mdx +++ /dev/null @@ -1,31 +0,0 @@ - - -AssumeRoleConfig lets users set configuration options for assuming a special -role when executing Packer. - -Usage example: - -HCL config example: - -```HCL -source "amazon-ebs" "example" { - assume_role { - role_arn = "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" - session_name = "SESSION_NAME" - external_id = "EXTERNAL_ID" - } -} -``` - -JSON config example: - -```json -builder{ - "type": "amazon-ebs", - "assume_role": { - "role_arn" : "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME", - "session_name": "SESSION_NAME", - "external_id" : "EXTERNAL_ID" - } -} -``` diff --git a/website/content/partials/builder/amazon/common/BlockDevice-not-required.mdx b/website/content/partials/builder/amazon/common/BlockDevice-not-required.mdx deleted file mode 100644 index f9f7b5c31..000000000 --- a/website/content/partials/builder/amazon/common/BlockDevice-not-required.mdx +++ /dev/null @@ -1,49 +0,0 @@ - - -- `delete_on_termination` (bool) - Indicates whether the EBS volume is deleted on instance termination. - Default false. NOTE: If this value is not explicitly set to true and - volumes are not cleaned up by an alternative method, additional volumes - will accumulate after every build. - -- `device_name` (string) - The device name exposed to the instance (for example, /dev/sdh or xvdh). - Required for every device in the block device mapping. - -- `encrypted` (boolean) - Indicates whether or not to encrypt the volume. By default, Packer will - keep the encryption setting to what it was in the source image. Setting - false will result in an unencrypted device, and true will result in an - encrypted one. - -- `iops` (\*int64) - The number of I/O operations per second (IOPS) that the volume supports. - See the documentation on - [IOPs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html) - for more information - -- `no_device` (bool) - Suppresses the specified device included in the block device mapping of - the AMI. - -- `snapshot_id` (string) - The ID of the snapshot. - -- `throughput` (\*int64) - The throughput for gp3 volumes, only valid for gp3 types - See the documentation on - [Throughput](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html) - for more information - -- `virtual_name` (string) - The virtual device name. See the documentation on Block Device Mapping - for more information. - -- `volume_type` (string) - The volume type. gp2 & gp3 for General Purpose (SSD) volumes, io1 & io2 - for Provisioned IOPS (SSD) volumes, st1 for Throughput Optimized HDD, - sc1 for Cold HDD, and standard for Magnetic volumes. - -- `volume_size` (int64) - The size of the volume, in GiB. Required if not specifying a - snapshot_id. - -- `kms_key_id` (string) - ID, alias or ARN of the KMS key to use for boot volume encryption. - This option exists for launch_block_device_mappings but not - ami_block_device_mappings. The kms key id defined here only applies to - the original build region; if the AMI gets copied to other regions, the - volume in those regions will be encrypted by the default EBS KMS key. - For valid formats see KmsKeyId in the [AWS API docs - - CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html) - This field is validated by Packer. When using an alias, you will have to - prefix kms_key_id with alias/. diff --git a/website/content/partials/builder/amazon/common/BlockDevice.mdx b/website/content/partials/builder/amazon/common/BlockDevice.mdx deleted file mode 100644 index 29c68b441..000000000 --- a/website/content/partials/builder/amazon/common/BlockDevice.mdx +++ /dev/null @@ -1,36 +0,0 @@ - - -These will be attached when launching your instance. Your -options here may vary depending on the type of VM you use. - -Example use case: - -The following mapping will tell Packer to encrypt the root volume of the -build instance at launch using a specific non-default kms key: - -HCL2 example: - -```hcl -launch_block_device_mappings { - device_name = "/dev/sda1" - encrypted = true - kms_key_id = "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" -} -``` - -JSON example: -```json -"launch_block_device_mappings": [ - { - "device_name": "/dev/sda1", - "encrypted": true, - "kms_key_id": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" - } -] -``` - -Please note that the kms_key_id option in this example exists for -launch_block_device_mappings but not ami_block_device_mappings. - -Documentation for Block Devices Mappings can be found here: -https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html diff --git a/website/content/partials/builder/amazon/common/MetadataOptions-not-required.mdx b/website/content/partials/builder/amazon/common/MetadataOptions-not-required.mdx deleted file mode 100644 index dd1eb033c..000000000 --- a/website/content/partials/builder/amazon/common/MetadataOptions-not-required.mdx +++ /dev/null @@ -1,10 +0,0 @@ - - -- `http_endpoint` (string) - A string to enable or disble the IMDS endpoint for an instance. Defaults to enabled. - Accepts either "enabled" or "disabled" - -- `http_tokens` (string) - A string to either set the use of IMDSv2 for the instance to optional or required. Defaults to "optional". - Accepts either "optional" or "required" - -- `http_put_response_hop_limit` (int64) - A numerical value to set an upper limit for the amount of hops allowed when communicating with IMDS endpoints. - Defaults to 1. diff --git a/website/content/partials/builder/amazon/common/MetadataOptions.mdx b/website/content/partials/builder/amazon/common/MetadataOptions.mdx deleted file mode 100644 index 3cbdc1b6c..000000000 --- a/website/content/partials/builder/amazon/common/MetadataOptions.mdx +++ /dev/null @@ -1,4 +0,0 @@ - - -Configures the metadata options. -See [Configure IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) for details. diff --git a/website/content/partials/builder/amazon/common/PolicyDocument-not-required.mdx b/website/content/partials/builder/amazon/common/PolicyDocument-not-required.mdx deleted file mode 100644 index c54034445..000000000 --- a/website/content/partials/builder/amazon/common/PolicyDocument-not-required.mdx +++ /dev/null @@ -1,5 +0,0 @@ - - -- `Version` (string) - Version - -- `Statement` ([]Statement) - Statement diff --git a/website/content/partials/builder/amazon/common/RunConfig-not-required.mdx b/website/content/partials/builder/amazon/common/RunConfig-not-required.mdx deleted file mode 100644 index 4de67420f..000000000 --- a/website/content/partials/builder/amazon/common/RunConfig-not-required.mdx +++ /dev/null @@ -1,414 +0,0 @@ - - -- `associate_public_ip_address` (bool) - If using a non-default VPC, - public IP addresses are not provided by default. If this is true, your - new instance will get a Public IP. default: false - -- `availability_zone` (string) - Destination availability zone to launch - instance in. Leave this empty to allow Amazon to auto-assign. - -- `block_duration_minutes` (int64) - Requires spot_price to be set. The - required duration for the Spot Instances (also known as Spot blocks). This - value must be a multiple of 60 (60, 120, 180, 240, 300, or 360). You can't - specify an Availability Zone group or a launch group if you specify a - duration. - -- `disable_stop_instance` (bool) - Packer normally stops the build instance after all provisioners have - run. For Windows instances, it is sometimes desirable to [run - Sysprep](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html) - which will stop the instance for you. If this is set to `true`, Packer - *will not* stop the instance but will assume that you will send the stop - signal yourself through your final provisioner. You can do this with a - [windows-shell provisioner](/docs/provisioners/windows-shell). Note that - Packer will still wait for the instance to be stopped, and failing to - send the stop signal yourself, when you have set this flag to `true`, - will cause a timeout. - - An example of a valid windows shutdown command in a `windows-shell` - provisioner is : - ```shell-session - ec2config.exe -sysprep - ``` - or - ```sell-session - "%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" - ``` - -> Note: The double quotation marks in the command are not required if - your CMD shell is already in the - `C:\Program Files\Amazon\EC2ConfigService\` directory. - -- `ebs_optimized` (bool) - Mark instance as [EBS - Optimized](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html). - Default `false`. - -- `enable_t2_unlimited` (bool) - Enabling T2 Unlimited allows the source instance to burst additional CPU - beyond its available [CPU - Credits](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-credits-baseline-concepts.html) - for as long as the demand exists. This is in contrast to the standard - configuration that only allows an instance to consume up to its - available CPU Credits. See the AWS documentation for [T2 - Unlimited](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-unlimited.html) - and the **T2 Unlimited Pricing** section of the [Amazon EC2 On-Demand - Pricing](https://aws.amazon.com/ec2/pricing/on-demand/) document for - more information. By default this option is disabled and Packer will set - up a [T2 - Standard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-std.html) - instance instead. - - To use T2 Unlimited you must use a T2 instance type, e.g. `t2.micro`. - Additionally, T2 Unlimited cannot be used in conjunction with Spot - Instances, e.g. when the `spot_price` option has been configured. - Attempting to do so will cause an error. - - !> **Warning!** Additional costs may be incurred by enabling T2 - Unlimited - even for instances that would usually qualify for the - [AWS Free Tier](https://aws.amazon.com/free/). - -- `iam_instance_profile` (string) - The name of an [IAM instance - profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html) - to launch the EC2 instance with. - -- `skip_profile_validation` (bool) - Whether or not to check if the IAM instance profile exists. Defaults to false - -- `temporary_iam_instance_profile_policy_document` (\*PolicyDocument) - Temporary IAM instance profile policy document - If IamInstanceProfile is specified it will be used instead. - - HCL2 example: - ```hcl - temporary_iam_instance_profile_policy_document { - Statement { - Action = ["logs:*"] - Effect = "Allow" - Resource = "*" - } - Version = "2012-10-17" - } - ``` - - JSON example: - ```json - { - "Version": "2012-10-17", - "Statement": [ - { - "Action": [ - "logs:*" - ], - "Effect": "Allow", - "Resource": "*" - } - ] - } - ``` - -- `shutdown_behavior` (string) - Automatically terminate instances on - shutdown in case Packer exits ungracefully. Possible values are stop and - terminate. Defaults to stop. - -- `security_group_filter` (SecurityGroupFilterOptions) - Filters used to populate the `security_group_ids` field. - - HCL2 Example: - - ```hcl - security_group_filter { - filters = { - "tag:Class": "packer" - } - } - ``` - - JSON Example: - ```json - { - "security_group_filter": { - "filters": { - "tag:Class": "packer" - } - } - } - ``` - - This selects the SG's with tag `Class` with the value `packer`. - - - `filters` (map of strings) - filters used to select a - `security_group_ids`. Any filter described in the docs for - [DescribeSecurityGroups](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html) - is valid. - - `security_group_ids` take precedence over this. - -- `run_tags` (map[string]string) - Key/value pair tags to apply to the instance that is that is *launched* - to create the EBS volumes. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `run_tag` ([]{key string, value string}) - Same as [`run_tags`](#run_tags) but defined as a singular repeatable - block containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `security_group_id` (string) - The ID (not the name) of the security - group to assign to the instance. By default this is not set and Packer will - automatically create a new temporary security group to allow SSH access. - Note that if this is specified, you must be sure the security group allows - access to the ssh_port given below. - -- `security_group_ids` ([]string) - A list of security groups as - described above. Note that if this is specified, you must omit the - security_group_id. - -- `source_ami_filter` (AmiFilterOptions) - Filters used to populate the `source_ami` - field. - - HCL2 example: - ```hcl - source "amazon-ebs" "basic-example" { - source_ami_filter { - filters = { - virtualization-type = "hvm" - name = "ubuntu/images/\*ubuntu-xenial-16.04-amd64-server-\*" - root-device-type = "ebs" - } - owners = ["099720109477"] - most_recent = true - } - } - ``` - - JSON Example: - ```json - "builders" [ - { - "type": "amazon-ebs", - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "ubuntu/images/\*ubuntu-xenial-16.04-amd64-server-\*", - "root-device-type": "ebs" - }, - "owners": ["099720109477"], - "most_recent": true - } - } - ] - ``` - - This selects the most recent Ubuntu 16.04 HVM EBS AMI from Canonical. NOTE: - This will fail unless *exactly* one AMI is returned. In the above example, - `most_recent` will cause this to succeed by selecting the newest image. - - - `filters` (map of strings) - filters used to select a `source_ami`. - NOTE: This will fail unless *exactly* one AMI is returned. Any filter - described in the docs for - [DescribeImages](http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) - is valid. - - - `owners` (array of strings) - Filters the images by their owner. You - may specify one or more AWS account IDs, "self" (which will use the - account whose credentials you are using to run Packer), or an AWS owner - alias: for example, `amazon`, `aws-marketplace`, or `microsoft`. This - option is required for security reasons. - - - `most_recent` (boolean) - Selects the newest created image when true. - This is most useful for selecting a daily distro build. - - You may set this in place of `source_ami` or in conjunction with it. If you - set this in conjunction with `source_ami`, the `source_ami` will be added - to the filter. The provided `source_ami` must meet all of the filtering - criteria provided in `source_ami_filter`; this pins the AMI returned by the - filter, but will cause Packer to fail if the `source_ami` does not exist. - -- `spot_instance_types` ([]string) - a list of acceptable instance - types to run your build on. We will request a spot instance using the max - price of spot_price and the allocation strategy of "lowest price". - Your instance will be launched on an instance type of the lowest available - price that you have in your list. This is used in place of instance_type. - You may only set either spot_instance_types or instance_type, not both. - This feature exists to help prevent situations where a Packer build fails - because a particular availability zone does not have capacity for the - specific instance_type requested in instance_type. - -- `spot_price` (string) - With Spot Instances, you pay the Spot price that's in effect for the - time period your instances are running. Spot Instance prices are set by - Amazon EC2 and adjust gradually based on long-term trends in supply and - demand for Spot Instance capacity. - - When this field is set, it represents the maximum hourly price you are - willing to pay for a spot instance. If you do not set this value, it - defaults to a maximum price equal to the on demand price of the - instance. In the situation where the current Amazon-set spot price - exceeds the value set in this field, Packer will not launch an instance - and the build will error. In the situation where the Amazon-set spot - price is less than the value set in this field, Packer will launch and - you will pay the Amazon-set spot price, not this maximum value. - For more information, see the Amazon docs on - [spot pricing](https://aws.amazon.com/ec2/spot/pricing/). - -- `spot_tags` (map[string]string) - Requires spot_price to be set. Key/value pair tags to apply tags to the - spot request that is issued. - -- `spot_tag` ([]{key string, value string}) - Same as [`spot_tags`](#spot_tags) but defined as a singular repeatable block - containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `subnet_filter` (SubnetFilterOptions) - Filters used to populate the `subnet_id` field. - - HCL2 example: - - ```hcl - source "amazon-ebs" "basic-example" { - subnet_filter { - filters = { - "tag:Class": "build" - } - most_free = true - random = false - } - } - ``` - - JSON Example: - ```json - "builders" [ - { - "type": "amazon-ebs", - "subnet_filter": { - "filters": { - "tag:Class": "build" - }, - "most_free": true, - "random": false - } - } - ] - ``` - - This selects the Subnet with tag `Class` with the value `build`, which has - the most free IP addresses. NOTE: This will fail unless *exactly* one - Subnet is returned. By using `most_free` or `random` one will be selected - from those matching the filter. - - - `filters` (map of strings) - filters used to select a `subnet_id`. - NOTE: This will fail unless *exactly* one Subnet is returned. Any - filter described in the docs for - [DescribeSubnets](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html) - is valid. - - - `most_free` (boolean) - The Subnet with the most free IPv4 addresses - will be used if multiple Subnets matches the filter. - - - `random` (boolean) - A random Subnet will be used if multiple Subnets - matches the filter. `most_free` have precendence over this. - - `subnet_id` take precedence over this. - -- `subnet_id` (string) - If using VPC, the ID of the subnet, such as - subnet-12345def, where Packer will launch the EC2 instance. This field is - required if you are using an non-default VPC. - -- `tenancy` (string) - [Tenancy](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html) used - when Packer launches the EC2 instance, allowing it to be launched on dedicated hardware. - - The default is "default", meaning shared tenancy. Allowed values are "default", - "dedicated" and "host". - -- `temporary_security_group_source_cidrs` ([]string) - A list of IPv4 CIDR blocks to be authorized access to the instance, when - packer is creating a temporary security group. - - The default is [`0.0.0.0/0`] (i.e., allow any IPv4 source). This is only - used when `security_group_id` or `security_group_ids` is not specified. - -- `user_data` (string) - User data to apply when launching the instance. Note - that you need to be careful about escaping characters due to the templates - being JSON. It is often more convenient to use user_data_file, instead. - Packer will not automatically wait for a user script to finish before - shutting down the instance this must be handled in a provisioner. - -- `user_data_file` (string) - Path to a file that will be used for the user - data when launching the instance. - -- `vpc_filter` (VpcFilterOptions) - Filters used to populate the `vpc_id` field. - - HCL2 example: - ```hcl - source "amazon-ebs" "basic-example" { - vpc_filter { - filters = { - "tag:Class": "build", - "isDefault": "false", - "cidr": "/24" - } - } - } - ``` - - JSON Example: - ```json - "builders" [ - { - "type": "amazon-ebs", - "vpc_filter": { - "filters": { - "tag:Class": "build", - "isDefault": "false", - "cidr": "/24" - } - } - } - ] - ``` - - This selects the VPC with tag `Class` with the value `build`, which is not - the default VPC, and have a IPv4 CIDR block of `/24`. NOTE: This will fail - unless *exactly* one VPC is returned. - - - `filters` (map of strings) - filters used to select a `vpc_id`. NOTE: - This will fail unless *exactly* one VPC is returned. Any filter - described in the docs for - [DescribeVpcs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html) - is valid. - - `vpc_id` take precedence over this. - -- `vpc_id` (string) - If launching into a VPC subnet, Packer needs the VPC ID - in order to create a temporary security group within the VPC. Requires - subnet_id to be set. If this field is left blank, Packer will try to get - the VPC ID from the subnet_id. - -- `windows_password_timeout` (duration string | ex: "1h5m2s") - The timeout for waiting for a Windows - password for Windows instances. Defaults to 20 minutes. Example value: - 10m - -- `metadata_options` (MetadataOptions) - [Metadata Settings](#metadata-settings) - -- `ssh_interface` (string) - One of `public_ip`, `private_ip`, `public_dns`, `private_dns` or `session_manager`. - If set, either the public IP address, private IP address, public DNS name - or private DNS name will be used as the host for SSH. The default behaviour - if inside a VPC is to use the public IP address if available, otherwise - the private IP address will be used. If not in a VPC the public DNS name - will be used. Also works for WinRM. - - Where Packer is configured for an outbound proxy but WinRM traffic - should be direct, `ssh_interface` must be set to `private_dns` and - `.compute.internal` included in the `NO_PROXY` environment - variable. - - When using `session_manager` the machine running Packer must have - the AWS Session Manager Plugin installed and within the users' system path. - Connectivity via the `session_manager` interface establishes a secure tunnel - between the local host and the remote host on an available local port to the specified `ssh_port`. - See [Session Manager Connections](#session-manager-connections) for more information. - - Session manager connectivity is currently only implemented for the SSH communicator, not the WinRM communicator. - - Upon termination the secure tunnel will be terminated automatically, if however there is a failure in - terminating the tunnel it will automatically terminate itself after 20 minutes of inactivity. - -- `pause_before_ssm` (duration string | ex: "1h5m2s") - The time to wait before establishing the Session Manager session. - The value of this should be a duration. Examples are - `5s` and `1m30s` which will cause Packer to wait five seconds and one - minute 30 seconds, respectively. If no set, defaults to 10 seconds. - This option is useful when the remote port takes longer to become available. - -- `session_manager_port` (int) - Which port to connect the local end of the session tunnel to. If - left blank, Packer will choose a port for you from available ports. - This option is only used when `ssh_interface` is set `session_manager`. diff --git a/website/content/partials/builder/amazon/common/RunConfig-required.mdx b/website/content/partials/builder/amazon/common/RunConfig-required.mdx deleted file mode 100644 index 9afb50308..000000000 --- a/website/content/partials/builder/amazon/common/RunConfig-required.mdx +++ /dev/null @@ -1,8 +0,0 @@ - - -- `instance_type` (string) - The EC2 instance type to use while building the - AMI, such as t2.small. - -- `source_ami` (string) - The source AMI whose root volume will be copied and - provisioned on the currently running instance. This must be an EBS-backed - AMI with a root volume snapshot that you have access to. diff --git a/website/content/partials/builder/amazon/common/RunConfig.mdx b/website/content/partials/builder/amazon/common/RunConfig.mdx deleted file mode 100644 index ee0844c3d..000000000 --- a/website/content/partials/builder/amazon/common/RunConfig.mdx +++ /dev/null @@ -1,4 +0,0 @@ - - -RunConfig contains configuration for running an instance from a source -AMI and details on how to access that launched image. diff --git a/website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx b/website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx deleted file mode 100644 index ebfd16e78..000000000 --- a/website/content/partials/builder/amazon/common/SnapshotConfig-not-required.mdx +++ /dev/null @@ -1,21 +0,0 @@ - - -- `snapshot_tags` (map[string]string) - Key/value pair tags to apply to snapshot. They will override AMI tags if - already applied to snapshot. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `snapshot_tag` ([]{key string, value string}) - Same as [`snapshot_tags`](#snapshot_tags) but defined as a singular - repeatable block containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `snapshot_users` ([]string) - A list of account IDs that have - access to create volumes from the snapshot(s). By default no additional - users other than the user creating the AMI has permissions to create - volumes from the backing snapshot(s). - -- `snapshot_groups` ([]string) - A list of groups that have access to - create volumes from the snapshot(s). By default no groups have permission - to create volumes from the snapshot(s). all will make the snapshot - publicly accessible. diff --git a/website/content/partials/builder/amazon/common/SnapshotConfig.mdx b/website/content/partials/builder/amazon/common/SnapshotConfig.mdx deleted file mode 100644 index 9ed3d99da..000000000 --- a/website/content/partials/builder/amazon/common/SnapshotConfig.mdx +++ /dev/null @@ -1,3 +0,0 @@ - - -SnapshotConfig is for common configuration related to creating AMIs. diff --git a/website/content/partials/builder/amazon/common/StateChangeConf.mdx b/website/content/partials/builder/amazon/common/StateChangeConf.mdx deleted file mode 100644 index 33237d2d4..000000000 --- a/website/content/partials/builder/amazon/common/StateChangeConf.mdx +++ /dev/null @@ -1,3 +0,0 @@ - - -StateChangeConf is the configuration struct used for `WaitForState`. diff --git a/website/content/partials/builder/amazon/common/Statement-not-required.mdx b/website/content/partials/builder/amazon/common/Statement-not-required.mdx deleted file mode 100644 index 9e4fae587..000000000 --- a/website/content/partials/builder/amazon/common/Statement-not-required.mdx +++ /dev/null @@ -1,7 +0,0 @@ - - -- `Effect` (string) - Effect - -- `Action` ([]string) - Action - -- `Resource` ([]string) - Resource diff --git a/website/content/partials/builder/amazon/common/SubnetFilterOptions-not-required.mdx b/website/content/partials/builder/amazon/common/SubnetFilterOptions-not-required.mdx deleted file mode 100644 index 633e31144..000000000 --- a/website/content/partials/builder/amazon/common/SubnetFilterOptions-not-required.mdx +++ /dev/null @@ -1,5 +0,0 @@ - - -- `most_free` (bool) - Most Free - -- `random` (bool) - Random diff --git a/website/content/partials/builder/amazon/common/VaultAWSEngineOptions-not-required.mdx b/website/content/partials/builder/amazon/common/VaultAWSEngineOptions-not-required.mdx deleted file mode 100644 index 50d4fab5f..000000000 --- a/website/content/partials/builder/amazon/common/VaultAWSEngineOptions-not-required.mdx +++ /dev/null @@ -1,17 +0,0 @@ - - -- `name` (string) - Name - -- `role_arn` (string) - Role ARN - -- `ttl` (string) - Specifies the TTL for the use of the STS token. This - is specified as a string with a duration suffix. Valid only when - credential_type is assumed_role or federation_token. When not - specified, the default_sts_ttl set for the role will be used. If that - is also not set, then the default value of 3600s will be used. AWS - places limits on the maximum TTL allowed. See the AWS documentation on - the DurationSeconds parameter for AssumeRole (for assumed_role - credential types) and GetFederationToken (for federation_token - credential types) for more details. - -- `engine_name` (string) - Engine Name diff --git a/website/content/partials/builder/amazon/ebs/Config-not-required.mdx b/website/content/partials/builder/amazon/ebs/Config-not-required.mdx deleted file mode 100644 index 9da194803..000000000 --- a/website/content/partials/builder/amazon/ebs/Config-not-required.mdx +++ /dev/null @@ -1,41 +0,0 @@ - - -- `skip_create_ami` (bool) - If true, Packer will not create the AMI. Useful for setting to `true` - during a build test stage. Default `false`. - -- `ami_block_device_mappings` (awscommon.BlockDevices) - Add one or more block device mappings to the AMI. These will be attached - when booting a new instance from your AMI. To add a block device during - the Packer build see `launch_block_device_mappings` below. Your options - here may vary depending on the type of VM you use. See the - [BlockDevices](#block-devices-configuration) documentation for fields. - -- `launch_block_device_mappings` (awscommon.BlockDevices) - Add one or more block devices before the Packer build starts. If you add - instance store volumes or EBS volumes in addition to the root device - volume, the created AMI will contain block device mapping information - for those volumes. Amazon creates snapshots of the source instance's - root volume and any other EBS volumes described here. When you launch an - instance from this new AMI, the instance automatically launches with - these additional volumes, and will restore them from snapshots taken - from the source instance. See the - [BlockDevices](#block-devices-configuration) documentation for fields. - -- `run_volume_tags` (map[string]string) - Tags to apply to the volumes that are *launched* to create the AMI. - These tags are *not* applied to the resulting AMI unless they're - duplicated in `tags`. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `run_volume_tag` ([]{name string, value string}) - Same as [`run_volume_tags`](#run_volume_tags) but defined as a singular - block containing a `name` and a `value` field. In HCL2 mode the - [`dynamic_block`](https://packer.io/docs/templates/hcl_templates/expressions.html#dynamic-blocks) - will allow you to create those programatically. - -- `no_ephemeral` (bool) - Relevant only to Windows guests: If you set this flag, we'll add clauses - to the launch_block_device_mappings that make sure ephemeral drives - don't show up in the EC2 console. If you launched from the EC2 console, - you'd get this automatically, but the SDK does not provide this service. - For more information, see - https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/InstanceStorage.html. - Because we don't validate the OS type of your guest, it is up to you to - make sure you don't set this for *nix guests; behavior may be - unpredictable. diff --git a/website/content/partials/builder/amazon/ebssurrogate/BlockDevice-not-required.mdx b/website/content/partials/builder/amazon/ebssurrogate/BlockDevice-not-required.mdx deleted file mode 100644 index b4ea7da55..000000000 --- a/website/content/partials/builder/amazon/ebssurrogate/BlockDevice-not-required.mdx +++ /dev/null @@ -1,7 +0,0 @@ - - -- `omit_from_artifact` (bool) - If true, this block device will not be snapshotted and the created AMI - will not contain block device mapping information for this volume. If - false, the block device will be mapped into the final created AMI. Set - this option to true if you need a block device mounted in the surrogate - AMI but not in the final created AMI. diff --git a/website/content/partials/builder/amazon/ebssurrogate/Config-not-required.mdx b/website/content/partials/builder/amazon/ebssurrogate/Config-not-required.mdx deleted file mode 100644 index 098ebabf7..000000000 --- a/website/content/partials/builder/amazon/ebssurrogate/Config-not-required.mdx +++ /dev/null @@ -1,31 +0,0 @@ - - -- `ami_block_device_mappings` (awscommon.BlockDevices) - Add one or more block device mappings to the AMI. These will be attached - when booting a new instance from your AMI. To add a block device during - the Packer build see `launch_block_device_mappings` below. Your options - here may vary depending on the type of VM you use. See the - [BlockDevices](#block-devices-configuration) documentation for fields. - -- `launch_block_device_mappings` (BlockDevices) - Add one or more block devices before the Packer build starts. If you add - instance store volumes or EBS volumes in addition to the root device - volume, the created AMI will contain block device mapping information - for those volumes. Amazon creates snapshots of the source instance's - root volume and any other EBS volumes described here. When you launch an - instance from this new AMI, the instance automatically launches with - these additional volumes, and will restore them from snapshots taken - from the source instance. See the - [BlockDevices](#block-devices-configuration) documentation for fields. - -- `run_volume_tags` (map[string]string) - Tags to apply to the volumes that are *launched* to create the AMI. - These tags are *not* applied to the resulting AMI unless they're - duplicated in `tags`. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - -- `run_volume_tag` ([]{name string, value string}) - Same as [`run_volume_tags`](#run_volume_tags) but defined as a singular - block containing a `name` and a `value` field. In HCL2 mode the - [`dynamic_block`](https://packer.io/docs/templates/hcl_templates/expressions.html#dynamic-blocks) - will allow you to create those programatically. - -- `ami_architecture` (string) - what architecture to use when registering the - final AMI; valid options are "x86_64" or "arm64". Defaults to "x86_64". diff --git a/website/content/partials/builder/amazon/ebssurrogate/Config-required.mdx b/website/content/partials/builder/amazon/ebssurrogate/Config-required.mdx deleted file mode 100644 index e5994df14..000000000 --- a/website/content/partials/builder/amazon/ebssurrogate/Config-required.mdx +++ /dev/null @@ -1,9 +0,0 @@ - - -- `ami_root_device` (RootBlockDevice) - A block device mapping describing the root device of the AMI. This looks - like the mappings in `ami_block_device_mapping`, except with an - additional field: - - - `source_device_name` (string) - The device name of the block device on - the source instance to be used as the root device for the AMI. This - must correspond to a block device in `launch_block_device_mapping`. diff --git a/website/content/partials/builder/amazon/ebssurrogate/RootBlockDevice-not-required.mdx b/website/content/partials/builder/amazon/ebssurrogate/RootBlockDevice-not-required.mdx deleted file mode 100644 index 07bf243ec..000000000 --- a/website/content/partials/builder/amazon/ebssurrogate/RootBlockDevice-not-required.mdx +++ /dev/null @@ -1,26 +0,0 @@ - - -- `source_device_name` (string) - Source Device Name - -- `device_name` (string) - The device name exposed to the instance (for - example, /dev/sdh or xvdh). Required for every device in the block - device mapping. - -- `delete_on_termination` (bool) - Indicates whether the EBS volume is - deleted on instance termination. Default false. NOTE: If this - value is not explicitly set to true and volumes are not cleaned up by - an alternative method, additional volumes will accumulate after every - build. - -- `iops` (int64) - The number of I/O operations per second (IOPS) that - the volume supports. See the documentation on - IOPs - for more information - -- `volume_type` (string) - The volume type. gp2 for General Purpose - (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, st1 for - Throughput Optimized HDD, sc1 for Cold HDD, and standard for - Magnetic volumes. - -- `volume_size` (int64) - The size of the volume, in GiB. Required if - not specifying a snapshot_id. diff --git a/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx b/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx deleted file mode 100644 index fbeffd139..000000000 --- a/website/content/partials/builder/amazon/ebsvolume/BlockDevice-not-required.mdx +++ /dev/null @@ -1,12 +0,0 @@ - - -- `tags` (map[string]string) - Key/value pair tags to apply to the volume. These are retained after the builder - completes. This is a [template engine](/docs/templates/legacy_json_templates/engine), see - [Build template data](#build-template-data) for more information. - -- `tag` ([]{key string, value string}) - Same as [`tags`](#tags) but defined as a singular repeatable block - containing a `key` and a `value` field. In HCL2 mode the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. - -- `snapshot_volume` (bool) - Create a Snapshot of this Volume. diff --git a/website/content/partials/builder/amazon/ebsvolume/Config-not-required.mdx b/website/content/partials/builder/amazon/ebsvolume/Config-not-required.mdx deleted file mode 100644 index 79c6bccef..000000000 --- a/website/content/partials/builder/amazon/ebsvolume/Config-not-required.mdx +++ /dev/null @@ -1,43 +0,0 @@ - - -- `ena_support` (boolean) - Enable enhanced networking (ENA but not SriovNetSupport) on - HVM-compatible AMIs. If set, add `ec2:ModifyInstanceAttribute` to your - AWS IAM policy. Note: you must make sure enhanced networking is enabled - on your instance. See [Amazon's documentation on enabling enhanced - networking](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html#enabling_enhanced_networking). - -- `sriov_support` (bool) - Enable enhanced networking (SriovNetSupport but not ENA) on - HVM-compatible AMIs. If true, add `ec2:ModifyInstanceAttribute` to your - AWS IAM policy. Note: you must make sure enhanced networking is enabled - on your instance. See [Amazon's documentation on enabling enhanced - networking](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html#enabling_enhanced_networking). - Default `false`. - -- `ebs_volumes` (BlockDevices) - Add the block device mappings to the AMI. If you add instance store - volumes or EBS volumes in addition to the root device volume, the - created AMI will contain block device mapping information for those - volumes. Amazon creates snapshots of the source instance's root volume - and any other EBS volumes described here. When you launch an instance - from this new AMI, the instance automatically launches with these - additional volumes, and will restore them from snapshots taken from the - source instance. See the [BlockDevices](#block-devices-configuration) - documentation for fields. - -- `run_volume_tags` (map[string]string) - Key/value pair tags to apply to the volumes of the instance that is - *launched* to create EBS Volumes. These tags will *not* appear in the - tags of the resulting EBS volumes unless they're duplicated under `tags` - in the `ebs_volumes` setting. This is a [template - engine](/docs/templates/legacy_json_templates/engine), see [Build template - data](#build-template-data) for more information. - - Note: The tags specified here will be *temporarily* applied to volumes - specified in `ebs_volumes` - but only while the instance is being - created. Packer will replace all tags on the volume with the tags - configured in the `ebs_volumes` section as soon as the instance is - reported as 'ready'. - -- `run_volume_tag` ([]{key string, value string}) - Same as [`run_volume_tags`](#run_volume_tags) but defined as a singular - repeatable block containing a `key` and a `value` field. In HCL2 mode - the - [`dynamic_block`](/docs/templates/hcl_templates/expressions#dynamic-blocks) - will allow you to create those programatically. diff --git a/website/content/partials/builder/amazon/instance/Config-not-required.mdx b/website/content/partials/builder/amazon/instance/Config-not-required.mdx deleted file mode 100644 index 1cc446aea..000000000 --- a/website/content/partials/builder/amazon/instance/Config-not-required.mdx +++ /dev/null @@ -1,38 +0,0 @@ - - -- `ami_block_device_mappings` (awscommon.BlockDevices) - Add one or more block device mappings to the AMI. These will be attached - when booting a new instance from your AMI. To add a block device during - the Packer build see `launch_block_device_mappings` below. Your options - here may vary depending on the type of VM you use. See the - [BlockDevices](#block-devices-configuration) documentation for fields. - -- `launch_block_device_mappings` (awscommon.BlockDevices) - Add one or more block devices before the Packer build starts. If you add - instance store volumes or EBS volumes in addition to the root device - volume, the created AMI will contain block device mapping information - for those volumes. Amazon creates snapshots of the source instance's - root volume and any other EBS volumes described here. When you launch an - instance from this new AMI, the instance automatically launches with - these additional volumes, and will restore them from snapshots taken - from the source instance. See the - [BlockDevices](#block-devices-configuration) documentation for fields. - -- `bundle_destination` (string) - The directory on the running instance where the bundled AMI will be - saved prior to uploading. By default this is /tmp. This directory must - exist and be writable. - -- `bundle_prefix` (string) - The prefix for files created from bundling the root volume. By default - this is `image-{{timestamp}}`. The timestamp variable should be used to - make sure this is unique, otherwise it can collide with other created - AMIs by Packer in your account. - -- `bundle_upload_command` (string) - The command to use to upload the bundled volume. See the "custom bundle - commands" section below for more information. - -- `bundle_vol_command` (string) - The command to use to bundle the volume. See the "custom bundle - commands" section below for more information. - -- `x509_upload_path` (string) - The path on the remote machine where the X509 certificate will be - uploaded. This path must already exist and be writable. X509 - certificates are uploaded after provisioning is run, so it is perfectly - okay to create this directory as part of the provisioning process. - Defaults to /tmp. diff --git a/website/content/partials/builder/amazon/instance/Config-required.mdx b/website/content/partials/builder/amazon/instance/Config-required.mdx deleted file mode 100644 index f328d4ff9..000000000 --- a/website/content/partials/builder/amazon/instance/Config-required.mdx +++ /dev/null @@ -1,15 +0,0 @@ - - -- `account_id` (string) - Your AWS account ID. This is required for bundling the AMI. This is not - the same as the access key. You can find your account ID in the security - credentials page of your AWS account. - -- `s3_bucket` (string) - The name of the S3 bucket to upload the AMI. This bucket will be created - if it doesn't exist. - -- `x509_cert_path` (string) - The local path to a valid X509 certificate for your AWS account. This is - used for bundling the AMI. This X509 certificate must be registered with - your account from the security credentials page in the AWS console. - -- `x509_key_path` (string) - The local path to the private key for the X509 certificate specified by - x509_cert_path. This is used for bundling the AMI. diff --git a/website/content/partials/builder/amazon/instance/Config.mdx b/website/content/partials/builder/amazon/instance/Config.mdx deleted file mode 100644 index 384ca642d..000000000 --- a/website/content/partials/builder/amazon/instance/Config.mdx +++ /dev/null @@ -1,4 +0,0 @@ - - -Config is the configuration that is chained through the steps and settable -from the template. diff --git a/website/content/partials/builders/aws-common-block-device-a-i.mdx b/website/content/partials/builders/aws-common-block-device-a-i.mdx deleted file mode 100644 index c035b5128..000000000 --- a/website/content/partials/builders/aws-common-block-device-a-i.mdx +++ /dev/null @@ -1,19 +0,0 @@ -- `delete_on_termination` (boolean) - Indicates whether the EBS volume is - deleted on instance termination. Default `false`. **NOTE**: If this - value is not explicitly set to `true` and volumes are not cleaned up by - an alternative method, additional volumes will accumulate after every - build. - -- `device_name` (string) - The device name exposed to the instance (for - example, `/dev/sdh` or `xvdh`). Required for every device in the block - device mapping. - -- `encrypted` (boolean) - Indicates whether or not to encrypt the volume. - By default, Packer will keep the encryption setting to what it was in - the source image. Setting `false` will result in an unencrypted device, - and `true` will result in an encrypted one. - -- `iops` (number) - The number of I/O operations per second (IOPS) that - the volume supports. See the documentation on - [IOPs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html) - for more information diff --git a/website/content/partials/builders/aws-common-block-device-i-v.mdx b/website/content/partials/builders/aws-common-block-device-i-v.mdx deleted file mode 100644 index e596136cd..000000000 --- a/website/content/partials/builders/aws-common-block-device-i-v.mdx +++ /dev/null @@ -1,17 +0,0 @@ -- `no_device` (boolean) - Suppresses the specified device included in the - block device mapping of the AMI. - -- `snapshot_id` (string) - The ID of the snapshot. - -- `virtual_name` (string) - The virtual device name. See the - documentation on [Block Device - Mapping](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html) - for more information. - -- `volume_size` (number) - The size of the volume, in GiB. Required if - not specifying a `snapshot_id`. - -- `volume_type` (string) - The volume type. `gp2` for General Purpose - (SSD) volumes, `io1` for Provisioned IOPS (SSD) volumes, `st1` for - Throughput Optimized HDD, `sc1` for Cold HDD, and `standard` for - Magnetic volumes. diff --git a/website/content/partials/builders/aws-common-opional-fields.mdx b/website/content/partials/builders/aws-common-opional-fields.mdx deleted file mode 100644 index 3f32d1ba7..000000000 --- a/website/content/partials/builders/aws-common-opional-fields.mdx +++ /dev/null @@ -1,7 +0,0 @@ -- `kms_key_id` (string) - ID, alias or ARN of the KMS key to use for boot - volume encryption. This only applies to the main `region`, other regions - where the AMI will be copied will be encrypted by the default EBS KMS key. - For valid formats see _KmsKeyId_ in the [AWS API docs - - CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html). - This field is validated by Packer, when using an alias, you will have to - prefix `kms_key_id` with `alias/`. diff --git a/website/content/partials/builders/aws-session-manager.mdx b/website/content/partials/builders/aws-session-manager.mdx deleted file mode 100644 index 4f64b207a..000000000 --- a/website/content/partials/builders/aws-session-manager.mdx +++ /dev/null @@ -1,102 +0,0 @@ -### Session Manager Connections - -Support for the AWS Systems Manager session manager lets users manage EC2 instances without the need to open inbound ports, or maintain bastion hosts. Session manager connectivity relies on the use of the [session manager plugin](#session-manager-plugin) to open a secure tunnel between the local machine and the remote instance. Once the tunnel has been created all SSH communication will be tunneled through SSM to the remote instance. - --> Note: Session manager connectivity is currently only implemented for the SSH communicator, not the WinRM Communicator. - -To use the session manager as the connection interface for the SSH communicator you need to add the following configuration options to the Amazon builder options: - -- `ssh_interface`: The ssh interface must be set to "session_manager". When using this option the builder will create an SSM tunnel to the configured `ssh_port` (defaults to 22) on the remote host. -- `iam_instance_profile`: A valid instance profile granting Systems Manager permissions to manage the remote instance is required in order for the aws ssm-agent to start and stop session connections. - See below for more details on [IAM instance profile for Systems Manager](#iam-instance-profile-for-systems-manager). - -#### Optional - -- `session_manager_port`: A local port on the host machine that should be used as the local end of the session tunnel to the remote host. If not specified Packer will find an available port to use. -- `temporary_iam_instance_profile_policy_document`: Creates a temporary instance profile policy document to grant Systems Manager permissions to the Ec2 instance. This is an alternative to using an existing `iam_instance_profile`. - -HCL2 example: - -```hcl -# file: example.pkr.hcl - -# In order to get these variables to read from the environment, -# set the environment variables to have the same name as the declared -# variables, with the prefix PKR_VAR_. -# You could also hardcode them into the file, but we recommend that. - -data "amazon-ami" "example" { - filters = { - virtualization-type = "hvm" - name = "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*" - root-device-type = "ebs" - } - owners = ["099720109477"] - most_recent = true - region = "us-east-1" -} - -source "amazon-ebs" "ssm-example" { - ami_name = "packer_AWS {{timestamp}}" - instance_type = "t2.micro" - region = "us-east-1" - source_ami = data.amazon-ami.example.id - ssh_username = "ubuntu" - ssh_interface = "session_manager" - communicator = "ssh" - iam_instance_profile = "myinstanceprofile" -} - -build { - sources = ["source.amazon-ebs.ssm-example"] - - provisioner "shell" { - inline = ["echo Connected via SSM at '${build.User}@${build.Host}:${build.Port}'"] - } -} -``` - -JSON example: -```json -{ - "builders": [ - { - "type": "amazon-ebs", - "ami_name": "packer-ami-{{timestamp}}", - "instance_type": "t2.micro", - "source_ami_filter": { - "filters": { - "virtualization-type": "hvm", - "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", - "root-device-type": "ebs" - }, - "owners": ["099720109477"], - "most_recent": true - }, - "ssh_username": "ubuntu", - "ssh_interface": "session_manager", - "communicator": "ssh", - "iam_instance_profile": "{{user `iam_instance_profile`}}" - } - ], - "provisioners": [ - { - "type": "shell", - "inline": [ - "echo Connected via SSM at '{{build `User`}}@{{build `Host`}}:{{build `Port`}}'" - ] - } - ] -} -``` - -#### Session Manager Plugin - -Connectivity via the session manager requires the use of a session-manger-plugin, which needs to be installed alongside Packer, and an instance AMI that is capable of running the AWS ssm-agent - see [About SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/prereqs-ssm-agent.html) for details on supported AMIs. - -In order for Packer to start and end sessions that connect you to your managed instances, you must first install the Session Manager plugin on your local machine. The plugin can be installed on supported versions of Microsoft Windows, macOS, Linux, and Ubuntu Server. -[Installation instructions for the session-manager-plugin](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) - -#### IAM instance profile for Systems Manager - -By default Systems Manager doesn't have permission to perform actions on created instances so SSM access must be granted by creating an instance profile with the `AmazonSSMManagedInstanceCore` policy. The instance profile can then be attached to any instance you wish to manage via the session-manager-plugin. See [Adding System Manager instance profile](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html#instance-profile-add-permissions) for details on creating the required instance profile. diff --git a/website/content/partials/builders/aws-spot-docs.mdx b/website/content/partials/builders/aws-spot-docs.mdx deleted file mode 100644 index 3e0643845..000000000 --- a/website/content/partials/builders/aws-spot-docs.mdx +++ /dev/null @@ -1,32 +0,0 @@ -- `spot_instance_types` (array of strings) - a list of acceptable instance - types to run your build on. We will request a spot instance using the max - price of `spot_price` and the allocation strategy of "lowest price". - Your instance will be launched on an instance type of the lowest available - price that you have in your list. This is used in place of instance_type. - You may only set either spot_instance_types or instance_type, not both. - This feature exists to help prevent situations where a Packer build fails - because a particular availability zone does not have capacity for the - specific instance_type requested in instance_type. - -- `spot_price` (string) - The maximum hourly price to pay for a spot instance - to create the AMI. Spot instances are a type of instance that EC2 starts - when the current spot price is less than the maximum price you specify. - Spot price will be updated based on available spot instance capacity and - current spot instance requests. It may save you some costs. You can set - this to `auto` for Packer to automatically discover the best spot price or - to "0" to use an on demand instance (default). - -- `spot_price_auto_product` (string) - Deprecated. Prior to v1.4.3, was - required if `spot_price` is set to `auto`. - - If you are using Packer v1.4.3 or later, simply remove this from your - template; it is no longer necessary based on recent changes to how Amazon - calculates spot prices. - - Prior to version 1.4.3, This told Packer what sort of AMI you're launching - to find the best spot price. This must be one of: `Linux/UNIX`, `SUSE Linux`, - `Windows`, `Linux/UNIX (Amazon VPC)`, `SUSE Linux (Amazon VPC)`, - `Windows (Amazon VPC)` - -- `spot_tags` (object of key/value strings) - Requires `spot_price` to be - set. This tells Packer to apply tags to the spot request that is issued. diff --git a/website/content/partials/builders/aws-ssh-differentiation-table.mdx b/website/content/partials/builders/aws-ssh-differentiation-table.mdx deleted file mode 100644 index f3795a597..000000000 --- a/website/content/partials/builders/aws-ssh-differentiation-table.mdx +++ /dev/null @@ -1,11 +0,0 @@ -## Which SSH Options to use: - -This chart breaks down what Packer does if you set any of the below SSH options: - -| ssh_password | ssh_private_key_file | ssh_keypair_name | temporary_key_pair_name | Packer will... | -| ------------ | -------------------- | ---------------- | ----------------------- | ------------------------------------------------------------------------------------------ | -| X | - | - | - | ssh authenticating with username and given password | -| - | X | - | - | ssh authenticating with private key file | -| - | X | X | - | ssh authenticating with given private key file and "attaching" the keypair to the instance | -| - | - | - | X | Create a temporary ssh keypair with a particular name, clean it up | -| - | - | - | - | Create a temporary ssh keypair with a default name, clean it up | diff --git a/website/content/partials/datasource/.gitkeep b/website/content/partials/datasource/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/website/content/partials/datasource/amazon/ami/DatasourceOutput.mdx b/website/content/partials/datasource/amazon/ami/DatasourceOutput.mdx deleted file mode 100644 index 19ada68ff..000000000 --- a/website/content/partials/datasource/amazon/ami/DatasourceOutput.mdx +++ /dev/null @@ -1,13 +0,0 @@ - - -- `id` (string) - The ID of the AMI. - -- `name` (string) - The name of the AMI. - -- `creation_date` (string) - The date of creation of the AMI. - -- `owner` (string) - The AWS account ID of the owner. - -- `owner_name` (string) - The owner alias. - -- `tags` (map[string]string) - The key/value combination of the tags assigned to the AMI. diff --git a/website/content/partials/datasource/amazon/secretsmanager/Config-not-required.mdx b/website/content/partials/datasource/amazon/secretsmanager/Config-not-required.mdx deleted file mode 100644 index b4a94b5cd..000000000 --- a/website/content/partials/datasource/amazon/secretsmanager/Config-not-required.mdx +++ /dev/null @@ -1,10 +0,0 @@ - - -- `key` (string) - Optional key for JSON secrets that contain more than one value. When set, the `value` output will - contain the value for the provided key. - -- `version_id` (string) - Specifies the unique identifier of the version of the secret that you want to retrieve. - Overrides version_stage. - -- `version_stage` (string) - Specifies the secret version that you want to retrieve by the staging label attached to the version. - Defaults to AWSCURRENT. diff --git a/website/content/partials/datasource/amazon/secretsmanager/Config-required.mdx b/website/content/partials/datasource/amazon/secretsmanager/Config-required.mdx deleted file mode 100644 index c63df6888..000000000 --- a/website/content/partials/datasource/amazon/secretsmanager/Config-required.mdx +++ /dev/null @@ -1,4 +0,0 @@ - - -- `name` (string) - Specifies the secret containing the version that you want to retrieve. - You can specify either the Amazon Resource Name (ARN) or the friendly name of the secret. diff --git a/website/content/partials/datasource/amazon/secretsmanager/DatasourceOutput.mdx b/website/content/partials/datasource/amazon/secretsmanager/DatasourceOutput.mdx deleted file mode 100644 index 6c34f99a9..000000000 --- a/website/content/partials/datasource/amazon/secretsmanager/DatasourceOutput.mdx +++ /dev/null @@ -1,12 +0,0 @@ - - -- `value` (string) - When a [key](#key) is provided, this will be the value for that key. If a key is not provided, - `value` will contain the first value found in the secret string. - -- `secret_string` (string) - The decrypted part of the protected secret information that - was originally provided as a string. - -- `secret_binary` (string) - The decrypted part of the protected secret information that - was originally provided as a binary. Base64 encoded. - -- `version_id` (string) - The unique identifier of this version of the secret. diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index ada4ff3c0..7bd22da62 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -675,35 +675,6 @@ "title": "Alicloud ECS", "path": "builders/alicloud-ecs" }, - { - "title": "Amazon EC2", - "routes": [ - { - "title": "Overview", - "path": "builders/amazon" - }, - { - "title": "chroot", - "path": "builders/amazon/chroot" - }, - { - "title": "EBS", - "path": "builders/amazon/ebs" - }, - { - "title": "EBS Surrogate", - "path": "builders/amazon/ebssurrogate" - }, - { - "title": "EBS Volume", - "path": "builders/amazon/ebsvolume" - }, - { - "title": "Instance", - "path": "builders/amazon/instance" - } - ] - }, { "title": "Azure", "routes": [ @@ -964,23 +935,6 @@ { "title": "Overview", "path": "datasources" - }, - { - "title": "Amazon", - "routes": [ - { - "title": "Overview", - "path": "datasources/amazon" - }, - { - "title": "Amazon AMI", - "path": "datasources/amazon/ami" - }, - { - "title": "Secrets Manager", - "path": "datasources/amazon/secretsmanager" - } - ] } ] }, @@ -1076,10 +1030,6 @@ "title": "Alicloud Import", "path": "post-processors/alicloud-import" }, - { - "title": "Amazon Import", - "path": "post-processors/amazon-import" - }, { "title": "Artifice", "path": "post-processors/artifice" diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js deleted file mode 100644 index 118101f7c..000000000 --- a/website/data/docs-navigation.js +++ /dev/null @@ -1,336 +0,0 @@ -// The root folder for this documentation category is `pages/docs` -// -// - A string refers to the name of a file -// - A "category" value refers to the name of a directory -// - All directories must have an "index.mdx" file to serve as -// the landing page for the category - -export default [ - '--------', - 'terminology', - { - category: 'commands', - content: ['init', 'build', 'console', 'fix', 'fmt', 'inspect', 'validate', 'hcl2_upgrade'], - }, - { - category: 'templates', - content: [ - { - category: 'hcl_templates', - content: [ - { - category: 'blocks', - content: [ - { - category: 'build', - content: [ - 'source', - 'provisioner', - 'post-processor', - 'post-processors', - ], - }, - 'locals', - 'source', - 'variable', - 'packer', - 'data' - ], - }, - { - category: 'functions', - content: [ - { - category: 'contextual', - content: [ - 'aws_secretsmanager', - 'consul', - 'env', - 'vault', - ], - }, - { - category: 'numeric', - content: [ - 'abs', - 'ceil', - 'floor', - 'log', - 'max', - 'min', - 'parseint', - 'pow', - 'signum', - ], - }, - { - category: 'string', - content: [ - 'chomp', - 'format', - 'formatlist', - 'indent', - 'join', - 'lower', - 'replace', - 'regex_replace', - 'regex', - 'regexall', - 'split', - 'strrev', - 'substr', - 'title', - 'trim', - 'trimprefix', - 'trimsuffix', - 'trimspace', - 'upper', - ], - }, - { - category: 'collection', - content: [ - 'chunklist', - 'coalesce', - 'coalescelist', - 'compact', - 'concat', - 'contains', - 'distinct', - 'element', - 'flatten', - 'keys', - 'length', - 'lookup', - 'merge', - 'range', - 'reverse', - 'setintersection', - 'setproduct', - 'setunion', - 'slice', - 'sort', - 'values', - 'zipmap', - ], - }, - { - category: 'encoding', - content: [ - 'base64decode', - 'base64encode', - 'csvdecode', - 'jsondecode', - 'jsonencode', - 'urlencode', - 'yamldecode', - 'yamlencode', - ], - }, - { - category: 'file', - content: [ - 'abspath', - 'basename', - 'dirname', - 'file', - 'fileexists', - 'fileset', - 'pathexpand', - 'templatefile', - ], - }, - { - category: 'datetime', - content: ['formatdate', 'timeadd', 'timestamp'], - }, - { - category: 'crypto', - content: [ - 'bcrypt', - 'md5', - 'rsadecrypt', - 'sha1', - 'sha256', - 'sha512', - ], - }, - { - category: 'uuid', - content: ['uuidv4', 'uuidv5'], - }, - { - category: 'ipnet', - content: ['cidrhost', 'cidrnetmask', 'cidrsubnet'], - }, - { - category: 'conversion', - content: ['can', 'convert', 'try'], - }, - ], - }, - 'variables', - 'locals', - 'contextual-variables', - 'datasources', - 'path-variables', - 'syntax', - 'onlyexcept', - 'expressions', - 'syntax-json', - ], - }, - { - category: "legacy_json_templates", - content: [ - 'builders', - 'communicator', - 'engine', - 'post-processors', - 'provisioners', - 'user-variables', - ] - }, - ], - }, - '----------', - {category: 'communicators', content: ['ssh', 'winrm']}, - { - category: 'builders', - content: [ - 'alicloud-ecs', - { - category: 'amazon', - content: ['chroot', 'ebs', 'ebssurrogate', 'ebsvolume', 'instance'], - }, - { - category: 'azure', - content: ['arm', 'chroot'], - }, - 'cloudstack', - 'digitalocean', - 'docker', - 'file', - 'googlecompute', - 'hetzner-cloud', - 'hyperone', - {category: 'hyperv', content: ['iso', 'vmcx']}, - 'linode', - 'lxc', - 'lxd', - 'ncloud', - 'null', - 'oneandone', - 'openstack', - {category: 'oracle', content: ['classic', 'oci']}, - { - category: 'outscale', - content: ['chroot', 'bsu', 'bsusurrogate', 'bsuvolume'], - }, - {category: 'parallels', content: ['iso', 'pvm']}, - 'profitbricks', - {category: 'proxmox', content: ['iso', 'clone']}, - 'qemu', - 'scaleway', - 'tencentcloud-cvm', - 'jdcloud', - 'triton', - 'ucloud-uhost', - 'vagrant', - { - category: 'virtualbox', - content: ['iso', 'ovf', 'vm'], - }, - { - category: 'vmware', - content: ['iso', 'vmx', 'vsphere-iso', 'vsphere-clone'], - }, - 'yandex', - 'custom', - 'community-supported', - ], - }, - { - category: 'datasources', - content: [ - { - category: 'amazon', - content: [ - 'ami', - 'secretsmanager' - ], - }, - ] - }, - { - category: 'provisioners', - content: [ - 'ansible-local', - 'ansible', - 'breakpoint', - 'chef-client', - 'chef-solo', - 'converge', - 'file', - 'inspec', - 'powershell', - 'puppet-masterless', - 'puppet-server', - 'salt-masterless', - 'shell', - 'shell-local', - 'windows-shell', - 'windows-restart', - 'custom', - 'community-supported', - ], - }, - { - category: 'post-processors', - content: [ - 'alicloud-import', - 'amazon-import', - 'artifice', - 'compress', - 'checksum', - 'digitalocean-import', - 'docker-import', - 'docker-push', - 'docker-save', - 'docker-tag', - 'googlecompute-export', - 'googlecompute-import', - 'manifest', - 'shell-local', - 'ucloud-import', - 'vagrant', - 'vagrant-cloud', - 'vsphere', - 'vsphere-template', - 'yandex-export', - 'yandex-import', - 'community-supported', - ], - }, - '----------', - 'install', - 'configure', - '----------', - { - category: 'plugins', - content: [ - { - category: 'creation', - content: [ - 'custom-builders', - 'custom-post-processors', - 'custom-provisioners', - 'custom-datasources', - ], - }, - ], - }, - - '---------', - 'debugging', -] diff --git a/website/data/docs-remote-plugins.json b/website/data/docs-remote-plugins.json index b3199e499..7c6ae6de3 100644 --- a/website/data/docs-remote-plugins.json +++ b/website/data/docs-remote-plugins.json @@ -4,5 +4,11 @@ "path": "docker", "repo": "hashicorp/packer-plugin-docker", "version": "latest" + }, + { + "title": "Amazon EC2", + "path": "amazon", + "repo": "hashicorp/packer-plugin-amazon", + "version": "latest" } ] From a9bec7945ed9c081e9cf42c1587a7b607fe85acb Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Thu, 25 Mar 2021 14:02:21 +0100 Subject: [PATCH 178/212] remove .mdx extensions in links (#10823) Some of them were added in #10800 some where already there --- command/hcl2_upgrade.go | 4 ++-- .../hcl2_upgrade/complete/expected.pkr.hcl | 4 ++-- .../docs/plugins/creation/custom-datasources.mdx | 2 +- .../templates/hcl_templates/contextual-variables.mdx | 10 +++++----- .../templates/hcl_templates/functions/string/regex.mdx | 6 +++--- .../hcl_templates/functions/string/regexall.mdx | 4 ++-- .../docs/templates/legacy_json_templates/engine.mdx | 10 +++++----- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index f96a037e5..5c7ee1bcc 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -107,7 +107,7 @@ const ( # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon AMI Data Source here: -# https://www.packer.io/docs/datasources/amazon/ami.mdx` +# https://www.packer.io/docs/datasources/amazon/ami` amazonSecretsManagerDataHeader = ` # The amazon-secretsmanager data block is generated from your aws_secretsmanager template function; a data @@ -115,7 +115,7 @@ const ( # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon Secrets Manager Data Source here: -# https://www.packer.io/docs/datasources/amazon/secretsmanager.mdx` +# https://www.packer.io/docs/datasources/amazon/secretsmanager` ) var ( diff --git a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl index cf9019a98..3f1a46150 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl @@ -52,7 +52,7 @@ variable "secret_account" { # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon Secrets Manager Data Source here: -# https://www.packer.io/docs/datasources/amazon/secretsmanager.mdx +# https://www.packer.io/docs/datasources/amazon/secretsmanager data "amazon-secretsmanager" "autogenerated_1" { name = "sample/app/password" } @@ -76,7 +76,7 @@ data "amazon-secretsmanager" "autogenerated_4" { # Read the documentation for data blocks here: # https://www.packer.io/docs/templates/hcl_templates/blocks/data # Read the documentation for the Amazon AMI Data Source here: -# https://www.packer.io/docs/datasources/amazon/ami.mdx +# https://www.packer.io/docs/datasources/amazon/ami data "amazon-ami" "autogenerated_1" { access_key = "${var.aws_access_key}" filters = { diff --git a/website/content/docs/plugins/creation/custom-datasources.mdx b/website/content/docs/plugins/creation/custom-datasources.mdx index 238232b9f..b9f1055fd 100644 --- a/website/content/docs/plugins/creation/custom-datasources.mdx +++ b/website/content/docs/plugins/creation/custom-datasources.mdx @@ -10,7 +10,7 @@ sidebar_title: Custom Data Sources Packer Data Sources are the components of Packer that allow data to be fetched for use within the configuration. Use of data sources allows a build to use information defined outside of Packer. An example of -data source is the [amazon-ami data source](/docs/datasources/amazon/ami.mdx), which outputs the data of a fetched Amazon AMI. +data source is the [amazon-ami data source](/docs/datasources/amazon/ami), which outputs the data of a fetched Amazon AMI. Prior to reading this page, it is assumed you have read the page on [plugin development basics](/docs/plugins). diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index 7bbfbc015..1bc7152c9 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -78,11 +78,11 @@ Example of using [upper](/docs/templates/hcl_templates/functions/string/upper) t For builder-specific builder variables, please also refer to the builder docs: -- Amazon EC2: [chroot](/docs/builders/amazon/chroot.mdx#build-shared-information-variables), - [EBS Volume](/docs/builders/amazon/ebsvolume.mdx#build-shared-information-variables), - [EBS](/docs/builders/amazon/ebs.mdx#build-shared-information-variables), - [EBS Surrogate](/docs/builders/amazon/ebssurrogate.mdx#build-shared-information-variables), - [Instance](/docs/builders/amazon/instance.mdx#build-shared-information-variables). +- Amazon EC2: [chroot](/docs/builders/amazon/chroot#build-shared-information-variables), + [EBS Volume](/docs/builders/amazon/ebsvolume#build-shared-information-variables), + [EBS](/docs/builders/amazon/ebs#build-shared-information-variables), + [EBS Surrogate](/docs/builders/amazon/ebssurrogate#build-shared-information-variables), + [Instance](/docs/builders/amazon/instance#build-shared-information-variables). The HCL2 Special Build Variables is in beta; please report any issues or requests on the Packer issue tracker on GitHub. diff --git a/website/content/docs/templates/hcl_templates/functions/string/regex.mdx b/website/content/docs/templates/hcl_templates/functions/string/regex.mdx index 2361f83e3..4ec51133c 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regex.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regex.mdx @@ -31,7 +31,7 @@ It's not valid to mix both named and unnamed capture groups in the same pattern. If the given pattern does not match at all, the `regex` raises an error. To _test_ whether a given pattern matches a string, use -[`regexall`](./regexall.mdx) and test that the result has length greater than +[`regexall`](./regexall) and test that the result has length greater than zero. The pattern is a string containing a mixture of literal characters and special @@ -153,8 +153,8 @@ string. ## Related Functions -- [`regexall`](./regexall.mdx) searches for potentially multiple matches of a given pattern in a string. -- [`replace`](./replace.mdx) replaces a substring of a string with another string, optionally matching using the same regular expression syntax as `regex`. +- [`regexall`](./regexall) searches for potentially multiple matches of a given pattern in a string. +- [`replace`](./replace) replaces a substring of a string with another string, optionally matching using the same regular expression syntax as `regex`. If Packer already has a more specialized function to parse the syntax you are trying to match, prefer to use that function instead. Regular expressions diff --git a/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx b/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx index b93f0456b..3dac57bff 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx @@ -15,7 +15,7 @@ to a string and returns a list of all matches. regexall(pattern, string) ``` -`regexall` is a variant of [`regex`](./regex.mdx) and uses the same pattern +`regexall` is a variant of [`regex`](./regex) and uses the same pattern syntax. For any given input to `regex`, `regexall` returns a list of whatever type `regex` would've returned, with one element per match. That is: @@ -48,7 +48,7 @@ false ## Related Functions -- [`regex`](./regex.mdx) searches for a single match of a given pattern, and +- [`regex`](./regex) searches for a single match of a given pattern, and returns an error if no match is found. If Packer already has a more specialized function to parse the syntax you diff --git a/website/content/docs/templates/legacy_json_templates/engine.mdx b/website/content/docs/templates/legacy_json_templates/engine.mdx index 727ff2135..0868f84a6 100644 --- a/website/content/docs/templates/legacy_json_templates/engine.mdx +++ b/website/content/docs/templates/legacy_json_templates/engine.mdx @@ -110,11 +110,11 @@ Here is a full list of the available functions for reference. For builder-specific builder variables, please also refer to the builder docs: - - Amazon EC2: [chroot](/docs/builders/amazon/chroot.mdx#build-shared-information-variables), - [EBS Volume](/docs/builders/amazon/ebsvolume.mdx#build-shared-information-variables), - [EBS](/docs/builders/amazon/ebs.mdx#build-shared-information-variables), - [EBS Surrogate](/docs/builders/amazon/ebssurrogate.mdx#build-shared-information-variables), - [Instance](/docs/builders/amazon/instance.mdx#build-shared-information-variables). + - Amazon EC2: [chroot](/docs/builders/amazon/chroot#build-shared-information-variables), + [EBS Volume](/docs/builders/amazon/ebsvolume#build-shared-information-variables), + [EBS](/docs/builders/amazon/ebs#build-shared-information-variables), + [EBS Surrogate](/docs/builders/amazon/ebssurrogate#build-shared-information-variables), + [Instance](/docs/builders/amazon/instance#build-shared-information-variables). This engine is in beta; please report any issues or requests on the Packer issue tracker on GitHub. From cb359e80643897f62de8324ea962f43a4e1b9a6f Mon Sep 17 00:00:00 2001 From: Harvey Lowndes Date: Fri, 26 Mar 2021 11:46:15 +0000 Subject: [PATCH 179/212] Update OCI docs for flex shapes Update the docs to reflect flex shape additions. Also makes a fix to the mapstructure. --- builder/oracle/oci/config.go | 4 +-- builder/oracle/oci/config.hcl2spec.go | 29 +++++++++++++++++++- website/content/docs/builders/oracle/oci.mdx | 5 ++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/builder/oracle/oci/config.go b/builder/oracle/oci/config.go index 6e369dc97..943bd32fa 100644 --- a/builder/oracle/oci/config.go +++ b/builder/oracle/oci/config.go @@ -1,4 +1,4 @@ -//go:generate mapstructure-to-hcl2 -type Config,CreateVNICDetails,ListImagesRequest +//go:generate mapstructure-to-hcl2 -type Config,CreateVNICDetails,ListImagesRequest,FlexShapeConfig package oci @@ -48,7 +48,7 @@ type ListImagesRequest struct { type FlexShapeConfig struct { Ocpus *float32 `mapstructure:"ocpus" required:"false"` - MemoryInGBs *float32 `mapstructure:"ocpus" required:"false"` + MemoryInGBs *float32 `mapstructure:"memory_in_gbs" required:"false"` } type Config struct { diff --git a/builder/oracle/oci/config.hcl2spec.go b/builder/oracle/oci/config.hcl2spec.go index f80dd58fe..c564f1a5a 100644 --- a/builder/oracle/oci/config.hcl2spec.go +++ b/builder/oracle/oci/config.hcl2spec.go @@ -1,4 +1,4 @@ -// Code generated by "mapstructure-to-hcl2 -type Config,CreateVNICDetails,ListImagesRequest"; DO NOT EDIT. +// Code generated by "mapstructure-to-hcl2 -type Config,CreateVNICDetails,ListImagesRequest,FlexShapeConfig"; DO NOT EDIT. package oci @@ -88,6 +88,7 @@ type FlatConfig struct { InstanceTags map[string]string `mapstructure:"instance_tags" cty:"instance_tags" hcl:"instance_tags"` InstanceDefinedTags map[string]map[string]interface{} `mapstructure:"instance_defined_tags" cty:"instance_defined_tags" hcl:"instance_defined_tags"` Shape *string `mapstructure:"shape" cty:"shape" hcl:"shape"` + ShapeConfig *FlatFlexShapeConfig `mapstructure:"shape_config" cty:"shape_config" hcl:"shape_config"` BootVolumeSizeInGBs *int64 `mapstructure:"disk_size" cty:"disk_size" hcl:"disk_size"` Metadata map[string]string `mapstructure:"metadata" cty:"metadata" hcl:"metadata"` UserData *string `mapstructure:"user_data" cty:"user_data" hcl:"user_data"` @@ -188,6 +189,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "instance_tags": &hcldec.AttrSpec{Name: "instance_tags", Type: cty.Map(cty.String), Required: false}, "instance_defined_tags": &hcldec.AttrSpec{Name: "instance_defined_tags", Type: cty.Map(cty.String), Required: false}, "shape": &hcldec.AttrSpec{Name: "shape", Type: cty.String, Required: false}, + "shape_config": &hcldec.BlockSpec{TypeName: "shape_config", Nested: hcldec.ObjectSpec((*FlatFlexShapeConfig)(nil).HCL2Spec())}, "disk_size": &hcldec.AttrSpec{Name: "disk_size", Type: cty.Number, Required: false}, "metadata": &hcldec.AttrSpec{Name: "metadata", Type: cty.Map(cty.String), Required: false}, "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, @@ -239,6 +241,31 @@ func (*FlatCreateVNICDetails) HCL2Spec() map[string]hcldec.Spec { return s } +// FlatFlexShapeConfig is an auto-generated flat version of FlexShapeConfig. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatFlexShapeConfig struct { + Ocpus *float32 `mapstructure:"ocpus" required:"false" cty:"ocpus" hcl:"ocpus"` + MemoryInGBs *float32 `mapstructure:"memory_in_gbs" required:"false" cty:"memory_in_gbs" hcl:"memory_in_gbs"` +} + +// FlatMapstructure returns a new FlatFlexShapeConfig. +// FlatFlexShapeConfig is an auto-generated flat version of FlexShapeConfig. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*FlexShapeConfig) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatFlexShapeConfig) +} + +// HCL2Spec returns the hcl spec of a FlexShapeConfig. +// This spec is used by HCL to read the fields of FlexShapeConfig. +// The decoded values from this spec will then be applied to a FlatFlexShapeConfig. +func (*FlatFlexShapeConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "ocpus": &hcldec.AttrSpec{Name: "ocpus", Type: cty.Number, Required: false}, + "memory_in_gbs": &hcldec.AttrSpec{Name: "memory_in_gbs", Type: cty.Number, Required: false}, + } + return s +} + // FlatListImagesRequest is an auto-generated flat version of ListImagesRequest. // Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. type FlatListImagesRequest struct { diff --git a/website/content/docs/builders/oracle/oci.mdx b/website/content/docs/builders/oracle/oci.mdx index 167d62737..d9d19f17c 100644 --- a/website/content/docs/builders/oracle/oci.mdx +++ b/website/content/docs/builders/oracle/oci.mdx @@ -100,6 +100,11 @@ can also be supplied to override the typical auto-generated key: [ListShapes](https://docs.us-phoenix-1.oraclecloud.com/api/#/en/iaas/20160918/Shape/ListShapes) operation available in the Core Services API. +- `shape_config` (map of strings) - The shape configuration for an instance. The shape configuration determines the resources + allocated to an instance. Options: + - `ocpus` - The total number of OCPUs available to the instance. + - `memory_in_gbs` - The total amount of memory, in gigabytes, available to the instance. + - `subnet_ocid` (string) - The name of the subnet within which a new instance is launched and provisioned. From fbb94299108a5a07e8742c8e5ebe1f44f4bc75f1 Mon Sep 17 00:00:00 2001 From: Kaivalya Shah Date: Mon, 29 Mar 2021 14:30:42 +0530 Subject: [PATCH 180/212] HCL2 example syntax changes (#10832) An HCL2 example contained commas to separate the lines, and the metadata block did not have the equals sign, which is not valid. --- website/content/docs/builders/googlecompute.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/website/content/docs/builders/googlecompute.mdx b/website/content/docs/builders/googlecompute.mdx index a5569f8c8..2db9489c8 100644 --- a/website/content/docs/builders/googlecompute.mdx +++ b/website/content/docs/builders/googlecompute.mdx @@ -215,13 +215,13 @@ source "googlecompute" "windows-example" { project_id = "MY_PROJECT" source_image = "windows-server-2019-dc-v20200813" zone = "us-central1-a" - disk_size = 50, - machine_type = "n1-standard-2", - communicator ="winrm", - winrm_username = "packer_user", - winrm_insecure = true, - winrm_use_ssl = true, - metadata { + disk_size = 50 + machine_type = "n1-standard-2" + communicator = "winrm" + winrm_username = "packer_user" + winrm_insecure = true + winrm_use_ssl = true + metadata = { windows-startup-script-cmd = "winrm quickconfig -quiet & net user /add packer_user & net localgroup administrators packer_user /add & winrm set winrm/config/service/auth @{Basic=\"true\"}" } } From 2ac5fe894cc24546c0fa9fa7f5eecc902abba15d Mon Sep 17 00:00:00 2001 From: Kerim Satirli Date: Mon, 29 Mar 2021 11:01:03 +0200 Subject: [PATCH 181/212] adds missing word (#10836) --- website/content/docs/datasources/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/datasources/index.mdx b/website/content/docs/datasources/index.mdx index 542a3ef56..5d82d6bce 100644 --- a/website/content/docs/datasources/index.mdx +++ b/website/content/docs/datasources/index.mdx @@ -15,4 +15,4 @@ See the [`data`](/docs/templates/hcl_templates/datasources) block documentation about working with data sources. For information on an individual data source, choose it from the sidebar. --> **Note:** Data sources is a feature exclusively to HCL2 templates included in Packer `v1.7.0`. +-> **Note:** Data sources is a feature exclusively available to HCL2 templates included in Packer `v1.7.0` (and newer). From b9b1cdf75f2170d12852caacb69d1f6e5a7a9cf6 Mon Sep 17 00:00:00 2001 From: Harvey Lowndes Date: Mon, 29 Mar 2021 11:04:48 +0100 Subject: [PATCH 182/212] Address review comments --- builder/oracle/oci/config.go | 12 ++++++++++++ builder/oracle/oci/driver_oci.go | 14 ++++++++------ website/content/docs/builders/oracle/oci.mdx | 10 ++++++---- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/builder/oracle/oci/config.go b/builder/oracle/oci/config.go index 943bd32fa..50c442fe1 100644 --- a/builder/oracle/oci/config.go +++ b/builder/oracle/oci/config.go @@ -283,6 +283,18 @@ func (c *Config) Prepare(raws ...interface{}) error { errs, errors.New("'shape' must be specified")) } + if strings.HasSuffix(c.Shape, "Flex") { + if c.ShapeConfig.Ocpus == nil { + errs = packersdk.MultiErrorAppend( + errs, errors.New("'Ocpus' must be specified when using flexible shapes")) + } + } + + if c.ShapeConfig.MemoryInGBs != nil && c.ShapeConfig.Ocpus == nil { + errs = packersdk.MultiErrorAppend( + errs, errors.New("'Ocpus' must be specified if memory_in_gbs is specified")) + } + if (c.SubnetID == "") && (c.CreateVnicDetails.SubnetId == nil) { errs = packersdk.MultiErrorAppend( errs, errors.New("'subnet_ocid' must be specified")) diff --git a/builder/oracle/oci/driver_oci.go b/builder/oracle/oci/driver_oci.go index 2d8ea27e8..1b8f978d3 100644 --- a/builder/oracle/oci/driver_oci.go +++ b/builder/oracle/oci/driver_oci.go @@ -95,11 +95,6 @@ func (d *driverOCI) CreateInstance(ctx context.Context, publicKey string) (strin FreeformTags: d.cfg.CreateVnicDetails.FreeformTags, } - LaunchInstanceShapeConfigDetails := core.LaunchInstanceShapeConfigDetails{ - Ocpus: d.cfg.ShapeConfig.Ocpus, - MemoryInGBs: d.cfg.ShapeConfig.MemoryInGBs, - } - // Determine base image ID var imageId *string if d.cfg.BaseImageID != "" { @@ -159,11 +154,18 @@ func (d *driverOCI) CreateInstance(ctx context.Context, publicKey string) (strin DisplayName: d.cfg.InstanceName, FreeformTags: d.cfg.InstanceTags, Shape: &d.cfg.Shape, - ShapeConfig: &LaunchInstanceShapeConfigDetails, SourceDetails: InstanceSourceDetails, Metadata: metadata, } + if d.cfg.ShapeConfig.Ocpus != nil { + LaunchInstanceShapeConfigDetails := core.LaunchInstanceShapeConfigDetails{ + Ocpus: d.cfg.ShapeConfig.Ocpus, + MemoryInGBs: d.cfg.ShapeConfig.MemoryInGBs, + } + instanceDetails.ShapeConfig = &LaunchInstanceShapeConfigDetails + } + instance, err := d.computeClient.LaunchInstance(context.TODO(), core.LaunchInstanceRequest{ LaunchInstanceDetails: instanceDetails, RequestMetadata: requestMetadata, diff --git a/website/content/docs/builders/oracle/oci.mdx b/website/content/docs/builders/oracle/oci.mdx index d9d19f17c..e63d8fa0b 100644 --- a/website/content/docs/builders/oracle/oci.mdx +++ b/website/content/docs/builders/oracle/oci.mdx @@ -100,10 +100,7 @@ can also be supplied to override the typical auto-generated key: [ListShapes](https://docs.us-phoenix-1.oraclecloud.com/api/#/en/iaas/20160918/Shape/ListShapes) operation available in the Core Services API. -- `shape_config` (map of strings) - The shape configuration for an instance. The shape configuration determines the resources - allocated to an instance. Options: - - `ocpus` - The total number of OCPUs available to the instance. - - `memory_in_gbs` - The total amount of memory, in gigabytes, available to the instance. + When using flexible shapes, ocpus must be set. - `subnet_ocid` (string) - The name of the subnet within which a new instance is launched and provisioned. @@ -192,6 +189,11 @@ can also be supplied to override the typical auto-generated key: - `use_private_ip` (boolean) - Use private ip addresses to connect to the instance via ssh. +- `shape_config` (object) - The shape configuration for an instance. The shape configuration determines the resources + allocated to an instance. Options: + - `ocpus` (required when using flexible shapes or memory_in_gbs is set) (float32) - The total number of OCPUs available to the instance. + - `memory_in_gbs` (optional) (float32) - The total amount of memory, in gigabytes, available to the instance. + - `metadata` (map of strings) - Metadata optionally contains custom metadata key/value pairs provided in the configuration. While this can be used to From a588808270a377b2fabd8ede6b8c2e17782fb577 Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Mon, 29 Mar 2021 14:04:32 +0200 Subject: [PATCH 183/212] update v1.7.1 changelog (#10837) --- CHANGELOG.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3ada5059..e15b18ad6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ### NOTES: +* builder/amazon: Has been vendored in this release and will no longer be + updated with Packer core. In Packer v1.8.0 the plugin will be removed + entirely. The `amazon` components will continue to work as expected until + then, but for the latest offerings of the Amazon plugin, users are + encourage to use the `packer init` command to install the latest release + version. For more details see [Installing Packer + Plugins](https://www.packer.io/docs/plugins#installing- plugins) * builder/docker: Has been vendored in this release and will no longer be updated with Packer core. In Packer v1.8.0 the plugin will be removed entirely. The `docker` builder will continue to work as expected until @@ -9,6 +16,8 @@ encourage to use the `packer init` command to install the latest release version. For more details see [Installing Packer Plugins](https://www.packer.io/docs/plugins#installing- plugins) +* darwin/arm64: Packer now includes the darwin/arm64 binary to its releases to + supports the new OSX M1. * post-processor/docker-\*: Have been vendored in this release and will no longer be updated with Packer core. In Packer v1.8.0 the plugin will be removed entirely. The `docker` builder will continue to work as expected @@ -30,8 +39,11 @@ encrypting with KMS and sharing across accounts. [GH-10754] * builder/azure: Add client_cert_token_timeout option. [GH-10528] * builder/google: Make Windows password timeout configurable. [GH-10727] +* builder/google: Make Windows password timeout configurable. [GH-10727] * builder/google: Update public GCP image project as gce-uefi-images are deprecated. [GH-10724] +* builder/proxmox: Allow using API tokens for Proxmox authentication. + [GH-10797] * builder/qemu: Added firmware option. [GH-10683] * builder/scaleway: add support for timeout in shutdown step. [GH-10503] * builder/vagrant: Fix logging to be clearer when Vagrant builder overrides @@ -47,11 +59,19 @@ [GH-10651] * command/fmt: Adding recursive flag to formatter to format subdirectories. [GH-10457] +* core/hcl2: Add legacy_isotime function. [GH-10780] +* core/hcl2: Add templatefile function. [GH-10776] +* core/hcl2_upgrade: hcl2_upgrade command can now upgrade json var-files. + [GH-10676] +* core/init: Add implicit required_plugin blocks feature. [GH-10732] +* core: Add http_content option to serve variables from HTTP at preseed. + [GH-10801] * core: Change template parsing error to include warning about file extensions. [GH-10652] * core: Update to gopsutil v3.21.1 to allow builds to work for darwin arm64. [GH-10697] -* hcl2_upgrade: hcl2_upgrade command can now upgrade json var-files [GH-10676] +* provisioner/inspec: Allow non-zero exit codes for inspec provisioner. + [GH-10723] ### BUG FIXES * buider/azure: Update builder to ensure a proper clean up Azure temporary @@ -68,6 +88,8 @@ [GH-10748] * builder/oracle-oci: Update Oracle Go SDK to fix issue with reading key file. [GH-10560] [GH-10774] +* builder/outscale: Fix omi_description that was ignored in Osc builder + [GH-10792] * builder/parallels: Make Packer respect winrm_host flag in winrm connect func. [GH-10748] * builder/proxmox: Fixes issue when using `additional_iso_files` in HCL enabled @@ -83,6 +105,7 @@ before giving up. [GH-10541] * core/hcl2_upgrade: Check for nil config map when provisioner/post-processor doesn't have config. [GH-10730] +* core/hcl2_upgrade: Fix escaped quotes in template functions [GH-10794] * core/hcl2_upgrade: Make hcl2_upgrade command correctly translate pause_before. [GH-10654] * core/hcl2_upgrade: Make json variables using template engines get stored as @@ -94,6 +117,8 @@ * core: Pin Packer to Golang 1.16 to fix code generation issues. [GH-10702] * core: Templates previously could not interpolate the environment variable PACKER_LOG_PATH. [GH-10660] +* post-processor/vagrant-cloud: Override direct upload based on box size + [GH-10820] * provisioner/chef-solo: HCL2 templates can support the json_string option. [GH-10655] * provisioner/inspec: Add new configuration field `valid_exit_codes` to allow From 77a29fc2f8797a962e3c00218bdcc822d8f3e170 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Tue, 30 Mar 2021 15:53:04 +0200 Subject: [PATCH 184/212] Allow to have `dynamic` blocks in a `build` block + tests (#10825) This : * allows to have a `build.dynamic` block * add tests * makes sure to show a correct message when a source was not found * display only name of source (instead of a weird map printout) * use a "Did you mean %q" feature where possible Because dynamic blocks need all variables to be evaluated and available, I moved parsing of everything that is not a variable to "after" variables are extrapolated. Meaning that dynamic block get expanded in the `init` phase and then only we start interpreting HCL2 content. After #10819 fix #10657 --- command/build_test.go | 13 ++++ .../test-fixtures/hcl/dynamic/build.pkr.hcl | 47 ++++++++++++++ hcl2template/parser.go | 21 ++++--- hcl2template/plugin.go | 22 +++---- hcl2template/types.build.go | 6 +- hcl2template/types.packer_config_test.go | 61 +------------------ hcl2template/types.source.go | 10 +++ 7 files changed, 98 insertions(+), 82 deletions(-) create mode 100644 command/test-fixtures/hcl/dynamic/build.pkr.hcl diff --git a/command/build_test.go b/command/build_test.go index de7988a5c..a948760af 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -383,6 +383,19 @@ func TestBuild(t *testing.T) { }, }, }, + { + name: "hcl - dynamic source blocks in a build block", + args: []string{ + testFixture("hcl", "dynamic", "build.pkr.hcl"), + }, + fileCheck: fileCheck{ + expectedContent: map[string]string{ + "dummy.txt": "layers/base/main/files", + "postgres/13.txt": "layers/base/main/files\nlayers/base/init/files\nlayers/postgres/files", + }, + expected: []string{"dummy-fooo.txt", "dummy-baar.txt", "postgres/13-fooo.txt", "postgres/13-baar.txt"}, + }, + }, } for _, tt := range tc { diff --git a/command/test-fixtures/hcl/dynamic/build.pkr.hcl b/command/test-fixtures/hcl/dynamic/build.pkr.hcl new file mode 100644 index 000000000..3fc70dcd8 --- /dev/null +++ b/command/test-fixtures/hcl/dynamic/build.pkr.hcl @@ -0,0 +1,47 @@ + +source "file" "base" { +} + +variables { + images = { + dummy = { + image = "dummy" + layers = ["base/main"] + } + postgres = { + image = "postgres/13" + layers = ["base/main", "base/init", "postgres"] + } + } +} + +locals { + files = { + foo = { + destination = "fooo" + } + bar = { + destination = "baar" + } + } +} + +build { + dynamic "source" { + for_each = var.images + labels = ["file.base"] + content { + name = source.key + target = "${source.value.image}.txt" + content = join("\n", formatlist("layers/%s/files", var.images[source.key].layers)) + } + } + + dynamic "provisioner" { + for_each = local.files + labels = ["shell-local"] + content { + inline = ["echo '' > ${var.images[source.name].image}-${provisioner.value.destination}.txt"] + } + } +} diff --git a/hcl2template/parser.go b/hcl2template/parser.go index 19e8de0ad..0ab9f1a2d 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -76,12 +76,15 @@ const ( // Parse will Parse all HCL files in filename. Path can be a folder or a file. // -// Parse will first Parse variables and then the rest; so that interpolation -// can happen. +// Parse will first Parse packer and variables blocks, omitting the rest, which +// can be expanded with dynamic blocks. We need to evaluate all variables for +// that, so that data sources can expand dynamic blocks too. // // Parse returns a PackerConfig that contains configuration layout of a packer // build; sources(builders)/provisioners/posts-processors will not be started -// and their contents wont be verified; Most syntax errors will cause an error. +// and their contents wont be verified; Most syntax errors will cause an error, +// init should be called next to expand dynamic blocks and verify that used +// things do exist. func (p *Parser) Parse(filename string, varFiles []string, argVars map[string]string) (*PackerConfig, hcl.Diagnostics) { var files []*hcl.File var diags hcl.Diagnostics @@ -235,10 +238,6 @@ func (p *Parser) Parse(filename string, varFiles []string, argVars map[string]st diags = append(diags, cfg.collectInputVariableValues(os.Environ(), varFiles, argVars)...) } - // parse the actual content // rest - for _, file := range cfg.files { - diags = append(diags, cfg.parser.parseConfig(file, cfg)...) - } return cfg, diags } @@ -321,6 +320,11 @@ func (cfg *PackerConfig) Initialize(opts packer.InitializeOptions) hcl.Diagnosti filterVarsFromLogs(cfg.InputVariables) filterVarsFromLogs(cfg.LocalVariables) + // parse the actual content // rest + for _, file := range cfg.files { + diags = append(diags, cfg.parser.parseConfig(file, cfg)...) + } + diags = append(diags, cfg.initializeBlocks()...) return diags @@ -332,6 +336,7 @@ func (p *Parser) parseConfig(f *hcl.File, cfg *PackerConfig) hcl.Diagnostics { var diags hcl.Diagnostics body := f.Body + body = dynblock.Expand(body, cfg.EvalContext(DatasourceContext, nil)) content, moreDiags := body.Content(configSchema) diags = append(diags, moreDiags...) @@ -380,7 +385,7 @@ func (p *Parser) parseConfig(f *hcl.File, cfg *PackerConfig) hcl.Diagnostics { func (p *Parser) decodeDatasources(file *hcl.File, cfg *PackerConfig) hcl.Diagnostics { var diags hcl.Diagnostics - body := dynblock.Expand(file.Body, cfg.EvalContext(DatasourceContext, nil)) + body := file.Body content, moreDiags := body.Content(configSchema) diags = append(diags, moreDiags...) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 7f5a5206d..fb807dadb 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -7,7 +7,7 @@ import ( "runtime" "github.com/hashicorp/hcl/v2" - "github.com/hashicorp/hcl/v2/ext/dynblock" + "github.com/hashicorp/packer-plugin-sdk/didyoumean" pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" ) @@ -109,7 +109,7 @@ func (cfg *PackerConfig) detectPluginBinaries() hcl.Diagnostics { } func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { - // verify that all used plugins do exist and expand dynamic bodies + // verify that all used plugins do exist var diags hcl.Diagnostics for _, build := range cfg.Builds { @@ -129,12 +129,16 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { sourceDefinition, found := cfg.Sources[srcUsage.SourceRef] if !found { + availableSrcs := listAvailableSourceNames(cfg.Sources) + detail := fmt.Sprintf("Known: %v", availableSrcs) + if sugg := didyoumean.NameSuggestion(srcUsage.SourceRef.String(), availableSrcs); sugg != "" { + detail = fmt.Sprintf("Did you mean to use %q?", sugg) + } diags = append(diags, &hcl.Diagnostic{ - Summary: "Unknown " + sourceLabel + " " + srcUsage.String(), + Summary: "Unknown " + sourceLabel + " " + srcUsage.SourceRef.String(), Subject: build.HCL2Ref.DefRange.Ptr(), Severity: hcl.DiagError, - Detail: fmt.Sprintf("Known: %v", cfg.Sources), - // TODO: show known sources as a string slice here ^. + Detail: detail, }) continue } @@ -144,8 +148,6 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { // merge additions into source definition to get a new body. body = hcl.MergeBodies([]hcl.Body{body, srcUsage.Body}) } - // expand any dynamic block. - body = dynblock.Expand(body, cfg.EvalContext(BuildContext, nil)) srcUsage.Body = body } @@ -159,8 +161,6 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { Severity: hcl.DiagError, }) } - // Allow rest of the body to have dynamic blocks - provBlock.HCL2Ref.Rest = dynblock.Expand(provBlock.HCL2Ref.Rest, cfg.EvalContext(BuildContext, nil)) } if build.ErrorCleanupProvisionerBlock != nil { @@ -172,8 +172,6 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { Severity: hcl.DiagError, }) } - // Allow rest of the body to have dynamic blocks - build.ErrorCleanupProvisionerBlock.HCL2Ref.Rest = dynblock.Expand(build.ErrorCleanupProvisionerBlock.HCL2Ref.Rest, cfg.EvalContext(BuildContext, nil)) } for _, ppList := range build.PostProcessorsLists { @@ -186,8 +184,6 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { Severity: hcl.DiagError, }) } - // Allow the rest of the body to have dynamic blocks - ppBlock.HCL2Ref.Rest = dynblock.Expand(ppBlock.HCL2Ref.Rest, cfg.EvalContext(BuildContext, nil)) } } diff --git a/hcl2template/types.build.go b/hcl2template/types.build.go index 30e5405ca..471c2c39a 100644 --- a/hcl2template/types.build.go +++ b/hcl2template/types.build.go @@ -81,6 +81,7 @@ type Builds []*BuildBlock // load the references to the contents of the build block. func (p *Parser) decodeBuildConfig(block *hcl.Block, cfg *PackerConfig) (*BuildBlock, hcl.Diagnostics) { build := &BuildBlock{} + body := block.Body var b struct { Name string `hcl:"name,optional"` @@ -88,7 +89,7 @@ func (p *Parser) decodeBuildConfig(block *hcl.Block, cfg *PackerConfig) (*BuildB FromSources []string `hcl:"sources,optional"` Config hcl.Body `hcl:",remain"` } - diags := gohcl.DecodeBody(block.Body, nil, &b) + diags := gohcl.DecodeBody(body, nil, &b) if diags.HasErrors() { return nil, diags } @@ -118,7 +119,8 @@ func (p *Parser) decodeBuildConfig(block *hcl.Block, cfg *PackerConfig) (*BuildB build.Sources = append(build.Sources, SourceUseBlock{SourceRef: ref}) } - content, moreDiags := b.Config.Content(buildSchema) + body = b.Config + content, moreDiags := body.Content(buildSchema) diags = append(diags, moreDiags...) if diags.HasErrors() { return nil, diags diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index a045ebb68..891cccb8b 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -538,65 +538,8 @@ func TestParser_no_init(t *testing.T) { Type: cty.List(cty.String), }, }, - Sources: map[SourceRef]SourceBlock{ - refVBIsoUbuntu1204: {Type: "virtualbox-iso", Name: "ubuntu-1204"}, - refAWSV3MyImage: {Type: "amazon-v3-ebs", Name: "my-image"}, - }, - Builds: Builds{ - &BuildBlock{ - Sources: []SourceUseBlock{ - { - SourceRef: refVBIsoUbuntu1204, - }, - { - SourceRef: refAWSV3MyImage, - }, - }, - ProvisionerBlocks: []*ProvisionerBlock{ - { - PType: "shell", - PName: "provisioner that does something", - }, - { - PType: "file", - }, - }, - PostProcessorsLists: [][]*PostProcessorBlock{ - { - { - PType: "amazon-import", - PName: "something", - KeepInputArtifact: pTrue, - }, - }, - { - { - PType: "amazon-import", - }, - }, - { - { - PType: "amazon-import", - PName: "first-nested-post-processor", - }, - { - PType: "amazon-import", - PName: "second-nested-post-processor", - }, - }, - { - { - PType: "amazon-import", - PName: "third-nested-post-processor", - }, - { - PType: "amazon-import", - PName: "fourth-nested-post-processor", - }, - }, - }, - }, - }, + Sources: nil, + Builds: nil, }, false, false, []packersdk.Build{}, diff --git a/hcl2template/types.source.go b/hcl2template/types.source.go index dde0ed257..c6afca46d 100644 --- a/hcl2template/types.source.go +++ b/hcl2template/types.source.go @@ -2,6 +2,7 @@ package hcl2template import ( "fmt" + "sort" "strconv" "github.com/hashicorp/hcl/v2" @@ -170,3 +171,12 @@ var NoSource SourceRef func (r SourceRef) String() string { return fmt.Sprintf("%s.%s", r.Type, r.Name) } + +func listAvailableSourceNames(srcs map[SourceRef]SourceBlock) []string { + res := make([]string, 0, len(srcs)) + for k := range srcs { + res = append(res, k.String()) + } + sort.Strings(res) + return res +} From 349a300213b8a34ce1a7030ad153f892d55dfd9e Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Tue, 30 Mar 2021 20:48:06 +0200 Subject: [PATCH 185/212] Add new disk to existingDevices list (#10844) * add new disk to existingDevices list * add tests --- builder/vsphere/driver/disk.go | 1 + builder/vsphere/driver/disk_test.go | 46 +++++++++++++++++++++++++++++ builder/vsphere/driver/vm_test.go | 43 +++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 builder/vsphere/driver/disk_test.go diff --git a/builder/vsphere/driver/disk.go b/builder/vsphere/driver/disk.go index 07553e212..a51201992 100644 --- a/builder/vsphere/driver/disk.go +++ b/builder/vsphere/driver/disk.go @@ -59,6 +59,7 @@ func (c *StorageConfig) AddStorageDevices(existingDevices object.VirtualDeviceLi } existingDevices.AssignController(disk, controllers[dc.ControllerIndex]) + existingDevices = append(existingDevices, disk) newDevices = append(newDevices, disk) } diff --git a/builder/vsphere/driver/disk_test.go b/builder/vsphere/driver/disk_test.go new file mode 100644 index 000000000..174e008ba --- /dev/null +++ b/builder/vsphere/driver/disk_test.go @@ -0,0 +1,46 @@ +package driver + +import ( + "testing" + + "github.com/vmware/govmomi/object" +) + +func TestAddStorageDevices(t *testing.T) { + config := &StorageConfig{ + DiskControllerType: []string{"pvscsi"}, + Storage: []Disk{ + { + DiskSize: 3072, + DiskThinProvisioned: true, + ControllerIndex: 0, + }, + { + DiskSize: 20480, + DiskThinProvisioned: true, + ControllerIndex: 0, + }, + }, + } + + noExistingDevices := object.VirtualDeviceList{} + storageConfigSpec, err := config.AddStorageDevices(noExistingDevices) + if err != nil { + t.Fatalf("unexpected erro: %q", err.Error()) + } + if len(storageConfigSpec) != 3 { + t.Fatalf("Expecting VirtualDeviceList to have 3 storage devices but had %d", len(storageConfigSpec)) + } + + existingDevices := object.VirtualDeviceList{} + device, err := existingDevices.CreateNVMEController() + existingDevices = append(existingDevices, device) + + storageConfigSpec, err = config.AddStorageDevices(existingDevices) + if err != nil { + t.Fatalf("unexpected erro: %q", err.Error()) + } + if len(storageConfigSpec) != 3 { + t.Fatalf("Expecting VirtualDeviceList to have 3 storage devices but had %d", len(storageConfigSpec)) + } +} diff --git a/builder/vsphere/driver/vm_test.go b/builder/vsphere/driver/vm_test.go index 3a2b5106f..d598a0dab 100644 --- a/builder/vsphere/driver/vm_test.go +++ b/builder/vsphere/driver/vm_test.go @@ -60,3 +60,46 @@ func TestVirtualMachineDriver_Configure(t *testing.T) { t.Fatalf("Configure should fail") } } + +func TestVirtualMachineDriver_CreateVM(t *testing.T) { + sim, err := NewVCenterSimulator() + if err != nil { + t.Fatalf("should not fail: %s", err.Error()) + } + defer sim.Close() + + _, datastore := sim.ChooseSimulatorPreCreatedDatastore() + + config := &CreateConfig{ + Annotation: "mock annotation", + Name: "mock name", + Host: "DC0_H0", + Datastore: datastore.Name, + NICs: []NIC{ + { + Network: "VM Network", + NetworkCard: "vmxnet3", + }, + }, + StorageConfig: StorageConfig{ + DiskControllerType: []string{"pvscsi"}, + Storage: []Disk{ + { + DiskSize: 3072, + DiskThinProvisioned: true, + ControllerIndex: 0, + }, + { + DiskSize: 20480, + DiskThinProvisioned: true, + ControllerIndex: 0, + }, + }, + }, + } + + _, err = sim.driver.CreateVM(config) + if err != nil { + t.Fatalf("unexpected error %s", err.Error()) + } +} From 03d79a2c394baf633f6a4b573abae597d87c5dc6 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Tue, 30 Mar 2021 20:58:26 +0200 Subject: [PATCH 186/212] HCL2 variables: split validation from getting value (#10843) * HCL2 variables: split validation from getting value, to only This way we do this only once and log this only once. The errors were being ignored anyways. * Update types.variables_test.go --- hcl2template/parser.go | 6 ++--- hcl2template/types.packer_config.go | 8 +++---- hcl2template/types.variables.go | 34 ++++++++++++++++++++-------- hcl2template/types.variables_test.go | 2 +- 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/hcl2template/parser.go b/hcl2template/parser.go index 0ab9f1a2d..a41fc1b22 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -290,7 +290,7 @@ func filterVarsFromLogs(inputOrLocal Variables) { if !variable.Sensitive { continue } - value, _ := variable.Value() + value := variable.Value() _ = cty.Walk(value, func(_ cty.Path, nested cty.Value) (bool, error) { if nested.IsWhollyKnown() && !nested.IsNull() && nested.Type().Equals(cty.String) { packersdk.LogSecretFilter.Set(nested.AsString()) @@ -310,9 +310,9 @@ func (cfg *PackerConfig) Initialize(opts packer.InitializeOptions) hcl.Diagnosti return diags } - _, moreDiags = cfg.InputVariables.Values() + moreDiags = cfg.InputVariables.ValidateValues() diags = append(diags, moreDiags...) - _, moreDiags = cfg.LocalVariables.Values() + moreDiags = cfg.LocalVariables.ValidateValues() diags = append(diags, moreDiags...) diags = append(diags, cfg.evaluateDatasources(opts.SkipDatasourcesExecution)...) diags = append(diags, cfg.evaluateLocalVariables(cfg.LocalBlocks)...) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 1b9762982..e09623901 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -91,8 +91,8 @@ const ( // decoder in order to tell what is the actual value of a var or a local and // the list of defined functions. func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty.Value) *hcl.EvalContext { - inputVariables, _ := cfg.InputVariables.Values() - localVariables, _ := cfg.LocalVariables.Values() + inputVariables := cfg.InputVariables.Values() + localVariables := cfg.LocalVariables.Values() ectx := &hcl.EvalContext{ Functions: Functions(cfg.Basedir), Variables: map[string]cty.Value{ @@ -594,7 +594,7 @@ func (p *PackerConfig) printVariables() string { sort.Strings(keys) for _, key := range keys { v := p.InputVariables[key] - val, _ := v.Value() + val := v.Value() fmt.Fprintf(out, "var.%s: %q\n", v.Name, PrintableCtyValue(val)) } out.WriteString("\n> local-variables:\n\n") @@ -602,7 +602,7 @@ func (p *PackerConfig) printVariables() string { sort.Strings(keys) for _, key := range keys { v := p.LocalVariables[key] - val, _ := v.Value() + val := v.Value() fmt.Fprintf(out, "local.%s: %q\n", v.Name, PrintableCtyValue(val)) } return out.String() diff --git a/hcl2template/types.variables.go b/hcl2template/types.variables.go index b56b5f5a7..61bb54345 100644 --- a/hcl2template/types.variables.go +++ b/hcl2template/types.variables.go @@ -152,9 +152,19 @@ func (v *Variable) validateValue(val VariableAssignment) (diags hcl.Diagnostics) } // Value returns the last found value from the list of variable settings. -func (v *Variable) Value() (cty.Value, hcl.Diagnostics) { +func (v *Variable) Value() cty.Value { if len(v.Values) == 0 { - return cty.UnknownVal(v.Type), hcl.Diagnostics{&hcl.Diagnostic{ + return cty.UnknownVal(v.Type) + } + val := v.Values[len(v.Values)-1] + return val.Value +} + +// ValidateValue tells if the selected value for the Variable is valid according +// to its validation settings. +func (v *Variable) ValidateValue() hcl.Diagnostics { + if len(v.Values) == 0 { + return hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: fmt.Sprintf("Unset variable %q", v.Name), Detail: "A used variable must be set or have a default value; see " + @@ -163,8 +173,8 @@ func (v *Variable) Value() (cty.Value, hcl.Diagnostics) { Context: v.Range.Ptr(), }} } - val := v.Values[len(v.Values)-1] - return val.Value, v.validateValue(v.Values[len(v.Values)-1]) + + return v.validateValue(v.Values[len(v.Values)-1]) } type Variables map[string]*Variable @@ -177,15 +187,21 @@ func (variables Variables) Keys() []string { return keys } -func (variables Variables) Values() (map[string]cty.Value, hcl.Diagnostics) { +func (variables Variables) Values() map[string]cty.Value { res := map[string]cty.Value{} - var diags hcl.Diagnostics for k, v := range variables { - value, moreDiags := v.Value() - diags = append(diags, moreDiags...) + value := v.Value() res[k] = value } - return res, diags + return res +} + +func (variables Variables) ValidateValues() hcl.Diagnostics { + var diags hcl.Diagnostics + for _, v := range variables { + diags = append(diags, v.ValidateValue()...) + } + return diags } // decodeVariable decodes a variable key and value into Variables diff --git a/hcl2template/types.variables_test.go b/hcl2template/types.variables_test.go index 8b10832b1..4baa8f2cc 100644 --- a/hcl2template/types.variables_test.go +++ b/hcl2template/types.variables_test.go @@ -868,7 +868,7 @@ func TestVariables_collectVariableValues(t *testing.T) { } values := map[string]cty.Value{} for k, v := range tt.variables { - value, diag := v.Value() + value, diag := v.Value(), v.ValidateValue() if diag != nil { t.Fatalf("Value %s: %v", k, diag) } From f6dbc3e78a90092175a24816f1afbffb9f0333ae Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 Mar 2021 17:12:28 -0400 Subject: [PATCH 187/212] Update steps for generating the remote plugin docs.zip file (#10846) * Update steps for generating the remote plugin docs.zip file * Update a few typos * Fix tabbing issue --- .../content/docs/plugins/creation/index.mdx | 84 +++++-------------- 1 file changed, 23 insertions(+), 61 deletions(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 0ba1e9c2c..4117b5458 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -230,100 +230,62 @@ to install a plugin using `packer init`, see the `packer init` allows users to require and install remote Packer plugins, those not bundled with Packer core, that have been published to GitHub automatically. To help with the discovery of remote Packer plugins on GitHub, plugins maintainers can choose to register plugin documentation for each component directly on the [Packer Documentation Page](https://packer.io/docs). -The registration process requires the creation of a `.docs-artifacts` directory and a sidebar navigation file `docs-nav.json` for each of the plugin -components in the remote plugin's repository. A working example can be seen at the [packer-plugin-docker repository](https://github.com/hashicorp/packer-plugin-docker/tree/main/.docs-artifacts). +The registration process requires the creation of a `docs.zip` file archive containing the `.mdx` files for each of the plugin components in the remote plugin's repository. A working example can be seen at the [packer-plugin-docker repository](https://github.com/hashicorp/packer-plugin-docker/releases/latest). -Once in place the remote plugin can be added to Packer's website builds by opening a pull-request against [hashicorp/packer](https://github.com/packer), which the needed configuration pulling in the remote documentation. +Once in place the remote plugin can be added to Packer's website builds by opening a pull-request against [hashicorp/packer](https://github.com/packer), with the needed configuration for pulling in the remote documentation. Remote plugins will have their components listed under the respected types (i.e builders, provisioners, etc) using the names specified in the remote block configuration, and labeled with their respective [tier and namespace](/docs/plugins#tiers-and-namespaces). To register a plugin follow one of the following setups - + Documentation for a plugin is maintained within the `docs` directory and served on GitHub. -A GitHub workflow has been added to [packer-plugin-scaffolding](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs) that -can be used generate a documentation structure that can be consumed remotely by https://packer.io. See the full workflow at [generated-docs-artifacts.yml](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/.github/workflows/generate-docs-artifacts.yml) +To include plugin docs on Packer.io a global pre-hook has been added to the main scaffolding [.goreleaser.yml](https://github.com/hashicorp/packer-plugin-scaffolding/blob/42e5b0b1e575879b0477cb6d4291e027f4d92f85/.goreleaser.yml#L10) file, that if uncommented will generate and include a docs.zip file as part of the plugin release. -The GitHub workflow will automatically create the `.docs-artifacts` directory with the generated sidebar navigation file, and open a new pull-request against the default configured branch to be merged by the maintainer. +The `docs.zip` file will contain all of the `.mdx` files under the plugins root `docs/` directory that can be consumed remotely by Packer.io. -By default the workflow is configured to trigger on the creation of tags beginning with `'v*` to ensure that documentation gets updated for each release. Updates to the plugin documentation will get pulled in at the time of the next Packer website deployment. +Once the first `docs.zip` file has been included into a release you will need to open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. -After merging the generated files to the default branch for the plugin repository. - -Open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. -This is done by adding the block below for the respective plugin to the file [docs-remote-navigation.js](https://github.com/hashicorp/packer/blob/master/website/data/docs-remote-plugins.json). +This is done by adding the block below for the respective plugin to the file [website/data/docs-remote-navigation.js](https://github.com/hashicorp/packer/blob/master/website/data/docs-remote-plugins.json). ```json { - "title": "Docker", - "path": "docker", - "repo": "hashicorp/packer-plugin-docker", + "title": "Scaffolding", + "path": "scaffolding", + "repo": "hashicorp/packer-plugin-scaffolding", + "version": "latest" } ``` -#### Required fields - -`title`: The name of the plugin to be displayed in the sidebar - See [naming conventions](#naming-conventions) - -`path`: The path name for the documentation page, which is usually the lower case version of `title` (e.g https - -`repo`: The full name of the GitHub repository (i.e org/repo-name) - -#### Optional fields - -`branch`: The name of the default branch of the repository. Defaults to main. - -`artifactDir`: The location of the docs artifacts directory in the remote repository. Defaults to `.doc-artifacts`. - +If a plugin maintainer wishes to only include a specific version of released docs then the `"version"` key in the above configuration should be set to a released version of the plugin. Otherwise it should be set to "latest". - + -The documentation structure needed for registering a plugin's documentation can be generated manually, but it is -encouraged to use the action on release events so that documentation stays up to date. +The documentation structure needed for Packer.io can be generated manually, by creating a zip file called `docs.zip` of the docs directory and included in the plugin release. -If your local development environment has a supported version (v10.0.0+) of [node](https://nodejs.org/en/) and a -supported version (>=5.2.0) [npm](https://www.npmjs.com/) installed, in the plugin root directory, you can run: - - -```shell-session -> npx -p @hashicorp/packer-docs-artifacts generate +```/bin/bash +[[ -d docs/ ]] && zip -r docs.zip docs/ ``` -The generated files will be placed under `PLUGIN_ROOT/.doc-artifacts`; this directory contains all the docs -and respective navigation information needed for including the plugin docs under [packer.io/docs/](https://packer.io/docs). +Once the first `docs.zip` file has been included into a release you will need to open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. -After merging the generated files to the default branch for the plugin repository. - -Open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. -This is done by adding the block below for the respective plugin to the file [docs-remote-navigation.js](https://github.com/hashicorp/packer/blob/master/website/data/docs-remote-plugins.json). +This is done by adding the block below for the respective plugin to the file [website/data/docs-remote-navigation.js](https://github.com/hashicorp/packer/blob/master/website/data/docs-remote-plugins.json). ```json { - "title": "Docker", - "path": "docker", - "repo": "hashicorp/packer-plugin-docker", + "title": "Scaffolding", + "path": "scaffolding", + "repo": "hashicorp/packer-plugin-scaffolding", + "version": "latest" } ``` -#### Required fields - -`title`: The name of the plugin to be displayed in the sidebar - See [naming conventions](#naming-conventions) - -`path`: The path name for the documentation page, which is usually the lower case version of `title` (e.g https - -`repo`: The full name of the GitHub repository (i.e org/repo-name) - -#### Optional fields - -`branch`: The name of the default branch of the repository. Defaults to main. - -`artifactDir`: The location of the docs artifacts directory in the remote repository. Defaults to `.doc-artifacts`. - +If a plugin maintainer wishes to only include a specific version of released docs then the `"version"` key in the above configuration should be set to a released version of the plugin. Otherwise it should be set to "latest". From 4746fc682dc4a9d8e6743e455c1e58a8c20746cc Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 Mar 2021 17:12:43 -0400 Subject: [PATCH 188/212] Update version of packer-plugin-docker (#10847) ``` go get github.com/hashicorp/packer-plugin-docker@v0.0.7 go mod tidy go mod vendor ``` --- go.mod | 4 +--- go.sum | 11 ++--------- .../post-processor/docker-tag/post-processor.go | 2 +- vendor/modules.txt | 6 +----- 4 files changed, 5 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index ac9052587..3b46e52ea 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/hashicorp/go-version v1.2.0 github.com/hashicorp/hcl/v2 v2.9.1 github.com/hashicorp/packer-plugin-amazon v0.0.1 - github.com/hashicorp/packer-plugin-docker v0.0.2 + github.com/hashicorp/packer-plugin-docker v0.0.7 github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 github.com/hashicorp/vault/api v1.0.4 github.com/hetznercloud/hcloud-go v1.15.1 @@ -64,13 +64,11 @@ require ( github.com/mitchellh/cli v1.1.0 github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed - github.com/mitchellh/gox v1.0.1 // indirect github.com/mitchellh/mapstructure v1.4.0 github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 github.com/mitchellh/reflectwalk v1.0.0 github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b - github.com/oracle/oci-go-sdk v18.0.0+incompatible // indirect github.com/oracle/oci-go-sdk/v36 v36.2.0 github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 github.com/pierrec/lz4 v2.0.5+incompatible diff --git a/go.sum b/go.sum index 2e9aac30b..40c59e73a 100644 --- a/go.sum +++ b/go.sum @@ -401,14 +401,10 @@ github.com/hashicorp/packer v1.6.7-0.20210126105722-aef4ced967ec/go.mod h1:2+Vo/ github.com/hashicorp/packer v1.6.7-0.20210208125835-f616955ebcb6/go.mod h1:7f5ZpTTRG53rQ58BcTADuTnpiBcB3wapuxl4sF2sGMM= github.com/hashicorp/packer v1.6.7-0.20210217093213-201869d627bf/go.mod h1:+EWPPcqee4h8S/y913Dnta1eJkgiqsGXBQgB75A2qV0= github.com/hashicorp/packer v1.7.0/go.mod h1:3KRJcwOctl2JaAGpQMI1bWQRArfWNWqcYjO6AOsVVGQ= -github.com/hashicorp/packer-plugin-amazon v0.0.0-20210322103904-ebc9f7a3cb33 h1:c8fxJJE9Ko8FXaTQexP22cHpvOmEZHk30WTWvo/BKFg= -github.com/hashicorp/packer-plugin-amazon v0.0.0-20210322103904-ebc9f7a3cb33/go.mod h1:12c9msibyHdId+Mk/pCbdRb1KaLIhaNyxeJ6n8bZt30= -github.com/hashicorp/packer-plugin-amazon v0.0.0-20210323151306-ff072d167737 h1:ZA8sQHjGIomiUz4SsccdxHwDk/ZI9CAmimUo7QKhMMs= -github.com/hashicorp/packer-plugin-amazon v0.0.0-20210323151306-ff072d167737/go.mod h1:12c9msibyHdId+Mk/pCbdRb1KaLIhaNyxeJ6n8bZt30= github.com/hashicorp/packer-plugin-amazon v0.0.1 h1:EuyjNK9bL7WhQeIJzhBJxOx8nyc61ai5UbOsb1PIVwI= github.com/hashicorp/packer-plugin-amazon v0.0.1/go.mod h1:12c9msibyHdId+Mk/pCbdRb1KaLIhaNyxeJ6n8bZt30= -github.com/hashicorp/packer-plugin-docker v0.0.2 h1:j/hQTogaN2pZfZohlZTRu5YvNZg2/qtYYHkxPBxv2Oo= -github.com/hashicorp/packer-plugin-docker v0.0.2/go.mod h1:A2p9qztS4n88KsNF+qBM7BWw2HndW636GpFIjNSvbKM= +github.com/hashicorp/packer-plugin-docker v0.0.7 h1:hMTrH7vrkFIjphtbbtpuzffTzSjMNgxayo2DPLz9y+c= +github.com/hashicorp/packer-plugin-docker v0.0.7/go.mod h1:IpeKlwOSy2kdgQcysqd3gCsoqjME9jtmpFoKxn7RRNI= github.com/hashicorp/packer-plugin-sdk v0.0.6/go.mod h1:Nvh28f+Jmpp2rcaN79bULTouNkGNDRfHckhHKTAXtyU= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210111224258-fd30ebb797f0/go.mod h1:YdWTt5w6cYfaQG7IOi5iorL+3SXnz8hI0gJCi8Db/LI= github.com/hashicorp/packer-plugin-sdk v0.0.7-0.20210120105339-f6fd68d2570a/go.mod h1:exN0C+Pe+3zu18l4nxueNjX5cfmslxUX/m/xk4IVmZQ= @@ -542,7 +538,6 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/gox v1.0.1 h1:x0jD3dcHk9a9xPSDN6YEL4xL6Qz0dvNYm8yZqui5chI= github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= @@ -571,8 +566,6 @@ github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b/go.mod h1:v github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/oracle/oci-go-sdk v18.0.0+incompatible h1:FLV4KixsVfF3rwyVTMI6Ryp/Q+OSb9sR5TawbfjFLN4= github.com/oracle/oci-go-sdk v18.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/oracle/oci-go-sdk v24.3.0+incompatible h1:x4mcfb4agelf1O4/1/auGlZ1lr97jXRSSN5MxTgG/zU= -github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/oracle/oci-go-sdk/v36 v36.2.0 h1:oBaN/FnBDy3ohMyVZ/rKfekYxnyksG2KK0YAhT5HSnk= github.com/oracle/oci-go-sdk/v36 v36.2.0/go.mod h1:t8Y/M3Lh8X4BOJhtThJKe1skRTg7qom7oWyHiNjo4RM= github.com/outscale/osc-sdk-go/osc v0.0.0-20200722135656-d654809d0699 h1:SHe9i7h5cHe+cB77fQ6lsEgIwKg3ckNU90P03CjGMnI= diff --git a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go index 14f1d5683..23115227b 100644 --- a/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go +++ b/vendor/github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag/post-processor.go @@ -21,7 +21,7 @@ type Config struct { common.PackerConfig `mapstructure:",squash"` Repository string `mapstructure:"repository"` - // Kept for backwards compatability + // Kept for backwards compatibility Tag []string `mapstructure:"tag"` Tags []string `mapstructure:"tags"` Force bool diff --git a/vendor/modules.txt b/vendor/modules.txt index da197baca..98bd4952e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -433,7 +433,7 @@ github.com/hashicorp/packer-plugin-amazon/builder/instance github.com/hashicorp/packer-plugin-amazon/datasource/ami github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager github.com/hashicorp/packer-plugin-amazon/post-processor/import -# github.com/hashicorp/packer-plugin-docker v0.0.2 +# github.com/hashicorp/packer-plugin-docker v0.0.7 ## explicit github.com/hashicorp/packer-plugin-docker/builder/docker github.com/hashicorp/packer-plugin-docker/post-processor/docker-import @@ -583,8 +583,6 @@ github.com/mitchellh/go-testing-interface github.com/mitchellh/go-vnc # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap -# github.com/mitchellh/gox v1.0.1 -## explicit # github.com/mitchellh/iochan v1.0.0 github.com/mitchellh/iochan # github.com/mitchellh/mapstructure v1.4.0 @@ -608,8 +606,6 @@ github.com/nu7hatch/gouuid # github.com/olekukonko/tablewriter v0.0.0-20180105111133-96aac992fc8b ## explicit github.com/olekukonko/tablewriter -# github.com/oracle/oci-go-sdk v18.0.0+incompatible -## explicit # github.com/oracle/oci-go-sdk/v36 v36.2.0 ## explicit github.com/oracle/oci-go-sdk/v36/common From 4b6891d6d5d8d2f052bbf8dc92f7c1aa576b514e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 Mar 2021 17:37:13 -0400 Subject: [PATCH 189/212] Update CHANGELOG --- CHANGELOG.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e15b18ad6..48a04b83e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,23 +8,23 @@ then, but for the latest offerings of the Amazon plugin, users are encourage to use the `packer init` command to install the latest release version. For more details see [Installing Packer - Plugins](https://www.packer.io/docs/plugins#installing- plugins) + Plugins](https://www.packer.io/docs/plugins#installing-plugins) * builder/docker: Has been vendored in this release and will no longer be updated with Packer core. In Packer v1.8.0 the plugin will be removed entirely. The `docker` builder will continue to work as expected until then, but for the latest offerings of the Docker plugin, users are encourage to use the `packer init` command to install the latest release version. For more details see [Installing Packer - Plugins](https://www.packer.io/docs/plugins#installing- plugins) + Plugins](https://www.packer.io/docs/plugins#installing-plugins) * darwin/arm64: Packer now includes the darwin/arm64 binary to its releases to - supports the new OSX M1. + supports the new OSX M1. [GH-10804] * post-processor/docker-\*: Have been vendored in this release and will no longer be updated with Packer core. In Packer v1.8.0 the plugin will be removed entirely. The `docker` builder will continue to work as expected until then, but for the latest offerings of the Docker plugin, users are encourage to use the `packer init` command to install the latest release version. For more details see [Installing Packer - Plugins](https://www.packer.io/docs/plugins#installing- plugins) + Plugins](https://www.packer.io/docs/plugins#installing-plugins) * post-processor/exoscale-import: Has been vendored in this release and will no longer be updated with Packer core. In Packer v1.8.0 the plugin will be removed entirely. The `exoscale-import` post-processor will continue to @@ -34,14 +34,15 @@ Repostiroy](https://github.com/exoscale/packer-plugin-exoscale). [GH-10709] ### IMPROVEMENTS -* builder/amazon: allow creation of ebs snapshots wihtout volumes. [GH-9591] +* builder/amazon: allow creation of ebs snapshots without volumes. [GH-9591] * builder/amazon: Fix issue for multi-region AMI build that fail when encrypting with KMS and sharing across accounts. [GH-10754] * builder/azure: Add client_cert_token_timeout option. [GH-10528] * builder/google: Make Windows password timeout configurable. [GH-10727] -* builder/google: Make Windows password timeout configurable. [GH-10727] * builder/google: Update public GCP image project as gce-uefi-images are deprecated. [GH-10724] +* builder/oracle-oci: Update Oracle Go SDK to add support for OCI flexible + shapes. [GH-10833] * builder/proxmox: Allow using API tokens for Proxmox authentication. [GH-10797] * builder/qemu: Added firmware option. [GH-10683] @@ -60,6 +61,8 @@ * command/fmt: Adding recursive flag to formatter to format subdirectories. [GH-10457] * core/hcl2: Add legacy_isotime function. [GH-10780] +* core/hcl2: Add support for generating `dynamic` blocks within a `build` + block. [GH-10825] * core/hcl2: Add templatefile function. [GH-10776] * core/hcl2_upgrade: hcl2_upgrade command can now upgrade json var-files. [GH-10676] @@ -100,6 +103,8 @@ func. [GH-10748] * builder/vmware: Added a fallback file check when trying to determine the network-mapping configuration. [GH-10543] +* builder/vsphere: Fix invalid device configuration issue when creating a + vm with multiple disk on the same controller. [GH-10844] * builder/vsphere: Fix issue where boot command would fail the build do to a key typing error. This change will now retry to type the key on error before giving up. [GH-10541] From f541cd59edfb647c2c66cee79846a4a527cbc6f3 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 31 Mar 2021 10:36:41 -0400 Subject: [PATCH 190/212] Update packer-plugin-sdk to latest release ``` go get github.com/hashicorp/packer-plugin-sdk@v0.1.1 go mod tidy go mod vendor ``` --- go.mod | 2 +- go.sum | 4 ++-- .../hashicorp/packer-plugin-sdk/bootcommand/usb_driver.go | 4 ++-- .../github.com/hashicorp/packer-plugin-sdk/version/version.go | 2 +- vendor/modules.txt | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 3b46e52ea..6fb81f885 100644 --- a/go.mod +++ b/go.mod @@ -51,7 +51,7 @@ require ( github.com/hashicorp/hcl/v2 v2.9.1 github.com/hashicorp/packer-plugin-amazon v0.0.1 github.com/hashicorp/packer-plugin-docker v0.0.7 - github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 + github.com/hashicorp/packer-plugin-sdk v0.1.1 github.com/hashicorp/vault/api v1.0.4 github.com/hetznercloud/hcloud-go v1.15.1 github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 diff --git a/go.sum b/go.sum index 40c59e73a..94759493e 100644 --- a/go.sum +++ b/go.sum @@ -414,8 +414,8 @@ github.com/hashicorp/packer-plugin-sdk v0.0.11/go.mod h1:GNb0WNs7zibb8vzUZce1As6 github.com/hashicorp/packer-plugin-sdk v0.0.12/go.mod h1:hs82OYeufirGG6KRENMpjBWomnIlte99X6wXAPThJ5I= github.com/hashicorp/packer-plugin-sdk v0.0.14/go.mod h1:tNb3XzJPnjMl3QuUdKmF47B5ImerdTakalHzUAvW0aw= github.com/hashicorp/packer-plugin-sdk v0.1.0/go.mod h1:CFsC20uZjtER/EnTn/CSMKD0kEdkqOVev8mtOmfnZiI= -github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 h1:nw4RqF7C4jUWGo5PGDG4dSclU+G/vXyVBHIu5j7akd4= -github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0/go.mod h1:1d3nqB9LUsXMQaNUiL67Q+WYEtjsVcLNTX8ikVlpBrc= +github.com/hashicorp/packer-plugin-sdk v0.1.1 h1:foqSy6m+2MsEf9ygNoBlIoi3SPvlkInS+yT0Uyj3yvw= +github.com/hashicorp/packer-plugin-sdk v0.1.1/go.mod h1:1d3nqB9LUsXMQaNUiL67Q+WYEtjsVcLNTX8ikVlpBrc= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.2 h1:yJoyfZXo4Pk2p/M/viW+YLibBFiIbKoP79gu7kDAFP0= github.com/hashicorp/serf v0.9.2/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/bootcommand/usb_driver.go b/vendor/github.com/hashicorp/packer-plugin-sdk/bootcommand/usb_driver.go index c79c5a312..b81c47c90 100644 --- a/vendor/github.com/hashicorp/packer-plugin-sdk/bootcommand/usb_driver.go +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/bootcommand/usb_driver.go @@ -55,8 +55,8 @@ func NewUSBDriver(send SendUsbScanCodes, interval time.Duration) *usbDriver { "insert": key.CodeInsert, "home": key.CodeHome, "end": key.CodeEnd, - "pageUp": key.CodePageUp, - "pageDown": key.CodePageDown, + "pageup": key.CodePageUp, + "pagedown": key.CodePageDown, "left": key.CodeLeftArrow, "right": key.CodeRightArrow, "up": key.CodeUpArrow, diff --git a/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go b/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go index 3fdf751cd..5c8ee2b2d 100644 --- a/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go +++ b/vendor/github.com/hashicorp/packer-plugin-sdk/version/version.go @@ -18,7 +18,7 @@ var Version = "0.1.1" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. -var VersionPrerelease = "dev" +var VersionPrerelease = "" // SDKVersion is used by the plugin set to allow Packer to recognize // what version of the sdk the plugin is. diff --git a/vendor/modules.txt b/vendor/modules.txt index 98bd4952e..16678557a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -440,7 +440,7 @@ github.com/hashicorp/packer-plugin-docker/post-processor/docker-import github.com/hashicorp/packer-plugin-docker/post-processor/docker-push github.com/hashicorp/packer-plugin-docker/post-processor/docker-save github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag -# github.com/hashicorp/packer-plugin-sdk v0.1.1-0.20210323111710-5a7ab7f7a1c0 +# github.com/hashicorp/packer-plugin-sdk v0.1.1 ## explicit github.com/hashicorp/packer-plugin-sdk/acctest github.com/hashicorp/packer-plugin-sdk/acctest/provisioneracc From 076596cd3b2f7a766f367e9142d37b4dd271f99e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 31 Mar 2021 11:53:41 -0400 Subject: [PATCH 191/212] Makefile: Update install steps for gox --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d143e8ed4..03e2eaefd 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ package: @sh -c "$(CURDIR)/scripts/dist.sh $(VERSION)" install-build-deps: ## Install dependencies for bin build - @go get github.com/mitchellh/gox + @go install github.com/mitchellh/gox@v1.0.1 install-gen-deps: ## Install dependencies for code generation # to avoid having to tidy our go deps, we `go get` our binaries from a temp From 8c2f26718e8d4c69f5340fe3354f9faaeb815d9c Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Wed, 31 Mar 2021 16:43:45 +0000 Subject: [PATCH 192/212] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48a04b83e..0fdaf0889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 1.7.1 (Upcoming) +## 1.7.1 (March 31, 2021) ### NOTES: From 3a437d4891c1f0fc5600e77147d9f962dcbfa8d2 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Wed, 31 Mar 2021 16:43:45 +0000 Subject: [PATCH 193/212] cut version 1.7.1 --- version/version.go | 2 +- website/data/version.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version/version.go b/version/version.go index cd7d64f02..b114cabcb 100644 --- a/version/version.go +++ b/version/version.go @@ -14,7 +14,7 @@ const Version = "1.7.1" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. -const VersionPrerelease = "dev" +const VersionPrerelease = "" var PackerVersion *pluginVersion.PluginVersion diff --git a/website/data/version.js b/website/data/version.js index c801573ba..4bee47f10 100644 --- a/website/data/version.js +++ b/website/data/version.js @@ -1 +1 @@ -export default '1.7.0' +export default '1.7.1' From 030da4b6b9a0efd62447dbd2ae177dbe3f0ffcc5 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Wed, 31 Mar 2021 16:43:47 +0000 Subject: [PATCH 194/212] Cut version 1.7.1 From 3e497e3712d7e7ab78f0a37c177f979449c4f932 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Wed, 31 Mar 2021 17:32:59 +0000 Subject: [PATCH 195/212] Putting source back into Dev Mode --- CHANGELOG.md | 2 ++ version/version.go | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fdaf0889..5c1ee6b26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 1.7.2 (Upcoming) + ## 1.7.1 (March 31, 2021) ### NOTES: diff --git a/version/version.go b/version/version.go index b114cabcb..2d4c3987f 100644 --- a/version/version.go +++ b/version/version.go @@ -9,12 +9,12 @@ import ( var GitCommit string // The main version number that is being run at the moment. -const Version = "1.7.1" +const Version = "1.7.2" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. -const VersionPrerelease = "" +const VersionPrerelease = "dev" var PackerVersion *pluginVersion.PluginVersion From 1b8e71ca1f8518e1181145cffdd97ad75c09d0e3 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Wed, 31 Mar 2021 11:44:40 -0700 Subject: [PATCH 196/212] switch to using ui once it is initialized --- main.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index aa0b51d2e..df3e830f2 100644 --- a/main.go +++ b/main.go @@ -187,7 +187,7 @@ func wrappedMain() int { // Set this so that we don't get colored output in our machine- // readable UI. if err := os.Setenv("PACKER_NO_COLOR", "1"); err != nil { - fmt.Fprintf(os.Stdout, "%s Packer failed to initialize UI: %s\n", ErrorPrefix, err) + ui.Error(fmt.Sprintf("Packer failed to initialize UI: %s\n", err)) return 1 } } else { @@ -202,13 +202,12 @@ func wrappedMain() int { currentPID := os.Getpid() backgrounded, err := checkProcess(currentPID) if err != nil { - fmt.Fprintf(os.Stdout, "%s cannot determine if process is in "+ - "background: %s\n", ErrorPrefix, err) + ui.Error(fmt.Sprintf("cannot determine if process is in background: %s\n", err)) } if backgrounded { - fmt.Fprintf(os.Stdout, "%s Running in background, not using a TTY\n", ErrorPrefix) + ui.Error("Running in background, not using a TTY\n") } else if TTY, err := openTTY(); err != nil { - fmt.Fprintf(os.Stdout, "%s No tty available: %s\n", ErrorPrefix, err) + ui.Error(fmt.Sprintf("No tty available: %s\n", err)) } else { basicUi.TTY = TTY basicUi.PB = &packer.UiProgressBar{} @@ -246,7 +245,7 @@ func wrappedMain() int { } if err != nil { - fmt.Fprintf(os.Stdout, "%s Error executing CLI: %s\n", ErrorPrefix, err) + ui.Error(fmt.Sprintf("Error executing CLI: %s\n", err)) return 1 } From 830140157d4cfe9519f3eb4fef50460379eb5581 Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Wed, 31 Mar 2021 15:07:00 -0400 Subject: [PATCH 197/212] website: remove obselete nav data (#10811) * website: remove obselete sidebar_title frontmatter from docs * website: bump to latest docs-page * website: update plugin creation and registration docs * website: fix broken links --- .../components/remote-plugin-docs/server.js | 20 +++- .../content/docs/builders/alicloud-ecs.mdx | 1 - website/content/docs/builders/azure/arm.mdx | 1 - .../content/docs/builders/azure/chroot.mdx | 55 +++++---- website/content/docs/builders/azure/index.mdx | 1 - website/content/docs/builders/cloudstack.mdx | 1 - .../docs/builders/community-supported.mdx | 1 - website/content/docs/builders/custom.mdx | 1 - .../content/docs/builders/digitalocean.mdx | 3 +- website/content/docs/builders/file.mdx | 1 - .../content/docs/builders/googlecompute.mdx | 1 - .../content/docs/builders/hetzner-cloud.mdx | 1 - website/content/docs/builders/hyperone.mdx | 1 - .../content/docs/builders/hyperv/index.mdx | 1 - website/content/docs/builders/hyperv/iso.mdx | 1 - website/content/docs/builders/hyperv/vmcx.mdx | 1 - website/content/docs/builders/index.mdx | 2 - website/content/docs/builders/jdcloud.mdx | 1 - website/content/docs/builders/linode.mdx | 2 +- website/content/docs/builders/lxc.mdx | 1 - website/content/docs/builders/lxd.mdx | 1 - website/content/docs/builders/ncloud.mdx | 1 - website/content/docs/builders/null.mdx | 1 - website/content/docs/builders/oneandone.mdx | 4 +- website/content/docs/builders/openstack.mdx | 10 +- .../content/docs/builders/oracle/classic.mdx | 1 - .../content/docs/builders/oracle/index.mdx | 1 - website/content/docs/builders/oracle/oci.mdx | 14 +-- .../content/docs/builders/outscale/bsu.mdx | 1 - .../docs/builders/outscale/bsusurrogate.mdx | 1 - .../docs/builders/outscale/bsuvolume.mdx | 1 - .../content/docs/builders/outscale/chroot.mdx | 1 - .../content/docs/builders/outscale/index.mdx | 1 - .../content/docs/builders/parallels/index.mdx | 1 - .../content/docs/builders/parallels/iso.mdx | 1 - .../content/docs/builders/parallels/pvm.mdx | 1 - .../content/docs/builders/profitbricks.mdx | 3 +- .../content/docs/builders/proxmox/clone.mdx | 1 - .../content/docs/builders/proxmox/index.mdx | 1 - website/content/docs/builders/proxmox/iso.mdx | 3 +- website/content/docs/builders/qemu.mdx | 1 - website/content/docs/builders/scaleway.mdx | 4 +- .../docs/builders/tencentcloud-cvm.mdx | 1 - website/content/docs/builders/triton.mdx | 1 - .../content/docs/builders/ucloud-uhost.mdx | 1 - website/content/docs/builders/vagrant.mdx | 11 +- .../docs/builders/virtualbox/index.mdx | 1 - .../content/docs/builders/virtualbox/iso.mdx | 1 - .../content/docs/builders/virtualbox/ovf.mdx | 1 - .../content/docs/builders/virtualbox/vm.mdx | 1 - .../content/docs/builders/vmware/index.mdx | 1 - website/content/docs/builders/vmware/iso.mdx | 1 - website/content/docs/builders/vmware/vmx.mdx | 1 - .../docs/builders/vmware/vsphere-clone.mdx | 1 - .../docs/builders/vmware/vsphere-iso.mdx | 1 - website/content/docs/builders/yandex.mdx | 1 - website/content/docs/commands/build.mdx | 1 - website/content/docs/commands/console.mdx | 1 - website/content/docs/commands/fix.mdx | 1 - website/content/docs/commands/fmt.mdx | 1 - .../content/docs/commands/hcl2_upgrade.mdx | 18 ++- website/content/docs/commands/index.mdx | 1 - website/content/docs/commands/init.mdx | 3 +- website/content/docs/commands/inspect.mdx | 1 - website/content/docs/commands/validate.mdx | 1 - website/content/docs/communicators/index.mdx | 1 - website/content/docs/communicators/ssh.mdx | 1 - website/content/docs/communicators/winrm.mdx | 1 - website/content/docs/configure.mdx | 24 ++-- website/content/docs/datasources/index.mdx | 1 - website/content/docs/debugging.mdx | 1 - website/content/docs/install.mdx | 1 - .../docs/plugins/creation/custom-builders.mdx | 8 +- .../plugins/creation/custom-datasources.mdx | 2 - .../creation/custom-post-processors.mdx | 1 - .../plugins/creation/custom-provisioners.mdx | 1 - .../content/docs/plugins/creation/index.mdx | 62 +++++----- website/content/docs/plugins/index.mdx | 67 ++++++----- .../docs/post-processors/alicloud-import.mdx | 1 - .../content/docs/post-processors/artifice.mdx | 1 - .../content/docs/post-processors/checksum.mdx | 3 +- .../post-processors/community-supported.mdx | 1 - .../content/docs/post-processors/compress.mdx | 1 - .../post-processors/digitalocean-import.mdx | 1 - .../post-processors/googlecompute-export.mdx | 1 - .../post-processors/googlecompute-import.mdx | 113 +++++++++--------- .../content/docs/post-processors/index.mdx | 1 - .../content/docs/post-processors/manifest.mdx | 1 - .../docs/post-processors/shell-local.mdx | 1 - .../docs/post-processors/ucloud-import.mdx | 1 - .../docs/post-processors/vagrant-cloud.mdx | 1 - .../content/docs/post-processors/vagrant.mdx | 1 - .../docs/post-processors/vsphere-template.mdx | 1 - .../content/docs/post-processors/vsphere.mdx | 1 - .../docs/post-processors/yandex-export.mdx | 1 - .../docs/post-processors/yandex-import.mdx | 1 - .../docs/provisioners/ansible-local.mdx | 1 - website/content/docs/provisioners/ansible.mdx | 1 - .../content/docs/provisioners/breakpoint.mdx | 1 - .../content/docs/provisioners/chef-client.mdx | 1 - .../content/docs/provisioners/chef-solo.mdx | 5 +- .../docs/provisioners/community-supported.mdx | 1 - .../content/docs/provisioners/converge.mdx | 1 - website/content/docs/provisioners/custom.mdx | 1 - website/content/docs/provisioners/file.mdx | 1 - website/content/docs/provisioners/index.mdx | 1 - website/content/docs/provisioners/inspec.mdx | 3 +- .../content/docs/provisioners/powershell.mdx | 1 - .../docs/provisioners/puppet-masterless.mdx | 1 - .../docs/provisioners/puppet-server.mdx | 1 - .../docs/provisioners/salt-masterless.mdx | 1 - .../content/docs/provisioners/shell-local.mdx | 1 - website/content/docs/provisioners/shell.mdx | 1 - .../docs/provisioners/windows-restart.mdx | 1 - .../docs/provisioners/windows-shell.mdx | 1 - .../hcl_templates/blocks/build/index.mdx | 1 - .../blocks/build/post-processor.mdx | 1 - .../blocks/build/post-processors.mdx | 1 - .../blocks/build/provisioner.mdx | 1 - .../hcl_templates/blocks/build/source.mdx | 1 - .../templates/hcl_templates/blocks/data.mdx | 1 - .../templates/hcl_templates/blocks/index.mdx | 30 ++--- .../templates/hcl_templates/blocks/locals.mdx | 1 - .../templates/hcl_templates/blocks/packer.mdx | 1 - .../templates/hcl_templates/blocks/source.mdx | 1 - .../hcl_templates/blocks/variable.mdx | 1 - .../hcl_templates/contextual-variables.mdx | 1 - .../templates/hcl_templates/datasources.mdx | 2 +- .../templates/hcl_templates/expressions.mdx | 1 - .../functions/collection/chunklist.mdx | 1 - .../functions/collection/coalesce.mdx | 1 - .../functions/collection/coalescelist.mdx | 1 - .../functions/collection/compact.mdx | 1 - .../functions/collection/concat.mdx | 1 - .../functions/collection/contains.mdx | 1 - .../functions/collection/distinct.mdx | 1 - .../functions/collection/element.mdx | 1 - .../functions/collection/flatten.mdx | 1 - .../functions/collection/index-fn.mdx | 1 - .../functions/collection/index.mdx | 1 - .../functions/collection/keys.mdx | 1 - .../functions/collection/length.mdx | 1 - .../functions/collection/lookup.mdx | 1 - .../functions/collection/merge.mdx | 1 - .../functions/collection/range.mdx | 1 - .../functions/collection/reverse.mdx | 1 - .../functions/collection/setintersection.mdx | 1 - .../functions/collection/setproduct.mdx | 1 - .../functions/collection/setunion.mdx | 1 - .../functions/collection/slice.mdx | 1 - .../functions/collection/sort.mdx | 1 - .../functions/collection/values.mdx | 1 - .../functions/collection/zipmap.mdx | 1 - .../contextual/aws_secretsmanager.mdx | 1 - .../functions/contextual/consul.mdx | 1 - .../functions/contextual/env.mdx | 1 - .../functions/contextual/index.mdx | 1 - .../functions/contextual/vault.mdx | 1 - .../functions/conversion/can.mdx | 1 - .../functions/conversion/convert.mdx | 1 - .../functions/conversion/index.mdx | 1 - .../functions/conversion/try.mdx | 1 - .../hcl_templates/functions/crypto/bcrypt.mdx | 1 - .../hcl_templates/functions/crypto/index.mdx | 1 - .../hcl_templates/functions/crypto/md5.mdx | 1 - .../functions/crypto/rsadecrypt.mdx | 1 - .../hcl_templates/functions/crypto/sha1.mdx | 1 - .../hcl_templates/functions/crypto/sha256.mdx | 1 - .../hcl_templates/functions/crypto/sha512.mdx | 1 - .../functions/datetime/formatdate.mdx | 1 - .../functions/datetime/index.mdx | 1 - .../functions/datetime/timeadd.mdx | 1 - .../functions/datetime/timestamp.mdx | 1 - .../functions/encoding/base64decode.mdx | 1 - .../functions/encoding/base64encode.mdx | 1 - .../functions/encoding/csvdecode.mdx | 1 - .../functions/encoding/index.mdx | 1 - .../functions/encoding/jsondecode.mdx | 1 - .../functions/encoding/jsonencode.mdx | 1 - .../functions/encoding/urlencode.mdx | 1 - .../functions/encoding/yamldecode.mdx | 1 - .../functions/encoding/yamlencode.mdx | 1 - .../hcl_templates/functions/file/abspath.mdx | 1 - .../hcl_templates/functions/file/basename.mdx | 1 - .../hcl_templates/functions/file/dirname.mdx | 1 - .../hcl_templates/functions/file/file.mdx | 1 - .../functions/file/fileexists.mdx | 1 - .../hcl_templates/functions/file/fileset.mdx | 1 - .../hcl_templates/functions/file/index.mdx | 1 - .../functions/file/pathexpand.mdx | 1 - .../functions/file/templatefile.mdx | 16 ++- .../hcl_templates/functions/index.mdx | 1 - .../functions/ipnet/cidrhost.mdx | 1 - .../functions/ipnet/cidrnetmask.mdx | 1 - .../functions/ipnet/cidrsubnet.mdx | 1 - .../hcl_templates/functions/ipnet/index.mdx | 1 - .../hcl_templates/functions/numeric/abs.mdx | 1 - .../hcl_templates/functions/numeric/ceil.mdx | 1 - .../hcl_templates/functions/numeric/floor.mdx | 1 - .../hcl_templates/functions/numeric/index.mdx | 1 - .../hcl_templates/functions/numeric/log.mdx | 1 - .../hcl_templates/functions/numeric/max.mdx | 1 - .../hcl_templates/functions/numeric/min.mdx | 1 - .../functions/numeric/parseint.mdx | 1 - .../hcl_templates/functions/numeric/pow.mdx | 1 - .../functions/numeric/signum.mdx | 1 - .../hcl_templates/functions/string/chomp.mdx | 1 - .../hcl_templates/functions/string/format.mdx | 1 - .../functions/string/formatlist.mdx | 1 - .../hcl_templates/functions/string/indent.mdx | 1 - .../hcl_templates/functions/string/index.mdx | 1 - .../hcl_templates/functions/string/join.mdx | 1 - .../hcl_templates/functions/string/lower.mdx | 1 - .../hcl_templates/functions/string/regex.mdx | 103 ++++++++-------- .../functions/string/regex_replace.mdx | 1 - .../functions/string/regexall.mdx | 5 +- .../functions/string/replace.mdx | 1 - .../hcl_templates/functions/string/split.mdx | 1 - .../hcl_templates/functions/string/strrev.mdx | 1 - .../hcl_templates/functions/string/substr.mdx | 1 - .../hcl_templates/functions/string/title.mdx | 1 - .../hcl_templates/functions/string/trim.mdx | 1 - .../functions/string/trimprefix.mdx | 1 - .../functions/string/trimspace.mdx | 1 - .../functions/string/trimsuffix.mdx | 1 - .../hcl_templates/functions/string/upper.mdx | 1 - .../hcl_templates/functions/uuid/index.mdx | 1 - .../hcl_templates/functions/uuid/uuidv4.mdx | 1 - .../hcl_templates/functions/uuid/uuidv5.mdx | 1 - .../docs/templates/hcl_templates/index.mdx | 1 - .../docs/templates/hcl_templates/locals.mdx | 1 - .../templates/hcl_templates/onlyexcept.mdx | 1 - .../hcl_templates/path-variables.mdx | 1 - .../templates/hcl_templates/syntax-json.mdx | 15 ++- .../docs/templates/hcl_templates/syntax.mdx | 1 - .../templates/hcl_templates/variables.mdx | 1 - .../legacy_json_templates/builders.mdx | 1 - .../legacy_json_templates/communicator.mdx | 1 - .../legacy_json_templates/engine.mdx | 1 - .../templates/legacy_json_templates/index.mdx | 1 - .../legacy_json_templates/post-processors.mdx | 1 - .../legacy_json_templates/provisioners.mdx | 1 - .../legacy_json_templates/user-variables.mdx | 1 - website/content/docs/terminology.mdx | 1 - website/content/guides/1.7-plugin-upgrade.mdx | 3 - .../content/guides/1.7-template-upgrade.mdx | 49 ++++---- .../autounattend_windows.mdx | 1 - .../index.mdx | 1 - .../preseed_ubuntu.mdx | 1 - .../guides/hcl/component-object-spec.mdx | 1 - website/content/guides/hcl/from-json-v1.mdx | 1 - website/content/guides/hcl/index.mdx | 1 - website/content/guides/hcl/variables.mdx | 1 - .../packer-on-cicd/build-image-in-cicd.mdx | 1 - .../packer-on-cicd/build-virtualbox-image.mdx | 1 - .../content/guides/packer-on-cicd/index.mdx | 1 - .../packer-on-cicd/pipelineing-builds.mdx | 1 - .../guides/packer-on-cicd/trigger-tfe.mdx | 1 - .../upload-images-to-artifact.mdx | 1 - .../guides/workflow-tips-and-tricks/index.mdx | 1 - .../isotime-template-function.mdx | 1 - .../use-packer-with-comment.mdx | 2 - .../veewee-to-packer.mdx | 1 - website/content/intro/use-cases.mdx | 1 - website/content/intro/why.mdx | 1 - website/data/docs-nav-data.json | 8 ++ website/package-lock.json | 30 +---- website/package.json | 2 +- website/pages/docs/[[...page]].jsx | 45 +++---- website/pages/guides/[[...page]].jsx | 26 ++-- website/pages/intro/[[...page]].jsx | 26 ++-- 271 files changed, 388 insertions(+), 646 deletions(-) diff --git a/website/components/remote-plugin-docs/server.js b/website/components/remote-plugin-docs/server.js index 6054b78f1..8f871e3f0 100644 --- a/website/components/remote-plugin-docs/server.js +++ b/website/components/remote-plugin-docs/server.js @@ -7,19 +7,27 @@ import { import renderPageMdx from '@hashicorp/react-docs-page/render-page-mdx' import resolveNavData from './utils/resolve-nav-data' -async function generateStaticPaths(navDataFile, contentDir, options = {}) { - const navData = await resolveNavData(navDataFile, contentDir, options) +async function generateStaticPaths({ + navDataFile, + localContentDir, + remotePluginsFile, +}) { + const navData = await resolveNavData(navDataFile, localContentDir, { + remotePluginsFile, + }) const paths = await getPathsFromNavData(navData) return paths } -async function generateStaticProps( - navDataFile, +async function generateStaticProps({ + additionalComponents, localContentDir, + mainBranch = 'main', + navDataFile, params, product, - { remotePluginsFile, additionalComponents, mainBranch = 'main' } = {} -) { + remotePluginsFile, +}) { const navData = await resolveNavData(navDataFile, localContentDir, { remotePluginsFile, }) diff --git a/website/content/docs/builders/alicloud-ecs.mdx b/website/content/docs/builders/alicloud-ecs.mdx index 79241d2a3..abf6e99a3 100644 --- a/website/content/docs/builders/alicloud-ecs.mdx +++ b/website/content/docs/builders/alicloud-ecs.mdx @@ -3,7 +3,6 @@ description: | The `alicloud-ecs` Packer builder plugin provide the capability to build customized images based on an existing base images. page_title: Alicloud Image Builder -sidebar_title: Alicloud ECS --- # Alicloud Image Builder diff --git a/website/content/docs/builders/azure/arm.mdx b/website/content/docs/builders/azure/arm.mdx index 8dd43c386..3a07325a0 100644 --- a/website/content/docs/builders/azure/arm.mdx +++ b/website/content/docs/builders/azure/arm.mdx @@ -1,7 +1,6 @@ --- description: Packer supports building VHDs in Azure Resource manager. page_title: Azure arm - Builders -sidebar_title: ARM --- # Azure Resource Manager Builder diff --git a/website/content/docs/builders/azure/chroot.mdx b/website/content/docs/builders/azure/chroot.mdx index d9d9feaf5..bd5caca17 100644 --- a/website/content/docs/builders/azure/chroot.mdx +++ b/website/content/docs/builders/azure/chroot.mdx @@ -5,7 +5,6 @@ description: > a VM in Azure. page_title: Azure chroot - Builders -sidebar_title: chroot --- # Azure Builder (chroot) @@ -261,36 +260,36 @@ build { - ```json - { - "variables": { - "client_id": "{{env `ARM_CLIENT_ID`}}", - "client_secret": "{{env `ARM_CLIENT_SECRET`}}", - "subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}", - "resource_group": "{{env `ARM_IMAGE_RESOURCEGROUP_ID`}}" - }, - "builders": [ - { - "type": "azure-chroot", +```json +{ + "variables": { + "client_id": "{{env `ARM_CLIENT_ID`}}", + "client_secret": "{{env `ARM_CLIENT_SECRET`}}", + "subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}", + "resource_group": "{{env `ARM_IMAGE_RESOURCEGROUP_ID`}}" + }, + "builders": [ + { + "type": "azure-chroot", - "client_id": "{{user `client_id`}}", - "client_secret": "{{user `client_secret`}}", - "subscription_id": "{{user `subscription_id`}}", + "client_id": "{{user `client_id`}}", + "client_secret": "{{user `client_secret`}}", + "subscription_id": "{{user `subscription_id`}}", - "image_resource_id": "/subscriptions/{{user `subscription_id`}}/resourceGroups/{{user `resource_group`}}/providers/Microsoft.Compute/images/MyDebianOSImage-{{timestamp}}", + "image_resource_id": "/subscriptions/{{user `subscription_id`}}/resourceGroups/{{user `resource_group`}}/providers/Microsoft.Compute/images/MyDebianOSImage-{{timestamp}}", - "source": "credativ:Debian:9:latest" - } - ], - "provisioners": [ - { - "inline": ["apt-get update", "apt-get upgrade -y"], - "inline_shebang": "/bin/sh -x", - "type": "shell" - } - ] - } - ``` + "source": "credativ:Debian:9:latest" + } + ], + "provisioners": [ + { + "inline": ["apt-get update", "apt-get upgrade -y"], + "inline_shebang": "/bin/sh -x", + "type": "shell" + } + ] +} +``` diff --git a/website/content/docs/builders/azure/index.mdx b/website/content/docs/builders/azure/index.mdx index a961910e2..babe40edb 100644 --- a/website/content/docs/builders/azure/index.mdx +++ b/website/content/docs/builders/azure/index.mdx @@ -5,7 +5,6 @@ description: > multiple builders depending on the strategy you want to use to build the images. page_title: Azure images - Builders -sidebar_title: Azure --- # Azure Virtual Machine Image Builders diff --git a/website/content/docs/builders/cloudstack.mdx b/website/content/docs/builders/cloudstack.mdx index 55e0c74c9..cd7138d00 100644 --- a/website/content/docs/builders/cloudstack.mdx +++ b/website/content/docs/builders/cloudstack.mdx @@ -5,7 +5,6 @@ description: | source, runs any provisioning necessary on the instance after launching it and then creates a new template from that instance. page_title: CloudStack - Builders -sidebar_title: CloudStack --- # CloudStack Builder diff --git a/website/content/docs/builders/community-supported.mdx b/website/content/docs/builders/community-supported.mdx index a2d64c0a8..e01177b87 100644 --- a/website/content/docs/builders/community-supported.mdx +++ b/website/content/docs/builders/community-supported.mdx @@ -3,7 +3,6 @@ description: | Community-maintained builders are not part of the core Packer binary, but can run alongside Packer with minimal extra effort. page_title: Community - Builders -sidebar_title: Community-Supported --- # Community Builders diff --git a/website/content/docs/builders/custom.mdx b/website/content/docs/builders/custom.mdx index b69550783..6e8d241b2 100644 --- a/website/content/docs/builders/custom.mdx +++ b/website/content/docs/builders/custom.mdx @@ -4,7 +4,6 @@ description: | modify the core source code of Packer itself. Documentation for creating new builders is covered in the custom builders page of the Packer plugin section. page_title: Custom - Builders -sidebar_title: Custom --- # Custom Builder diff --git a/website/content/docs/builders/digitalocean.mdx b/website/content/docs/builders/digitalocean.mdx index 9369cbf6a..ae63f285b 100644 --- a/website/content/docs/builders/digitalocean.mdx +++ b/website/content/docs/builders/digitalocean.mdx @@ -11,7 +11,6 @@ description: > launched within DigitalOcean. page_title: DigitalOcean - Builders -sidebar_title: DigitalOcean --- # DigitalOcean Builder @@ -67,4 +66,4 @@ In addition to the builder options, a @include 'packer-plugin-sdk/communicator/SSH-not-required.mdx' -@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' \ No newline at end of file +@include 'packer-plugin-sdk/communicator/SSH-Private-Key-File-not-required.mdx' diff --git a/website/content/docs/builders/file.mdx b/website/content/docs/builders/file.mdx index 29edf41d3..766db0a7b 100644 --- a/website/content/docs/builders/file.mdx +++ b/website/content/docs/builders/file.mdx @@ -4,7 +4,6 @@ description: | from a file. It can be used to debug post-processors without incurring high wait times. page_title: File - Builders -sidebar_title: File --- # File Builder diff --git a/website/content/docs/builders/googlecompute.mdx b/website/content/docs/builders/googlecompute.mdx index 2db9489c8..e5bb801b6 100644 --- a/website/content/docs/builders/googlecompute.mdx +++ b/website/content/docs/builders/googlecompute.mdx @@ -3,7 +3,6 @@ description: | The googlecompute Packer builder is able to create images for use with Google Cloud Compute Engine (GCE) based on existing images. page_title: Google Compute - Builders -sidebar_title: Google Cloud --- # Google Compute Builder diff --git a/website/content/docs/builders/hetzner-cloud.mdx b/website/content/docs/builders/hetzner-cloud.mdx index a7cecd54c..ebb5e5b06 100644 --- a/website/content/docs/builders/hetzner-cloud.mdx +++ b/website/content/docs/builders/hetzner-cloud.mdx @@ -6,7 +6,6 @@ description: | image. This reusable image can then be used as the foundation of new servers that are launched within the Hetzner Cloud. page_title: Hetzner Cloud - Builders -sidebar_title: Hetzner Cloud --- # Hetzner Cloud Builder diff --git a/website/content/docs/builders/hyperone.mdx b/website/content/docs/builders/hyperone.mdx index 9f2e98270..62fe85cd0 100644 --- a/website/content/docs/builders/hyperone.mdx +++ b/website/content/docs/builders/hyperone.mdx @@ -4,7 +4,6 @@ description: | The builder takes a source image, runs any provisioning necessary on the image after launching it, then creates a reusable image. page_title: HyperOne - Builders -sidebar_title: HyperOne --- # HyperOne Builder diff --git a/website/content/docs/builders/hyperv/index.mdx b/website/content/docs/builders/hyperv/index.mdx index ea9817d71..9d5169d46 100644 --- a/website/content/docs/builders/hyperv/index.mdx +++ b/website/content/docs/builders/hyperv/index.mdx @@ -3,7 +3,6 @@ description: | The Hyper-V Packer builder is able to create Hyper-V virtual machines and export them. page_title: Hyper-V - Builders -sidebar_title: Hyper-V --- # HyperV Builder diff --git a/website/content/docs/builders/hyperv/iso.mdx b/website/content/docs/builders/hyperv/iso.mdx index b03c69bb0..036b40eba 100644 --- a/website/content/docs/builders/hyperv/iso.mdx +++ b/website/content/docs/builders/hyperv/iso.mdx @@ -5,7 +5,6 @@ description: | The Hyper-V Packer builder is able to create Hyper-V virtual machines and export them. page_title: Hyper-V ISO - Builders -sidebar_title: ISO --- # Hyper-V Builder (from an ISO) diff --git a/website/content/docs/builders/hyperv/vmcx.mdx b/website/content/docs/builders/hyperv/vmcx.mdx index 6627d524b..617201cc2 100644 --- a/website/content/docs/builders/hyperv/vmcx.mdx +++ b/website/content/docs/builders/hyperv/vmcx.mdx @@ -5,7 +5,6 @@ description: >- The Hyper-V Packer builder is able to clone an existing Hyper-V virtual machine and export them. page_title: Hyper-V Builder (from a vmcx) -sidebar_title: VMCX --- # Hyper-V Builder (from a vmcx) diff --git a/website/content/docs/builders/index.mdx b/website/content/docs/builders/index.mdx index b4af8bf51..322a6005f 100644 --- a/website/content/docs/builders/index.mdx +++ b/website/content/docs/builders/index.mdx @@ -3,7 +3,6 @@ description: | Builders are responsible for creating machines and generating images from them for various platforms. page_title: Builders -sidebar_title: Builders --- # Builders @@ -17,4 +16,3 @@ See the [`source`](/docs/templates/hcl_templates/blocks/source) block documentat about configuring builders in the Packer language. For information on an individual builder, choose it from the sidebar. Each builder has its own configuration options and parameters. - diff --git a/website/content/docs/builders/jdcloud.mdx b/website/content/docs/builders/jdcloud.mdx index ae325e000..7a9eb5bb1 100644 --- a/website/content/docs/builders/jdcloud.mdx +++ b/website/content/docs/builders/jdcloud.mdx @@ -3,7 +3,6 @@ description: | The `jdcloud` Packer builder helps you to build instance images based on an existing image page_title: JDCloud Image Builder -sidebar_title: JDCloud --- # JDCloud Image Builder diff --git a/website/content/docs/builders/linode.mdx b/website/content/docs/builders/linode.mdx index 87e982a2f..861b44443 100644 --- a/website/content/docs/builders/linode.mdx +++ b/website/content/docs/builders/linode.mdx @@ -11,7 +11,6 @@ description: > within all Linode regions. page_title: Linode - Builders -sidebar_title: Linode --- # Linode Builder @@ -48,6 +47,7 @@ can also be supplied to override the typical auto-generated key: See https://github.com/tcort/markdown-link-check/issues/109 --> + ### Required - `linode_token` (string) - The client TOKEN to use to access your account. diff --git a/website/content/docs/builders/lxc.mdx b/website/content/docs/builders/lxc.mdx index 0aa6899a8..aa8894dda 100644 --- a/website/content/docs/builders/lxc.mdx +++ b/website/content/docs/builders/lxc.mdx @@ -4,7 +4,6 @@ description: | container, runs provisioners within this container, then exports the container as a tar.gz of the root file system. page_title: LXC - Builders -sidebar_title: LXC --- # LXC Builder diff --git a/website/content/docs/builders/lxd.mdx b/website/content/docs/builders/lxd.mdx index 4ce524040..9552a094d 100644 --- a/website/content/docs/builders/lxd.mdx +++ b/website/content/docs/builders/lxd.mdx @@ -7,7 +7,6 @@ description: > an LXD image. page_title: LXD - Builders -sidebar_title: LXD --- # LXD Builder diff --git a/website/content/docs/builders/ncloud.mdx b/website/content/docs/builders/ncloud.mdx index 874be0125..f4b775261 100644 --- a/website/content/docs/builders/ncloud.mdx +++ b/website/content/docs/builders/ncloud.mdx @@ -3,7 +3,6 @@ description: | The ncloud builder allows you to create server images using the NAVER Cloud Platform. page_title: Naver Cloud Platform - Builders -sidebar_title: NAVER Cloud --- # NAVER CLOUD PLATFORM Builder diff --git a/website/content/docs/builders/null.mdx b/website/content/docs/builders/null.mdx index 8941c8a21..0330a770a 100644 --- a/website/content/docs/builders/null.mdx +++ b/website/content/docs/builders/null.mdx @@ -5,7 +5,6 @@ description: | without incurring high wait times. It does not create any kind of image or artifact. page_title: Null - Builders -sidebar_title: 'Null' --- # Null Builder diff --git a/website/content/docs/builders/oneandone.mdx b/website/content/docs/builders/oneandone.mdx index 99ed0239e..7a6642b42 100644 --- a/website/content/docs/builders/oneandone.mdx +++ b/website/content/docs/builders/oneandone.mdx @@ -1,7 +1,6 @@ --- description: The 1&1 builder is able to create images for 1&1 cloud. page_title: 1&1 - Builders -sidebar_title: 1&1 --- # 1&1 Builder @@ -47,8 +46,9 @@ can also be supplied to override the typical auto-generated key: while waiting for the build to complete. Default value "600". + - `url` (string) - Endpoint for the 1&1 REST API. Default URL - "" +"" ## Example diff --git a/website/content/docs/builders/openstack.mdx b/website/content/docs/builders/openstack.mdx index dded26a5f..da60b0c8e 100644 --- a/website/content/docs/builders/openstack.mdx +++ b/website/content/docs/builders/openstack.mdx @@ -11,7 +11,6 @@ description: > within OpenStack. page_title: OpenStack - Builders -sidebar_title: OpenStack --- # OpenStack Builder @@ -132,6 +131,7 @@ builders "openstack" { insecure = "true" } ``` + @@ -155,6 +155,7 @@ Here is a basic example. This is a working example to build a Ubuntu 12.04 LTS "flavor": "2" } ``` + @@ -170,6 +171,7 @@ builders "openstack" { flavor = "2" } ``` + @@ -190,6 +192,7 @@ by Metacloud. "flavor": "2" } ``` + @@ -202,10 +205,10 @@ builders "openstack" { flavor = "2" } ``` + - In this case, the connection information for connecting to OpenStack doesn't appear in the template. That is because I source a standard OpenStack script with environment variables set before I run this. This script is setting @@ -266,6 +269,7 @@ by Selectel VPC. "volume_type": "fast.ru-3a" } ``` + @@ -287,10 +291,10 @@ builders "openstack" { volume_type = "fast.ru-3a" } ``` + - ## Notes on OpenStack Authorization The simplest way to get all settings for authorization against OpenStack is to diff --git a/website/content/docs/builders/oracle/classic.mdx b/website/content/docs/builders/oracle/classic.mdx index b0cc7dc6a..0fe26eddd 100644 --- a/website/content/docs/builders/oracle/classic.mdx +++ b/website/content/docs/builders/oracle/classic.mdx @@ -3,7 +3,6 @@ description: | The oracle-classic builder is able to create new custom images for use with Oracle Cloud Infrastructure Classic Compute. page_title: Oracle Cloud Infrastructure Classic - Builders -sidebar_title: Oracle Classic --- # Oracle Cloud Infrastructure Classic Compute Builder diff --git a/website/content/docs/builders/oracle/index.mdx b/website/content/docs/builders/oracle/index.mdx index 109f1cc85..b598fb462 100644 --- a/website/content/docs/builders/oracle/index.mdx +++ b/website/content/docs/builders/oracle/index.mdx @@ -1,7 +1,6 @@ --- description: Packer is able to create custom images using Oracle Cloud Infrastructure. page_title: Oracle - Builders -sidebar_title: Oracle --- # Oracle Builder diff --git a/website/content/docs/builders/oracle/oci.mdx b/website/content/docs/builders/oracle/oci.mdx index e63d8fa0b..acca95055 100644 --- a/website/content/docs/builders/oracle/oci.mdx +++ b/website/content/docs/builders/oracle/oci.mdx @@ -3,7 +3,6 @@ description: | The oracle-oci builder is able to create new custom images for use with Oracle Cloud Infrastructure (OCI). page_title: Oracle OCI - Builders -sidebar_title: Oracle OCI --- # Oracle Cloud Infrastructure (OCI) Builder @@ -189,18 +188,19 @@ can also be supplied to override the typical auto-generated key: - `use_private_ip` (boolean) - Use private ip addresses to connect to the instance via ssh. -- `shape_config` (object) - The shape configuration for an instance. The shape configuration determines the resources +- `shape_config` (object) - The shape configuration for an instance. The shape configuration determines the resources allocated to an instance. Options: - `ocpus` (required when using flexible shapes or memory_in_gbs is set) (float32) - The total number of OCPUs available to the instance. - `memory_in_gbs` (optional) (float32) - The total amount of memory, in gigabytes, available to the instance. + - `metadata` (map of strings) - Metadata optionally contains custom metadata - key/value pairs provided in the configuration. While this can be used to - set metadata\["user_data"\] the explicit "user_data" and - "user_data_file" values will have precedence. An instance's metadata can - be obtained from at [http://169.254.169.254](http://169.254.169.254) on - the launched instance. +key/value pairs provided in the configuration. While this can be used to +set metadata\["user_data"\] the explicit "user_data" and +"user_data_file" values will have precedence. An instance's metadata can +be obtained from at [http://169.254.169.254](http://169.254.169.254) on +the launched instance. - `user_data` (string) - User data to be used by cloud-init. See [the Oracle diff --git a/website/content/docs/builders/outscale/bsu.mdx b/website/content/docs/builders/outscale/bsu.mdx index c8af99798..95dffc642 100644 --- a/website/content/docs/builders/outscale/bsu.mdx +++ b/website/content/docs/builders/outscale/bsu.mdx @@ -7,7 +7,6 @@ description: > the root device section in the Outscale documentation. page_title: Outscale BSU - Builders -sidebar_title: BSU --- # OMI Builder (BSU backed) diff --git a/website/content/docs/builders/outscale/bsusurrogate.mdx b/website/content/docs/builders/outscale/bsusurrogate.mdx index fde46d29d..2a7095b00 100644 --- a/website/content/docs/builders/outscale/bsusurrogate.mdx +++ b/website/content/docs/builders/outscale/bsusurrogate.mdx @@ -3,7 +3,6 @@ description: | The osc-bsusurrogate Packer builder is like the chroot builder, but does not require running inside an Outscale virtual machine. page_title: Outscale BSU Surrogate - Builders -sidebar_title: BSU Surrogate --- # BSU Surrogate Builder diff --git a/website/content/docs/builders/outscale/bsuvolume.mdx b/website/content/docs/builders/outscale/bsuvolume.mdx index 87639e5af..7863de278 100644 --- a/website/content/docs/builders/outscale/bsuvolume.mdx +++ b/website/content/docs/builders/outscale/bsuvolume.mdx @@ -3,7 +3,6 @@ description: | The osc-bsuvolume Packer builder is like the BSU builder, but is intended to create BSU volumes rather than a machine image. page_title: Outscale BSU Volume - Builders -sidebar_title: BSU Volume --- # BSU Volume Builder diff --git a/website/content/docs/builders/outscale/chroot.mdx b/website/content/docs/builders/outscale/chroot.mdx index 6324328f6..683055b2d 100644 --- a/website/content/docs/builders/outscale/chroot.mdx +++ b/website/content/docs/builders/outscale/chroot.mdx @@ -9,7 +9,6 @@ description: > in the Outscale documentation. page_title: Outscale chroot - Builders -sidebar_title: chroot --- # OMI Builder (chroot) diff --git a/website/content/docs/builders/outscale/index.mdx b/website/content/docs/builders/outscale/index.mdx index 9b7d7bcae..2a1ff5a3d 100644 --- a/website/content/docs/builders/outscale/index.mdx +++ b/website/content/docs/builders/outscale/index.mdx @@ -5,7 +5,6 @@ description: > multiple builders depending on the strategy you want to use to build the OMI. page_title: Outscale OMI - Builders -sidebar_title: Outscale --- # Outscale OMI Builder diff --git a/website/content/docs/builders/parallels/index.mdx b/website/content/docs/builders/parallels/index.mdx index c3f57acef..dc4306c02 100644 --- a/website/content/docs/builders/parallels/index.mdx +++ b/website/content/docs/builders/parallels/index.mdx @@ -3,7 +3,6 @@ description: | The Parallels Packer builder is able to create Parallels Desktop for Mac virtual machines and export them in the PVM format. page_title: Parallels - Builders -sidebar_title: Parallels --- # Parallels Builder diff --git a/website/content/docs/builders/parallels/iso.mdx b/website/content/docs/builders/parallels/iso.mdx index fa49e7b91..2f362ebfc 100644 --- a/website/content/docs/builders/parallels/iso.mdx +++ b/website/content/docs/builders/parallels/iso.mdx @@ -6,7 +6,6 @@ description: | virtual machines and export them in the PVM format, starting from an ISO image. page_title: Parallels ISO - Builders -sidebar_title: ISO --- # Parallels Builder (from an ISO) diff --git a/website/content/docs/builders/parallels/pvm.mdx b/website/content/docs/builders/parallels/pvm.mdx index 2c99f1d58..0d916de52 100644 --- a/website/content/docs/builders/parallels/pvm.mdx +++ b/website/content/docs/builders/parallels/pvm.mdx @@ -6,7 +6,6 @@ description: | machines and export them in the PVM format, starting from an existing PVM (exported virtual machine image). page_title: Parallels PVM - Builders -sidebar_title: PVM --- # Parallels Builder (from a PVM) diff --git a/website/content/docs/builders/profitbricks.mdx b/website/content/docs/builders/profitbricks.mdx index 126f9a34c..6e83eabc9 100644 --- a/website/content/docs/builders/profitbricks.mdx +++ b/website/content/docs/builders/profitbricks.mdx @@ -1,7 +1,6 @@ --- description: The ProfitBricks builder is able to create images for ProfitBricks cloud. page_title: ProfitBricks - Builders -sidebar_title: ProfitBricks --- # ProfitBricks Builder @@ -63,7 +62,7 @@ can also be supplied to override the typical auto-generated key: - `snapshot_password` (string) - Password for the snapshot. - `url` (string) - Endpoint for the ProfitBricks REST API. Default URL - "" +"" ## Example diff --git a/website/content/docs/builders/proxmox/clone.mdx b/website/content/docs/builders/proxmox/clone.mdx index 487ec6606..1873e3337 100644 --- a/website/content/docs/builders/proxmox/clone.mdx +++ b/website/content/docs/builders/proxmox/clone.mdx @@ -5,7 +5,6 @@ description: | template name, runs any provisioning necessary on the image after launching it, then creates a virtual machine template. page_title: Proxmox Clone - Builders -sidebar_title: Clone --- # Proxmox Builder (from an image) diff --git a/website/content/docs/builders/proxmox/index.mdx b/website/content/docs/builders/proxmox/index.mdx index bfc3f6862..3c01257f2 100644 --- a/website/content/docs/builders/proxmox/index.mdx +++ b/website/content/docs/builders/proxmox/index.mdx @@ -3,7 +3,6 @@ description: > The Proxmox Packer builder is able to create Cloud-Init virtual machine images on a Proxmox server. page_title: Proxmox - Builders -sidebar_title: Proxmox --- # Proxmox Builder diff --git a/website/content/docs/builders/proxmox/iso.mdx b/website/content/docs/builders/proxmox/iso.mdx index 1d991c73c..045ebdaac 100644 --- a/website/content/docs/builders/proxmox/iso.mdx +++ b/website/content/docs/builders/proxmox/iso.mdx @@ -5,7 +5,6 @@ description: | necessary on the image after launching it, then creates a virtual machine template. page_title: Proxmox ISO - Builders -sidebar_title: ISO --- # Proxmox Builder (from an ISO) @@ -223,7 +222,7 @@ builder. Defaults to `lsi`. - `cloud_init` (bool) - If true, add a Cloud-Init CDROM drive after the virtual machine has been converted to a template. - Defaults to `false`. + Defaults to `false`. - `cloud_init_storage_pool` - (string) - Name of the Proxmox storage pool to store the Cloud-Init CDROM on. If not given, the storage pool of the boot device will be used. diff --git a/website/content/docs/builders/qemu.mdx b/website/content/docs/builders/qemu.mdx index 2c04e4bd7..6ff7cf3e1 100644 --- a/website/content/docs/builders/qemu.mdx +++ b/website/content/docs/builders/qemu.mdx @@ -4,7 +4,6 @@ modeline: | description: | The Qemu Packer builder is able to create KVM virtual machine images. page_title: QEMU - Builders -sidebar_title: QEMU --- # QEMU Builder diff --git a/website/content/docs/builders/scaleway.mdx b/website/content/docs/builders/scaleway.mdx index 4a31d7b9b..ad037d136 100644 --- a/website/content/docs/builders/scaleway.mdx +++ b/website/content/docs/builders/scaleway.mdx @@ -11,7 +11,6 @@ description: > servers that are launched within Scaleway. page_title: Scaleway - Builders -sidebar_title: Scaleway --- # Scaleway Builder @@ -70,6 +69,7 @@ access tokens: "ssh_private_key_file": "~/.ssh/id_rsa" } ``` + @@ -86,10 +86,10 @@ builders "scaleway" { ssh_private_key_file = "~/.ssh/id_rsa" } ``` + - When you do not specify the `ssh_private_key_file`, a temporary SSH keypair is generated to connect the server. This key will only allow the `root` user to connect the server. diff --git a/website/content/docs/builders/tencentcloud-cvm.mdx b/website/content/docs/builders/tencentcloud-cvm.mdx index b08e4e44c..c034a976c 100644 --- a/website/content/docs/builders/tencentcloud-cvm.mdx +++ b/website/content/docs/builders/tencentcloud-cvm.mdx @@ -3,7 +3,6 @@ description: | The `tencentcloud-cvm` Packer builder plugin provide the capability to build customized images based on an existing base images. page_title: Tencentcloud Image Builder -sidebar_title: Tencent Cloud --- # Tencentcloud Image Builder diff --git a/website/content/docs/builders/triton.mdx b/website/content/docs/builders/triton.mdx index 116de82f5..3a536dc36 100644 --- a/website/content/docs/builders/triton.mdx +++ b/website/content/docs/builders/triton.mdx @@ -10,7 +10,6 @@ description: > Cloud API to create images. page_title: Triton - Builders -sidebar_title: Triton --- # Triton Builder diff --git a/website/content/docs/builders/ucloud-uhost.mdx b/website/content/docs/builders/ucloud-uhost.mdx index bfe179e52..da5d05384 100644 --- a/website/content/docs/builders/ucloud-uhost.mdx +++ b/website/content/docs/builders/ucloud-uhost.mdx @@ -3,7 +3,6 @@ description: | The `ucloud-uhost` Packer builder plugin provides the capability to build customized images based on an existing base image for use in UHost Instance. page_title: UCloud Image Builder -sidebar_title: UCloud --- # UCloud Image Builder diff --git a/website/content/docs/builders/vagrant.mdx b/website/content/docs/builders/vagrant.mdx index f2d387706..0bd199ca6 100644 --- a/website/content/docs/builders/vagrant.mdx +++ b/website/content/docs/builders/vagrant.mdx @@ -3,7 +3,6 @@ description: | The Vagrant Packer builder is able to launch Vagrant boxes and re-package them into .box files page_title: Vagrant - Builders -sidebar_title: Vagrant --- # Vagrant Builder @@ -185,13 +184,13 @@ build { ## Regarding output directory and new box -After Packer completes building and provisioning a new Vagrant Box file, it is worth -noting that the new box file will need to be added to Vagrant. For a beginner to Packer +After Packer completes building and provisioning a new Vagrant Box file, it is worth +noting that the new box file will need to be added to Vagrant. For a beginner to Packer and Vagrant, it may seem as if a simple 'vagrant up' in the output directory will run the -the newly created Box. This is not the case. +the newly created Box. This is not the case. -Rather, create a new directory (to avoid Vagarant init collisions), add the new -package.box to Vagrant and init. Then run vagrant up to bring up the new box created +Rather, create a new directory (to avoid Vagarant init collisions), add the new +package.box to Vagrant and init. Then run vagrant up to bring up the new box created by Packer. You will now be able to connect to the new box with provisioned changes. ``` diff --git a/website/content/docs/builders/virtualbox/index.mdx b/website/content/docs/builders/virtualbox/index.mdx index e5a379920..47d5de687 100644 --- a/website/content/docs/builders/virtualbox/index.mdx +++ b/website/content/docs/builders/virtualbox/index.mdx @@ -5,7 +5,6 @@ description: > export them in the OVA or OVF format. page_title: VirtualBox - Builders -sidebar_title: VirtualBox --- # VirtualBox Builder diff --git a/website/content/docs/builders/virtualbox/iso.mdx b/website/content/docs/builders/virtualbox/iso.mdx index 300af5f4c..debd8a1cf 100644 --- a/website/content/docs/builders/virtualbox/iso.mdx +++ b/website/content/docs/builders/virtualbox/iso.mdx @@ -5,7 +5,6 @@ description: | The VirtualBox Packer builder is able to create VirtualBox virtual machines and export them in the OVF format, starting from an ISO image. page_title: VirtualBox ISO - Builders -sidebar_title: ISO --- # VirtualBox Builder (from an ISO) diff --git a/website/content/docs/builders/virtualbox/ovf.mdx b/website/content/docs/builders/virtualbox/ovf.mdx index 1ba791ee7..6c5ceb9dd 100644 --- a/website/content/docs/builders/virtualbox/ovf.mdx +++ b/website/content/docs/builders/virtualbox/ovf.mdx @@ -6,7 +6,6 @@ description: | and export them in the OVF format, starting from an existing OVF/OVA (exported virtual machine image). page_title: VirtualBox OVF/OVA - Builders -sidebar_title: OVF --- # VirtualBox Builder (from an OVF/OVA) diff --git a/website/content/docs/builders/virtualbox/vm.mdx b/website/content/docs/builders/virtualbox/vm.mdx index bd68fcfc5..34b39133a 100644 --- a/website/content/docs/builders/virtualbox/vm.mdx +++ b/website/content/docs/builders/virtualbox/vm.mdx @@ -7,7 +7,6 @@ description: > and export them in the OVF format, starting from an ISO image. page_title: VirtualBox Snapshot - Builders -sidebar_title: VM --- # VirtualBox Builder (from an existing VM) diff --git a/website/content/docs/builders/vmware/index.mdx b/website/content/docs/builders/vmware/index.mdx index a98a3d6bf..778f03745 100644 --- a/website/content/docs/builders/vmware/index.mdx +++ b/website/content/docs/builders/vmware/index.mdx @@ -3,7 +3,6 @@ description: | The VMware Packer builder is able to create VMware virtual machines for use with any VMware product. page_title: VMware - Builders -sidebar_title: VMware --- # VMware Builder diff --git a/website/content/docs/builders/vmware/iso.mdx b/website/content/docs/builders/vmware/iso.mdx index 6d603a41f..7bebb0930 100644 --- a/website/content/docs/builders/vmware/iso.mdx +++ b/website/content/docs/builders/vmware/iso.mdx @@ -8,7 +8,6 @@ description: | VMware Player on Linux. It can also build machines directly on VMware vSphere Hypervisor using SSH as opposed to the vSphere API. page_title: VMware ISO - Builders -sidebar_title: VMWare ISO --- # VMware Builder (from ISO) diff --git a/website/content/docs/builders/vmware/vmx.mdx b/website/content/docs/builders/vmware/vmx.mdx index 9eedb48ac..c679160e7 100644 --- a/website/content/docs/builders/vmware/vmx.mdx +++ b/website/content/docs/builders/vmware/vmx.mdx @@ -7,7 +7,6 @@ description: | virtual machines on hosts running VMware Fusion Professional for OS X, VMware Workstation for Linux and Windows, and VMware Player on Linux. page_title: VMware VMX - Builders -sidebar_title: VMWare VMX --- # VMware Builder (from VMX) diff --git a/website/content/docs/builders/vmware/vsphere-clone.mdx b/website/content/docs/builders/vmware/vsphere-clone.mdx index 4e92fcedb..0c817518c 100644 --- a/website/content/docs/builders/vmware/vsphere-clone.mdx +++ b/website/content/docs/builders/vmware/vsphere-clone.mdx @@ -5,7 +5,6 @@ description: > This VMware Packer builder uses the vSphere API to clone an existing vSphere template and create a new virtual machine remotely. page_title: VSphere Clone - Builders -sidebar_title: VSphere Clone --- # VMWare Vsphere Clone Builder diff --git a/website/content/docs/builders/vmware/vsphere-iso.mdx b/website/content/docs/builders/vmware/vsphere-iso.mdx index c1ac978ff..c4b794bc2 100644 --- a/website/content/docs/builders/vmware/vsphere-iso.mdx +++ b/website/content/docs/builders/vmware/vsphere-iso.mdx @@ -5,7 +5,6 @@ description: | This VMware Packer builder starts from an ISO and creates a vm using the vSphere API to build on a remote VMWare machine. page_title: VSphere ISO - Builders -sidebar_title: VSphere ISO --- # Packer Builder for VMware vSphere diff --git a/website/content/docs/builders/yandex.mdx b/website/content/docs/builders/yandex.mdx index 6ee51c607..6a7f6bee2 100644 --- a/website/content/docs/builders/yandex.mdx +++ b/website/content/docs/builders/yandex.mdx @@ -3,7 +3,6 @@ description: | The yandex Packer builder is able to create images for use with Yandex.Cloud based on existing images. page_title: Yandex Compute - Builders -sidebar_title: Yandex.Cloud --- # Yandex Compute Builder diff --git a/website/content/docs/commands/build.mdx b/website/content/docs/commands/build.mdx index aa6fe8499..ef20331cf 100644 --- a/website/content/docs/commands/build.mdx +++ b/website/content/docs/commands/build.mdx @@ -5,7 +5,6 @@ description: | template are executed in parallel, unless otherwise specified. And the artifacts that are created will be outputted at the end of the build. page_title: packer build - Commands -sidebar_title: build --- # `build` Command diff --git a/website/content/docs/commands/console.mdx b/website/content/docs/commands/console.mdx index 779170460..a677875f1 100644 --- a/website/content/docs/commands/console.mdx +++ b/website/content/docs/commands/console.mdx @@ -3,7 +3,6 @@ description: | The `packer console` command allows you to experiment with Packer variable interpolations. page_title: packer console - Commands -sidebar_title: console --- # `console` Command diff --git a/website/content/docs/commands/fix.mdx b/website/content/docs/commands/fix.mdx index 774ef35ac..a88866065 100644 --- a/website/content/docs/commands/fix.mdx +++ b/website/content/docs/commands/fix.mdx @@ -5,7 +5,6 @@ description: | of Packer. After you update to a new Packer release, you should run the fix command to make sure your templates work with the new release. page_title: packer fix - Commands -sidebar_title: fix --- # `fix` Command diff --git a/website/content/docs/commands/fmt.mdx b/website/content/docs/commands/fmt.mdx index 2a872d3fe..616407dd9 100644 --- a/website/content/docs/commands/fmt.mdx +++ b/website/content/docs/commands/fmt.mdx @@ -3,7 +3,6 @@ description: | The `packer fmt` Packer command is used to format HCL2 configuration files to a canonical format and style. page_title: packer fmt - Commands -sidebar_title: fmt --- # `fmt` Command diff --git a/website/content/docs/commands/hcl2_upgrade.mdx b/website/content/docs/commands/hcl2_upgrade.mdx index 247de3da2..f6c3beb78 100644 --- a/website/content/docs/commands/hcl2_upgrade.mdx +++ b/website/content/docs/commands/hcl2_upgrade.mdx @@ -4,7 +4,6 @@ description: | configuration template to it's formatted HCL2 counterpart. The command will return a zero exit status on success, and a non-zero exit status on failure. page_title: packer hcl2_upgrade - Commands -sidebar_title: hcl2_upgrade --- -> **Note:** This command is Beta, and currently being improved upon; do not @@ -35,16 +34,13 @@ From **v1.7.1**, the `hcl2_upgrade` command can upgrade a variables file. ```json { - "variables": { - "aws_region": null, - "aws_secondary_region": "{{ env `AWS_DEFAULT_REGION` }}", - "aws_secret_key": "", - "aws_access_key": "", - }, - "sensitive-variables": [ - "aws_secret_key", - "aws_access_key", - ] + "variables": { + "aws_region": null, + "aws_secondary_region": "{{ env `AWS_DEFAULT_REGION` }}", + "aws_secret_key": "", + "aws_access_key": "" + }, + "sensitive-variables": ["aws_secret_key", "aws_access_key"] } ``` diff --git a/website/content/docs/commands/index.mdx b/website/content/docs/commands/index.mdx index 3858b54be..bd5ea6dcd 100644 --- a/website/content/docs/commands/index.mdx +++ b/website/content/docs/commands/index.mdx @@ -6,7 +6,6 @@ description: | additional options as well. Subcommands are executed with `packer SUBCOMMAND`, where "SUBCOMMAND" is the actual command you wish to execute. page_title: Commands -sidebar_title: Commands (CLI) --- # Packer Commands (CLI) diff --git a/website/content/docs/commands/init.mdx b/website/content/docs/commands/init.mdx index ce165081d..81174ed6d 100644 --- a/website/content/docs/commands/init.mdx +++ b/website/content/docs/commands/init.mdx @@ -2,7 +2,6 @@ description: | The `packer init` Packer command is used to download Packer plugin binaries. page_title: packer init - Commands -sidebar_title: init --- # `init` Command @@ -37,7 +36,6 @@ for the ones that are missing. `packer init -upgrade` will try to get the latest versions for all plugins. - Import a plugin using the [`required_plugin`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) block : @@ -55,6 +53,7 @@ packer { HashiCorp does not officially verify third party Packer plugins, plugins not under the HashiCorp namespace `hashicorp/*`; as with all open source tools, please do your own due diligence when using a new tool. ## Plugin Selection + Plugin selection depends on the source and version constraints defined within the `required_plugins` block. For each of the required plugins Packer will query the source repository `github.com/azr/happycloud` whose fully qualified address is `https://github.com/azr/packer-plugin-happycloud` for a plugin matching the version constraints for the host operating system. diff --git a/website/content/docs/commands/inspect.mdx b/website/content/docs/commands/inspect.mdx index 19c019d13..2b4ab0b72 100644 --- a/website/content/docs/commands/inspect.mdx +++ b/website/content/docs/commands/inspect.mdx @@ -11,7 +11,6 @@ description: > provisioners it defines and the order they'll run, and more. page_title: packer inspect - Commands -sidebar_title: inspect --- # `inspect` Command diff --git a/website/content/docs/commands/validate.mdx b/website/content/docs/commands/validate.mdx index e10a1de64..35811068d 100644 --- a/website/content/docs/commands/validate.mdx +++ b/website/content/docs/commands/validate.mdx @@ -5,7 +5,6 @@ description: | success, and a non-zero exit status on failure. Additionally, if a template doesn't validate, any error messages will be outputted. page_title: packer validate - Commands -sidebar_title: validate --- # `validate` Command diff --git a/website/content/docs/communicators/index.mdx b/website/content/docs/communicators/index.mdx index 9ab93f343..19506cf07 100644 --- a/website/content/docs/communicators/index.mdx +++ b/website/content/docs/communicators/index.mdx @@ -3,7 +3,6 @@ description: | Communicators are the mechanism Packer uses to upload files, execute scripts, etc. with the machine being created. page_title: Communicators -sidebar_title: Communicators --- # Communicators diff --git a/website/content/docs/communicators/ssh.mdx b/website/content/docs/communicators/ssh.mdx index f3bd518ca..3cfcc198d 100644 --- a/website/content/docs/communicators/ssh.mdx +++ b/website/content/docs/communicators/ssh.mdx @@ -3,7 +3,6 @@ description: | The SSH communicator uses SSH to upload files, execute scripts, etc. on the machine being created. page_title: Communicators - SSH -sidebar_title: SSH --- # SSH Communicator diff --git a/website/content/docs/communicators/winrm.mdx b/website/content/docs/communicators/winrm.mdx index c90c1bd16..c549bf7a2 100644 --- a/website/content/docs/communicators/winrm.mdx +++ b/website/content/docs/communicators/winrm.mdx @@ -3,7 +3,6 @@ description: | Communicators are the mechanism Packer uses to upload files, execute scripts, etc. with the machine being created. page_title: Communicators - Templates -sidebar_title: WINRM --- # WinRM Communicator diff --git a/website/content/docs/configure.mdx b/website/content/docs/configure.mdx index 60aae89fc..0083363c1 100644 --- a/website/content/docs/configure.mdx +++ b/website/content/docs/configure.mdx @@ -3,7 +3,6 @@ description: | There are various ways to configure Packer. By default Packer will use known folders, which can be changed by using environment variables. page_title: Configuring Packer -sidebar_title: Configuring Packer --- # Configuring Packer @@ -21,7 +20,7 @@ The home directory of packer will be the first one of the following env values to be set : | unix | windows | -|------------------------|-----------------------| +| ---------------------- | --------------------- | | `${PACKER_CONFIG_DIR}` | `%PACKER_CONFIG_DIR%` | | `${APPDATA}` | `%APPDATA%` | | `${HOME}` | `%HOME%` | @@ -36,7 +35,7 @@ Packer can optionally read a JSON file for the end user to set core settings. The config file of packer will be looked up on the following paths: | unix | windows | -|---------------------------------|----------------------------------| +| ------------------------------- | -------------------------------- | | `${PACKER_CONFIG}` | `%PACKER_CONFIG%` | | `PACKER_HOME_DIR/.packerconfig` | `PACKER_HOME_DIR/packer.config/` | @@ -48,17 +47,18 @@ Packer's configuration directory can potentialy contain plugins and internal Packer files. The config dir of packer will be looked up on the following paths: | unix | windows | -|-----------------------------|-----------------------------| +| --------------------------- | --------------------------- | | `PACKER_HOME_DIR/.packer.d` | `PACKER_HOME_DIR/packer.d/` | -Examples: -* On a 'unix' system, if the `$PACKER_CONFIG_DIR` env var is set to -`/home/packer`, the config directory will be: `/home/packer/.packer.d/` and -other values will not be checked. -* On a 'unix' system, if the `HOME` env var is `/home/azr` or the `USER` env var -is `azr`, then the config directory will default to `/home/azr/.packer.d/`. -* On a 'windows' system, if the `PACKER_CONFIG_DIR` env var is set to `C:/`,the -config directory will be: `C:/packer.d/` and other values will not be checked. +Examples: + +- On a 'unix' system, if the `$PACKER_CONFIG_DIR` env var is set to + `/home/packer`, the config directory will be: `/home/packer/.packer.d/` and + other values will not be checked. +- On a 'unix' system, if the `HOME` env var is `/home/azr` or the `USER` env var + is `azr`, then the config directory will default to `/home/azr/.packer.d/`. +- On a 'windows' system, if the `PACKER_CONFIG_DIR` env var is set to `C:/`,the + config directory will be: `C:/packer.d/` and other values will not be checked. ## Packer's plugin directory diff --git a/website/content/docs/datasources/index.mdx b/website/content/docs/datasources/index.mdx index 5d82d6bce..b2f939060 100644 --- a/website/content/docs/datasources/index.mdx +++ b/website/content/docs/datasources/index.mdx @@ -3,7 +3,6 @@ description: | Data sources allow data to be fetched for use in Packer configuration. Use of data sources allows a build to use information defined outside of Packer. page_title: Data Sources -sidebar_title: Data Sources --- # Data Sources diff --git a/website/content/docs/debugging.mdx b/website/content/docs/debugging.mdx index a6e553600..f57322818 100644 --- a/website/content/docs/debugging.mdx +++ b/website/content/docs/debugging.mdx @@ -4,7 +4,6 @@ description: | certain things may not work entirely correctly, or may not appear to work correctly. page_title: Debugging - Other -sidebar_title: Debugging --- # Debugging Packer Builds diff --git a/website/content/docs/install.mdx b/website/content/docs/install.mdx index dcaee22e3..d2982f024 100644 --- a/website/content/docs/install.mdx +++ b/website/content/docs/install.mdx @@ -3,7 +3,6 @@ description: | Installing Packer is simple. You can download a precompiled binary or compile from source. This page details both methods. page_title: Install -sidebar_title: Installing Packer --- # Install Packer diff --git a/website/content/docs/plugins/creation/custom-builders.mdx b/website/content/docs/plugins/creation/custom-builders.mdx index f995d6427..668295f85 100644 --- a/website/content/docs/plugins/creation/custom-builders.mdx +++ b/website/content/docs/plugins/creation/custom-builders.mdx @@ -3,7 +3,6 @@ description: | It is possible to write custom builders using the Packer plugin interface, and this page documents how to do that. page_title: Custom Builders - Extending -sidebar_title: Custom Builders --- # Custom Builders @@ -25,7 +24,6 @@ basics](/docs/extending/plugins). recommend getting comfortable with using Packer and its officially maintained plugins before you dive into writing plugins of your own. - Custom plugins are written in [golang](https://golang.org/), so this guide assumes that you have some familiarity with that programming language. @@ -53,8 +51,7 @@ function, check our The `Prepare` method for each builder will be called by the Packer core at the beginning of the build. Its purpose is to parse and validate the -configuration template provided to Packer with `packer build -your_packer_template.json`, but not to execute API calls or begin creating any +configuration template provided to Packer with `packer build your_packer_template.json`, but not to execute API calls or begin creating any resources or artifacts. The configuration from your Packer template is passed into the Prepare() method @@ -107,7 +104,7 @@ the machine, provision it, and create the resulting machine image, which is returned as an implementation of the `packer.Artifact` interface. The `Run` method takes three parameters. The context.Context used to cancel the -build. The `packer.Ui` object is used to send output to the console. +build. The `packer.Ui` object is used to send output to the console. `packer.Hook` is used to execute hooks, which are covered in more detail in the Provisioning section below. @@ -144,7 +141,6 @@ The `Cancel` method can be called at any time and requests cancellation of any builder run in progress. This method should block until the run actually stops. Note that the Cancel method will not be called by Packer versions >= 1.4.0. - #### Context cancellation ( from Packer v1.4 ) The `<-ctx.Done()` can unblock at any time and signifies request for diff --git a/website/content/docs/plugins/creation/custom-datasources.mdx b/website/content/docs/plugins/creation/custom-datasources.mdx index b9f1055fd..1afd43aee 100644 --- a/website/content/docs/plugins/creation/custom-datasources.mdx +++ b/website/content/docs/plugins/creation/custom-datasources.mdx @@ -3,7 +3,6 @@ description: > Packer Data Sources are the components of Packer that allow data to be fetched for use within the Packer configuration. Use of data sources allows a build to use information defined outside of Packer. page_title: Custom Data Sources - Extending -sidebar_title: Custom Data Sources --- # Custom Data Sources @@ -87,7 +86,6 @@ Execute command will fetch the data and return it as a cty.Value. To get the equivalent cty.Value from an output config, we suggest using our [packer-plugin-sdk hcl2helper functions](https://github.com/hashicorp/packer-plugin-sdk/blob/v0.0.7/hcl2helper/values.go). - ## Scaffolding template To make your experience easier when developing your new data source plugin, we provide you a diff --git a/website/content/docs/plugins/creation/custom-post-processors.mdx b/website/content/docs/plugins/creation/custom-post-processors.mdx index 9c568476a..9c290e7ec 100644 --- a/website/content/docs/plugins/creation/custom-post-processors.mdx +++ b/website/content/docs/plugins/creation/custom-post-processors.mdx @@ -5,7 +5,6 @@ description: > into another, for example by compressing files, or uploading them. page_title: Custom Post-Processors - Extending -sidebar_title: Custom Post-Processors --- # Custom Post-Processors diff --git a/website/content/docs/plugins/creation/custom-provisioners.mdx b/website/content/docs/plugins/creation/custom-provisioners.mdx index af96ce2bb..3085ac28b 100644 --- a/website/content/docs/plugins/creation/custom-provisioners.mdx +++ b/website/content/docs/plugins/creation/custom-provisioners.mdx @@ -9,7 +9,6 @@ description: > within the machines. page_title: Custom Provisioners - Extending -sidebar_title: Custom Provisioners --- # Custom Provisioners diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 4117b5458..9f1e5942e 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -4,7 +4,6 @@ description: | infinite, Packer supports plugins for builders, provisioners, and post-processors. page_title: Extending -sidebar_title: Extending Packer --- # Extending Packer @@ -43,8 +42,9 @@ provisioners, post-processors, and data sources. Each of these components has a corresponding [interface](https://golang.org/doc/effective_go.html#interfaces_and_types). All you need to do to create a plugin is: - 1. create an implementation of the desired interface, and - 2. serve it using the server provided in the [packer-plugin-sdk](https://github.com/hashicorp/packer-plugin-sdk). + +1. create an implementation of the desired interface, and +2. serve it using the server provided in the [packer-plugin-sdk](https://github.com/hashicorp/packer-plugin-sdk). The core and the SDK handle all of the communication details inside the server. @@ -110,10 +110,10 @@ be referenced by using only the plugin name. For example: If your plugin is named `packer-plugin-my`, the above set definition would make the following components available: -* the `my-example` builder -* the `my` builder -* the `my-foo` post-processor -* the `my-bar` provisioner +- the `my-example` builder +- the `my` builder +- the `my-foo` post-processor +- the `my-bar` provisioner @@ -152,7 +152,6 @@ because the `packer init` command only supports multi-component plugins. - Next, build your plugin as you would any other Go application. The resulting binary is the plugin that can be installed using [standard installation procedures](/docs/plugins#installing-plugins). @@ -190,7 +189,7 @@ the logs to be helpful. `packer init` does not work using a centralized registry. Instead, it requires you to publish your plugin in a GitHub repo with the name -`packer-plugin-*` where * represents the name of your plugin. You also need to +`packer-plugin-*` where \* represents the name of your plugin. You also need to create a GitHub release of your plugin with specific assets for the `packer init` download to work. We provide a pre-defined release workflow configuration using @@ -200,28 +199,29 @@ release contains the right assets with the right names for Packer to leverage `packer init` installation. Here's what you need to create releases using GitHub Actions: + 1. Generate a GPG key to be used when signing releases (See [GitHub's detailed instructions](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/generating-a-new-gpg-key) -for help with this step) + for help with this step) 2. Copy the [GoReleaser configuration from the packer-plugin-scaffolding repository](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/.goreleaser.yml) to the root of your repository. - ```sh - curl -L -o .goreleaser.yml \ - https://raw.githubusercontent.com/hashicorp/packer-plugin-scaffolding/main/.goreleaser.yml - ``` + ```sh + curl -L -o .goreleaser.yml \ + https://raw.githubusercontent.com/hashicorp/packer-plugin-scaffolding/main/.goreleaser.yml + ``` 3. Copy the [GitHub Actions workflow from the packer-plugin-scaffolding repository](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/.github/workflows/release.yml) to `.github/workflows/release.yml` in your repository. - ```sh - mkdir -p .github/workflows && - curl -L -o .github/workflows/release.yml \ - https://raw.githubusercontent.com/hashicorp/packer-plugin-scaffolding/main/.github/workflows/release.yml - ``` + ```sh + mkdir -p .github/workflows && + curl -L -o .github/workflows/release.yml \ + https://raw.githubusercontent.com/hashicorp/packer-plugin-scaffolding/main/.github/workflows/release.yml + ``` 4. Go to your repository page on GitHub and navigate to Settings > Secrets. Add - the following secrets: - - `GPG_PRIVATE_KEY` - Your ASCII-armored GPG private key. You can export this with `gpg --armor --export-secret-keys [key ID or email]`. - - `PASSPHRASE` - The passphrase for your GPG private key. + the following secrets: + - `GPG_PRIVATE_KEY` - Your ASCII-armored GPG private key. You can export this with `gpg --armor --export-secret-keys [key ID or email]`. + - `PASSPHRASE` - The passphrase for your GPG private key. 5. Push a new valid version tag (e.g. `v1.2.3`) to test that the GitHub Actions -releaser is working. The tag must be a valid -[Semantic Version](https://semver.org/) preceded with a `v`. Once the tag is pushed, the github actions you just configured will automatically build release binaries that Packer can download using `packer init`. For more details on how -to install a plugin using `packer init`, see the -[init docs](/docs/commands/init). + releaser is working. The tag must be a valid + [Semantic Version](https://semver.org/) preceded with a `v`. Once the tag is pushed, the github actions you just configured will automatically build release binaries that Packer can download using `packer init`. For more details on how + to install a plugin using `packer init`, see the + [init docs](/docs/commands/init). ### Registering Plugin Documentation @@ -296,9 +296,9 @@ If a plugin maintainer wishes to only include a specific version of released doc Here's a non exaustive list of Packer plugins that you can check out: -* [github.com/hashicorp/packer-plugin-docker](https://github.com/hashicorp/packer-plugin-docker) -* [github.com/exoscale/packer-plugin-exoscale](https://github.com/exoscale/packer-plugin-exoscale) -* [github.com/sylviamoss/packer-plugin-comment](https://github.com/sylviamoss/packer-plugin-comment) +- [github.com/hashicorp/packer-plugin-docker](https://github.com/hashicorp/packer-plugin-docker) +- [github.com/exoscale/packer-plugin-exoscale](https://github.com/exoscale/packer-plugin-exoscale) +- [github.com/sylviamoss/packer-plugin-comment](https://github.com/sylviamoss/packer-plugin-comment) Looking at their code will give you good examples. @@ -314,8 +314,8 @@ scope of a plugin. Making your unpublished plugin available to Packer is possible by either: -* Starting Packer from the directory where the plugin binary is located. -* Putting the plugin binary in the same directory as Packer. +- Starting Packer from the directory where the plugin binary is located. +- Putting the plugin binary in the same directory as Packer. In both these cases, if the binary is called `packer-plugin-myawesomecloud` and defines an `ebs` builder then you will be able to use an `myawesomecloud-ebs` diff --git a/website/content/docs/plugins/index.mdx b/website/content/docs/plugins/index.mdx index 07b10ab56..8799a68e3 100644 --- a/website/content/docs/plugins/index.mdx +++ b/website/content/docs/plugins/index.mdx @@ -4,7 +4,6 @@ description: | the core source code. Packer plugins are able to add new builders, provisioners, hooks, and more. page_title: Plugins -sidebar_title: Packer Plugins --- # Packer Plugins @@ -40,11 +39,10 @@ build. Packer plugins are published and maintained by a variety of sources, including HashiCorp, and the Packer community. The Packer website uses tiers and badges to denote the source of a provider. Additionally, namespaces are used to help users identify the organization or publisher responsible for the integration, as shown in the table below. - -| Tier | Description | Namespace | -| ---------| ------------| ----------| -| |Official plugins are owned and maintained by HashiCorp. | hashicorp | -| | Community providers are published by individual maintainers, groups of maintainers, or other members of the Packer community.| Third-party organization or maintainer's individual account | +| Tier | Description | Namespace | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| | Official plugins are owned and maintained by HashiCorp. | hashicorp | +| | Community providers are published by individual maintainers, groups of maintainers, or other members of the Packer community. | Third-party organization or maintainer's individual account | ## Installing Plugins @@ -65,7 +63,7 @@ it is a single-component plugin. ~> **Note**: Only _multi-component plugin binaries_ -- that is plugins named -packer-plugin-*, like the `packer-plugin-amazon` -- are expected to work with +packer-plugin-\*, like the `packer-plugin-amazon` -- are expected to work with Packer init. The legacy `builder`, `post-processor` and `provisioner` plugin types will keep on being detected but Packer cannot install them automatically. If a plugin you use has not been upgraded to use the multi-component plugin @@ -74,39 +72,40 @@ architecture, contact your maintainer to request an upgrade. ### Create a required_plugins block 1. Add a -[`required_plugins`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) -block to your [packer block](/docs/templates/hcl_templates/blocks/packer). Each block will tell Packer what version(s) of a -particular plugin can be installed. Make sure to set a valid [version -constraint string](/docs/templates/hcl_templates/blocks/packer#version-constraints). + [`required_plugins`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) + block to your [packer block](/docs/templates/hcl_templates/blocks/packer). Each block will tell Packer what version(s) of a + particular plugin can be installed. Make sure to set a valid [version + constraint string](/docs/templates/hcl_templates/blocks/packer#version-constraints). Here is an example `required_plugins` block: - ```hcl - packer { - required_plugins { - myawesomecloud = { - version = ">= 2.7.0" - source = "github.com/azr/myawesomecloud" - } - happycloud = { - version = ">= 1.1.3" - source = "github.com/azr/happycloud" - } +```hcl +packer { + required_plugins { + myawesomecloud = { + version = ">= 2.7.0" + source = "github.com/azr/myawesomecloud" + } + happycloud = { + version = ">= 1.1.3" + source = "github.com/azr/happycloud" } } - ``` +} +``` 2. Run [`packer init`](/docs/commands/init) from your project directory (the -directory containing your Packer templates) to install all missing plugin -binaries. Given the above example, Packer will try to look for a GitHub -repository owned by user or organization `azr` named -`packer-plugin-myawesomecloud` and `packer-plugin-happycloud`. + directory containing your Packer templates) to install all missing plugin + binaries. Given the above example, Packer will try to look for a GitHub + repository owned by user or organization `azr` named + `packer-plugin-myawesomecloud` and `packer-plugin-happycloud`. ## Names and Addresses + Each plugin has two identifiers: -* A `source` address, which is only necessary when requiring a plugin outside the HashiCorp domain. -* A unique **local name**, which is used everywhere else in a Packer +- A `source` address, which is only necessary when requiring a plugin outside the HashiCorp domain. +- A unique **local name**, which is used everywhere else in a Packer configuration. ### Local Names @@ -163,14 +162,14 @@ follows: `//` -* **Hostname:** The hostname of the location/service that +- **Hostname:** The hostname of the location/service that distributes the plugin. Currently, the only valid "hostname" is github.com, but we plan to eventually support plugins downloaded from other domains. -* **Namespace:** An organizational namespace within the specified host. +- **Namespace:** An organizational namespace within the specified host. This often is the organization that publishes the plugin. -* **Type:** A short name for the platform or system the plugin manages. The +- **Type:** A short name for the platform or system the plugin manages. The type is usually the plugin's preferred local name. For example, the fictional `myawesomecloud` plugin could belong to the @@ -192,6 +191,7 @@ various outputs, like error messages. ## Implicit Github urls Using the following example : + ```hcl required_plugins { happycloud = { @@ -202,7 +202,8 @@ Using the following example : ``` The plugin getter will look for plugins located at: -* github.com/azr/packer-plugin-happycloud + +- github.com/azr/packer-plugin-happycloud Packer will error if you set the `packer-plugin-` prefix in a `source`. This will avoid conflicting with other plugins for other tools, like Terraform. diff --git a/website/content/docs/post-processors/alicloud-import.mdx b/website/content/docs/post-processors/alicloud-import.mdx index 4fd8c38c4..e879c11c2 100644 --- a/website/content/docs/post-processors/alicloud-import.mdx +++ b/website/content/docs/post-processors/alicloud-import.mdx @@ -3,7 +3,6 @@ description: | The Packer Alicloud Import post-processor takes a RAW or VHD artifact from various builders and imports it to an Alicloud customized image list. page_title: Alicloud Import Post-Processor -sidebar_title: Alicloud Import --- # Alicloud Import Post-Processor diff --git a/website/content/docs/post-processors/artifice.mdx b/website/content/docs/post-processors/artifice.mdx index da5779194..189f92202 100644 --- a/website/content/docs/post-processors/artifice.mdx +++ b/website/content/docs/post-processors/artifice.mdx @@ -13,7 +13,6 @@ description: > instance. page_title: Artifice - Post-Processors -sidebar_title: Artifice --- # Artifice Post-Processor diff --git a/website/content/docs/post-processors/checksum.mdx b/website/content/docs/post-processors/checksum.mdx index 7b4f1be13..629c32055 100644 --- a/website/content/docs/post-processors/checksum.mdx +++ b/website/content/docs/post-processors/checksum.mdx @@ -7,7 +7,6 @@ description: > artifact, compute it checksum and pass to next post-processor original artifacts and checksum files. page_title: Checksum - Post-Processors -sidebar_title: Checksum --- # Checksum Post-Processor @@ -24,7 +23,7 @@ After computes checksum for artifacts, you can use new artifacts with other post-processors like [artifice](/docs/post-processors/artifice), [compress](/docs/post-processors/compress), -[docker-push](/docs/post-processors/docker-push), or +[docker-push](/docs/post-processors/docker/docker-push), or a third-party post-processor. ## Basic example diff --git a/website/content/docs/post-processors/community-supported.mdx b/website/content/docs/post-processors/community-supported.mdx index e0b2bbeb3..c3e2e1f8f 100644 --- a/website/content/docs/post-processors/community-supported.mdx +++ b/website/content/docs/post-processors/community-supported.mdx @@ -5,7 +5,6 @@ description: > can run alongside Packer with minimal extra effort. page_title: Community - Post-Processors -sidebar_title: Community-Supported --- # Community Post-Processors diff --git a/website/content/docs/post-processors/compress.mdx b/website/content/docs/post-processors/compress.mdx index 5a348ba1a..961b973e1 100644 --- a/website/content/docs/post-processors/compress.mdx +++ b/website/content/docs/post-processors/compress.mdx @@ -3,7 +3,6 @@ description: | The Packer compress post-processor takes an artifact with files (such as from VMware or VirtualBox) and compresses the artifact into a single archive. page_title: Compress - Post-Processors -sidebar_title: Compress --- # Compress Post-Processor diff --git a/website/content/docs/post-processors/digitalocean-import.mdx b/website/content/docs/post-processors/digitalocean-import.mdx index c45ef6a39..5e464e57f 100644 --- a/website/content/docs/post-processors/digitalocean-import.mdx +++ b/website/content/docs/post-processors/digitalocean-import.mdx @@ -3,7 +3,6 @@ description: | The Packer DigitalOcean Import post-processor takes an image artifact from various builders and imports it to DigitalOcean. page_title: DigitalOcean Import - Post-Processors -sidebar_title: DigitalOcean Import --- # DigitalOcean Import Post-Processor diff --git a/website/content/docs/post-processors/googlecompute-export.mdx b/website/content/docs/post-processors/googlecompute-export.mdx index 79847fc90..1361ba1d1 100644 --- a/website/content/docs/post-processors/googlecompute-export.mdx +++ b/website/content/docs/post-processors/googlecompute-export.mdx @@ -5,7 +5,6 @@ description: > exported images can be easily shared and uploaded to other Google Cloud Projects. page_title: Google Compute Image Exporter - Post-Processors -sidebar_title: Google Compute Export --- # Google Compute Image Exporter Post-Processor diff --git a/website/content/docs/post-processors/googlecompute-import.mdx b/website/content/docs/post-processors/googlecompute-import.mdx index cbc611cfe..052ab85f4 100644 --- a/website/content/docs/post-processors/googlecompute-import.mdx +++ b/website/content/docs/post-processors/googlecompute-import.mdx @@ -3,7 +3,6 @@ description: | The Google Compute Image Import post-processor takes a compressed raw disk image and imports it to a GCE image available to Google Compute Engine. page_title: Google Compute Image Import - Post-Processors -sidebar_title: Google Compute Import --- # Google Compute Image Import Post-Processor @@ -145,64 +144,64 @@ build { - ```json - { - "variables": { - "account_file": "account.json", - "bucket": "my-bucket", - "project": "my-project", - "serial": "" - }, - "builders": [ - { - "type": "qemu", - "accelerator": "kvm", - "boot_command": [ - " console=ttyS0,115200n8 inst.text inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/fedora-31-ks.cfg rd.live.check=0" - ], - "disk_size": "15000", - "format": "raw", - "iso_checksum": "sha256:225ebc160e40bb43c5de28bad9680e3a78a9db40c9e3f4f42f3ee3f10f95dbeb", - "iso_url": "https://download-ib01.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/iso/Fedora-Server-dvd-x86_64-31-1.9.iso", - "headless": "true", - "http_directory": "http", - "http_port_max": "10089", - "http_port_min": "10082", - "output_directory": "output", - "shutdown_timeout": "30m", - "shutdown_command": "echo 'vagrant'|sudo -S shutdown -P now", - "ssh_username": "vagrant", - "ssh_password": "vagrant", - "vm_name": "disk.raw", - "qemu_binary": "/usr/bin/kvm", - "qemuargs": [ - ["-m", "1024"], - ["-cpu", "host"], - ["-chardev", "tty,id=pts,path={{user `serial`}}"], - ["-device", "isa-serial,chardev=pts"], - ["-device", "virtio-net,netdev=user.0"] - ] - } - ], - "post-processors": [ - [ - { - "type": "compress", - "output": "output/disk.raw.tar.gz" - }, - { - "type": "googlecompute-import", - "project_id": "{{user `project`}}", - "account_file": "{{user `account_file`}}", - "bucket": "{{user `bucket`}}", - "image_name": "fedora31-server-packertest", - "image_description": "Fedora 31 Server", - "image_family": "fedora31-server" - } +```json +{ + "variables": { + "account_file": "account.json", + "bucket": "my-bucket", + "project": "my-project", + "serial": "" + }, + "builders": [ + { + "type": "qemu", + "accelerator": "kvm", + "boot_command": [ + " console=ttyS0,115200n8 inst.text inst.ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/fedora-31-ks.cfg rd.live.check=0" + ], + "disk_size": "15000", + "format": "raw", + "iso_checksum": "sha256:225ebc160e40bb43c5de28bad9680e3a78a9db40c9e3f4f42f3ee3f10f95dbeb", + "iso_url": "https://download-ib01.fedoraproject.org/pub/fedora/linux/releases/31/Server/x86_64/iso/Fedora-Server-dvd-x86_64-31-1.9.iso", + "headless": "true", + "http_directory": "http", + "http_port_max": "10089", + "http_port_min": "10082", + "output_directory": "output", + "shutdown_timeout": "30m", + "shutdown_command": "echo 'vagrant'|sudo -S shutdown -P now", + "ssh_username": "vagrant", + "ssh_password": "vagrant", + "vm_name": "disk.raw", + "qemu_binary": "/usr/bin/kvm", + "qemuargs": [ + ["-m", "1024"], + ["-cpu", "host"], + ["-chardev", "tty,id=pts,path={{user `serial`}}"], + ["-device", "isa-serial,chardev=pts"], + ["-device", "virtio-net,netdev=user.0"] ] + } + ], + "post-processors": [ + [ + { + "type": "compress", + "output": "output/disk.raw.tar.gz" + }, + { + "type": "googlecompute-import", + "project_id": "{{user `project`}}", + "account_file": "{{user `account_file`}}", + "bucket": "{{user `bucket`}}", + "image_name": "fedora31-server-packertest", + "image_description": "Fedora 31 Server", + "image_family": "fedora31-server" + } ] - } - ``` + ] +} +``` diff --git a/website/content/docs/post-processors/index.mdx b/website/content/docs/post-processors/index.mdx index 1e3a7c27b..76b5f5091 100644 --- a/website/content/docs/post-processors/index.mdx +++ b/website/content/docs/post-processors/index.mdx @@ -3,7 +3,6 @@ description: | Post-processors run after the image is built by the builder and provisioned by the provisioner(s). page_title: Post-Processors -sidebar_title: Post-Processors --- # Post-Processors diff --git a/website/content/docs/post-processors/manifest.mdx b/website/content/docs/post-processors/manifest.mdx index 5330cbbd6..9a30a3216 100644 --- a/website/content/docs/post-processors/manifest.mdx +++ b/website/content/docs/post-processors/manifest.mdx @@ -3,7 +3,6 @@ description: > The manifest post-processor writes a JSON file with the build artifacts and IDs from a packer run. page_title: Manifest - Post-Processors -sidebar_title: Manifest --- # Manifest Post-Processor diff --git a/website/content/docs/post-processors/shell-local.mdx b/website/content/docs/post-processors/shell-local.mdx index c59378aa7..0505dcdbe 100644 --- a/website/content/docs/post-processors/shell-local.mdx +++ b/website/content/docs/post-processors/shell-local.mdx @@ -3,7 +3,6 @@ description: | The shell-local Packer post processor enables users to do some post processing after artifacts have been built. page_title: Local Shell - Post-Processors -sidebar_title: Shell (Local) --- # Local Shell Post Processor diff --git a/website/content/docs/post-processors/ucloud-import.mdx b/website/content/docs/post-processors/ucloud-import.mdx index ea17c051c..ae5ae2974 100644 --- a/website/content/docs/post-processors/ucloud-import.mdx +++ b/website/content/docs/post-processors/ucloud-import.mdx @@ -4,7 +4,6 @@ description: > artifact from various builders and imports it to UCloud customized image list for UHost Instance. page_title: UCloud Import Post-Processors -sidebar_title: UCloud Import --- # UCloud Import Post-Processor diff --git a/website/content/docs/post-processors/vagrant-cloud.mdx b/website/content/docs/post-processors/vagrant-cloud.mdx index 65ff711ae..f9b8beab0 100644 --- a/website/content/docs/post-processors/vagrant-cloud.mdx +++ b/website/content/docs/post-processors/vagrant-cloud.mdx @@ -3,7 +3,6 @@ description: | The Vagrant Cloud post-processor enables the upload of Vagrant boxes to Vagrant Cloud. page_title: Vagrant Cloud - Post-Processors -sidebar_title: Vagrant Cloud --- # Vagrant Cloud Post-Processor diff --git a/website/content/docs/post-processors/vagrant.mdx b/website/content/docs/post-processors/vagrant.mdx index d8e49a602..2e63bdf81 100644 --- a/website/content/docs/post-processors/vagrant.mdx +++ b/website/content/docs/post-processors/vagrant.mdx @@ -9,7 +9,6 @@ description: > distributed by Vagrant are created. page_title: Vagrant - Post-Processors -sidebar_title: Vagrant --- # Vagrant Post-Processor diff --git a/website/content/docs/post-processors/vsphere-template.mdx b/website/content/docs/post-processors/vsphere-template.mdx index b433dff13..ca9d22ba8 100644 --- a/website/content/docs/post-processors/vsphere-template.mdx +++ b/website/content/docs/post-processors/vsphere-template.mdx @@ -5,7 +5,6 @@ description: > [vSphere](/docs/post-processors/vsphere) post-processor, marks the VM as a template, and leaves it in the path of your choice. page_title: vSphere Template - Post-Processors -sidebar_title: vSphere Template --- # vSphere Template Post-Processor diff --git a/website/content/docs/post-processors/vsphere.mdx b/website/content/docs/post-processors/vsphere.mdx index ab9dd9f94..2baeec7f4 100644 --- a/website/content/docs/post-processors/vsphere.mdx +++ b/website/content/docs/post-processors/vsphere.mdx @@ -3,7 +3,6 @@ description: > The Packer vSphere post-processor takes an artifact and uploads it to a vSphere endpoint. page_title: vSphere - Post-Processors -sidebar_title: vSphere --- # vSphere Post-Processor diff --git a/website/content/docs/post-processors/yandex-export.mdx b/website/content/docs/post-processors/yandex-export.mdx index 35fa017be..333fb94d6 100644 --- a/website/content/docs/post-processors/yandex-export.mdx +++ b/website/content/docs/post-processors/yandex-export.mdx @@ -7,7 +7,6 @@ description: > images can be easily shared and uploaded to other Yandex.Cloud Cloud folders. page_title: Yandex.Cloud Compute Image Exporter - Post-Processors -sidebar_title: Yandex.Cloud Compute Export --- # Yandex.Cloud Compute Image Exporter Post-Processor diff --git a/website/content/docs/post-processors/yandex-import.mdx b/website/content/docs/post-processors/yandex-import.mdx index 223d655b1..4a6eadf26 100644 --- a/website/content/docs/post-processors/yandex-import.mdx +++ b/website/content/docs/post-processors/yandex-import.mdx @@ -4,7 +4,6 @@ description: > qcow2 image (or from provided Storage object in near future). It uploads qcow2 to Yandex Object Storage and create new one Compute Image in target folder. page_title: Yandex.Cloud Compute Image Import - Post-Processors -sidebar_title: Yandex.Cloud Compute Import --- # Yandex.Cloud Compute Image Import Post-Processor diff --git a/website/content/docs/provisioners/ansible-local.mdx b/website/content/docs/provisioners/ansible-local.mdx index c6b49e3c0..341e8b2b1 100644 --- a/website/content/docs/provisioners/ansible-local.mdx +++ b/website/content/docs/provisioners/ansible-local.mdx @@ -6,7 +6,6 @@ description: > Playbooks and Roles can be uploaded from your build machine (the one running Packer) to the vm. page_title: Ansible Local - Provisioners -sidebar_title: Ansible Local --- # Ansible Local Provisioner diff --git a/website/content/docs/provisioners/ansible.mdx b/website/content/docs/provisioners/ansible.mdx index d6c093e27..5ac57b219 100644 --- a/website/content/docs/provisioners/ansible.mdx +++ b/website/content/docs/provisioners/ansible.mdx @@ -3,7 +3,6 @@ description: | The ansible Packer provisioner allows Ansible playbooks to be run to provision the machine. page_title: Ansible - Provisioners -sidebar_title: Ansible (Remote) --- # Ansible Provisioner diff --git a/website/content/docs/provisioners/breakpoint.mdx b/website/content/docs/provisioners/breakpoint.mdx index 9f74cd190..45c5a63c6 100644 --- a/website/content/docs/provisioners/breakpoint.mdx +++ b/website/content/docs/provisioners/breakpoint.mdx @@ -7,7 +7,6 @@ description: > particular part of the provisioning process. page_title: breakpoint - Provisioners -sidebar_title: Breakpoint --- # Breakpoint Provisioner diff --git a/website/content/docs/provisioners/chef-client.mdx b/website/content/docs/provisioners/chef-client.mdx index 8e5eec706..91f96f467 100644 --- a/website/content/docs/provisioners/chef-client.mdx +++ b/website/content/docs/provisioners/chef-client.mdx @@ -8,7 +8,6 @@ description: > remote Chef Server to provision the machine. page_title: Chef Client - Provisioners -sidebar_title: Chef Client --- # Chef Client Provisioner diff --git a/website/content/docs/provisioners/chef-solo.mdx b/website/content/docs/provisioners/chef-solo.mdx index 6f99e6c3a..4ceb48f73 100644 --- a/website/content/docs/provisioners/chef-solo.mdx +++ b/website/content/docs/provisioners/chef-solo.mdx @@ -4,7 +4,6 @@ description: | built by Packer using chef-solo. Cookbooks can be uploaded from your local machine to the remote machine or remote paths can be used. page_title: Chef Solo - Provisioners -sidebar_title: Chef Solo --- # Chef Solo Provisioner @@ -134,7 +133,7 @@ configuration is actually required, but at least `run_list` is recommended. @include 'provisioners/common-config.mdx' -##### Node Attribute Mapping +##### Node Attribute Mapping An arbitrary mapping of JSON that will be available as node attributes while running Chef. @@ -142,7 +141,7 @@ An arbitrary mapping of JSON that will be available as node attributes while run - `json_string` (string) - The JSON string can be encoded using the [jsonencode](/docs/templates/hcl_templates/functions/encoding/jsonencode) -template function. + template function. ```hcl provisioner "chef-solo" { diff --git a/website/content/docs/provisioners/community-supported.mdx b/website/content/docs/provisioners/community-supported.mdx index c1b58a53d..ca71d42a2 100644 --- a/website/content/docs/provisioners/community-supported.mdx +++ b/website/content/docs/provisioners/community-supported.mdx @@ -3,7 +3,6 @@ description: | Community-maintained provisioners are not part of the core Packer binary, but can run alongside Packer with minimal extra effort. page_title: Community - Provisioners -sidebar_title: Community-Supported --- # Community Provisioners diff --git a/website/content/docs/provisioners/converge.mdx b/website/content/docs/provisioners/converge.mdx index 90cbbc104..f6c71e8f3 100644 --- a/website/content/docs/provisioners/converge.mdx +++ b/website/content/docs/provisioners/converge.mdx @@ -3,7 +3,6 @@ description: >- The converge Packer provisioner uses Converge modules to provision the machine. page_title: Converge - Provisioners -sidebar_title: Converge --- # Converge Provisioner diff --git a/website/content/docs/provisioners/custom.mdx b/website/content/docs/provisioners/custom.mdx index c5da3d153..170b1619f 100644 --- a/website/content/docs/provisioners/custom.mdx +++ b/website/content/docs/provisioners/custom.mdx @@ -5,7 +5,6 @@ description: | provisioners is covered in the custom provisioners page of the Packer plugin section. page_title: Custom - Provisioners -sidebar_title: Custom --- # Custom Provisioner diff --git a/website/content/docs/provisioners/file.mdx b/website/content/docs/provisioners/file.mdx index b2bc1bfe2..39e76b365 100644 --- a/website/content/docs/provisioners/file.mdx +++ b/website/content/docs/provisioners/file.mdx @@ -5,7 +5,6 @@ description: | then use shell provisioner to move them to the proper place, set permissions, etc. page_title: File - Provisioners -sidebar_title: File --- # File Provisioner diff --git a/website/content/docs/provisioners/index.mdx b/website/content/docs/provisioners/index.mdx index 8af276228..f38026b2d 100644 --- a/website/content/docs/provisioners/index.mdx +++ b/website/content/docs/provisioners/index.mdx @@ -3,7 +3,6 @@ description: | Provisioners use builtin and third-party software to install and configure the machine image after booting. page_title: Provisioners -sidebar_title: Provisioners --- # Provisioners diff --git a/website/content/docs/provisioners/inspec.mdx b/website/content/docs/provisioners/inspec.mdx index f4632dc76..8ca0cda58 100644 --- a/website/content/docs/provisioners/inspec.mdx +++ b/website/content/docs/provisioners/inspec.mdx @@ -3,7 +3,6 @@ description: | The inspec Packer provisioner allows inspec profiles to be run to test the machine. page_title: InSpec - Provisioners -sidebar_title: InSpec --- # InSpec Provisioner @@ -159,7 +158,7 @@ Optional Parameters: - `user` (string) - The `--user` to use. Defaults to the user running Packer. -- `valid_exit_codes` (list of ints) - A list of valid exit codes returned by +- `valid_exit_codes` (list of ints) - A list of valid exit codes returned by inspec to be accepted by the provisioner. The default is (0,101) (accept skipped tests). See [inspec exit codes](https://docs.chef.io/inspec/cli/#exec) for a list and explanation of inspec exit codes. diff --git a/website/content/docs/provisioners/powershell.mdx b/website/content/docs/provisioners/powershell.mdx index 465f234c0..64de7740e 100644 --- a/website/content/docs/provisioners/powershell.mdx +++ b/website/content/docs/provisioners/powershell.mdx @@ -3,7 +3,6 @@ description: | The PowerShell Packer provisioner runs PowerShell scripts on Windows machines. It assumes that the communicator in use is WinRM. page_title: PowerShell - Provisioners -sidebar_title: PowerShell --- # PowerShell Provisioner diff --git a/website/content/docs/provisioners/puppet-masterless.mdx b/website/content/docs/provisioners/puppet-masterless.mdx index c19c55776..17fde9e1a 100644 --- a/website/content/docs/provisioners/puppet-masterless.mdx +++ b/website/content/docs/provisioners/puppet-masterless.mdx @@ -12,7 +12,6 @@ description: > to a Puppet master. page_title: Puppet Masterless - Provisioners -sidebar_title: Puppet Masterless --- # Puppet (Masterless) Provisioner diff --git a/website/content/docs/provisioners/puppet-server.mdx b/website/content/docs/provisioners/puppet-server.mdx index 5571c0fb0..f33891a55 100644 --- a/website/content/docs/provisioners/puppet-server.mdx +++ b/website/content/docs/provisioners/puppet-server.mdx @@ -3,7 +3,6 @@ description: | The puppet-server Packer provisioner provisions Packer machines with Puppet by connecting to a Puppet master. page_title: Puppet Server - Provisioners -sidebar_title: Puppet Server --- # Puppet Server Provisioner diff --git a/website/content/docs/provisioners/salt-masterless.mdx b/website/content/docs/provisioners/salt-masterless.mdx index 1a95fe0fb..ca538b1ff 100644 --- a/website/content/docs/provisioners/salt-masterless.mdx +++ b/website/content/docs/provisioners/salt-masterless.mdx @@ -3,7 +3,6 @@ description: | The salt-masterless Packer provisioner provisions machines built by Packer using Salt states, without connecting to a Salt master. page_title: Salt Masterless - Provisioners -sidebar_title: Salt Masterless --- # Salt Masterless Provisioner diff --git a/website/content/docs/provisioners/shell-local.mdx b/website/content/docs/provisioners/shell-local.mdx index 4c75dedc8..37db3993a 100644 --- a/website/content/docs/provisioners/shell-local.mdx +++ b/website/content/docs/provisioners/shell-local.mdx @@ -5,7 +5,6 @@ description: | your build server, or your desktop, etc., rather than the remote/guest machine being provisioned by Packer. page_title: Shell (Local) - Provisioners -sidebar_title: Shell (Local) --- # Local Shell Provisioner diff --git a/website/content/docs/provisioners/shell.mdx b/website/content/docs/provisioners/shell.mdx index 789d22ce9..ce701e4b4 100644 --- a/website/content/docs/provisioners/shell.mdx +++ b/website/content/docs/provisioners/shell.mdx @@ -4,7 +4,6 @@ description: | scripts. Shell provisioning is the easiest way to get software installed and configured on a machine. page_title: Shell - Provisioners -sidebar_title: Shell --- # Shell Provisioner diff --git a/website/content/docs/provisioners/windows-restart.mdx b/website/content/docs/provisioners/windows-restart.mdx index 2ab3bf0d7..47efbaf78 100644 --- a/website/content/docs/provisioners/windows-restart.mdx +++ b/website/content/docs/provisioners/windows-restart.mdx @@ -3,7 +3,6 @@ description: | The Windows restart provisioner restarts a Windows machine and waits for it to come back up. page_title: Windows Restart - Provisioners -sidebar_title: Windows Restart --- # Windows Restart Provisioner diff --git a/website/content/docs/provisioners/windows-shell.mdx b/website/content/docs/provisioners/windows-shell.mdx index 46d0b75ec..a9430b6a1 100644 --- a/website/content/docs/provisioners/windows-shell.mdx +++ b/website/content/docs/provisioners/windows-shell.mdx @@ -3,7 +3,6 @@ description: | The windows-shell Packer provisioner runs commands on Windows using the cmd shell. page_title: Windows Shell - Provisioners -sidebar_title: Windows Shell --- # Windows Shell Provisioner diff --git a/website/content/docs/templates/hcl_templates/blocks/build/index.mdx b/website/content/docs/templates/hcl_templates/blocks/build/index.mdx index b6d042320..4b2c36874 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/index.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/index.mdx @@ -2,7 +2,6 @@ description: | The source block defines what builders are started. page_title: build - Blocks -sidebar_title: build --- # The `build` block diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx index a3c93556f..f36eb57e2 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx @@ -2,7 +2,6 @@ description: | The post-processor block defines how a post-processor is configured. page_title: post-processor - build - Blocks -sidebar_title: post-processor --- # The `post-processor` block diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx index 801b72e61..1ce8e7e5f 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx @@ -3,7 +3,6 @@ description: > The post-processors block allows to define lists of post-processors to apply to an artifact. page_title: post-processors - build - Blocks -sidebar_title: post-processors --- # The `post-processors` block diff --git a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx index 3cce21156..7842a4eda 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx @@ -2,7 +2,6 @@ description: | The provisioner block defines how a provisioner is configured. page_title: provisioner - build - Blocks -sidebar_title: provisioner --- # The `provisioner` block diff --git a/website/content/docs/templates/hcl_templates/blocks/build/source.mdx b/website/content/docs/templates/hcl_templates/blocks/build/source.mdx index b927e197e..07663f8e3 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/source.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/source.mdx @@ -4,7 +4,6 @@ description: > source and to set specific fields which aren't already set in the top-level source block. page_title: source - build - Blocks -sidebar_title: source --- # The `source` block diff --git a/website/content/docs/templates/hcl_templates/blocks/data.mdx b/website/content/docs/templates/hcl_templates/blocks/data.mdx index 1740e8dba..2bad0adbf 100644 --- a/website/content/docs/templates/hcl_templates/blocks/data.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/data.mdx @@ -2,7 +2,6 @@ description: > The data block defines data sources within your Packer configuration. page_title: data - Blocks -sidebar_title: data --- # The `data` block diff --git a/website/content/docs/templates/hcl_templates/blocks/index.mdx b/website/content/docs/templates/hcl_templates/blocks/index.mdx index ca5df5cfb..5e3c4b22f 100644 --- a/website/content/docs/templates/hcl_templates/blocks/index.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/index.mdx @@ -1,6 +1,5 @@ --- page_title: Blocks - Configuration Language -sidebar_title: Blocks description: The HCL language has a number of blocks that can be used to configure builds. --- @@ -12,20 +11,21 @@ The Packer - HCL2 language includes a number of built-in blocks that you can use to configure builds. A block is a container for configuration. The most important blocks can be broken into a couple of major types: - * `build` blocks contain configuration for a specific combination of builders, - provisioners, and post-processors used to create a specific image artifact. - * `source` blocks contain configuration for builder plugins. Once defined, - sources can be used and further configured by the "build" block. - * `provisioner` blocks contain configuration for provisioner plugins. These - blocks are nested inside of a build block. - * `post-processor` and `post-processors` blocks contain configuration for - post-processor plugins and post-processor plugin sequences. They are also - nested within `build` blocks. - * `variable` blocks contain configuration for variables that can either be - defaulted in configuration or set by the user at runtime. - * `locals` blocks contain configuration for variables that can be created using - HCL functions or data sources, or composited from variables created in the - variables blocks. + +- `build` blocks contain configuration for a specific combination of builders, + provisioners, and post-processors used to create a specific image artifact. +- `source` blocks contain configuration for builder plugins. Once defined, + sources can be used and further configured by the "build" block. +- `provisioner` blocks contain configuration for provisioner plugins. These + blocks are nested inside of a build block. +- `post-processor` and `post-processors` blocks contain configuration for + post-processor plugins and post-processor plugin sequences. They are also + nested within `build` blocks. +- `variable` blocks contain configuration for variables that can either be + defaulted in configuration or set by the user at runtime. +- `locals` blocks contain configuration for variables that can be created using + HCL functions or data sources, or composited from variables created in the + variables blocks. Use the sidebar to navigate to detailed documentation for each of these blocks. diff --git a/website/content/docs/templates/hcl_templates/blocks/locals.mdx b/website/content/docs/templates/hcl_templates/blocks/locals.mdx index fbe027dec..d9ee768a6 100644 --- a/website/content/docs/templates/hcl_templates/blocks/locals.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/locals.mdx @@ -3,7 +3,6 @@ description: > The locals block also called the local-variable block defines locals within your Packer configuration. page_title: locals - Blocks -sidebar_title: locals --- # The `locals` block diff --git a/website/content/docs/templates/hcl_templates/blocks/packer.mdx b/website/content/docs/templates/hcl_templates/blocks/packer.mdx index b88d761b8..7fa8156f1 100644 --- a/website/content/docs/templates/hcl_templates/blocks/packer.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/packer.mdx @@ -1,6 +1,5 @@ --- page_title: packer - Blocks -sidebar_title: packer description: |- The "packer" configuration section is used to configure some behaviors of Packer itself. diff --git a/website/content/docs/templates/hcl_templates/blocks/source.mdx b/website/content/docs/templates/hcl_templates/blocks/source.mdx index 8a0d3bbd1..3358a6ae1 100644 --- a/website/content/docs/templates/hcl_templates/blocks/source.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/source.mdx @@ -2,7 +2,6 @@ description: | The top-level source block defines reusable builder configuration blocks page_title: source - Blocks -sidebar_title: source --- # The `source` block diff --git a/website/content/docs/templates/hcl_templates/blocks/variable.mdx b/website/content/docs/templates/hcl_templates/blocks/variable.mdx index 946637c05..e7d1df180 100644 --- a/website/content/docs/templates/hcl_templates/blocks/variable.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/variable.mdx @@ -3,7 +3,6 @@ description: > The variable block, also called the input-variable block, defines variables within your Packer configuration. page_title: variable - Blocks -sidebar_title: variable --- # The `variable` block diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index 1bc7152c9..929218f14 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -1,6 +1,5 @@ --- page_title: Contextual Variables - HCL Configuration Language -sidebar_title: Contextual Variables description: >- Special variables provide connection information and basic instance state information. diff --git a/website/content/docs/templates/hcl_templates/datasources.mdx b/website/content/docs/templates/hcl_templates/datasources.mdx index 6c6dc4eec..4703b86b5 100644 --- a/website/content/docs/templates/hcl_templates/datasources.mdx +++ b/website/content/docs/templates/hcl_templates/datasources.mdx @@ -1,6 +1,5 @@ --- page_title: Data Sources -sidebar_title: Data Sources description: >- Data sources allow data to be fetched or computed for use elsewhere in local variables and build sources configuration. Use of data sources @@ -46,6 +45,7 @@ identifier, like `data...`. The output from the `amazon-ami.example` above can be accessed as follows: Output data: + ``` "data.amazon-ami.example" { id = "ami12345" diff --git a/website/content/docs/templates/hcl_templates/expressions.mdx b/website/content/docs/templates/hcl_templates/expressions.mdx index 9156397d3..4e60a2d22 100644 --- a/website/content/docs/templates/hcl_templates/expressions.mdx +++ b/website/content/docs/templates/hcl_templates/expressions.mdx @@ -1,6 +1,5 @@ --- page_title: Expressions - Configuration Language -sidebar_title: Expressions description: |- HCL allows the use of expressions to access data exported by sources and to transform and combine that data to produce other values. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/chunklist.mdx b/website/content/docs/templates/hcl_templates/functions/collection/chunklist.mdx index 634604d9f..66658bfcd 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/chunklist.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/chunklist.mdx @@ -1,6 +1,5 @@ --- page_title: chunklist - Functions - Configuration Language -sidebar_title: chunklist description: |- The chunklist function splits a single list into fixed-size chunks, returning a list of lists. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx b/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx index a32c6d62d..12f2f26b0 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx @@ -1,6 +1,5 @@ --- page_title: coalesce - Functions - Configuration Language -sidebar_title: coalesce description: |- The coalesce function takes any number of arguments and returns the first one that isn't null nor empty. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx b/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx index d849889e4..219e8d098 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx @@ -1,6 +1,5 @@ --- page_title: coalescelist - Functions - Configuration Language -sidebar_title: coalescelist description: |- The coalescelist function takes any number of list arguments and returns the first one that isn't empty. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/compact.mdx b/website/content/docs/templates/hcl_templates/functions/collection/compact.mdx index 5fae284a0..df8b79e75 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/compact.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/compact.mdx @@ -1,6 +1,5 @@ --- page_title: compact - Functions - Configuration Language -sidebar_title: compact description: The compact function removes empty string elements from a list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/concat.mdx b/website/content/docs/templates/hcl_templates/functions/collection/concat.mdx index 26ced6faa..318b72fa0 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/concat.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/concat.mdx @@ -1,6 +1,5 @@ --- page_title: concat - Functions - Configuration Language -sidebar_title: concat description: The concat function combines two or more lists into a single list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/contains.mdx b/website/content/docs/templates/hcl_templates/functions/collection/contains.mdx index b81b175e7..43cdd5c5d 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/contains.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/contains.mdx @@ -1,6 +1,5 @@ --- page_title: contains - Functions - Configuration Language -sidebar_title: contains description: The contains function determines whether a list or set contains a given value. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/distinct.mdx b/website/content/docs/templates/hcl_templates/functions/collection/distinct.mdx index 084205cc0..28fe7a448 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/distinct.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/distinct.mdx @@ -1,6 +1,5 @@ --- page_title: distinct - Functions - Configuration Language -sidebar_title: distinct description: The distinct function removes duplicate elements from a list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/element.mdx b/website/content/docs/templates/hcl_templates/functions/collection/element.mdx index e9ebe4030..038b47d94 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/element.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/element.mdx @@ -1,6 +1,5 @@ --- page_title: element - Functions - Configuration Language -sidebar_title: element description: The element function retrieves a single element from a list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx b/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx index 4192ee993..bf7871fe2 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx @@ -1,6 +1,5 @@ --- page_title: flatten - Functions - Configuration Language -sidebar_title: flatten description: The flatten function eliminates nested lists from a list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx b/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx index 4f49f4691..b9457a6c7 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx @@ -1,6 +1,5 @@ --- page_title: index - Functions - Configuration Language -sidebar_title: index description: The index function finds the element index for a given value in a list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/index.mdx b/website/content/docs/templates/hcl_templates/functions/collection/index.mdx index d53ac2936..b925718c2 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/index.mdx @@ -1,5 +1,4 @@ --- page_title: Collection - Functions - Configuration Language -sidebar_title: Collection Functions description: Overview of available collection functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx b/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx index 8130d1473..58bebaf7c 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx @@ -1,6 +1,5 @@ --- page_title: keys - Functions - Configuration Language -sidebar_title: keys description: The keys function returns a list of the keys in a given map. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/length.mdx b/website/content/docs/templates/hcl_templates/functions/collection/length.mdx index 6dead1dcd..71eacc8dc 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/length.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/length.mdx @@ -1,6 +1,5 @@ --- page_title: length - Functions - Configuration Language -sidebar_title: length description: The length function determines the length of a collection or string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx b/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx index d7589523c..c01fddd0e 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx @@ -1,6 +1,5 @@ --- page_title: lookup - Functions - Configuration Language -sidebar_title: lookup description: The lookup function retrieves an element value from a map given its key. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/merge.mdx b/website/content/docs/templates/hcl_templates/functions/collection/merge.mdx index 492b1a180..e6ac8b7a6 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/merge.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/merge.mdx @@ -1,6 +1,5 @@ --- page_title: merge - Functions - Configuration Language -sidebar_title: merge description: |- The merge function takes an arbitrary number of maps and returns a single map after merging the keys from each argument. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/range.mdx b/website/content/docs/templates/hcl_templates/functions/collection/range.mdx index de665f56d..9ddf0af0e 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/range.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/range.mdx @@ -1,6 +1,5 @@ --- page_title: range - Functions - Configuration Language -sidebar_title: range description: The range function generates sequences of numbers. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx b/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx index 9fc6a79a0..e591dc16d 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx @@ -1,6 +1,5 @@ --- page_title: reverse - Functions - Configuration Language -sidebar_title: reverse description: The reverse function reverses a sequence. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx b/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx index f337bc2e5..4234ea78b 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx @@ -1,6 +1,5 @@ --- page_title: setintersection - Functions - Configuration Language -sidebar_title: setintersection description: |- The setintersection function takes multiple sets and produces a single set containing only the elements that all of the given sets have in common. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx b/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx index 948eec63c..2da2ea0aa 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx @@ -1,6 +1,5 @@ --- page_title: setproduct - Functions - Configuration Language -sidebar_title: setproduct description: |- The setproduct function finds all of the possible combinations of elements from all of the given sets by computing the cartesian product. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx b/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx index 5b520e60f..5dce94c78 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx @@ -1,6 +1,5 @@ --- page_title: setunion - Functions - Configuration Language -sidebar_title: setunion description: |- The setunion function takes multiple sets and produces a single set containing the elements from all of the given sets. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx b/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx index 1ac456abd..eea7d7c12 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx @@ -1,6 +1,5 @@ --- page_title: slice - Functions - Configuration Language -sidebar_title: slice description: The slice function extracts some consecutive elements from within a list. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/sort.mdx b/website/content/docs/templates/hcl_templates/functions/collection/sort.mdx index 2ff414394..edc3dd99f 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/sort.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/sort.mdx @@ -1,6 +1,5 @@ --- page_title: sort - Functions - Configuration Language -sidebar_title: sort description: |- The sort function takes a list of strings and returns a new list with those strings sorted lexicographically. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/values.mdx b/website/content/docs/templates/hcl_templates/functions/collection/values.mdx index 56ee00264..a362d09c2 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/values.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/values.mdx @@ -1,6 +1,5 @@ --- page_title: values - Functions - Configuration Language -sidebar_title: values description: The values function returns a list of the element values in a given map. --- diff --git a/website/content/docs/templates/hcl_templates/functions/collection/zipmap.mdx b/website/content/docs/templates/hcl_templates/functions/collection/zipmap.mdx index 93bb98d51..fbdcb6a75 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/zipmap.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/zipmap.mdx @@ -1,6 +1,5 @@ --- page_title: zipmap - Functions - Configuration Language -sidebar_title: zipmap description: |- The zipmap function constructs a map from a list of keys and a corresponding list of values. diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx index 74c3b3b5b..edc09053a 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx @@ -1,6 +1,5 @@ --- page_title: aws_secretsmanager - Functions - Configuration Language -sidebar_title: aws_secretsmanager description: >- The aws_secretsmanager function retrieves secrets from Amazon secretsmanager stores. diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx index 3f4c50895..c40a525f1 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx @@ -1,6 +1,5 @@ --- page_title: consul - Functions - Configuration Language -sidebar_title: consul description: The consul function retrieves secrets from HashiCorp consul KV stores. --- diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx index 3f9f447b4..1085fe92a 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx @@ -1,6 +1,5 @@ --- page_title: env - Functions - Configuration Language -sidebar_title: env description: The env function retrieves environment values for input variables. --- diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/index.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/index.mdx index 2748a27c4..c7996fdf0 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/index.mdx @@ -1,5 +1,4 @@ --- page_title: Contextual - Functions - Configuration Language -sidebar_title: Contextual Functions description: Overview of available Contextual functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx index 1439717b8..0b29de1eb 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx @@ -1,6 +1,5 @@ --- page_title: vault - Functions - Configuration Language -sidebar_title: vault description: The vault function retrieves secrets from HashiCorp Vault KV stores. --- diff --git a/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx b/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx index af820b188..e3e80c772 100644 --- a/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx +++ b/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx @@ -1,6 +1,5 @@ --- page_title: can - Functions - Configuration Language -sidebar_title: can description: |- The can function tries to evaluate an expression given as an argument and indicates whether the evaluation succeeded. diff --git a/website/content/docs/templates/hcl_templates/functions/conversion/convert.mdx b/website/content/docs/templates/hcl_templates/functions/conversion/convert.mdx index 220beb511..5cb90d157 100644 --- a/website/content/docs/templates/hcl_templates/functions/conversion/convert.mdx +++ b/website/content/docs/templates/hcl_templates/functions/conversion/convert.mdx @@ -1,6 +1,5 @@ --- page_title: convert - Functions - Configuration Language -sidebar_title: convert description: 'The convert function converts a value or an expression to a given type. ' --- diff --git a/website/content/docs/templates/hcl_templates/functions/conversion/index.mdx b/website/content/docs/templates/hcl_templates/functions/conversion/index.mdx index 42754a534..929c54c1b 100644 --- a/website/content/docs/templates/hcl_templates/functions/conversion/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/conversion/index.mdx @@ -1,5 +1,4 @@ --- page_title: conversion - Functions - Configuration Language -sidebar_title: Type Conversion Functions description: Overview of available conversion functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx b/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx index 73ee55086..4dc68d863 100644 --- a/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx +++ b/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx @@ -1,6 +1,5 @@ --- page_title: try - Functions - Configuration Language -sidebar_title: try description: |- The try function tries to evaluate a sequence of expressions given as arguments and returns the result of the first one that does not produce diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/bcrypt.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/bcrypt.mdx index 71182b794..c49779c2c 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/bcrypt.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/bcrypt.mdx @@ -1,6 +1,5 @@ --- page_title: bcrypt - Functions - Configuration Language -sidebar_title: bcrypt description: |- The bcrypt function computes a hash of the given string using the Blowfish cipher. diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/index.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/index.mdx index 25fe5efeb..dfb20c3f7 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/index.mdx @@ -1,5 +1,4 @@ --- page_title: crypto - Functions - Configuration Language -sidebar_title: Hash and Crypto Functions description: Overview of available crypto functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/md5.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/md5.mdx index 045486ecb..f777aa65d 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/md5.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/md5.mdx @@ -1,6 +1,5 @@ --- page_title: md5 - Functions - Configuration Language -sidebar_title: md5 description: |- The md5 function computes the MD5 hash of a given string and encodes it with hexadecimal digits. diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/rsadecrypt.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/rsadecrypt.mdx index 9f64e5ad6..59339c651 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/rsadecrypt.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/rsadecrypt.mdx @@ -1,6 +1,5 @@ --- page_title: rsadecrypt - Functions - Configuration Language -sidebar_title: rsadecrypt description: The rsadecrypt function decrypts an RSA-encrypted message. --- diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/sha1.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/sha1.mdx index 69143bba5..a001654fa 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/sha1.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/sha1.mdx @@ -1,6 +1,5 @@ --- page_title: sha1 - Functions - Configuration Language -sidebar_title: sha1 description: |- The sha1 function computes the SHA1 hash of a given string and encodes it with hexadecimal digits. diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/sha256.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/sha256.mdx index 5f870b846..06133dba3 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/sha256.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/sha256.mdx @@ -1,6 +1,5 @@ --- page_title: sha256 - Functions - Configuration Language -sidebar_title: sha256 description: |- The sha256 function computes the SHA256 hash of a given string and encodes it with hexadecimal digits. diff --git a/website/content/docs/templates/hcl_templates/functions/crypto/sha512.mdx b/website/content/docs/templates/hcl_templates/functions/crypto/sha512.mdx index ed8c207f0..3d58ecf90 100644 --- a/website/content/docs/templates/hcl_templates/functions/crypto/sha512.mdx +++ b/website/content/docs/templates/hcl_templates/functions/crypto/sha512.mdx @@ -1,6 +1,5 @@ --- page_title: sha512 - Functions - Configuration Language -sidebar_title: sha512 description: |- The sha512 function computes the SHA512 hash of a given string and encodes it with hexadecimal digits. diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx index 43dd61746..f4fd6ae82 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx @@ -1,6 +1,5 @@ --- page_title: formatdate - Functions - Configuration Language -sidebar_title: formatdate description: The formatdate function converts a timestamp into a different time format. --- diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/index.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/index.mdx index 899891fa6..79438f886 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/index.mdx @@ -1,5 +1,4 @@ --- page_title: datetime - Functions - Configuration Language -sidebar_title: Date and Time Functions description: Overview of available datetime functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx index 885a39cc0..db1cfde5a 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx @@ -1,6 +1,5 @@ --- page_title: timeadd - Functions - Configuration Language -sidebar_title: timeadd description: |- The timeadd function adds a duration to a timestamp, returning a new timestamp. diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx index 935229f86..5336e77f7 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx @@ -1,6 +1,5 @@ --- page_title: timestamp - Functions - Configuration Language -sidebar_title: timestamp description: |- The timestamp function returns a string representation of the current date and time. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx index 614fbe7ea..37832a0f6 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx @@ -1,6 +1,5 @@ --- page_title: base64decode - Functions - Configuration Language -sidebar_title: base64decode description: The base64decode function decodes a string containing a base64 sequence. --- diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx index 7592924f8..c79efc8d8 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx @@ -1,6 +1,5 @@ --- page_title: base64encode - Functions - Configuration Language -sidebar_title: base64encode description: The base64encode function applies Base64 encoding to a string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx index a6bbefa54..d8653a4c7 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx @@ -1,6 +1,5 @@ --- page_title: csvdecode - Functions - Configuration Language -sidebar_title: csvdecode description: The csvdecode function decodes CSV data into a list of maps. --- diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/index.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/index.mdx index 362eb49f2..8728d72b6 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/index.mdx @@ -1,5 +1,4 @@ --- page_title: encoding - Functions - Configuration Language -sidebar_title: Encoding Functions description: Overview of available encoding functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx index 5f80eb349..e8696b7e9 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx @@ -1,6 +1,5 @@ --- page_title: jsondecode - Functions - Configuration Language -sidebar_title: jsondecode description: |- The jsondecode function decodes a JSON string into a representation of its value. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx index 39e0e066c..e5c02f891 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx @@ -1,6 +1,5 @@ --- page_title: jsonencode - Functions - Configuration Language -sidebar_title: jsonencode description: The jsonencode function encodes a given value as a JSON string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/urlencode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/urlencode.mdx index 9d83891bc..a2b8de5cc 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/urlencode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/urlencode.mdx @@ -1,6 +1,5 @@ --- page_title: urlencode - Functions - Configuration Language -sidebar_title: urlencode description: The urlencode function applies URL encoding to a given string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx index 8d5b1f06a..cb853e66a 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx @@ -1,6 +1,5 @@ --- page_title: yamldecode - Functions - Configuration Language -sidebar_title: yamldecode description: |- The yamldecode function decodes a YAML string into a representation of its value. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx index 378732916..1a11a2238 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx @@ -1,6 +1,5 @@ --- page_title: yamlencode - Functions - Configuration Language -sidebar_title: yamlencode description: The yamlencode function encodes a given value as a YAML string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx b/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx index 83ef68ae1..243327e5b 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx @@ -1,6 +1,5 @@ --- page_title: abspath - Functions - Configuration Language -sidebar_title: abspath description: The abspath function converts the argument to an absolute filesystem path. --- diff --git a/website/content/docs/templates/hcl_templates/functions/file/basename.mdx b/website/content/docs/templates/hcl_templates/functions/file/basename.mdx index dae3631c4..c77be75b6 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/basename.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/basename.mdx @@ -1,6 +1,5 @@ --- page_title: basename - Functions - Configuration Language -sidebar_title: basename description: |- The basename function removes all except the last portion from a filesystem path. diff --git a/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx b/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx index 8c0c2b16c..cb3b42a6e 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx @@ -1,6 +1,5 @@ --- page_title: dirname - Functions - Configuration Language -sidebar_title: dirname description: The dirname function removes the last portion from a filesystem path. --- diff --git a/website/content/docs/templates/hcl_templates/functions/file/file.mdx b/website/content/docs/templates/hcl_templates/functions/file/file.mdx index a89821474..3b146a3b7 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/file.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/file.mdx @@ -1,6 +1,5 @@ --- page_title: file - Functions - Configuration Language -sidebar_title: file description: |- The file function reads the contents of the file at the given path and returns them as a string. diff --git a/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx b/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx index 9d7ae7207..772b79236 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx @@ -1,6 +1,5 @@ --- page_title: fileexists - Functions - Configuration Language -sidebar_title: fileexists description: The fileexists function determines whether a file exists at a given path. --- diff --git a/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx b/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx index 5aa9e38e1..227a46873 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx @@ -1,6 +1,5 @@ --- page_title: fileset - Functions - Configuration Language -sidebar_title: fileset description: The fileset function enumerates a set of regular file names given a pattern. --- diff --git a/website/content/docs/templates/hcl_templates/functions/file/index.mdx b/website/content/docs/templates/hcl_templates/functions/file/index.mdx index cd976d5c4..b54f222b6 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/index.mdx @@ -1,5 +1,4 @@ --- page_title: filesystem - Functions - Configuration Language -sidebar_title: Filesystem Functions description: Overview of available filesystem functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/file/pathexpand.mdx b/website/content/docs/templates/hcl_templates/functions/file/pathexpand.mdx index 5c50ddecc..974716c8f 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/pathexpand.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/pathexpand.mdx @@ -1,6 +1,5 @@ --- page_title: pathexpand - Functions - Configuration Language -sidebar_title: pathexpand description: |- The pathexpand function expands a leading ~ character to the current user's home directory. diff --git a/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx b/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx index 7d07133bd..38629d98e 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx @@ -1,6 +1,5 @@ --- page_title: templatefile - Functions - Configuration Language -sidebar_title: templatefile description: |- The templatefile function reads the file at the given path and renders its content as a template using a supplied set of template variables. @@ -8,8 +7,8 @@ description: |- # `templatefile` Function --> *Recommendation:* we recommend using the `.pkrtpl.hcl` file extension when -using the `templatefile` function. Template files *are* hcl treated as files but +-> _Recommendation:_ we recommend using the `.pkrtpl.hcl` file extension when +using the `templatefile` function. Template files _are_ hcl treated as files but also templates and therefore have slightly different set of features than the ones offered in a `.pkr.hcl` Packer template. While you are not required to use this extension, doing so will enable syntax highlighters to @@ -52,6 +51,7 @@ Given a template file backends.tpl with the following content: backend ${addr}:${port} %{ endfor ~} ``` + The templatefile function renders the template: ```shell-session @@ -63,12 +63,15 @@ backend 10.0.0.2:8080 ### Maps Given a template file config.tmpl with the following content: + ```hcl %{ for config_key, config_value in config } set ${config_key} = ${config_value} %{ endfor ~} ``` + The templatefile function renders the template: + ```shell-session > templatefile( "${path.root}/config.tmpl", @@ -114,12 +117,13 @@ by using a for expression rather than by using template directives. ``` {"backends":["10.0.0.1:8080","10.0.0.2:8080"]} ``` + If the resulting template is small, you can choose instead to write jsonencode or yamlencode calls inline in your main configuration files, and avoid creating separate template files at all: locals { - backend_config_json = jsonencode({ - "backends": [for addr in ip_addrs : "${addr}:${port}"], - }) +backend_config_json = jsonencode({ +"backends": [for addr in ip_addrs : "${addr}:${port}"], +}) } For more information, see the main documentation for jsonencode and yamlencode. diff --git a/website/content/docs/templates/hcl_templates/functions/index.mdx b/website/content/docs/templates/hcl_templates/functions/index.mdx index 8dd41ea43..3fffd5018 100644 --- a/website/content/docs/templates/hcl_templates/functions/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/index.mdx @@ -1,6 +1,5 @@ --- page_title: Functions - Configuration Language -sidebar_title: Functions description: |- The HCL language has a number of built-in functions that can be called from within expressions to transform and combine values. diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx index 50347aeda..e8096807e 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx @@ -1,6 +1,5 @@ --- page_title: cidrhost - Functions - Configuration Language -sidebar_title: cidrhost description: |- The cidrhost function calculates a full host IP address within a given IP network address prefix. diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrnetmask.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrnetmask.mdx index 599305cb8..fbb43eec4 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrnetmask.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrnetmask.mdx @@ -1,6 +1,5 @@ --- page_title: cidrnetmask - Functions - Configuration Language -sidebar_title: cidrnetmask description: |- The cidrnetmask function converts an IPv4 address prefix given in CIDR notation into a subnet mask address. diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx index 5e1ca17bc..388ce65db 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx @@ -1,6 +1,5 @@ --- page_title: cidrsubnet - Functions - Configuration Language -sidebar_title: cidrsubnet description: |- The cidrsubnet function calculates a subnet address within a given IP network address prefix. diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/index.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/index.mdx index 202b5841c..b221f2eb5 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/index.mdx @@ -1,5 +1,4 @@ --- page_title: ipnet - Functions - Configuration Language -sidebar_title: IP Network Functions description: Overview of available ipnet functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/abs.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/abs.mdx index b838b0c98..023b41557 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/abs.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/abs.mdx @@ -1,6 +1,5 @@ --- page_title: abs - Functions - Configuration Language -sidebar_title: abs description: The abs function returns the absolute value of the given number. --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx index 0267a25fe..6701d086f 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx @@ -1,6 +1,5 @@ --- page_title: ceil - Functions - Configuration Language -sidebar_title: ceil description: |- The ceil function returns the closest whole number greater than or equal to the given value. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx index b99be6beb..0737b8155 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx @@ -1,6 +1,5 @@ --- page_title: floor - Functions - Configuration Language -sidebar_title: floor description: |- The floor function returns the closest whole number less than or equal to the given value. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/index.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/index.mdx index 7ad30a6b0..7c552d619 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/index.mdx @@ -1,5 +1,4 @@ --- page_title: Numeric - Functions - Configuration Language -sidebar_title: Numeric Functions description: Overview of available numeric functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/log.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/log.mdx index 42588586a..c63952e05 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/log.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/log.mdx @@ -1,6 +1,5 @@ --- page_title: log - Functions - Configuration Language -sidebar_title: log description: The log function returns the logarithm of a given number in a given base. --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx index dd8120133..3de1e4d09 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx @@ -1,6 +1,5 @@ --- page_title: max - Functions - Configuration Language -sidebar_title: max description: The max function takes one or more numbers and returns the greatest number. --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx index a5fd48da1..53894266b 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx @@ -1,6 +1,5 @@ --- page_title: min - Functions - Configuration Language -sidebar_title: min description: The min function takes one or more numbers and returns the smallest number. --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx index 9a58dcc88..3ab7892b7 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx @@ -1,6 +1,5 @@ --- page_title: parseint - Functions - Configuration Language -sidebar_title: parseint description: >- The parseint function parses the given string as a representation of an integer. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/pow.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/pow.mdx index e745cfe95..e8702cba9 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/pow.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/pow.mdx @@ -1,6 +1,5 @@ --- page_title: pow - Functions - Configuration Language -sidebar_title: pow description: The pow function raises a number to a power. --- diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/signum.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/signum.mdx index e4af2b1eb..1caf69883 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/signum.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/signum.mdx @@ -1,6 +1,5 @@ --- page_title: signum - Functions - Configuration Language -sidebar_title: signum description: The signum function determines the sign of a number. --- diff --git a/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx b/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx index 509d63a63..3c902dec1 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx @@ -1,6 +1,5 @@ --- page_title: chomp - Functions - Configuration Language -sidebar_title: chomp description: The chomp function removes newline characters at the end of a string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/string/format.mdx b/website/content/docs/templates/hcl_templates/functions/string/format.mdx index fe0f31971..ce0cbd0c3 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/format.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/format.mdx @@ -1,6 +1,5 @@ --- page_title: format - Functions - Configuration Language -sidebar_title: format description: |- The format function produces a string by formatting a number of other values according to a specification string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx b/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx index a4bd9584f..f13cad182 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx @@ -1,6 +1,5 @@ --- page_title: formatlist - Functions - Configuration Language -sidebar_title: formatlist description: |- The formatlist function produces a list of strings by formatting a number of other values according to a specification string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/indent.mdx b/website/content/docs/templates/hcl_templates/functions/string/indent.mdx index 60dcdf756..158a22a49 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/indent.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/indent.mdx @@ -1,6 +1,5 @@ --- page_title: indent - Functions - Configuration Language -sidebar_title: indent description: |- The indent function adds a number of spaces to the beginnings of all but the first line of a given multi-line string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/index.mdx b/website/content/docs/templates/hcl_templates/functions/string/index.mdx index 9b2cef305..1bf908374 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/index.mdx @@ -1,5 +1,4 @@ --- page_title: string - Functions - Configuration Language -sidebar_title: String Functions description: Overview of available string functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/string/join.mdx b/website/content/docs/templates/hcl_templates/functions/string/join.mdx index 56cd19d99..96c0a6f0e 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/join.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/join.mdx @@ -1,6 +1,5 @@ --- page_title: join - Functions - Configuration Language -sidebar_title: join description: |- The join function produces a string by concatenating the elements of a list with a given delimiter. diff --git a/website/content/docs/templates/hcl_templates/functions/string/lower.mdx b/website/content/docs/templates/hcl_templates/functions/string/lower.mdx index b5616a902..4fbf6b1f8 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/lower.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/lower.mdx @@ -1,6 +1,5 @@ --- page_title: lower - Functions - Configuration Language -sidebar_title: lower description: >- The lower function converts all cased letters in the given string to lowercase. diff --git a/website/content/docs/templates/hcl_templates/functions/string/regex.mdx b/website/content/docs/templates/hcl_templates/functions/string/regex.mdx index 4ec51133c..571344254 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regex.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regex.mdx @@ -1,6 +1,5 @@ --- page_title: regex - Functions - Configuration Language -sidebar_title: regex description: |- The regex function applies a regular expression to a string and returns the matching substrings. @@ -31,7 +30,7 @@ It's not valid to mix both named and unnamed capture groups in the same pattern. If the given pattern does not match at all, the `regex` raises an error. To _test_ whether a given pattern matches a string, use -[`regexall`](./regexall) and test that the result has length greater than +[`regexall`](/docs/templates/hcl_templates/functions/string/regexall) and test that the result has length greater than zero. The pattern is a string containing a mixture of literal characters and special @@ -41,54 +40,54 @@ language, the quoted string itself already uses backslash `\` as an escape character for the string, so any backslashes intended to be recognized as part of the pattern must be escaped as `\\`. -| Sequence | Matches | -| -------------- | -------------------------------------------------------------------------------- | -| `.` | Any character except newline | -| `[xyz]` | Any character listed between the brackets (`x`, `y`, and `z` in this example) | -| `[a-z]` | Any character between `a` and `z`, inclusive | -| `[^xyz]` | The opposite of `[xyz]` | -| `\d` | ASCII digits (0 through 9, inclusive) | -| `\D` | Anything except ASCII digits | -| `\s` | ASCII spaces (space, tab, newline, carriage return, form feed) | -| `\S` | Anything except ASCII spaces | -| `\w` | The same as `[0-9A-Za-z_]` | -| `\W` | Anything except the characters matched by `\w` | -| `[[:alnum:]]` | The same as `[0-9A-Za-z]` | -| `[[:alpha:]]` | The same as `[A-Za-z]` | -| `[[:ascii:]]` | Any ASCII character | -| `[[:blank:]]` | ASCII tab or space | -| `[[:cntrl:]]` | ASCII/Unicode control characters | -| `[[:digit:]]` | The same as `[0-9]` | -| `[[:graph:]]` | All "graphical" (printable) ASCII characters | -| `[[:lower:]]` | The same as `[a-z]` | -| `[[:print:]]` | The same as `[[:graph:]]` | -| `[[:punct:]]` | The same as `` [!-/:-@[-`{-~] `` | -| `[[:space:]]` | The same as `[\t\n\v\f\r ]` | -| `[[:upper:]]` | The same as `[A-Z]` | -| `[[:word:]]` | The same as `\w` | -| `[[:xdigit:]]` | The same as `[0-9A-Fa-f]` | -| `\pN` | Unicode character class by using single-letter class names ("N" in this example) | -| `\p{Greek}` | Unicode character class by unicode name ("Greek" in this example) | -| `\PN` | The opposite of `\pN` | -| `\P{Greek}` | The opposite of `\p{Greek}` | -| `xy` | `x` followed immediately by `y` | -| x|y | either `x` or `y`, preferring `x` | -| `x*` | zero or more `x`, preferring more | -| `x*?` | zero or more `x`, preferring fewer | -| `x+` | one or more `x`, preferring more | -| `x+?` | one or more `x`, preferring fewer | -| `x?` | zero or one `x`, preferring one | -| `x??` | zero or one `x`, preferring zero | -| `x{n,m}` | between `n` and `m` repetitions of `x`, preferring more | -| `x{n,m}?` | between `n` and `m` repetitions of `x`, preferring fewer | -| `x{n,}` | at least `n` repetitions of `x`, preferring more | -| `x{n,}?` | at least `n` repetitions of `x`, preferring fewer | -| `x{n}` | exactly `n` repetitions of `x` | -| `(x)` | unnamed capture group for sub-pattern `x` | -| `(?Px)` | named capture group, named `name`, for sub-pattern `x` | -| `(?:x)` | non-capturing sub-pattern `x` | -| `\*` | Literal `*` for any punctuation character `*` | -| `\Q...\E` | Literal `...` for any text `...` as long as it does not include literally `\E` | +| Sequence | Matches | +| --------------------- | -------------------------------------------------------------------------------- | +| `.` | Any character except newline | +| `[xyz]` | Any character listed between the brackets (`x`, `y`, and `z` in this example) | +| `[a-z]` | Any character between `a` and `z`, inclusive | +| `[^xyz]` | The opposite of `[xyz]` | +| `\d` | ASCII digits (0 through 9, inclusive) | +| `\D` | Anything except ASCII digits | +| `\s` | ASCII spaces (space, tab, newline, carriage return, form feed) | +| `\S` | Anything except ASCII spaces | +| `\w` | The same as `[0-9A-Za-z_]` | +| `\W` | Anything except the characters matched by `\w` | +| `[[:alnum:]]` | The same as `[0-9A-Za-z]` | +| `[[:alpha:]]` | The same as `[A-Za-z]` | +| `[[:ascii:]]` | Any ASCII character | +| `[[:blank:]]` | ASCII tab or space | +| `[[:cntrl:]]` | ASCII/Unicode control characters | +| `[[:digit:]]` | The same as `[0-9]` | +| `[[:graph:]]` | All "graphical" (printable) ASCII characters | +| `[[:lower:]]` | The same as `[a-z]` | +| `[[:print:]]` | The same as `[[:graph:]]` | +| `[[:punct:]]` | The same as `` [!-/:-@[-`{-~] `` | +| `[[:space:]]` | The same as `[\t\n\v\f\r ]` | +| `[[:upper:]]` | The same as `[A-Z]` | +| `[[:word:]]` | The same as `\w` | +| `[[:xdigit:]]` | The same as `[0-9A-Fa-f]` | +| `\pN` | Unicode character class by using single-letter class names ("N" in this example) | +| `\p{Greek}` | Unicode character class by unicode name ("Greek" in this example) | +| `\PN` | The opposite of `\pN` | +| `\P{Greek}` | The opposite of `\p{Greek}` | +| `xy` | `x` followed immediately by `y` | +| x|y | either `x` or `y`, preferring `x` | +| `x*` | zero or more `x`, preferring more | +| `x*?` | zero or more `x`, preferring fewer | +| `x+` | one or more `x`, preferring more | +| `x+?` | one or more `x`, preferring fewer | +| `x?` | zero or one `x`, preferring one | +| `x??` | zero or one `x`, preferring zero | +| `x{n,m}` | between `n` and `m` repetitions of `x`, preferring more | +| `x{n,m}?` | between `n` and `m` repetitions of `x`, preferring fewer | +| `x{n,}` | at least `n` repetitions of `x`, preferring more | +| `x{n,}?` | at least `n` repetitions of `x`, preferring fewer | +| `x{n}` | exactly `n` repetitions of `x` | +| `(x)` | unnamed capture group for sub-pattern `x` | +| `(?Px)` | named capture group, named `name`, for sub-pattern `x` | +| `(?:x)` | non-capturing sub-pattern `x` | +| `\*` | Literal `*` for any punctuation character `*` | +| `\Q...\E` | Literal `...` for any text `...` as long as it does not include literally `\E` | In addition to the above matching operators that consume the characters they match, there are some additional operators that _only_ match, but consume @@ -153,8 +152,8 @@ string. ## Related Functions -- [`regexall`](./regexall) searches for potentially multiple matches of a given pattern in a string. -- [`replace`](./replace) replaces a substring of a string with another string, optionally matching using the same regular expression syntax as `regex`. +- [`regexall`](/docs/templates/hcl_templates/functions/string/regexall) searches for potentially multiple matches of a given pattern in a string. +- [`replace`](/docs/templates/hcl_templates/functions/string/replace) replaces a substring of a string with another string, optionally matching using the same regular expression syntax as `regex`. If Packer already has a more specialized function to parse the syntax you are trying to match, prefer to use that function instead. Regular expressions diff --git a/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx b/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx index 6f3a2b48e..a679a2bc7 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx @@ -1,6 +1,5 @@ --- page_title: regex_replace - Functions - Configuration Language -sidebar_title: regex_replace description: >- The regex_replace function searches a given string for another given substring, diff --git a/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx b/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx index 3dac57bff..6722588a8 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx @@ -1,6 +1,5 @@ --- page_title: regexall - Functions - Configuration Language -sidebar_title: regexall description: |- The regexall function applies a regular expression to a string and returns a list of all matches. --- @@ -15,7 +14,7 @@ to a string and returns a list of all matches. regexall(pattern, string) ``` -`regexall` is a variant of [`regex`](./regex) and uses the same pattern +`regexall` is a variant of [`regex`](/docs/templates/hcl_templates/functions/string/regex) and uses the same pattern syntax. For any given input to `regex`, `regexall` returns a list of whatever type `regex` would've returned, with one element per match. That is: @@ -48,7 +47,7 @@ false ## Related Functions -- [`regex`](./regex) searches for a single match of a given pattern, and +- [`regex`](/docs/templates/hcl_templates/functions/string/regex) searches for a single match of a given pattern, and returns an error if no match is found. If Packer already has a more specialized function to parse the syntax you diff --git a/website/content/docs/templates/hcl_templates/functions/string/replace.mdx b/website/content/docs/templates/hcl_templates/functions/string/replace.mdx index 1d459a251..2490a6ce0 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/replace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/replace.mdx @@ -1,6 +1,5 @@ --- page_title: replace - Functions - Configuration Language -sidebar_title: replace description: |- The replace function searches a given string for another given substring, and replaces all occurrences with a given replacement string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/split.mdx b/website/content/docs/templates/hcl_templates/functions/string/split.mdx index 540834d3e..0b19f6811 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/split.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/split.mdx @@ -1,6 +1,5 @@ --- page_title: split - Functions - Configuration Language -sidebar_title: split description: |- The split function produces a list by dividing a given string at all occurrences of a given separator. diff --git a/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx b/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx index ab4c0cedd..035fbd069 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx @@ -1,6 +1,5 @@ --- page_title: strrev - Functions - Configuration Language -sidebar_title: strrev description: The strrev function reverses a string. --- diff --git a/website/content/docs/templates/hcl_templates/functions/string/substr.mdx b/website/content/docs/templates/hcl_templates/functions/string/substr.mdx index 1f1b3ee38..594feb28e 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/substr.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/substr.mdx @@ -1,6 +1,5 @@ --- page_title: substr - Functions - Configuration Language -sidebar_title: substr description: |- The substr function extracts a substring from a given string by offset and length. diff --git a/website/content/docs/templates/hcl_templates/functions/string/title.mdx b/website/content/docs/templates/hcl_templates/functions/string/title.mdx index fba689afa..bb1b9454e 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/title.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/title.mdx @@ -1,6 +1,5 @@ --- page_title: title - Functions - Configuration Language -sidebar_title: title description: |- The title function converts the first letter of each word in a given string to uppercase. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trim.mdx b/website/content/docs/templates/hcl_templates/functions/string/trim.mdx index 843e3c6a3..273388a44 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trim.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trim.mdx @@ -1,6 +1,5 @@ --- page_title: trim - Functions - Configuration Language -sidebar_title: trim description: |- The trim function removes the specified characters from the start and end of a given string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx b/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx index 96602a719..337662d2b 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx @@ -1,6 +1,5 @@ --- page_title: trimprefix - Functions - Configuration Language -sidebar_title: trimprefix description: |- The trimprefix function removes the specified prefix from the start of a given string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx b/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx index fe962bf5f..aa7317756 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx @@ -1,6 +1,5 @@ --- page_title: trimspace - Functions - Configuration Language -sidebar_title: trimspace description: |- The trimspace function removes space characters from the start and end of a given string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx b/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx index ac4749761..8385f5d97 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx @@ -1,6 +1,5 @@ --- page_title: trimsuffix - Functions - Configuration Language -sidebar_title: trimsuffix description: |- The trimsuffix function removes the specified suffix from the end of a given string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/upper.mdx b/website/content/docs/templates/hcl_templates/functions/string/upper.mdx index b712a2d89..172da4e32 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/upper.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/upper.mdx @@ -1,6 +1,5 @@ --- page_title: upper - Functions - Configuration Language -sidebar_title: upper description: >- The upper function converts all cased letters in the given string to uppercase. diff --git a/website/content/docs/templates/hcl_templates/functions/uuid/index.mdx b/website/content/docs/templates/hcl_templates/functions/uuid/index.mdx index 970b48fb0..c6bb94926 100644 --- a/website/content/docs/templates/hcl_templates/functions/uuid/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/uuid/index.mdx @@ -1,5 +1,4 @@ --- page_title: uuid - Functions - Configuration Language -sidebar_title: UUID Functions description: Overview of available uuid functions --- diff --git a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx index 70dbce513..c1e608861 100644 --- a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx +++ b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx @@ -1,6 +1,5 @@ --- page_title: v4 - uuid - Functions - Configuration Language -sidebar_title: uuidv4 description: The uuidv4 function generates a unique id. --- diff --git a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx index d5935c418..f115915ee 100644 --- a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx +++ b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx @@ -1,6 +1,5 @@ --- page_title: uuidv5 - Functions - Configuration Language -sidebar_title: uuidv5 description: |- The uuidv5 function generates a uuid v5 string representation of the value in the specified namespace. diff --git a/website/content/docs/templates/hcl_templates/index.mdx b/website/content/docs/templates/hcl_templates/index.mdx index d01c1e482..d460b771b 100644 --- a/website/content/docs/templates/hcl_templates/index.mdx +++ b/website/content/docs/templates/hcl_templates/index.mdx @@ -1,6 +1,5 @@ --- page_title: HCL Templates -sidebar_title: HCL Templates description: |- Packer uses text files to describe infrastructure and to set variables. These text files are called Packer _configurations_ and are diff --git a/website/content/docs/templates/hcl_templates/locals.mdx b/website/content/docs/templates/hcl_templates/locals.mdx index 4e59ec863..18edef193 100644 --- a/website/content/docs/templates/hcl_templates/locals.mdx +++ b/website/content/docs/templates/hcl_templates/locals.mdx @@ -1,6 +1,5 @@ --- page_title: Local Values - HCL Configuration Language -sidebar_title: Locals description: >- Local values assign a name to an expression that can then be used multiple times within a folder. diff --git a/website/content/docs/templates/hcl_templates/onlyexcept.mdx b/website/content/docs/templates/hcl_templates/onlyexcept.mdx index 814b13ba5..34d6b1a78 100644 --- a/website/content/docs/templates/hcl_templates/onlyexcept.mdx +++ b/website/content/docs/templates/hcl_templates/onlyexcept.mdx @@ -1,6 +1,5 @@ --- page_title: Only Except - HCL Configuration Language -sidebar_title: Only Except description: >- Only and Except can be used as a command line argument to selectively run builds. Only and Except can also be used in a provisioner to not run it for a diff --git a/website/content/docs/templates/hcl_templates/path-variables.mdx b/website/content/docs/templates/hcl_templates/path-variables.mdx index e29010b4c..2d1598585 100644 --- a/website/content/docs/templates/hcl_templates/path-variables.mdx +++ b/website/content/docs/templates/hcl_templates/path-variables.mdx @@ -1,6 +1,5 @@ --- page_title: Path Variables - HCL Configuration Language -sidebar_title: Path Variables description: |- Special variables provide directory information. This page covers all path variables. diff --git a/website/content/docs/templates/hcl_templates/syntax-json.mdx b/website/content/docs/templates/hcl_templates/syntax-json.mdx index 3ae38fd09..13bc16854 100644 --- a/website/content/docs/templates/hcl_templates/syntax-json.mdx +++ b/website/content/docs/templates/hcl_templates/syntax-json.mdx @@ -1,6 +1,5 @@ --- page_title: JSON Configuration Syntax - Configuration Language -sidebar_title: JSON Syntax description: |- In addition to the native syntax that is most commonly used with Packer, the HCL language can also be expressed in a JSON-compatible syntax. @@ -117,14 +116,14 @@ Since JSON grammar is not able to represent all of the Packer language [expression syntax](/docs/templates/hcl_templates/expressions), JSON values interpreted as expressions are mapped as follows: -| JSON | Packer Language Interpretation | -| ------- | ----------------------------------------------------------------------------------------------------------------- | -| Boolean | A literal `bool` value. | -| Number | A literal `number` value. | +| JSON | Packer Language Interpretation | +| ------- | -------------------------------------------------------------------------------------------------------------------------------- | +| Boolean | A literal `bool` value. | +| Number | A literal `number` value. | | String | Parsed as a [string template](/docs/templates/hcl_templates/expressions#string-templates) and then evaluated as described below. | -| Object | Each property value is mapped per this table, producing an `object(...)` value with suitable attribute types. | -| Array | Each element is mapped per this table, producing a `tuple(...)` value with suitable element types. | -| Null | A literal `null`. | +| Object | Each property value is mapped per this table, producing an `object(...)` value with suitable attribute types. | +| Array | Each element is mapped per this table, producing a `tuple(...)` value with suitable element types. | +| Null | A literal `null`. | When a JSON string is encountered in a location where arbitrary expressions are expected, its value is first parsed as a [string template](/docs/templates/hcl_templates/expressions#string-templates) diff --git a/website/content/docs/templates/hcl_templates/syntax.mdx b/website/content/docs/templates/hcl_templates/syntax.mdx index b4f977c3f..e031dd630 100644 --- a/website/content/docs/templates/hcl_templates/syntax.mdx +++ b/website/content/docs/templates/hcl_templates/syntax.mdx @@ -1,6 +1,5 @@ --- page_title: Syntax - Configuration Language -sidebar_title: Syntax description: |- HCL has its own syntax, intended to combine declarative structure with expressions in a way that is easy for humans to read and diff --git a/website/content/docs/templates/hcl_templates/variables.mdx b/website/content/docs/templates/hcl_templates/variables.mdx index 3d303128a..8d45c2dea 100644 --- a/website/content/docs/templates/hcl_templates/variables.mdx +++ b/website/content/docs/templates/hcl_templates/variables.mdx @@ -1,6 +1,5 @@ --- page_title: Input Variables - HCL Configuration Language -sidebar_title: Variables description: |- Input variables are parameters for Packer modules. This page covers configuration syntax for variables. diff --git a/website/content/docs/templates/legacy_json_templates/builders.mdx b/website/content/docs/templates/legacy_json_templates/builders.mdx index 19ed9f4d4..8357b4ca1 100644 --- a/website/content/docs/templates/legacy_json_templates/builders.mdx +++ b/website/content/docs/templates/legacy_json_templates/builders.mdx @@ -5,7 +5,6 @@ description: > that Packer should use to generate machine images for the template. page_title: Builders - Templates -sidebar_title: Builders --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/templates/legacy_json_templates/communicator.mdx b/website/content/docs/templates/legacy_json_templates/communicator.mdx index 8ed47cbf7..5f45a6c57 100644 --- a/website/content/docs/templates/legacy_json_templates/communicator.mdx +++ b/website/content/docs/templates/legacy_json_templates/communicator.mdx @@ -3,7 +3,6 @@ description: | Communicators are the mechanism Packer uses to upload files, execute scripts, etc. with the machine being created. page_title: Communicators - Templates -sidebar_title: Communicators --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/templates/legacy_json_templates/engine.mdx b/website/content/docs/templates/legacy_json_templates/engine.mdx index 0868f84a6..7eb644fe0 100644 --- a/website/content/docs/templates/legacy_json_templates/engine.mdx +++ b/website/content/docs/templates/legacy_json_templates/engine.mdx @@ -4,7 +4,6 @@ description: | engine, where variables and functions can be used to modify the value of a configuration parameter at runtime. page_title: Template Engine - Templates -sidebar_title: Engine --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/templates/legacy_json_templates/index.mdx b/website/content/docs/templates/legacy_json_templates/index.mdx index a7020ee58..642ad3ec5 100644 --- a/website/content/docs/templates/legacy_json_templates/index.mdx +++ b/website/content/docs/templates/legacy_json_templates/index.mdx @@ -7,7 +7,6 @@ description: > templates by hand, but also write scripts to dynamically create or modify templates. page_title: JSON Templates -sidebar_title: JSON Templates --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/templates/legacy_json_templates/post-processors.mdx b/website/content/docs/templates/legacy_json_templates/post-processors.mdx index 167ba4168..08dde1511 100644 --- a/website/content/docs/templates/legacy_json_templates/post-processors.mdx +++ b/website/content/docs/templates/legacy_json_templates/post-processors.mdx @@ -4,7 +4,6 @@ description: | that will be done to images built by the builders. Examples of post-processing would be compressing files, uploading artifacts, etc. page_title: Post-Processors - Templates -sidebar_title: Post-Processors --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/templates/legacy_json_templates/provisioners.mdx b/website/content/docs/templates/legacy_json_templates/provisioners.mdx index 74ad88ec8..0b78248cd 100644 --- a/website/content/docs/templates/legacy_json_templates/provisioners.mdx +++ b/website/content/docs/templates/legacy_json_templates/provisioners.mdx @@ -4,7 +4,6 @@ description: | provisioners that Packer should use to install and configure software within running machines prior to turning them into machine images. page_title: Provisioners - Templates -sidebar_title: Provisioners --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/templates/legacy_json_templates/user-variables.mdx b/website/content/docs/templates/legacy_json_templates/user-variables.mdx index c02ad9a97..f7eda22a5 100644 --- a/website/content/docs/templates/legacy_json_templates/user-variables.mdx +++ b/website/content/docs/templates/legacy_json_templates/user-variables.mdx @@ -6,7 +6,6 @@ description: | environment-specific data, and other types of information out of your templates. This maximizes the portability and shareability of the template. page_title: User Variables - Templates -sidebar_title: User Variables --- `@include 'from-1.5/legacy-json-warning.mdx'` diff --git a/website/content/docs/terminology.mdx b/website/content/docs/terminology.mdx index 464f0f898..52406a8ba 100644 --- a/website/content/docs/terminology.mdx +++ b/website/content/docs/terminology.mdx @@ -12,7 +12,6 @@ description: > for quick referencing. page_title: Terminology -sidebar_title: Terminology --- # Packer Terminology diff --git a/website/content/guides/1.7-plugin-upgrade.mdx b/website/content/guides/1.7-plugin-upgrade.mdx index 05687975f..d925d10de 100644 --- a/website/content/guides/1.7-plugin-upgrade.mdx +++ b/website/content/guides/1.7-plugin-upgrade.mdx @@ -1,6 +1,5 @@ --- page_title: Upgrading your plugin to use the Packer plugin sdk -sidebar_title: Upgrade Your Plugin to use the Packer plugin sdk --- # Upgrading your plugin to be compatible with Packer v1.7.0 and later @@ -58,7 +57,6 @@ func main() { With this single-component plugin binary you'd install it by putting it into the plugin directory with the name `packer-provisioner-foo`, and to access your provisioner in your Packer template, you would use the type `foo`. - To use the new multi-component server, you'll want to use the NewSet() function to create a server: ```go @@ -116,4 +114,3 @@ Once a plugin has been migrated to use the `packer-plugin-sdk` it can be release If you want Packer to be able to automatically install your plugin for your users via`packer init` -- the preferred method of installation -- you need to make the plugin available on GitHub in a repository named after the multi-component plugin. `https://github.com//packer-plugin-name`. We recognize that this may require you to rename or fork your plugin repository, but we think that it is worth the inconvenience to reduce ambiguity in the `init` call. See our documentation on [Creating a GitHub Release](/docs/plugins/creation#creating-a-github-release) for details on the recommended practice for releasing Packer plugins on GitHub. - diff --git a/website/content/guides/1.7-template-upgrade.mdx b/website/content/guides/1.7-template-upgrade.mdx index 3f27a894b..32b06c5a1 100644 --- a/website/content/guides/1.7-template-upgrade.mdx +++ b/website/content/guides/1.7-template-upgrade.mdx @@ -1,6 +1,5 @@ --- page_title: Upgrading your template to use Packer init -sidebar_title: Upgrade Your Template to use Packer init --- # Upgrading your template to be compatible with `packer init` @@ -28,7 +27,6 @@ We strongly encourage you to upgrade and start using `required_plugins` block wi installation, but if you prefer not to use the `required_plugins` block you can continue to [install plugins manually](/docs/plugins#installing-plugins). - ### What if you only use components that are built into the Packer core? You don't need `packer init` for this, as of v1.7.0. But it's a good idea to get familiar with the required_plugins @@ -44,8 +42,8 @@ version v5.0. The plugin repository on GitHub also needs to use a specific relea the plugin you use fits those requirements, you can reach out to your maintainer to ask. You can also look for clues that the plugin is ready for use with `packer init`: -* Check the plugin's CHANGELOG for notes about migrating to the packer-plugin-sdk. -* Check the name of the repository the plugin resides in. Chances are that if the repository follows the naming +- Check the plugin's CHANGELOG for notes about migrating to the packer-plugin-sdk. +- Check the name of the repository the plugin resides in. Chances are that if the repository follows the naming convention `packer-plugin-*` (e.g. `packer-plugin-comment`), then the plugin has been upgraded to be compatible with `packer init`. If the repository has a name that references a specific Packer component (for example, `packer-provisioner-*`, `packer-builder-*`, or `packer-post-processor-*`) then the plugin likely still needs to be @@ -67,8 +65,8 @@ maintainer-focused guide [here](/guides/1.7-plugin-upgrade). Check the table below to better understand whether your plugin is compatible with `packer init`, with manual installation, or with both for the the Packer version you are using. -| Packer Core Version | Single Component Plugin - API v4 | Single Component Plugin - API v5.0 | Multi Component Plugin - API v5.0 | -| ------------------- | ------------------------------------------------- | ------------------------------------------------- | -------------------------------------------------------- | +| Packer Core Version | Single Component Plugin - API v4 | Single Component Plugin - API v5.0 | Multi Component Plugin - API v5.0 | +| ------------------- | ------------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------- | | v1.5.0 to v1.6.6 | ✋ Plugin must be manually installed | ⛔ Plugin cannot be used with this Packer version | ⛔ Plugin cannot be used with this Packer version | | v1.7.0 | ⛔ Plugin cannot be used with this Packer version | ✋ Plugin must be manually installed | 📦 Plugin can be installed manually or with `packer init` | @@ -134,34 +132,36 @@ than `v0.2.23`. Finally, the local_name of the plugin will be `comment`, which m in the rest of the template. Here it is a brief explanation of each field: + - `version` - Should follow the [version constraints](/docs/templates/hcl_templates/blocks/packer#version-constraints). -- `source` - Should have the GitHub hostname, the plugin's organizational namespace, and its short name. -Packer will be responsible for determining the full GitHub +- `source` - Should have the GitHub hostname, the plugin's organizational namespace, and its short name. + Packer will be responsible for determining the full GitHub address. For example, if the source is `github.com/sylviamoss/comment`, Packer will download the binaries from `github.com/sylviamoss/packer-plugin-comment`. To learn more about the source field, check out the [Source Address](/docs/plugins#source-addresses) documentation. - `local_name`- Can be replaced with whatever you want, and the new value will become the name of the plugin. For example: - ```hcl - packer { - required_plugins { - bubbled_up = { - # ... - } - } - } - # ... + ```hcl + packer { + required_plugins { + bubbled_up = { + # ... + } + } + } - build { - # ... + # ... - provisioner "bubbled_up" { - # ... - } - } - ``` + build { + # ... + + provisioner "bubbled_up" { + # ... + } + } + ``` Once the template is upgraded, you can run `packer init example.pkr.hcl` and the output should tell you the installed plugin, and the place where it was installed. @@ -181,4 +181,3 @@ and won't need to run `init` again unless you want to upgrade the plugin version A template with a `required_plugins` block should **always** be initialised at least once with `packer init` before `packer build`. If the template is built before init, Packer will fail and ask for initialisation. - diff --git a/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx b/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx index 5a40114ed..a29b3cdd7 100644 --- a/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx +++ b/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx @@ -1,6 +1,5 @@ --- page_title: Unattended Windows Installation -sidebar_title: Unattended Installation for Windows description: |- Learn how to use an autounattend file to automatically answer installation questions and enable Packer to connect to your windows instnace. diff --git a/website/content/guides/automatic-operating-system-installs/index.mdx b/website/content/guides/automatic-operating-system-installs/index.mdx index 7f6b53e81..400ad9f46 100644 --- a/website/content/guides/automatic-operating-system-installs/index.mdx +++ b/website/content/guides/automatic-operating-system-installs/index.mdx @@ -1,6 +1,5 @@ --- page_title: Automatic OS Installs -sidebar_title: Automatic OS Installs description: |- Learn how to use preseed, kickstart, and autounattend files to automatically answer installation questions and enable Packer to connect to your instnace. diff --git a/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx b/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx index bb218f4ff..2c2a7b83b 100644 --- a/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx +++ b/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx @@ -1,6 +1,5 @@ --- page_title: Unattended Debian/Ubuntu Installation -sidebar_title: Unattended Installation for Debian description: |- Learn how to use a preseed file to automatically answer installation questions and enable Packer to connect to your Debian instnace. diff --git a/website/content/guides/hcl/component-object-spec.mdx b/website/content/guides/hcl/component-object-spec.mdx index d05df574d..257b8966a 100644 --- a/website/content/guides/hcl/component-object-spec.mdx +++ b/website/content/guides/hcl/component-object-spec.mdx @@ -1,6 +1,5 @@ --- page_title: Generating code for config spec. -sidebar_title: Making a plugin HCL2 enabled description: Learn how to generate the HCL2 configuration of your component easily. --- diff --git a/website/content/guides/hcl/from-json-v1.mdx b/website/content/guides/hcl/from-json-v1.mdx index 4ab3fa123..d0dbb0cae 100644 --- a/website/content/guides/hcl/from-json-v1.mdx +++ b/website/content/guides/hcl/from-json-v1.mdx @@ -1,6 +1,5 @@ --- page_title: Transforming Packer v1 files for Packer v1.5.0 -sidebar_title: From JSON v1 description: |- Learn how to manually move from a Packer v1 working JSON build file to a working v1.5.0 HCL file. diff --git a/website/content/guides/hcl/index.mdx b/website/content/guides/hcl/index.mdx index 456330bd8..7bdfc2d5a 100644 --- a/website/content/guides/hcl/index.mdx +++ b/website/content/guides/hcl/index.mdx @@ -1,6 +1,5 @@ --- page_title: Getting started configuring Packer with HCL2 files -sidebar_title: HCL guides --- # Introduction to Packer HCL2 diff --git a/website/content/guides/hcl/variables.mdx b/website/content/guides/hcl/variables.mdx index de240db73..6027ae5b9 100644 --- a/website/content/guides/hcl/variables.mdx +++ b/website/content/guides/hcl/variables.mdx @@ -1,6 +1,5 @@ --- page_title: Input and Local Variables guide -sidebar_title: Variables description: |- This page introduces input variables and local variables as a way to parameterize a configuration. diff --git a/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx b/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx index 69855749b..53f4c1d38 100644 --- a/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx +++ b/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx @@ -1,6 +1,5 @@ --- page_title: Build Images in CI/CD -sidebar_title: Build Images in CI/CD --- # Build Images in CI/CD diff --git a/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx b/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx index 9b4ea5b3e..86ad7c777 100644 --- a/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx +++ b/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx @@ -1,6 +1,5 @@ --- page_title: Build a VirtualBox Image with Packer in TeamCity -sidebar_title: Build a VirtualBox Image with Packer in TeamCity --- # Build a VirtualBox Image with Packer in TeamCity diff --git a/website/content/guides/packer-on-cicd/index.mdx b/website/content/guides/packer-on-cicd/index.mdx index 9edf9dc11..24719d954 100644 --- a/website/content/guides/packer-on-cicd/index.mdx +++ b/website/content/guides/packer-on-cicd/index.mdx @@ -1,6 +1,5 @@ --- page_title: Build Immutable Infrastructure with Packer in CI/CD -sidebar_title: Build Immutable Infrastructure with Packer in CI/CD --- # Build Immutable Infrastructure with Packer in CI/CD diff --git a/website/content/guides/packer-on-cicd/pipelineing-builds.mdx b/website/content/guides/packer-on-cicd/pipelineing-builds.mdx index 571962b43..9a8ee3ba2 100644 --- a/website/content/guides/packer-on-cicd/pipelineing-builds.mdx +++ b/website/content/guides/packer-on-cicd/pipelineing-builds.mdx @@ -1,6 +1,5 @@ --- page_title: Packer Build Pipelines -sidebar_title: Pipelineing Builds description: |- Here we explore how to break your builds into discrete steps so that your builds can be shorter and more reliable. diff --git a/website/content/guides/packer-on-cicd/trigger-tfe.mdx b/website/content/guides/packer-on-cicd/trigger-tfe.mdx index 0733198b1..6afe4bccc 100644 --- a/website/content/guides/packer-on-cicd/trigger-tfe.mdx +++ b/website/content/guides/packer-on-cicd/trigger-tfe.mdx @@ -1,6 +1,5 @@ --- page_title: Trigger Terraform Enterprise runs -sidebar_title: Trigger Terraform Enterprise runs --- # Create Terraform Enterprise Runs diff --git a/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx b/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx index cd4887e3a..f0486e7a2 100644 --- a/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx +++ b/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx @@ -1,6 +1,5 @@ --- page_title: Upload VirtualBox Image to S3 -sidebar_title: Upload a VirtualBox Image to S3 --- # Upload VirtualBox Image to S3 diff --git a/website/content/guides/workflow-tips-and-tricks/index.mdx b/website/content/guides/workflow-tips-and-tricks/index.mdx index a4e15bc8e..5d9ecdcce 100644 --- a/website/content/guides/workflow-tips-and-tricks/index.mdx +++ b/website/content/guides/workflow-tips-and-tricks/index.mdx @@ -1,6 +1,5 @@ --- page_title: Tips and Tricks -sidebar_title: Workflow Tips and Tricks description: |- The guides stored in this section are miscellanious tips and tricks that might make your experience of using Packer easier diff --git a/website/content/guides/workflow-tips-and-tricks/isotime-template-function.mdx b/website/content/guides/workflow-tips-and-tricks/isotime-template-function.mdx index a71f64fab..bd0c9d09f 100644 --- a/website/content/guides/workflow-tips-and-tricks/isotime-template-function.mdx +++ b/website/content/guides/workflow-tips-and-tricks/isotime-template-function.mdx @@ -1,6 +1,5 @@ --- page_title: Using the isotime template function - Guides -sidebar_title: Isotime Template Function description: |- It can be a bit confusing to figure out how to format your isotime using the golang reference date string. Here is a small guide and some examples. diff --git a/website/content/guides/workflow-tips-and-tricks/use-packer-with-comment.mdx b/website/content/guides/workflow-tips-and-tricks/use-packer-with-comment.mdx index 0a7b4a637..8ccaa6661 100644 --- a/website/content/guides/workflow-tips-and-tricks/use-packer-with-comment.mdx +++ b/website/content/guides/workflow-tips-and-tricks/use-packer-with-comment.mdx @@ -1,6 +1,5 @@ --- page_title: Use jq and Packer to comment your templates - Guides -sidebar_title: Use jq to strip comments from a Packer template description: |- You can add detailed comments beyond the root-level underscore-prefixed field supported by Packer, and remove them using jq. @@ -8,7 +7,6 @@ description: |- # How to use jq to strip unsupported comments from a Packer template - -> **Note:** Packer supports HCL2 from version 1.6.0, the Hashicorp Configuration Language allows to comment directly in template files. Consider upgrading your JSON template to HCL2 using the `packer hcl2_upgrade` command. diff --git a/website/content/guides/workflow-tips-and-tricks/veewee-to-packer.mdx b/website/content/guides/workflow-tips-and-tricks/veewee-to-packer.mdx index a082ccf36..2d842aea2 100644 --- a/website/content/guides/workflow-tips-and-tricks/veewee-to-packer.mdx +++ b/website/content/guides/workflow-tips-and-tricks/veewee-to-packer.mdx @@ -1,6 +1,5 @@ --- page_title: Convert Veewee Definitions to Packer Templates - Guides -sidebar_title: Veewee to Packer description: |- If you are or were a user of Veewee, then there is an official tool called veewee-to-packer that will convert your Veewee definition into an equivalent diff --git a/website/content/intro/use-cases.mdx b/website/content/intro/use-cases.mdx index 3f59588f3..d4f72f3a3 100644 --- a/website/content/intro/use-cases.mdx +++ b/website/content/intro/use-cases.mdx @@ -1,6 +1,5 @@ --- page_title: Use Cases - Introduction -sidebar_title: Use Cases description: |- By now you should know what Packer does and what the benefits of image creation are. In this section, we'll enumerate *some* of the use cases for diff --git a/website/content/intro/why.mdx b/website/content/intro/why.mdx index cf98064cf..ff8a31756 100644 --- a/website/content/intro/why.mdx +++ b/website/content/intro/why.mdx @@ -1,6 +1,5 @@ --- page_title: Why Packer - Introduction -sidebar_title: Why Use Packer? description: |- Pre-baked machine images have a lot of advantages, but most have been unable to benefit from them because images have been too tedious to create and diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 7bd22da62..f6d0a9419 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -320,6 +320,10 @@ "title": "flatten", "path": "templates/hcl_templates/functions/collection/flatten" }, + { + "title": "index", + "path": "templates/hcl_templates/functions/collection/index-fn" + }, { "title": "keys", "path": "templates/hcl_templates/functions/collection/keys" @@ -545,6 +549,10 @@ { "title": "cidrsubnet", "path": "templates/hcl_templates/functions/ipnet/cidrsubnet" + }, + { + "title": "cidrsubnets", + "path": "templates/hcl_templates/functions/ipnet/cidrsubnets" } ] }, diff --git a/website/package-lock.json b/website/package-lock.json index 927589763..2aceba777 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -2852,14 +2852,14 @@ "integrity": "sha512-AYIe6tcOxlKPe5Sq89o/Vk0rGE6Z1dCzf+N3ynECTh5L2A1zusf9xeM659QEh/edE/Ll9EBBLmq49sQXLNDxTw==" }, "@hashicorp/react-docs-page": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-11.0.1.tgz", - "integrity": "sha512-BZ746Qm97OQTyMPI7calYDb+LAQQZGTn/vZ8FaMXbVCF+X9Bvs1xYyWRDV6gV0mtgmlkCwYqIrmqneOZdd6PcA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-12.0.0.tgz", + "integrity": "sha512-t5HpVsENkUSpbs8Eb5odTVt+Ke2z/LDKiJgC9Jq3+mVtRDXZ0+w5X6XQic8xVRP5McmOKPqoSeqBmgLwIBm1WQ==", "requires": { "@hashicorp/react-content": "^6.3.0", "@hashicorp/react-docs-sidenav": "^7.0.0", "@hashicorp/react-head": "^1.2.0", - "@hashicorp/react-search": "^4.1.0", + "@hashicorp/react-search": "^4.2.0", "fs-exists-sync": "0.1.0", "gray-matter": "4.0.2", "js-yaml": "3.14.0", @@ -2877,28 +2877,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@hashicorp/react-head/-/react-head-1.2.0.tgz", "integrity": "sha512-6BNmhsrzVwJFOAcT3WhSeDlCdtlD3d7vzhXOGfkpPYVnYRaIpLLC6seemAr/wqZhYB87W+KvFilz8vZcpDAZzQ==" - }, - "@hashicorp/react-inline-svg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz", - "integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw==" - }, - "@hashicorp/react-search": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@hashicorp/react-search/-/react-search-4.1.0.tgz", - "integrity": "sha512-TZChez9q/4bn/flQXRo0h/9B0kDMvin759hd8+vRrt1M3Qhz2C1TKpfZRKrX6dFZI8w4obGm1EzUzR130gdFfQ==", - "requires": { - "@hashicorp/react-inline-svg": "^1.0.2", - "@hashicorp/remark-plugins": "^3.0.0", - "algoliasearch": "^4.8.4", - "dotenv": "^8.2.0", - "glob": "^7.1.6", - "gray-matter": "^4.0.2", - "react-instantsearch-dom": "^6.9.0", - "remark": "^12.0.1", - "search-insights": "^1.6.0", - "unist-util-visit": "^2.0.3" - } } } }, diff --git a/website/package.json b/website/package.json index db826733c..2e04e3ca1 100644 --- a/website/package.json +++ b/website/package.json @@ -7,7 +7,7 @@ "@hashicorp/mktg-global-styles": "2.1.0", "@hashicorp/nextjs-scripts": "16.3.0", "@hashicorp/react-button": "4.0.0", - "@hashicorp/react-docs-page": "11.0.1", + "@hashicorp/react-docs-page": "12.0.0", "@hashicorp/react-hashi-stack-menu": "^1.1.0", "@hashicorp/react-head": "1.1.6", "@hashicorp/react-inline-svg": "5.0.0", diff --git a/website/pages/docs/[[...page]].jsx b/website/pages/docs/[[...page]].jsx index 940086f9f..a1ea21264 100644 --- a/website/pages/docs/[[...page]].jsx +++ b/website/pages/docs/[[...page]].jsx @@ -8,17 +8,14 @@ import { generateStaticProps, } from 'components/remote-plugin-docs/server' -// Configure the docs path -const BASE_ROUTE = 'docs' -const NAV_DATA = 'data/docs-nav-data.json' -const CONTENT_DIR = 'content/docs' -const PRODUCT = { name: productName, slug: productSlug } -// add remote plugin docs loading -const OPTIONS = { - remotePluginsFile: 'data/docs-remote-plugins.json', - additionalComponents: { PluginTierLabel }, - mainBranch: 'master', -} +// Configure the docs path and remote plugin docs loading +const additionalComponents = { PluginTierLabel } +const baseRoute = 'docs' +const localContentDir = 'content/docs' +const mainBranch = 'master' +const navDataFile = 'data/docs-nav-data.json' +const product = { name: productName, slug: productSlug } +const remotePluginsFile = 'data/docs-remote-plugins.json' function DocsLayout({ isDevMissingRemotePlugins, ...props }) { return ( @@ -47,9 +44,9 @@ function DocsLayout({ isDevMissingRemotePlugins, ...props }) { ) : null} @@ -57,18 +54,24 @@ function DocsLayout({ isDevMissingRemotePlugins, ...props }) { } export async function getStaticPaths() { - const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR, OPTIONS) + const paths = await generateStaticPaths({ + localContentDir, + navDataFile, + remotePluginsFile, + }) return { paths, fallback: false } } export async function getStaticProps({ params }) { - const props = await generateStaticProps( - NAV_DATA, - CONTENT_DIR, + const props = await generateStaticProps({ + additionalComponents, + localContentDir, + mainBranch, + navDataFile, params, - PRODUCT, - OPTIONS - ) + product, + remotePluginsFile, + }) return { props } } diff --git a/website/pages/guides/[[...page]].jsx b/website/pages/guides/[[...page]].jsx index 3c90c1d45..90cb34a7d 100644 --- a/website/pages/guides/[[...page]].jsx +++ b/website/pages/guides/[[...page]].jsx @@ -7,30 +7,30 @@ import { } from '@hashicorp/react-docs-page/server' // Configure the docs path -const BASE_ROUTE = 'guides' -const NAV_DATA = 'data/guides-nav-data.json' -const CONTENT_DIR = 'content/guides' -const MAIN_BRANCH = 'master' -const PRODUCT = { name: productName, slug: productSlug } +const baseRoute = 'guides' +const navDataFile = 'data/guides-nav-data.json' +const localContentDir = 'content/guides' +const mainBranch = 'master' +const product = { name: productName, slug: productSlug } export default function GuidesLayout(props) { return ( - + ) } export async function getStaticPaths() { - const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR) + const paths = await generateStaticPaths({ localContentDir, navDataFile }) return { paths, fallback: false } } export async function getStaticProps({ params }) { - const props = await generateStaticProps( - NAV_DATA, - CONTENT_DIR, + const props = await generateStaticProps({ + localContentDir, + mainBranch, + navDataFile, params, - PRODUCT, - { mainBranch: MAIN_BRANCH } - ) + product, + }) return { props } } diff --git a/website/pages/intro/[[...page]].jsx b/website/pages/intro/[[...page]].jsx index 7a3a65c33..ced121f47 100644 --- a/website/pages/intro/[[...page]].jsx +++ b/website/pages/intro/[[...page]].jsx @@ -7,30 +7,30 @@ import { } from '@hashicorp/react-docs-page/server' // Configure the docs path -const BASE_ROUTE = 'intro' -const NAV_DATA = 'data/intro-nav-data.json' -const CONTENT_DIR = 'content/intro' -const MAIN_BRANCH = 'master' -const PRODUCT = { name: productName, slug: productSlug } +const baseRoute = 'intro' +const navDataFile = 'data/intro-nav-data.json' +const localContentDir = 'content/intro' +const mainBranch = 'master' +const product = { name: productName, slug: productSlug } export default function IntroLayout(props) { return ( - + ) } export async function getStaticPaths() { - const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR) + const paths = await generateStaticPaths({ localContentDir, navDataFile }) return { paths, fallback: false } } export async function getStaticProps({ params }) { - const props = await generateStaticProps( - NAV_DATA, - CONTENT_DIR, + const props = await generateStaticProps({ + localContentDir, + mainBranch, + navDataFile, params, - PRODUCT, - { mainBranch: MAIN_BRANCH } - ) + product, + }) return { props } } From fb04fa7a25173ad92f3072f13ee187542728da2c Mon Sep 17 00:00:00 2001 From: Brian Choy Date: Thu, 1 Apr 2021 06:18:06 -0700 Subject: [PATCH 198/212] Fix vault function docs example (#10851) The given example is missing a `,`. --- .../docs/templates/hcl_templates/functions/contextual/vault.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx index 0b29de1eb..5d4a7a020 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx @@ -17,7 +17,7 @@ can access it using the following: ```hcl locals { - foo = vault("/secret/data/hello" "foo") + foo = vault("/secret/data/hello", "foo") } ``` From c3e78d2c32338e82733aa6d9820dce32a6c2fac4 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 1 Apr 2021 13:48:41 -0400 Subject: [PATCH 199/212] Update error messaging to bypass panicwrap only on non-recoverable errors While working on this change it was found that prefixing an error message with the ErrorPrefix string would trigger a copyOutput function that would copy any outputted string to Stderr, until a new ErrorPrefix or Outprefix string is encountered in the output. During background runs of Packer an error message with the ErrorPrefix was being outputted which was causing all output, including Stdout, to be written to Stderr. This change updates the logic to only override the Stdout logging for non-recoverable errors. The idea being that any non-recoverable error should bypass panicwrap so that user know an error occurred. All other errors should follow the same behavior that we had prior to Packer v1.7.1. Closes #10855 --- main.go | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index df3e830f2..94ebf2b0c 100644 --- a/main.go +++ b/main.go @@ -152,6 +152,10 @@ func wrappedMain() int { // passed into commands like `packer build` config, err := loadConfig() if err != nil { + // Writing to Stdout here so that the error message bypasses panicwrap. By using the + // ErrorPrefix this output will be redirected to Stderr by the copyOutput func. + // TODO: nywilken need to revisit this setup to better output errors to Stderr, and output to Stdout + // without panicwrap fmt.Fprintf(os.Stdout, "%s Error loading configuration: \n\n%s\n", ErrorPrefix, err) return 1 } @@ -166,6 +170,10 @@ func wrappedMain() int { cacheDir, err := packersdk.CachePath() if err != nil { + // Writing to Stdout here so that the error message bypasses panicwrap. By using the + // ErrorPrefix this output will be redirected to Stderr by the copyOutput func. + // TODO: nywilken need to revisit this setup to better output errors to Stderr, and output to Stdout + // without panicwrap fmt.Fprintf(os.Stdout, "%s Error preparing cache directory: \n\n%s\n", ErrorPrefix, err) return 1 } @@ -187,6 +195,7 @@ func wrappedMain() int { // Set this so that we don't get colored output in our machine- // readable UI. if err := os.Setenv("PACKER_NO_COLOR", "1"); err != nil { + // Outputting error using Ui here to conform to the machine readable format. ui.Error(fmt.Sprintf("Packer failed to initialize UI: %s\n", err)) return 1 } @@ -202,12 +211,16 @@ func wrappedMain() int { currentPID := os.Getpid() backgrounded, err := checkProcess(currentPID) if err != nil { - ui.Error(fmt.Sprintf("cannot determine if process is in background: %s\n", err)) + // Writing to Stderr will ensure that the output gets captured by panicwrap. + // This error message and any other message writing to Stderr after this point will only show up with PACKER_LOG=1 + // TODO: nywilken need to revisit this setup to better output errors to Stderr, and output to Stdout without panicwrap. + fmt.Fprintf(os.Stderr, "%s cannot determine if process is in background: %s\n", ErrorPrefix, err) } + if backgrounded { - ui.Error("Running in background, not using a TTY\n") + fmt.Fprintf(os.Stderr, "%s Running in background, not using a TTY\n", ErrorPrefix) } else if TTY, err := openTTY(); err != nil { - ui.Error(fmt.Sprintf("No tty available: %s\n", err)) + fmt.Fprintf(os.Stderr, "%s No tty available: %s\n", ErrorPrefix, err) } else { basicUi.TTY = TTY basicUi.PB = &packer.UiProgressBar{} @@ -245,7 +258,11 @@ func wrappedMain() int { } if err != nil { - ui.Error(fmt.Sprintf("Error executing CLI: %s\n", err)) + // Writing to Stdout here so that the error message bypasses panicwrap. By using the + // ErrorPrefix this output will be redirected to Stderr by the copyOutput func. + // TODO: nywilken need to revisit this setup to better output errors to Stderr, and output to Stdout + // without panicwrap + fmt.Fprintf(os.Stdout, "%s Error executing CLI: %s\n", ErrorPrefix, err) return 1 } From 58fb58c2eaad958dc70b63b00023fa477a0e2cc8 Mon Sep 17 00:00:00 2001 From: Zachary Shilton <4624598+zchsh@users.noreply.github.com> Date: Fri, 2 Apr 2021 11:29:31 -0400 Subject: [PATCH 200/212] website: fix issue with bloated static props (#10860) * website: fix issue with bloated static props * website: remove script to check static props size --- .../components/remote-plugin-docs/server.js | 11 +++--- .../utils/resolve-nav-data.js | 35 ++++++++++++++----- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/website/components/remote-plugin-docs/server.js b/website/components/remote-plugin-docs/server.js index 8f871e3f0..6c1534a7c 100644 --- a/website/components/remote-plugin-docs/server.js +++ b/website/components/remote-plugin-docs/server.js @@ -28,11 +28,16 @@ async function generateStaticProps({ product, remotePluginsFile, }) { + // Build the currentPath from page parameters + const currentPath = params.page ? params.page.join('/') : '' + // Resolve navData, including the possibility that this + // page is a remote plugin docs, in which case we'll provide + // the MDX fileString in the resolved navData const navData = await resolveNavData(navDataFile, localContentDir, { remotePluginsFile, + currentPath, }) - const pathToMatch = params.page ? params.page.join('/') : '' - const navNode = getNodeFromPath(pathToMatch, navData, localContentDir) + const navNode = getNodeFromPath(currentPath, navData, localContentDir) const { filePath, remoteFile, pluginTier } = navNode // Fetch the MDX file content const mdxString = remoteFile @@ -59,8 +64,6 @@ async function generateStaticProps({ productName: product.name, mdxContentHook, }) - // Build the currentPath from page parameters - const currentPath = !params.page ? '' : params.page.join('/') return { currentPath, diff --git a/website/components/remote-plugin-docs/utils/resolve-nav-data.js b/website/components/remote-plugin-docs/utils/resolve-nav-data.js index 7bcd2b8fb..b3dd7502d 100644 --- a/website/components/remote-plugin-docs/utils/resolve-nav-data.js +++ b/website/components/remote-plugin-docs/utils/resolve-nav-data.js @@ -16,7 +16,7 @@ const validateRouteStructure = require('@hashicorp/react-docs-sidenav/utils/vali * @returns {array} the resolved navData. This includes NavBranch nodes pulled from remote plugin repositories, as well as filePath properties on all local NavLeaf nodes, and remoteFile properties on all NavLeafRemote nodes. */ async function resolveNavData(navDataFile, localContentDir, options = {}) { - const { remotePluginsFile } = options + const { remotePluginsFile, currentPath } = options // Read in files const navDataPath = path.join(process.cwd(), navDataFile) const navData = JSON.parse(fs.readFileSync(navDataPath, 'utf8')) @@ -24,7 +24,11 @@ async function resolveNavData(navDataFile, localContentDir, options = {}) { let withPlugins = navData if (remotePluginsFile) { // Resolve plugins, this yields branches with NavLeafRemote nodes - withPlugins = await mergeRemotePlugins(remotePluginsFile, navData) + withPlugins = await mergeRemotePlugins( + remotePluginsFile, + navData, + currentPath + ) } // Resolve local filePaths for NavLeaf nodes const withFilePaths = await validateFilePaths(withPlugins, localContentDir) @@ -40,14 +44,16 @@ async function resolveNavData(navDataFile, localContentDir, options = {}) { // fetch and parse all remote plugin docs, merge them into the // broader tree of docs navData, and return the docs navData // with the merged plugin docs -async function mergeRemotePlugins(remotePluginsFile, navData) { +async function mergeRemotePlugins(remotePluginsFile, navData, currentPath) { // Read in and parse the plugin configuration JSON const remotePluginsPath = path.join(process.cwd(), remotePluginsFile) const pluginEntries = JSON.parse(fs.readFileSync(remotePluginsPath, 'utf-8')) // Add navData for each plugin's component. // Note that leaf nodes include a remoteFile property object with the full MDX fileString const pluginEntriesWithDocs = await Promise.all( - pluginEntries.map(resolvePluginEntryDocs) + pluginEntries.map( + async (entry) => await resolvePluginEntryDocs(entry, currentPath) + ) ) // group navData by component type, to prepare to merge plugin docs // into the broader tree of navData. @@ -113,7 +119,7 @@ async function mergeRemotePlugins(remotePluginsFile, navData) { return { ...n, routes: routesWithPlugins } }) // return the merged navData, which now includes special NavLeaf nodes - // for plugin docs with { filePath, fileString } remoteFile properties + // for plugin docs with remoteFile properties return navDataWithPlugins } @@ -125,7 +131,7 @@ async function mergeRemotePlugins(remotePluginsFile, navData) { // Note that navData leaf nodes have a special remoteFile property, // which contains { filePath, fileString } data for the remote // plugin doc .mdx file -async function resolvePluginEntryDocs(pluginConfigEntry) { +async function resolvePluginEntryDocs(pluginConfigEntry, currentPath) { const { title, path: slug, repo, version } = pluginConfigEntry const docsMdxFiles = await fetchPluginDocs({ repo, tag: version }) // We construct a special kind of "NavLeaf" node, with a remoteFile property, @@ -192,8 +198,21 @@ async function resolvePluginEntryDocs(pluginConfigEntry) { const prefixedPath = path.join(pathPrefix, n.path) return { ...n, path: prefixedPath } }) - // - return { type, navData: withPrefixedPaths } + // If currentPath is provided, then remove the remoteFile + // from all nodes except the currentPath. This ensures we deliver + // only a single fileString in our getStaticProps JSON. + // Without this optimization, we would send all fileStrings + // for all NavLeafRemote nodes + const withOptimizedFileStrings = visitNavLeaves(withPrefixedPaths, (n) => { + if (!n.remoteFile) return n + const noCurrentPath = typeof currentPath === 'undefined' + const isPathMatch = currentPath === n.path + if (noCurrentPath || isPathMatch) return n + const { filePath } = n.remoteFile + return { ...n, remoteFile: { filePath } } + }) + // Return the component, with processed navData + return { type, navData: withOptimizedFileStrings } }) const componentsObj = components.reduce((acc, component) => { if (!component) return acc From 794e83b171af516781af93e7adc27bc63d1b4170 Mon Sep 17 00:00:00 2001 From: mmassez Date: Fri, 2 Apr 2021 20:37:20 +0200 Subject: [PATCH 201/212] Proxmox builder return first ipv4 address (#10858) * Check if IP address is IPv4 before returning it Returns the first IPv4 address instead of the first IP address which is an IPv6 for Windows VMs * Updated the go module * Reversed the order of checks First check if it's a loopback and check for ipv4 afterwards --- builder/proxmox/common/builder.go | 3 +++ go.mod | 2 +- go.sum | 4 ++-- vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go | 2 +- .../github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go | 5 +++++ vendor/modules.txt | 2 +- 6 files changed, 13 insertions(+), 5 deletions(-) diff --git a/builder/proxmox/common/builder.go b/builder/proxmox/common/builder.go index 9a9e9585b..13f24d998 100644 --- a/builder/proxmox/common/builder.go +++ b/builder/proxmox/common/builder.go @@ -158,6 +158,9 @@ func getVMIP(state multistep.StateBag) (string, error) { if addr.IsLoopback() { continue } + if addr.To4() == nil { + continue + } return addr.String(), nil } } diff --git a/go.mod b/go.mod index 6fb81f885..877ab63f0 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Azure/go-autorest/autorest/to v0.3.0 github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022 github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.0 - github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0 + github.com/Telmate/proxmox-api-go v0.0.0-20210331182840-ff89a0cebcfa github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190418113227-25233c783f4e github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20170113022742-e6dbea820a9f github.com/antihax/optional v1.0.0 diff --git a/go.sum b/go.sum index 94759493e..fe34b7020 100644 --- a/go.sum +++ b/go.sum @@ -82,8 +82,8 @@ github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.0/go.mod h1:P+3VS0ETiQPyWOx3 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/Telmate/proxmox-api-go v0.0.0-20200715182505-ec97c70ba887/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= -github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0 h1:LeBf+Ex12uqA6dWZp73Qf3dzpV/LvB9SRmHgPBwnXrQ= -github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0/go.mod h1:ayPkdmEKnlssqLQ9K1BE1jlsaYhXVwkoduXI30oQF0I= +github.com/Telmate/proxmox-api-go v0.0.0-20210331182840-ff89a0cebcfa h1:n4g0+o4DDX6WGTRfdj1Ux+49vSwtxtqFGB5XtxoDphI= +github.com/Telmate/proxmox-api-go v0.0.0-20210331182840-ff89a0cebcfa/go.mod h1:ayPkdmEKnlssqLQ9K1BE1jlsaYhXVwkoduXI30oQF0I= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go index e69c467b0..ee4acf327 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/client.go @@ -301,7 +301,7 @@ func (a *AgentNetworkInterface) UnmarshalJSON(b []byte) error { a.IPAddresses = make([]net.IP, len(intermediate.IPAddresses)) for idx, ip := range intermediate.IPAddresses { - a.IPAddresses[idx] = net.ParseIP(ip.IPAddress) + a.IPAddresses[idx] = net.ParseIP((strings.Split(ip.IPAddress, "%"))[0]) if a.IPAddresses[idx] == nil { return fmt.Errorf("Could not parse %s as IP", ip.IPAddress) } diff --git a/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go b/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go index 2609ca9af..dfa0b7434 100644 --- a/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go +++ b/vendor/github.com/Telmate/proxmox-api-go/proxmox/config_qemu.go @@ -628,6 +628,11 @@ func NewConfigQemuFromApi(vmr *VmRef, client *Client) (config *ConfigQemu, err e diskConfMap["storage_type"] = storageType + // cloud-init disks not always have the size sent by the API, which results in a crash + if diskConfMap["size"] == nil && strings.Contains(fileName.(string), "cloudinit") { + diskConfMap["size"] = "4M" // default cloud-init disk size + } + // Convert to gigabytes if disk size was received in terabytes sizeIsInTerabytes, err := regexp.MatchString("[0-9]+T", diskConfMap["size"].(string)) if err != nil { diff --git a/vendor/modules.txt b/vendor/modules.txt index 16678557a..218da3526 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -78,7 +78,7 @@ github.com/NaverCloudPlatform/ncloud-sdk-go-v2/ncloud github.com/NaverCloudPlatform/ncloud-sdk-go-v2/services/server # github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d github.com/StackExchange/wmi -# github.com/Telmate/proxmox-api-go v0.0.0-20210320143302-fea68269e6b0 +# github.com/Telmate/proxmox-api-go v0.0.0-20210331182840-ff89a0cebcfa ## explicit github.com/Telmate/proxmox-api-go/proxmox # github.com/agext/levenshtein v1.2.1 From d81c02b4563383aeb449d31ec0476380de1ac53c Mon Sep 17 00:00:00 2001 From: Sylvia Moss Date: Fri, 2 Apr 2021 20:41:11 +0200 Subject: [PATCH 202/212] Fix primary disk resize on clone and add tests (#10848) * Fix primary disk resize on clone and add tests * remove commented tests --- builder/vsphere/clone/step_clone.go | 33 ++- builder/vsphere/clone/step_clone_test.go | 251 +++++++++++++++++++++++ builder/vsphere/driver/driver_mock.go | 10 +- builder/vsphere/driver/vm.go | 58 +++--- builder/vsphere/driver/vm_mock.go | 11 +- builder/vsphere/driver/vm_test.go | 94 ++++++++- 6 files changed, 398 insertions(+), 59 deletions(-) create mode 100644 builder/vsphere/clone/step_clone_test.go diff --git a/builder/vsphere/clone/step_clone.go b/builder/vsphere/clone/step_clone.go index d29fefc61..c0def3269 100644 --- a/builder/vsphere/clone/step_clone.go +++ b/builder/vsphere/clone/step_clone.go @@ -75,7 +75,7 @@ type StepCloneVM struct { func (s *StepCloneVM) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { ui := state.Get("ui").(packersdk.Ui) - d := state.Get("driver").(*driver.VCenterDriver) + d := state.Get("driver").(driver.Driver) vmPath := path.Join(s.Location.Folder, s.Location.VMName) err := d.PreCleanVM(ui, vmPath, s.Force) @@ -102,17 +102,18 @@ func (s *StepCloneVM) Run(ctx context.Context, state multistep.StateBag) multist } vm, err := template.Clone(ctx, &driver.CloneConfig{ - Name: s.Location.VMName, - Folder: s.Location.Folder, - Cluster: s.Location.Cluster, - Host: s.Location.Host, - ResourcePool: s.Location.ResourcePool, - Datastore: s.Location.Datastore, - LinkedClone: s.Config.LinkedClone, - Network: s.Config.Network, - MacAddress: s.Config.MacAddress, - Annotation: s.Config.Notes, - VAppProperties: s.Config.VAppConfig.Properties, + Name: s.Location.VMName, + Folder: s.Location.Folder, + Cluster: s.Location.Cluster, + Host: s.Location.Host, + ResourcePool: s.Location.ResourcePool, + Datastore: s.Location.Datastore, + LinkedClone: s.Config.LinkedClone, + Network: s.Config.Network, + MacAddress: s.Config.MacAddress, + Annotation: s.Config.Notes, + VAppProperties: s.Config.VAppConfig.Properties, + PrimaryDiskSize: s.Config.DiskSize, StorageConfig: driver.StorageConfig{ DiskControllerType: s.Config.StorageConfig.DiskControllerType, Storage: disks, @@ -127,14 +128,6 @@ func (s *StepCloneVM) Run(ctx context.Context, state multistep.StateBag) multist } state.Put("vm", vm) - if s.Config.DiskSize > 0 { - err = vm.ResizeDisk(s.Config.DiskSize) - if err != nil { - state.Put("error", err) - return multistep.ActionHalt - } - } - return multistep.ActionContinue } diff --git a/builder/vsphere/clone/step_clone_test.go b/builder/vsphere/clone/step_clone_test.go new file mode 100644 index 000000000..9b23ea443 --- /dev/null +++ b/builder/vsphere/clone/step_clone_test.go @@ -0,0 +1,251 @@ +package clone + +import ( + "bytes" + "context" + "path" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/hashicorp/packer-plugin-sdk/multistep" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer/builder/vsphere/common" + "github.com/hashicorp/packer/builder/vsphere/driver" +) + +func TestCreateConfig_Prepare(t *testing.T) { + tc := []struct { + name string + config *CloneConfig + fail bool + expectedErrMsg string + }{ + { + name: "Valid config", + config: &CloneConfig{ + Template: "template name", + StorageConfig: common.StorageConfig{ + DiskControllerType: []string{"test"}, + Storage: []common.DiskConfig{ + { + DiskSize: 0, + }, + }, + }, + }, + fail: true, + expectedErrMsg: "storage[0].'disk_size' is required", + }, + { + name: "Storage validate disk_size", + config: &CloneConfig{ + StorageConfig: common.StorageConfig{ + Storage: []common.DiskConfig{ + { + DiskSize: 0, + DiskThinProvisioned: true, + }, + }, + }, + }, + fail: true, + expectedErrMsg: "storage[0].'disk_size' is required", + }, + { + name: "Storage validate disk_controller_index", + config: &CloneConfig{ + StorageConfig: common.StorageConfig{ + Storage: []common.DiskConfig{ + { + DiskSize: 32768, + DiskControllerIndex: 3, + }, + }, + }, + }, + fail: true, + expectedErrMsg: "storage[0].'disk_controller_index' references an unknown disk controller", + }, + { + name: "Validate template is set", + config: &CloneConfig{ + StorageConfig: common.StorageConfig{ + DiskControllerType: []string{"test"}, + Storage: []common.DiskConfig{ + { + DiskSize: 32768, + }, + }, + }, + }, + fail: true, + expectedErrMsg: "'template' is required", + }, + { + name: "Validate LinkedClone and DiskSize set at the same time", + config: &CloneConfig{ + Template: "template name", + LinkedClone: true, + DiskSize: 32768, + StorageConfig: common.StorageConfig{ + DiskControllerType: []string{"test"}, + Storage: []common.DiskConfig{ + { + DiskSize: 32768, + }, + }, + }, + }, + fail: true, + expectedErrMsg: "'linked_clone' and 'disk_size' cannot be used together", + }, + { + name: "Validate MacAddress and Network not set at the same time", + config: &CloneConfig{ + Template: "template name", + MacAddress: "some mac address", + StorageConfig: common.StorageConfig{ + DiskControllerType: []string{"test"}, + Storage: []common.DiskConfig{ + { + DiskSize: 32768, + }, + }, + }, + }, + fail: true, + expectedErrMsg: "'network' is required when 'mac_address' is specified", + }, + } + + for _, c := range tc { + t.Run(c.name, func(t *testing.T) { + errs := c.config.Prepare() + if c.fail { + if len(errs) == 0 { + t.Fatalf("Config preprare should fail") + } + if errs[0].Error() != c.expectedErrMsg { + t.Fatalf("Expected error message: %s but was '%s'", c.expectedErrMsg, errs[0].Error()) + } + } else { + if len(errs) != 0 { + t.Fatalf("Config preprare should not fail: %s", errs[0]) + } + } + }) + } +} + +func TestStepCreateVM_Run(t *testing.T) { + state := new(multistep.BasicStateBag) + state.Put("ui", &packersdk.BasicUi{ + Reader: new(bytes.Buffer), + Writer: new(bytes.Buffer), + }) + driverMock := driver.NewDriverMock() + state.Put("driver", driverMock) + step := basicStepCloneVM() + step.Force = true + vmPath := path.Join(step.Location.Folder, step.Location.VMName) + vmMock := new(driver.VirtualMachineMock) + driverMock.VM = vmMock + + if action := step.Run(context.TODO(), state); action == multistep.ActionHalt { + t.Fatalf("Should not halt.") + } + + // Pre clean VM + if !driverMock.PreCleanVMCalled { + t.Fatalf("driver.PreCleanVM should be called.") + } + if driverMock.PreCleanForce != step.Force { + t.Fatalf("Force PreCleanVM should be %t but was %t.", step.Force, driverMock.PreCleanForce) + } + if driverMock.PreCleanVMPath != vmPath { + t.Fatalf("VM path expected to be %s but was %s", vmPath, driverMock.PreCleanVMPath) + } + + if !driverMock.FindVMCalled { + t.Fatalf("driver.FindVM should be called.") + } + if !vmMock.CloneCalled { + t.Fatalf("vm.Clone should be called.") + } + + if diff := cmp.Diff(vmMock.CloneConfig, driverCreateConfig(step.Config, step.Location)); diff != "" { + t.Fatalf("wrong driver.CreateConfig: %s", diff) + } + vm, ok := state.GetOk("vm") + if !ok { + t.Fatal("state must contain the VM") + } + if vm != driverMock.VM { + t.Fatalf("state doesn't contain the created VM.") + } +} + +func basicStepCloneVM() *StepCloneVM { + step := &StepCloneVM{ + Config: createConfig(), + Location: basicLocationConfig(), + } + return step +} + +func basicLocationConfig() *common.LocationConfig { + return &common.LocationConfig{ + VMName: "test-vm", + Folder: "test-folder", + Cluster: "test-cluster", + Host: "test-host", + ResourcePool: "test-resource-pool", + Datastore: "test-datastore", + } +} + +func createConfig() *CloneConfig { + return &CloneConfig{ + Template: "template name", + StorageConfig: common.StorageConfig{ + DiskControllerType: []string{"pvscsi"}, + Storage: []common.DiskConfig{ + { + DiskSize: 32768, + DiskThinProvisioned: true, + }, + }, + }, + } +} + +func driverCreateConfig(config *CloneConfig, location *common.LocationConfig) *driver.CloneConfig { + var disks []driver.Disk + for _, disk := range config.StorageConfig.Storage { + disks = append(disks, driver.Disk{ + DiskSize: disk.DiskSize, + DiskEagerlyScrub: disk.DiskEagerlyScrub, + DiskThinProvisioned: disk.DiskThinProvisioned, + ControllerIndex: disk.DiskControllerIndex, + }) + } + + return &driver.CloneConfig{ + StorageConfig: driver.StorageConfig{ + DiskControllerType: config.StorageConfig.DiskControllerType, + Storage: disks, + }, + Annotation: config.Notes, + Name: location.VMName, + Folder: location.Folder, + Cluster: location.Cluster, + Host: location.Host, + ResourcePool: location.ResourcePool, + Datastore: location.Datastore, + LinkedClone: config.LinkedClone, + Network: config.Network, + MacAddress: config.MacAddress, + VAppProperties: config.VAppConfig.Properties, + PrimaryDiskSize: config.DiskSize, + } +} diff --git a/builder/vsphere/driver/driver_mock.go b/builder/vsphere/driver/driver_mock.go index f8fd6ad79..03fa736fb 100644 --- a/builder/vsphere/driver/driver_mock.go +++ b/builder/vsphere/driver/driver_mock.go @@ -24,6 +24,9 @@ type DriverMock struct { CreateVMCalled bool CreateConfig *CreateConfig VM VirtualMachine + + FindVMCalled bool + FindVMName string } func NewDriverMock() *DriverMock { @@ -45,7 +48,12 @@ func (d *DriverMock) NewVM(ref *types.ManagedObjectReference) VirtualMachine { } func (d *DriverMock) FindVM(name string) (VirtualMachine, error) { - return nil, nil + d.FindVMCalled = true + if d.VM == nil { + d.VM = new(VirtualMachineMock) + } + d.FindVMName = name + return d.VM, d.FindDatastoreErr } func (d *DriverMock) FindCluster(name string) (*Cluster, error) { diff --git a/builder/vsphere/driver/vm.go b/builder/vsphere/driver/vm.go index ff4b8beb2..0c739d108 100644 --- a/builder/vsphere/driver/vm.go +++ b/builder/vsphere/driver/vm.go @@ -32,7 +32,7 @@ type VirtualMachine interface { Destroy() error Configure(config *HardwareConfig) error Customize(spec types.CustomizationSpec) error - ResizeDisk(diskSize int64) error + ResizeDisk(diskSize int64) ([]types.BaseVirtualDeviceConfigSpec, error) WaitForIP(ctx context.Context, ipNet *net.IPNet) (string, error) PowerOn() error PowerOff() error @@ -68,18 +68,19 @@ type VirtualMachineDriver struct { } type CloneConfig struct { - Name string - Folder string - Cluster string - Host string - ResourcePool string - Datastore string - LinkedClone bool - Network string - MacAddress string - Annotation string - VAppProperties map[string]string - StorageConfig StorageConfig + Name string + Folder string + Cluster string + Host string + ResourcePool string + Datastore string + LinkedClone bool + Network string + MacAddress string + Annotation string + VAppProperties map[string]string + PrimaryDiskSize int64 + StorageConfig StorageConfig } type HardwareConfig struct { @@ -339,6 +340,15 @@ func (vm *VirtualMachineDriver) Clone(ctx context.Context, config *CloneConfig) if err != nil { return nil, err } + + if config.PrimaryDiskSize > 0 { + deviceResizeSpec, err := vm.ResizeDisk(config.PrimaryDiskSize) + if err != nil { + return nil, fmt.Errorf("failed to resize primary disk: %s", err.Error()) + } + configSpec.DeviceChange = append(configSpec.DeviceChange, deviceResizeSpec...) + } + virtualDisks := devices.SelectByType((*types.VirtualDisk)(nil)) virtualControllers := devices.SelectByType((*types.VirtualController)(nil)) @@ -349,7 +359,7 @@ func (vm *VirtualMachineDriver) Clone(ctx context.Context, config *CloneConfig) storageConfigSpec, err := config.StorageConfig.AddStorageDevices(existingDevices) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to add storage devices: %s", err.Error()) } configSpec.DeviceChange = append(configSpec.DeviceChange, storageConfigSpec...) @@ -597,35 +607,25 @@ func (vm *VirtualMachineDriver) Customize(spec types.CustomizationSpec) error { return task.Wait(vm.driver.ctx) } -func (vm *VirtualMachineDriver) ResizeDisk(diskSize int64) error { - var confSpec types.VirtualMachineConfigSpec - +func (vm *VirtualMachineDriver) ResizeDisk(diskSize int64) ([]types.BaseVirtualDeviceConfigSpec, error) { devices, err := vm.vm.Device(vm.driver.ctx) if err != nil { - return err + return nil, err } disk, err := findDisk(devices) if err != nil { - return err + return nil, err } disk.CapacityInKB = diskSize * 1024 - confSpec.DeviceChange = []types.BaseVirtualDeviceConfigSpec{ + return []types.BaseVirtualDeviceConfigSpec{ &types.VirtualDeviceConfigSpec{ Device: disk, Operation: types.VirtualDeviceConfigSpecOperationEdit, }, - } - - task, err := vm.vm.Reconfigure(vm.driver.ctx, confSpec) - if err != nil { - return err - } - - _, err = task.WaitForResult(vm.driver.ctx, nil) - return err + }, nil } func (vm *VirtualMachineDriver) PowerOn() error { diff --git a/builder/vsphere/driver/vm_mock.go b/builder/vsphere/driver/vm_mock.go index 5251b2030..daf62b3c9 100644 --- a/builder/vsphere/driver/vm_mock.go +++ b/builder/vsphere/driver/vm_mock.go @@ -55,6 +55,9 @@ type VirtualMachineMock struct { RemoveCdromsCalled bool RemoveCdromsErr error + CloneCalled bool + CloneConfig *CloneConfig + CloneError error } func (vm *VirtualMachineMock) Info(params ...string) (*mo.VirtualMachine, error) { @@ -71,7 +74,9 @@ func (vm *VirtualMachineMock) FloppyDevices() (object.VirtualDeviceList, error) } func (vm *VirtualMachineMock) Clone(ctx context.Context, config *CloneConfig) (VirtualMachine, error) { - return nil, nil + vm.CloneCalled = true + vm.CloneConfig = config + return vm, vm.CloneError } func (vm *VirtualMachineMock) updateVAppConfig(ctx context.Context, newProps map[string]string) (*types.VmConfigSpec, error) { @@ -107,8 +112,8 @@ func (vm *VirtualMachineMock) Customize(spec types.CustomizationSpec) error { return nil } -func (vm *VirtualMachineMock) ResizeDisk(diskSize int64) error { - return nil +func (vm *VirtualMachineMock) ResizeDisk(diskSize int64) ([]types.BaseVirtualDeviceConfigSpec, error) { + return nil, nil } func (vm *VirtualMachineMock) PowerOn() error { diff --git a/builder/vsphere/driver/vm_test.go b/builder/vsphere/driver/vm_test.go index d598a0dab..186538974 100644 --- a/builder/vsphere/driver/vm_test.go +++ b/builder/vsphere/driver/vm_test.go @@ -1,6 +1,7 @@ package driver import ( + "context" "testing" "github.com/vmware/govmomi/simulator" @@ -61,7 +62,7 @@ func TestVirtualMachineDriver_Configure(t *testing.T) { } } -func TestVirtualMachineDriver_CreateVM(t *testing.T) { +func TestVirtualMachineDriver_CreateVMWithMultipleDisks(t *testing.T) { sim, err := NewVCenterSimulator() if err != nil { t.Fatalf("should not fail: %s", err.Error()) @@ -71,10 +72,9 @@ func TestVirtualMachineDriver_CreateVM(t *testing.T) { _, datastore := sim.ChooseSimulatorPreCreatedDatastore() config := &CreateConfig{ - Annotation: "mock annotation", - Name: "mock name", - Host: "DC0_H0", - Datastore: datastore.Name, + Name: "mock name", + Host: "DC0_H0", + Datastore: datastore.Name, NICs: []NIC{ { Network: "VM Network", @@ -98,8 +98,90 @@ func TestVirtualMachineDriver_CreateVM(t *testing.T) { }, } - _, err = sim.driver.CreateVM(config) + vm, err := sim.driver.CreateVM(config) if err != nil { t.Fatalf("unexpected error %s", err.Error()) } + + devices, err := vm.Devices() + if err != nil { + t.Fatalf("unexpected error %s", err.Error()) + } + + var disks []*types.VirtualDisk + for _, device := range devices { + switch d := device.(type) { + case *types.VirtualDisk: + disks = append(disks, d) + } + } + + if len(disks) != 2 { + t.Fatalf("unexpected number of devices") + } +} + +func TestVirtualMachineDriver_CloneWithPrimaryDiskResize(t *testing.T) { + sim, err := NewVCenterSimulator() + if err != nil { + t.Fatalf("should not fail: %s", err.Error()) + } + defer sim.Close() + + _, datastore := sim.ChooseSimulatorPreCreatedDatastore() + vm, _ := sim.ChooseSimulatorPreCreatedVM() + + config := &CloneConfig{ + Name: "mock name", + Host: "DC0_H0", + Datastore: datastore.Name, + PrimaryDiskSize: 204800, + StorageConfig: StorageConfig{ + DiskControllerType: []string{"pvscsi"}, + Storage: []Disk{ + { + DiskSize: 3072, + DiskThinProvisioned: true, + ControllerIndex: 0, + }, + { + DiskSize: 20480, + DiskThinProvisioned: true, + ControllerIndex: 0, + }, + }, + }, + } + + clonedVM, err := vm.Clone(context.TODO(), config) + if err != nil { + t.Fatalf("unexpected error %s", err.Error()) + } + + devices, err := clonedVM.Devices() + if err != nil { + t.Fatalf("unexpected error %s", err.Error()) + } + + var disks []*types.VirtualDisk + for _, device := range devices { + switch d := device.(type) { + case *types.VirtualDisk: + disks = append(disks, d) + } + } + + if len(disks) != 3 { + t.Fatalf("unexpected number of devices") + } + + if disks[0].CapacityInKB != config.PrimaryDiskSize*1024 { + t.Fatalf("unexpected disk size for primary disk: %d", disks[0].CapacityInKB) + } + if disks[1].CapacityInKB != config.StorageConfig.Storage[0].DiskSize*1024 { + t.Fatalf("unexpected disk size for primary disk: %d", disks[1].CapacityInKB) + } + if disks[2].CapacityInKB != config.StorageConfig.Storage[1].DiskSize*1024 { + t.Fatalf("unexpected disk size for primary disk: %d", disks[2].CapacityInKB) + } } From 7f26429a2adb0503a3cff46ff9d165a736cec894 Mon Sep 17 00:00:00 2001 From: elsnepal <46324484+elsnepal@users.noreply.github.com> Date: Fri, 2 Apr 2021 20:02:13 +0100 Subject: [PATCH 203/212] feature[alicloud]: add ramrole to ecs instance (#10845) * add RamRole support for ecs instance * ordering of attributes * run make generate --- builder/alicloud/ecs/builder.go | 1 + builder/alicloud/ecs/builder.hcl2spec.go | 2 ++ builder/alicloud/ecs/run_config.go | 2 ++ builder/alicloud/ecs/step_create_instance.go | 2 ++ post-processor/alicloud-import/post-processor.hcl2spec.go | 2 ++ .../partials/builder/alicloud/ecs/RunConfig-not-required.mdx | 2 ++ 6 files changed, 11 insertions(+) diff --git a/builder/alicloud/ecs/builder.go b/builder/alicloud/ecs/builder.go index fff28b7f4..963aaae15 100644 --- a/builder/alicloud/ecs/builder.go +++ b/builder/alicloud/ecs/builder.go @@ -135,6 +135,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) InstanceType: b.config.InstanceType, UserData: b.config.UserData, UserDataFile: b.config.UserDataFile, + RamRoleName: b.config.RamRoleName, RegionId: b.config.AlicloudRegion, InternetChargeType: b.config.InternetChargeType, InternetMaxBandwidthOut: b.config.InternetMaxBandwidthOut, diff --git a/builder/alicloud/ecs/builder.hcl2spec.go b/builder/alicloud/ecs/builder.hcl2spec.go index f9a2f37b7..16eb25cde 100644 --- a/builder/alicloud/ecs/builder.hcl2spec.go +++ b/builder/alicloud/ecs/builder.hcl2spec.go @@ -88,6 +88,7 @@ type FlatConfig struct { AlicloudSourceImage *string `mapstructure:"source_image" required:"true" cty:"source_image" hcl:"source_image"` ForceStopInstance *bool `mapstructure:"force_stop_instance" required:"false" cty:"force_stop_instance" hcl:"force_stop_instance"` DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + RamRoleName *string `mapstructure:"ram_role_name" required:"false" cty:"ram_role_name" hcl:"ram_role_name"` SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` SecurityGroupName *string `mapstructure:"security_group_name" required:"false" cty:"security_group_name" hcl:"security_group_name"` UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` @@ -205,6 +206,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "source_image": &hcldec.AttrSpec{Name: "source_image", Type: cty.String, Required: false}, "force_stop_instance": &hcldec.AttrSpec{Name: "force_stop_instance", Type: cty.Bool, Required: false}, "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, + "ram_role_name": &hcldec.AttrSpec{Name: "ram_role_name", Type: cty.String, Required: false}, "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, "security_group_name": &hcldec.AttrSpec{Name: "security_group_name", Type: cty.String, Required: false}, "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, diff --git a/builder/alicloud/ecs/run_config.go b/builder/alicloud/ecs/run_config.go index 0b96be7af..f9c62ddee 100644 --- a/builder/alicloud/ecs/run_config.go +++ b/builder/alicloud/ecs/run_config.go @@ -47,6 +47,8 @@ type RunConfig struct { // E.g., Sysprep a windows which may shutdown the instance within its command. // The default value is false. DisableStopInstance bool `mapstructure:"disable_stop_instance" required:"false"` + // Ram Role to apply when launching the instance. + RamRoleName string `mapstructure:"ram_role_name" required:"false"` // ID of the security group to which a newly // created instance belongs. Mutual access is allowed between instances in one // security group. If not specified, the newly created instance will be added diff --git a/builder/alicloud/ecs/step_create_instance.go b/builder/alicloud/ecs/step_create_instance.go index f4867410e..dd4155542 100644 --- a/builder/alicloud/ecs/step_create_instance.go +++ b/builder/alicloud/ecs/step_create_instance.go @@ -23,6 +23,7 @@ type stepCreateAlicloudInstance struct { UserData string UserDataFile string instanceId string + RamRoleName string RegionId string InternetChargeType string InternetMaxBandwidthOut int @@ -115,6 +116,7 @@ func (s *stepCreateAlicloudInstance) buildCreateInstanceRequest(state multistep. request.RegionId = s.RegionId request.InstanceType = s.InstanceType request.InstanceName = s.InstanceName + request.RamRoleName = s.RamRoleName request.ZoneId = s.ZoneId sourceImage := state.Get("source_image").(*ecs.Image) diff --git a/post-processor/alicloud-import/post-processor.hcl2spec.go b/post-processor/alicloud-import/post-processor.hcl2spec.go index ddc4fb651..c1effd5bd 100644 --- a/post-processor/alicloud-import/post-processor.hcl2spec.go +++ b/post-processor/alicloud-import/post-processor.hcl2spec.go @@ -52,6 +52,7 @@ type FlatConfig struct { AlicloudSourceImage *string `mapstructure:"source_image" required:"true" cty:"source_image" hcl:"source_image"` ForceStopInstance *bool `mapstructure:"force_stop_instance" required:"false" cty:"force_stop_instance" hcl:"force_stop_instance"` DisableStopInstance *bool `mapstructure:"disable_stop_instance" required:"false" cty:"disable_stop_instance" hcl:"disable_stop_instance"` + RamRoleName *string `mapstructure:"ram_role_name" required:"false" cty:"ram_role_name" hcl:"ram_role_name"` SecurityGroupId *string `mapstructure:"security_group_id" required:"false" cty:"security_group_id" hcl:"security_group_id"` SecurityGroupName *string `mapstructure:"security_group_name" required:"false" cty:"security_group_name" hcl:"security_group_name"` UserData *string `mapstructure:"user_data" required:"false" cty:"user_data" hcl:"user_data"` @@ -177,6 +178,7 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "source_image": &hcldec.AttrSpec{Name: "source_image", Type: cty.String, Required: false}, "force_stop_instance": &hcldec.AttrSpec{Name: "force_stop_instance", Type: cty.Bool, Required: false}, "disable_stop_instance": &hcldec.AttrSpec{Name: "disable_stop_instance", Type: cty.Bool, Required: false}, + "ram_role_name": &hcldec.AttrSpec{Name: "ram_role_name", Type: cty.String, Required: false}, "security_group_id": &hcldec.AttrSpec{Name: "security_group_id", Type: cty.String, Required: false}, "security_group_name": &hcldec.AttrSpec{Name: "security_group_name", Type: cty.String, Required: false}, "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, diff --git a/website/content/partials/builder/alicloud/ecs/RunConfig-not-required.mdx b/website/content/partials/builder/alicloud/ecs/RunConfig-not-required.mdx index edb8e05e5..d8bcad19b 100644 --- a/website/content/partials/builder/alicloud/ecs/RunConfig-not-required.mdx +++ b/website/content/partials/builder/alicloud/ecs/RunConfig-not-required.mdx @@ -24,6 +24,8 @@ E.g., Sysprep a windows which may shutdown the instance within its command. The default value is false. +- `ram_role_name` (string) - Ram Role to apply when launching the instance. + - `security_group_id` (string) - ID of the security group to which a newly created instance belongs. Mutual access is allowed between instances in one security group. If not specified, the newly created instance will be added From cce1f5c1e3c6f2796d65ccef9af0f37335369daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Recai=20Okta=C5=9F?= Date: Mon, 5 Apr 2021 13:40:32 +0300 Subject: [PATCH 204/212] Update index.mdx (#10865) Fix a minor typo. --- website/content/docs/builders/proxmox/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/builders/proxmox/index.mdx b/website/content/docs/builders/proxmox/index.mdx index 3c01257f2..3ab71d477 100644 --- a/website/content/docs/builders/proxmox/index.mdx +++ b/website/content/docs/builders/proxmox/index.mdx @@ -9,7 +9,7 @@ page_title: Proxmox - Builders The Proxmox Packer builder is able to create [Proxmox](https://www.proxmox.com/en/proxmox-ve) virtual -machines and store them as new Proxmox Virutal Machine images. +machines and store them as new Proxmox Virtual Machine images. Packer is able to target both ISO and existing Cloud-Init images: From d566419c450c552f985bd20a790375e927916d20 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 5 Apr 2021 08:14:43 -0400 Subject: [PATCH 205/212] Update unmaintained-plugins partial --- website/content/partials/provisioners/unmaintained-plugin.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/partials/provisioners/unmaintained-plugin.mdx b/website/content/partials/provisioners/unmaintained-plugin.mdx index 8d9dd44b9..f59f4b398 100644 --- a/website/content/partials/provisioners/unmaintained-plugin.mdx +++ b/website/content/partials/provisioners/unmaintained-plugin.mdx @@ -1 +1 @@ -~> **This is community maintained provisioner is currently unmaintained**; if you are interested in contributing or taking ownership of it, please reach out to us at [packer@hashicorp.com](mailto://packer@hashicorp.com). More details can be found in the [README](https://github.com/hashicorp/packer/blob/master/README.md#unmaintained-plugins). +~> **This community maintained provisioner is currently unmaintained**; if you are interested in contributing or taking ownership of it, please reach out to us at [packer@hashicorp.com](mailto://packer@hashicorp.com). More details can be found in the [README](https://github.com/hashicorp/packer/blob/master/README.md#unmaintained-plugins). From 634bf87d99d69ba6d0a094e8794f807272aedf19 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 5 Apr 2021 12:49:54 -0400 Subject: [PATCH 206/212] Update CHANGELOG --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c1ee6b26..46a608c08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ ## 1.7.2 (Upcoming) +### IMPROVEMENTS: + +* builder/alicloud: Add `ramrole` configuration to ECS instance. [GH-10845] + +### BUG FIXES: + +* builder/proxmox: Update Proxmox Go API to ensure only the first non-loopback + IPv4 address gets returned. [GH-10858] +* builder/vsphere: Fix primary disk resize on clone. [GH-10848] + + ## 1.7.1 (March 31, 2021) ### NOTES: From 3b0226d496b12113b3e28b5be0163fb53b38274a Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 5 Apr 2021 11:15:52 -0700 Subject: [PATCH 207/212] update changelog --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46a608c08..b508e76a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,10 @@ ### BUG FIXES: * builder/proxmox: Update Proxmox Go API to ensure only the first non-loopback - IPv4 address gets returned. [GH-10858] + IPv4 address gets returned. [GH-10858] * builder/vsphere: Fix primary disk resize on clone. [GH-10848] - +* core: Fix bug where call to "packer version" sent output to stderr instead of + stdout. [GH-10850] ## 1.7.1 (March 31, 2021) From e8780bf7b87e224caef87cd7afd93c8458af6b50 Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 5 Apr 2021 15:03:39 -0700 Subject: [PATCH 208/212] add massive warning about error logging to WrappedMain --- main.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/main.go b/main.go index 94ebf2b0c..109592db6 100644 --- a/main.go +++ b/main.go @@ -126,6 +126,15 @@ func realMain() int { // wrappedMain is called only when we're wrapped by panicwrap and // returns the exit status to exit with. func wrappedMain() int { + // WARNING: WrappedMain causes unexpected behaviors when writing to stderr + // and stdout. Anything in this function written to stderr will be captured + // by the logger, but will not be written to the terminal. Anything in + // this function written to standard out must be prefixed with ErrorPrefix + // or OutputPrefix to be sent to the right terminal stream, but adding + // these prefixes can cause nondeterministic results for output from + // other, asynchronous methods. Try to avoid modifying output in this + // function if at all possible. + // If there is no explicit number of Go threads to use, then set it if os.Getenv("GOMAXPROCS") == "" { runtime.GOMAXPROCS(runtime.NumCPU()) From 8db540a93552187388b340b335f327ccf72c4690 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:55:11 +0000 Subject: [PATCH 209/212] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b508e76a4..cc9c1cb3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 1.7.2 (Upcoming) +## 1.7.2 (April 05, 2021) ### IMPROVEMENTS: From 4417f8b3bfb0c4956e124f3de7647ddd6e6971a8 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:55:11 +0000 Subject: [PATCH 210/212] cut version 1.7.2 --- version/version.go | 2 +- website/data/version.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version/version.go b/version/version.go index 2d4c3987f..3b4331340 100644 --- a/version/version.go +++ b/version/version.go @@ -14,7 +14,7 @@ const Version = "1.7.2" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. -const VersionPrerelease = "dev" +const VersionPrerelease = "" var PackerVersion *pluginVersion.PluginVersion diff --git a/website/data/version.js b/website/data/version.js index 4bee47f10..b7c3abc08 100644 --- a/website/data/version.js +++ b/website/data/version.js @@ -1 +1 @@ -export default '1.7.1' +export default '1.7.2' From 1f834e229aa722ea1279ec32503a2ea011f24e03 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:55:12 +0000 Subject: [PATCH 211/212] Cut version 1.7.2 From 33461126e2b7ac3f1e90a4b3312c63dd21f72a01 Mon Sep 17 00:00:00 2001 From: packer-ci <62970560+packer-ci@users.noreply.github.com> Date: Mon, 5 Apr 2021 23:32:25 +0000 Subject: [PATCH 212/212] Putting source back into Dev Mode --- CHANGELOG.md | 2 ++ version/version.go | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc9c1cb3a..6c0477769 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 1.7.3 (Upcoming) + ## 1.7.2 (April 05, 2021) ### IMPROVEMENTS: diff --git a/version/version.go b/version/version.go index 3b4331340..5a46d84dd 100644 --- a/version/version.go +++ b/version/version.go @@ -9,12 +9,12 @@ import ( var GitCommit string // The main version number that is being run at the moment. -const Version = "1.7.2" +const Version = "1.7.3" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. -const VersionPrerelease = "" +const VersionPrerelease = "dev" var PackerVersion *pluginVersion.PluginVersion